create-jen-app 1.2.1 → 1.2.3
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 +3 -1
- package/dist/index.js +1 -6
- package/package.json +2 -2
- package/templates/static/.esbuild/jen.config.js +18 -0
- package/templates/static/README.md +63 -67
- package/templates/static/build.js +4 -6
- package/templates/static/jen.config.ts +3 -5
- package/templates/static/jenjs.d.ts +3 -3
- package/templates/static/lib/api/(hello).d.ts +5 -5
- package/templates/static/lib/api/(hello).js +7 -7
- package/templates/static/lib/auth/cookie-utils.d.ts +20 -11
- package/templates/static/lib/auth/cookie-utils.js +66 -69
- package/templates/static/lib/auth/jwt.d.ts +28 -0
- package/templates/static/lib/auth/jwt.js +50 -6
- package/templates/static/lib/auth/session.d.ts +34 -34
- package/templates/static/lib/auth/session.js +79 -81
- package/templates/static/lib/build/asset-hashing.js +4 -4
- package/templates/static/lib/build/asset-manifest.js +4 -4
- package/templates/static/lib/build/build.d.ts +20 -0
- package/templates/static/lib/build/build.js +43 -6
- package/templates/static/lib/build/island-hydration.js +2 -2
- package/templates/static/lib/build/minifier.js +12 -12
- package/templates/static/lib/build/page-renderer.d.ts +2 -2
- package/templates/static/lib/build/page-renderer.js +3 -3
- package/templates/static/lib/build/production-build.d.ts +1 -1
- package/templates/static/lib/build/production-build.js +4 -4
- package/templates/static/lib/build/ssg-pipeline.d.ts +1 -1
- package/templates/static/lib/build/ssg-pipeline.js +19 -19
- package/templates/static/lib/build-tools/build-site.d.ts +3 -3
- package/templates/static/lib/build-tools/build-site.js +27 -30
- package/templates/static/lib/cache/index.d.ts +8 -0
- package/templates/static/lib/cache/index.js +8 -0
- package/templates/static/lib/cache/memory.d.ts +31 -4
- package/templates/static/lib/cache/memory.js +38 -12
- package/templates/static/lib/cache/redis.d.ts +43 -4
- package/templates/static/lib/cache/redis.js +59 -14
- package/templates/static/lib/cli/banner.d.ts +5 -1
- package/templates/static/lib/cli/banner.js +18 -14
- package/templates/static/lib/cli/templates/ssg/jen.config.js +29 -29
- package/templates/static/lib/cli/templates/ssg/site/index.js +6 -1
- package/templates/static/lib/cli/templates/ssr/jen.config.js +29 -29
- package/templates/static/lib/cli/templates/ssr/site/index.js +6 -1
- package/templates/static/lib/compilers/esbuild-plugins.js +96 -98
- package/templates/static/lib/compilers/svelte.d.ts +10 -10
- package/templates/static/lib/compilers/svelte.js +31 -31
- package/templates/static/lib/compilers/vue.d.ts +8 -8
- package/templates/static/lib/compilers/vue.js +76 -68
- package/templates/static/lib/core/config.d.ts +217 -50
- package/templates/static/lib/core/http.d.ts +55 -2
- package/templates/static/lib/core/http.js +66 -20
- package/templates/static/lib/core/middleware-hooks.d.ts +204 -31
- package/templates/static/lib/core/middleware-hooks.js +86 -41
- package/templates/static/lib/core/paths.d.ts +42 -4
- package/templates/static/lib/core/paths.js +34 -2
- package/templates/static/lib/core/routes/match.d.ts +51 -3
- package/templates/static/lib/core/routes/match.js +44 -11
- package/templates/static/lib/core/routes/scan.d.ts +49 -5
- package/templates/static/lib/core/routes/scan.js +174 -115
- package/templates/static/lib/core/types.d.ts +148 -13
- package/templates/static/lib/css/compiler.d.ts +16 -13
- package/templates/static/lib/css/compiler.js +62 -58
- package/templates/static/lib/db/connector.d.ts +27 -1
- package/templates/static/lib/db/connector.js +37 -11
- package/templates/static/lib/db/drivers/jdb.d.ts +13 -9
- package/templates/static/lib/db/drivers/jdb.js +41 -39
- package/templates/static/lib/db/drivers/sql.d.ts +16 -12
- package/templates/static/lib/db/drivers/sql.js +152 -135
- package/templates/static/lib/db/index.d.ts +20 -12
- package/templates/static/lib/db/index.js +41 -41
- package/templates/static/lib/db/types.d.ts +22 -18
- package/templates/static/lib/graphql/index.d.ts +47 -0
- package/templates/static/lib/graphql/index.js +50 -3
- package/templates/static/lib/graphql/resolvers.d.ts +51 -11
- package/templates/static/lib/graphql/resolvers.js +22 -6
- package/templates/static/lib/graphql/schema.d.ts +34 -0
- package/templates/static/lib/graphql/schema.js +34 -2
- package/templates/static/lib/i18n/en.json +2 -2
- package/templates/static/lib/i18n/es.json +2 -2
- package/templates/static/lib/i18n/index.d.ts +4 -4
- package/templates/static/lib/i18n/index.js +10 -10
- package/templates/static/lib/import/jen-import.d.ts +39 -10
- package/templates/static/lib/import/jen-import.js +130 -80
- package/templates/static/lib/index.d.ts +42 -11
- package/templates/static/lib/index.js +21 -8
- package/templates/static/lib/jdb/engine.d.ts +35 -6
- package/templates/static/lib/jdb/engine.js +260 -144
- package/templates/static/lib/jdb/index.d.ts +32 -0
- package/templates/static/lib/jdb/index.js +32 -0
- package/templates/static/lib/jdb/types.d.ts +212 -30
- package/templates/static/lib/jdb/utils.d.ts +60 -0
- package/templates/static/lib/jdb/utils.js +159 -107
- package/templates/static/lib/middleware/builtins/body-parser.d.ts +15 -0
- package/templates/static/lib/middleware/builtins/body-parser.js +53 -35
- package/templates/static/lib/middleware/builtins/cors.d.ts +8 -6
- package/templates/static/lib/middleware/builtins/cors.js +52 -48
- package/templates/static/lib/middleware/builtins/logger.d.ts +18 -0
- package/templates/static/lib/middleware/builtins/logger.js +31 -13
- package/templates/static/lib/middleware/builtins/rate-limit.d.ts +19 -2
- package/templates/static/lib/middleware/builtins/rate-limit.js +75 -55
- package/templates/static/lib/middleware/builtins/request-id.d.ts +18 -0
- package/templates/static/lib/middleware/builtins/request-id.js +26 -5
- package/templates/static/lib/middleware/builtins/security-headers.d.ts +18 -0
- package/templates/static/lib/middleware/builtins/security-headers.js +51 -20
- package/templates/static/lib/middleware/context.d.ts +102 -15
- package/templates/static/lib/middleware/context.js +121 -30
- package/templates/static/lib/middleware/decorators.d.ts +18 -1
- package/templates/static/lib/middleware/decorators.js +83 -34
- package/templates/static/lib/middleware/errors/handler.js +22 -24
- package/templates/static/lib/middleware/errors/http-error.d.ts +3 -3
- package/templates/static/lib/middleware/errors/http-error.js +8 -8
- package/templates/static/lib/middleware/kernel.d.ts +67 -4
- package/templates/static/lib/middleware/kernel.js +80 -17
- package/templates/static/lib/middleware/pipeline.d.ts +51 -2
- package/templates/static/lib/middleware/pipeline.js +143 -45
- package/templates/static/lib/middleware/registry.d.ts +67 -8
- package/templates/static/lib/middleware/registry.js +83 -22
- package/templates/static/lib/middleware/response.d.ts +73 -11
- package/templates/static/lib/middleware/response.js +104 -40
- package/templates/static/lib/middleware/utils/matcher.js +11 -12
- package/templates/static/lib/native/bundle.d.ts +13 -8
- package/templates/static/lib/native/bundle.js +14 -14
- package/templates/static/lib/native/dev-server.d.ts +11 -4
- package/templates/static/lib/native/dev-server.js +14 -12
- package/templates/static/lib/native/index.d.ts +20 -20
- package/templates/static/lib/native/index.js +23 -21
- package/templates/static/lib/native/optimizer.d.ts +14 -10
- package/templates/static/lib/native/optimizer.js +14 -14
- package/templates/static/lib/native/style-compiler.d.ts +17 -8
- package/templates/static/lib/native/style-compiler.js +9 -9
- package/templates/static/lib/plugin/loader.d.ts +8 -6
- package/templates/static/lib/plugin/loader.js +25 -31
- package/templates/static/lib/runtime/client-runtime.d.ts +15 -0
- package/templates/static/lib/runtime/client-runtime.js +23 -9
- package/templates/static/lib/runtime/hmr.d.ts +23 -1
- package/templates/static/lib/runtime/hmr.js +27 -5
- package/templates/static/lib/runtime/hydrate.d.ts +17 -0
- package/templates/static/lib/runtime/hydrate.js +48 -21
- package/templates/static/lib/runtime/island-hydration-client.d.ts +5 -2
- package/templates/static/lib/runtime/island-hydration-client.js +122 -91
- package/templates/static/lib/runtime/islands.d.ts +82 -27
- package/templates/static/lib/runtime/islands.js +92 -54
- package/templates/static/lib/runtime/render.d.ts +36 -9
- package/templates/static/lib/runtime/render.js +208 -130
- package/templates/static/lib/server/api-routes.d.ts +96 -28
- package/templates/static/lib/server/api-routes.js +214 -156
- package/templates/static/lib/server/api.d.ts +3 -3
- package/templates/static/lib/server/api.js +93 -92
- package/templates/static/lib/server/app.d.ts +37 -3
- package/templates/static/lib/server/app.js +328 -254
- package/templates/static/lib/server/runtimeServe.d.ts +56 -0
- package/templates/static/lib/server/runtimeServe.js +130 -69
- package/templates/static/lib/server/ssr.d.ts +161 -0
- package/templates/static/lib/server/ssr.js +219 -0
- package/templates/static/lib/shared/log.d.ts +47 -3
- package/templates/static/lib/shared/log.js +60 -10
- package/templates/static/package.json +5 -1
- package/templates/static/server.js +4 -6
- package/templates/static/site/(home).tsx +30 -12
- package/templates/static/site/styles/global.scss +89 -78
- package/templates/static/tsconfig.json +39 -39
- package/templates/static/node_modules/.bin/esbuild +0 -16
- package/templates/static/node_modules/.bin/esbuild.cmd +0 -17
- package/templates/static/node_modules/.bin/esbuild.ps1 +0 -28
- package/templates/static/node_modules/.bin/tsc +0 -16
- package/templates/static/node_modules/.bin/tsc.cmd +0 -17
- package/templates/static/node_modules/.bin/tsc.ps1 +0 -28
- package/templates/static/node_modules/.bin/tsserver +0 -16
- package/templates/static/node_modules/.bin/tsserver.cmd +0 -17
- package/templates/static/node_modules/.bin/tsserver.ps1 +0 -28
- package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_templates_static_site_(home).tsx.mjs +0 -14
- package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_yo_site_(home).tsx.mjs +0 -11
- package/templates/static/node_modules/.package-lock.json +0 -585
- package/templates/static/node_modules/@esbuild/win32-x64/README.md +0 -3
- package/templates/static/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
- package/templates/static/node_modules/@esbuild/win32-x64/package.json +0 -20
- package/templates/static/node_modules/@jenjs/master/README.md +0 -24
- package/templates/static/node_modules/@jenjs/master/index.js +0 -3655
- package/templates/static/node_modules/@jenjs/master/package.json +0 -36
- package/templates/static/node_modules/@polka/url/build.js +0 -49
- package/templates/static/node_modules/@polka/url/build.mjs +0 -47
- package/templates/static/node_modules/@polka/url/index.d.ts +0 -11
- package/templates/static/node_modules/@polka/url/package.json +0 -30
- package/templates/static/node_modules/@polka/url/readme.md +0 -68
- package/templates/static/node_modules/@types/node/LICENSE +0 -21
- package/templates/static/node_modules/@types/node/README.md +0 -15
- package/templates/static/node_modules/@types/node/assert/strict.d.ts +0 -111
- package/templates/static/node_modules/@types/node/assert.d.ts +0 -1078
- package/templates/static/node_modules/@types/node/async_hooks.d.ts +0 -603
- package/templates/static/node_modules/@types/node/buffer.buffer.d.ts +0 -472
- package/templates/static/node_modules/@types/node/buffer.d.ts +0 -1934
- package/templates/static/node_modules/@types/node/child_process.d.ts +0 -1476
- package/templates/static/node_modules/@types/node/cluster.d.ts +0 -578
- package/templates/static/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
- package/templates/static/node_modules/@types/node/compatibility/index.d.ts +0 -9
- package/templates/static/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
- package/templates/static/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
- package/templates/static/node_modules/@types/node/console.d.ts +0 -452
- package/templates/static/node_modules/@types/node/constants.d.ts +0 -21
- package/templates/static/node_modules/@types/node/crypto.d.ts +0 -4545
- package/templates/static/node_modules/@types/node/dgram.d.ts +0 -600
- package/templates/static/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
- package/templates/static/node_modules/@types/node/dns/promises.d.ts +0 -503
- package/templates/static/node_modules/@types/node/dns.d.ts +0 -923
- package/templates/static/node_modules/@types/node/domain.d.ts +0 -170
- package/templates/static/node_modules/@types/node/events.d.ts +0 -976
- package/templates/static/node_modules/@types/node/fs/promises.d.ts +0 -1295
- package/templates/static/node_modules/@types/node/fs.d.ts +0 -4461
- package/templates/static/node_modules/@types/node/globals.d.ts +0 -172
- package/templates/static/node_modules/@types/node/globals.typedarray.d.ts +0 -38
- package/templates/static/node_modules/@types/node/http.d.ts +0 -2089
- package/templates/static/node_modules/@types/node/http2.d.ts +0 -2644
- package/templates/static/node_modules/@types/node/https.d.ts +0 -579
- package/templates/static/node_modules/@types/node/index.d.ts +0 -97
- package/templates/static/node_modules/@types/node/inspector.d.ts +0 -253
- package/templates/static/node_modules/@types/node/inspector.generated.d.ts +0 -4052
- package/templates/static/node_modules/@types/node/module.d.ts +0 -891
- package/templates/static/node_modules/@types/node/net.d.ts +0 -1057
- package/templates/static/node_modules/@types/node/os.d.ts +0 -506
- package/templates/static/node_modules/@types/node/package.json +0 -145
- package/templates/static/node_modules/@types/node/path.d.ts +0 -200
- package/templates/static/node_modules/@types/node/perf_hooks.d.ts +0 -968
- package/templates/static/node_modules/@types/node/process.d.ts +0 -2089
- package/templates/static/node_modules/@types/node/punycode.d.ts +0 -117
- package/templates/static/node_modules/@types/node/querystring.d.ts +0 -152
- package/templates/static/node_modules/@types/node/readline/promises.d.ts +0 -161
- package/templates/static/node_modules/@types/node/readline.d.ts +0 -594
- package/templates/static/node_modules/@types/node/repl.d.ts +0 -428
- package/templates/static/node_modules/@types/node/sea.d.ts +0 -153
- package/templates/static/node_modules/@types/node/sqlite.d.ts +0 -721
- package/templates/static/node_modules/@types/node/stream/consumers.d.ts +0 -38
- package/templates/static/node_modules/@types/node/stream/promises.d.ts +0 -90
- package/templates/static/node_modules/@types/node/stream/web.d.ts +0 -622
- package/templates/static/node_modules/@types/node/stream.d.ts +0 -1664
- package/templates/static/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/templates/static/node_modules/@types/node/test.d.ts +0 -2163
- package/templates/static/node_modules/@types/node/timers/promises.d.ts +0 -108
- package/templates/static/node_modules/@types/node/timers.d.ts +0 -287
- package/templates/static/node_modules/@types/node/tls.d.ts +0 -1319
- package/templates/static/node_modules/@types/node/trace_events.d.ts +0 -197
- package/templates/static/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
- package/templates/static/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
- package/templates/static/node_modules/@types/node/ts5.6/index.d.ts +0 -97
- package/templates/static/node_modules/@types/node/tty.d.ts +0 -208
- package/templates/static/node_modules/@types/node/url.d.ts +0 -984
- package/templates/static/node_modules/@types/node/util.d.ts +0 -2606
- package/templates/static/node_modules/@types/node/v8.d.ts +0 -920
- package/templates/static/node_modules/@types/node/vm.d.ts +0 -1000
- package/templates/static/node_modules/@types/node/wasi.d.ts +0 -181
- package/templates/static/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
- package/templates/static/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
- package/templates/static/node_modules/@types/node/web-globals/events.d.ts +0 -97
- package/templates/static/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
- package/templates/static/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
- package/templates/static/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/templates/static/node_modules/@types/node/worker_threads.d.ts +0 -784
- package/templates/static/node_modules/@types/node/zlib.d.ts +0 -683
- package/templates/static/node_modules/esbuild/LICENSE.md +0 -21
- package/templates/static/node_modules/esbuild/README.md +0 -3
- package/templates/static/node_modules/esbuild/bin/esbuild +0 -223
- package/templates/static/node_modules/esbuild/install.js +0 -289
- package/templates/static/node_modules/esbuild/lib/main.d.ts +0 -716
- package/templates/static/node_modules/esbuild/lib/main.js +0 -2242
- package/templates/static/node_modules/esbuild/package.json +0 -49
- package/templates/static/node_modules/mrmime/index.d.ts +0 -2
- package/templates/static/node_modules/mrmime/index.js +0 -449
- package/templates/static/node_modules/mrmime/index.mjs +0 -448
- package/templates/static/node_modules/mrmime/license +0 -21
- package/templates/static/node_modules/mrmime/package.json +0 -44
- package/templates/static/node_modules/mrmime/readme.md +0 -130
- package/templates/static/node_modules/preact/LICENSE +0 -21
- package/templates/static/node_modules/preact/README.md +0 -185
- package/templates/static/node_modules/preact/compat/client.d.ts +0 -13
- package/templates/static/node_modules/preact/compat/client.js +0 -21
- package/templates/static/node_modules/preact/compat/client.mjs +0 -24
- package/templates/static/node_modules/preact/compat/dist/compat.js +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.js.map +0 -1
- package/templates/static/node_modules/preact/compat/dist/compat.mjs +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.module.js +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.module.js.map +0 -1
- package/templates/static/node_modules/preact/compat/dist/compat.umd.js +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.umd.js.map +0 -1
- package/templates/static/node_modules/preact/compat/jsx-dev-runtime.js +0 -3
- package/templates/static/node_modules/preact/compat/jsx-dev-runtime.mjs +0 -3
- package/templates/static/node_modules/preact/compat/jsx-runtime.js +0 -3
- package/templates/static/node_modules/preact/compat/jsx-runtime.mjs +0 -3
- package/templates/static/node_modules/preact/compat/package.json +0 -55
- package/templates/static/node_modules/preact/compat/scheduler.js +0 -15
- package/templates/static/node_modules/preact/compat/scheduler.mjs +0 -23
- package/templates/static/node_modules/preact/compat/server.browser.js +0 -11
- package/templates/static/node_modules/preact/compat/server.js +0 -36
- package/templates/static/node_modules/preact/compat/server.mjs +0 -17
- package/templates/static/node_modules/preact/compat/src/Children.js +0 -21
- package/templates/static/node_modules/preact/compat/src/PureComponent.js +0 -16
- package/templates/static/node_modules/preact/compat/src/forwardRef.js +0 -44
- package/templates/static/node_modules/preact/compat/src/hooks.js +0 -70
- package/templates/static/node_modules/preact/compat/src/index.d.ts +0 -351
- package/templates/static/node_modules/preact/compat/src/index.js +0 -238
- package/templates/static/node_modules/preact/compat/src/internal.d.ts +0 -48
- package/templates/static/node_modules/preact/compat/src/memo.js +0 -35
- package/templates/static/node_modules/preact/compat/src/portals.js +0 -78
- package/templates/static/node_modules/preact/compat/src/render.js +0 -313
- package/templates/static/node_modules/preact/compat/src/suspense-list.d.ts +0 -16
- package/templates/static/node_modules/preact/compat/src/suspense-list.js +0 -127
- package/templates/static/node_modules/preact/compat/src/suspense.d.ts +0 -19
- package/templates/static/node_modules/preact/compat/src/suspense.js +0 -291
- package/templates/static/node_modules/preact/compat/src/util.js +0 -33
- package/templates/static/node_modules/preact/compat/test-utils.js +0 -1
- package/templates/static/node_modules/preact/compat/test-utils.mjs +0 -1
- package/templates/static/node_modules/preact/debug/dist/debug.js +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.js.map +0 -1
- package/templates/static/node_modules/preact/debug/dist/debug.mjs +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.module.js +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.module.js.map +0 -1
- package/templates/static/node_modules/preact/debug/dist/debug.umd.js +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.umd.js.map +0 -1
- package/templates/static/node_modules/preact/debug/package.json +0 -27
- package/templates/static/node_modules/preact/debug/src/check-props.js +0 -54
- package/templates/static/node_modules/preact/debug/src/component-stack.js +0 -146
- package/templates/static/node_modules/preact/debug/src/constants.js +0 -3
- package/templates/static/node_modules/preact/debug/src/debug.js +0 -593
- package/templates/static/node_modules/preact/debug/src/index.d.ts +0 -23
- package/templates/static/node_modules/preact/debug/src/index.js +0 -12
- package/templates/static/node_modules/preact/debug/src/internal.d.ts +0 -82
- package/templates/static/node_modules/preact/debug/src/util.js +0 -15
- package/templates/static/node_modules/preact/devtools/dist/devtools.js +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.js.map +0 -1
- package/templates/static/node_modules/preact/devtools/dist/devtools.mjs +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.module.js +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.module.js.map +0 -1
- package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js.map +0 -1
- package/templates/static/node_modules/preact/devtools/package.json +0 -25
- package/templates/static/node_modules/preact/devtools/src/devtools.js +0 -21
- package/templates/static/node_modules/preact/devtools/src/index.d.ts +0 -8
- package/templates/static/node_modules/preact/devtools/src/index.js +0 -15
- package/templates/static/node_modules/preact/dist/preact.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.min.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.min.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.min.module.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.min.module.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.min.umd.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.min.umd.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.mjs +0 -2
- package/templates/static/node_modules/preact/dist/preact.module.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.module.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.umd.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.umd.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/dist/hooks.js +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/dist/hooks.mjs +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.module.js +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.module.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/package.json +0 -35
- package/templates/static/node_modules/preact/hooks/src/index.d.ts +0 -145
- package/templates/static/node_modules/preact/hooks/src/index.js +0 -555
- package/templates/static/node_modules/preact/hooks/src/internal.d.ts +0 -103
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js.map +0 -1
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -1
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +0 -1
- package/templates/static/node_modules/preact/jsx-runtime/package.json +0 -28
- package/templates/static/node_modules/preact/jsx-runtime/src/index.d.ts +0 -62
- package/templates/static/node_modules/preact/jsx-runtime/src/index.js +0 -206
- package/templates/static/node_modules/preact/jsx-runtime/src/utils.js +0 -36
- package/templates/static/node_modules/preact/package.json +0 -258
- package/templates/static/node_modules/preact/src/cjs.js +0 -3
- package/templates/static/node_modules/preact/src/clone-element.js +0 -48
- package/templates/static/node_modules/preact/src/component.js +0 -249
- package/templates/static/node_modules/preact/src/constants.js +0 -22
- package/templates/static/node_modules/preact/src/create-context.js +0 -60
- package/templates/static/node_modules/preact/src/create-element.js +0 -97
- package/templates/static/node_modules/preact/src/diff/catch-error.js +0 -46
- package/templates/static/node_modules/preact/src/diff/children.js +0 -451
- package/templates/static/node_modules/preact/src/diff/index.js +0 -684
- package/templates/static/node_modules/preact/src/diff/props.js +0 -173
- package/templates/static/node_modules/preact/src/dom.d.ts +0 -2476
- package/templates/static/node_modules/preact/src/index-5.d.ts +0 -399
- package/templates/static/node_modules/preact/src/index.d.ts +0 -402
- package/templates/static/node_modules/preact/src/index.js +0 -13
- package/templates/static/node_modules/preact/src/internal.d.ts +0 -190
- package/templates/static/node_modules/preact/src/jsx.d.ts +0 -2878
- package/templates/static/node_modules/preact/src/options.js +0 -16
- package/templates/static/node_modules/preact/src/render.js +0 -78
- package/templates/static/node_modules/preact/src/util.js +0 -28
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.js +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.js.map +0 -1
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.mjs +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js.map +0 -1
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js.map +0 -1
- package/templates/static/node_modules/preact/test-utils/package.json +0 -28
- package/templates/static/node_modules/preact/test-utils/src/index.d.ts +0 -3
- package/templates/static/node_modules/preact/test-utils/src/index.js +0 -129
- package/templates/static/node_modules/preact-render-to-string/LICENSE +0 -21
- package/templates/static/node_modules/preact-render-to-string/README.md +0 -149
- package/templates/static/node_modules/preact-render-to-string/dist/commonjs.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.d.ts +0 -17
- package/templates/static/node_modules/preact-render-to-string/dist/index.js +0 -6
- package/templates/static/node_modules/preact-render-to-string/dist/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/index.mjs +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.module.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/internal.d.ts +0 -35
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/commonjs.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js +0 -4
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.mjs +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/jsx.d.ts +0 -24
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.mjs +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js +0 -884
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.mjs +0 -884
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js +0 -884
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js +0 -888
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream-node.d.ts +0 -19
- package/templates/static/node_modules/preact-render-to-string/dist/stream.d.ts +0 -10
- package/templates/static/node_modules/preact-render-to-string/jsx.d.ts +0 -24
- package/templates/static/node_modules/preact-render-to-string/jsx.js +0 -1
- package/templates/static/node_modules/preact-render-to-string/package.json +0 -152
- package/templates/static/node_modules/preact-render-to-string/src/index.d.ts +0 -17
- package/templates/static/node_modules/preact-render-to-string/src/index.js +0 -764
- package/templates/static/node_modules/preact-render-to-string/src/internal.d.ts +0 -35
- package/templates/static/node_modules/preact-render-to-string/src/jsx.d.ts +0 -24
- package/templates/static/node_modules/preact-render-to-string/src/jsx.js +0 -102
- package/templates/static/node_modules/preact-render-to-string/src/lib/chunked.js +0 -97
- package/templates/static/node_modules/preact-render-to-string/src/lib/client.js +0 -62
- package/templates/static/node_modules/preact-render-to-string/src/lib/constants.js +0 -20
- package/templates/static/node_modules/preact-render-to-string/src/lib/polyfills.js +0 -8
- package/templates/static/node_modules/preact-render-to-string/src/lib/util.js +0 -208
- package/templates/static/node_modules/preact-render-to-string/src/pretty.js +0 -491
- package/templates/static/node_modules/preact-render-to-string/src/stream-node.d.ts +0 -19
- package/templates/static/node_modules/preact-render-to-string/src/stream-node.js +0 -84
- package/templates/static/node_modules/preact-render-to-string/src/stream.d.ts +0 -10
- package/templates/static/node_modules/preact-render-to-string/src/stream.js +0 -43
- package/templates/static/node_modules/preact-render-to-string/typings.json +0 -5
- package/templates/static/node_modules/sirv/build.js +0 -197
- package/templates/static/node_modules/sirv/build.mjs +0 -197
- package/templates/static/node_modules/sirv/index.d.mts +0 -29
- package/templates/static/node_modules/sirv/index.d.ts +0 -33
- package/templates/static/node_modules/sirv/package.json +0 -40
- package/templates/static/node_modules/sirv/readme.md +0 -238
- package/templates/static/node_modules/totalist/dist/index.js +0 -24
- package/templates/static/node_modules/totalist/dist/index.mjs +0 -22
- package/templates/static/node_modules/totalist/index.d.ts +0 -3
- package/templates/static/node_modules/totalist/license +0 -21
- package/templates/static/node_modules/totalist/package.json +0 -55
- package/templates/static/node_modules/totalist/readme.md +0 -109
- package/templates/static/node_modules/totalist/sync/index.d.ts +0 -3
- package/templates/static/node_modules/totalist/sync/index.js +0 -17
- package/templates/static/node_modules/totalist/sync/index.mjs +0 -15
- package/templates/static/node_modules/typescript/bin/tsc +0 -2
- package/templates/static/node_modules/typescript/bin/tsserver +0 -2
- package/templates/static/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/lib.d.ts +0 -22
- package/templates/static/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
- package/templates/static/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
- package/templates/static/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
- package/templates/static/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
- package/templates/static/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
- package/templates/static/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
- package/templates/static/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
- package/templates/static/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
- package/templates/static/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
- package/templates/static/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
- package/templates/static/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
- package/templates/static/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
- package/templates/static/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
- package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
- package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
- package/templates/static/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
- package/templates/static/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
- package/templates/static/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
- package/templates/static/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
- package/templates/static/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
- package/templates/static/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
- package/templates/static/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
- package/templates/static/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
- package/templates/static/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
- package/templates/static/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
- package/templates/static/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
- package/templates/static/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
- package/templates/static/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
- package/templates/static/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
- package/templates/static/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
- package/templates/static/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
- package/templates/static/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
- package/templates/static/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
- package/templates/static/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
- package/templates/static/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
- package/templates/static/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
- package/templates/static/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
- package/templates/static/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
- package/templates/static/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
- package/templates/static/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
- package/templates/static/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
- package/templates/static/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
- package/templates/static/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
- package/templates/static/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
- package/templates/static/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
- package/templates/static/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
- package/templates/static/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
- package/templates/static/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
- package/templates/static/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
- package/templates/static/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
- package/templates/static/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
- package/templates/static/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
- package/templates/static/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
- package/templates/static/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
- package/templates/static/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
- package/templates/static/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
- package/templates/static/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
- package/templates/static/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
- package/templates/static/node_modules/typescript/lib/lib.es6.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
- package/templates/static/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
- package/templates/static/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
- package/templates/static/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
- package/templates/static/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
- package/templates/static/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
- package/templates/static/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
- package/templates/static/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
- package/templates/static/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
- package/templates/static/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
- package/templates/static/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
- package/templates/static/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/tsc.js +0 -8
- package/templates/static/node_modules/typescript/lib/tsserver.js +0 -8
- package/templates/static/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
- package/templates/static/node_modules/typescript/lib/tsserverlibrary.js +0 -21
- package/templates/static/node_modules/typescript/lib/typescript.d.ts +0 -11437
|
@@ -1,46 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for the JDB (Jen Database) engine.
|
|
3
|
+
* Specifies the storage location and memory mode for data persistence.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* const config: JDBConfig = {
|
|
7
|
+
* root: './data/jdb',
|
|
8
|
+
* inMemory: false
|
|
9
|
+
* };
|
|
10
|
+
*/
|
|
1
11
|
export type JDBConfig = {
|
|
2
|
-
|
|
3
|
-
|
|
12
|
+
/** Absolute or relative path to directory where .jdb collection files are stored. */
|
|
13
|
+
root: string;
|
|
14
|
+
/** If true, data is stored only in memory; files are not written to disk. Useful for testing. */
|
|
15
|
+
inMemory?: boolean;
|
|
4
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Base document type for all collections.
|
|
19
|
+
* Every document in a JDB collection must include system metadata fields.
|
|
20
|
+
* These fields are automatically managed and should not be manually modified.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* interface User extends Document {
|
|
24
|
+
* name: string;
|
|
25
|
+
* email: string;
|
|
26
|
+
* }
|
|
27
|
+
*/
|
|
5
28
|
export type Document = Record<string, any> & {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
29
|
+
/** Unique identifier automatically generated as a UUID. */
|
|
30
|
+
_id: string;
|
|
31
|
+
/** Timestamp (milliseconds) when the document was created. Set once, never changes. */
|
|
32
|
+
_created: number;
|
|
33
|
+
/** Timestamp (milliseconds) when the document was last updated. Updated on every modification. */
|
|
34
|
+
_updated: number;
|
|
9
35
|
};
|
|
10
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Filter operators for querying documents.
|
|
38
|
+
* Support MongoDB-like query syntax for flexible filtering.
|
|
39
|
+
*/
|
|
40
|
+
export type FilterOperator =
|
|
41
|
+
| "$eq" /** Equal to the specified value. */
|
|
42
|
+
| "$ne" /** Not equal to the specified value. */
|
|
43
|
+
| "$gt" /** Greater than the specified value. */
|
|
44
|
+
| "$gte" /** Greater than or equal to the specified value. */
|
|
45
|
+
| "$lt" /** Less than the specified value. */
|
|
46
|
+
| "$lte" /** Less than or equal to the specified value. */
|
|
47
|
+
| "$in" /** Value is in the specified array. */
|
|
48
|
+
| "$nin" /** Value is not in the specified array. */
|
|
49
|
+
| "$regex"; /** Value matches the specified regular expression pattern. */
|
|
50
|
+
/**
|
|
51
|
+
* Filter object for querying documents.
|
|
52
|
+
* Supports both simple equality checks and complex operator-based conditions.
|
|
53
|
+
* Supports logical combinations via $and and $or.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // Simple equality
|
|
57
|
+
* const filter1: Filter<User> = { name: 'John' };
|
|
58
|
+
*
|
|
59
|
+
* // Operator-based conditions
|
|
60
|
+
* const filter2: Filter<User> = { age: { $gte: 18 } };
|
|
61
|
+
*
|
|
62
|
+
* // Logical operators
|
|
63
|
+
* const filter3: Filter<User> = {
|
|
64
|
+
* $or: [{ name: 'John' }, { name: 'Jane' }]
|
|
65
|
+
* };
|
|
66
|
+
*/
|
|
11
67
|
export type Filter<T = any> = {
|
|
12
|
-
|
|
68
|
+
[K in keyof T]?:
|
|
69
|
+
| T[K]
|
|
70
|
+
| {
|
|
13
71
|
[op in FilterOperator]?: any;
|
|
14
|
-
|
|
72
|
+
};
|
|
15
73
|
} & {
|
|
16
|
-
|
|
17
|
-
|
|
74
|
+
/** Logical OR: document matches if it matches any filter in the array. */
|
|
75
|
+
$or?: Filter<T>[];
|
|
76
|
+
/** Logical AND: document matches if it matches all filters in the array. */
|
|
77
|
+
$and?: Filter<T>[];
|
|
18
78
|
};
|
|
19
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Update operators for modifying documents.
|
|
81
|
+
* Enable atomic field modifications without replacing the entire document.
|
|
82
|
+
*/
|
|
83
|
+
export type UpdateOperator =
|
|
84
|
+
| "$set" /** Set field value(s). Overwrites existing values. */
|
|
85
|
+
| "$unset" /** Remove field(s) from the document. */
|
|
86
|
+
| "$inc" /** Increment numeric field(s) by the specified amount. */
|
|
87
|
+
| "$push" /** Append value(s) to an array field. Creates array if it doesn't exist. */
|
|
88
|
+
| "$pull"; /** Remove all occurrences of value(s) from an array field. */
|
|
89
|
+
/**
|
|
90
|
+
* Update object for modifying documents.
|
|
91
|
+
* Specifies which fields to change and how, using update operators.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* // Set operation
|
|
95
|
+
* const update1: Update<User> = { $set: { name: 'Jane', age: 30 } };
|
|
96
|
+
*
|
|
97
|
+
* // Multiple operators
|
|
98
|
+
* const update2: Update<User> = {
|
|
99
|
+
* $set: { status: 'active' },
|
|
100
|
+
* $inc: { loginCount: 1 }
|
|
101
|
+
* };
|
|
102
|
+
*/
|
|
20
103
|
export type Update<T = any> = {
|
|
21
|
-
|
|
104
|
+
[op in UpdateOperator]?: Partial<T> | Record<string, any>;
|
|
22
105
|
};
|
|
106
|
+
/**
|
|
107
|
+
* Options for controlling query behavior.
|
|
108
|
+
* Supports sorting, limiting, and skipping results for pagination and ordering.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* const options: QueryOptions = {
|
|
112
|
+
* sort: { createdAt: -1 },
|
|
113
|
+
* skip: 10,
|
|
114
|
+
* limit: 20
|
|
115
|
+
* };
|
|
116
|
+
*/
|
|
23
117
|
export type QueryOptions = {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
118
|
+
/** Maximum number of documents to return. */
|
|
119
|
+
limit?: number;
|
|
120
|
+
/** Number of documents to skip before returning results. Used for pagination. */
|
|
121
|
+
skip?: number;
|
|
122
|
+
/** Sort specification. Value 1 for ascending, -1 for descending. Multiple fields supported. */
|
|
123
|
+
sort?: Record<string, 1 | -1>;
|
|
27
124
|
};
|
|
125
|
+
/**
|
|
126
|
+
* Abstract interface for a database engine.
|
|
127
|
+
* Defines the contract that database implementations must follow.
|
|
128
|
+
* Handles connection lifecycle and provides access to collections.
|
|
129
|
+
*/
|
|
28
130
|
export interface IDatabaseEngine {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
131
|
+
/** Establish connection to the database and perform initialization. */
|
|
132
|
+
connect(): Promise<void>;
|
|
133
|
+
/** Close connection and clean up resources. */
|
|
134
|
+
disconnect(): Promise<void>;
|
|
135
|
+
/** Get or create a collection by name. Creates a new instance if collection doesn't exist. */
|
|
136
|
+
collection(name: string): ICollection;
|
|
32
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Collection interface for CRUD operations on documents.
|
|
140
|
+
* Provides MongoDB-like methods for inserting, querying, updating, and deleting documents.
|
|
141
|
+
* All operations are async to support file I/O and potential distributed backends.
|
|
142
|
+
*
|
|
143
|
+
* @template T Document type, must extend Document base type with _id, _created, _updated.
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* interface BlogPost extends Document {
|
|
147
|
+
* title: string;
|
|
148
|
+
* content: string;
|
|
149
|
+
* published: boolean;
|
|
150
|
+
* }
|
|
151
|
+
*
|
|
152
|
+
* const posts: ICollection<BlogPost> = db.collection('posts');
|
|
153
|
+
* const post = await posts.insert({ title: 'Hello', content: '...' });
|
|
154
|
+
* const found = await posts.findOne({ _id: post._id });
|
|
155
|
+
*/
|
|
33
156
|
export interface ICollection<T extends Document = Document> {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
157
|
+
/** Name of the collection. */
|
|
158
|
+
name: string;
|
|
159
|
+
/**
|
|
160
|
+
* Insert a single document into the collection.
|
|
161
|
+
* Automatically generates _id, _created, and _updated if not provided.
|
|
162
|
+
*
|
|
163
|
+
* @param doc The document to insert. _id, _created, _updated are optional.
|
|
164
|
+
* @returns The inserted document with all system fields populated.
|
|
165
|
+
*/
|
|
166
|
+
insert(
|
|
167
|
+
doc: Omit<T, "_id" | "_created" | "_updated"> & {
|
|
168
|
+
_id?: string;
|
|
169
|
+
},
|
|
170
|
+
): Promise<T>;
|
|
171
|
+
/**
|
|
172
|
+
* Insert multiple documents into the collection atomically.
|
|
173
|
+
* All documents are assigned the same _created timestamp.
|
|
174
|
+
*
|
|
175
|
+
* @param docs Array of documents to insert.
|
|
176
|
+
* @returns Array of inserted documents with all system fields populated.
|
|
177
|
+
*/
|
|
178
|
+
insertMany(
|
|
179
|
+
docs: (Omit<T, "_id" | "_created" | "_updated"> & {
|
|
180
|
+
_id?: string;
|
|
181
|
+
})[],
|
|
182
|
+
): Promise<T[]>;
|
|
183
|
+
/**
|
|
184
|
+
* Find the first document matching the filter.
|
|
185
|
+
* Returns null if no match found.
|
|
186
|
+
*
|
|
187
|
+
* @param filter Query filter to match documents.
|
|
188
|
+
* @returns The first matching document, or null if none found.
|
|
189
|
+
*/
|
|
190
|
+
findOne(filter: Filter<T>): Promise<T | null>;
|
|
191
|
+
/**
|
|
192
|
+
* Find all documents matching the filter with optional sorting and pagination.
|
|
193
|
+
*
|
|
194
|
+
* @param filter Query filter to match documents.
|
|
195
|
+
* @param options Optional sorting, limiting, and pagination options.
|
|
196
|
+
* @returns Array of matching documents (empty array if no matches).
|
|
197
|
+
*/
|
|
198
|
+
find(filter: Filter<T>, options?: QueryOptions): Promise<T[]>;
|
|
199
|
+
/**
|
|
200
|
+
* Update document(s) matching the filter.
|
|
201
|
+
* Updates _updated timestamp automatically.
|
|
202
|
+
*
|
|
203
|
+
* @param filter Query filter to select documents to update.
|
|
204
|
+
* @param update Update operators and values to apply.
|
|
205
|
+
* @param multi If false (default), updates only first match. If true, updates all matches.
|
|
206
|
+
* @returns Count of documents updated.
|
|
207
|
+
*/
|
|
208
|
+
update(
|
|
209
|
+
filter: Filter<T>,
|
|
210
|
+
update: Update<T>,
|
|
211
|
+
multi?: boolean,
|
|
212
|
+
): Promise<number>;
|
|
213
|
+
/**
|
|
214
|
+
* Delete document(s) matching the filter.
|
|
215
|
+
*
|
|
216
|
+
* @param filter Query filter to select documents to delete.
|
|
217
|
+
* @param multi If false (default), deletes only first match. If true, deletes all matches.
|
|
218
|
+
* @returns Count of documents deleted.
|
|
219
|
+
*/
|
|
220
|
+
delete(filter: Filter<T>, multi?: boolean): Promise<number>;
|
|
221
|
+
/**
|
|
222
|
+
* Count documents matching the filter.
|
|
223
|
+
*
|
|
224
|
+
* @param filter Query filter to match documents.
|
|
225
|
+
* @returns Number of documents matching the filter.
|
|
226
|
+
*/
|
|
227
|
+
count(filter: Filter<T>): Promise<number>;
|
|
46
228
|
}
|
|
@@ -1,6 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure a directory exists, creating it recursively if necessary.
|
|
3
|
+
* Idempotent: does not throw if the directory already exists.
|
|
4
|
+
*
|
|
5
|
+
* @param dir Directory path to ensure exists.
|
|
6
|
+
* @throws Error if directory creation fails.
|
|
7
|
+
*/
|
|
1
8
|
export declare function ensureDir(dir: string): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Read and parse a JSON file from disk.
|
|
11
|
+
* Returns null if the file does not exist (ENOENT).
|
|
12
|
+
* Other errors (invalid JSON, permission denied, etc.) are re-thrown.
|
|
13
|
+
*
|
|
14
|
+
* @template T The expected JSON structure type.
|
|
15
|
+
* @param file Path to the JSON file to read.
|
|
16
|
+
* @returns Parsed JSON data, or null if file does not exist.
|
|
17
|
+
* @throws Error if the file exists but cannot be read or parsed.
|
|
18
|
+
*/
|
|
2
19
|
export declare function readJSON<T>(file: string): Promise<T | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Write data as JSON to a file atomically using a temporary file.
|
|
22
|
+
* Atomic writes prevent corruption if the process crashes during writing.
|
|
23
|
+
* The temporary file is renamed to the target file only after writing completes successfully.
|
|
24
|
+
*
|
|
25
|
+
* @param file Path to the target file (will be created or overwritten).
|
|
26
|
+
* @param data Object to serialize as JSON with pretty-printing (2-space indent).
|
|
27
|
+
* @throws Error if writing or renaming fails.
|
|
28
|
+
*/
|
|
3
29
|
export declare function writeJSON(file: string, data: any): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Generate a unique identifier for a new document.
|
|
32
|
+
* Uses cryptographically secure UUID v4 generation.
|
|
33
|
+
*
|
|
34
|
+
* @returns A UUID string suitable for use as a document _id.
|
|
35
|
+
*/
|
|
4
36
|
export declare function generateId(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Test whether a document matches a filter query.
|
|
39
|
+
* Supports MongoDB-like query syntax including operators ($eq, $ne, $gt, etc.) and logical operators ($or, $and).
|
|
40
|
+
* Processes each field condition and returns false if any condition fails (AND semantics).
|
|
41
|
+
* Logical operators $or and $and are processed separately with their respective semantics.
|
|
42
|
+
*
|
|
43
|
+
* @param doc The document to test.
|
|
44
|
+
* @param filter The filter query to apply.
|
|
45
|
+
* @returns True if the document matches all filter conditions, false otherwise.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* matchFilter({ name: 'John', age: 30 }, { name: 'John' }) // true
|
|
49
|
+
* matchFilter({ age: 25 }, { age: { $gte: 18 } }) // true
|
|
50
|
+
* matchFilter({ name: 'Jane' }, { $or: [{ name: 'John' }, { name: 'Jane' }] }) // true
|
|
51
|
+
*/
|
|
5
52
|
export declare function matchFilter(doc: any, filter: any): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Apply update operators to a document, modifying it in place.
|
|
55
|
+
* Automatically updates the _updated timestamp to the current time.
|
|
56
|
+
* Supports $set, $unset, $inc, $push, and $pull operators.
|
|
57
|
+
*
|
|
58
|
+
* @param doc The document to update (modified in place).
|
|
59
|
+
* @param update Update specification with operators.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* const doc = { name: 'John', age: 30, tags: ['js'] };
|
|
63
|
+
* applyUpdate(doc, { $set: { name: 'Jane' }, $inc: { age: 1 }, $push: { tags: 'ts' } });
|
|
64
|
+
* // doc is now { name: 'Jane', age: 31, tags: ['js', 'ts'], _updated: <current-timestamp> }
|
|
65
|
+
*/
|
|
6
66
|
export declare function applyUpdate(doc: any, update: any): void;
|
|
@@ -17,125 +17,177 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import fs from "fs/promises";
|
|
19
19
|
import crypto from "crypto";
|
|
20
|
+
/**
|
|
21
|
+
* Ensure a directory exists, creating it recursively if necessary.
|
|
22
|
+
* Idempotent: does not throw if the directory already exists.
|
|
23
|
+
*
|
|
24
|
+
* @param dir Directory path to ensure exists.
|
|
25
|
+
* @throws Error if directory creation fails.
|
|
26
|
+
*/
|
|
20
27
|
export async function ensureDir(dir) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
28
|
+
try {
|
|
29
|
+
await fs.access(dir);
|
|
30
|
+
} catch {
|
|
31
|
+
await fs.mkdir(dir, { recursive: true });
|
|
32
|
+
}
|
|
27
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Read and parse a JSON file from disk.
|
|
36
|
+
* Returns null if the file does not exist (ENOENT).
|
|
37
|
+
* Other errors (invalid JSON, permission denied, etc.) are re-thrown.
|
|
38
|
+
*
|
|
39
|
+
* @template T The expected JSON structure type.
|
|
40
|
+
* @param file Path to the JSON file to read.
|
|
41
|
+
* @returns Parsed JSON data, or null if file does not exist.
|
|
42
|
+
* @throws Error if the file exists but cannot be read or parsed.
|
|
43
|
+
*/
|
|
28
44
|
export async function readJSON(file) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
throw e;
|
|
37
|
-
}
|
|
45
|
+
try {
|
|
46
|
+
const data = await fs.readFile(file, "utf-8");
|
|
47
|
+
return JSON.parse(data);
|
|
48
|
+
} catch (e) {
|
|
49
|
+
if (e.code === "ENOENT") return null;
|
|
50
|
+
throw e;
|
|
51
|
+
}
|
|
38
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Write data as JSON to a file atomically using a temporary file.
|
|
55
|
+
* Atomic writes prevent corruption if the process crashes during writing.
|
|
56
|
+
* The temporary file is renamed to the target file only after writing completes successfully.
|
|
57
|
+
*
|
|
58
|
+
* @param file Path to the target file (will be created or overwritten).
|
|
59
|
+
* @param data Object to serialize as JSON with pretty-printing (2-space indent).
|
|
60
|
+
* @throws Error if writing or renaming fails.
|
|
61
|
+
*/
|
|
39
62
|
export async function writeJSON(file, data) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
63
|
+
const tempFile = `${file}.tmp`;
|
|
64
|
+
await fs.writeFile(tempFile, JSON.stringify(data, null, 2));
|
|
65
|
+
await fs.rename(tempFile, file);
|
|
43
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Generate a unique identifier for a new document.
|
|
69
|
+
* Uses cryptographically secure UUID v4 generation.
|
|
70
|
+
*
|
|
71
|
+
* @returns A UUID string suitable for use as a document _id.
|
|
72
|
+
*/
|
|
44
73
|
export function generateId() {
|
|
45
|
-
|
|
74
|
+
return crypto.randomUUID();
|
|
46
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Test whether a document matches a filter query.
|
|
78
|
+
* Supports MongoDB-like query syntax including operators ($eq, $ne, $gt, etc.) and logical operators ($or, $and).
|
|
79
|
+
* Processes each field condition and returns false if any condition fails (AND semantics).
|
|
80
|
+
* Logical operators $or and $and are processed separately with their respective semantics.
|
|
81
|
+
*
|
|
82
|
+
* @param doc The document to test.
|
|
83
|
+
* @param filter The filter query to apply.
|
|
84
|
+
* @returns True if the document matches all filter conditions, false otherwise.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* matchFilter({ name: 'John', age: 30 }, { name: 'John' }) // true
|
|
88
|
+
* matchFilter({ age: 25 }, { age: { $gte: 18 } }) // true
|
|
89
|
+
* matchFilter({ name: 'Jane' }, { $or: [{ name: 'John' }, { name: 'Jane' }] }) // true
|
|
90
|
+
*/
|
|
47
91
|
export function matchFilter(doc, filter) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
case "$nin":
|
|
94
|
-
if (target.includes(val))
|
|
95
|
-
return false;
|
|
96
|
-
break;
|
|
97
|
-
case "$regex":
|
|
98
|
-
if (!new RegExp(target).test(val))
|
|
99
|
-
return false;
|
|
100
|
-
break;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
if (val !== cond)
|
|
106
|
-
return false;
|
|
92
|
+
for (const key in filter) {
|
|
93
|
+
if (key === "$or") {
|
|
94
|
+
// OR: at least one filter must match
|
|
95
|
+
if (!filter.$or.some((f) => matchFilter(doc, f))) return false;
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (key === "$and") {
|
|
99
|
+
// AND: all filters must match
|
|
100
|
+
if (!filter.$and.every((f) => matchFilter(doc, f))) return false;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const val = doc[key];
|
|
104
|
+
const cond = filter[key];
|
|
105
|
+
// If condition is an object (not array), it contains operators
|
|
106
|
+
if (typeof cond === "object" && cond !== null && !Array.isArray(cond)) {
|
|
107
|
+
for (const op in cond) {
|
|
108
|
+
const target = cond[op];
|
|
109
|
+
switch (op) {
|
|
110
|
+
case "$eq":
|
|
111
|
+
if (val !== target) return false;
|
|
112
|
+
break;
|
|
113
|
+
case "$ne":
|
|
114
|
+
if (val === target) return false;
|
|
115
|
+
break;
|
|
116
|
+
case "$gt":
|
|
117
|
+
if (!(val > target)) return false;
|
|
118
|
+
break;
|
|
119
|
+
case "$gte":
|
|
120
|
+
if (!(val >= target)) return false;
|
|
121
|
+
break;
|
|
122
|
+
case "$lt":
|
|
123
|
+
if (!(val < target)) return false;
|
|
124
|
+
break;
|
|
125
|
+
case "$lte":
|
|
126
|
+
if (!(val <= target)) return false;
|
|
127
|
+
break;
|
|
128
|
+
case "$in":
|
|
129
|
+
if (!target.includes(val)) return false;
|
|
130
|
+
break;
|
|
131
|
+
case "$nin":
|
|
132
|
+
if (target.includes(val)) return false;
|
|
133
|
+
break;
|
|
134
|
+
case "$regex":
|
|
135
|
+
if (!new RegExp(target).test(val)) return false;
|
|
136
|
+
break;
|
|
107
137
|
}
|
|
138
|
+
}
|
|
139
|
+
} else {
|
|
140
|
+
// Simple equality check
|
|
141
|
+
if (val !== cond) return false;
|
|
108
142
|
}
|
|
109
|
-
|
|
143
|
+
}
|
|
144
|
+
return true;
|
|
110
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* Apply update operators to a document, modifying it in place.
|
|
148
|
+
* Automatically updates the _updated timestamp to the current time.
|
|
149
|
+
* Supports $set, $unset, $inc, $push, and $pull operators.
|
|
150
|
+
*
|
|
151
|
+
* @param doc The document to update (modified in place).
|
|
152
|
+
* @param update Update specification with operators.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* const doc = { name: 'John', age: 30, tags: ['js'] };
|
|
156
|
+
* applyUpdate(doc, { $set: { name: 'Jane' }, $inc: { age: 1 }, $push: { tags: 'ts' } });
|
|
157
|
+
* // doc is now { name: 'Jane', age: 31, tags: ['js', 'ts'], _updated: <current-timestamp> }
|
|
158
|
+
*/
|
|
111
159
|
export function applyUpdate(doc, update) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
160
|
+
const now = Date.now();
|
|
161
|
+
doc._updated = now;
|
|
162
|
+
for (const op in update) {
|
|
163
|
+
const fields = update[op];
|
|
164
|
+
for (const key in fields) {
|
|
165
|
+
const val = fields[key];
|
|
166
|
+
switch (op) {
|
|
167
|
+
case "$set":
|
|
168
|
+
// Set field to the specified value
|
|
169
|
+
doc[key] = val;
|
|
170
|
+
break;
|
|
171
|
+
case "$unset":
|
|
172
|
+
// Remove the field from the document
|
|
173
|
+
delete doc[key];
|
|
174
|
+
break;
|
|
175
|
+
case "$inc":
|
|
176
|
+
// Increment numeric field by the specified amount
|
|
177
|
+
doc[key] = (doc[key] || 0) + val;
|
|
178
|
+
break;
|
|
179
|
+
case "$push":
|
|
180
|
+
// Append to array (create array if doesn't exist)
|
|
181
|
+
if (!Array.isArray(doc[key])) doc[key] = [];
|
|
182
|
+
doc[key].push(val);
|
|
183
|
+
break;
|
|
184
|
+
case "$pull":
|
|
185
|
+
// Remove all occurrences of value from array
|
|
186
|
+
if (Array.isArray(doc[key])) {
|
|
187
|
+
doc[key] = doc[key].filter((item) => item !== val);
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
140
191
|
}
|
|
192
|
+
}
|
|
141
193
|
}
|
|
@@ -1 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request body parsing middleware.
|
|
3
|
+
* Reads and parses the request body based on Content-Type header.
|
|
4
|
+
* Supports JSON, URL-encoded form data, and plain text.
|
|
5
|
+
*
|
|
6
|
+
* GET and HEAD requests are passed through without parsing since they have no body.
|
|
7
|
+
* Parsed body is available in ctx.body. If parsing fails, the raw string is stored
|
|
8
|
+
* and an error message is attached to ctx.parseError for error handling downstream.
|
|
9
|
+
*
|
|
10
|
+
* @returns Middleware function.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* kernel.use(bodyParser);
|
|
14
|
+
* // ctx.body is now populated with parsed request body
|
|
15
|
+
*/
|
|
1
16
|
export function bodyParser(ctx: any, next: any): Promise<any>;
|