sonamu 0.10.12 → 0.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/agents/agent.d.ts +1 -1
- package/dist/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/agents/agent.js +5 -6
- package/dist/ai/agents/types.d.ts +1 -1
- package/dist/ai/agents/types.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/api.js +18 -18
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/error.js +17 -15
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/model.js +3 -2
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/options.js +16 -16
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/provider.js +9 -9
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/utils.js +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +17 -17
- package/dist/api/code-converters.d.ts +4 -2
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +100 -19
- package/dist/api/config.d.ts +16 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +28 -21
- package/dist/api/context.d.ts +2 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +18 -11
- package/dist/api/http-validator.d.ts +36 -0
- package/dist/api/http-validator.d.ts.map +1 -0
- package/dist/api/http-validator.js +72 -0
- package/dist/api/index.js +6 -4
- package/dist/api/sonamu.d.ts +59 -20
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +250 -106
- package/dist/api/websocket-helpers.d.ts +7 -5
- package/dist/api/websocket-helpers.d.ts.map +1 -1
- package/dist/api/websocket-helpers.js +6 -6
- package/dist/auth/audit-log/builders.d.ts.map +1 -1
- package/dist/auth/audit-log/builders.js +1 -1
- package/dist/auth/audit-log/client-ip.d.ts +1 -1
- package/dist/auth/audit-log/client-ip.d.ts.map +1 -1
- package/dist/auth/audit-log/client-ip.js +4 -2
- package/dist/auth/audit-log/events.d.ts +5 -1
- package/dist/auth/audit-log/events.d.ts.map +1 -1
- package/dist/auth/audit-log/events.js +1 -1
- package/dist/auth/audit-log/plugin.d.ts +0 -8
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +48 -52
- package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
- package/dist/auth/audit-log-ingestor.js +16 -12
- package/dist/auth/auth-generator.d.ts.map +1 -1
- package/dist/auth/auth-generator.js +1 -1
- package/dist/auth/better-auth-request.d.ts.map +1 -1
- package/dist/auth/better-auth-request.js +6 -5
- package/dist/auth/knex-adapter.js +1 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts +13 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/index.js +1 -1
- package/dist/auth/plugins/wrappers/admin.d.ts +1 -1
- package/dist/bin/build-config.d.ts +25 -0
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +105 -2
- package/dist/bin/cli.js +131 -27
- package/dist/bin/compiler-policy.d.ts +3 -0
- package/dist/bin/compiler-policy.d.ts.map +1 -0
- package/dist/bin/compiler-policy.js +24 -0
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +5 -3
- package/dist/bin/test-command.d.ts +22 -1
- package/dist/bin/test-command.d.ts.map +1 -1
- package/dist/bin/test-command.js +18 -10
- package/dist/bin/ts-loader-registration.d.ts +7 -1
- package/dist/bin/ts-loader-registration.d.ts.map +1 -1
- package/dist/bin/ts-loader-registration.js +13 -4
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/decorator.js +11 -4
- package/dist/compress/compress.d.ts.map +1 -1
- package/dist/compress/compress.js +1 -1
- package/dist/cone/cone-generator.d.ts +14 -1
- package/dist/cone/cone-generator.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +13 -9
- package/dist/database/_batch_update.js +1 -1
- package/dist/database/base-model.d.ts +22 -10
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +26 -16
- package/dist/database/base-model.types.d.ts +15 -3
- package/dist/database/base-model.types.d.ts.map +1 -1
- package/dist/database/db.d.ts +12 -2
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +10 -7
- package/dist/database/knex.d.ts.map +1 -1
- package/dist/database/knex.js +17 -14
- package/dist/database/puri.d.ts +11 -9
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +93 -79
- package/dist/database/puri.types.d.ts +21 -21
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +1 -1
- package/dist/database/upsert-builder.d.ts +12 -10
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +20 -12
- package/dist/dict/sd.d.ts.map +1 -1
- package/dist/dict/sd.js +1 -1
- package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.js +1 -1
- package/dist/dict/utils.d.ts.map +1 -1
- package/dist/dict/utils.js +7 -2
- package/dist/entity/entity-manager.d.ts +13 -4
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +19 -11
- package/dist/entity/entity-template-cone.d.ts +73 -5
- package/dist/entity/entity-template-cone.d.ts.map +1 -1
- package/dist/entity/entity-template-cone.js +4 -2
- package/dist/entity/entity.d.ts +6 -2
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +30 -28
- package/dist/env.d.ts +3 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -1
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +7 -2
- package/dist/exceptions/so-exceptions.d.ts +24 -20
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.js +4 -2
- package/dist/filter/utils.d.ts +7 -2
- package/dist/filter/utils.d.ts.map +1 -1
- package/dist/filter/utils.js +8 -6
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -6
- package/dist/logger/configure.d.ts.map +1 -1
- package/dist/logger/configure.js +10 -10
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +50 -46
- package/dist/migration/index-where-predicate.d.ts.map +1 -1
- package/dist/migration/index-where-predicate.js +22 -8
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +1 -1
- package/dist/migration/migrator.d.ts +3 -2
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +27 -21
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/postgresql-schema-reader.js +51 -36
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +1 -1
- package/dist/naite/naite-reporter.js +2 -2
- package/dist/naite/naite.d.ts +74 -15
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +5 -19
- package/dist/runtime-type.d.ts +6 -0
- package/dist/runtime-type.d.ts.map +1 -0
- package/dist/runtime-type.js +26 -0
- package/dist/ssr/hmr-opt-out.d.ts +26 -0
- package/dist/ssr/hmr-opt-out.d.ts.map +1 -0
- package/dist/ssr/hmr-opt-out.js +59 -0
- package/dist/ssr/renderer.d.ts.map +1 -1
- package/dist/ssr/renderer.js +4 -1
- package/dist/storage/base-file.js +14 -14
- package/dist/storage/buffered-file.d.ts +2 -2
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.js +12 -12
- package/dist/storage/s3-driver.d.ts.map +1 -1
- package/dist/storage/s3-driver.js +1 -1
- package/dist/storage/uploaded-file.d.ts +2 -2
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/storage/uploaded-file.js +8 -8
- package/dist/stream/sse.js +11 -11
- package/dist/stream/ws-core.d.ts +1 -1
- package/dist/stream/ws-core.d.ts.map +1 -1
- package/dist/stream/ws-delivery.d.ts +1 -1
- package/dist/stream/ws-delivery.d.ts.map +1 -1
- package/dist/stream/ws-delivery.js +6 -4
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
- package/dist/stream/ws-local-connection-store.js +4 -2
- package/dist/stream/ws-presence-store.js +1 -1
- package/dist/stream/ws-registry.d.ts +4 -4
- package/dist/stream/ws-registry.d.ts.map +1 -1
- package/dist/stream/ws-registry.js +4 -2
- package/dist/stream/ws-telemetry.d.ts +16 -12
- package/dist/stream/ws-telemetry.d.ts.map +1 -1
- package/dist/stream/ws-telemetry.js +22 -18
- package/dist/stream/ws.d.ts +18 -12
- package/dist/stream/ws.d.ts.map +1 -1
- package/dist/stream/ws.js +26 -22
- package/dist/syncer/api-parser.js +1 -1
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +7 -8
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +13 -14
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +5 -6
- package/dist/syncer/file-copy.d.ts +5 -0
- package/dist/syncer/file-copy.d.ts.map +1 -0
- package/dist/syncer/file-copy.js +36 -0
- package/dist/syncer/file-patterns.d.ts +1 -0
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +5 -2
- package/dist/syncer/file-tracking.d.ts.map +1 -1
- package/dist/syncer/file-tracking.js +5 -4
- package/dist/syncer/filesystem-dependencies.d.ts +15 -0
- package/dist/syncer/filesystem-dependencies.d.ts.map +1 -0
- package/dist/syncer/filesystem-dependencies.js +53 -0
- package/dist/syncer/module-loader.d.ts +1 -1
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +6 -4
- package/dist/syncer/syncer-actions.d.ts +4 -0
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +34 -17
- package/dist/syncer/syncer.d.ts +17 -6
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +71 -29
- package/dist/syncer/watcher.d.ts.map +1 -1
- package/dist/syncer/watcher.js +3 -3
- package/dist/tasks/decorator.d.ts +6 -6
- package/dist/tasks/decorator.d.ts.map +1 -1
- package/dist/tasks/decorator.js +4 -4
- package/dist/tasks/step-wrapper.d.ts +6 -4
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.js +5 -5
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +13 -7
- package/dist/template/entity-converter.d.ts +1 -1
- package/dist/template/entity-converter.d.ts.map +1 -1
- package/dist/template/entity-converter.js +2 -2
- package/dist/template/helpers.d.ts +8 -6
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +1 -1
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +4 -4
- package/dist/template/implementations/generated_http.template.d.ts +7 -4
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +21 -21
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +6 -3
- package/dist/template/implementations/http_validators.template.d.ts +18 -0
- package/dist/template/implementations/http_validators.template.d.ts.map +1 -0
- package/dist/template/implementations/http_validators.template.js +127 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +1 -1
- package/dist/template/implementations/queries.template.js +1 -1
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +79 -39
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +6 -4
- package/dist/template/implementations/view_form.template.d.ts +6 -1
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +23 -15
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +11 -6
- package/dist/template/template-manager.d.ts.map +1 -1
- package/dist/template/template-manager.js +9 -7
- package/dist/template/template-types.d.ts +12 -5
- package/dist/template/template-types.d.ts.map +1 -1
- package/dist/template/template-types.js +1 -1
- package/dist/template/template.d.ts +2 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +6 -4
- package/dist/template/zod-converter.d.ts +0 -19
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +100 -84
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/_relation-graph.js +2 -1
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +9 -6
- package/dist/testing/data-explorer.d.ts +32 -7
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +77 -31
- package/dist/testing/dev-test-routes.d.ts +8 -1
- package/dist/testing/dev-test-routes.d.ts.map +1 -1
- package/dist/testing/dev-test-routes.js +125 -108
- package/dist/testing/dev-vitest-manager.d.ts +54 -8
- package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
- package/dist/testing/dev-vitest-manager.js +24 -9
- package/dist/testing/faker-mappings.d.ts +412 -1
- package/dist/testing/faker-mappings.d.ts.map +1 -1
- package/dist/testing/faker-mappings.js +1 -1
- package/dist/testing/filesystem.d.ts +2 -0
- package/dist/testing/filesystem.d.ts.map +1 -0
- package/dist/testing/filesystem.js +7 -0
- package/dist/testing/fixture-generator.d.ts +25 -8
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +132 -73
- package/dist/testing/fixture-loader.d.ts +3 -1
- package/dist/testing/fixture-loader.d.ts.map +1 -1
- package/dist/testing/fixture-loader.js +1 -20
- package/dist/testing/fixture-manager.d.ts +8 -7
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +91 -59
- package/dist/testing/global-setup.d.ts.map +1 -1
- package/dist/testing/global-setup.js +5 -2
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +6 -3
- package/dist/types/types.d.ts +101 -99
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +234 -225
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +1 -1
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +28 -18
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +135 -128
- package/dist/ui/async-route.d.ts +3 -0
- package/dist/ui/async-route.d.ts.map +1 -0
- package/dist/ui/async-route.js +12 -0
- package/dist/ui/cdd-service.d.ts +9 -7
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +7 -5
- package/dist/ui/migrations-api.d.ts.map +1 -1
- package/dist/ui/migrations-api.js +17 -15
- package/dist/ui-web/assets/index-DV1AAq6W.js +178 -0
- package/dist/ui-web/index.html +1 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +7 -5
- package/dist/utils/fs-utils.d.ts +3 -3
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +6 -6
- package/dist/utils/model.d.ts +3 -5
- package/dist/utils/model.d.ts.map +1 -1
- package/dist/utils/model.js +1 -1
- package/dist/utils/object-utils.d.ts +1 -1
- package/dist/utils/object-utils.d.ts.map +1 -1
- package/dist/utils/object-utils.js +17 -16
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +4 -2
- package/dist/utils/runtime-value.d.ts +13 -0
- package/dist/utils/runtime-value.d.ts.map +1 -0
- package/dist/utils/runtime-value.js +40 -0
- package/dist/utils/sql-parser.d.ts +8 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +6 -3
- package/dist/utils/type-utils.d.ts.map +1 -1
- package/dist/utils/type-utils.js +10 -8
- package/dist/utils/utils.d.ts +2 -2
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +11 -8
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +7 -4
- package/dist/vector/chunking.d.ts.map +1 -1
- package/dist/vector/chunking.js +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/dist/vector/embedding.js +1 -1
- package/dist/vector/types.d.ts +3 -2
- package/dist/vector/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/ai/agents/agent.ts +5 -5
- package/src/ai/agents/types.ts +1 -1
- package/src/ai/providers/rtzr/__tests__/model.test.ts +2 -2
- package/src/ai/providers/rtzr/error.ts +5 -3
- package/src/ai/providers/rtzr/model.ts +3 -2
- package/src/ai/providers/rtzr/options.ts +10 -5
- package/src/ai/providers/rtzr/provider.ts +10 -10
- package/src/ai/providers/rtzr/utils.ts +3 -1
- package/src/api/__tests__/config.test.ts +11 -21
- package/src/api/__tests__/sonamu.http-validator.test.ts +512 -0
- package/src/api/__tests__/sonamu.websocket.test.ts +51 -41
- package/src/api/__tests__/zod-compiler-policy.test.ts +95 -0
- package/src/api/caster.ts +6 -8
- package/src/api/code-converters.ts +136 -36
- package/src/api/config.ts +62 -4
- package/src/api/context.ts +3 -3
- package/src/api/decorators.ts +28 -17
- package/src/api/http-validator.ts +149 -0
- package/src/api/sonamu.ts +459 -152
- package/src/api/websocket-helpers.ts +24 -17
- package/src/auth/audit-log/builders.ts +3 -2
- package/src/auth/audit-log/client-ip.ts +4 -2
- package/src/auth/audit-log/events.ts +15 -1
- package/src/auth/audit-log/plugin.ts +129 -200
- package/src/auth/audit-log-ingestor.ts +19 -15
- package/src/auth/auth-generator.ts +10 -5
- package/src/auth/better-auth-request.ts +4 -3
- package/src/auth/knex-adapter.ts +8 -2
- package/src/auth/plugins/entity-definitions/index.ts +6 -5
- package/src/bin/__tests__/http-validator-benchmark.test.ts +94 -0
- package/src/bin/__tests__/test-command.test.ts +9 -15
- package/src/bin/__tests__/ts-loader-register.test.ts +15 -17
- package/src/bin/__tests__/zod-compiler-build.test.ts +307 -0
- package/src/bin/build-config.ts +167 -0
- package/src/bin/cli.ts +153 -36
- package/src/bin/compiler-policy.ts +35 -0
- package/src/bin/fixture.ts +14 -3
- package/src/bin/test-command.ts +74 -29
- package/src/bin/ts-loader-registration.ts +22 -4
- package/src/cache/decorator.ts +10 -3
- package/src/compress/compress.ts +17 -4
- package/src/cone/cone-generator.ts +34 -6
- package/src/database/__tests__/db.test.ts +1 -0
- package/src/database/__tests__/puri.test.ts +16 -15
- package/src/database/__tests__/transaction-scope.test.ts +5 -0
- package/src/database/_batch_update.ts +1 -0
- package/src/database/base-model.ts +81 -50
- package/src/database/base-model.types.ts +6 -6
- package/src/database/db.ts +29 -19
- package/src/database/knex.ts +30 -17
- package/src/database/puri-subset.test-d.ts +17 -0
- package/src/database/puri.ts +181 -143
- package/src/database/puri.types.test-d.ts +31 -1
- package/src/database/puri.types.ts +23 -21
- package/src/database/upsert-builder.ts +75 -53
- package/src/dict/sd.ts +15 -5
- package/src/dict/sonamu-dictionary.ts +6 -6
- package/src/dict/utils.ts +9 -1
- package/src/entity/entity-manager.ts +26 -9
- package/src/entity/entity-template-cone.ts +5 -10
- package/src/entity/entity.ts +50 -34
- package/src/env.ts +7 -3
- package/src/exceptions/error-handler.ts +17 -2
- package/src/exceptions/so-exceptions.ts +26 -20
- package/src/filter/utils.ts +21 -11
- package/src/index.ts +3 -0
- package/src/logger/configure.ts +26 -18
- package/src/migration/__tests__/migrator.test.ts +50 -57
- package/src/migration/code-generation.ts +132 -104
- package/src/migration/index-where-predicate.ts +51 -24
- package/src/migration/migration-set.ts +11 -5
- package/src/migration/migrator.ts +68 -41
- package/src/migration/postgresql-schema-reader.ts +52 -47
- package/src/migration/slack-confirm.ts +17 -15
- package/src/naite/naite-reporter.ts +1 -1
- package/src/naite/naite.ts +97 -24
- package/src/runtime-type.ts +34 -0
- package/src/ssr/hmr-opt-out.ts +78 -0
- package/src/ssr/renderer.ts +6 -0
- package/src/storage/base-file.ts +13 -13
- package/src/storage/buffered-file.ts +11 -11
- package/src/storage/s3-driver.ts +4 -1
- package/src/storage/uploaded-file.ts +8 -8
- package/src/stream/__tests__/ws-contracts.test.ts +4 -2
- package/src/stream/__tests__/ws-telemetry.test.ts +1 -1
- package/src/stream/__tests__/ws.test.ts +30 -6
- package/src/stream/sse.ts +12 -11
- package/src/stream/ws-core.ts +1 -1
- package/src/stream/ws-delivery.ts +16 -7
- package/src/stream/ws-local-connection-store.ts +2 -3
- package/src/stream/ws-presence-store.ts +6 -1
- package/src/stream/ws-registry.ts +16 -7
- package/src/stream/ws-telemetry.ts +66 -43
- package/src/stream/ws.ts +73 -39
- package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +3 -2
- package/src/syncer/__tests__/http-validator-registry.test.ts +137 -0
- package/src/syncer/api-parser.ts +67 -27
- package/src/syncer/checksum.ts +17 -11
- package/src/syncer/code-generator.ts +25 -17
- package/src/syncer/entity-operations.ts +3 -5
- package/src/syncer/file-copy.ts +46 -0
- package/src/syncer/file-patterns.ts +11 -8
- package/src/syncer/file-tracking.ts +3 -4
- package/src/syncer/filesystem-dependencies.ts +73 -0
- package/src/syncer/module-loader.ts +8 -4
- package/src/syncer/syncer-actions.ts +56 -18
- package/src/syncer/syncer.ts +116 -43
- package/src/syncer/watcher.ts +8 -4
- package/src/tasks/decorator.ts +20 -12
- package/src/tasks/step-wrapper.ts +19 -9
- package/src/tasks/workflow-manager.ts +15 -9
- package/src/template/__tests__/http_validators.template.test.ts +160 -0
- package/src/template/__tests__/services.template.mutation.test.ts +24 -23
- package/src/template/__tests__/services.template.websocket.test.ts +21 -25
- package/src/template/entity-converter.ts +5 -2
- package/src/template/helpers.ts +8 -9
- package/src/template/implementations/generated.template.ts +5 -4
- package/src/template/implementations/generated_http.template.ts +61 -15
- package/src/template/implementations/generated_sso.template.ts +15 -4
- package/src/template/implementations/http_validators.template.ts +175 -0
- package/src/template/implementations/model.template.ts +3 -1
- package/src/template/implementations/sd.template.ts +81 -41
- package/src/template/implementations/services.template.ts +2 -2
- package/src/template/implementations/view_form.template.ts +56 -39
- package/src/template/implementations/view_list.template.ts +31 -23
- package/src/template/template-manager.ts +15 -13
- package/src/template/template-types.ts +13 -5
- package/src/template/template.ts +4 -3
- package/src/template/zod-converter.ts +206 -91
- package/src/testing/__tests__/dev-test-routes.test.ts +85 -25
- package/src/testing/__tests__/dev-vitest-manager.test.ts +15 -15
- package/src/testing/_relation-graph.ts +4 -1
- package/src/testing/bootstrap.ts +12 -5
- package/src/testing/data-explorer.ts +102 -53
- package/src/testing/dev-test-routes.ts +87 -50
- package/src/testing/dev-vitest-manager.ts +88 -32
- package/src/testing/faker-mappings.ts +2 -2
- package/src/testing/filesystem.ts +1 -0
- package/src/testing/fixture-generator.ts +191 -131
- package/src/testing/fixture-loader.ts +5 -1
- package/src/testing/fixture-manager.ts +129 -90
- package/src/testing/global-setup.ts +7 -3
- package/src/testing/index.ts +5 -0
- package/src/types/__tests__/entity-json-schema-search-text.test.ts +9 -3
- package/src/types/types.ts +184 -158
- package/src/ui/ai-api.ts +9 -7
- package/src/ui/ai-client.ts +61 -56
- package/src/ui/api.ts +727 -616
- package/src/ui/async-route.ts +4 -0
- package/src/ui/cdd-service.ts +35 -12
- package/src/ui/migrations-api.ts +63 -51
- package/src/utils/formatter.ts +7 -3
- package/src/utils/fs-utils.ts +5 -5
- package/src/utils/model.ts +4 -5
- package/src/utils/object-utils.ts +32 -22
- package/src/utils/process-utils.ts +4 -1
- package/src/utils/runtime-value.ts +43 -0
- package/src/utils/sql-parser.ts +13 -6
- package/src/utils/type-utils.ts +9 -7
- package/src/utils/utils.ts +19 -21
- package/src/utils/zod-error.ts +4 -2
- package/src/vector/chunking.ts +6 -1
- package/src/vector/embedding.ts +2 -1
- package/src/vector/types.ts +4 -2
- package/tsdown.api.config.ts +5 -2
- package/dist/ui-web/assets/index-C0m1pk6K.js +0 -177
package/src/database/db.ts
CHANGED
|
@@ -5,41 +5,46 @@ import { type Knex } from "knex";
|
|
|
5
5
|
|
|
6
6
|
import { type DatabaseConfig, type SonamuConfig } from "../api/config";
|
|
7
7
|
import { getSonamuEnvironment, type EnvironmentSnapshots, type SonamuEnvironment } from "../env";
|
|
8
|
+
import { isObjectValue } from "../utils/runtime-value";
|
|
8
9
|
import { createKnexInstance } from "./knex";
|
|
9
10
|
import { type PuriTransactionWrapper } from "./puri-wrapper";
|
|
10
11
|
import { TransactionContext } from "./transaction-context";
|
|
11
12
|
|
|
12
|
-
function isPlainObject(value:
|
|
13
|
-
return
|
|
13
|
+
function isPlainObject<Value>(value: Value): value is Value & object {
|
|
14
|
+
return isObjectValue(value) && !Array.isArray(value);
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
function mergeRecord(
|
|
17
|
-
target:
|
|
18
|
-
source:
|
|
19
|
-
):
|
|
20
|
-
|
|
21
|
-
const currentValue = target[key];
|
|
17
|
+
function mergeRecord<Target extends object, Source extends object>(
|
|
18
|
+
target: Target,
|
|
19
|
+
source: Source,
|
|
20
|
+
): Target {
|
|
21
|
+
const targetEntries = new Map(Object.entries(target));
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
for (const [key, value] of Object.entries(source)) {
|
|
24
|
+
const currentValue = targetEntries.get(key);
|
|
25
|
+
const mergedValue =
|
|
26
|
+
isPlainObject(currentValue) && isPlainObject(value)
|
|
27
|
+
? mergeRecord({ ...currentValue }, value)
|
|
28
|
+
: value;
|
|
29
|
+
Object.assign(target, { [key]: mergedValue });
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
return target;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
function mergeConfigs<T extends object>(
|
|
34
|
-
|
|
35
|
+
function mergeConfigs<T extends object>(
|
|
36
|
+
baseConfig: T,
|
|
37
|
+
...configs: (Partial<T> | undefined | null)[]
|
|
38
|
+
): T {
|
|
39
|
+
const merged = { ...baseConfig };
|
|
35
40
|
|
|
36
41
|
for (const config of configs) {
|
|
37
42
|
if (config !== undefined && config !== null) {
|
|
38
|
-
mergeRecord(merged, config
|
|
43
|
+
mergeRecord(merged, config);
|
|
39
44
|
}
|
|
40
45
|
}
|
|
41
46
|
|
|
42
|
-
return merged
|
|
47
|
+
return merged;
|
|
43
48
|
}
|
|
44
49
|
|
|
45
50
|
export type SonamuMainDBPreset = "test" | "fixture" | SonamuEnvironment;
|
|
@@ -58,6 +63,7 @@ function isConcretePreset(value: DBPreset): value is SonamuDBPreset {
|
|
|
58
63
|
}
|
|
59
64
|
|
|
60
65
|
function getReadonlyPreset(environment: SonamuEnvironment): SonamuReadonlyDBPreset {
|
|
66
|
+
// SAFETY: 쿼리 빌더의 제네릭 계약과 선행 검증이 이 타입을 보장합니다.
|
|
61
67
|
return `${environment}_readonly` as SonamuReadonlyDBPreset;
|
|
62
68
|
}
|
|
63
69
|
|
|
@@ -135,6 +141,7 @@ function neutralizeEnvironmentConnectionFields(
|
|
|
135
141
|
}
|
|
136
142
|
|
|
137
143
|
function assertNoLegacyDatabaseConfig(config: SonamuConfig["database"]): void {
|
|
144
|
+
// SAFETY: 쿼리 빌더의 제네릭 계약과 선행 검증이 이 타입을 보장합니다.
|
|
138
145
|
const legacyConfig = config as SonamuConfig["database"] & {
|
|
139
146
|
name?: unknown;
|
|
140
147
|
environments?: unknown;
|
|
@@ -243,6 +250,7 @@ export class DBClass {
|
|
|
243
250
|
|
|
244
251
|
if (!this.workerDBs.has(workerId)) {
|
|
245
252
|
const baseTestConfig = dbConfig.test;
|
|
253
|
+
// SAFETY: 쿼리 빌더의 제네릭 계약과 선행 검증이 이 타입을 보장합니다.
|
|
246
254
|
const connection = baseTestConfig.connection as { database: string };
|
|
247
255
|
const workerDbName = `${connection.database}_${workerId}`;
|
|
248
256
|
|
|
@@ -308,7 +316,7 @@ export class DBClass {
|
|
|
308
316
|
config: SonamuConfig["database"],
|
|
309
317
|
projectName?: string,
|
|
310
318
|
snapshots?: EnvironmentSnapshots,
|
|
311
|
-
)
|
|
319
|
+
) {
|
|
312
320
|
assertNoLegacyDatabaseConfig(config);
|
|
313
321
|
|
|
314
322
|
const baseName = getProjectDatabaseBaseName(projectName);
|
|
@@ -325,6 +333,7 @@ export class DBClass {
|
|
|
325
333
|
},
|
|
326
334
|
config.defaultOptions,
|
|
327
335
|
);
|
|
336
|
+
// SAFETY: 쿼리 빌더의 제네릭 계약과 선행 검증이 이 타입을 보장합니다.
|
|
328
337
|
const baseConnection = defaultKnexConfig.connection as Knex.PgConnectionConfig | undefined;
|
|
329
338
|
const environmentFallbackConnection = snapshots
|
|
330
339
|
? neutralizeEnvironmentConnectionFields(baseConnection)
|
|
@@ -354,6 +363,7 @@ export class DBClass {
|
|
|
354
363
|
connection: connectionFromEnv({
|
|
355
364
|
baseName,
|
|
356
365
|
suffix: environment,
|
|
366
|
+
// SAFETY: 쿼리 빌더의 제네릭 계약과 선행 검증이 이 타입을 보장합니다.
|
|
357
367
|
baseConnection: mainConfig(environment).connection as Knex.PgConnectionConfig,
|
|
358
368
|
prefix: "SONAMU_DB_READONLY",
|
|
359
369
|
env: envForPreset(environment),
|
|
@@ -380,7 +390,7 @@ export class DBClass {
|
|
|
380
390
|
staging_readonly: readonlyConfig("staging"),
|
|
381
391
|
production: mainConfig("production"),
|
|
382
392
|
production_readonly: readonlyConfig("production"),
|
|
383
|
-
};
|
|
393
|
+
} satisfies SonamuDBConfig;
|
|
384
394
|
}
|
|
385
395
|
|
|
386
396
|
public testTransaction: Knex.Transaction | null = null;
|
package/src/database/knex.ts
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import { type Knex } from "knex";
|
|
2
2
|
import knex from "knex";
|
|
3
3
|
|
|
4
|
+
import { isObjectValue } from "../utils/runtime-value";
|
|
5
|
+
|
|
6
|
+
type KnexClientWithConnection = Knex.Client & {
|
|
7
|
+
connection?: {
|
|
8
|
+
stream?: {
|
|
9
|
+
setKeepAlive?: (enable: boolean, initialDelay: number) => void;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
|
|
4
14
|
export function createKnexInstance(config: Knex.Config): Knex {
|
|
5
|
-
if (config.connection &&
|
|
6
|
-
const
|
|
15
|
+
if (config.connection && isObjectValue(config.connection)) {
|
|
16
|
+
const keepAlive = "keepAlive" in config.connection ? config.connection.keepAlive : undefined;
|
|
17
|
+
const initialDelay =
|
|
18
|
+
"keepAliveInitialDelayMillis" in config.connection
|
|
19
|
+
? config.connection.keepAliveInitialDelayMillis
|
|
20
|
+
: undefined;
|
|
7
21
|
|
|
8
|
-
if (
|
|
9
|
-
|
|
10
|
-
|
|
22
|
+
if (keepAlive === undefined) {
|
|
23
|
+
Object.assign(config.connection, {
|
|
24
|
+
keepAlive: true,
|
|
25
|
+
keepAliveInitialDelayMillis: initialDelay ?? 10000,
|
|
26
|
+
});
|
|
11
27
|
}
|
|
12
28
|
}
|
|
13
29
|
|
|
@@ -23,22 +39,19 @@ export function createKnexInstance(config: Knex.Config): Knex {
|
|
|
23
39
|
createTimeoutMillis: 30000,
|
|
24
40
|
...config.pool,
|
|
25
41
|
// validate/afterCreate는 항상 프레임워크 기본값을 사용한다.
|
|
26
|
-
validate: (connection:
|
|
27
|
-
if (
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
return
|
|
42
|
+
validate: <Connection>(connection: Connection) => {
|
|
43
|
+
if (!isObjectValue(connection)) return false;
|
|
44
|
+
const isEnding = "_ending" in connection && connection["_ending"] === true;
|
|
45
|
+
const isClosed = "_closed" in connection && connection["_closed"] === true;
|
|
46
|
+
return !isEnding && !isClosed;
|
|
31
47
|
},
|
|
32
48
|
afterCreate: ((
|
|
33
|
-
conn:
|
|
49
|
+
conn: KnexClientWithConnection,
|
|
34
50
|
done: (err: Error | null, conn: Knex.Client) => void,
|
|
35
51
|
) => {
|
|
36
|
-
// pg driver
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
| undefined;
|
|
40
|
-
if (stream?.stream?.setKeepAlive) {
|
|
41
|
-
stream.stream.setKeepAlive(true, 10000);
|
|
52
|
+
// pg driver 소켓에 keepAlive를 적용해 유휴 연결 단절을 줄입니다.
|
|
53
|
+
if (conn.connection?.stream?.setKeepAlive) {
|
|
54
|
+
conn.connection.stream.setKeepAlive(true, 10000);
|
|
42
55
|
}
|
|
43
56
|
|
|
44
57
|
done(null, conn);
|
|
@@ -13,6 +13,7 @@ describe("Hydrate", () => {
|
|
|
13
13
|
type Input = { id: number; name: string };
|
|
14
14
|
type Result = Hydrate<Input>;
|
|
15
15
|
|
|
16
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
16
17
|
const result = {} as Result;
|
|
17
18
|
expectTypeOf(result).toEqualTypeOf<Hydrate<Input>>();
|
|
18
19
|
});
|
|
@@ -21,6 +22,7 @@ describe("Hydrate", () => {
|
|
|
21
22
|
type Input = { id: number; user__name: string; user__email: string };
|
|
22
23
|
type Result = Hydrate<Input>;
|
|
23
24
|
|
|
25
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
24
26
|
const result = {} as Result;
|
|
25
27
|
expectTypeOf(result).toEqualTypeOf<{
|
|
26
28
|
id: number;
|
|
@@ -37,6 +39,7 @@ describe("Hydrate", () => {
|
|
|
37
39
|
};
|
|
38
40
|
type Result = Hydrate<Input>;
|
|
39
41
|
|
|
42
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
40
43
|
const result = {} as Result;
|
|
41
44
|
expectTypeOf(result).toEqualTypeOf<{
|
|
42
45
|
id: number;
|
|
@@ -57,6 +60,7 @@ describe("Hydrate", () => {
|
|
|
57
60
|
};
|
|
58
61
|
type Result = Hydrate<Input>;
|
|
59
62
|
|
|
63
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
60
64
|
const result = {} as Result;
|
|
61
65
|
expectTypeOf(result).toEqualTypeOf<{
|
|
62
66
|
id: number;
|
|
@@ -69,6 +73,7 @@ describe("Hydrate", () => {
|
|
|
69
73
|
type Input = {};
|
|
70
74
|
type Result = Hydrate<Input>;
|
|
71
75
|
|
|
76
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
72
77
|
const result = {} as Result;
|
|
73
78
|
expectTypeOf(result).toEqualTypeOf<{}>();
|
|
74
79
|
});
|
|
@@ -81,6 +86,7 @@ describe("Hydrate", () => {
|
|
|
81
86
|
};
|
|
82
87
|
type Result = Hydrate<Input>;
|
|
83
88
|
|
|
89
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
84
90
|
const result = {} as Result;
|
|
85
91
|
expectTypeOf(result).toEqualTypeOf<{
|
|
86
92
|
id: number;
|
|
@@ -97,6 +103,7 @@ describe("Hydrate", () => {
|
|
|
97
103
|
};
|
|
98
104
|
type Result = Hydrate<Input>;
|
|
99
105
|
|
|
106
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
100
107
|
const result = {} as Result;
|
|
101
108
|
expectTypeOf(result).toEqualTypeOf<{
|
|
102
109
|
id: number;
|
|
@@ -122,6 +129,7 @@ describe("LoadersResult", () => {
|
|
|
122
129
|
];
|
|
123
130
|
type Result = LoadersResult<Loaders>;
|
|
124
131
|
|
|
132
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
125
133
|
const result = {} as Result;
|
|
126
134
|
expectTypeOf(result).toHaveProperty("posts");
|
|
127
135
|
expectTypeOf(result).toEqualTypeOf<{ posts: { id: number; title: string }[] }>();
|
|
@@ -154,6 +162,7 @@ describe("LoadersResult", () => {
|
|
|
154
162
|
];
|
|
155
163
|
type Result = LoadersResult<Loaders>;
|
|
156
164
|
|
|
165
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
157
166
|
const result = {} as Result;
|
|
158
167
|
expectTypeOf(result).toHaveProperty("posts");
|
|
159
168
|
expectTypeOf(result).toEqualTypeOf<{
|
|
@@ -193,6 +202,7 @@ describe("LoadersResult", () => {
|
|
|
193
202
|
];
|
|
194
203
|
type Result = LoadersResult<Loaders>;
|
|
195
204
|
|
|
205
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
196
206
|
const result = {} as Result;
|
|
197
207
|
expectTypeOf(result).toEqualTypeOf<{
|
|
198
208
|
items: {
|
|
@@ -245,6 +255,7 @@ describe("LoadersResult", () => {
|
|
|
245
255
|
type Loaders = [ProjectLoader, DepartmentLoader, EmployeeLoader];
|
|
246
256
|
type Result = LoadersResult<Loaders>;
|
|
247
257
|
|
|
258
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
248
259
|
const result = {} as Result;
|
|
249
260
|
expectTypeOf(result).toHaveProperty("projects");
|
|
250
261
|
expectTypeOf(result).toHaveProperty("employees");
|
|
@@ -284,6 +295,7 @@ describe("InferAllSubsets", () => {
|
|
|
284
295
|
// Result
|
|
285
296
|
type Result = InferAllSubsets<SubsetQueries, LoaderQueries>;
|
|
286
297
|
|
|
298
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
287
299
|
const result = {} as Result;
|
|
288
300
|
expectTypeOf(result).toHaveProperty("A");
|
|
289
301
|
expectTypeOf(result.A).toEqualTypeOf<{
|
|
@@ -331,6 +343,7 @@ describe("InferAllSubsets", () => {
|
|
|
331
343
|
// Result
|
|
332
344
|
type Result = InferAllSubsets<SubsetQueries, LoaderQueries>;
|
|
333
345
|
|
|
346
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
334
347
|
const result = {} as Result;
|
|
335
348
|
expectTypeOf(result).toHaveProperty("A");
|
|
336
349
|
expectTypeOf(result).toEqualTypeOf<{
|
|
@@ -382,6 +395,7 @@ describe("InferAllSubsets", () => {
|
|
|
382
395
|
// Result
|
|
383
396
|
type Result = InferAllSubsets<SubsetQueries, LoaderQueries>;
|
|
384
397
|
|
|
398
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
385
399
|
const result = {} as Result;
|
|
386
400
|
expectTypeOf(result).toEqualTypeOf<{
|
|
387
401
|
A: {
|
|
@@ -436,6 +450,7 @@ describe("InferAllSubsets", () => {
|
|
|
436
450
|
|
|
437
451
|
type Result = InferAllSubsets<SubsetQueries, LoaderQueries>;
|
|
438
452
|
|
|
453
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
439
454
|
const result = {} as Result;
|
|
440
455
|
expectTypeOf(result).toEqualTypeOf<{
|
|
441
456
|
A: {
|
|
@@ -492,6 +507,7 @@ describe("InferAllSubsets", () => {
|
|
|
492
507
|
// Result
|
|
493
508
|
type Result = InferAllSubsets<SubsetQueries, LoaderQueries>;
|
|
494
509
|
|
|
510
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
495
511
|
const result = {} as Result;
|
|
496
512
|
expectTypeOf(result).toEqualTypeOf<{
|
|
497
513
|
A: { id: number; name: string; email: string; department: { name: string } };
|
|
@@ -553,6 +569,7 @@ describe("InferAllSubsets", () => {
|
|
|
553
569
|
// Result
|
|
554
570
|
type Result = InferAllSubsets<SubsetQueries, LoaderQueries>;
|
|
555
571
|
|
|
572
|
+
// SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
|
|
556
573
|
const result = {} as Result;
|
|
557
574
|
expectTypeOf(result).toEqualTypeOf<{
|
|
558
575
|
A: {
|