@zyno-io/dk-server-foundation 26.216.430
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/LICENSE +21 -0
- package/README.md +458 -0
- package/dist/devconsole/assets/index-CKF3C3kv.css +1 -0
- package/dist/devconsole/assets/index-CsHdomhM.js +27 -0
- package/dist/devconsole/index.html +13 -0
- package/dist/resources/proto/generated/devconsole/devconsole.d.ts +320 -0
- package/dist/resources/proto/generated/devconsole/devconsole.d.ts.map +1 -0
- package/dist/resources/proto/generated/devconsole/devconsole.js +3751 -0
- package/dist/resources/proto/generated/devconsole/devconsole.js.map +1 -0
- package/dist/src/app/base.d.ts +36 -0
- package/dist/src/app/base.d.ts.map +1 -0
- package/dist/src/app/base.js +240 -0
- package/dist/src/app/base.js.map +1 -0
- package/dist/src/app/config.d.ts +90 -0
- package/dist/src/app/config.d.ts.map +1 -0
- package/dist/src/app/config.js +33 -0
- package/dist/src/app/config.js.map +1 -0
- package/dist/src/app/config.loader.d.ts +14 -0
- package/dist/src/app/config.loader.d.ts.map +1 -0
- package/dist/src/app/config.loader.js +67 -0
- package/dist/src/app/config.loader.js.map +1 -0
- package/dist/src/app/const.d.ts +3 -0
- package/dist/src/app/const.d.ts.map +1 -0
- package/dist/src/app/const.js +6 -0
- package/dist/src/app/const.js.map +1 -0
- package/dist/src/app/dev.d.ts +7 -0
- package/dist/src/app/dev.d.ts.map +1 -0
- package/dist/src/app/dev.js +105 -0
- package/dist/src/app/dev.js.map +1 -0
- package/dist/src/app/index.d.ts +7 -0
- package/dist/src/app/index.d.ts.map +1 -0
- package/dist/src/app/index.js +12 -0
- package/dist/src/app/index.js.map +1 -0
- package/dist/src/app/openapi.d.ts +4 -0
- package/dist/src/app/openapi.d.ts.map +1 -0
- package/dist/src/app/openapi.js +6 -0
- package/dist/src/app/openapi.js.map +1 -0
- package/dist/src/app/resolver.d.ts +11 -0
- package/dist/src/app/resolver.d.ts.map +1 -0
- package/dist/src/app/resolver.js +60 -0
- package/dist/src/app/resolver.js.map +1 -0
- package/dist/src/app/shutdown.d.ts +12 -0
- package/dist/src/app/shutdown.d.ts.map +1 -0
- package/dist/src/app/shutdown.js +63 -0
- package/dist/src/app/shutdown.js.map +1 -0
- package/dist/src/app/state.d.ts +16 -0
- package/dist/src/app/state.d.ts.map +1 -0
- package/dist/src/app/state.js +12 -0
- package/dist/src/app/state.js.map +1 -0
- package/dist/src/auth/index.d.ts +3 -0
- package/dist/src/auth/index.d.ts.map +1 -0
- package/dist/src/auth/index.js +6 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/jwt.d.ts +76 -0
- package/dist/src/auth/jwt.d.ts.map +1 -0
- package/dist/src/auth/jwt.js +218 -0
- package/dist/src/auth/jwt.js.map +1 -0
- package/dist/src/auth/provider.d.ts +15 -0
- package/dist/src/auth/provider.d.ts.map +1 -0
- package/dist/src/auth/provider.js +50 -0
- package/dist/src/auth/provider.js.map +1 -0
- package/dist/src/cli/dksf-dev.d.ts +3 -0
- package/dist/src/cli/dksf-dev.d.ts.map +1 -0
- package/dist/src/cli/dksf-dev.js +408 -0
- package/dist/src/cli/dksf-dev.js.map +1 -0
- package/dist/src/cli/dksf-gen-proto.d.ts +3 -0
- package/dist/src/cli/dksf-gen-proto.d.ts.map +1 -0
- package/dist/src/cli/dksf-gen-proto.js +164 -0
- package/dist/src/cli/dksf-gen-proto.js.map +1 -0
- package/dist/src/cli/dksf-install.d.ts +3 -0
- package/dist/src/cli/dksf-install.d.ts.map +1 -0
- package/dist/src/cli/dksf-install.js +10 -0
- package/dist/src/cli/dksf-install.js.map +1 -0
- package/dist/src/cli/dksf-test.d.ts +3 -0
- package/dist/src/cli/dksf-test.d.ts.map +1 -0
- package/dist/src/cli/dksf-test.js +78 -0
- package/dist/src/cli/dksf-test.js.map +1 -0
- package/dist/src/cli/dksf-update.d.ts +3 -0
- package/dist/src/cli/dksf-update.d.ts.map +1 -0
- package/dist/src/cli/dksf-update.js +86 -0
- package/dist/src/cli/dksf-update.js.map +1 -0
- package/dist/src/database/common.d.ts +84 -0
- package/dist/src/database/common.d.ts.map +1 -0
- package/dist/src/database/common.js +380 -0
- package/dist/src/database/common.js.map +1 -0
- package/dist/src/database/dialect.d.ts +10 -0
- package/dist/src/database/dialect.d.ts.map +1 -0
- package/dist/src/database/dialect.js +56 -0
- package/dist/src/database/dialect.js.map +1 -0
- package/dist/src/database/entity.d.ts +62 -0
- package/dist/src/database/entity.d.ts.map +1 -0
- package/dist/src/database/entity.js +198 -0
- package/dist/src/database/entity.js.map +1 -0
- package/dist/src/database/index.d.ts +8 -0
- package/dist/src/database/index.d.ts.map +1 -0
- package/dist/src/database/index.js +15 -0
- package/dist/src/database/index.js.map +1 -0
- package/dist/src/database/migration/MigrationResetCommand.d.ts +9 -0
- package/dist/src/database/migration/MigrationResetCommand.d.ts.map +1 -0
- package/dist/src/database/migration/MigrationResetCommand.js +75 -0
- package/dist/src/database/migration/MigrationResetCommand.js.map +1 -0
- package/dist/src/database/migration/MigrationRunCommand.d.ts +11 -0
- package/dist/src/database/migration/MigrationRunCommand.d.ts.map +1 -0
- package/dist/src/database/migration/MigrationRunCommand.js +118 -0
- package/dist/src/database/migration/MigrationRunCommand.js.map +1 -0
- package/dist/src/database/migration/characters.d.ts +14 -0
- package/dist/src/database/migration/characters.d.ts.map +1 -0
- package/dist/src/database/migration/characters.js +56 -0
- package/dist/src/database/migration/characters.js.map +1 -0
- package/dist/src/database/migration/create/MigrationCreateCommand.d.ts +11 -0
- package/dist/src/database/migration/create/MigrationCreateCommand.d.ts.map +1 -0
- package/dist/src/database/migration/create/MigrationCreateCommand.js +106 -0
- package/dist/src/database/migration/create/MigrationCreateCommand.js.map +1 -0
- package/dist/src/database/migration/create/comparator.d.ts +3 -0
- package/dist/src/database/migration/create/comparator.d.ts.map +1 -0
- package/dist/src/database/migration/create/comparator.js +408 -0
- package/dist/src/database/migration/create/comparator.js.map +1 -0
- package/dist/src/database/migration/create/db-reader.d.ts +5 -0
- package/dist/src/database/migration/create/db-reader.d.ts.map +1 -0
- package/dist/src/database/migration/create/db-reader.js +473 -0
- package/dist/src/database/migration/create/db-reader.js.map +1 -0
- package/dist/src/database/migration/create/ddl-generator.d.ts +3 -0
- package/dist/src/database/migration/create/ddl-generator.d.ts.map +1 -0
- package/dist/src/database/migration/create/ddl-generator.js +725 -0
- package/dist/src/database/migration/create/ddl-generator.js.map +1 -0
- package/dist/src/database/migration/create/entity-reader.d.ts +4 -0
- package/dist/src/database/migration/create/entity-reader.d.ts.map +1 -0
- package/dist/src/database/migration/create/entity-reader.js +417 -0
- package/dist/src/database/migration/create/entity-reader.js.map +1 -0
- package/dist/src/database/migration/create/file-generator.d.ts +3 -0
- package/dist/src/database/migration/create/file-generator.d.ts.map +1 -0
- package/dist/src/database/migration/create/file-generator.js +62 -0
- package/dist/src/database/migration/create/file-generator.js.map +1 -0
- package/dist/src/database/migration/create/prompt.d.ts +4 -0
- package/dist/src/database/migration/create/prompt.d.ts.map +1 -0
- package/dist/src/database/migration/create/prompt.js +55 -0
- package/dist/src/database/migration/create/prompt.js.map +1 -0
- package/dist/src/database/migration/create/schema-model.d.ts +109 -0
- package/dist/src/database/migration/create/schema-model.d.ts.map +1 -0
- package/dist/src/database/migration/create/schema-model.js +24 -0
- package/dist/src/database/migration/create/schema-model.js.map +1 -0
- package/dist/src/database/migration/helpers.d.ts +3 -0
- package/dist/src/database/migration/helpers.d.ts.map +1 -0
- package/dist/src/database/migration/helpers.js +13 -0
- package/dist/src/database/migration/helpers.js.map +1 -0
- package/dist/src/database/migration/index.d.ts +9 -0
- package/dist/src/database/migration/index.d.ts.map +1 -0
- package/dist/src/database/migration/index.js +43 -0
- package/dist/src/database/migration/index.js.map +1 -0
- package/dist/src/database/migration/migration.entity.d.ts +8 -0
- package/dist/src/database/migration/migration.entity.d.ts.map +1 -0
- package/dist/src/database/migration/migration.entity.js +16 -0
- package/dist/src/database/migration/migration.entity.js.map +1 -0
- package/dist/src/database/mysql.d.ts +16 -0
- package/dist/src/database/mysql.d.ts.map +1 -0
- package/dist/src/database/mysql.js +140 -0
- package/dist/src/database/mysql.js.map +1 -0
- package/dist/src/database/postgres.d.ts +16 -0
- package/dist/src/database/postgres.d.ts.map +1 -0
- package/dist/src/database/postgres.js +91 -0
- package/dist/src/database/postgres.js.map +1 -0
- package/dist/src/database/types.d.ts +21 -0
- package/dist/src/database/types.d.ts.map +1 -0
- package/dist/src/database/types.js +27 -0
- package/dist/src/database/types.js.map +1 -0
- package/dist/src/devconsole/devconsole.controller.d.ts +7 -0
- package/dist/src/devconsole/devconsole.controller.d.ts.map +1 -0
- package/dist/src/devconsole/devconsole.controller.js +82 -0
- package/dist/src/devconsole/devconsole.controller.js.map +1 -0
- package/dist/src/devconsole/devconsole.middleware.d.ts +12 -0
- package/dist/src/devconsole/devconsole.middleware.d.ts.map +1 -0
- package/dist/src/devconsole/devconsole.middleware.js +28 -0
- package/dist/src/devconsole/devconsole.middleware.js.map +1 -0
- package/dist/src/devconsole/devconsole.srpc.d.ts +14 -0
- package/dist/src/devconsole/devconsole.srpc.d.ts.map +1 -0
- package/dist/src/devconsole/devconsole.srpc.js +94 -0
- package/dist/src/devconsole/devconsole.srpc.js.map +1 -0
- package/dist/src/devconsole/devconsole.store.d.ts +101 -0
- package/dist/src/devconsole/devconsole.store.d.ts.map +1 -0
- package/dist/src/devconsole/devconsole.store.js +125 -0
- package/dist/src/devconsole/devconsole.store.js.map +1 -0
- package/dist/src/devconsole/devconsole.ws.d.ts +18 -0
- package/dist/src/devconsole/devconsole.ws.d.ts.map +1 -0
- package/dist/src/devconsole/devconsole.ws.js +470 -0
- package/dist/src/devconsole/devconsole.ws.js.map +1 -0
- package/dist/src/devconsole/index.d.ts +2 -0
- package/dist/src/devconsole/index.d.ts.map +1 -0
- package/dist/src/devconsole/index.js +6 -0
- package/dist/src/devconsole/index.js.map +1 -0
- package/dist/src/devconsole/patches.d.ts +6 -0
- package/dist/src/devconsole/patches.d.ts.map +1 -0
- package/dist/src/devconsole/patches.js +397 -0
- package/dist/src/devconsole/patches.js.map +1 -0
- package/dist/src/health/health.module.d.ts +6 -0
- package/dist/src/health/health.module.d.ts.map +1 -0
- package/dist/src/health/health.module.js +32 -0
- package/dist/src/health/health.module.js.map +1 -0
- package/dist/src/health/healthcheck.controller.d.ts +10 -0
- package/dist/src/health/healthcheck.controller.d.ts.map +1 -0
- package/dist/src/health/healthcheck.controller.js +30 -0
- package/dist/src/health/healthcheck.controller.js.map +1 -0
- package/dist/src/health/healthcheck.service.d.ts +13 -0
- package/dist/src/health/healthcheck.service.d.ts.map +1 -0
- package/dist/src/health/healthcheck.service.js +33 -0
- package/dist/src/health/healthcheck.service.js.map +1 -0
- package/dist/src/health/index.d.ts +3 -0
- package/dist/src/health/index.d.ts.map +1 -0
- package/dist/src/health/index.js +6 -0
- package/dist/src/health/index.js.map +1 -0
- package/dist/src/helpers/async/context.d.ts +11 -0
- package/dist/src/helpers/async/context.d.ts.map +1 -0
- package/dist/src/helpers/async/context.js +75 -0
- package/dist/src/helpers/async/context.js.map +1 -0
- package/dist/src/helpers/async/process.d.ts +16 -0
- package/dist/src/helpers/async/process.d.ts.map +1 -0
- package/dist/src/helpers/async/process.js +44 -0
- package/dist/src/helpers/async/process.js.map +1 -0
- package/dist/src/helpers/async/promise.d.ts +5 -0
- package/dist/src/helpers/async/promise.d.ts.map +1 -0
- package/dist/src/helpers/async/promise.js +27 -0
- package/dist/src/helpers/async/promise.js.map +1 -0
- package/dist/src/helpers/data/array.d.ts +3 -0
- package/dist/src/helpers/data/array.d.ts.map +1 -0
- package/dist/src/helpers/data/array.js +17 -0
- package/dist/src/helpers/data/array.js.map +1 -0
- package/dist/src/helpers/data/objects.d.ts +12 -0
- package/dist/src/helpers/data/objects.d.ts.map +1 -0
- package/dist/src/helpers/data/objects.js +75 -0
- package/dist/src/helpers/data/objects.js.map +1 -0
- package/dist/src/helpers/data/serialization.d.ts +4 -0
- package/dist/src/helpers/data/serialization.d.ts.map +1 -0
- package/dist/src/helpers/data/serialization.js +15 -0
- package/dist/src/helpers/data/serialization.js.map +1 -0
- package/dist/src/helpers/data/transformer.d.ts +13 -0
- package/dist/src/helpers/data/transformer.d.ts.map +1 -0
- package/dist/src/helpers/data/transformer.js +55 -0
- package/dist/src/helpers/data/transformer.js.map +1 -0
- package/dist/src/helpers/framework/decorators.d.ts +5 -0
- package/dist/src/helpers/framework/decorators.d.ts.map +1 -0
- package/dist/src/helpers/framework/decorators.js +39 -0
- package/dist/src/helpers/framework/decorators.js.map +1 -0
- package/dist/src/helpers/framework/event.d.ts +3 -0
- package/dist/src/helpers/framework/event.d.ts.map +1 -0
- package/dist/src/helpers/framework/event.js +20 -0
- package/dist/src/helpers/framework/event.js.map +1 -0
- package/dist/src/helpers/framework/injection.d.ts +7 -0
- package/dist/src/helpers/framework/injection.d.ts.map +1 -0
- package/dist/src/helpers/framework/injection.js +52 -0
- package/dist/src/helpers/framework/injection.js.map +1 -0
- package/dist/src/helpers/index.d.ts +22 -0
- package/dist/src/helpers/index.d.ts.map +1 -0
- package/dist/src/helpers/index.js +32 -0
- package/dist/src/helpers/index.js.map +1 -0
- package/dist/src/helpers/io/package.d.ts +5 -0
- package/dist/src/helpers/io/package.d.ts.map +1 -0
- package/dist/src/helpers/io/package.js +31 -0
- package/dist/src/helpers/io/package.js.map +1 -0
- package/dist/src/helpers/io/stream.d.ts +18 -0
- package/dist/src/helpers/io/stream.d.ts.map +1 -0
- package/dist/src/helpers/io/stream.js +91 -0
- package/dist/src/helpers/io/stream.js.map +1 -0
- package/dist/src/helpers/redis/broadcast.d.ts +13 -0
- package/dist/src/helpers/redis/broadcast.d.ts.map +1 -0
- package/dist/src/helpers/redis/broadcast.js +100 -0
- package/dist/src/helpers/redis/broadcast.js.map +1 -0
- package/dist/src/helpers/redis/cache.d.ts +7 -0
- package/dist/src/helpers/redis/cache.d.ts.map +1 -0
- package/dist/src/helpers/redis/cache.js +28 -0
- package/dist/src/helpers/redis/cache.js.map +1 -0
- package/dist/src/helpers/redis/mutex.d.ts +24 -0
- package/dist/src/helpers/redis/mutex.d.ts.map +1 -0
- package/dist/src/helpers/redis/mutex.js +240 -0
- package/dist/src/helpers/redis/mutex.js.map +1 -0
- package/dist/src/helpers/redis/redis.d.ts +11 -0
- package/dist/src/helpers/redis/redis.d.ts.map +1 -0
- package/dist/src/helpers/redis/redis.js +59 -0
- package/dist/src/helpers/redis/redis.js.map +1 -0
- package/dist/src/helpers/security/crypto.d.ts +26 -0
- package/dist/src/helpers/security/crypto.d.ts.map +1 -0
- package/dist/src/helpers/security/crypto.js +121 -0
- package/dist/src/helpers/security/crypto.js.map +1 -0
- package/dist/src/helpers/security/validation.d.ts +4 -0
- package/dist/src/helpers/security/validation.d.ts.map +1 -0
- package/dist/src/helpers/security/validation.js +25 -0
- package/dist/src/helpers/security/validation.js.map +1 -0
- package/dist/src/helpers/utils/date.d.ts +4 -0
- package/dist/src/helpers/utils/date.d.ts.map +1 -0
- package/dist/src/helpers/utils/date.js +23 -0
- package/dist/src/helpers/utils/date.js.map +1 -0
- package/dist/src/helpers/utils/error.d.ts +24 -0
- package/dist/src/helpers/utils/error.d.ts.map +1 -0
- package/dist/src/helpers/utils/error.js +168 -0
- package/dist/src/helpers/utils/error.js.map +1 -0
- package/dist/src/helpers/utils/jsx.d.ts +3 -0
- package/dist/src/helpers/utils/jsx.d.ts.map +1 -0
- package/dist/src/helpers/utils/jsx.js +13 -0
- package/dist/src/helpers/utils/jsx.js.map +1 -0
- package/dist/src/helpers/utils/uuid.d.ts +3 -0
- package/dist/src/helpers/utils/uuid.d.ts.map +1 -0
- package/dist/src/helpers/utils/uuid.js +14 -0
- package/dist/src/helpers/utils/uuid.js.map +1 -0
- package/dist/src/http/auth.d.ts +46 -0
- package/dist/src/http/auth.d.ts.map +1 -0
- package/dist/src/http/auth.js +162 -0
- package/dist/src/http/auth.js.map +1 -0
- package/dist/src/http/context.d.ts +5 -0
- package/dist/src/http/context.d.ts.map +1 -0
- package/dist/src/http/context.js +22 -0
- package/dist/src/http/context.js.map +1 -0
- package/dist/src/http/cors.d.ts +36 -0
- package/dist/src/http/cors.d.ts.map +1 -0
- package/dist/src/http/cors.js +171 -0
- package/dist/src/http/cors.js.map +1 -0
- package/dist/src/http/errors.d.ts +3 -0
- package/dist/src/http/errors.d.ts.map +1 -0
- package/dist/src/http/errors.js +10 -0
- package/dist/src/http/errors.js.map +1 -0
- package/dist/src/http/index.d.ts +24 -0
- package/dist/src/http/index.d.ts.map +1 -0
- package/dist/src/http/index.js +25 -0
- package/dist/src/http/index.js.map +1 -0
- package/dist/src/http/kernel.d.ts +17 -0
- package/dist/src/http/kernel.d.ts.map +1 -0
- package/dist/src/http/kernel.js +133 -0
- package/dist/src/http/kernel.js.map +1 -0
- package/dist/src/http/middleware.d.ts +12 -0
- package/dist/src/http/middleware.d.ts.map +1 -0
- package/dist/src/http/middleware.js +61 -0
- package/dist/src/http/middleware.js.map +1 -0
- package/dist/src/http/overrides.d.ts +2 -0
- package/dist/src/http/overrides.d.ts.map +1 -0
- package/dist/src/http/overrides.js +19 -0
- package/dist/src/http/overrides.js.map +1 -0
- package/dist/src/http/store.d.ts +33 -0
- package/dist/src/http/store.d.ts.map +1 -0
- package/dist/src/http/store.js +102 -0
- package/dist/src/http/store.js.map +1 -0
- package/dist/src/http/uploads.d.ts +7 -0
- package/dist/src/http/uploads.d.ts.map +1 -0
- package/dist/src/http/uploads.js +8 -0
- package/dist/src/http/uploads.js.map +1 -0
- package/dist/src/http/workflow.d.ts +18 -0
- package/dist/src/http/workflow.d.ts.map +1 -0
- package/dist/src/http/workflow.js +181 -0
- package/dist/src/http/workflow.js.map +1 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/services/cli/invoke.d.ts +5 -0
- package/dist/src/services/cli/invoke.d.ts.map +1 -0
- package/dist/src/services/cli/invoke.js +45 -0
- package/dist/src/services/cli/invoke.js.map +1 -0
- package/dist/src/services/cli/repl-context.d.ts +13 -0
- package/dist/src/services/cli/repl-context.d.ts.map +1 -0
- package/dist/src/services/cli/repl-context.js +60 -0
- package/dist/src/services/cli/repl-context.js.map +1 -0
- package/dist/src/services/cli/repl.d.ts +5 -0
- package/dist/src/services/cli/repl.d.ts.map +1 -0
- package/dist/src/services/cli/repl.js +32 -0
- package/dist/src/services/cli/repl.js.map +1 -0
- package/dist/src/services/cli.d.ts +12 -0
- package/dist/src/services/cli.d.ts.map +1 -0
- package/dist/src/services/cli.js +76 -0
- package/dist/src/services/cli.js.map +1 -0
- package/dist/src/services/index.d.ts +7 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +10 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/leader.d.ts +32 -0
- package/dist/src/services/leader.d.ts.map +1 -0
- package/dist/src/services/leader.js +174 -0
- package/dist/src/services/leader.js.map +1 -0
- package/dist/src/services/logger.d.ts +35 -0
- package/dist/src/services/logger.d.ts.map +1 -0
- package/dist/src/services/logger.js +245 -0
- package/dist/src/services/logger.js.map +1 -0
- package/dist/src/services/mail/index.d.ts +61 -0
- package/dist/src/services/mail/index.d.ts.map +1 -0
- package/dist/src/services/mail/index.js +90 -0
- package/dist/src/services/mail/index.js.map +1 -0
- package/dist/src/services/mail/postmark.d.ts +11 -0
- package/dist/src/services/mail/postmark.d.ts.map +1 -0
- package/dist/src/services/mail/postmark.js +42 -0
- package/dist/src/services/mail/postmark.js.map +1 -0
- package/dist/src/services/mail/smtp.d.ts +11 -0
- package/dist/src/services/mail/smtp.d.ts.map +1 -0
- package/dist/src/services/mail/smtp.js +61 -0
- package/dist/src/services/mail/smtp.js.map +1 -0
- package/dist/src/services/mesh.d.ts +65 -0
- package/dist/src/services/mesh.d.ts.map +1 -0
- package/dist/src/services/mesh.js +422 -0
- package/dist/src/services/mesh.js.map +1 -0
- package/dist/src/services/worker/bootstrap.d.ts +3 -0
- package/dist/src/services/worker/bootstrap.d.ts.map +1 -0
- package/dist/src/services/worker/bootstrap.js +64 -0
- package/dist/src/services/worker/bootstrap.js.map +1 -0
- package/dist/src/services/worker/cli.d.ts +11 -0
- package/dist/src/services/worker/cli.d.ts.map +1 -0
- package/dist/src/services/worker/cli.js +43 -0
- package/dist/src/services/worker/cli.js.map +1 -0
- package/dist/src/services/worker/entity.d.ts +18 -0
- package/dist/src/services/worker/entity.d.ts.map +1 -0
- package/dist/src/services/worker/entity.js +16 -0
- package/dist/src/services/worker/entity.js.map +1 -0
- package/dist/src/services/worker/index.d.ts +9 -0
- package/dist/src/services/worker/index.d.ts.map +1 -0
- package/dist/src/services/worker/index.js +40 -0
- package/dist/src/services/worker/index.js.map +1 -0
- package/dist/src/services/worker/queue.d.ts +8 -0
- package/dist/src/services/worker/queue.d.ts.map +1 -0
- package/dist/src/services/worker/queue.js +32 -0
- package/dist/src/services/worker/queue.js.map +1 -0
- package/dist/src/services/worker/recorder.d.ts +16 -0
- package/dist/src/services/worker/recorder.d.ts.map +1 -0
- package/dist/src/services/worker/recorder.js +168 -0
- package/dist/src/services/worker/recorder.js.map +1 -0
- package/dist/src/services/worker/runner.d.ts +21 -0
- package/dist/src/services/worker/runner.d.ts.map +1 -0
- package/dist/src/services/worker/runner.js +156 -0
- package/dist/src/services/worker/runner.js.map +1 -0
- package/dist/src/services/worker/types.d.ts +26 -0
- package/dist/src/services/worker/types.d.ts.map +1 -0
- package/dist/src/services/worker/types.js +29 -0
- package/dist/src/services/worker/types.js.map +1 -0
- package/dist/src/srpc/SrpcByteStream.d.ts +67 -0
- package/dist/src/srpc/SrpcByteStream.d.ts.map +1 -0
- package/dist/src/srpc/SrpcByteStream.js +319 -0
- package/dist/src/srpc/SrpcByteStream.js.map +1 -0
- package/dist/src/srpc/SrpcClient.d.ts +75 -0
- package/dist/src/srpc/SrpcClient.d.ts.map +1 -0
- package/dist/src/srpc/SrpcClient.js +445 -0
- package/dist/src/srpc/SrpcClient.js.map +1 -0
- package/dist/src/srpc/SrpcServer.d.ts +80 -0
- package/dist/src/srpc/SrpcServer.d.ts.map +1 -0
- package/dist/src/srpc/SrpcServer.js +561 -0
- package/dist/src/srpc/SrpcServer.js.map +1 -0
- package/dist/src/srpc/index.d.ts +7 -0
- package/dist/src/srpc/index.d.ts.map +1 -0
- package/dist/src/srpc/index.js +12 -0
- package/dist/src/srpc/index.js.map +1 -0
- package/dist/src/srpc/types.d.ts +131 -0
- package/dist/src/srpc/types.d.ts.map +1 -0
- package/dist/src/srpc/types.js +65 -0
- package/dist/src/srpc/types.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +2 -0
- package/dist/src/telemetry/index.d.ts.map +1 -0
- package/dist/src/telemetry/index.js +5 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/otel/MariaDBInstrumentation.d.ts +22 -0
- package/dist/src/telemetry/otel/MariaDBInstrumentation.d.ts.map +1 -0
- package/dist/src/telemetry/otel/MariaDBInstrumentation.js +248 -0
- package/dist/src/telemetry/otel/MariaDBInstrumentation.js.map +1 -0
- package/dist/src/telemetry/otel/helpers.d.ts +27 -0
- package/dist/src/telemetry/otel/helpers.d.ts.map +1 -0
- package/dist/src/telemetry/otel/helpers.js +126 -0
- package/dist/src/telemetry/otel/helpers.js.map +1 -0
- package/dist/src/telemetry/otel/index.d.ts +14 -0
- package/dist/src/telemetry/otel/index.d.ts.map +1 -0
- package/dist/src/telemetry/otel/index.js +132 -0
- package/dist/src/telemetry/otel/index.js.map +1 -0
- package/dist/src/telemetry/otel/metrics.controller.d.ts +6 -0
- package/dist/src/telemetry/otel/metrics.controller.d.ts.map +1 -0
- package/dist/src/telemetry/otel/metrics.controller.js +63 -0
- package/dist/src/telemetry/otel/metrics.controller.js.map +1 -0
- package/dist/src/telemetry/sentry.d.ts +9 -0
- package/dist/src/telemetry/sentry.d.ts.map +1 -0
- package/dist/src/telemetry/sentry.js +62 -0
- package/dist/src/telemetry/sentry.js.map +1 -0
- package/dist/src/testing/expect.d.ts +25 -0
- package/dist/src/testing/expect.d.ts.map +1 -0
- package/dist/src/testing/expect.js +151 -0
- package/dist/src/testing/expect.js.map +1 -0
- package/dist/src/testing/fixtures.d.ts +19 -0
- package/dist/src/testing/fixtures.d.ts.map +1 -0
- package/dist/src/testing/fixtures.js +69 -0
- package/dist/src/testing/fixtures.js.map +1 -0
- package/dist/src/testing/index.d.ts +260 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +345 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/requests.d.ts +10 -0
- package/dist/src/testing/requests.d.ts.map +1 -0
- package/dist/src/testing/requests.js +56 -0
- package/dist/src/testing/requests.js.map +1 -0
- package/dist/src/testing/sql.d.ts +11 -0
- package/dist/src/testing/sql.d.ts.map +1 -0
- package/dist/src/testing/sql.js +55 -0
- package/dist/src/testing/sql.js.map +1 -0
- package/dist/src/types/index.d.ts +57 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +73 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/phone.d.ts +11 -0
- package/dist/src/types/phone.d.ts.map +1 -0
- package/dist/src/types/phone.js +73 -0
- package/dist/src/types/phone.js.map +1 -0
- package/docs/.vitepress/config.mts +79 -0
- package/docs/.yarnrc.yml +1 -0
- package/docs/content/CONTRIBUTING.md +140 -0
- package/docs/content/README-DEV.md +142 -0
- package/docs/content/README.md +39 -0
- package/docs/content/authentication.md +215 -0
- package/docs/content/cli.md +335 -0
- package/docs/content/configuration.md +175 -0
- package/docs/content/database.md +422 -0
- package/docs/content/devconsole.md +123 -0
- package/docs/content/getting-started.md +154 -0
- package/docs/content/guides/test-migration-guide.md +351 -0
- package/docs/content/health.md +54 -0
- package/docs/content/helpers.md +322 -0
- package/docs/content/http.md +253 -0
- package/docs/content/index.md +147 -0
- package/docs/content/leader-service.md +98 -0
- package/docs/content/logging.md +150 -0
- package/docs/content/mail.md +161 -0
- package/docs/content/mesh-service.md +204 -0
- package/docs/content/public/images/devconsole/01-dashboard.png +0 -0
- package/docs/content/public/images/devconsole/02-routes.png +0 -0
- package/docs/content/public/images/devconsole/03-openapi.png +0 -0
- package/docs/content/public/images/devconsole/04-requests.png +0 -0
- package/docs/content/public/images/devconsole/05-srpc.png +0 -0
- package/docs/content/public/images/devconsole/06-database.png +0 -0
- package/docs/content/public/images/devconsole/07-health.png +0 -0
- package/docs/content/public/images/devconsole/08-mutex.png +0 -0
- package/docs/content/public/images/devconsole/09-repl.png +0 -0
- package/docs/content/public/images/devconsole/10-workers.png +0 -0
- package/docs/content/redis.md +168 -0
- package/docs/content/srpc.md +261 -0
- package/docs/content/telemetry.md +166 -0
- package/docs/content/testing.md +222 -0
- package/docs/content/types.md +215 -0
- package/docs/content/worker.md +177 -0
- package/docs/package.json +16 -0
- package/docs/scripts/README-SCREENSHOTS.md +145 -0
- package/docs/scripts/capture-devconsole-screenshots.js +184 -0
- package/docs/yarn.lock +2408 -0
- package/package.json +144 -0
- package/patches/@deepkit+type+1.0.19.patch +38 -0
- package/patches/deepkit-openapi-core+0.0.9.patch +62 -0
- package/src/app/base.ts +253 -0
- package/src/app/config.loader.ts +66 -0
- package/src/app/config.ts +119 -0
- package/src/app/const.ts +4 -0
- package/src/app/dev.ts +92 -0
- package/src/app/index.ts +6 -0
- package/src/app/openapi.ts +3 -0
- package/src/app/resolver.ts +49 -0
- package/src/app/shutdown.ts +55 -0
- package/src/app/state.ts +19 -0
- package/src/auth/index.ts +2 -0
- package/src/auth/jwt.ts +275 -0
- package/src/auth/provider.ts +57 -0
- package/src/cli/dksf-dev.ts +416 -0
- package/src/cli/dksf-gen-proto.ts +176 -0
- package/src/cli/dksf-install.ts +11 -0
- package/src/cli/dksf-test.ts +84 -0
- package/src/cli/dksf-update.ts +101 -0
- package/src/database/common.ts +385 -0
- package/src/database/dialect.ts +43 -0
- package/src/database/entity.ts +285 -0
- package/src/database/index.ts +7 -0
- package/src/database/migration/MigrationResetCommand.ts +72 -0
- package/src/database/migration/MigrationRunCommand.ts +118 -0
- package/src/database/migration/characters.ts +53 -0
- package/src/database/migration/create/MigrationCreateCommand.ts +96 -0
- package/src/database/migration/create/comparator.ts +467 -0
- package/src/database/migration/create/db-reader.ts +510 -0
- package/src/database/migration/create/ddl-generator.ts +755 -0
- package/src/database/migration/create/entity-reader.ts +471 -0
- package/src/database/migration/create/file-generator.ts +57 -0
- package/src/database/migration/create/prompt.ts +49 -0
- package/src/database/migration/create/schema-model.ts +102 -0
- package/src/database/migration/helpers.ts +7 -0
- package/src/database/migration/index.ts +35 -0
- package/src/database/migration/migration.entity.ts +10 -0
- package/src/database/mysql.ts +140 -0
- package/src/database/postgres.ts +97 -0
- package/src/database/types.ts +18 -0
- package/src/devconsole/devconsole.controller.ts +59 -0
- package/src/devconsole/devconsole.middleware.ts +23 -0
- package/src/devconsole/devconsole.srpc.ts +94 -0
- package/src/devconsole/devconsole.store.ts +190 -0
- package/src/devconsole/devconsole.ws.ts +491 -0
- package/src/devconsole/index.ts +1 -0
- package/src/devconsole/patches.ts +428 -0
- package/src/health/health.module.ts +30 -0
- package/src/health/healthcheck.controller.ts +17 -0
- package/src/health/healthcheck.service.ts +28 -0
- package/src/health/index.ts +2 -0
- package/src/helpers/async/context.ts +67 -0
- package/src/helpers/async/process.ts +49 -0
- package/src/helpers/async/promise.ts +16 -0
- package/src/helpers/data/array.ts +11 -0
- package/src/helpers/data/objects.ts +64 -0
- package/src/helpers/data/serialization.ts +11 -0
- package/src/helpers/data/transformer.ts +54 -0
- package/src/helpers/framework/decorators.ts +27 -0
- package/src/helpers/framework/event.ts +11 -0
- package/src/helpers/framework/injection.ts +47 -0
- package/src/helpers/index.ts +34 -0
- package/src/helpers/io/package.ts +26 -0
- package/src/helpers/io/stream.ts +79 -0
- package/src/helpers/redis/broadcast.ts +96 -0
- package/src/helpers/redis/cache.ts +28 -0
- package/src/helpers/redis/mutex.ts +260 -0
- package/src/helpers/redis/redis.ts +60 -0
- package/src/helpers/security/crypto.ts +133 -0
- package/src/helpers/security/validation.ts +16 -0
- package/src/helpers/utils/date.ts +13 -0
- package/src/helpers/utils/error.ts +155 -0
- package/src/helpers/utils/jsx.ts +8 -0
- package/src/helpers/utils/uuid.ts +8 -0
- package/src/http/auth.ts +156 -0
- package/src/http/context.ts +15 -0
- package/src/http/cors.ts +159 -0
- package/src/http/errors.ts +9 -0
- package/src/http/index.ts +19 -0
- package/src/http/kernel.ts +138 -0
- package/src/http/middleware.ts +59 -0
- package/src/http/overrides.ts +20 -0
- package/src/http/store.ts +86 -0
- package/src/http/uploads.ts +6 -0
- package/src/http/workflow.ts +167 -0
- package/src/index.ts +19 -0
- package/src/services/cli/invoke.ts +39 -0
- package/src/services/cli/repl-context.ts +63 -0
- package/src/services/cli/repl.ts +22 -0
- package/src/services/cli.ts +74 -0
- package/src/services/index.ts +6 -0
- package/src/services/leader.ts +201 -0
- package/src/services/logger.ts +258 -0
- package/src/services/mail/index.ts +117 -0
- package/src/services/mail/postmark.ts +37 -0
- package/src/services/mail/smtp.ts +46 -0
- package/src/services/mesh.ts +508 -0
- package/src/services/worker/bootstrap.ts +53 -0
- package/src/services/worker/cli.ts +32 -0
- package/src/services/worker/entity.ts +22 -0
- package/src/services/worker/index.ts +30 -0
- package/src/services/worker/queue.ts +35 -0
- package/src/services/worker/recorder.ts +172 -0
- package/src/services/worker/runner.ts +179 -0
- package/src/services/worker/types.ts +32 -0
- package/src/srpc/SrpcByteStream.ts +382 -0
- package/src/srpc/SrpcClient.ts +512 -0
- package/src/srpc/SrpcServer.ts +681 -0
- package/src/srpc/index.ts +15 -0
- package/src/srpc/types.ts +146 -0
- package/src/telemetry/index.ts +1 -0
- package/src/telemetry/otel/MariaDBInstrumentation.ts +297 -0
- package/src/telemetry/otel/helpers.ts +117 -0
- package/src/telemetry/otel/index.ts +150 -0
- package/src/telemetry/otel/metrics.controller.ts +50 -0
- package/src/telemetry/sentry.ts +58 -0
- package/src/testing/expect.ts +148 -0
- package/src/testing/fixtures.ts +62 -0
- package/src/testing/index.ts +355 -0
- package/src/testing/requests.ts +68 -0
- package/src/testing/sql.ts +50 -0
- package/src/types/index.ts +64 -0
- package/src/types/phone.ts +64 -0
- package/types.d.ts +20 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
Configuration is managed via `BaseAppConfig`, which uses `@zyno-io/config` to load values from environment variables. Extend it with your own properties.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
import { BaseAppConfig } from '@zyno-io/dk-server-foundation';
|
|
7
|
+
|
|
8
|
+
class AppConfig extends BaseAppConfig {
|
|
9
|
+
STRIPE_KEY_SECRET!: string;
|
|
10
|
+
MAX_UPLOAD_SIZE: number = 10_000_000;
|
|
11
|
+
}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Properties ending in `_SECRET` are treated as secrets by the config loader.
|
|
15
|
+
|
|
16
|
+
## Built-in Configuration
|
|
17
|
+
|
|
18
|
+
### Application
|
|
19
|
+
|
|
20
|
+
| Variable | Type | Default | Description |
|
|
21
|
+
| --------- | -------- | ------- | ----------------------------------------------------------- |
|
|
22
|
+
| `APP_ENV` | `string` | — | Application environment (`development`, `production`, etc.) |
|
|
23
|
+
| `PORT` | `number` | `3000` | HTTP server port |
|
|
24
|
+
|
|
25
|
+
### MySQL Database
|
|
26
|
+
|
|
27
|
+
| Variable | Type | Default | Description |
|
|
28
|
+
| ---------------------------- | -------- | ------------------- | ------------------------ |
|
|
29
|
+
| `MYSQL_HOST` | `string` | — | Database host |
|
|
30
|
+
| `MYSQL_PORT` | `number` | — | Database port |
|
|
31
|
+
| `MYSQL_USER` | `string` | — | Database user |
|
|
32
|
+
| `MYSQL_PASSWORD_SECRET` | `string` | — | Database password |
|
|
33
|
+
| `MYSQL_DATABASE` | `string` | — | Database name |
|
|
34
|
+
| `MYSQL_CONNECTION_LIMIT` | `number` | 10 (prod) / 5 (dev) | Max pool connections |
|
|
35
|
+
| `MYSQL_MIN_IDLE_CONNECTIONS` | `number` | — (prod) / 1 (dev) | Minimum idle connections |
|
|
36
|
+
| `MYSQL_IDLE_TIMEOUT_SECONDS` | `number` | 60 (prod) / 5 (dev) | Idle connection timeout |
|
|
37
|
+
|
|
38
|
+
### JWT Authentication
|
|
39
|
+
|
|
40
|
+
| Variable | Type | Default | Description |
|
|
41
|
+
| -------------------------- | --------- | ------- | --------------------------------------- |
|
|
42
|
+
| `AUTH_JWT_ISSUER` | `string` | — | JWT issuer claim |
|
|
43
|
+
| `AUTH_JWT_EXPIRATION_MINS` | `number` | — | Token expiration in minutes |
|
|
44
|
+
| `AUTH_JWT_COOKIE_NAME` | `string` | — | Cookie name for JWT storage |
|
|
45
|
+
| `AUTH_JWT_SECRET` | `string` | — | HMAC secret (plain string) |
|
|
46
|
+
| `AUTH_JWT_SECRET_B64` | `string` | — | HMAC secret (base64-encoded) |
|
|
47
|
+
| `AUTH_JWT_ED_SECRET` | `string` | — | EdDSA private key (PEM, base64-encoded) |
|
|
48
|
+
| `AUTH_JWT_ENABLE_VERIFY` | `boolean` | `true` | Enable JWT signature verification |
|
|
49
|
+
|
|
50
|
+
### Basic Authentication
|
|
51
|
+
|
|
52
|
+
| Variable | Type | Default | Description |
|
|
53
|
+
| ------------------- | -------- | ------- | ---------------------------- |
|
|
54
|
+
| `AUTH_BASIC_SECRET` | `string` | — | Password for HTTP Basic Auth |
|
|
55
|
+
|
|
56
|
+
### Cryptography
|
|
57
|
+
|
|
58
|
+
| Variable | Type | Default | Description |
|
|
59
|
+
| ------------------ | -------- | ------- | --------------------------------------------- |
|
|
60
|
+
| `CRYPTO_SECRET` | `string` | — | 32-byte key (or 64 hex chars) for AES-256-GCM |
|
|
61
|
+
| `CRYPTO_IV_LENGTH` | `number` | `12` | IV length for AES-GCM |
|
|
62
|
+
|
|
63
|
+
### HTTP
|
|
64
|
+
|
|
65
|
+
| Variable | Type | Default | Description |
|
|
66
|
+
| -------------------------------- | --------- | ------- | ----------------------------------------------- |
|
|
67
|
+
| `USE_REAL_IP_HEADER` | `boolean` | — | Trust `x-real-ip` header from reverse proxy |
|
|
68
|
+
| `HTTP_REQUEST_LOGGING_MODE` | `string` | `e2e` | Logging mode: `none`, `e2e`, `finish`, `errors` |
|
|
69
|
+
| `HEALTHZ_ENABLE_REQUEST_LOGGING` | `boolean` | `false` | Log healthcheck requests |
|
|
70
|
+
|
|
71
|
+
### Redis
|
|
72
|
+
|
|
73
|
+
All Redis configurations support both direct connection and Sentinel mode. The library uses separate Redis instances for different concerns:
|
|
74
|
+
|
|
75
|
+
#### Default Redis
|
|
76
|
+
|
|
77
|
+
| Variable | Description |
|
|
78
|
+
| --------------------- | --------------------------------------- |
|
|
79
|
+
| `REDIS_HOST` | Redis host |
|
|
80
|
+
| `REDIS_PORT` | Redis port |
|
|
81
|
+
| `REDIS_PREFIX` | Key prefix (falls back to package name) |
|
|
82
|
+
| `REDIS_SENTINEL_HOST` | Sentinel host |
|
|
83
|
+
| `REDIS_SENTINEL_PORT` | Sentinel port |
|
|
84
|
+
| `REDIS_SENTINEL_NAME` | Sentinel master name |
|
|
85
|
+
|
|
86
|
+
#### Cache Redis (`CACHE_REDIS_` prefix)
|
|
87
|
+
|
|
88
|
+
Used by the `Cache` class. Falls back to default Redis settings.
|
|
89
|
+
|
|
90
|
+
#### Broadcast Redis (`BROADCAST_REDIS_` prefix)
|
|
91
|
+
|
|
92
|
+
Used by `createBroadcastChannel()` and `createDistributedMethod()`. Falls back to default Redis settings.
|
|
93
|
+
|
|
94
|
+
#### BullMQ Redis (`BULL_REDIS_` prefix)
|
|
95
|
+
|
|
96
|
+
Used by the worker system. Falls back to default Redis settings.
|
|
97
|
+
|
|
98
|
+
| Variable | Type | Default | Description |
|
|
99
|
+
| ------------ | -------- | --------- | ------------------------- |
|
|
100
|
+
| `BULL_QUEUE` | `string` | `default` | Default BullMQ queue name |
|
|
101
|
+
|
|
102
|
+
#### Mesh Redis (`MESH_REDIS_` prefix)
|
|
103
|
+
|
|
104
|
+
Used by `MeshService`. Falls back to default Redis settings.
|
|
105
|
+
|
|
106
|
+
#### Mutex Redis (`MUTEX_REDIS_` prefix)
|
|
107
|
+
|
|
108
|
+
Used by `withMutex()` and `LeaderService`. Falls back to default Redis settings.
|
|
109
|
+
|
|
110
|
+
| Variable | Type | Default | Description |
|
|
111
|
+
| ------------ | -------- | ------- | ------------------------------------------- |
|
|
112
|
+
| `MUTEX_MODE` | `string` | `local` | Mutex mode: `local` (in-process) or `redis` |
|
|
113
|
+
|
|
114
|
+
### Mail
|
|
115
|
+
|
|
116
|
+
| Variable | Type | Default | Description |
|
|
117
|
+
| ---------------------- | --------- | ----------- | ----------------------------------- |
|
|
118
|
+
| `MAIL_PROVIDER` | `string` | `smtp` | Mail provider: `smtp` or `postmark` |
|
|
119
|
+
| `MAIL_FROM` | `string` | — | Sender email address |
|
|
120
|
+
| `MAIL_FROM_NAME` | `string` | — | Sender display name |
|
|
121
|
+
| `SMTP_HOST` | `string` | `127.0.0.1` | SMTP server host |
|
|
122
|
+
| `SMTP_PORT` | `number` | `1025` | SMTP server port |
|
|
123
|
+
| `SMTP_USER` | `string` | — | SMTP username |
|
|
124
|
+
| `SMTP_PASSWORD_SECRET` | `string` | — | SMTP password |
|
|
125
|
+
| `SMTP_TLS` | `boolean` | `false` | Enable TLS |
|
|
126
|
+
| `POSTMARK_SECRET` | `string` | — | Postmark API token |
|
|
127
|
+
|
|
128
|
+
### Workers
|
|
129
|
+
|
|
130
|
+
| Variable | Type | Default | Description |
|
|
131
|
+
| ------------------- | --------- | ------------ | ------------------------ |
|
|
132
|
+
| `ENABLE_JOB_RUNNER` | `boolean` | `true` (dev) | Enable BullMQ job runner |
|
|
133
|
+
|
|
134
|
+
### Observability
|
|
135
|
+
|
|
136
|
+
| Variable | Type | Default | Description |
|
|
137
|
+
| ------------------------------------- | --------- | ------- | ------------------------------------- |
|
|
138
|
+
| `SENTRY_DSN` | `string` | — | Sentry DSN for error tracking |
|
|
139
|
+
| `OTEL_EXPORTER_OTLP_ENDPOINT` | `string` | — | OTLP endpoint for traces and metrics |
|
|
140
|
+
| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` | `string` | — | OTLP endpoint for traces only |
|
|
141
|
+
| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | `string` | — | OTLP endpoint for metrics push |
|
|
142
|
+
| `OTEL_METRICS_ENDPOINT_ENABLED` | `boolean` | — | Enable `/metrics` Prometheus endpoint |
|
|
143
|
+
| `OTEL_DEBUG` | `boolean` | — | Enable debug logging |
|
|
144
|
+
| `ALERTS_SLACK_WEBHOOK_URL` | `string` | — | Slack webhook for alert-level errors |
|
|
145
|
+
|
|
146
|
+
### SRPC
|
|
147
|
+
|
|
148
|
+
| Variable | Type | Default | Description |
|
|
149
|
+
| -------------------------- | -------- | ------- | ----------------------------------- |
|
|
150
|
+
| `SRPC_AUTH_SECRET` | `string` | — | HMAC secret for SRPC authentication |
|
|
151
|
+
| `SRPC_AUTH_CLOCK_DRIFT_MS` | `number` | `30000` | Allowed clock drift for SRPC auth |
|
|
152
|
+
|
|
153
|
+
### OpenAPI
|
|
154
|
+
|
|
155
|
+
| Variable | Type | Default | Description |
|
|
156
|
+
| ----------------------- | --------- | ------- | ------------------------------------- |
|
|
157
|
+
| `ENABLE_OPENAPI_SCHEMA` | `boolean` | — | Dump OpenAPI schema to `openapi.yaml` |
|
|
158
|
+
|
|
159
|
+
## `isDevFeatureEnabled(envVar, defaultInDev?)`
|
|
160
|
+
|
|
161
|
+
Helper function to check if a feature flag is enabled. Returns `true` in development/Jest by default.
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { isDevFeatureEnabled } from '@zyno-io/dk-server-foundation';
|
|
165
|
+
|
|
166
|
+
if (isDevFeatureEnabled(config.MY_FEATURE)) {
|
|
167
|
+
// enabled
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
| Input | Production | Development |
|
|
172
|
+
| ------------------ | ---------- | ---------------- |
|
|
173
|
+
| `undefined` | `false` | `true` (default) |
|
|
174
|
+
| `'1'` or `'true'` | `true` | `true` |
|
|
175
|
+
| `'0'` or `'false'` | `false` | `false` |
|
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
# Database
|
|
2
|
+
|
|
3
|
+
MySQL/MariaDB ORM layer extending Deepkit's database with transaction hooks, session locks, raw query helpers, entity creation utilities, dirty tracking, relationship resolution, and a migration system.
|
|
4
|
+
|
|
5
|
+
## Creating a Database
|
|
6
|
+
|
|
7
|
+
Use `createMySQLDatabase()` to define a database class with your entities:
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { createMySQLDatabase } from '@zyno-io/dk-server-foundation';
|
|
11
|
+
|
|
12
|
+
class AppDB extends createMySQLDatabase({ enableLocksTable: true }, [User, Post, Comment]) {}
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Pass the database class to `createApp()`:
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
const app = createApp({
|
|
19
|
+
config: AppConfig,
|
|
20
|
+
db: AppDB
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### `createMySQLDatabase(config, entities?)`
|
|
25
|
+
|
|
26
|
+
| Option | Type | Default | Description |
|
|
27
|
+
| ------------------ | --------- | ------- | ---------------------------------------------------- |
|
|
28
|
+
| `enableLocksTable` | `boolean` | `false` | Create the `_locks` table for session-level locking. |
|
|
29
|
+
|
|
30
|
+
All other MySQL connection options are configured via environment variables (see [Configuration](./configuration.md)).
|
|
31
|
+
|
|
32
|
+
## Entity Creation
|
|
33
|
+
|
|
34
|
+
Type-safe entity creation with automatic inference of optional fields (auto-increment, nullable, or `HasDefault`).
|
|
35
|
+
|
|
36
|
+
### Create Without Persisting
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
import { createEntity, createEntities } from '@zyno-io/dk-server-foundation';
|
|
40
|
+
|
|
41
|
+
const user = createEntity(User, { email: 'a@b.com', name: 'Alice' });
|
|
42
|
+
const users = createEntities(User, [
|
|
43
|
+
{ email: 'a@b.com', name: 'Alice' },
|
|
44
|
+
{ email: 'b@c.com', name: 'Bob' }
|
|
45
|
+
]);
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Create and Queue for Persistence
|
|
49
|
+
|
|
50
|
+
Entities are added to the session's unit of work but not flushed until `session.flush()`:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import { createQueuedEntity } from '@zyno-io/dk-server-foundation';
|
|
54
|
+
|
|
55
|
+
await db.transaction(async session => {
|
|
56
|
+
const user = createQueuedEntity(User, { email: 'a@b.com', name: 'Alice' }, session);
|
|
57
|
+
const post = createQueuedEntity(Post, { userId: user.id, title: 'Hello' }, session);
|
|
58
|
+
// Both persisted on commit
|
|
59
|
+
});
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Create and Persist Immediately
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import { createPersistedEntity, createPersistedEntities } from '@zyno-io/dk-server-foundation';
|
|
66
|
+
|
|
67
|
+
const user = await createPersistedEntity(User, { email: 'a@b.com', name: 'Alice' }, session);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Persist Existing Entities
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { persistEntity, persistEntities } from '@zyno-io/dk-server-foundation';
|
|
74
|
+
|
|
75
|
+
const user = createEntity(User, { email: 'a@b.com', name: 'Alice' });
|
|
76
|
+
await persistEntity(user, session);
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Entity Retrieval
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
import { getEntityOr404, getEntityOrUndefined, getEntity, entityExists } from '@zyno-io/dk-server-foundation';
|
|
83
|
+
|
|
84
|
+
// Throws HttpNotFoundError if not found
|
|
85
|
+
const user = await getEntityOr404(User, { id: 1 });
|
|
86
|
+
|
|
87
|
+
// Returns undefined if not found
|
|
88
|
+
const user = await getEntityOrUndefined(User, { id: 1 });
|
|
89
|
+
|
|
90
|
+
// Throws Deepkit ItemNotFound if not found
|
|
91
|
+
const user = await getEntity(User, { id: 1 });
|
|
92
|
+
|
|
93
|
+
// Check existence
|
|
94
|
+
const exists = await entityExists(User, { email: 'a@b.com' });
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Transactions and Sessions
|
|
98
|
+
|
|
99
|
+
### Transactions
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
await db.transaction(async session => {
|
|
103
|
+
// All operations within this callback are wrapped in a transaction
|
|
104
|
+
const user = createQueuedEntity(User, { name: 'Alice' }, session);
|
|
105
|
+
// Auto-commits on success, auto-rollbacks on error
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Sessions (No Transaction)
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
await db.session(async session => {
|
|
113
|
+
// Unit of work without an explicit transaction
|
|
114
|
+
});
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Reuse or Create
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// Uses existing session if provided, otherwise creates a new transaction
|
|
121
|
+
await db.withTransaction(existingSession, async session => {
|
|
122
|
+
// ...
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Same for sessions (no transaction)
|
|
126
|
+
await db.withSession(existingSession, async session => {
|
|
127
|
+
// ...
|
|
128
|
+
});
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Transaction Hooks
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
await db.transaction(async session => {
|
|
135
|
+
session.addPreCommitHook(async () => {
|
|
136
|
+
// Runs before the transaction commits
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
session.addPostCommitHook(async () => {
|
|
140
|
+
// Runs after successful commit
|
|
141
|
+
// Good for sending notifications, invalidating caches
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Session Locks
|
|
147
|
+
|
|
148
|
+
Acquire database-level locks that are held until the transaction completes. Requires `enableLocksTable: true` in database config.
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
await db.transaction(async session => {
|
|
152
|
+
await session.acquireSessionLock(['wallet', walletId]);
|
|
153
|
+
// Lock held until commit/rollback
|
|
154
|
+
// Other transactions attempting the same lock will wait
|
|
155
|
+
});
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Lock keys can be a single value or an array that gets flattened: `['wallet', 123]` becomes `wallet:123`.
|
|
159
|
+
|
|
160
|
+
## Raw Queries
|
|
161
|
+
|
|
162
|
+
### Tagged Template Literals
|
|
163
|
+
|
|
164
|
+
Use Deepkit's `sql` tagged template for parameterized queries:
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
import { sql } from '@deepkit/sql';
|
|
168
|
+
|
|
169
|
+
const users = await db.rawFind<User>(sql`SELECT * FROM users WHERE active = ${true} AND age > ${18}`);
|
|
170
|
+
|
|
171
|
+
await db.rawExecute(sql`UPDATE users SET last_login = NOW() WHERE id = ${userId}`);
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Single Result
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
const user = await db.rawFindOne<User>(sql`SELECT * FROM users WHERE id = ${id}`);
|
|
178
|
+
// Returns undefined if not found
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Unsafe (Manual Bindings)
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
const users = await db.rawFindUnsafe<User>('SELECT * FROM users WHERE name LIKE ?', ['%alice%']);
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Execute Results
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
const result = await db.rawExecute(sql`INSERT INTO users ...`);
|
|
191
|
+
// result: { affectedRows, insertId, warningStatus }
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Dirty Tracking
|
|
195
|
+
|
|
196
|
+
Track changes to entities loaded from the database:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
import {
|
|
200
|
+
isEntityDirty,
|
|
201
|
+
getDirtyFields,
|
|
202
|
+
getDirtyDetails,
|
|
203
|
+
isFieldDirty,
|
|
204
|
+
getFieldOriginal,
|
|
205
|
+
getEntityOriginal,
|
|
206
|
+
revertDirtyEntity
|
|
207
|
+
} from '@zyno-io/dk-server-foundation';
|
|
208
|
+
|
|
209
|
+
user.name = 'Bob';
|
|
210
|
+
|
|
211
|
+
isEntityDirty(user); // true
|
|
212
|
+
getDirtyFields(user); // ['name']
|
|
213
|
+
isFieldDirty(user, 'name'); // true
|
|
214
|
+
getFieldOriginal(user, 'name'); // 'Alice'
|
|
215
|
+
|
|
216
|
+
getDirtyDetails(user);
|
|
217
|
+
// { name: { original: 'Alice', current: 'Bob' } }
|
|
218
|
+
|
|
219
|
+
getEntityOriginal(user);
|
|
220
|
+
// { id: 1, name: 'Alice', email: '...' }
|
|
221
|
+
|
|
222
|
+
revertDirtyEntity(user);
|
|
223
|
+
// user.name is now 'Alice' again
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Bulk Loading
|
|
227
|
+
|
|
228
|
+
### Keyed Entities
|
|
229
|
+
|
|
230
|
+
Load entities indexed by a field:
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
import { getKeyedEntities, getKeyedGroupedEntities, getEntitiesById } from '@zyno-io/dk-server-foundation';
|
|
234
|
+
|
|
235
|
+
// Returns { [userId]: User }
|
|
236
|
+
const usersById = await getKeyedEntities({
|
|
237
|
+
schema: User,
|
|
238
|
+
ids: [1, 2, 3],
|
|
239
|
+
keyField: 'id'
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
// Returns { [departmentId]: User[] }
|
|
243
|
+
const usersByDept = await getKeyedGroupedEntities({
|
|
244
|
+
schema: User,
|
|
245
|
+
ids: [10, 20],
|
|
246
|
+
keyField: 'departmentId'
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
// Returns User[]
|
|
250
|
+
const users = await getEntitiesById({
|
|
251
|
+
schema: User,
|
|
252
|
+
ids: [1, 2, 3],
|
|
253
|
+
fields: ['id', 'name', 'email']
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Relationship Resolution
|
|
258
|
+
|
|
259
|
+
Resolve one-to-one/many-to-one and many-to-many relationships:
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
import { resolveRelated, resolveRelatedByPivot } from '@zyno-io/dk-server-foundation';
|
|
263
|
+
|
|
264
|
+
// Many-to-one: attach department to each user
|
|
265
|
+
await resolveRelated({
|
|
266
|
+
src: users,
|
|
267
|
+
srcIdField: 'departmentId',
|
|
268
|
+
targetField: 'department',
|
|
269
|
+
targetSchema: Department,
|
|
270
|
+
targetFields: ['id', 'name']
|
|
271
|
+
});
|
|
272
|
+
// users[0].department = Department { id, name }
|
|
273
|
+
|
|
274
|
+
// Many-to-many via pivot table
|
|
275
|
+
await resolveRelatedByPivot({
|
|
276
|
+
src: posts,
|
|
277
|
+
srcIdField: 'id',
|
|
278
|
+
pivotSchema: PostTag,
|
|
279
|
+
pivotIdKey: 'postId',
|
|
280
|
+
pivotRelatedKey: 'tagId',
|
|
281
|
+
targetField: 'tags',
|
|
282
|
+
targetSchema: Tag,
|
|
283
|
+
targetFields: ['id', 'name']
|
|
284
|
+
});
|
|
285
|
+
// posts[0].tags = [{ ...Tag, pivot: PostTag }, ...]
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## Custom Types
|
|
289
|
+
|
|
290
|
+
### Coordinate (POINT)
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
import { Coordinate, MySQLCoordinate, NullableMySQLCoordinate } from '@zyno-io/dk-server-foundation';
|
|
294
|
+
|
|
295
|
+
class Location {
|
|
296
|
+
coords!: MySQLCoordinate; // NOT NULL POINT
|
|
297
|
+
altCoords!: NullableMySQLCoordinate; // NULLABLE POINT
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### DateString
|
|
302
|
+
|
|
303
|
+
```typescript
|
|
304
|
+
import { DateString } from '@zyno-io/dk-server-foundation';
|
|
305
|
+
|
|
306
|
+
class Event {
|
|
307
|
+
date!: DateString; // MySQL DATE column, stored as 'YYYY-MM-DD'
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### UuidString
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
import { UuidString } from '@zyno-io/dk-server-foundation';
|
|
315
|
+
|
|
316
|
+
class Resource {
|
|
317
|
+
id!: UuidString; // Type annotation for UUID fields
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Length
|
|
322
|
+
|
|
323
|
+
```typescript
|
|
324
|
+
import { Length } from '@zyno-io/dk-server-foundation';
|
|
325
|
+
|
|
326
|
+
class Token {
|
|
327
|
+
code!: Length<6>; // Validated fixed-length string
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### HasDefault
|
|
332
|
+
|
|
333
|
+
Mark fields that have application-level defaults so they become optional in `createEntity()`:
|
|
334
|
+
|
|
335
|
+
```typescript
|
|
336
|
+
import { HasDefault } from '@zyno-io/dk-server-foundation';
|
|
337
|
+
|
|
338
|
+
class User {
|
|
339
|
+
role!: string & HasDefault; // Optional in createEntity()
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Migrations
|
|
344
|
+
|
|
345
|
+
### Generating Migrations
|
|
346
|
+
|
|
347
|
+
The `migration:create` command diffs entity definitions against the live database and generates a migration file:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
# Interactive mode (prompts for column renames)
|
|
351
|
+
node app.js migration:create
|
|
352
|
+
|
|
353
|
+
# Non-interactive (CI-safe, treats ambiguous changes as drop+add)
|
|
354
|
+
node app.js migration:create --non-interactive
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
It detects: table creation/removal, column additions/removals/modifications/renames, index and foreign key changes, primary key changes, and PostgreSQL enum type management. Both MySQL and PostgreSQL are supported.
|
|
358
|
+
|
|
359
|
+
### Writing Migrations Manually
|
|
360
|
+
|
|
361
|
+
```typescript
|
|
362
|
+
// src/migrations/20240101_120000_add_users.ts
|
|
363
|
+
import { createMigration } from '@zyno-io/dk-server-foundation';
|
|
364
|
+
|
|
365
|
+
export default createMigration(async db => {
|
|
366
|
+
await db.rawExecute(sql`
|
|
367
|
+
CREATE TABLE users (
|
|
368
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
369
|
+
email VARCHAR(255) NOT NULL,
|
|
370
|
+
name VARCHAR(255) NOT NULL
|
|
371
|
+
)
|
|
372
|
+
`);
|
|
373
|
+
});
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### Running Migrations
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# Via CLI
|
|
380
|
+
node app.js migration:run
|
|
381
|
+
|
|
382
|
+
# Programmatically
|
|
383
|
+
import { runMigrations } from '@zyno-io/dk-server-foundation';
|
|
384
|
+
await runMigrations();
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Reset Migrations
|
|
388
|
+
|
|
389
|
+
Removes all existing migrations and generates a single base migration from entity definitions:
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
node app.js migration:reset
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### Character Set Standardization
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
node app.js migration:characters [charset] [collation]
|
|
399
|
+
# Defaults: utf8mb4, utf8mb4_0900_ai_ci
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
Or programmatically:
|
|
403
|
+
|
|
404
|
+
```typescript
|
|
405
|
+
import { standardizeDbCollation } from '@zyno-io/dk-server-foundation';
|
|
406
|
+
await standardizeDbCollation(db);
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
## Entity Utility Functions
|
|
410
|
+
|
|
411
|
+
```typescript
|
|
412
|
+
import { getPKFieldForEntity, getEntityFields, logSql } from '@zyno-io/dk-server-foundation';
|
|
413
|
+
|
|
414
|
+
// Get primary key field name
|
|
415
|
+
const pk = getPKFieldForEntity(User); // 'id'
|
|
416
|
+
|
|
417
|
+
// Extract only data fields (no methods or relations)
|
|
418
|
+
const fields = getEntityFields(user);
|
|
419
|
+
|
|
420
|
+
// Debug SQL output
|
|
421
|
+
logSql('SELECT * FROM users WHERE id = ?', [1]);
|
|
422
|
+
```
|