mockaton 13.7.1 → 13.9.1
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/README.md +27 -8
- package/package.json +5 -3
- package/src/client/Filename.js +2 -2
- package/src/client/dir/groupByFolder.js +16 -14
- package/src/server/Mockaton.js +3 -3
- package/src/server/Mockaton.test.js +33 -0
- package/src/server/cli.js +9 -8
- package/src/server/importResolver.js +35 -0
- package/src/server/utils/logger.js +2 -4
- package/src/server/utils/openInBrowser.js +1 -1
- package/vite-plugin/README.md +29 -0
- package/vite-plugin/index.d.ts +5 -0
- package/vite-plugin/index.js +21 -0
- package/vite-plugin/node_modules/.package-lock.json +356 -0
- package/vite-plugin/node_modules/@oxc-project/types/LICENSE +22 -0
- package/vite-plugin/node_modules/@oxc-project/types/README.md +3 -0
- package/vite-plugin/node_modules/@oxc-project/types/package.json +26 -0
- package/vite-plugin/node_modules/@oxc-project/types/types.d.ts +1912 -0
- package/vite-plugin/node_modules/@rolldown/binding-darwin-arm64/README.md +3 -0
- package/vite-plugin/node_modules/@rolldown/binding-darwin-arm64/package.json +37 -0
- package/vite-plugin/node_modules/@rolldown/binding-darwin-arm64/rolldown-binding.darwin-arm64.node +0 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/LICENSE +25 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/README.md +83 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.d.ts +90 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.js +256 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.d.ts +28 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.js +75 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/index.d.ts +3 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/index.js +3 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.d.ts +71 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.js +70 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/index.d.ts +1 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/index.js +1 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/utils.d.ts +2 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/dist/utils.js +17 -0
- package/vite-plugin/node_modules/@rolldown/pluginutils/package.json +37 -0
- package/vite-plugin/node_modules/detect-libc/LICENSE +201 -0
- package/vite-plugin/node_modules/detect-libc/README.md +163 -0
- package/vite-plugin/node_modules/detect-libc/index.d.ts +14 -0
- package/vite-plugin/node_modules/detect-libc/lib/detect-libc.js +313 -0
- package/vite-plugin/node_modules/detect-libc/lib/elf.js +39 -0
- package/vite-plugin/node_modules/detect-libc/lib/filesystem.js +51 -0
- package/vite-plugin/node_modules/detect-libc/lib/process.js +24 -0
- package/vite-plugin/node_modules/detect-libc/package.json +44 -0
- package/vite-plugin/node_modules/fdir/LICENSE +7 -0
- package/vite-plugin/node_modules/fdir/README.md +91 -0
- package/vite-plugin/node_modules/fdir/dist/index.cjs +588 -0
- package/vite-plugin/node_modules/fdir/dist/index.d.cts +155 -0
- package/vite-plugin/node_modules/fdir/dist/index.d.mts +155 -0
- package/vite-plugin/node_modules/fdir/dist/index.mjs +570 -0
- package/vite-plugin/node_modules/fdir/package.json +103 -0
- package/vite-plugin/node_modules/fsevents/LICENSE +22 -0
- package/vite-plugin/node_modules/fsevents/README.md +89 -0
- package/vite-plugin/node_modules/fsevents/fsevents.d.ts +46 -0
- package/vite-plugin/node_modules/fsevents/fsevents.js +83 -0
- package/vite-plugin/node_modules/fsevents/fsevents.node +0 -0
- package/vite-plugin/node_modules/fsevents/package.json +62 -0
- package/vite-plugin/node_modules/lightningcss/LICENSE +373 -0
- package/vite-plugin/node_modules/lightningcss/README.md +105 -0
- package/vite-plugin/node_modules/lightningcss/node/ast.d.ts +9892 -0
- package/vite-plugin/node_modules/lightningcss/node/ast.js.flow +10539 -0
- package/vite-plugin/node_modules/lightningcss/node/browserslistToTargets.js +48 -0
- package/vite-plugin/node_modules/lightningcss/node/composeVisitors.js +450 -0
- package/vite-plugin/node_modules/lightningcss/node/flags.js +28 -0
- package/vite-plugin/node_modules/lightningcss/node/index.d.ts +494 -0
- package/vite-plugin/node_modules/lightningcss/node/index.js +59 -0
- package/vite-plugin/node_modules/lightningcss/node/index.js.flow +843 -0
- package/vite-plugin/node_modules/lightningcss/node/index.mjs +4 -0
- package/vite-plugin/node_modules/lightningcss/node/targets.d.ts +40 -0
- package/vite-plugin/node_modules/lightningcss/node/targets.js.flow +39 -0
- package/vite-plugin/node_modules/lightningcss/package.json +110 -0
- package/vite-plugin/node_modules/lightningcss-darwin-arm64/LICENSE +373 -0
- package/vite-plugin/node_modules/lightningcss-darwin-arm64/README.md +1 -0
- package/vite-plugin/node_modules/lightningcss-darwin-arm64/lightningcss.darwin-arm64.node +0 -0
- package/vite-plugin/node_modules/lightningcss-darwin-arm64/package.json +34 -0
- package/vite-plugin/node_modules/nanoid/LICENSE +20 -0
- package/vite-plugin/node_modules/nanoid/README.md +39 -0
- package/vite-plugin/node_modules/nanoid/async/index.browser.cjs +69 -0
- package/vite-plugin/node_modules/nanoid/async/index.browser.js +34 -0
- package/vite-plugin/node_modules/nanoid/async/index.cjs +71 -0
- package/vite-plugin/node_modules/nanoid/async/index.d.ts +56 -0
- package/vite-plugin/node_modules/nanoid/async/index.js +35 -0
- package/vite-plugin/node_modules/nanoid/async/index.native.js +26 -0
- package/vite-plugin/node_modules/nanoid/async/package.json +12 -0
- package/vite-plugin/node_modules/nanoid/bin/nanoid.cjs +55 -0
- package/vite-plugin/node_modules/nanoid/index.browser.cjs +72 -0
- package/vite-plugin/node_modules/nanoid/index.browser.js +34 -0
- package/vite-plugin/node_modules/nanoid/index.cjs +85 -0
- package/vite-plugin/node_modules/nanoid/index.d.cts +91 -0
- package/vite-plugin/node_modules/nanoid/index.d.ts +91 -0
- package/vite-plugin/node_modules/nanoid/index.js +45 -0
- package/vite-plugin/node_modules/nanoid/nanoid.js +1 -0
- package/vite-plugin/node_modules/nanoid/non-secure/index.cjs +34 -0
- package/vite-plugin/node_modules/nanoid/non-secure/index.d.ts +33 -0
- package/vite-plugin/node_modules/nanoid/non-secure/index.js +21 -0
- package/vite-plugin/node_modules/nanoid/non-secure/package.json +6 -0
- package/vite-plugin/node_modules/nanoid/package.json +89 -0
- package/vite-plugin/node_modules/nanoid/url-alphabet/index.cjs +7 -0
- package/vite-plugin/node_modules/nanoid/url-alphabet/index.js +3 -0
- package/vite-plugin/node_modules/nanoid/url-alphabet/package.json +6 -0
- package/vite-plugin/node_modules/picocolors/LICENSE +15 -0
- package/vite-plugin/node_modules/picocolors/README.md +21 -0
- package/vite-plugin/node_modules/picocolors/package.json +25 -0
- package/vite-plugin/node_modules/picocolors/picocolors.browser.js +4 -0
- package/vite-plugin/node_modules/picocolors/picocolors.d.ts +5 -0
- package/vite-plugin/node_modules/picocolors/picocolors.js +75 -0
- package/vite-plugin/node_modules/picocolors/types.d.ts +51 -0
- package/vite-plugin/node_modules/picomatch/LICENSE +21 -0
- package/vite-plugin/node_modules/picomatch/README.md +749 -0
- package/vite-plugin/node_modules/picomatch/index.js +17 -0
- package/vite-plugin/node_modules/picomatch/lib/constants.js +184 -0
- package/vite-plugin/node_modules/picomatch/lib/parse.js +1386 -0
- package/vite-plugin/node_modules/picomatch/lib/picomatch.js +349 -0
- package/vite-plugin/node_modules/picomatch/lib/scan.js +391 -0
- package/vite-plugin/node_modules/picomatch/lib/utils.js +72 -0
- package/vite-plugin/node_modules/picomatch/package.json +82 -0
- package/vite-plugin/node_modules/picomatch/posix.js +3 -0
- package/vite-plugin/node_modules/postcss/LICENSE +20 -0
- package/vite-plugin/node_modules/postcss/README.md +28 -0
- package/vite-plugin/node_modules/postcss/lib/at-rule.d.ts +139 -0
- package/vite-plugin/node_modules/postcss/lib/at-rule.js +25 -0
- package/vite-plugin/node_modules/postcss/lib/comment.d.ts +67 -0
- package/vite-plugin/node_modules/postcss/lib/comment.js +13 -0
- package/vite-plugin/node_modules/postcss/lib/container.d.ts +478 -0
- package/vite-plugin/node_modules/postcss/lib/container.js +447 -0
- package/vite-plugin/node_modules/postcss/lib/css-syntax-error.d.ts +247 -0
- package/vite-plugin/node_modules/postcss/lib/css-syntax-error.js +133 -0
- package/vite-plugin/node_modules/postcss/lib/declaration.d.ts +150 -0
- package/vite-plugin/node_modules/postcss/lib/declaration.js +24 -0
- package/vite-plugin/node_modules/postcss/lib/document.d.ts +68 -0
- package/vite-plugin/node_modules/postcss/lib/document.js +33 -0
- package/vite-plugin/node_modules/postcss/lib/fromJSON.d.ts +9 -0
- package/vite-plugin/node_modules/postcss/lib/fromJSON.js +54 -0
- package/vite-plugin/node_modules/postcss/lib/input.d.ts +226 -0
- package/vite-plugin/node_modules/postcss/lib/input.js +273 -0
- package/vite-plugin/node_modules/postcss/lib/lazy-result.d.ts +189 -0
- package/vite-plugin/node_modules/postcss/lib/lazy-result.js +550 -0
- package/vite-plugin/node_modules/postcss/lib/list.d.ts +60 -0
- package/vite-plugin/node_modules/postcss/lib/list.js +58 -0
- package/vite-plugin/node_modules/postcss/lib/map-generator.js +376 -0
- package/vite-plugin/node_modules/postcss/lib/no-work-result.d.ts +45 -0
- package/vite-plugin/node_modules/postcss/lib/no-work-result.js +137 -0
- package/vite-plugin/node_modules/postcss/lib/node.d.ts +555 -0
- package/vite-plugin/node_modules/postcss/lib/node.js +449 -0
- package/vite-plugin/node_modules/postcss/lib/parse.d.ts +9 -0
- package/vite-plugin/node_modules/postcss/lib/parse.js +42 -0
- package/vite-plugin/node_modules/postcss/lib/parser.js +611 -0
- package/vite-plugin/node_modules/postcss/lib/postcss.d.mts +66 -0
- package/vite-plugin/node_modules/postcss/lib/postcss.d.ts +456 -0
- package/vite-plugin/node_modules/postcss/lib/postcss.js +101 -0
- package/vite-plugin/node_modules/postcss/lib/postcss.mjs +30 -0
- package/vite-plugin/node_modules/postcss/lib/previous-map.d.ts +80 -0
- package/vite-plugin/node_modules/postcss/lib/previous-map.js +145 -0
- package/vite-plugin/node_modules/postcss/lib/processor.d.ts +114 -0
- package/vite-plugin/node_modules/postcss/lib/processor.js +67 -0
- package/vite-plugin/node_modules/postcss/lib/result.d.ts +204 -0
- package/vite-plugin/node_modules/postcss/lib/result.js +42 -0
- package/vite-plugin/node_modules/postcss/lib/root.d.ts +86 -0
- package/vite-plugin/node_modules/postcss/lib/root.js +61 -0
- package/vite-plugin/node_modules/postcss/lib/rule.d.ts +126 -0
- package/vite-plugin/node_modules/postcss/lib/rule.js +27 -0
- package/vite-plugin/node_modules/postcss/lib/stringifier.d.ts +45 -0
- package/vite-plugin/node_modules/postcss/lib/stringifier.js +370 -0
- package/vite-plugin/node_modules/postcss/lib/stringify.d.ts +9 -0
- package/vite-plugin/node_modules/postcss/lib/stringify.js +11 -0
- package/vite-plugin/node_modules/postcss/lib/symbols.js +5 -0
- package/vite-plugin/node_modules/postcss/lib/terminal-highlight.js +70 -0
- package/vite-plugin/node_modules/postcss/lib/tokenize.js +266 -0
- package/vite-plugin/node_modules/postcss/lib/warn-once.js +13 -0
- package/vite-plugin/node_modules/postcss/lib/warning.d.ts +146 -0
- package/vite-plugin/node_modules/postcss/lib/warning.js +37 -0
- package/vite-plugin/node_modules/postcss/package.json +88 -0
- package/vite-plugin/node_modules/rolldown/LICENSE +25 -0
- package/vite-plugin/node_modules/rolldown/README.md +11 -0
- package/vite-plugin/node_modules/rolldown/bin/cli.mjs +2 -0
- package/vite-plugin/node_modules/rolldown/dist/cli.d.mts +1 -0
- package/vite-plugin/node_modules/rolldown/dist/cli.mjs +1191 -0
- package/vite-plugin/node_modules/rolldown/dist/config.d.mts +14 -0
- package/vite-plugin/node_modules/rolldown/dist/config.mjs +4 -0
- package/vite-plugin/node_modules/rolldown/dist/experimental-index.d.mts +253 -0
- package/vite-plugin/node_modules/rolldown/dist/experimental-index.mjs +320 -0
- package/vite-plugin/node_modules/rolldown/dist/experimental-runtime-types.d.ts +98 -0
- package/vite-plugin/node_modules/rolldown/dist/filter-index.d.mts +196 -0
- package/vite-plugin/node_modules/rolldown/dist/filter-index.mjs +386 -0
- package/vite-plugin/node_modules/rolldown/dist/get-log-filter.d.mts +3 -0
- package/vite-plugin/node_modules/rolldown/dist/get-log-filter.mjs +68 -0
- package/vite-plugin/node_modules/rolldown/dist/index.d.mts +4 -0
- package/vite-plugin/node_modules/rolldown/dist/index.mjs +50 -0
- package/vite-plugin/node_modules/rolldown/dist/parallel-plugin-worker.d.mts +1 -0
- package/vite-plugin/node_modules/rolldown/dist/parallel-plugin-worker.mjs +28 -0
- package/vite-plugin/node_modules/rolldown/dist/parallel-plugin.d.mts +13 -0
- package/vite-plugin/node_modules/rolldown/dist/parallel-plugin.mjs +6 -0
- package/vite-plugin/node_modules/rolldown/dist/parse-ast-index.d.mts +32 -0
- package/vite-plugin/node_modules/rolldown/dist/parse-ast-index.mjs +60 -0
- package/vite-plugin/node_modules/rolldown/dist/plugins-index.d.mts +33 -0
- package/vite-plugin/node_modules/rolldown/dist/plugins-index.mjs +40 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/binding-BeU_1iEk.mjs +582 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/binding-zH1vcmbM.d.mts +1899 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/bindingify-input-options-DbbBhzky.mjs +2211 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/constructors-C2EWPKW3.mjs +68 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/constructors-D0W3rNfA.d.mts +37 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/define-config-5HJ1b9vG.d.mts +3829 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/define-config-DJOr6Iwt.mjs +6 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/error-DL-e8-oE.mjs +85 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/get-log-filter-semyr3Lj.d.mts +35 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/load-config-BoVO31Un.mjs +120 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/logging-C6h4g8dA.d.mts +50 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/logs-D80CXhvg.mjs +180 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/misc-DJYbNKZX.mjs +21 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/normalize-string-or-regex-CbQQ69gT.mjs +66 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/parse-B_ZnWxLZ.mjs +74 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/prompt-U5ajztzG.mjs +847 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/resolve-tsconfig-CfYpGzid.mjs +113 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/rolldown-D3JZ9rMt.mjs +40 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/rolldown-build-DSxL8qiP.mjs +3325 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/transform-DgZ3paSD.d.mts +149 -0
- package/vite-plugin/node_modules/rolldown/dist/shared/watch-Bd8v9ewv.mjs +374 -0
- package/vite-plugin/node_modules/rolldown/dist/utils-index.d.mts +376 -0
- package/vite-plugin/node_modules/rolldown/dist/utils-index.mjs +2414 -0
- package/vite-plugin/node_modules/rolldown/package.json +153 -0
- package/vite-plugin/node_modules/source-map-js/LICENSE +28 -0
- package/vite-plugin/node_modules/source-map-js/README.md +765 -0
- package/vite-plugin/node_modules/source-map-js/lib/array-set.js +121 -0
- package/vite-plugin/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- package/vite-plugin/node_modules/source-map-js/lib/base64.js +67 -0
- package/vite-plugin/node_modules/source-map-js/lib/binary-search.js +111 -0
- package/vite-plugin/node_modules/source-map-js/lib/mapping-list.js +79 -0
- package/vite-plugin/node_modules/source-map-js/lib/quick-sort.js +132 -0
- package/vite-plugin/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
- package/vite-plugin/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- package/vite-plugin/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
- package/vite-plugin/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- package/vite-plugin/node_modules/source-map-js/lib/source-node.d.ts +1 -0
- package/vite-plugin/node_modules/source-map-js/lib/source-node.js +413 -0
- package/vite-plugin/node_modules/source-map-js/lib/util.js +594 -0
- package/vite-plugin/node_modules/source-map-js/package.json +71 -0
- package/vite-plugin/node_modules/source-map-js/source-map.d.ts +104 -0
- package/vite-plugin/node_modules/source-map-js/source-map.js +8 -0
- package/vite-plugin/node_modules/tinyglobby/LICENSE +21 -0
- package/vite-plugin/node_modules/tinyglobby/README.md +25 -0
- package/vite-plugin/node_modules/tinyglobby/dist/index.cjs +334 -0
- package/vite-plugin/node_modules/tinyglobby/dist/index.d.cts +148 -0
- package/vite-plugin/node_modules/tinyglobby/dist/index.d.mts +148 -0
- package/vite-plugin/node_modules/tinyglobby/dist/index.mjs +306 -0
- package/vite-plugin/node_modules/tinyglobby/package.json +73 -0
- package/vite-plugin/node_modules/vite/LICENSE.md +2230 -0
- package/vite-plugin/node_modules/vite/README.md +20 -0
- package/vite-plugin/node_modules/vite/bin/openChrome.js +68 -0
- package/vite-plugin/node_modules/vite/bin/vite.js +79 -0
- package/vite-plugin/node_modules/vite/client.d.ts +282 -0
- package/vite-plugin/node_modules/vite/dist/client/client.mjs +1237 -0
- package/vite-plugin/node_modules/vite/dist/client/env.mjs +18 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/build.js +5381 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/chunk.js +37 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/dist.js +6784 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/lib.js +371 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/logger.js +322 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts +96 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/node.js +34874 -0
- package/vite-plugin/node_modules/vite/dist/node/chunks/postcss-import.js +467 -0
- package/vite-plugin/node_modules/vite/dist/node/cli.js +837 -0
- package/vite-plugin/node_modules/vite/dist/node/index.d.ts +3867 -0
- package/vite-plugin/node_modules/vite/dist/node/index.js +3 -0
- package/vite-plugin/node_modules/vite/dist/node/internal.d.ts +2 -0
- package/vite-plugin/node_modules/vite/dist/node/internal.js +2 -0
- package/vite-plugin/node_modules/vite/dist/node/module-runner.d.ts +315 -0
- package/vite-plugin/node_modules/vite/dist/node/module-runner.js +1262 -0
- package/vite-plugin/node_modules/vite/misc/false.js +1 -0
- package/vite-plugin/node_modules/vite/misc/true.js +1 -0
- package/vite-plugin/node_modules/vite/package.json +192 -0
- package/vite-plugin/node_modules/vite/types/customEvent.d.ts +79 -0
- package/vite-plugin/node_modules/vite/types/hmrPayload.d.ts +80 -0
- package/vite-plugin/node_modules/vite/types/hot.d.ts +39 -0
- package/vite-plugin/node_modules/vite/types/import-meta.d.ts +5 -0
- package/vite-plugin/node_modules/vite/types/importGlob.d.ts +89 -0
- package/vite-plugin/node_modules/vite/types/importMeta.d.ts +30 -0
- package/vite-plugin/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts +44 -0
- package/vite-plugin/node_modules/vite/types/internal/esbuildOptions.d.ts +28 -0
- package/vite-plugin/node_modules/vite/types/internal/lightningcssOptions.d.ts +18 -0
- package/vite-plugin/node_modules/vite/types/internal/rollupTypeCompat.d.ts +24 -0
- package/vite-plugin/node_modules/vite/types/internal/terserOptions.d.ts +11 -0
- package/vite-plugin/node_modules/vite/types/metadata.d.ts +47 -0
- package/vite-plugin/package.json +14 -0
- package/www/src/{assets → .well-known/agent-skills/mockaton}/SKILLS.md +21 -9
- package/src/server/cacheBustResolver.js +0 -19
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://codecov.io/github/ericfortis/mockaton)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
|
|
7
|
-
## [Docs ↗](https://mockaton.com) | [Changelog ↗](https://mockaton.com/changelog) | [Skills
|
|
7
|
+
## [Docs ↗](https://mockaton.com) | [Changelog ↗](https://mockaton.com/changelog) | [Skills](skills/mockaton/SKILL.md)
|
|
8
8
|
|
|
9
9
|
Mockaton is an HTTP mock server for simulating APIs, designed
|
|
10
10
|
for testing difficult to reproduce backend states with minimal setup.
|
|
@@ -30,11 +30,12 @@ Test it:
|
|
|
30
30
|
curl localhost:2020/api/user
|
|
31
31
|
```
|
|
32
32
|
Dashboard: [localhost:2020/mockaton](http://localhost:2020/mockaton)
|
|
33
|
+
|
|
33
34
|
<!-- SKILLS_IGNORE_END -->
|
|
34
35
|
|
|
35
36
|
## Basic Usage
|
|
36
37
|
```sh
|
|
37
|
-
npx mockaton my-mocks-dir/
|
|
38
|
+
npx mockaton --port 2020 my-mocks-dir/
|
|
38
39
|
```
|
|
39
40
|
|
|
40
41
|
Mockaton will serve the files on the given directory. It's a file-system
|
|
@@ -53,22 +54,40 @@ Also, each route can have different mock file variants.
|
|
|
53
54
|
|
|
54
55
|
## Docs
|
|
55
56
|
- How to **configure** Mockaton? See [CLI and mockaton.config.js](https://mockaton.com/config) docs.
|
|
56
|
-
- How to **control** Mockaton? Besides the dashboard, there's a [Programmatic API](https://mockaton.com/api)
|
|
57
|
+
- How to **control** Mockaton? Besides the dashboard, there's a [Programmatic API](https://mockaton.com/api), in which
|
|
58
|
+
you can delay a route, select a different mock file, such as a 500 error, among other options.
|
|
57
59
|
- How to **add plugins**? You can write [Plugins](https://mockaton.com/plugins) for customizing responses.
|
|
58
60
|
|
|
59
61
|
<!-- SKILLS_IGNORE_BEGIN -->
|
|
60
62
|
## How to scrape your backend APIs?
|
|
61
63
|
Mockaton has a [Browser Extension](https://mockaton.com/scraping) that lets
|
|
62
64
|
you download in bulk all your API responses following Mockaton's filename convention.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Skills
|
|
68
|
+
```sh
|
|
69
|
+
npx skills add ericfortis/mockaton
|
|
70
|
+
```
|
|
63
71
|
<!-- SKILLS_IGNORE_END -->
|
|
64
72
|
|
|
65
73
|
## How to create mocks?
|
|
66
74
|
|
|
67
|
-
|
|
75
|
+
```sh
|
|
76
|
+
npm install mockaton
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Write to your mocks directory, `.ts` files are served as JSON by default.
|
|
68
80
|
```sh
|
|
69
81
|
mkdir -p my-mocks-dir/api
|
|
70
|
-
|
|
71
|
-
|
|
82
|
+
cat > my-mocks-dir/api/user.GET.200.ts << EOF
|
|
83
|
+
interface User {
|
|
84
|
+
name: string
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export default {
|
|
88
|
+
"name": "John"
|
|
89
|
+
} satisfies User
|
|
90
|
+
EOF
|
|
72
91
|
```
|
|
73
92
|
|
|
74
93
|
### Example A: JSON
|
|
@@ -96,8 +115,8 @@ export default {
|
|
|
96
115
|
```
|
|
97
116
|
|
|
98
117
|
### Example C: [Function Mocks](https://mockaton.com/function-mocks)
|
|
99
|
-
With a function mock you can do pretty much anything you could do with a normal backend handler
|
|
100
|
-
For example, you can handle complex logic, URL parsing, saving
|
|
118
|
+
With a function mock you can do pretty much anything you could do with a normal backend handler.
|
|
119
|
+
For example, you can handle complex logic, URL parsing, saving to a database, etc.
|
|
101
120
|
|
|
102
121
|
- **Route:** /api/company/abc/user/999
|
|
103
122
|
- **Filename:** api/company/[companyId]/user/[userId].GET.200.ts
|
package/package.json
CHANGED
|
@@ -2,21 +2,23 @@
|
|
|
2
2
|
"name": "mockaton",
|
|
3
3
|
"description": "HTTP Mock Server",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "13.
|
|
5
|
+
"version": "13.9.1",
|
|
6
6
|
"exports": {
|
|
7
7
|
".": {
|
|
8
8
|
"import": "./index.js",
|
|
9
9
|
"types": "./index.d.ts"
|
|
10
10
|
},
|
|
11
|
+
"./vite": "./vite-plugin/index.js",
|
|
11
12
|
"./openapi.json": "./www/src/assets/openapi.json",
|
|
12
|
-
"./SKILLS.md": "./www/src/
|
|
13
|
+
"./SKILLS.md": "./www/src/.well-known/agent-skills/mockaton/SKILLS.md"
|
|
13
14
|
},
|
|
14
15
|
"files": [
|
|
15
16
|
"src",
|
|
16
17
|
"index.js",
|
|
17
18
|
"index.d.ts",
|
|
19
|
+
"vite-plugin",
|
|
18
20
|
"www/src/assets/openapi.json",
|
|
19
|
-
"www/src/
|
|
21
|
+
"www/src/.well-known/agent-skills/mockaton/SKILLS.md"
|
|
20
22
|
],
|
|
21
23
|
"license": "MIT",
|
|
22
24
|
"homepage": "https://mockaton.com",
|
package/src/client/Filename.js
CHANGED
|
@@ -65,7 +65,7 @@ export function makeMockFilename(url, method, status, ext, comment = '') {
|
|
|
65
65
|
return [urlMask + comment, method, status, ext].join('.')
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
const reUuidV4 = /([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/gi
|
|
69
68
|
function replaceIds(filename) {
|
|
70
|
-
return filename.replaceAll(reUuidV4, '[id]')
|
|
69
|
+
return filename.replaceAll(replaceIds.reUuidV4, '[id]')
|
|
71
70
|
}
|
|
71
|
+
replaceIds.reUuidV4 = /([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})/gi
|
|
@@ -11,28 +11,22 @@ function trie(brokers) {
|
|
|
11
11
|
for (const b of brokers) {
|
|
12
12
|
let node = root
|
|
13
13
|
for (const seg of b.urlMask.split('/')) { // TODO it should ignore query string
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
if (node.hasChild(seg))
|
|
15
|
+
node = node.getChild(seg)
|
|
16
|
+
else {
|
|
17
|
+
const segNode = new TrieNode()
|
|
18
|
+
node.setChild(seg, segNode)
|
|
19
|
+
node = segNode
|
|
20
|
+
}
|
|
17
21
|
}
|
|
18
22
|
node.brokers.push(b)
|
|
19
23
|
}
|
|
20
24
|
return root
|
|
21
25
|
}
|
|
22
26
|
|
|
23
|
-
class TrieNode {
|
|
24
|
-
#children = new Map()
|
|
25
|
-
brokers = []
|
|
26
|
-
addChild(k, v) { this.#children.set(k, v) }
|
|
27
|
-
getChild(k) { return this.#children.get(k) }
|
|
28
|
-
getChildren() { return this.#children.values() }
|
|
29
|
-
}
|
|
30
|
-
|
|
31
27
|
/** @param {TrieNode} node */
|
|
32
28
|
function dfs(node) {
|
|
33
|
-
const childBrokers =
|
|
34
|
-
for (const tnc of node.getChildren())
|
|
35
|
-
childBrokers.push(...dfs(tnc))
|
|
29
|
+
const childBrokers = node.getChildren().flatMap(dfs)
|
|
36
30
|
|
|
37
31
|
const brokers = node.brokers.length
|
|
38
32
|
? [node.brokers[0], ...childBrokers, ...node.brokers.slice(1)]
|
|
@@ -49,3 +43,11 @@ function dfs(node) {
|
|
|
49
43
|
return brokers
|
|
50
44
|
}
|
|
51
45
|
|
|
46
|
+
class TrieNode {
|
|
47
|
+
#children = new Map()
|
|
48
|
+
brokers = []
|
|
49
|
+
setChild(k, v) { this.#children.set(k, v) }
|
|
50
|
+
hasChild(k) { return this.#children.has(k) }
|
|
51
|
+
getChild(k) { return this.#children.get(k)}
|
|
52
|
+
getChildren() { return Array.from(this.#children.values()) }
|
|
53
|
+
}
|
package/src/server/Mockaton.js
CHANGED
|
@@ -25,11 +25,11 @@ export function Mockaton(options) {
|
|
|
25
25
|
setup(options)
|
|
26
26
|
cookie.init(config.cookies)
|
|
27
27
|
mockBrokerCollection.init()
|
|
28
|
+
register('./importResolver.js', import.meta.url)
|
|
28
29
|
|
|
29
|
-
if (config.watcherEnabled)
|
|
30
|
-
register('./cacheBustResolver.js', import.meta.url)
|
|
30
|
+
if (config.watcherEnabled)
|
|
31
31
|
watchMocksDir()
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
if (config.hotReload)
|
|
34
34
|
watchDevSPA(CLIENT_DIR)
|
|
35
35
|
|
|
@@ -1035,6 +1035,39 @@ describe('Write and Delete Mock', () => {
|
|
|
1035
1035
|
const r2 = await request('/manual-mock')
|
|
1036
1036
|
equal(r2.status, 404)
|
|
1037
1037
|
})
|
|
1038
|
+
|
|
1039
|
+
test('can overwrite', async () => {
|
|
1040
|
+
const f = 'overwrite.GET.200.txt'
|
|
1041
|
+
await api.writeMock(f, 'write1')
|
|
1042
|
+
await api.writeMock(f, 'write2')
|
|
1043
|
+
const r = await request('/overwrite')
|
|
1044
|
+
equal(await r.text(), 'write2')
|
|
1045
|
+
await api.deleteMock(f)
|
|
1046
|
+
})
|
|
1047
|
+
})
|
|
1048
|
+
|
|
1049
|
+
|
|
1050
|
+
describe('import resolver', () => {
|
|
1051
|
+
test('resolves extensionless ts', async () => {
|
|
1052
|
+
await api.writeMock('_scores.ts', 'export default [1,2,3]')
|
|
1053
|
+
await api.writeMock('user-scores.GET.200.ts',
|
|
1054
|
+
// language=typescript
|
|
1055
|
+
`
|
|
1056
|
+
import scores from './_scores'
|
|
1057
|
+
|
|
1058
|
+
export default scores
|
|
1059
|
+
`)
|
|
1060
|
+
const r = await request('/user-scores')
|
|
1061
|
+
deepEqual(await r.json(), [1, 2, 3])
|
|
1062
|
+
})
|
|
1063
|
+
|
|
1064
|
+
test('imports are cache busted', async () => {
|
|
1065
|
+
await api.writeMock('_scores.ts', 'export default [4,5,6]')
|
|
1066
|
+
const r = await request('/user-scores')
|
|
1067
|
+
deepEqual(await r.json(), [4, 5, 6])
|
|
1068
|
+
await api.deleteMock('_scores.ts')
|
|
1069
|
+
await api.deleteMock('user-scores.GET.200.ts')
|
|
1070
|
+
})
|
|
1038
1071
|
})
|
|
1039
1072
|
|
|
1040
1073
|
|
package/src/server/cli.js
CHANGED
|
@@ -7,10 +7,12 @@ import { isFile } from './utils/fs.js'
|
|
|
7
7
|
import { Mockaton } from '../../index.js'
|
|
8
8
|
import pkgJSON from '../../package.json' with { type: 'json' }
|
|
9
9
|
|
|
10
|
-
const rel = f => join(import.meta.dirname, f)
|
|
11
10
|
|
|
12
11
|
process.on('unhandledRejection', error => { throw error })
|
|
13
12
|
|
|
13
|
+
const DEFAULT_CONFIG_FILE = 'mockaton.config.js'
|
|
14
|
+
const SKILLS_PATH = join(import.meta.dirname, '../../www/src/.well-known/agent-skills/mockaton/SKILL.md')
|
|
15
|
+
|
|
14
16
|
let args, positionals
|
|
15
17
|
try {
|
|
16
18
|
const result = parseArgs({
|
|
@@ -38,22 +40,21 @@ catch (error) {
|
|
|
38
40
|
process.exit(1)
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
|
|
42
|
-
process.on('SIGUSR2', () => process.exit(0))
|
|
43
|
+
process.on('SIGUSR2', () => process.exit(0)) // For clean exit when collecting code-coverage
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
if (args.version)
|
|
46
47
|
console.log(pkgJSON.version)
|
|
47
48
|
|
|
48
49
|
else if (args.skills)
|
|
49
|
-
console.log(
|
|
50
|
-
|
|
50
|
+
console.log(SKILLS_PATH)
|
|
51
|
+
|
|
51
52
|
else if (args.help)
|
|
52
53
|
console.log(`
|
|
53
54
|
Usage: mockaton [mocks-dir] [options]
|
|
54
55
|
|
|
55
56
|
Options:
|
|
56
|
-
-c, --config <file> (default:
|
|
57
|
+
-c, --config <file> (default: ./${DEFAULT_CONFIG_FILE})
|
|
57
58
|
|
|
58
59
|
-H, --host <host> (default: 127.0.0.1)
|
|
59
60
|
-p, --port <port> (default: 0) which means auto-assigned
|
|
@@ -68,7 +69,7 @@ Options:
|
|
|
68
69
|
|
|
69
70
|
Notes:
|
|
70
71
|
* mockaton.config.js supports more options, see: https://mockaton.com/config
|
|
71
|
-
* CLI options override their
|
|
72
|
+
* CLI options override their ${DEFAULT_CONFIG_FILE}} counterparts
|
|
72
73
|
`.trim())
|
|
73
74
|
|
|
74
75
|
else if (args.config && !isFile(args.config)) {
|
|
@@ -76,7 +77,7 @@ else if (args.config && !isFile(args.config)) {
|
|
|
76
77
|
process.exitCode = 1
|
|
77
78
|
}
|
|
78
79
|
else {
|
|
79
|
-
const userConf = resolve(args.config ??
|
|
80
|
+
const userConf = resolve(args.config ?? DEFAULT_CONFIG_FILE)
|
|
80
81
|
const opts = isFile(userConf)
|
|
81
82
|
? (await import(userConf)).default ?? {}
|
|
82
83
|
: {}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs'
|
|
2
|
+
import { resolve as _resolve, join, dirname } from 'node:path'
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from 'node:url'
|
|
4
|
+
|
|
5
|
+
const mockatonSrcRoot = `file://${_resolve(import.meta.dirname, '..')}`
|
|
6
|
+
|
|
7
|
+
// We register this hook at runtime so it doesn’t interfere with non-dynamic imports.
|
|
8
|
+
export async function resolve(specifier, context, nextResolve) {
|
|
9
|
+
let result
|
|
10
|
+
try {
|
|
11
|
+
result = await nextResolve(specifier, context)
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
// Attempt to resolve imports as .ts and .js
|
|
15
|
+
if (error.code === 'ERR_MODULE_NOT_FOUND' && specifier.startsWith('.') && context.parentURL) {
|
|
16
|
+
const absPath = join(dirname(fileURLToPath(context.parentURL)), specifier)
|
|
17
|
+
for (const candidate of ['.ts', '.js'].map(ext => absPath + ext))
|
|
18
|
+
if (existsSync(candidate))
|
|
19
|
+
return resolve(pathToFileURL(candidate).href, context, nextResolve)
|
|
20
|
+
}
|
|
21
|
+
throw error
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Cache bust by appending timestamp query param
|
|
25
|
+
if (result.url?.startsWith('file://') && !result.url.startsWith(mockatonSrcRoot)) {
|
|
26
|
+
const url = new URL(result.url)
|
|
27
|
+
url.searchParams.set('t', performance.now())
|
|
28
|
+
return {
|
|
29
|
+
...result,
|
|
30
|
+
url: url.href,
|
|
31
|
+
shortCircuit: true
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return result
|
|
35
|
+
}
|
|
@@ -45,11 +45,9 @@ export const logger = new class {
|
|
|
45
45
|
#sanitize(url) {
|
|
46
46
|
try {
|
|
47
47
|
const decoded = decode(url)
|
|
48
|
-
if (!decoded)
|
|
49
|
-
return '__MULTI_ENCODED__'
|
|
50
48
|
return decoded
|
|
51
|
-
.replace(reControlAndDelChars, '')
|
|
52
|
-
|
|
49
|
+
? decoded.replace(reControlAndDelChars, '').slice(0, 200)
|
|
50
|
+
: '__MULTI_ENCODED__'
|
|
53
51
|
}
|
|
54
52
|
catch {
|
|
55
53
|
return '__NON_DECODABLE__'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Mockaton Vite Plugin
|
|
2
|
+
|
|
3
|
+
Vite plugin to start Mockaton along with Vite dev server.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install mockaton --save-dev
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
In your `vite.config.js`:
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { defineConfig } from 'vite'
|
|
17
|
+
import mockatonPlugin from 'mockaton/vite'
|
|
18
|
+
|
|
19
|
+
export default defineConfig({
|
|
20
|
+
plugins: [
|
|
21
|
+
// …other plugins
|
|
22
|
+
mockatonPlugin({
|
|
23
|
+
port: 4040,
|
|
24
|
+
mocksDir: './mockaton-mocks',
|
|
25
|
+
})
|
|
26
|
+
]
|
|
27
|
+
})
|
|
28
|
+
```
|
|
29
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Mockaton } from 'mockaton'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export default function (options = {}) {
|
|
5
|
+
let mockatonServer
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
name: 'mockaton-vite-plugin',
|
|
9
|
+
|
|
10
|
+
async configureServer(viteServer) {
|
|
11
|
+
mockatonServer = await Mockaton(options)
|
|
12
|
+
viteServer.httpServer?.on('close', () => {
|
|
13
|
+
mockatonServer?.close()
|
|
14
|
+
})
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
async buildEnd() {
|
|
18
|
+
mockatonServer?.close()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|