@smitejs/snippets 2.0.0-SNAPSHOT

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../../../node_modules/commander/typings/index.d.ts","../src/snippets.ts","../src/expand.ts","../src/inject.ts","../src/cli.ts","../src/index.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/ssh2/index.d.ts","../../../node_modules/@types/docker-modem/index.d.ts","../../../node_modules/@types/dockerode/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/linkify-it/build/index.cjs.d.ts","../../../node_modules/@types/linkify-it/index.d.ts","../../../node_modules/mdurl/lib/index.d.ts","../../../node_modules/@types/markdown-it/dist/index.cjs.d.ts","../../../node_modules/@types/markdown-it/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/mdurl/build/index.cjs.d.ts","../../../node_modules/@types/mdurl/index.d.ts","../../../node_modules/@types/ssh2-streams/index.d.ts"],"fileIdsList":[[75,125,139,142,143,145,157,175,176],[75,125,136,142,143,157,175,176,177],[75,125,142,143],[75,125,142,143,180],[75,125,142,143,182],[75,125,142,143,182,184],[75,125,142,143,185],[75,125,142,143,188],[75,122,123,125,142,143],[75,124,125,142,143],[125,142,143],[75,125,130,142,143,160],[75,125,126,131,136,142,143,145,157,168],[75,125,126,127,136,142,143,145],[70,71,72,75,125,142,143],[75,125,128,142,143,169],[75,125,129,130,137,142,143,146],[75,125,130,142,143,157,165],[75,125,131,133,136,142,143,145],[75,124,125,132,142,143],[75,125,133,134,142,143],[75,125,135,136,142,143],[75,124,125,136,142,143],[75,125,136,137,138,142,143,157,168],[75,125,136,137,138,142,143,152,157,160],[75,117,125,133,136,139,142,143,145,157,168],[75,125,136,137,139,140,142,143,145,157,165,168],[75,125,139,141,142,143,157,165,168],[73,74,75,76,77,78,79,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174],[75,125,136,142,143],[75,125,142,143,144,168],[75,125,133,136,142,143,145,157],[75,125,142,143,146],[75,125,142,143,147],[75,124,125,142,143,148],[75,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174],[75,125,142,143,150],[75,125,142,143,151],[75,125,136,142,143,152,153],[75,125,142,143,152,154,169,171],[75,125,137,142,143],[75,125,136,142,143,157,158,160],[75,125,142,143,159,160],[75,125,142,143,157,158],[75,125,142,143,160],[75,125,142,143,161],[75,122,125,142,143,157,162,168],[75,125,136,142,143,163,164],[75,125,142,143,163,164],[75,125,130,142,143,145,157,165],[75,125,142,143,166],[75,125,142,143,145,167],[75,125,139,142,143,151,168],[75,125,130,142,143,169],[75,125,142,143,157,170],[75,125,142,143,144,171],[75,125,142,143,172],[75,117,125,142,143],[75,117,125,136,138,142,143,148,157,160,168,170,171,173],[75,125,142,143,157,174],[75,125,142,143,157,175],[75,125,136,139,141,142,143,145,157,175],[75,89,93,125,142,143,168],[75,89,125,142,143,157,168],[75,84,125,142,143],[75,86,89,125,142,143,165,168],[75,125,142,143,145,165],[75,125,142,143,175],[75,84,125,142,143,175],[75,86,89,125,142,143,145,168],[75,81,82,85,88,125,136,142,143,157,168],[75,89,96,125,142,143],[75,81,87,125,142,143],[75,89,110,111,125,142,143],[75,85,89,125,142,143,160,168,175],[75,110,125,142,143,175],[75,83,84,125,142,143,175],[75,89,125,142,143],[75,83,84,85,86,87,88,89,90,91,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,111,112,113,114,115,116,125,142,143],[75,89,104,125,142,143],[75,89,96,97,125,142,143],[75,87,89,97,98,125,142,143],[75,88,125,142,143],[75,81,84,89,125,142,143],[75,89,93,97,98,125,142,143],[75,93,125,142,143],[75,87,89,92,125,142,143,168],[75,81,86,89,96,125,142,143],[75,125,142,143,157],[75,84,89,110,125,142,143,173,175],[64,65,66,67,75,125,138,142,143,147,149],[65,75,125,142,143],[65,66,67,75,125,142,143],[65,66,75,125,138,142,143,147],[75,125,138,142,143,147]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"a6005262ef9ae5d7325a381df594d6b35babfb6df4a89c4febd06e6101d05bc1","impliedFormat":99},{"version":"97e94b0072572d07f27406b397c8113a1c996a10936f921e0ab255e353400d2d","signature":"25b504fe22085d87ea7e5a3de04fae0fd3e7c7fe1f0fc9cc0078a800163460ba","impliedFormat":99},{"version":"d01dc19b396f1c2947518a4f429d63fa8f9a4279ca045a849d8f11eb1e52257d","signature":"3717298845f0b9cea820aeaff1d1abfe4df6058134e26f8a9d2a961055dac2a3","impliedFormat":99},{"version":"131961d9b844c9136894b2d7e73cf5c2d254ff121b96091c61953436877dd1a0","signature":"fc69bad9eb3877d7b3cf99471e1719cc2f49a3c7674664d91ab993c1de2a8fd1","impliedFormat":99},{"version":"13f21037c061c5f8ea8a19518e1568121e98964980a9fb15038a841085ad7e2d","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":99},{"version":"e815616a56cfc86ab1383d8936d52db0d16ed074f24f6f852efcd4b8ce95c7f0","signature":"da11a648626313720fe412081cc38bc2a2c21555101cde78264a061fc08c7879","impliedFormat":99},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"d61e0a64cd175208ac0b83670151a9a6b5916f0d1ffcdc5c29c90b1cebfc5045","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1},{"version":"4371055bb001f40596e2e236b27583e13bf11e75d937962f8947d56519237fb8","impliedFormat":1},{"version":"89189df027e8910200a4b65af1e29a996225cf25975f5c438fbe9361c008fc6b","impliedFormat":1},{"version":"4555baaea5dfc93e0c0ba3fc326b0ba3ad50bb2ab887fa2dff49c7da7bd3bcaa","impliedFormat":1},{"version":"751764bb94219b4ce8f5475dc35d3de2e432fea01a0c9610cd7f69ad05e398c6","impliedFormat":1},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"347a238c5800881e93ca9d17bece9f7eaf61b000dd1575b67264cb4ececc10b6","impliedFormat":1},{"version":"742f21debb3937c3839a63245648238555bdab1ea095d43fd10c88a64029bf76","impliedFormat":1},{"version":"7cfdf3b9a5ba934a058bfc9390c074104dc7223b7e3c16fd5335206d789bc3d3","impliedFormat":1},{"version":"74b19240ade8cf0b56f8c7c3fe2d1981811156deb4457c1b38737aa9b6bfca1b","impliedFormat":1},{"version":"8a7219b41d3c1c93f3f3b779146f313efade2404eeece88dcd366df7e2364977","impliedFormat":1},{"version":"a109c4289d59d9019cfe1eeab506fe57817ee549499b02a83a7e9d3bdf662d63","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"0944f27ebff4b20646b71e7e3faaaae50a6debd40bc63e225de1320dd15c5795","impliedFormat":1},{"version":"5d30565583300c9256072a013ac0318cc603ff769b4c5cafc222394ea93963e1","impliedFormat":1},{"version":"2e23be37a190953f60cdc4a62f89e5dfe4d6c64f38c71564bc0fb63c7810c9a1","impliedFormat":1}],"root":[[65,69]],"options":{"composite":true,"declaration":true,"declarationMap":true,"exactOptionalPropertyTypes":true,"module":199,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[177,1],[178,2],[179,3],[181,4],[182,3],[183,5],[185,6],[186,7],[187,4],[188,3],[189,8],[122,9],[123,9],[124,10],[75,11],[125,12],[126,13],[127,14],[70,3],[73,15],[71,3],[72,3],[128,16],[129,17],[130,18],[131,19],[132,20],[133,21],[134,21],[135,22],[136,23],[137,24],[138,25],[76,3],[74,3],[139,26],[140,27],[141,28],[175,29],[142,30],[143,3],[144,31],[145,32],[146,33],[147,34],[148,35],[149,36],[150,37],[151,38],[152,39],[153,39],[154,40],[155,3],[156,41],[157,42],[159,43],[158,44],[160,45],[161,46],[162,47],[163,48],[164,49],[165,50],[166,51],[167,52],[168,53],[169,54],[170,55],[171,56],[172,57],[77,3],[78,3],[79,3],[118,58],[119,3],[120,3],[121,45],[173,59],[174,60],[190,61],[176,62],[180,3],[80,3],[64,3],[184,3],[61,3],[62,3],[12,3],[10,3],[11,3],[16,3],[15,3],[2,3],[17,3],[18,3],[19,3],[20,3],[21,3],[22,3],[23,3],[24,3],[3,3],[25,3],[26,3],[4,3],[27,3],[31,3],[28,3],[29,3],[30,3],[32,3],[33,3],[34,3],[5,3],[35,3],[36,3],[37,3],[38,3],[6,3],[42,3],[39,3],[40,3],[41,3],[43,3],[7,3],[44,3],[49,3],[50,3],[45,3],[46,3],[47,3],[48,3],[8,3],[54,3],[51,3],[52,3],[53,3],[55,3],[9,3],[56,3],[63,3],[57,3],[58,3],[60,3],[59,3],[1,3],[14,3],[13,3],[96,63],[106,64],[95,63],[116,65],[87,66],[86,67],[115,68],[109,69],[114,70],[89,71],[103,72],[88,73],[112,74],[84,75],[83,68],[113,76],[85,77],[90,78],[91,3],[94,78],[81,3],[117,79],[107,80],[98,81],[99,82],[101,83],[97,84],[100,85],[110,68],[92,86],[93,87],[102,88],[82,89],[105,80],[104,78],[108,3],[111,90],[68,91],[66,92],[69,93],[67,94],[65,95]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.3"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import process from "node:process";
5
+ import { Command } from "commander";
6
+ import { expandTemplate } from "./expand.js";
7
+ import { injectIntoFiles } from "./inject.js";
8
+ import { buildSnippetIndex, collectFiles, collectTestSnippets, } from "./snippets.js";
9
+ const program = new Command();
10
+ const colorEnabled = process.stdout.isTTY === true && process.env.NO_COLOR === undefined;
11
+ const paint = (code) => (text) => colorEnabled ? `\u001b[${code}m${text}\u001b[0m` : text;
12
+ const green = paint(32);
13
+ const cyan = paint(36);
14
+ const red = paint(31);
15
+ const collectFor = async (src, packageName) => {
16
+ const { snippetIndex } = await collectTestSnippets({
17
+ packageName,
18
+ rootDir: process.cwd(),
19
+ srcDir: resolve(process.cwd(), src),
20
+ });
21
+ return snippetIndex;
22
+ };
23
+ const loadIndex = async (file) => {
24
+ const raw = JSON.parse(await readFile(resolve(process.cwd(), file), "utf8"));
25
+ return buildSnippetIndex(raw, "index");
26
+ };
27
+ program
28
+ .name("smite-snippets")
29
+ .description("Generate docs, JSDoc examples, and code from tested #section snippets.")
30
+ .version("0.1.0");
31
+ program
32
+ .command("index")
33
+ .description("Collect tested snippets from a package's src test files as JSON")
34
+ .argument("<src>", "package source directory holding *.test.ts files")
35
+ .requiredOption("--package <name>", "package name used in error messages")
36
+ .action(async (src, options) => {
37
+ const { snippets } = await collectTestSnippets({
38
+ packageName: options.package,
39
+ rootDir: process.cwd(),
40
+ srcDir: resolve(process.cwd(), src),
41
+ });
42
+ process.stdout.write(`${JSON.stringify(snippets, null, 2)}\n`);
43
+ });
44
+ program
45
+ .command("inject")
46
+ .description("Expand @example JSDoc references in declaration/source files in place")
47
+ .argument("<src>", "package source directory holding *.test.ts files")
48
+ .argument("<target>", "directory to expand @example into, defaults to ./dist")
49
+ .requiredOption("--package <name>", "package name used in error messages")
50
+ .action(async (src, target, options) => {
51
+ const snippetIndex = await collectFor(src, options.package);
52
+ const written = await injectIntoFiles({
53
+ targetDir: resolve(process.cwd(), target),
54
+ snippetIndex,
55
+ packageName: options.package,
56
+ });
57
+ for (const filePath of written) {
58
+ console.log(`${green("Injected")} ${cyan(filePath)}`);
59
+ }
60
+ });
61
+ program
62
+ .command("template")
63
+ .description("Expand // @snippet markers in a template tree into an output directory")
64
+ .argument("<src>", "template directory (files may carry // @snippet markers)")
65
+ .argument("<out>", "output directory for the expanded tree")
66
+ .requiredOption("--index <file>", "JSON snippet index produced by `smite-snippets index`")
67
+ .action(async (src, out, options) => {
68
+ const snippetIndex = await loadIndex(options.index);
69
+ const sourceDir = resolve(process.cwd(), src);
70
+ const outDir = resolve(process.cwd(), out);
71
+ const files = await collectFiles(sourceDir, () => true);
72
+ for (const filePath of files) {
73
+ const source = await readFile(filePath, "utf8");
74
+ const relativePath = filePath.slice(sourceDir.length + 1);
75
+ const expanded = expandTemplate(source, snippetIndex, "template", relativePath);
76
+ const targetPath = join(outDir, relativePath);
77
+ await mkdir(dirname(targetPath), { recursive: true });
78
+ await writeFile(targetPath, expanded);
79
+ }
80
+ });
81
+ try {
82
+ await program.parseAsync(process.argv);
83
+ }
84
+ catch (error) {
85
+ console.error(red(error instanceof Error ? error.message : String(error)));
86
+ process.exitCode = 1;
87
+ }
@@ -0,0 +1,82 @@
1
+ import type { Snippet } from "./snippets.js";
2
+ /**
3
+ * A placeholder/render pair produced by {@link expandMarkdownExamples}. The
4
+ * caller scans a rendered document for each placeholder and replaces it with
5
+ * the rendered snippet markup.
6
+ *
7
+ * @group Markdown
8
+ */
9
+ export interface MarkdownInjectable {
10
+ readonly placeholder: string;
11
+ readonly snippet: Snippet;
12
+ }
13
+ /**
14
+ * Expands every JSDoc `@example <Title>` line in a source string with the
15
+ * matching tested snippet, rendered as a fenced code block. Throws when a
16
+ * referenced snippet is missing. The code must not contain a closing JSDoc
17
+ * comment sequence (asterisk followed by a slash), which would close the
18
+ * comment early.
19
+ *
20
+ * @group Inline
21
+ * @example
22
+ * ```ts
23
+ * const source = " * @example Expand @example declarations";
24
+ * const snippet = buildSnippetIndex(
25
+ * [
26
+ * {
27
+ * title: "Expand @example declarations",
28
+ * code: "x()",
29
+ * slug: "x",
30
+ * filePath: "self.test.ts",
31
+ * startLine: 1,
32
+ * expected: null,
33
+ * },
34
+ * ],
35
+ * "self",
36
+ * );
37
+ * const expanded = expandExamples(source, snippet, "self", "self.d.ts");
38
+ * ```
39
+ */
40
+ export declare const expandExamples: (source: string, snippetIndex: ReadonlyMap<string, Snippet>, packageName: string, filePath: string) => string;
41
+ /** Renders a snippet into a JSDoc fenced ```ts block with the given prefix. */
42
+ export declare const renderExample: (prefix: string, code: string) => string;
43
+ /**
44
+ * Expands `// @snippet <Title>` marker lines in a template/code file by
45
+ * replacing each with the tested snippet code. The route either keeps files
46
+ * untouched when they carry no markers. Throws on unresolved markers.
47
+ *
48
+ * @group Template
49
+ * @example
50
+ * ```ts
51
+ * const snippet = buildSnippetIndex([
52
+ * {
53
+ * title: "Expand @snippet into a source file",
54
+ * code: "line = 1",
55
+ * slug: "x",
56
+ * filePath: "self.test.ts",
57
+ * startLine: 1,
58
+ * expected: null,
59
+ * },
60
+ * ]);
61
+ * const expanded = expandTemplate(
62
+ * "// @snippet Expand @snippet into a source file\n",
63
+ * snippet,
64
+ * "self",
65
+ * "x.ts",
66
+ * );
67
+ * ```
68
+ */
69
+ export declare const expandTemplate: (source: string, snippetIndex: ReadonlyMap<string, Snippet>, packageName: string, filePath: string) => string;
70
+ /**
71
+ * Scans a concept-document markdown source for `@example <Title>` lines,
72
+ * replacing them with placeholder lines and returning the list of injectables.
73
+ * The caller renders the placeholders to HTML after markdown conversion so
74
+ * code fences survive the renderer.
75
+ *
76
+ * @group Markdown
77
+ */
78
+ export declare const expandMarkdown: (source: string, snippetIndex: ReadonlyMap<string, Snippet>, packageName: string, filePath: string) => {
79
+ body: string;
80
+ examples: readonly MarkdownInjectable[];
81
+ };
82
+ //# sourceMappingURL=expand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAID;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,cAAc,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,aAAa,MAAM,EACnB,UAAU,MAAM,KACf,MAsCF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,MAM/C,CAAC;AAEf;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,cAAc,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,aAAa,MAAM,EACnB,UAAU,MAAM,KACf,MA4BF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,cAAc,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,aAAa,MAAM,EACnB,UAAU,MAAM,KACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAA;CA2BzD,CAAC"}
package/dist/expand.js ADDED
@@ -0,0 +1,136 @@
1
+ import { normalizeExampleName } from "./snippets.js";
2
+ const exampleTag = /^(\s*\*[^\S\r\n]*)@example[^\S\r\n]+([^\r\n]+?)\s*$/gmu;
3
+ /**
4
+ * Expands every JSDoc `@example <Title>` line in a source string with the
5
+ * matching tested snippet, rendered as a fenced code block. Throws when a
6
+ * referenced snippet is missing. The code must not contain a closing JSDoc
7
+ * comment sequence (asterisk followed by a slash), which would close the
8
+ * comment early.
9
+ *
10
+ * @group Inline
11
+ * @example
12
+ * ```ts
13
+ * const source = " * @example Expand @example declarations";
14
+ * const snippet = buildSnippetIndex(
15
+ * [
16
+ * {
17
+ * title: "Expand @example declarations",
18
+ * code: "x()",
19
+ * slug: "x",
20
+ * filePath: "self.test.ts",
21
+ * startLine: 1,
22
+ * expected: null,
23
+ * },
24
+ * ],
25
+ * "self",
26
+ * );
27
+ * const expanded = expandExamples(source, snippet, "self", "self.d.ts");
28
+ * ```
29
+ */
30
+ export const expandExamples = (source, snippetIndex, packageName, filePath) => {
31
+ const unresolved = [];
32
+ const expanded = source.replace(exampleTag, (line, prefix, title) => {
33
+ const snippet = snippetIndex.get(normalizeExampleName(title));
34
+ if (!snippet) {
35
+ unresolved.push(title);
36
+ return line;
37
+ }
38
+ if (snippet.code.includes("*/")) {
39
+ throw new Error([
40
+ `Cannot expand @example "${title}" in ${filePath} (${packageName}).`,
41
+ 'The snippet code contains "*/", which would close the JSDoc',
42
+ "comment early and corrupt the emitted declaration.",
43
+ 'Rewrite the snippet to avoid "*/" (e.g. a cron schedule without',
44
+ 'a "*/" step) before releasing.',
45
+ ].join("\n"));
46
+ }
47
+ return renderExample(prefix, snippet.code);
48
+ });
49
+ if (unresolved.length > 0) {
50
+ throw new Error([
51
+ `Cannot expand @example references in ${filePath} (${packageName}).`,
52
+ ...unresolved.map((title) => `- Missing tested snippet: ${title}`),
53
+ ].join("\n"));
54
+ }
55
+ return expanded;
56
+ };
57
+ /** Renders a snippet into a JSDoc fenced ```ts block with the given prefix. */
58
+ export const renderExample = (prefix, code) => [
59
+ `${prefix}@example`,
60
+ `${prefix}\`\`\`ts`,
61
+ ...code.split("\n").map((line) => `${prefix}${line}`),
62
+ `${prefix}\`\`\``,
63
+ ].join("\n");
64
+ /**
65
+ * Expands `// @snippet <Title>` marker lines in a template/code file by
66
+ * replacing each with the tested snippet code. The route either keeps files
67
+ * untouched when they carry no markers. Throws on unresolved markers.
68
+ *
69
+ * @group Template
70
+ * @example
71
+ * ```ts
72
+ * const snippet = buildSnippetIndex([
73
+ * {
74
+ * title: "Expand @snippet into a source file",
75
+ * code: "line = 1",
76
+ * slug: "x",
77
+ * filePath: "self.test.ts",
78
+ * startLine: 1,
79
+ * expected: null,
80
+ * },
81
+ * ]);
82
+ * const expanded = expandTemplate(
83
+ * "// @snippet Expand @snippet into a source file\n",
84
+ * snippet,
85
+ * "self",
86
+ * "x.ts",
87
+ * );
88
+ * ```
89
+ */
90
+ export const expandTemplate = (source, snippetIndex, packageName, filePath) => {
91
+ const unresolved = [];
92
+ const expanded = source.replace(/(\/\/\s*@snippet\s+[^\r\n]+)(?:\r?\n|$)/gu, (marker, markerText) => {
93
+ const title = markerText.replace(/^\/\/\s*@snippet\s+/u, "").trim();
94
+ const snippet = snippetIndex.get(normalizeExampleName(title));
95
+ if (!snippet) {
96
+ unresolved.push(title);
97
+ return marker;
98
+ }
99
+ return `${snippet.code}\n`;
100
+ });
101
+ if (unresolved.length > 0) {
102
+ throw new Error([
103
+ `Cannot expand @snippet references in ${filePath} (${packageName}).`,
104
+ ...unresolved.map((title) => `- Missing tested snippet: ${title}`),
105
+ ].join("\n"));
106
+ }
107
+ return expanded;
108
+ };
109
+ /**
110
+ * Scans a concept-document markdown source for `@example <Title>` lines,
111
+ * replacing them with placeholder lines and returning the list of injectables.
112
+ * The caller renders the placeholders to HTML after markdown conversion so
113
+ * code fences survive the renderer.
114
+ *
115
+ * @group Markdown
116
+ */
117
+ export const expandMarkdown = (source, snippetIndex, packageName, filePath) => {
118
+ const injectables = [];
119
+ const scrubbed = [];
120
+ for (const line of source.split("\n")) {
121
+ const example = line.match(/^\s*@example\s+(.+?)\s*$/u);
122
+ if (example) {
123
+ const title = example[1]?.trim() ?? "";
124
+ const snippet = snippetIndex.get(normalizeExampleName(title));
125
+ if (!snippet) {
126
+ throw new Error(`Missing tested snippet "${title}" referenced by ${filePath} (${packageName}).`);
127
+ }
128
+ const placeholder = `SMITE_EXAMPLE_${injectables.length}`;
129
+ injectables.push({ placeholder, snippet });
130
+ scrubbed.push("", placeholder, "");
131
+ continue;
132
+ }
133
+ scrubbed.push(line);
134
+ }
135
+ return { body: scrubbed.join("\n"), examples: injectables };
136
+ };
@@ -0,0 +1,6 @@
1
+ export { buildSnippetIndex, collectFiles, collectTestSnippets, extractSnippetExpected, extractSnippets, normalizeExampleName, slugify, transformExpectedToResult, } from "./snippets.js";
2
+ export type { Snippet } from "./snippets.js";
3
+ export { expandExamples, expandMarkdown, expandTemplate, renderExample, } from "./expand.js";
4
+ export type { MarkdownInjectable } from "./expand.js";
5
+ export { injectIntoFiles } from "./inject.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,OAAO,EACP,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { buildSnippetIndex, collectFiles, collectTestSnippets, extractSnippetExpected, extractSnippets, normalizeExampleName, slugify, transformExpectedToResult, } from "./snippets.js";
2
+ export { expandExamples, expandMarkdown, expandTemplate, renderExample, } from "./expand.js";
3
+ export { injectIntoFiles } from "./inject.js";
@@ -0,0 +1,15 @@
1
+ import type { Snippet } from "./snippets.js";
2
+ /**
3
+ * Walks `targetDir` for `.d.ts`/`.js`/`.ts` files and expands `@example`
4
+ * declarations in place against the snippet index. Returns the written paths.
5
+ *
6
+ * @group Inline
7
+ */
8
+ export declare const injectIntoFiles: (input: {
9
+ readonly targetDir: string;
10
+ readonly snippetIndex: ReadonlyMap<string, Snippet>;
11
+ readonly packageName: string;
12
+ }) => Promise<readonly string[]>;
13
+ /** Default target directory when none is supplied to the inject command. */
14
+ export declare const DEFAULT_INJECT_TARGET: string;
15
+ //# sourceMappingURL=inject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject.d.ts","sourceRoot":"","sources":["../src/inject.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAAU,OAAO;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,KAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CA0B5B,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,QAAe,CAAC"}
package/dist/inject.js ADDED
@@ -0,0 +1,27 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { expandExamples } from "./expand.js";
4
+ import { collectFiles } from "./snippets.js";
5
+ /**
6
+ * Walks `targetDir` for `.d.ts`/`.js`/`.ts` files and expands `@example`
7
+ * declarations in place against the snippet index. Returns the written paths.
8
+ *
9
+ * @group Inline
10
+ */
11
+ export const injectIntoFiles = async (input) => {
12
+ const files = await collectFiles(input.targetDir, (filePath) => filePath.endsWith(".d.ts") ||
13
+ filePath.endsWith(".js") ||
14
+ filePath.endsWith(".ts"));
15
+ const written = [];
16
+ for (const filePath of files) {
17
+ const source = await readFile(filePath, "utf8");
18
+ const expanded = expandExamples(source, input.snippetIndex, input.packageName, filePath);
19
+ if (expanded !== source) {
20
+ await writeFile(filePath, expanded);
21
+ written.push(filePath);
22
+ }
23
+ }
24
+ return written;
25
+ };
26
+ /** Default target directory when none is supplied to the inject command. */
27
+ export const DEFAULT_INJECT_TARGET = join("dist");
@@ -0,0 +1,68 @@
1
+ /**
2
+ * A tested documentation snippet extracted from a `#section ... #endsection`
3
+ * block. The snippet code is exercised by the test file it lives in, so it is
4
+ * safe to publish into docs, JSDoc declarations, or generated code.
5
+ *
6
+ * @group Snippets
7
+ */
8
+ export interface Snippet {
9
+ /** The tested code between `#section` and `#endsection`, dedented. */
10
+ readonly code: string;
11
+ /** Absolute or root-relative path of the test file hosting the block. */
12
+ readonly filePath: string;
13
+ /** 1-based line of the `#section` marker. */
14
+ readonly startLine: number;
15
+ /** The human-readable title from the `#section` marker. */
16
+ readonly title: string;
17
+ /** URL-safe slug derived from {@link Snippet.title}. */
18
+ readonly slug: string;
19
+ /** The expected-value lines extracted from the assertions that follow. */
20
+ readonly expected: string | null;
21
+ }
22
+ /** A folder of files matching a predicate, sorted by path. */
23
+ export declare const collectFiles: (directory: string, predicate: (filePath: string) => boolean) => Promise<readonly string[]>;
24
+ /**
25
+ * Extracts every `#section ... #endsection` snippet from a test source. Nested
26
+ * or unclosed sections throw.
27
+ *
28
+ * @group Snippets
29
+ */
30
+ export declare const extractSnippets: (source: string, filePath: string) => readonly Snippet[];
31
+ /**
32
+ * Extracts the expected-result lines that immediately follow a snippet's
33
+ * `#endsection` marker (the assertions testing it), as plain code. Returns
34
+ * `null` when there is nothing to show.
35
+ *
36
+ * @group Snippets
37
+ */
38
+ export declare const extractSnippetExpected: (testSource: string, snippet: Snippet) => string | null;
39
+ /**
40
+ * Collects every tested snippet from the `*.test.ts` files under `srcDir`,
41
+ * returning both the flat list and a title index. Duplicate titles throw.
42
+ *
43
+ * @group Snippets
44
+ */
45
+ export declare const collectTestSnippets: (input: {
46
+ readonly packageName: string;
47
+ readonly rootDir: string;
48
+ readonly srcDir: string;
49
+ }) => Promise<{
50
+ snippetIndex: ReadonlyMap<string, Snippet>;
51
+ snippets: readonly Snippet[];
52
+ }>;
53
+ /**
54
+ * Builds the title → snippet index, throwing on duplicate or empty titles.
55
+ *
56
+ * @group Snippets
57
+ */
58
+ export declare const buildSnippetIndex: (snippets: readonly Snippet[], packageName: string) => ReadonlyMap<string, Snippet>;
59
+ /** Normalizes a snippet title into its lookup key. */
60
+ export declare const normalizeExampleName: (value: string) => string;
61
+ /** Converts a snippet title into a URL-safe slug. */
62
+ export declare const slugify: (value: string) => string;
63
+ /**
64
+ * Reduces a block of `expect(...).toBe(...)` assertions into just the expected
65
+ * values. Falls back to the raw code when no `expect` calls are present.
66
+ */
67
+ export declare const transformExpectedToResult: (code: string) => string;
68
+ //# sourceMappingURL=snippets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../src/snippets.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,8DAA8D;AAC9D,eAAO,MAAM,YAAY,GACvB,WAAW,MAAM,EACjB,WAAW,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,KACvC,OAAO,CAAC,SAAS,MAAM,EAAE,CA8B3B,CAAC;AAKF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,MAAM,EACd,UAAU,MAAM,KACf,SAAS,OAAO,EAyDlB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,YAAY,MAAM,EAClB,SAAS,OAAO,KACf,MAAM,GAAG,IAoCX,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAU,OAAO;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,KAAG,OAAO,CAAC;IACV,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;CAC9B,CAwBA,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,SAAS,OAAO,EAAE,EAC5B,aAAa,MAAM,KAClB,WAAW,CAAC,MAAM,EAAE,OAAO,CAgB7B,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,MACzB,CAAC;AAE7B,qDAAqD;AACrD,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,MAKtB,CAAC;AAoBnB;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,KAAG,MAoCxD,CAAC"}