@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.
- package/dist/.tsbuildinfo +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +87 -0
- package/dist/expand.d.ts +82 -0
- package/dist/expand.d.ts.map +1 -0
- package/dist/expand.js +136 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/inject.d.ts +15 -0
- package/dist/inject.d.ts.map +1 -0
- package/dist/inject.js +27 -0
- package/dist/snippets.d.ts +68 -0
- package/dist/snippets.d.ts.map +1 -0
- package/dist/snippets.js +209 -0
- package/docs/index.md +22 -0
- package/package.json +39 -0
- package/src/cli.ts +122 -0
- package/src/docs.test.ts +68 -0
- package/src/expand.ts +165 -0
- package/src/index.test.ts +232 -0
- package/src/index.ts +19 -0
- package/src/inject.ts +46 -0
- package/src/snippets.ts +326 -0
- package/tsconfig.json +10 -0
|
@@ -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 @@
|
|
|
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
|
+
}
|
package/dist/expand.d.ts
ADDED
|
@@ -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
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -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";
|
package/dist/inject.d.ts
ADDED
|
@@ -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"}
|