pax_global_header00006660000000000000000000000064140624352470014521gustar00rootroot0000000000000052 comment=011eec32ff3495a5e46ed337075a60530111cda1 bundt-1.1.5/000077500000000000000000000000001406243524700126415ustar00rootroot00000000000000bundt-1.1.5/.editorconfig000066400000000000000000000003231406243524700153140ustar00rootroot00000000000000# http://editorconfig.org root = true [*] indent_size = 2 indent_style = tab end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.{json,yml,md}] indent_style = space bundt-1.1.5/.github/000077500000000000000000000000001406243524700142015ustar00rootroot00000000000000bundt-1.1.5/.github/FUNDING.yml000066400000000000000000000000171406243524700160140ustar00rootroot00000000000000github: lukeed bundt-1.1.5/.github/workflows/000077500000000000000000000000001406243524700162365ustar00rootroot00000000000000bundt-1.1.5/.github/workflows/ci.yml000066400000000000000000000014321406243524700173540ustar00rootroot00000000000000name: CI on: [push, pull_request] jobs: test: name: Node.js v${{ matrix.nodejs }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: matrix: nodejs: [8, 10, 12, 14] os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: ${{ matrix.nodejs }} - name: Install run: | npm install npm install -g nyc - name: Test w/ Coverage run: npx nyc npm test - name: Report if: matrix.nodejs >= 14 && matrix.os == 'ubuntu-latest' run: | npx nyc report --reporter=text-lcov > coverage.lcov bash <(curl -s https://codecov.io/bash) env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} bundt-1.1.5/.gitignore000066400000000000000000000001011406243524700146210ustar00rootroot00000000000000.DS_Store node_modules *-lock.* *.lock *.log # tests build dist bundt-1.1.5/index.js000077500000000000000000000166341406243524700143230ustar00rootroot00000000000000#!/usr/bin/env node const { gzipSync } = require('zlib'); const { dirname, normalize, resolve, join, extname } = require('path'); const { existsSync, readFileSync, writeFileSync } = require('fs'); const { white, red, cyan, dim } = require('kleur'); const _ = ' '; const UNITS = ['B ', 'kB', 'MB', 'GB']; const lpad = (str, max) => _.repeat(max - str.length) + str; const rpad = (str, max) => str + _.repeat(max - str.length); const th = dim().bold().italic().underline; const filename = white().underline; const bullet = white().bold; function bail(err) { let msg = (err.message || err || 'Unknown error').replace(/(\r?\n)/g, '$1 '); console.error(red().bold('bundt ') + msg); process.exit(1); } function size(val=0) { if (val < 1e3) return `${val} ${UNITS[0]}`; let exp = Math.min(Math.floor(Math.log10(val) / 3), UNITS.length - 1) || 1; let out = (val / Math.pow(1e3, exp)).toPrecision(3); let idx = out.indexOf('.'); if (idx === -1) { out += '.00'; } else if (out.length - idx - 1 !== 2) { out = (out + '00').substring(0, idx + 3); // 2 + 1 for 0-based } return out + ' ' + UNITS[exp]; } function write(file, data, isUMD, toDir) { file = normalize(file); let isDef = /\.d\.ts$/.test(file); if (isDef && toDir !== 'default') { file = join(toDir, file); } else if (toDir && toDir !== 'default') { file = normalize(file.replace(dirname(file), toDir)); } mkdir(dirname(file)); // sync let code = isDef && data; code = code || minify(data, Object.assign({ toplevel:!isUMD }, terser)).code; writeFileSync(file, isUMD ? code : data); let gzip = size(gzipSync(code).length); return { file, size: size(code.length), gzip }; } function help() { let msg = ''; let warning = dim().red().italic('not built if undefined'); msg += '\n Usage\n $ bundt [entry] [options]\n'; msg += `\n Config\n If no ${dim('[entry]')} was provided, then ${filename('src/index.js')} is used.\n`; msg += `\n Configuration lives within your ${filename('package.json')} file as these keys:`; msg += `\n • ${bullet('"main"')} – the output path for your CommonJS file ${dim().italic(`(default: ${filename(`dist/${pkg.name}.js`)})`)}`; msg += `\n • ${bullet('"module"')} – the output path for your ES Module file ${warning}`; msg += `\n • ${bullet('"unpkg"')} ${dim('or')} ${bullet('"umd:main"')} – the output path for your UMD file ${warning}`; msg += `\n • ${bullet('"browser"')} – the output path for your browser-specific entrypoint ${warning}`; msg += `\n • ${bullet('"umd:name"')} – the name of your UMD factory ${dim().italic(`(default: "${pkg.name}")`)}`; msg += `\n • ${bullet('"modes"')} – a mapping of custom mode names to their entries`; msg += `\n • ${bullet('"terser"')} – a config object to customize Terser behavior\n`; msg += `\n You may use a ${filename('.terserrc')} file to store configuration instead of the ${bullet('"terser"')} key.\n`; msg += '\n Options'; msg += '\n ' + dim().italic('All files are built unless 1+ limits are defined'); msg += `\n --main Builds the ${bullet('"main"')} file`; msg += `\n --unpkg Builds the ${bullet('"unpkg"')} ${dim('or')} ${bullet('"umd:main"')} file`; msg += `\n --module Builds the ${bullet('"module"')} file`; msg += `\n --browser Builds the ${bullet('"browser"')} file`; msg += `\n --minify Minify ${bullet('all')} file formats`; msg += '\n --help, -h Displays this message\n'; msg += '\n Examples\n $ bundt\n $ bundt lib/index.js\n $ bundt src/browser.js --browser --unpkg\n'; return console.log(msg); } const rcfile = resolve('.terserrc'); const pkgfile = resolve('package.json'); const pkg = existsSync(pkgfile) && require(pkgfile); if (!pkg) return bail(`File not found: ${pkgfile}`); const argv = process.argv.slice(2); if (argv.includes('-h') || argv.includes('--help')) return help(); const isMin = argv.includes('--minify'); const isIndex = !argv[0] || /^-/.test(argv[0]); const entry = resolve(!argv[0] || /^-/.test(argv[0]) ? 'src/index.js' : argv.shift()); if (!existsSync(entry) && !pkg.modes) return bail(`File not found: ${entry}`); // We'll actually do something – require deps const { rewrite } = require('rewrite-imports'); const { mkdir } = require('mk-dirs/sync'); const { minify } = require('terser'); // Parsed config const fields = { main: pkg.main || `dist/${pkg.name}.js`, unpkg: pkg.unpkg || pkg['umd:main'], module: pkg.module, browser: pkg.browser, }; // Determine if building all or some fields if (argv.length > 0) { let has=0, keys=Object.keys(fields); let bools = keys.map(k => argv.includes('--' + k) && ++has); if (has > 0) bools.forEach((x, n) => x || delete fields[keys[n]]); } const name = pkg['umd:name'] || pkg.name; const mount = /(.|-|@)/.test(name) ? `['${name}']` : `.${name}`; const terser = pkg.terser || (existsSync(rcfile) ? JSON.parse(readFileSync(rcfile)) : {}); function capitalize(str) { return str[0].toUpperCase() + str.substring(1); } function run(filepath, isMode) { if (!existsSync(filepath)) return bail(`File not found: ${entry}`); let types = ''; if (isMode) { let extn = extname(filepath); types = filepath.replace(extn, '.d.ts'); types = existsSync(types) && readFileSync(types, 'utf8'); } const keys = []; const ESM = readFileSync(filepath, 'utf8'); const isDefault = /export default/.test(ESM); let CJS = rewrite(ESM).replace(/(^|;\s*|\r?\n+)export(?:(?:\s*{([^}]*)}(?:(?:;|\s|$)))|( default)|(?: (const|(?:async )?function|class|let|var))\s+([a-z$_][\w$]*))?(?=([^"'`]*["'`][^"'`]*["'`])*[^"'`]*$)/gi, (raw, ws, names, def, type, name) => { if (def) return ws + 'module.exports ='; if (type) return keys.push(name) && `${ws}${type} ${name}`; names.split(',').forEach(name => keys.push(name.trim())); return ws; }); if (keys.length > 0) { keys.sort().forEach(key => { CJS += `\nexports.${key} = ${key};`; }); } const UMD = isDefault ? `!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global${mount}=factory()}(this,function(){${CJS.replace('module.exports = ', 'return ')}});` : `!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?factory(exports):"function"==typeof define&&define.amd?define(["exports"],factory):factory(global${mount}={})}(this,function(exports){${CJS}});` // Writes return Promise.all( [ fields.main && write(fields.main, CJS, isMin, isMode), fields.module && write(fields.module, ESM, isMin, isMode), fields.browser && write(fields.browser, ESM, isMin, isMode), fields.unpkg && write(fields.unpkg, UMD, isMin || 1, isMode), types && write('index.d.ts', types, false, isMode), ].filter(Boolean) ).then(arr => { let label = capitalize(isMode || 'filename'); let f=label.length, s=8, g=6, out=''; arr.forEach(obj => { f = Math.max(f, obj.file.length); s = Math.max(s, obj.size.length); g = Math.max(g, obj.gzip.length); }); f += 4; // spacing out += th(rpad(label, f)) + _.repeat(4) + th(lpad('Filesize', s)) + ' ' + dim().bold().italic(lpad('(gzip)', g)); arr.forEach(obj => { out += ('\n' + white(rpad(obj.file, f)) + _.repeat(4) + cyan(lpad(obj.size, s)) + ' ' + dim().italic(lpad(obj.gzip, g))); }); console.log('\n' + out + '\n'); }); } if (pkg.modes && isIndex) { Promise.all( Object.keys(pkg.modes).map(k => { return run(pkg.modes[k], k); }) ).catch(bail); } else { run(entry).catch(bail); } bundt-1.1.5/license000066400000000000000000000021321406243524700142040ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) Luke Edwards (lukeed.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. bundt-1.1.5/logo.png000066400000000000000000001744361406243524700143260ustar00rootroot00000000000000PNG  IHDR)j pHYsmhsRGBgAMA aIDATx $gu w_fhޑ$VX$a0l1# son/_4,u4Ɛ|q' @# !ξ[=?UOS{uD=TTD 88P~㯊T3/؆ӡhر-7$-XX/窹^iJ$p~hNA A8= aѼ4W<ʮ ap4uo%bS<~(C?}Xn}asjH&|F*Y!XXY)L;N)05^Szh ƾ&C_ng_R!G[ ߲#]ð` Z ~t:+@c=X0;-밿J1!=ղ4S_Nc#D4NAWh 2_oYEF oi$~3:"#`eS#R)QnOP[B!,wF81!TpGW(ZUz)jO)qOܮ"ϟ&68]aZV&#7?E~wdCۉ?|ō!&!/Q[ļ0X0趇+jvN.x;ӭ3:^;j߂fHFhΕ<1E7%W+@; ޫߡ p"xmvҘGY8v`Txt<@r lfp'vեY~4 gNV>k7$ [gqZ%S­ Fq{x-7Gt~=5>* ,;E59 2 #~ Wڀ t[c@e08Xv^*i@Sğ9ܼ4 L!U,S9N#ӂQ9$`>(~du,'x|XV8P>H|;%i\Qƛ6Z%XTAo-bc@3,\@w>zSȿDW\o>X"{#;^8e 'M~DYU1g8M¤ Z'ڿsv(iJW^6Ghh~" "qgsl :Wt@ urx>AU7~r/*(>KK/Smm^"SfIJv[f>Ϧ,~pb~00.oYhps޵\zv\ܨiF-5J 0#(公/kpR/F-*188%qX%=qz3sE d2FܡavCLY#8/~kQb(~žn 4'ni|MC^^140G7ivc KD~|F{J9,/(>6@7t4xC:N/h:MY}5kq+S  mt5 ')qUa*\ia v~lGNeN9G{ūe-jNn#F600M ˆ ~,F'}[ƶЫM F/fS r odB]C@z;xQE|!H][4 t7\o e~3ibp07i x<2{1bO2`?U7%ɽF6h'U=hpQWF_6++/|okKthF$ 6¦Ibp@=29 Z%thIf{_,8:`Pĭq''hbpb =A5Vy.J߉K??S{]w0rUZI׋`c>JI+ Gm@̀CWn1ߵ{f@4`*} c,F'&*?Q%qmU~.edQ́EK&:z&/_>@QQ5YS@90e KY5`I9 ?0ͣF2ƄV90jC_sZ h*i"ǐ_5Dڡ]4B]{FD$?F9 z#&Iv kcȞ ~'%r-M= ɠ/`>2E3U_e| UTCP?1vyh5J7 \A?uP=e'[ܰ/C#9UK8{ت` ]ciԏjxTF7ՀOZk'>wa&g MȯR9_;QN; >>G˫oBT[MowѮBJW!#AZ\OU lOrr3( 6j#gZIMHT"{S7@#F}D?|˃"0@ڴ6 oeo{ 7Nv\[ZEN;hف>[(@dž]r9oU ? qN9Cz~(^=IeHTfĿT%ξ=dГ0 @å~1mU7MF@%*`piANIUןE9F[ֈqqSk+sP"XbѶ6jc9Z)pDA]N ⸎n9_Bl`8q厹U%n 쟉 e(5f垸߿;Vi2 @⾡Tݏr(*ZJg26Ji@#ݬ/8:qO3h5dW@Ȳr ^0{HUD )#kk]v"PC3фh#@Y^#ppA8=r~ԀW/|es?*T׻wJ~DlQ)M#h1{Dib2 lG)~6ZnƄK]5eՀcqjrϽxQ8YA* t/L o;8)a}|5~5jAz]Z|N CfCfE1SQ\x7Y|)t,%o*f9mdJEP4F΍Ot{{,[rΗ{Ʈ:|M:  ~/~fSdE~aQ]b)4x?+9scYm.|+/NG?P, b؊XEgf+9B *);q%@y')p e+5[A!R:(-I-ٚh9pVㅽ@/S9E0@Ӿa3öj=2V~C:|0o[Ζo42c4|Ν}EZ~aa+;N`+6­YH4}"t_r AT5ݎ0}0_z6az ,g`Б@/f!.oӆY">4SyE~tKq# w>MjRS%%pHn6΅q (cE"ݨx̎LT^ ( o2/YH#n(s4s4S䡪z%={%O~08gWz'AP垪־UZ* D g͉s#ɊJ L a8]~;ʩOm^_f+. _^FT EY_)*_ N6-|U7iCr5r 3A%*V "|foeMP8 U M# EJXvC.Pt('jI)@i+19ѹRW(%aCa#0:BJ43;adJ~v?_YϜ$]8 ɠ0@B*|?7Ѷ^+cҽZ4hZuSm~'aiĆZB})F^X-FUD%[iCu+(D9b7R7]ٜg$1þ:J +rRinTgACc6~Np>Amq:H 꿩\n&&W&.ښ^y;_nA[ιtm"6\\0 l~^ [)}RJ~dG3%>#˭`܂ ҫ6  :)6nq:N7/ .l6AGɏa7 @}/Q0o7{9Tr((HPT}~[0)a cOW>x5xn7Oؽ21mT T7j Dоv?DGH0 8> tߜDnxwtR߾T3!Xyy{v HWWi$xiNr͊H=gZ4X |k,;raZ^Տ*t]B?d8aGa@0! nO z%2z_o F o T`|&97OmD.@ 0Ǟ驲\-O^MR~"<0)6|4S莋.l uGj @.V*YB#!\|q+G /iD}upE4qR5#NbzD=Ԫֲ`u0`7\nsi*Y >[+n%Sqb.BnbvEno.=0D#ld_2s0ۦn_!ӛ=]9qC>A9U<(p&`"|hˢ TlP[* ti4Yݐžўu7hVq-7'.ξb)} h|?W<,[7HF\UD-R'`l=8prh41LCAj K[ej2bK]6SH5+BJg%c'& cQ{@I/@[ ɒ4"Ε0 O3)`}؏P;}C_ǟoQSB?'hp$Ee&¢BTP&z5Dm)yDQ$/-lU &Xt N;" 4L=xAS0Sb~,PgF;)~HZ/*ۥ la Zȧ~?a_˲/D ŠH!gjZ&xu?-?؀0"m+X#dﳙYgZ*. 6 qٺy hh,w WA/&\tKP1TnVܿѮ@qD 9;p@|7Qp.v JOX-=7?pJWK!}pj[!C3'S+-Cetxu~CdP7|,@X 뽽W:#^J8$D_|m8u@C)0F=]t8C\!a)b!P]{"@g,m#crD}dD YgYֹ "R<]M o#Kю3CyⴈӁ兙n0dJ]Mos8bt*@7X*Mmoo"_N7iu8©n)AD/St~NO 5 r(^MYA&Q .hp}-9VJq4xUnyPO>Ib^dPcca81x2NTuF9/9S?E֠\`T?4 `~EA8hVEΥ-R"`Z:gre`96Mj(Txb% _q2[dŶ_D|u3ݷTq"@%㏖C6_)ׁyJ*^8 o}JLw6;%K^)qlfP*CĿXvp=ggWX0[J@ c2@-50Gj,{~]>&1@|7`6 #:i',?~pn6*8MoBq˼pF3C$w=N@6@wRs2D\V8%҂8ov ,"Uz߱tOWLՆ (4J;E"R.R]~ŽawV(}'P H䊯3}`r Yw F\<=VycG^X\<)ZYrG9h=;~uWIZ.xiX5 >e~hSg%ʡ!¸+ [MN2sIqD9~*J;=ǂvPZ!l ga|6j~@0 M(hI^Q`";WU,-l~ #8Eu,c Hu &`ho6t{ Ҳ|,% E9AЩ$pS `rl8pЉ̢.W,p c'Ϩ{Ph#+;m!BJjҊ;9 C SCj@5[\ **b# V }(5]*u_iYhꔌA8ise"6X/|}%kBLkUWm!>9CP|8]PP7dJ0@(kEddž8x͆D@Q#l,]t?~kC?-|GIw;,%InXOt^3FY#׉P㮃 bj%{5PtKxĵnB@ ?p;0  <O픉7i@ a6_XC?Zu@ď'&RPoYJ% G\!Q*ײhGaes诏F={dWi $y.TwSBxw-( VA:d|`0p(nI_ `v9@>zXP"~rvF8`TuctiGwuXG<[/Ѓ0q0/z6i_|h_4"—MqWFuzu~,{O.}p3#COqtl}v,׿Sx{W:{#87, u^w`0n]qjFR=_g(8e]A,."P8^ c/i}.ȾcSC#te =@Xb4+CVE;~љ m҇hεɂ̺a>T?+"o&v%!$ڌC|'} V/}W \4B]pz`zy9KMn]sJ= Uڦj0m/X Pgyq#(Qp] j ct']POtӸmiJ_g6nnt?Nfű[o-س6 g_0ٓglCh*; Up5X|m3AA?~qGwB!_)/"q#t T@j7/cM7/=׍?aX-!7>sb G#.V2T3P7 YI_:2N җ_.~L7_aXGf. ]_XuDI`Jf}q.7oиGƿZ7aHc=\8Z5A:RI2p-=؆9T B*SnmAD+OX$k|ٓU4%{pzv&hzyI8P&ۆzLU((m޿<:hsAlW_4ḰJ;دcge.V%Pr?[ ^=V 4!08,o; `F5PF\e0/#/a6 &msTXlC^qdĂAEKf]74(iZJ)55^,w~A 2G7=g>qx#,Mh?ÿemX0'.N#r{,punt *A 'jY "zR@ }V[V]?m5Zp:°Wk틈a'6چNp'ޫm8q)̟ hBk794h~Ruo֍@:^M\eOG;| eP|H8}On>C00?014QE?q- /\UKv1MAg̜8w)zFFFۧ(Gcy2$E_IU?~dn/#qc}8m~ ZZ%6Rexy'_N) >_˯Znh~y^>Y6*s˞`~90P:vgqqqXJ m7>M g^~l}tK D6sڜl(;XcbpDQ ]~&z;WL*8#>@=p÷L"3)"ds:m_G/~sb{LíЌ 9Hv$BsRV.YCN=d ~~[+P)Zj7oSAwZB/ }52IWmFbh֔n^ FSߍjǻEOT8|H8V8&@ ſȀk̞7z/,e2h= X`Y(hw `MW'm{!'i#ŏ::izċ~388#o?t}4n#p5L |{g4S[![! `0!=Hab?pmǤQoBLCƿ"kJgdrKMtVo%YZL bthY`9OUw{q3DQ?}ׂ쪸'ϟY;* r@#@ H ^+ۍ:w~qk4 GNuZ}5e v`|.' p9@ګK >$bH@ǐ@?q"@%E: 'G+3gzC`_9y0ZN=yLǩYvz^<>F?XW,q+\^\,e |s読E3P'>`plKSl@^_8KWzA?RG%x4=̪. _V70aeҬ#{}^KD71j;lTWKjCo4VBR=!;K WXH==Εjn~܏t\]uk2qڲ%%ĭ@gNg5, `浧\G`jrm!G J6:w#E D&EV(<(}}_G#+K Wp~7P"AChAMM TLJ0X|VOv_ h*u/&T/z~< 1*[3F}˖4MM Ү)LdkukՕWzT'38-/iD(G`̩؀r!CUZZQbM@NZUQ8 _x9lQͺdYY;oZD`*@z =&*:HWPD#?~`,*DW\1LW\9_+p#2H^gG8GWhzzվ? #Ш#؀z*j9Co9z!woAyX`(>l\ҿa^+ 2v V*!P]s4GDG՞ѪyN\^:O#]P H6 D@5 ?CQٓ2P |7S'ᰈ}XU!%cɷE*Mw7 h1Y2F]\\-`['"8&{E PRٟS#_N@P~DBI%8Q_{w;كۨ hHFN)~qXy12+-Ҥuȉ&X\ @?"r}uß'(4D #~^ ؀w@-̓jm[wuPT84{A隶U 뷽&2:;O`,1H` DjO8I]%s/j ڏ62'R迬⿒o"ۇG""Xy3& `>pY:@=tiGڀ._ˈmU3ηPkC镥H/5v OW,m5 a,ĐG`guP\𖡼xWqb4E7(kgR pݯ *~WoXhN 6,"GĿ[UW5s?tH*)N= 5Iˆ:Fз^@uMc@:sj=;sEJ`+Nfը @*ꂸktf:E,R ]iWAGDD]+|DLD}5:n0ny,ZJp xB uB?ը'pѽ-WzLož 6dtno{^Ŀf`q Ђ Xoo?zibl [>14OOfl1,}|><aqQ#Zߍ~PI 'l( ~9M;N7'TX?j@}s"=5޾To>A>=Rm^=a̤_avlS7UHqc5ƽf'mL,.'-j©/ A|O|N(Ga쯿~g.y~c+C~3骫Fݍ ~G;нBa?5SQ=RoT]YP+,țs:`׽j5۫t ϗɱh+]!ف ]f/UhOK]c l /__GI't3Trpsن3k~5=NzrKt}=,@3!ek9.PvrcE4✇`)ЦnwbX1")l#rt -Cm>? EN6Lĥ(@/ܠxنZs4[/{+e]VSbH0ɯհ5CsdcZJ~]#yr9]p-G,%>XjtjWS'Stz#pկ`Mo|6M28(wj~o+mHC!2I87D>?j"D9Q{߻/mڮ}8Wo|ӈ=B'D*ٳtE*C"{"aZQUjx€T \9:NÉh}I5*y߿=tѐCf5f$.C&'i U%5Sk*coy}i cj87C'`=~1jH/+z@?ao .{X uVWG/ޥꆅo/rvmDH `QN6셙4V kv`>2DQ佼PS tv W'зO+G+8P?B5߳m4CrISZ44AQJsTea`*mUҹkDU*o|o&Ēɮ.AMm0F9i#=|uz7^ wnqr?N~?o}J|"z) 'Lc/Ԗ"V=b|%5SW4'Vk^X p)9T>0'oOW6lO%4?B$f Zt/,C*m}:ˠhFUo}0j`w|8K_O;Ypˑ#Y7}M.2(CS Q6ڸ}W  HGYl K}-N@V(Dž?R>p 0Gf %A] {̠bQhmqBii >x/wl^7EY[?\ ,@j^WkD7]O|(S>ڌ?r;У/ۭ<sa8kdOWFaj 88K/x.ݸ2cUpnq\8Yq;ַOlj: ] QɆa"5zEp%`ܪt5bbr~! y}+Mo@N@) 4D@#d]% Ͽo>gޫLt# |aذC8ڗzdkBJNt`"A jZ\-Rb M)'4 XgpŦ59o&zllxl$^+0 :P¬k2([^[2/᷊៛ SSS_-w2}doMpқt<no&PdCt qbp9}G:NKvcd~#\ ĵ 8VhXo6"AjǗ:tCRA?/f{hղ0r4`jkA+ XB6/(|K2ZR|",P~>KA,Wȷ#8mk؆ ?Ek?Qy HG!s!_CO-b4| K:Pv ї36K|tn/=?e_u7`{і?~wcU_qs[L0ٕgzrH7(sȊԂ`=<]2\N7˶P>F=3?#s]t#O'LXRA۽|27k5(A4@7k ?a&GNu]H*U7mc9ЎIbRz0Œ=;@]u^%[^ Q/]:F[^Nܴ?l` "G/CopXBth*01ڀA꟡.@W&e_ׂˡKZnh.@@(ܴm#_Zb0E/71jN:#t=^]PMʯNuS?]WepкíSG6o6OG~Yu0Mi?銆v]5b)8pCWaIoXWe~ 4j|;~}NW-RaپxJapPD@.87,}}ӛlGV]Z~=JoFuJ^y=yPPO^~:Q׸pTJ,3~-,G{ 'A^ ]ց0&Z;EO>HKQ-E[ko9|&0#GӷWbJ_=Ok('^:3v5o8{|ާgO 6yxE~zSzMǢC&AOF/]z:: &' 3U]?Oo.! ;_pƻ%uENc{Q2f&gÉX95έHǯt "釪nidLXmup hK6_]?f{H7DR GOP_eB9-OIezl$6aƿ1[A^58ggtR(hH-WˋlR-遀K/_YiБGhlxNTx6n*|h:{yrӫ+/7T h%5`QsErggz Tew\Eeg[JAGrƷ?-͗+ :trI`W97!җ!SVЌ":W1K7b!-ix(k/\`&qƅZk/{&ٲ ~af'@5 aGnMB^K'Z_ܶfIe>~L?&G s5ȶmx`iaXt];dɮ8}qB. *'0|ݮ—]K$P7ִ?]߈Gy/b Jzf8OGrt6[Eb̦QJOv\8n|?ZYGf ofNitpF#5ٿgG(_L"J7xU1?NE\{13| %ab@?gQk4wrGp~C7c5ƿ1 n0QqY،*F)X< |0[oQSEkEtoP=磔}j|2D&BScwm[sH&':\KˑÏנ4@ʬ+w t? ݸ;=#jFQ7^FwoL=b56Q `1` `1pzyᑪ۽-  uJ`Qsٖhצ]RnE|߾VjE>o. CN ˕z߭x{AL,.'~` 4nA)Jo~@uz91}a7slM|+n]Vo LK 3 M$b8HrlqT#ޗF@tJbƀOAω9 [*qvLݽ\|w3Pź B^~豗sxߕ`$ yl%}3ؘr%b{kzv 9-ٍ0éGz vp0@'_ hvvD8N t}LR,Cs,E;3`36&?4K__o0%>>NH F8t,,K'`t8FîIgk~h97>Ao>sR8;˾[Ʒ5APc6 p0y~ia3Y{\ttgX&0^XkRG_"D$ՅE0G?޲18 +!.4^Ww2r+_Ϯ1m9~TɎ@CTǺBuz$?+ Ͽe='ц݅EmXi>& TpJUPxpcik!u:0 )e{eNn' 5N6 ObN^K3(A@Կt,\+x7wZ-)ء0'{ D'~HI|%@dA0_4D/,<+zQm5IGoo )Š=04*3;(M'~cύo 78О?uG~$ g0޿T8?ߵx; `>[uM7Ex)gu#"υGo>peC @F@>!{i݁TghcM ` P,&QXJ$3C4ʪ B.00f ܬM@2E_QZ,@$E-i&09# W Tӕ6_Gbh0|y%Ԫw kQ `oyDz?rTtV?!:HO_8Yw_Vc5Tj#^?";Z *9:Ε0\/B[1=Gu0hQ-xw ]D&\ې89 0Ͽ$n/ץ(\}Rt;o_GL}KLl Ǟox(F0Oȿ-YZpd: o\]+o$G>"yJ8V©jQz-@_bA;|O`ԮTA+ii9aoH_P/>C|'y|ſ)+E1[i;[7̉ZE fԀJ(s9ۘKUa@ I#1G;t^ NT^70~o).|DR߷:&V vԾmeiU?R&ΔWǩX& דql7KTi#ozVn/XAy${w|/:`Ʃo2|Ţ0BI+K3!o}4\]SJѷmpP=э{]W"PN2HMy8\s}Lh#wNjcjHsw 'h_Gƶ즭_W>z@x}}/TXL9cMOf@+|T Db;uy0_ ^݇ "*~{*}cЗZ9Z_Gݰ :#ߤîڨ5?S.4r/M #ح?FW pP)Tix_3.uuUGEk]%:~߫9~dj#%G32 Iw O&/ >حNU׌k`.ZޠUʲw@92Q|/=NN?K0zgFxd œ!CT^(+g7 iZXTGA7qTXYֱ)2E?*afi}{T/j~@zbHcg n눞=rU'kxۛmR;xيS,ΠQHuĺ:A߷p(<{w+ۺvy;(6ht&7{R,9~8;BY h`y#ljp}"| z*B@a_4Zb{#C_MїsE8=>HՇi*jf#v(G,co1{ q6)gSu`D⠠?~^&v;s">á &vF{AZnw=Zk~kmS _7[DFnDXO\$t' ̗-v?~+`ZۅYg?KO8㨆 y(h}R8zt #1P41S(! PIAZQ?FV!{kj/77Cq-H_y{}U;Z.WO}!M3a+ aօīhn@-KoJY#s f%~ǿ0N;ٺpn\ ԫ+t(pܜ2 L~rLS)o?%!U_],XA?Dp0`"P=2yo]΍Aqٔ@t#\wT4@x⦛EtO-ѿ^W[wּ-Tɡ=O!1&>T3"Ϯ\peoŤ8۽8>c>gbM2ƽr|ӻ7Q ̬ LNᾖ'/=FQ+z~x q}]f TxVN8CշGcDIL'~섡k|P~vi݁qcNAD? ?a(R՞n1ڃrQ@m/?.*A? cRWŅmZIT,RVbɿL~vӭjEXh5-W\EE_@&VC*8lS>FSDOFZ^g~(wPgdL\k1"y(#'x(az;h~h +jh ߚ`4E,7P?8ڢO:^[Bw L+G*p Bx;zn@_}m\Q7fZDkQ;Ȣ_ĽK_GOGZ J HCeZJm.\`כ9~e2=ޠuiު'Dz{X>( 5W{C F}6Mkq4B#" *?|v85e Q~5pOۻ R.[+G˰ aTț$EZDk1nZRkWe7ۍjC>p`eWfyfBu:A#(BMAl <br8Ajtm(F Zt ^)D#qD]xŅ^P-iG ¶~45#@doաŵ58]OmDjUߠ#ڠv CQw34y;; 0=_ `4ȥ0ho;ۚ0w+8|om&7cq{};xG4MOC}EGjwzd? 83Рyc=/"mXX†_;G7Q^ V]Xo?sSf F _YqӇ^Q A?8 ޠV4ϭEX~Eh6m*LoЩ(fK#9h-Jwj噳2fG }0l'`$AﻯiRX?y yߠs?J#Xuk<(uUAҸ`,3  @J  K5x,>IdP@Jkҿd+S@upPْBԢty:b^Rjpud`jTr4/|c Q1  n6=)Vijn>|]=g`* Ͱ Jўq B,ny=>PiGl>Kc,wpuu1*=fiwl勴zvA 8 lX2N@To@\UUսA`NlqWܵ3W_Ek~LuP[iUn0.;RѱDғCi9_>1 egi`Ko0+ UMt7$,bJgh}(U?CqV{~_9_Fxv}hMβ/O.TrC$b>,+,J@WkoRuہbicxv֦[QXļxhЙ[Fhu9`KSDj=w}/oU0``T84U;S녊n.G`o|+Yn~ JTfN;r1FCSykH>U=j mX¡lo ^ ٍ7v6k{!֛Pat:`XzV>ړuht~A-@O'hI)Dh'* ˖ܽjE3 v.yl AVnU?Eն{KT"VCGDT 0T_bbnzcPfB`『i)I/6o% @Xl?L|}?+l}c[ ɡ4;&+`mИګ}`+E&OL)/K|LL[%clO5/R=55wnlreI@G@ $2ut8E USP?]'Ln_I uNs,Ʈ5U"T͑G\u#2CT\|zkq+<';p*^sui 1l!L|T@8N}`Yo5pe?\{';&)J5;?%x_:6*!勲prBw^;Ј:N(Έ{sB#ȫ3ũP V0.oQ"_C Epg#Djd@z h/k([\Hy@qQpSٯgr ۾(?;r`W`y_WPٹ ˿$)ny@*@kj>{R单 cLz9Eeo73ЁΏl;S3 bH >#e*ek e(?{wb`0:~{rƠPy.Kui(Edy{Aj\zLH啯K|N0)XZ^ed2J %Wӯ#r/}S=~{a*oBc`8PDnQjt4 "&,_ ,,Ӆs@AO$ a\?ȝYn+?>oDjӯ8ݺ߀{L61j h%Ё1h4MN `j{l! dŚUSjJ Q}< mP.R갥un-ԉ+hoAO%6(D+V ?zVA$:0M=})TA'=9O @uClƾ‘ƭ3-cazή\$P Q.G`Bj>nA*hxPt40|XAA{)b|u{;ߵ qwS]+uXlƠGM/ԍ[{ϽAy O $e;` o k3v$(i1/,QCx-A_szϦm0)N'B)?k̿6L*!@`V{F-d(;p'A3d ([.V6't~]rD,l ĦNlb~Tc@h. {P]7 _獗25q=&,/lAxWUB^j&o Q@ZMnz~Р _ϋE0^8nkS ïsk@u~tlS"0E U&o9V RM*x> FEZ)Q n"/60QPڇEe2q;~V#3g$+J#`-g7VQlQ``P~qT[oL+oQwǝq>_F@qŀj]3Z ep"Qܶؿw8eG@|Y t6uXjV_S`}-ojQǒKpQ/̵V{J"@kj 3kzaIp6A?bBk=nvQ읎q@Y^]C-%L:vMd Z"-<Ԣ+"@4T&5y)`V kyYkD~LfgT"-d# .2.aXCJ[Ag@e]*ngWDYZ)l@1>)xm :aذ`0P3Ϝnɴ] GەEut4X/3VVȉz1lwQ%&dm\< AO@9)D %\j@ g鿼Ih];Aj ɉeOx~"?֥BfCɠqX}TB?4ADZѢE<$pE|) 6lk7lۻ0fOC# 36&20Ah sبV_+]g?{ H|fj%f_E7`6315H8ń#0RCqYgEzr7Z5C*jeC߾%WF8rE͹_38y 0ǩ`1b` ddl}''ijpnh]9nMl1W +_̈́8%RҠ 9έQ\lAkQ̗^Ĥ0Dse1oiBuzS0#u@YHXv f ɼסy#gbo3K*% k(#ƀ̆sV.ut @yiM_+H!2n%=~(0-oy~ݎ,,@Zn>Iw.$ǧWWh">  %k嗽3`zTR/S`mnE =O GgY.,5Z  Bnﲕxp+5egrk#8L걗L6OpzcKJ95FK* bqipT:\-eAUHfIImR A:lco wJj Rb Su`(jdLKh6l(]rJmtǘkpV9B?ۯ+0}y@HRzeFXoP0C׍ HA"``P "rMq,lRqEn CZ\61]Pƿў_7̒wGi;1r;vx&` r,Jޯr5\95ECx9eUzRlP0}rKkneb>9,*Tb)PNj`q1'SJ^3Vzy"oVWRbf>s[m`3r\w{v98C| s12IAbT;:Je`T8d`DH o )nA,.cm>N {*F+% (frx2PϟgݛқG'S_QD&Ox')ߟy=3!܏G\yF  h_b@M jL7@>k!X{r ?2wӯ)N"?+Ԅ*C}l6)\]%,}zjmt`{ڮ?r,#,j'>ק{̹6-i`-d:S)\Ejmdw@jE@q  .X.W)c,H:h-G(2|zߚP3٭F; 0Ml-[]/}I8#IzXo>V\1ש|%c=;"Hgb (ٽlyiTt``=Șï `[Rm:.n+5 !M@{9HGWEznxL:[2Ѥ׊zizt[OxNޟ짹+߻`%IR/)\H'FXSt[+`Go@CMpz4I?9o*~xP6sBH \1:&z Bt=9;C pEe'{ g + rkC&DV0h3x 8P8P(zp͚(Mp 3\YHQ0 Jf<)4 Q2 =%{pdhp A&9hfd31m^n )#)V}{o{} oeR}bB`s+EӁ9h g sh;-,vq%rK8 ;'S8/MБٖ$c5ܾ;ޔ"_l{Ȁ7<" 9՞Aנ(` S`@$Eo B!3䪬-s'SR:ۨKm?C EaA꥜<|cTkΨ9 J C419G:گdR"UҞh15pn@ㆌ0[XP`6*f Q{<ԏ*eŔL0&bYFnu.S{j;μBD{*OT wS.+<;>q'@1vMb,R @G$ d`dV,1 2 &,=_hf\;3 u,ةr>@Avez\?hm֞{ۺ4=n9slC:/Sp*g/)w-TDʴwpd ks+e7:  |ٔ}aԚ/򴺺*-ˤ tW- .?PKt0܎ oJq`K%'&oDae];6}YvK[̞4uQ zsjdwp\;=њD^)aЅX`%f9s#09Nӷ{}"IFjo n[\w)$ J&SOϰXpmذL9UWLOGt'\? c`JKqu|ǀ>Ds3%@{uuff/Ѕs>b W&Mx';L؂}؞Ԅ7`t \z5}܄ؤR|Xd`ptS0\mlPsϮC_^^*-o Y,bIB7۰^? R/O M4gps?p Lie{˟c罐sˁS :ӗ9f>a@40C%+Y?%koNMS(0 A;xɋ\W~{mN3 $>n kYP I4杹_-gݰ^+T;`~`"N`g+PO_>@Gޝ>Ю]4>n%0#8ܧ1oY&L^^Fv|̙)yD!YgIط"U/Pw5܁="@y&C)J#jz-W=c wF>ݍ."8c|(:ZATLcN"LA862%~nlZ9ʉ[ {ͨ:cUI<]9<.C%Pcc05\)ޕށ=x48rKt@9G<,b+EN a jXx+cdD4i+rU@~M @;;!̫Rpcbq|rD#lz PD";6D<;23aj-e |C;x۳k$KT\=;nG~2w>Y\ Miu tD|>Oz>~ |7UQg@11L6q~BDC֊p s^'+Opv`q_) B 80m`x#EMη)rwAː]ͥ%jC!b \&MR?>Oc:M0W}pZK_Nt}zNEt_=s)dTsD5 BW0k@< fB\ݷ0Y.uL' &3T_}*}1à8{TO{99+v)~[H^W!@# #O J#xiPD9b=*;3չpf_ n '%ՌׅZ 8^]^$wɉ=UP:ІoG#l\mFVocY {Mf*d>-ou;AJq3,=4澚VXKr ~l`bRȠohԡL:t{ߡcb1-'қܐ_7aY댟+lƿGsVQ/Ў p"&t|Vs$ƜBhwzR{~uf^R__WsWNWqduQpxu p޾ȗ@oCsZL_#`P/t&8gh㘟a6@2ep͋p(M8E_t4U?y 7g{z0/ '`Cחk p3ۤXhd;칮pt"%$GNq h [G<{Jv`Wf 0pPgB5fwc%).v1!8^.1n/QD 8DJjo10:=PZ.09U0jdq_ m1h0ZJ, '`b|a @0nbn<]Utǭ:Evf袶eylZ\I<5* ̀#zk+p' $qRgB=z;^%k ]rܫ4W@#Kۗ~ܲ=׋~fYש09Hw}=)+7tsaBAUPR>n_]w?vnޱC˳-^x-)x2+h3W3a?^s[sŭ.aԘ.E:cy4aG(_Bjm *CjVwCK: v@pG@ @Hc`N 1m~ŹWN4aZIUhi uoCUF+L/c*' }釩^y]; p= /o0ޙ⧸C%‰X,Yؠ3Vөb.; dl:A(ڬq&:o<, ر%A3pVi =JcPW1b;L4˰h#{k8*oTns`Í&q ;lq-Wib>@ԏ"@ 蛑Vgoׅ^@9c ($S :O"]aps` r،S(@vM(Tr&RC9&Q-zU4uebiJźFhK쑶i2ihgA,pHKFY6ygʑ ek"]R6_4.7c^7\1,vJ q ?ukr*INBG@IIx"\?#@F8"km1)#!8Oc|'u0t&h ښt&L,U-nE-Grn`pMz-n8i n"[0fpEϗ 9_f{i,H/vZ:΁p+՞.X9P/ӛ9$0/Ҟ|z BswiU@-!{GœFRG uʙ[swcqrŜd;R+y 0B O6(keU #W3<4%8bzt`̸//l%S0^K]=z'OW#혧'e:Rz?;O;>EgG]~or,6(~c;1TBc=uNu=aTs`p4Z-e)-+׆P.@9ھvqE+щmOJ ü&t)})̥aD%.JctHt.Ds_?蜻Y '(+߾0 BD2MorpE}oo'.a *@Ã9hMTs&T@*j=ndGjoRڲ8űGIsBy5yä9R,GS;G3G e}(e\\xxeLsgN!s9 WG>ҁt;N| V;;J-npi}Ar |ԶI5jZ3QL |Pmez #`(!8^5q9IN~OfvS022FdPբ \Ε' )׸p(짪$YWJ@_0fd)Nq=Q07CCQ!T5 Y3'7sݗ4=OPAS;S]m?cHP3)}q#$ *ùOѯI7?T6"މA8qs(m|J, OvP1⛴<_k{wdIqOl ?(zG6[ʪw!1_+֖F /z=Yy`75 DpPP!^)Z`[xL1* hJ>Mͫ] h>+B(BZCh~UmZ|>i>8Jx,9a8jJ1(qb,."Vn~jf}|hUڇ&^S[?~^%1_ ) JCZ( %0 18X]+6 τ ?%N'qƔl4DxUS 81Bw_q Px̃p+(#t b6՜$ԎD\&ijX lܩr\1,rSѲ裓[V8?9L."۰6rYy. )t-m%/5c]Z^UL Q*m@?UI#'Jwͣ$oD9:řO Loȕ{|:javZٯB؍=ҟ1Gz-^J* ^ EwfqR}d9*$i$PqC,`R-S6EaN C)<`~`ڹbgm%b4u -<"Z.wo}J qZ[E_/hw&RzrוC8ʹvOu.dG(WPw3?M'(btRd}Ip@y\.gn~޵vv{,]Gj~ s  qt-)>Ӿ?C{Ƞ&4 c ^D 0N?@_qfJ9vKk 0KWȒ)^/=4ޘYrxJs؂`ҔN))؁f8F0JUl#(P0ty&v 5%m;Kh9s; <yq[pIwC {sxAj|F_V,Z R&t}4WQp3:*E/=sgǟvd\+9J{Nの#[@RC1(K o91+'/f~*zr_fߋ) =EZjĮSPa iG:y#&k*?[Uyn?כ xK;p G-@;}}},Fw?s5Md.VG_R":l:*9D-Ppx˚ P/;q듎Ajօ%0ضވ? "r3pI' 1.r=ywpXLN ty94Ў>@9XiOVK=5K@ bE!jz `w8()'FZ+i='q+TdDFs:z  N@( =lmzrF@NYKYJPpę쪫]M;]|?{s =%s`{ВVOZH#T8p7SR>OS܄GJ=Zjv4Gb^9cmAɅ|Gբ`#`sPy̿Kuk,&j ?M 砷J-ϬskJ'=oiv,߶ϲ鑹4w;y|\3M"`xysGpEߑf⫀R°5?`A`_`~`FлLp~azD2e/*O=y/¡sQ Ƥ@?_ xφm+8+eS g,`Z5H :.>GK+y殑ZfI Ǥy23p%#8NFw -3xlzQS^e++U%8D*  (D s 0)|)NOΝ^,lCy,g^q8QżОT=5\_c_;&kgIi\y#(p0-m9)j/>Bg߷W{g2.>'~d8Q5_鵺LVHv. f9#=xܹiY@w@,>p8ݲHj3[bN =0d?8DNkp]Uٝ%Q>1U섻KĵB~ y[sʁ v!H%4xp N01 h6ݮ) 9V=ĉ7Kb5E{۱|JU|1e 9  ?n( M,FA?3{\틫k{{j'Sŕ"ӒFXk0 sZҮ'g=Gv' (JՕSjSupjC,iM=_׿%eu0P;":$RSzCW?fk@% OfN!\r?ôˑw}.,y:N #|;gA҈dʯbo'[7NśǀI,ş`qEyуs{߽d 5V'GnξQC`p; AY5\@= Fc/dێ1/C~~%Wd)jsй ~Oݫ=gGοr*M{1ybD@mkzO>ց+Z+izJ`L3 8 -)CUċ{Camd[hR!O?{ZD ]F7PEĺ+"uV٨Jł*ڤ@wߝ=NqY$ۍΞsuqarEAũJ@wruG"TV3dKPʁs NC?u99~ާ'r81 ʟ ?nS+1mV'.7H \9'˪pF nd|yQDѡvV7o:)ˋ| OF tnl',\.EIH2:8Mh04y5ܶ춱uB{̞mU'{?V1׶3IcCiF3r\Cs>:pCO(s{&'{:uK?{q'oQ2'~*ߵmo@h0Kny}M9 MuM&adՀ0P㓲$fy3qeJP[ƓL |H 1$E D K[wѦt?pHK+?e=eU:@{[p'iJL:C'@iXu6A-S4oɄ($>#l~S\,("$)E`ur;-0',ӫ+ Vʅ \x}&x>E4sJG=B JxaR+\A[#pR jǎh/OJ?e]:4JpQ#;Kh_- _Y=3' t˵~W2źXЛ 4[r׻w y8AjЇ螨),`@_Xu ˋ 0 w/S!ÇgN.rqv(kz~BhvfB.kj-prm51JսqjF  yHPi)u-ԉN;cnD({ؑ@,J^19 #7؍s\y3A9׽!KM^0\$  776cOP`ʗ^PhUKz#777#i+"C"*e7nFZ\:(Gv~~NzuϲͲ!)JqRAi3=oa/R^ %,9(H^w$gJ6t0yemN9soG\QTt~EsOg:S`9>SJn=ރpvρ6(usC}TjL,9rX_jK[Gm9SkNK^|J60\aq:]v,idB:$0o^|M61ҡR@@F_-u׸Ζ"l1h?s+6p1wNWBA8%-=h, v_Ǜ)QycPq :ݳ9U='FרV@zPu*XQJ2/̗cu,Y/p*{R9ƿl ! ;s*utZ,b5^LeK"yk,;F _زv _jꛧ K0Ϸ!=aϙMOhiXe^%aTdn? e%}crߘ7Kۻ|#1H΂p,Ohoe`_wR$}N?(5pt$lP"%uw39KUv+'vf(;H,%]*nsaU|\k̂ڹ/nX/z]PYM OQO)..{["`K76JkY+'#```YG7/Ev~7mpd";Dʬ1zhAҜ|1b@Z8.8He,ˈT|<P`y;7J0'$s1!^S qp7NkrD vf?17z /Bމ2uP\r?c&܏LȔs(f;p?00N84@7-~9[l-ozŤ1hs",ϰ ޴e*AËs>' _2t^巏 8[)ґ%X`I},qwIܩ}ʿ_2/ʷ%Y|Ψgu's ZO ?B@LYRN1=4uMGDmw땙PKF((}dC#iQ.9(,`vI|F2G^~' xB @1>_@ߵ_QgizcV'ic{u{\85c{ܟovs{bs?zwJn9RE ^WX.-@/G?sF9xl$foáJ~ ۀlACEp9m:w(} GBn/*ش흍 Zd?w?/9lҏEБz:hܽ{1{}USvhLz4 ݚW9w`YO @d^Fnxf_)t Q$%eylZpu(I^9^t_X0J^W5 uNfK9<+exT~k,ۻ=A@%ϙJ wĹ?-Ѽg3oJ-e5Dnr̵Pqqu0A.?΢Iz:WVK-~,@Kik|tAm` gF?O?0-r=,́%wt|w0d8xAfeĹsӔ9{tLOyi}+%,팗=`ڶ:im̮z `QgގӪ@Q{R4<:C߱_2_>@3+fcM~4TȎ.~3wNj5hJ> e@w>1|!m- %QκBZ $,Z-)!U/Qbg#%V,][ҋpX˗;1<"fm%/y91+A=su&;rvOÄ;W"͝w!mŷ8}^2K`|nay'=9P^rkT̒uir' _|:Ea+j(}uW=̡]G@mN9z݀Bmؔҙ:gcރZN@{y'Sv;;$&.W-[~/)Ƕ0}Qk}_~ǩsSvlBߏ`0;pCԡKA?!>i}y|y9{%qQ۰fbAYTp/ X(W g*^c$>y'r]fM85'^A{<ӑb+]?,=〹J(:G󮟾'*yx* A/|-F__N'ԃxzhŹm(W_EZ7o XX zT(з#K.d--^yd4t{~i~{FunI*S } n `6 Dzr%Yӵ`/jw c~U }4k:MRU}̌=*Ot.4WjW;*xV2@A*&>qc+kO~?Tf`5qr\Kxm$Gy+$Iܨ߉--Tv %ֱ5=({/ 2ӔՀVlj~&X=qNp#-ڵ-u] *nB u6̀ř0\NFa6gAL},Gnf"fO'DT^8yho"kǥ~]n]Dsӏ|DzNY: 8~zyf׎Djzm[K[(N>F ru6Osi4~gCK,|ﮡ50Ljyb)gfhPp `2#I^5*?YکBQ ?D-vǡ^6iۆ޵})51G*qmWwSp_^mL%d^,KW4=f[r5OS]IIF/9_*&ȥ#G8 k`8ÍRx  oP%GNNoqTޥ"M|QF+Ÿi/^nRښ-"|na 6я{bX֟JѶ^|J1PD\# kipqjǿPĻ:Br""! {ڳ%ZU%X$iƓ>}r:8Bͷ;s'rKm:0SOX{gw`a@wR8$0vhs?q{W;̜WFȅ♷y[p( 5+(9t\IWVy`7rJ^g.}*M > E9 C1yV\ި1"g-W3\?vj*J~gA[p^K=No9pσ4vHGQhI#K;喞c]OGU6Xmĝ]k^e'4GJwoysshMWOnaZ"^zޅրO.\=C["SJ}LMm,~Ca$QL\ emq- :>3ڈqs0_sQ{WKa=֏"J/X'7Y0:=fA5O/t3>+C;m?=^FSn+@)G$p7׸/PVW}]%q^y.).\ )  .W! pĔ` $Z#[B-\F7%Kc8SzKڢD.{Ι3]3o?OUWԟ ꎐpo&@{ṽH J +,ӛ'O͑zDOޥ?۟ygo]i["x򔏢8܇]>1kwf.G8(* H-]hG3@~0AӨ^g,# \օ{bX/k8) $N P M@ϔsy]MRXzm޿g1du#s/>俠@@hpG>l뀰FNo;]g'm{,_ycg$\G kd=>"eC8Lp;*_ޫ[+< B`9KBG:;@`^Y1otDYAHZ䂉7e3v DVm2'SEUE$FTt^ȟBNHU "Gz,19DF0lhl?@@f m۽w?_WhB?#ӁrwG#=&O!u)% =.r*==qZ Z.ɮrڠW5^Oή=AyiF5{(#-t@l45'(pI W$[i3MD/=s% 2݅=8򤡿ߜC쯼3(`!1MKKv`P/@noрseߎc{Бg[b熹xw'MW zc!OJYuhN$Z B"x!$ ^H.^[o%MxnkT8.t:8P_w[=|kSX"}7a >ꀦڷz{aG'o~A+WXNRG@S!2撻O_>[#+볍FD m>]]/k`m1K7p̱)h(jޏ{asj#8UahXx(A ɤzMۇ hT 2,K0񾇇OOJXɟJs 'T(V?M9c:lo0?UOgr~Mp!?yv [{~t'׮]~aaZ  Zbntwq/0ly!= ڡ\t%\y3x#6uG4s# Athȶ #Wn:dVb=\2jw]js h {*Kk\AD;@w=]Q vg$E{.Cɏ(O$}#t~ oC?:mQ$pvW;/HJL2ߏN9;bK^ݞs'>uЯςgǝNM˻k{\Zas, oJTQ[eԁOJ|DN+xX?NYP 8  $U;1˾_hc@mV.h^P =:Ogs>(P(3”;ARkt:3n˲ß=zd "Gyߦݕw'tNN$Eھ++Z/bEs]U  ~/QpB6vK/K 2_q`h¼LcH6} u¾ zNrU{#EL1/4`Bl 62b2U%>n޷M }yNXWW#@ +?0 z/:>t&M {(0 &䥫52pos~vžE@,?&G7M?jm/SCьgXt:w?C5TxM,i^Im/'{$ՍXM>9,.~ < 0vrPHbcBA`P^3 -jD2Y t Zu?}/~>@ϡ I=:/^ wᑀQ!テVzr| pD]~ѹ$5Ǜ-UեʹLp2SX~n}uv+VX! L Bp_ iwCٲݫ D4 m3n}Ϫz6 ׹wSjdL~n;da[H8Ȃ`XK*(kcDڂf&CR0=zt"LWD\:6Y_=:2fH$VV&2߾N^CyIA𙔘80<~CBJ0J\8/ՆzNXқBDb@|+J(r񁒰,ȦhA|,v_%u|r7Q r[^Pz˚mY{9hIu.N>]zYjM轏VD+^_<1L;ZX(2$\Kyy%䞏;4`f xM`!oGs9?faQBRuoЊ/2* ІZr8R+) / 6Cȁ~OPapr?BKGͭ<2.e K]}'^];s\|.Sp`X4R_zAE ZFOe;cRsv"d9 7ϔ; \Hc‚ ;N;_Ϫ`[ѣ(t&1\t-D"],Y% zz:= a^a%% %@-ȟе}?_)SG^4yb0nG+JN ɕ_ctgJ#nL~!'}u9zcN3Gs9&xm< x("!ڡ6r T{NG0ԇ;NA($s?Lh6h{ ,dܑZ㣉Ot2QRԛn#UM r Br}] MUz޻=rOݿqš*x=FdMP-yDؙ3. (7_@F D h[e3 2?_9xynWxS}vtc 3lگX {;@4/tV[ȇ13|?PBa16 ><,'r| 9m]p<+Xq mW?G/N^r3}J,#G#-ޠ8bTE"$x0sG =72~\jQx<|l"GE D7@ (FײyX=vt&GsT`X5lqu ~n_XN8dȧozS#?uώ33QL}u]Ȥ dD78׽C8#sj;ln '9@ TVm {nڣGZHJxj!< $3yPP@(4?Mf]aHm4?y{y\t ew"{qע,I2G.wm@4NJz](WJ iݠŮC1`|UzV JD0/mV{)1"?`4HQXQ™~P3v7/?"Xvr_5HWx*S+IUJ1>Q~k^M>;?G|>((hIC#.]D=llrr|0<0[^vȹm#3Y?ZwM+/l=lP|/EZÌVd/s HCA㜐 az ֍ڟ!V6(AKr-;=q>)gjc4ʥ0Bi)&1-jO-Ibl[-d"]o}5*'J O{8qM $uLݕe\x=c^+hN! Ȱ_`Th{Z22IbYz<CzY\۳I6{yF2M\6mN(@n /S}EQlM{]7'뽆IEa| A乑ުI[d¯7VYCOS%_V@@ƁlhL4GuA{]Dv`D /56In" Ȕȃv"VGY̊df;<Ɋ;J{顮ptP`z`uj?.s Zm`ފ0МǢ&A_{8:.#wln8UO-úhr0[G*IDճ/CuB 0=ۈn;t ^flt<` 8?+AzI$(xpk!T&A@x>xQpXs y>uIv=@ՙ`ZLt} wXؾ\A`퇹~+,*),z")Soe^dYyp⇾pHs/BU=WVN_ [{oN(hWn:.R';slM- ɋD,qCWv'19LCۀ|y.ƽzh1vQRI8=r-փB@0w=|7wb)*FS(45s҃U' 몀A`8Hpf1i-PPhEqF"@KZb:Ⱥz6L0u[" ʅ0Zd?=@;A;Gq+fzñ]Xl8wf!%z[$l1loO{C@hr:LبpI;" 0M`V$:7l1+K4ٻ%K}e&? ڍ?Qw~E B-K51C~5)xNxxOV壵t1:z8 4 &[y0#$%3s )m$k q,XSW,A.6`(TMHv'CC%$)BF/ )S֢ޚS@t8g3Bcrmpz~:x#&F?mTK]'Gw8 F 閱{hw#qjQ= Sq#&P,4$DE*DpL(Z+?NZz?m> `;>_ "g^6Eq%5JKϻ]wU'ٜ?,!?jk^ ~t8?߿~kEX(hI'6uod&, Զ18'ޣ݄Zr, MB2OP:.q!0BL2$ ɼnam$Np]F&C$xv[c N15E 6vf},#ؒ|ž!<6vwشE=/|~>Iy$(X-] ]:Od}8Ff1 |H%v#, @Ia]CnWzvՁs-SraNG7!I0M2ώ7dc4 HUoQQLOV8`~z? ND%]Uj}.#e+>Y#gbfA!=:MSm<Iyd(6!CBMgBג4,J(I9cl$|} ^*!k) A2`%,i/q'h0. !BGl]f3t-ћmq?XGZZ"[2DQWy%'M; %;yҞԭ$ AAq1;" %  >SpAN̬0Zԫd@h .E2n-j-%9.m\0&^$z3"m)uL>zYJmonlLo9YX6>v>ۗ8{cElQ|,HL8{?q6^maY.=-*|(P(qt&S٩z~ f8Y!VqݻgP"j^9f/UŋH|!:[ff'Wo{Q."'F#I;7u8\\;fѻǝrհV2%zǃ*AT>qy"p:MjSt ߝx{ަG% Zǀ8$,*R[00=QA$Fp=:LEa{&GqCv$6)RQ |D79zdkW8E<`s?ceNQ4i-n*\vJwe} pMݷ0?O{>ֳWG % Z=gm䳬ez da/G3 h )x[5E B>N"$0 ̀'BؖN"@)u#bZ)D+mYPnTѣ؈S;+[dZQ y;nhѴF/ :JJ3>Wc޸P:G[ Px,VfF,f]Wa% Z?QHm JQUBVN,H"VHq$;V.ҨġoٖSI`ՎVBWlYA0H[;P +ajeE =Ϳ' N;uҠ<2Gdأ 7fORhS!vw%7޾V‚e&FHqm*# r_,|5 mg"&lM:bAx؄9DDBϡnXp99˰n:)V1ADx{|Ԛ]܇MxaI$03}h&% XM}e@]?Q20zk`, E 9+tXe{(#{:S`bc&˦hȮy F(.@r@=bpb?od%i]c(88=A\ y_ӯhA|L_B/6},T(<䐧o jq9SI<XMH0N Hg9A6.}aC7{֣b$?9|*3J=$ȿ~(|~yv}jhcۖh=D䆴y(E\uQ$.!OȽ[OWc_{7X ]c X4z:F2!8֞·)%@E]$]+kI"r`ꁆ s'( 5(:Brv%qM?o8C@n^'/1}֢5S|>I*0i3`dwr{zE_@ᡇY i-ʃk-2h'F۶E0sAeQI0NcAB@5c }޻ġD&Wm+$Ύ-TG6F_KO ߧ79MJiDH<Bh5D͕En=ޡ%  O(|nuVI(lHCO=jKqIsW"={-͝D@O!B/0rnr-{;7jǸODAiz{ Zx ~^V qF],:a,Rs akWB7H4-&١p=C^&K:(~TzĊٛ-5%Xz$̠L0QketB]%OlɟlĚ VޠK{/՜~AQC&lNT Ij=JLE.rRÒ114xv:xȺ.RVPs,l:rv;i5ܝݖ-BhS_MԶKЦЈTWpI);UI]0}$O ͏-tq7,%i?bП?m_ܞ߼0oP@"Ī\\eEOTO$P. |pB@6{na$i#B2#;z(W8MGe5wf&<ldٓ;\65$:ڷꚗm Gh<<ުM~GB3X٨&Xg97[|_x?(P(,6'iS&c5qLx5+RpZh[W"x ,MOaLo`t:' pݎճ(a~ZG.H.z W4.lOn?}l/CnkK{s8nz枽=Wߞ֟ߦBoAh 0|绡MXW í}'nb o\p:t A#^Mw]t8#t$JġDVz%Xl|"l`nsjJD[w]޹~ZӚ͞|k [,5y幦%vy% ft9yq3LxX=y9DޑbY?D*$ 2h B;I1`1lu)=[샍Cʹy͆]l9 S9Dsx}ѱ8?`q;d{@a &z-c_ߙ}iɞ`/RW@wC׾I1ĉ#8d$@Fd#$ߕrЗsFp=Ly.LetQޫ 6.zء4oԪ: &BduxQ .~t[2S]%ҿ}d *!<*$P_yΒ}y8 =vBuޟ_l)#CH2Z` g?OjO/wo[EjQ^E]]ݎ1BOFD1.,/1GdCcwc/=7tz]y=N# Ԍ"x mk7/^zfSl[F2"{<1FH$( ݈0 PGL4Ywg_:;E!J G4qp&9䴛n2~c, !;2Os09^9OK^(N]hTYyXi:ZDJHĽimޟ2FE=F)oΟfIgE% _0zY =1㙬nDxawc s$aOs$wO_ߘf6 8zuG4_:y"G ߄/}:!@ZDi R`6;L|g>k%?cz:;'W߭ĻB@7OwN߼7S;ر=6" }, "keywords": [ "bundler", "release", "library", "targets" ], "dependencies": { "kleur": "^4.0.0", "mk-dirs": "^3.0.0", "rewrite-imports": "^3.0.0", "terser": "^4.8.0" }, "devDependencies": { "premove": "3.0.1", "uvu": "0.5.1" } } bundt-1.1.5/readme.md000066400000000000000000000052111406243524700144170ustar00rootroot00000000000000
bundt
A simple bundler for your delicious modules~!
## Features * Release CommonJS, ES Module, and UMD targets * Easily configured through your `package.json` * Optionally control Terser settings ***Gotchas*** Your code is prepared for release targets ***as written***! * Does not transpile your code
_AKA – no Babel or Buble_ * Does not inline dependencies
_AKA – no Rollup or Webpack_ If you need either of these, using [`microbundle`](https://github.com/developit/microbundle) comes ***highly recommended***! > Seriously, I write wonky ES5 code in a single file...
`bundt` only puts a name to the builder script I copy & paste between libraries.
You are 99.9999% more likely to do better with `microbundle` and/or to not outgrow it. ## Install ``` $ npm install --save-dev bundt ``` ## Usage ```sh # display help text $ bundt --help # build with "lib/index.js" as your entry file $ bundt lib/index.js # build with "src/index.js" (default) $ bundt ``` ## Configuration Most configuration lives within your `package.json` file. The following keys are evaluated: * **"main"** — the destination for your CommonJS file
_Defaults to `dist/{pkg.name}.js` – always built!_ * **"module"** — the destination for your ES Module file
_A ESM file will not be built if unspecified!_ * **"unpkg"** or **"umd:main"** — the destination for your UMD file
_A UMD file will not be built if unspecified!_ * **"umd:name"** or **"name"** — the globally exposed name for your UMD factory
_You should use an alternate `umd:name` if your `name` is not alphanumeric!_ * **"modes"** — a map of "mode" names and their entry files
_Your `"default"` mode will use the destinations defined above.
All other modes replace `dist` with its name as the new directory._ * **"terser"** — custom [Terser options](https://github.com/terser-js/terser#minify-options) for minification
_Alternatively, you may use a `.terserrc` file~!_ ## License MIT © [Luke Edwards](https://lukeed.com)
Logo by [iconicbestiary](https://www.freepik.com/free-vector/various-desserts-bakery_1310918.htm#page=2&position=38) bundt-1.1.5/test/000077500000000000000000000000001406243524700136205ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/000077500000000000000000000000001406243524700154715ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/basic/000077500000000000000000000000001406243524700165525ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/basic/expects.json000066400000000000000000000000351406243524700211160ustar00rootroot00000000000000{ "cjs": "dist/basic.js" } bundt-1.1.5/test/fixtures/basic/package.json000066400000000000000000000000261406243524700210360ustar00rootroot00000000000000{ "name": "basic" } bundt-1.1.5/test/fixtures/basic/src/000077500000000000000000000000001406243524700173415ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/basic/src/index.js000066400000000000000000000000661406243524700210100ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/browser/000077500000000000000000000000001406243524700171545ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/browser/expects.json000066400000000000000000000001371406243524700215230ustar00rootroot00000000000000{ "cjs": "dist/browser.js", "esm": "dist/browser.esm.js", "umd": "dist/browser.min.js" } bundt-1.1.5/test/fixtures/browser/package.json000066400000000000000000000001731406243524700214430ustar00rootroot00000000000000{ "name": "browser", "main": "dist/browser.js", "browser": "dist/browser.esm.js", "unpkg": "dist/browser.min.js" } bundt-1.1.5/test/fixtures/browser/src/000077500000000000000000000000001406243524700177435ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/browser/src/index.js000066400000000000000000000001551406243524700214110ustar00rootroot00000000000000export let name = 'world'; export function greet() { return 'hello, ' + name; } export const bar = 'baz'; bundt-1.1.5/test/fixtures/custom-entry/000077500000000000000000000000001406243524700201425ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/custom-entry/expects.json000066400000000000000000000001611406243524700225060ustar00rootroot00000000000000{ "entry": "lib/entry.js", "umd": "dist/entry.min.js", "esm": "dist/entry.mjs", "cjs": "dist/entry.js" } bundt-1.1.5/test/fixtures/custom-entry/lib/000077500000000000000000000000001406243524700207105ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/custom-entry/lib/entry.js000066400000000000000000000000661406243524700224110ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/custom-entry/package.json000066400000000000000000000001661406243524700224330ustar00rootroot00000000000000{ "name": "custom-entry", "unpkg": "dist/entry.min.js", "module": "dist/entry.mjs", "main": "dist/entry.js" } bundt-1.1.5/test/fixtures/custom-name/000077500000000000000000000000001406243524700177215ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/custom-name/expects.json000066400000000000000000000001301406243524700222610ustar00rootroot00000000000000{ "name": "foobar123", "cjs": "dist/custom-name.js", "umd": "dist/named.min.js" } bundt-1.1.5/test/fixtures/custom-name/package.json000066400000000000000000000001271406243524700222070ustar00rootroot00000000000000{ "name": "custom-name", "umd:name": "foobar123", "unpkg": "dist/named.min.js" } bundt-1.1.5/test/fixtures/custom-name/src/000077500000000000000000000000001406243524700205105ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/custom-name/src/index.js000066400000000000000000000000661406243524700221570ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/custom-output/000077500000000000000000000000001406243524700203415ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/custom-output/expects.json000066400000000000000000000001341406243524700227050ustar00rootroot00000000000000{ "umd": "build/output.min.js", "esm": "build/output.mjs", "cjs": "build/output.js" } bundt-1.1.5/test/fixtures/custom-output/package.json000066400000000000000000000001751406243524700226320ustar00rootroot00000000000000{ "name": "custom-output", "unpkg": "build/output.min.js", "module": "build/output.mjs", "main": "build/output.js" } bundt-1.1.5/test/fixtures/custom-output/src/000077500000000000000000000000001406243524700211305ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/custom-output/src/index.js000066400000000000000000000000661406243524700225770ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/exports-default-named/000077500000000000000000000000001406243524700217015ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-default-named/expects.json000066400000000000000000000001261406243524700242460ustar00rootroot00000000000000{ "cjs": "dist/named.js", "esm": "dist/named.mjs", "umd": "dist/named.min.js" } bundt-1.1.5/test/fixtures/exports-default-named/output.cjs.js000066400000000000000000000002111406243524700243470ustar00rootroot00000000000000module.exports = function hello(foo, bar) { // } module.exports = function world (a, b) { // } module.exports = class Foobar { // } bundt-1.1.5/test/fixtures/exports-default-named/package.json000066400000000000000000000001671406243524700241730ustar00rootroot00000000000000{ "name": "named-exports", "unpkg": "dist/named.min.js", "module": "dist/named.mjs", "main": "dist/named.js" } bundt-1.1.5/test/fixtures/exports-default-named/src/000077500000000000000000000000001406243524700224705ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-default-named/src/index.js000066400000000000000000000002031406243524700241300ustar00rootroot00000000000000export default function hello(foo, bar) { // } export default function world (a, b) { // } export default class Foobar { // } bundt-1.1.5/test/fixtures/exports-default/000077500000000000000000000000001406243524700206175ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-default/expects.json000066400000000000000000000001261406243524700231640ustar00rootroot00000000000000{ "cjs": "dist/named.js", "esm": "dist/named.mjs", "umd": "dist/named.min.js" } bundt-1.1.5/test/fixtures/exports-default/output.cjs.js000066400000000000000000000001721406243524700232730ustar00rootroot00000000000000module.exports = function (foo, bar) { // } const foobar = 123 module.exports = foobar; module.exports = class { // } bundt-1.1.5/test/fixtures/exports-default/package.json000066400000000000000000000001671406243524700231110ustar00rootroot00000000000000{ "name": "named-exports", "unpkg": "dist/named.min.js", "module": "dist/named.mjs", "main": "dist/named.js" } bundt-1.1.5/test/fixtures/exports-default/src/000077500000000000000000000000001406243524700214065ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-default/src/index.js000066400000000000000000000001641406243524700230540ustar00rootroot00000000000000export default function (foo, bar) { // } const foobar = 123 export default foobar; export default class { // } bundt-1.1.5/test/fixtures/exports-named-list/000077500000000000000000000000001406243524700212305ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-named-list/expects.json000077500000000000000000000001501406243524700235750ustar00rootroot00000000000000{ "cjs": "dist/curly-named.js", "esm": "dist/curly-named.mjs", "umd": "dist/curly-named.min.js" } bundt-1.1.5/test/fixtures/exports-named-list/output.cjs.js000066400000000000000000000004521406243524700237050ustar00rootroot00000000000000function foo(a) { return a + a; } const bar = b => b + b; async function baz(a) { return a + a; } let hello = 'world'; var abc = 123; class Foo extends Component { // } exports.Foo = Foo; exports.abc = abc; exports.bar = bar; exports.baz = baz; exports.foo = foo; exports.hello = hello; bundt-1.1.5/test/fixtures/exports-named-list/package.json000077500000000000000000000002111406243524700235130ustar00rootroot00000000000000{ "name": "named-exports", "unpkg": "dist/curly-named.min.js", "module": "dist/curly-named.mjs", "main": "dist/curly-named.js" } bundt-1.1.5/test/fixtures/exports-named-list/src/000077500000000000000000000000001406243524700220175ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-named-list/src/index.js000077500000000000000000000003351406243524700234700ustar00rootroot00000000000000function foo(a) { return a + a; } const bar = b => b + b; async function baz(a) { return a + a; } let hello = 'world'; var abc = 123; class Foo extends Component { // } export { foo, bar, baz, hello, abc, Foo }; bundt-1.1.5/test/fixtures/exports-named/000077500000000000000000000000001406243524700202575ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-named/expects.json000066400000000000000000000001261406243524700226240ustar00rootroot00000000000000{ "cjs": "dist/named.js", "esm": "dist/named.mjs", "umd": "dist/named.min.js" } bundt-1.1.5/test/fixtures/exports-named/output.cjs.js000066400000000000000000000004501406243524700227320ustar00rootroot00000000000000function foo(a) { return a + a; } const bar = b => b + b; async function baz(a) { return a + a; } let hello = 'world'; var abc = 123; class Foo extends Component { // } exports.Foo = Foo; exports.abc = abc; exports.bar = bar; exports.baz = baz; exports.foo = foo; exports.hello = hello; bundt-1.1.5/test/fixtures/exports-named/package.json000066400000000000000000000001671406243524700225510ustar00rootroot00000000000000{ "name": "named-exports", "unpkg": "dist/named.min.js", "module": "dist/named.mjs", "main": "dist/named.js" } bundt-1.1.5/test/fixtures/exports-named/src/000077500000000000000000000000001406243524700210465ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-named/src/index.js000066400000000000000000000003331406243524700225120ustar00rootroot00000000000000export function foo(a) { return a + a; } export const bar = b => b + b; export async function baz(a) { return a + a; } export let hello = 'world'; export var abc = 123; export class Foo extends Component { // } bundt-1.1.5/test/fixtures/exports-strings/000077500000000000000000000000001406243524700206645ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-strings/expects.json000066400000000000000000000000351406243524700232300ustar00rootroot00000000000000{ "cjs": "dist/basic.js" } bundt-1.1.5/test/fixtures/exports-strings/output.cjs.js000066400000000000000000000006371406243524700233460ustar00rootroot00000000000000function hello() { return 'import{foo}from"bar";export const bar = foo + 123;'; } function world() { return "export { foo } from 'foobar'"; } function there() { return 'var foo=123;export default foo'; } const hiya = true; let foo=1, bar=2, foobar=3; exports.bar = bar; exports.foo = foo; exports.foobar = foobar; exports.hello = hello; exports.hiya = hiya; exports.there = there; exports.world = world; bundt-1.1.5/test/fixtures/exports-strings/package.json000066400000000000000000000000261406243524700231500ustar00rootroot00000000000000{ "name": "basic" } bundt-1.1.5/test/fixtures/exports-strings/src/000077500000000000000000000000001406243524700214535ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/exports-strings/src/index.js000066400000000000000000000005111406243524700231150ustar00rootroot00000000000000export function hello() { return 'import{foo}from"bar";export const bar = foo + 123;'; } export function world() { return "export { foo } from 'foobar'"; } export function there() { return 'var foo=123;export default foo'; } export const hiya = true; let foo=1, bar=2, foobar=3; export{ foo, bar }; export { foobar }; bundt-1.1.5/test/fixtures/limits/000077500000000000000000000000001406243524700167725ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/limits/expects.json000066400000000000000000000001641406243524700213410ustar00rootroot00000000000000{ "esm": "dist/limits.client.js", "umd": "dist/limits.min.js", "argv": [ "--browser", "--unpkg" ] } bundt-1.1.5/test/fixtures/limits/package.json000066400000000000000000000002311406243524700212540ustar00rootroot00000000000000{ "name": "limits", "main": "dist/limits.js", "module": "dist/limits.mjs", "browser": "dist/limits.client.js", "unpkg": "dist/limits.min.js" } bundt-1.1.5/test/fixtures/limits/src/000077500000000000000000000000001406243524700175615ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/limits/src/index.js000066400000000000000000000000661406243524700212300ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/minify/000077500000000000000000000000001406243524700167645ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/minify/expects.json000066400000000000000000000001711406243524700213310ustar00rootroot00000000000000{ "cjs": "dist/minify.js", "esm": "dist/minify.mjs", "umd": "dist/minify.min.js", "argv": [ "--minify" ] } bundt-1.1.5/test/fixtures/minify/package.json000066400000000000000000000001631406243524700212520ustar00rootroot00000000000000{ "name": "minify", "main": "dist/minify.js", "unpkg": "dist/minify.min.js", "module": "dist/minify.mjs" } bundt-1.1.5/test/fixtures/minify/src/000077500000000000000000000000001406243524700175535ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/minify/src/index.js000066400000000000000000000000661406243524700212220ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/modes-1/000077500000000000000000000000001406243524700167365ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-1/expects.json000066400000000000000000000001261406243524700213030ustar00rootroot00000000000000{ "umd": "dist/index.min.js", "esm": "dist/index.mjs", "cjs": "dist/index.js" } bundt-1.1.5/test/fixtures/modes-1/package.json000066400000000000000000000002711406243524700212240ustar00rootroot00000000000000{ "name": "modes", "unpkg": "dist/index.min.js", "module": "dist/index.mjs", "main": "dist/index.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-1/src/000077500000000000000000000000001406243524700175255ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-1/src/bar.js000066400000000000000000000000641406243524700206270ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-1/src/foo.js000066400000000000000000000000641406243524700206460ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/modes-2/000077500000000000000000000000001406243524700167375ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-2/expects.json000066400000000000000000000001341406243524700213030ustar00rootroot00000000000000{ "umd": "foobar/index.min.js", "esm": "foobar/index.mjs", "cjs": "foobar/index.js" } bundt-1.1.5/test/fixtures/modes-2/package.json000066400000000000000000000002711406243524700212250ustar00rootroot00000000000000{ "name": "modes", "unpkg": "dist/index.min.js", "module": "dist/index.mjs", "main": "dist/index.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-2/src/000077500000000000000000000000001406243524700175265ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-2/src/bar.js000066400000000000000000000000641406243524700206300ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-2/src/foo.js000066400000000000000000000000641406243524700206470ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/modes-entry-1/000077500000000000000000000000001406243524700200755ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-entry-1/expects.json000066400000000000000000000001201406243524700224340ustar00rootroot00000000000000{ "esm": "dist/index.mjs", "argv": [ "src/foo.js", "--module" ] } bundt-1.1.5/test/fixtures/modes-entry-1/package.json000066400000000000000000000002711406243524700223630ustar00rootroot00000000000000{ "name": "modes", "unpkg": "dist/index.min.js", "module": "dist/index.mjs", "main": "dist/index.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-entry-1/src/000077500000000000000000000000001406243524700206645ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-entry-1/src/bar.js000066400000000000000000000000641406243524700217660ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-entry-1/src/foo.js000066400000000000000000000000641406243524700220050ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/modes-entry-2/000077500000000000000000000000001406243524700200765ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-entry-2/expects.json000066400000000000000000000001201406243524700224350ustar00rootroot00000000000000{ "esm": "dist/index.mjs", "argv": [ "src/bar.js", "--module" ] } bundt-1.1.5/test/fixtures/modes-entry-2/package.json000066400000000000000000000002711406243524700223640ustar00rootroot00000000000000{ "name": "modes", "unpkg": "dist/index.min.js", "module": "dist/index.mjs", "main": "dist/index.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-entry-2/src/000077500000000000000000000000001406243524700206655ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-entry-2/src/bar.js000066400000000000000000000000641406243524700217670ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-entry-2/src/foo.js000066400000000000000000000000641406243524700220060ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/modes-limits-1/000077500000000000000000000000001406243524700202355ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-limits-1/expects.json000066400000000000000000000002001406243524700225730ustar00rootroot00000000000000{ "esm": "dist/modes-limits.client.js", "umd": "dist/modes-limits.min.js", "argv": [ "--browser", "--unpkg" ] } bundt-1.1.5/test/fixtures/modes-limits-1/package.json000066400000000000000000000004011406243524700225160ustar00rootroot00000000000000{ "name": "modes-limits", "unpkg": "dist/modes-limits.min.js", "browser": "dist/modes-limits.client.js", "module": "dist/modes-limits.mjs", "main": "dist/modes-limits.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-limits-1/src/000077500000000000000000000000001406243524700210245ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-limits-1/src/bar.js000066400000000000000000000000641406243524700221260ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-limits-1/src/foo.js000066400000000000000000000000641406243524700221450ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/modes-limits-2/000077500000000000000000000000001406243524700202365ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-limits-2/expects.json000066400000000000000000000002041406243524700226000ustar00rootroot00000000000000{ "esm": "foobar/modes-limits.client.js", "umd": "foobar/modes-limits.min.js", "argv": [ "--browser", "--unpkg" ] } bundt-1.1.5/test/fixtures/modes-limits-2/package.json000066400000000000000000000004011406243524700225170ustar00rootroot00000000000000{ "name": "modes-limits", "unpkg": "dist/modes-limits.min.js", "browser": "dist/modes-limits.client.js", "module": "dist/modes-limits.mjs", "main": "dist/modes-limits.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-limits-2/src/000077500000000000000000000000001406243524700210255ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-limits-2/src/bar.js000066400000000000000000000000641406243524700221270ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-limits-2/src/foo.js000066400000000000000000000000641406243524700221460ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/modes-types-1/000077500000000000000000000000001406243524700201005ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-types-1/expects.json000066400000000000000000000002231406243524700224430ustar00rootroot00000000000000{ "umd": "dist/index.min.js", "esm": "dist/index.mjs", "cjs": "dist/index.js", "exists": [ "foobar/index.d.ts", "index.d.ts" ] } bundt-1.1.5/test/fixtures/modes-types-1/package.json000066400000000000000000000002711406243524700223660ustar00rootroot00000000000000{ "name": "modes", "unpkg": "dist/index.min.js", "module": "dist/index.mjs", "main": "dist/index.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-types-1/src/000077500000000000000000000000001406243524700206675ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-types-1/src/bar.d.ts000066400000000000000000000000441406243524700222230ustar00rootroot00000000000000export default function (): string; bundt-1.1.5/test/fixtures/modes-types-1/src/bar.js000066400000000000000000000000641406243524700217710ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-types-1/src/foo.d.ts000066400000000000000000000000441406243524700222420ustar00rootroot00000000000000export default function (): string; bundt-1.1.5/test/fixtures/modes-types-1/src/foo.js000066400000000000000000000000641406243524700220100ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/modes-types-2/000077500000000000000000000000001406243524700201015ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-types-2/expects.json000066400000000000000000000002311406243524700224430ustar00rootroot00000000000000{ "umd": "foobar/index.min.js", "esm": "foobar/index.mjs", "cjs": "foobar/index.js", "exists": [ "foobar/index.d.ts", "index.d.ts" ] } bundt-1.1.5/test/fixtures/modes-types-2/package.json000066400000000000000000000002711406243524700223670ustar00rootroot00000000000000{ "name": "modes", "unpkg": "dist/index.min.js", "module": "dist/index.mjs", "main": "dist/index.js", "modes": { "default": "src/foo.js", "foobar": "src/bar.js" } } bundt-1.1.5/test/fixtures/modes-types-2/src/000077500000000000000000000000001406243524700206705ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/modes-types-2/src/bar.d.ts000066400000000000000000000000441406243524700222240ustar00rootroot00000000000000export default function (): string; bundt-1.1.5/test/fixtures/modes-types-2/src/bar.js000066400000000000000000000000641406243524700217720ustar00rootroot00000000000000export default function () { return 'hello bar'; } bundt-1.1.5/test/fixtures/modes-types-2/src/foo.d.ts000066400000000000000000000000441406243524700222430ustar00rootroot00000000000000export default function (): string; bundt-1.1.5/test/fixtures/modes-types-2/src/foo.js000066400000000000000000000000641406243524700220110ustar00rootroot00000000000000export default function () { return 'hello foo'; } bundt-1.1.5/test/fixtures/module/000077500000000000000000000000001406243524700167565ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/module/expects.json000066400000000000000000000000721406243524700213230ustar00rootroot00000000000000{ "cjs": "dist/module.js", "esm": "dist/module.mjs" } bundt-1.1.5/test/fixtures/module/package.json000066400000000000000000000001221406243524700212370ustar00rootroot00000000000000{ "name": "module", "main": "dist/module.js", "module": "dist/module.mjs" } bundt-1.1.5/test/fixtures/module/src/000077500000000000000000000000001406243524700175455ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/module/src/index.js000066400000000000000000000000661406243524700212140ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/umdmain/000077500000000000000000000000001406243524700171235ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/umdmain/expects.json000066400000000000000000000000771406243524700214750ustar00rootroot00000000000000{ "cjs": "dist/umdmain.js", "umd": "dist/umdmain.min.js" } bundt-1.1.5/test/fixtures/umdmain/package.json000066400000000000000000000001321406243524700214050ustar00rootroot00000000000000{ "name": "umdmain", "main": "dist/umdmain.js", "umd:main": "dist/umdmain.min.js" } bundt-1.1.5/test/fixtures/umdmain/src/000077500000000000000000000000001406243524700177125ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/umdmain/src/index.js000066400000000000000000000000661406243524700213610ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/fixtures/unpkg/000077500000000000000000000000001406243524700166155ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/unpkg/expects.json000066400000000000000000000000731406243524700211630ustar00rootroot00000000000000{ "cjs": "dist/unpkg.js", "umd": "dist/unpkg.min.js" } bundt-1.1.5/test/fixtures/unpkg/package.json000066400000000000000000000001211406243524700210750ustar00rootroot00000000000000{ "name": "unpkg", "main": "dist/unpkg.js", "unpkg": "dist/unpkg.min.js" } bundt-1.1.5/test/fixtures/unpkg/src/000077500000000000000000000000001406243524700174045ustar00rootroot00000000000000bundt-1.1.5/test/fixtures/unpkg/src/index.js000066400000000000000000000000661406243524700210530ustar00rootroot00000000000000export default function () { return 'hello world'; } bundt-1.1.5/test/index.js000077500000000000000000000041561406243524700152760ustar00rootroot00000000000000// TODO: // Convert "expects" file to `.js` type // so that each can run custom assertions! const fs = require('fs'); const { join } = require('path'); const assert = require('uvu/assert'); const { spawnSync } = require('child_process'); const { premove } = require('premove'); const { test } = require('uvu'); const bin = require.resolve('..'); const fixtures = join(__dirname, 'fixtures'); const tests = { cjs: /(module\.)?exports(\.?)/, esm: /export ((default )?(function|const|class|let|var)|{)/, umd: new RegExp(`"object"==typeof exports&&"undefined"!=typeof module`) }; function exec(cwd, src, flags=[]) { let args = [bin].concat(src || [], flags); return spawnSync('node', args, { cwd }); } function normalize(contents) { return contents.trim().replace(/\r?\n/g, '\n'); } fs.readdirSync(fixtures).forEach(dirname => { let dir = join(fixtures, dirname); let expects = require( join(dir, 'expects.json') ); test(dirname, async () => { let pid = exec(dir, expects.entry, expects.argv); assert.ok(pid.stdout.length, 'prints table to stdout'); assert.is(pid.status, 0, 'runs without error'); for (let k in expects) { if (/entry|name|argv/.test(k)) continue; if (k === 'exists') { expects[k].forEach(file => { let full = join(dir, file); assert.ok(fs.existsSync(full), `(${file}) ~> file exists`) }); continue; } let file = join(dir, expects[k]); assert.ok(fs.existsSync(file), `(${k}) ~> file exists`); let data = fs.readFileSync(file, 'utf8'); assert.ok(tests[k].test(data), `(${k}) ~> contents look right`); let output = join(dir, `output.${k}.js`); if (fs.existsSync(output)) { output = fs.readFileSync(output, 'utf8'); assert.fixture( normalize(data), normalize(output), ); } if (k === 'cjs') { assert.not.throws(() => new Function(data), SyntaxError); } else if (k === 'umd' && 'name' in expects) { assert.ok(data.includes(expects.name), `(${k}) ~> has custom UMD name`); } } await premove('index.d.ts', { cwd: dir }); await premove('foobar', { cwd: dir }); await premove('dist', { cwd: dir }); }); }); test.run();