sonamu 0.8.26 → 0.9.0
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/bin/cli.js +60 -13
- package/dist/_virtual/rolldown_runtime.js +39 -0
- package/dist/ai/agents/agent.d.ts +3 -3
- package/dist/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/agents/agent.js +76 -73
- package/dist/ai/agents/index.js +3 -3
- package/dist/ai/agents/types.d.ts +3 -3
- package/dist/ai/agents/types.d.ts.map +1 -1
- package/dist/ai/agents/types.js +1 -3
- package/dist/ai/index.js +3 -2
- package/dist/ai/providers/rtzr/api.js +25 -25
- package/dist/ai/providers/rtzr/error.js +25 -26
- package/dist/ai/providers/rtzr/index.js +5 -5
- package/dist/ai/providers/rtzr/model.d.ts +1 -1
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/model.js +117 -133
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/options.js +35 -41
- package/dist/ai/providers/rtzr/provider.d.ts +1 -1
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/provider.js +53 -51
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/utils.js +84 -84
- package/dist/api/base-frame.d.ts +2 -2
- package/dist/api/base-frame.d.ts.map +1 -1
- package/dist/api/base-frame.js +29 -19
- package/dist/api/caster.d.ts +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +51 -61
- package/dist/api/code-converters.d.ts +4 -3
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +226 -249
- package/dist/api/config.d.ts +17 -17
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +37 -30
- package/dist/api/context.d.ts +10 -10
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +8 -2
- package/dist/api/decorators.d.ts +8 -8
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +245 -268
- package/dist/api/index.js +39 -7
- package/dist/api/secret.js +22 -15
- package/dist/api/sonamu.d.ts +15 -15
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +1012 -1131
- package/dist/api/validator.js +88 -79
- package/dist/auth/auth-generator.d.ts.map +1 -1
- package/dist/auth/auth-generator.js +203 -200
- package/dist/auth/better-auth-entities.d.ts +2 -2
- package/dist/auth/better-auth-entities.d.ts.map +1 -1
- package/dist/auth/better-auth-entities.js +369 -429
- package/dist/auth/index.js +21 -6
- package/dist/auth/knex-adapter.d.ts +2 -2
- package/dist/auth/knex-adapter.d.ts.map +1 -1
- package/dist/auth/knex-adapter.js +153 -157
- package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/admin.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/admin.js +58 -56
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/anonymous.js +20 -20
- package/dist/auth/plugins/entity-definitions/api-key.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/api-key.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/api-key.js +185 -196
- package/dist/auth/plugins/entity-definitions/index.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/index.js +26 -29
- package/dist/auth/plugins/entity-definitions/jwt.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/jwt.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/jwt.js +62 -64
- package/dist/auth/plugins/entity-definitions/organization.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/organization.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/organization.js +362 -421
- package/dist/auth/plugins/entity-definitions/passkey.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/passkey.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/passkey.js +115 -126
- package/dist/auth/plugins/entity-definitions/phone-number.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/phone-number.js +31 -40
- package/dist/auth/plugins/entity-definitions/sso.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/sso.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/sso.js +94 -107
- package/dist/auth/plugins/entity-definitions/two-factor.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/two-factor.js +78 -92
- package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/types.js +1 -10
- package/dist/auth/plugins/entity-definitions/username.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/username.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/username.js +31 -40
- package/dist/auth/plugins/index.js +12 -3
- package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +28 -29
- package/dist/auth/plugins/wrappers/anonymous.d.ts +2 -1
- package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/anonymous.js +23 -22
- package/dist/auth/plugins/wrappers/api-key.d.ts +2 -1
- package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/api-key.js +39 -34
- package/dist/auth/plugins/wrappers/index.js +11 -11
- package/dist/auth/plugins/wrappers/jwt.d.ts +2 -1
- package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/jwt.js +31 -26
- package/dist/auth/plugins/wrappers/organization.d.ts +2 -1
- package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/organization.js +65 -62
- package/dist/auth/plugins/wrappers/passkey.d.ts +2 -1
- package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/passkey.js +33 -28
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +26 -23
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.js +37 -31
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +31 -28
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +23 -23
- package/dist/bin/build-config.js +31 -31
- package/dist/bin/cli.js +1063 -1204
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +266 -259
- package/dist/bin/hmr-hook-register.d.ts.map +1 -1
- package/dist/bin/hmr-hook-register.js +19 -18
- package/dist/bin/test-command.d.ts.map +1 -1
- package/dist/bin/test-command.js +180 -177
- package/dist/bin/ts-loader-register.js +13 -6
- package/dist/bin/ts-loader-registration.d.ts.map +1 -1
- package/dist/bin/ts-loader-registration.js +28 -38
- package/dist/cache/cache-manager.d.ts +1 -1
- package/dist/cache/cache-manager.d.ts.map +1 -1
- package/dist/cache/cache-manager.js +20 -15
- package/dist/cache/decorator.d.ts +1 -1
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/decorator.js +84 -76
- package/dist/cache/drivers.js +21 -34
- package/dist/cache/index.js +10 -7
- package/dist/cache/types.d.ts +2 -2
- package/dist/cache/types.d.ts.map +1 -1
- package/dist/cache/types.js +1 -6
- package/dist/cache-control/cache-control.d.ts +2 -2
- package/dist/cache-control/cache-control.d.ts.map +1 -1
- package/dist/cache-control/cache-control.js +106 -122
- package/dist/cache-control/types.d.ts +2 -2
- package/dist/cache-control/types.d.ts.map +1 -1
- package/dist/cache-control/types.js +1 -19
- package/dist/compress/compress.d.ts +1 -1
- package/dist/compress/compress.d.ts.map +1 -1
- package/dist/compress/compress.js +58 -56
- package/dist/compress/index.js +7 -2
- package/dist/compress/types.js +1 -11
- package/dist/cone/cone-generator.d.ts +1 -1
- package/dist/cone/cone-generator.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +216 -219
- package/dist/database/_batch_update.d.ts +1 -1
- package/dist/database/_batch_update.d.ts.map +1 -1
- package/dist/database/_batch_update.js +107 -102
- package/dist/database/base-model.d.ts +8 -9
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +371 -392
- package/dist/database/base-model.types.d.ts +5 -5
- package/dist/database/base-model.types.d.ts.map +1 -1
- package/dist/database/base-model.types.js +1 -20
- package/dist/database/db.d.ts +5 -2
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +185 -171
- package/dist/database/knex.d.ts +1 -1
- package/dist/database/knex.d.ts.map +1 -1
- package/dist/database/knex.js +48 -42
- package/dist/database/puri-subset.types.d.ts +6 -7
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-subset.types.js +1 -16
- package/dist/database/puri-wrapper.d.ts +6 -6
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +99 -101
- package/dist/database/puri.d.ts +4 -5
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +1021 -1227
- package/dist/database/puri.types.d.ts +6 -6
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +15 -6
- package/dist/database/transaction-context.d.ts +2 -2
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/transaction-context.js +22 -13
- package/dist/database/upsert-builder.d.ts +3 -3
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +405 -465
- package/dist/dict/en.js +72 -74
- package/dist/dict/index.js +13 -13
- package/dist/dict/ko.js +72 -74
- package/dist/dict/rc-keys.js +150 -168
- package/dist/dict/sd.d.ts +3 -1
- package/dist/dict/sd.d.ts.map +1 -1
- package/dist/dict/sd.js +54 -40
- package/dist/dict/sonamu-dictionary.d.ts +1 -1
- package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.js +887 -955
- package/dist/dict/types.js +1 -7
- package/dist/dict/utils.js +26 -24
- package/dist/entity/entity-manager.d.ts +9 -9
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +226 -223
- package/dist/entity/entity-template-cone.d.ts +1 -1
- package/dist/entity/entity-template-cone.d.ts.map +1 -1
- package/dist/entity/entity-template-cone.js +152 -151
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +952 -1089
- package/dist/exceptions/error-handler.d.ts +1 -1
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +32 -27
- package/dist/exceptions/so-exceptions.d.ts +1 -1
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.js +61 -68
- package/dist/filter/index.js +9 -3
- package/dist/filter/types.js +92 -88
- package/dist/filter/utils.d.ts +1 -1
- package/dist/filter/utils.d.ts.map +1 -1
- package/dist/filter/utils.js +147 -161
- package/dist/index.js +87 -40
- package/dist/logger/category.d.ts.map +1 -1
- package/dist/logger/category.js +30 -29
- package/dist/logger/configure.d.ts.map +1 -1
- package/dist/logger/configure.js +83 -107
- package/dist/migration/code-generation.d.ts +2 -2
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +1385 -1578
- package/dist/migration/migration-set.d.ts +1 -1
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +177 -227
- package/dist/migration/migrator.d.ts +4 -3
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +340 -345
- package/dist/migration/postgresql-schema-reader.d.ts +2 -2
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/postgresql-schema-reader.js +506 -564
- package/dist/migration/slack-confirm.d.ts +2 -2
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +205 -193
- package/dist/migration/types.d.ts +2 -2
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/migration/types.js +1 -3
- package/dist/naite/messaging-types.d.ts +1 -0
- package/dist/naite/messaging-types.d.ts.map +1 -1
- package/dist/naite/messaging-types.js +1 -7
- package/dist/naite/naite-reporter.d.ts +2 -2
- package/dist/naite/naite-reporter.d.ts.map +1 -1
- package/dist/naite/naite-reporter.js +127 -120
- package/dist/naite/naite.d.ts +3 -2
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +266 -300
- package/dist/ssr/index.d.ts +2 -2
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +13 -3
- package/dist/ssr/registry.d.ts +1 -1
- package/dist/ssr/registry.d.ts.map +1 -1
- package/dist/ssr/registry.js +45 -37
- package/dist/ssr/renderer.d.ts +4 -4
- package/dist/ssr/renderer.d.ts.map +1 -1
- package/dist/ssr/renderer.js +84 -91
- package/dist/ssr/types.d.ts +2 -2
- package/dist/ssr/types.d.ts.map +1 -1
- package/dist/ssr/types.js +1 -3
- package/dist/storage/base-file.js +54 -41
- 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 +51 -44
- package/dist/storage/drivers.d.ts +2 -2
- package/dist/storage/drivers.d.ts.map +1 -1
- package/dist/storage/drivers.js +12 -7
- package/dist/storage/index.js +14 -7
- package/dist/storage/s3-driver.d.ts +2 -2
- package/dist/storage/s3-driver.d.ts.map +1 -1
- package/dist/storage/s3-driver.js +52 -48
- package/dist/storage/storage-manager.d.ts +2 -2
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +33 -25
- package/dist/storage/types.d.ts +2 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +1 -5
- package/dist/storage/uploaded-file.d.ts +1 -1
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/storage/uploaded-file.js +45 -35
- package/dist/stream/index.js +7 -2
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +72 -67
- package/dist/syncer/api-parser.d.ts +1 -1
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +224 -245
- package/dist/syncer/checksum.d.ts +1 -1
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +86 -72
- package/dist/syncer/code-generator.d.ts +2 -2
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +154 -160
- package/dist/syncer/entity-operations.d.ts +1 -1
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +63 -54
- package/dist/syncer/file-patterns.d.ts +1 -1
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +38 -38
- package/dist/syncer/index.js +19 -8
- package/dist/syncer/module-loader.d.ts +5 -5
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +83 -78
- package/dist/syncer/syncer-actions.d.ts +2 -2
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +76 -91
- package/dist/syncer/syncer.d.ts +7 -6
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +426 -492
- package/dist/tasks/decorator.d.ts +3 -3
- package/dist/tasks/decorator.d.ts.map +1 -1
- package/dist/tasks/decorator.js +32 -28
- package/dist/tasks/step-wrapper.d.ts +1 -1
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.js +42 -41
- package/dist/tasks/workflow-manager.d.ts +2 -2
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +192 -221
- 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 +103 -103
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +163 -163
- package/dist/template/implementations/entity.template.d.ts +1 -1
- package/dist/template/implementations/entity.template.d.ts.map +1 -1
- package/dist/template/implementations/entity.template.js +76 -85
- package/dist/template/implementations/entry-server.template.d.ts +1 -1
- package/dist/template/implementations/entry-server.template.d.ts.map +1 -1
- package/dist/template/implementations/entry-server.template.js +32 -27
- package/dist/template/implementations/generated.template.d.ts +1 -1
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +254 -275
- package/dist/template/implementations/generated_http.template.d.ts +2 -2
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +114 -133
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +249 -275
- package/dist/template/implementations/init_types.template.d.ts +1 -1
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.js +40 -34
- package/dist/template/implementations/model.template.d.ts +1 -1
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +56 -53
- package/dist/template/implementations/model_test.template.d.ts +1 -1
- package/dist/template/implementations/model_test.template.d.ts.map +1 -1
- package/dist/template/implementations/model_test.template.js +32 -24
- package/dist/template/implementations/queries.template.d.ts +1 -1
- package/dist/template/implementations/queries.template.d.ts.map +1 -1
- package/dist/template/implementations/queries.template.js +84 -89
- package/dist/template/implementations/sd.template.d.ts +1 -1
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +137 -144
- package/dist/template/implementations/services.template.d.ts +1 -1
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +164 -189
- package/dist/template/implementations/view_form.template.d.ts +1 -1
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +258 -285
- package/dist/template/implementations/view_id_all_select.template.d.ts +1 -1
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_all_select.template.js +31 -25
- package/dist/template/implementations/view_list.template.d.ts +1 -1
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +304 -355
- package/dist/template/implementations/view_search_input.template.d.ts +1 -1
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +31 -27
- package/dist/template/index.js +21 -7
- package/dist/template/template-manager.d.ts +1 -1
- package/dist/template/template-manager.d.ts.map +1 -1
- package/dist/template/template-manager.js +132 -123
- package/dist/template/template-types.js +8 -6
- package/dist/template/template.d.ts +2 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +73 -68
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +603 -657
- package/dist/testing/_relation-graph.d.ts +1 -1
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/_relation-graph.js +93 -88
- package/dist/testing/bootstrap.d.ts +22 -13
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +114 -114
- package/dist/testing/data-explorer.d.ts +3 -3
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +237 -265
- package/dist/testing/dev-test-routes.d.ts +2 -2
- package/dist/testing/dev-test-routes.d.ts.map +1 -1
- package/dist/testing/dev-test-routes.js +258 -249
- package/dist/testing/dev-vitest-manager.d.ts +1 -1
- package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
- package/dist/testing/dev-vitest-manager.js +514 -539
- package/dist/testing/faker-mappings.js +422 -420
- package/dist/testing/fixture-generator.d.ts +3 -3
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +1216 -1346
- package/dist/testing/fixture-loader.js +26 -25
- package/dist/testing/fixture-manager.d.ts +3 -3
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +706 -776
- package/dist/testing/global-setup.js +53 -49
- package/dist/testing/index.js +19 -11
- package/dist/testing/naite-vitest-reporter.js +18 -13
- package/dist/testing/parallel-db-manager.d.ts +1 -1
- package/dist/testing/parallel-db-manager.d.ts.map +1 -1
- package/dist/testing/parallel-db-manager.js +63 -78
- package/dist/testing/vitest-helpers.d.ts +1 -1
- package/dist/testing/vitest-helpers.d.ts.map +1 -1
- package/dist/testing/vitest-helpers.js +37 -33
- package/dist/types/types.d.ts +28 -28
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +764 -890
- package/dist/ui/ai-api.d.ts +1 -1
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +52 -42
- package/dist/ui/ai-client.d.ts +1 -2
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +353 -388
- package/dist/ui/api.d.ts +1 -1
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +903 -1145
- package/dist/ui/cdd-service.d.ts +1 -1
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +406 -407
- package/dist/ui/cdd-types.js +1 -3
- package/dist/ui-web/assets/index-C-Zz-wYg.css +1 -0
- package/dist/ui-web/assets/index-DejDON8K.js +238 -0
- package/dist/ui-web/index.html +3 -3
- package/dist/utils/async-utils.js +57 -45
- package/dist/utils/console-util.d.ts.map +1 -1
- package/dist/utils/console-util.js +104 -87
- package/dist/utils/controller.js +26 -19
- package/dist/utils/esm-utils.js +49 -38
- package/dist/utils/formatter.d.ts +1 -2
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +89 -115
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +68 -65
- package/dist/utils/lodash-able.js +11 -4
- package/dist/utils/model.d.ts +1 -1
- package/dist/utils/model.d.ts.map +1 -1
- package/dist/utils/model.js +21 -19
- package/dist/utils/object-utils.js +148 -186
- package/dist/utils/path-utils.js +67 -57
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +37 -31
- package/dist/utils/sql-parser.d.ts +1 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +40 -40
- package/dist/utils/type-utils.js +44 -43
- package/dist/utils/utils.d.ts +2 -3
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +81 -93
- package/dist/utils/zod-error.d.ts +1 -1
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +24 -17
- package/dist/vector/chunking.d.ts +1 -1
- package/dist/vector/chunking.d.ts.map +1 -1
- package/dist/vector/chunking.js +100 -94
- package/dist/vector/config.d.ts +1 -1
- package/dist/vector/config.d.ts.map +1 -1
- package/dist/vector/config.js +76 -78
- package/dist/vector/embedding.d.ts +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/dist/vector/embedding.js +128 -125
- package/dist/vector/index.js +5 -5
- package/dist/vector/types.js +1 -5
- package/package.json +31 -36
- package/src/ai/agents/agent.ts +12 -5
- package/src/ai/agents/types.ts +5 -5
- package/src/ai/providers/rtzr/model.ts +8 -10
- package/src/ai/providers/rtzr/options.ts +2 -1
- package/src/ai/providers/rtzr/provider.ts +5 -3
- package/src/ai/providers/rtzr/utils.ts +2 -7
- package/src/api/__tests__/config.test.ts +15 -8
- package/src/api/base-frame.ts +5 -3
- package/src/api/caster.ts +7 -6
- package/src/api/code-converters.ts +23 -26
- package/src/api/config.ts +23 -17
- package/src/api/context.ts +18 -11
- package/src/api/decorators.ts +17 -18
- package/src/api/sonamu.ts +44 -49
- package/src/auth/auth-generator.ts +4 -6
- package/src/auth/better-auth-entities.ts +3 -2
- package/src/auth/knex-adapter.ts +6 -5
- package/src/auth/plugins/entity-definitions/admin.ts +1 -1
- package/src/auth/plugins/entity-definitions/anonymous.ts +1 -1
- package/src/auth/plugins/entity-definitions/api-key.ts +1 -1
- package/src/auth/plugins/entity-definitions/index.ts +1 -1
- package/src/auth/plugins/entity-definitions/jwt.ts +1 -1
- package/src/auth/plugins/entity-definitions/organization.ts +1 -1
- package/src/auth/plugins/entity-definitions/passkey.ts +1 -1
- package/src/auth/plugins/entity-definitions/phone-number.ts +1 -1
- package/src/auth/plugins/entity-definitions/sso.ts +1 -1
- package/src/auth/plugins/entity-definitions/two-factor.ts +1 -1
- package/src/auth/plugins/entity-definitions/types.ts +1 -1
- package/src/auth/plugins/entity-definitions/username.ts +1 -1
- package/src/auth/plugins/wrappers/admin.ts +3 -1
- package/src/auth/plugins/wrappers/anonymous.ts +3 -1
- package/src/auth/plugins/wrappers/api-key.ts +3 -1
- package/src/auth/plugins/wrappers/jwt.ts +3 -1
- package/src/auth/plugins/wrappers/organization.ts +3 -1
- package/src/auth/plugins/wrappers/passkey.ts +3 -1
- package/src/auth/plugins/wrappers/phone-number.ts +3 -1
- package/src/auth/plugins/wrappers/sso.ts +2 -1
- package/src/auth/plugins/wrappers/two-factor.ts +3 -1
- package/src/auth/plugins/wrappers/username.ts +3 -1
- package/src/bin/__tests__/ts-loader-register.test.ts +7 -12
- package/src/bin/build-config.ts +3 -3
- package/src/bin/cli.ts +27 -25
- package/src/bin/fixture.ts +4 -2
- package/src/bin/hmr-hook-register.ts +1 -0
- package/src/bin/test-command.ts +4 -2
- package/src/bin/ts-loader-registration.ts +6 -22
- package/src/cache/cache-manager.ts +2 -1
- package/src/cache/decorator.ts +2 -2
- package/src/cache/types.ts +3 -3
- package/src/cache-control/cache-control.ts +3 -2
- package/src/cache-control/types.ts +2 -2
- package/src/compress/compress.ts +1 -1
- package/src/cone/cone-generator.ts +5 -3
- package/src/database/_batch_update.ts +1 -1
- package/src/database/base-model.ts +20 -14
- package/src/database/base-model.types.ts +12 -11
- package/src/database/db.ts +56 -21
- package/src/database/knex.ts +2 -2
- package/src/database/puri-subset.test-d.ts +33 -32
- package/src/database/puri-subset.types.ts +6 -7
- package/src/database/puri-wrapper.ts +29 -26
- package/src/database/puri.ts +36 -34
- package/src/database/puri.types.test-d.ts +6 -5
- package/src/database/puri.types.ts +9 -12
- package/src/database/transaction-context.ts +2 -2
- package/src/database/upsert-builder.ts +17 -10
- package/src/dict/sd.ts +17 -4
- package/src/dict/sonamu-dictionary.ts +23 -17
- package/src/entity/entity-manager.ts +9 -7
- package/src/entity/entity-template-cone.ts +10 -3
- package/src/entity/entity.ts +20 -16
- package/src/exceptions/error-handler.ts +2 -1
- package/src/exceptions/so-exceptions.ts +1 -1
- package/src/filter/utils.ts +3 -2
- package/src/logger/category.ts +1 -0
- package/src/logger/configure.ts +5 -5
- package/src/migration/__tests__/code-generation.search-text.test.ts +2 -3
- package/src/migration/code-generation.ts +26 -25
- package/src/migration/migration-set.ts +16 -18
- package/src/migration/migrator.ts +38 -33
- package/src/migration/postgresql-schema-reader.ts +12 -12
- package/src/migration/slack-confirm.ts +5 -4
- package/src/migration/types.ts +2 -2
- package/src/naite/messaging-types.ts +1 -1
- package/src/naite/naite-reporter.ts +5 -3
- package/src/naite/naite.ts +12 -7
- package/src/shared/app.shared.ts.txt +2 -2
- package/src/shared/web.shared.ts.txt +2 -2
- package/src/skills/AGENTS.md +19 -18
- package/src/skills/commands/sonamu-skills.md +9 -9
- package/src/skills/sonamu/SKILL.md +111 -104
- package/src/skills/sonamu/ai-agents.md +27 -26
- package/src/skills/sonamu/api.md +81 -69
- package/src/skills/sonamu/auth-migration.md +13 -27
- package/src/skills/sonamu/auth-plugins.md +41 -31
- package/src/skills/sonamu/auth.md +30 -24
- package/src/skills/sonamu/cdd.md +26 -17
- package/src/skills/sonamu/cone.md +50 -50
- package/src/skills/sonamu/config.md +74 -51
- package/src/skills/sonamu/create-sonamu.md +31 -19
- package/src/skills/sonamu/database.md +43 -26
- package/src/skills/sonamu/entity-basic.md +61 -61
- package/src/skills/sonamu/entity-relations.md +84 -80
- package/src/skills/sonamu/entity-validation-checklist.md +19 -15
- package/src/skills/sonamu/fixture-cli.md +52 -30
- package/src/skills/sonamu/framework-change.md +9 -7
- package/src/skills/sonamu/frontend.md +64 -82
- package/src/skills/sonamu/i18n.md +45 -37
- package/src/skills/sonamu/migration.md +54 -31
- package/src/skills/sonamu/model.md +98 -66
- package/src/skills/sonamu/naite.md +34 -32
- package/src/skills/sonamu/project-init.md +28 -8
- package/src/skills/sonamu/puri.md +82 -91
- package/src/skills/sonamu/scaffolding.md +44 -32
- package/src/skills/sonamu/skill-contribution.md +50 -45
- package/src/skills/sonamu/subset.md +13 -13
- package/src/skills/sonamu/tasks.md +73 -58
- package/src/skills/sonamu/testing-devrunner.md +56 -36
- package/src/skills/sonamu/testing.md +23 -58
- package/src/skills/sonamu/upsert.md +32 -31
- package/src/skills/sonamu/vector.md +37 -36
- package/src/ssr/index.ts +2 -12
- package/src/ssr/registry.ts +1 -1
- package/src/ssr/renderer.ts +7 -5
- package/src/ssr/types.ts +2 -2
- package/src/storage/buffered-file.ts +4 -2
- package/src/storage/drivers.ts +3 -2
- package/src/storage/s3-driver.ts +7 -4
- package/src/storage/storage-manager.ts +3 -2
- package/src/storage/types.ts +3 -2
- package/src/storage/uploaded-file.ts +1 -1
- package/src/stream/sse.ts +2 -2
- package/src/syncer/api-parser.ts +8 -5
- package/src/syncer/checksum.ts +9 -5
- package/src/syncer/code-generator.ts +16 -8
- package/src/syncer/entity-operations.ts +5 -3
- package/src/syncer/file-patterns.ts +2 -1
- package/src/syncer/module-loader.ts +9 -6
- package/src/syncer/syncer-actions.ts +5 -3
- package/src/syncer/syncer.ts +18 -24
- package/src/tasks/decorator.ts +10 -8
- package/src/tasks/step-wrapper.ts +1 -1
- package/src/tasks/workflow-manager.ts +18 -15
- package/src/template/__tests__/generated.template.search-text.test.ts +1 -0
- package/src/template/entity-converter.ts +4 -2
- package/src/template/generated.template.test-d.ts +2 -1
- package/src/template/helpers.ts +5 -2
- package/src/template/implementations/entity.template.ts +9 -8
- package/src/template/implementations/entry-server.template.ts +1 -1
- package/src/template/implementations/generated.template.ts +21 -29
- package/src/template/implementations/generated_http.template.ts +9 -6
- package/src/template/implementations/generated_sso.template.ts +6 -4
- package/src/template/implementations/init_types.template.ts +3 -2
- package/src/template/implementations/model.template.ts +4 -2
- package/src/template/implementations/model_test.template.ts +3 -2
- package/src/template/implementations/queries.template.ts +6 -14
- package/src/template/implementations/sd.template.ts +4 -2
- package/src/template/implementations/services.template.ts +7 -11
- package/src/template/implementations/view_form.template.ts +5 -3
- package/src/template/implementations/view_id_all_select.template.ts +3 -2
- package/src/template/implementations/view_list.template.ts +7 -5
- package/src/template/implementations/view_search_input.template.ts +3 -2
- package/src/template/template-manager.ts +4 -3
- package/src/template/template.ts +4 -3
- package/src/template/zod-converter.ts +10 -7
- package/src/testing/__tests__/dev-test-routes.test.ts +3 -2
- package/src/testing/__tests__/dev-vitest-manager.test.ts +1 -0
- package/src/testing/_relation-graph.ts +2 -2
- package/src/testing/bootstrap.ts +55 -27
- package/src/testing/data-explorer.ts +5 -4
- package/src/testing/dev-test-routes.ts +8 -5
- package/src/testing/dev-vitest-manager.ts +13 -12
- package/src/testing/fixture-generator.ts +11 -17
- package/src/testing/fixture-manager.ts +21 -17
- package/src/testing/parallel-db-manager.ts +2 -1
- package/src/testing/vitest-helpers.ts +2 -1
- package/src/types/__tests__/entity-json-schema-search-text.test.ts +1 -0
- package/src/types/types.ts +8 -8
- package/src/typings/knex.d.ts +4 -4
- package/src/ui/ai-api.ts +5 -3
- package/src/ui/ai-client.ts +6 -5
- package/src/ui/api.ts +25 -23
- package/src/ui/cdd-service.ts +12 -11
- package/src/utils/console-util.ts +3 -1
- package/src/utils/formatter.ts +94 -102
- package/src/utils/fs-utils.ts +2 -1
- package/src/utils/model.ts +2 -2
- package/src/utils/object-utils.ts +3 -3
- package/src/utils/process-utils.ts +2 -1
- package/src/utils/sql-parser.ts +10 -1
- package/src/utils/type-utils.ts +3 -3
- package/src/utils/utils.ts +9 -7
- package/src/utils/zod-error.ts +1 -1
- package/src/vector/chunking.ts +1 -1
- package/src/vector/config.ts +1 -1
- package/src/vector/embedding.ts +11 -9
- package/tsdown.api.config.ts +50 -0
- package/.swcrc.project-default +0 -18
- package/dist/api/__tests__/config.test.js +0 -189
- package/dist/bin/__tests__/test-command.test.js +0 -112
- package/dist/bin/__tests__/ts-loader-register.test.js +0 -45
- package/dist/database/puri-subset.test-d.js +0 -89
- package/dist/database/puri.types.test-d.js +0 -129
- package/dist/migration/__tests__/code-generation.search-text.test.js +0 -435
- package/dist/template/__tests__/generated.template.search-text.test.js +0 -99
- package/dist/template/generated.template.test-d.js +0 -24
- package/dist/testing/__tests__/dev-test-routes.test.js +0 -144
- package/dist/testing/__tests__/dev-vitest-manager.test.js +0 -152
- package/dist/types/__tests__/entity-json-schema-search-text.test.js +0 -256
- package/dist/typings/knex.d.js +0 -3
- package/dist/ui-web/assets/index-CKo0Z2Iu.css +0 -1
- package/dist/ui-web/assets/index-DK-2aacv.js +0 -257
|
@@ -69,25 +69,25 @@ export default defineLocale({
|
|
|
69
69
|
import { SD } from "@/i18n/sd.generated";
|
|
70
70
|
|
|
71
71
|
// Simple string
|
|
72
|
-
SD("common.save");
|
|
72
|
+
SD("common.save"); // → "저장" (ko) / "Save" (en)
|
|
73
73
|
|
|
74
74
|
// Function form (with parameters)
|
|
75
|
-
SD("validation.required")("이메일");
|
|
76
|
-
SD("common.results")(5);
|
|
75
|
+
SD("validation.required")("이메일"); // → "이메일은 필수입니다"
|
|
76
|
+
SD("common.results")(5); // → "5개 결과" (ko) / "5 results" (en)
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
### Force a Specific Locale
|
|
80
80
|
|
|
81
81
|
```typescript
|
|
82
82
|
const EN = SD.locale("en");
|
|
83
|
-
EN("common.save");
|
|
83
|
+
EN("common.save"); // → "Save" (always English)
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
### Enum Labels
|
|
87
87
|
|
|
88
88
|
```typescript
|
|
89
89
|
// Enum labels defined in entity.json
|
|
90
|
-
SD.enumLabels("ProjectStatus")["in_progress"];
|
|
90
|
+
SD.enumLabels("ProjectStatus")["in_progress"]; // → "진행중"
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
## Helper Functions
|
|
@@ -99,9 +99,9 @@ import { plural } from "sonamu/dict";
|
|
|
99
99
|
|
|
100
100
|
// Handle singular/plural in English
|
|
101
101
|
plural(count, {
|
|
102
|
-
zero: "No items",
|
|
103
|
-
one: "1 item",
|
|
104
|
-
other: `${count} items`,
|
|
102
|
+
zero: "No items", // count === 0
|
|
103
|
+
one: "1 item", // count === 1
|
|
104
|
+
other: `${count} items`, // everything else
|
|
105
105
|
});
|
|
106
106
|
```
|
|
107
107
|
|
|
@@ -110,11 +110,11 @@ plural(count, {
|
|
|
110
110
|
```typescript
|
|
111
111
|
import { josa } from "sonamu/dict";
|
|
112
112
|
|
|
113
|
-
josa("이메일", "은는");
|
|
114
|
-
josa("이름", "이가");
|
|
115
|
-
josa("파일", "을를");
|
|
116
|
-
josa("회사", "과와");
|
|
117
|
-
josa("서울", "으로");
|
|
113
|
+
josa("이메일", "은는"); // → "이메일은"
|
|
114
|
+
josa("이름", "이가"); // → "이름이"
|
|
115
|
+
josa("파일", "을를"); // → "파일을"
|
|
116
|
+
josa("회사", "과와"); // → "회사와"
|
|
117
|
+
josa("서울", "으로"); // → "서울로"
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
### createFormat (number/date formatting)
|
|
@@ -123,7 +123,7 @@ josa("서울", "으로"); // → "서울로"
|
|
|
123
123
|
import { createFormat } from "sonamu/dict";
|
|
124
124
|
|
|
125
125
|
const format = createFormat("ko");
|
|
126
|
-
format.number(1234567);
|
|
126
|
+
format.number(1234567); // → "1,234,567"
|
|
127
127
|
format.date(new Date()); // → "2024. 1. 15."
|
|
128
128
|
```
|
|
129
129
|
|
|
@@ -138,10 +138,11 @@ enum.{EnumId}.{value} → Enum value label
|
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
Example:
|
|
141
|
+
|
|
141
142
|
```typescript
|
|
142
|
-
SD("entity.User");
|
|
143
|
-
SD("entity.User.email");
|
|
144
|
-
SD("enum.UserRole.admin");
|
|
143
|
+
SD("entity.User"); // → "사용자"
|
|
144
|
+
SD("entity.User.email"); // → "이메일"
|
|
145
|
+
SD("enum.UserRole.admin"); // → "관리자"
|
|
145
146
|
```
|
|
146
147
|
|
|
147
148
|
## localizedColumn
|
|
@@ -152,12 +153,13 @@ Returns the value for the current locale when locale-specific columns exist in t
|
|
|
152
153
|
import { localizedColumn } from "@/i18n/sd.generated";
|
|
153
154
|
|
|
154
155
|
// DB: { name: "태그", name_ko: "태그", name_en: "Tag" }
|
|
155
|
-
localizedColumn(tag, "name");
|
|
156
|
+
localizedColumn(tag, "name"); // → "태그" (ko) / "Tag" (en)
|
|
156
157
|
```
|
|
157
158
|
|
|
158
159
|
## Sonamu UI Management
|
|
159
160
|
|
|
160
161
|
`http://localhost:34900/sonamu-ui` → i18n tab:
|
|
162
|
+
|
|
161
163
|
- Browse/edit dictionary
|
|
162
164
|
- Add/delete keys
|
|
163
165
|
- Excel import/export
|
|
@@ -165,15 +167,15 @@ localizedColumn(tag, "name"); // → "태그" (ko) / "Tag" (en)
|
|
|
165
167
|
|
|
166
168
|
## Key Naming Conventions
|
|
167
169
|
|
|
168
|
-
| Pattern
|
|
169
|
-
|
|
170
|
-
| `common.*`
|
|
171
|
-
| `error.*`
|
|
172
|
-
| `validation.*` | Validation messages
|
|
173
|
-
| `entity.*`
|
|
174
|
-
| `enum.*`
|
|
175
|
-
| `menu.*`
|
|
176
|
-
| `rc.*`
|
|
170
|
+
| Pattern | Purpose | Example |
|
|
171
|
+
| -------------- | ------------------------- | ----------------------------------------- |
|
|
172
|
+
| `common.*` | Common UI text | `common.save`, `common.cancel` |
|
|
173
|
+
| `error.*` | Error messages | `error.notFound`, `error.forbidden` |
|
|
174
|
+
| `validation.*` | Validation messages | `validation.required`, `validation.email` |
|
|
175
|
+
| `entity.*` | Entity-related | `entity.User`, `entity.User.email` |
|
|
176
|
+
| `enum.*` | Enum labels | `enum.UserRole.admin` |
|
|
177
|
+
| `menu.*` | Menu/navigation | `menu.home`, `menu.settings` |
|
|
178
|
+
| `rc.*` | react-components built-in | `rc.pagination.next` |
|
|
177
179
|
|
|
178
180
|
## Troubleshooting
|
|
179
181
|
|
|
@@ -182,14 +184,16 @@ localizedColumn(tag, "name"); // → "태그" (ko) / "Tag" (en)
|
|
|
182
184
|
When you see `Type 'string' is not assignable to type '{ __brand: "LocalizedString"; }'`:
|
|
183
185
|
|
|
184
186
|
**Cause 1: Missing i18n key in ko.ts**
|
|
187
|
+
|
|
185
188
|
```typescript
|
|
186
189
|
// Wrong: type error when key is missing from ko.ts
|
|
187
|
-
SD("validation.password");
|
|
190
|
+
SD("validation.password"); // key not in ko.ts
|
|
188
191
|
```
|
|
189
192
|
|
|
190
193
|
Fix: Add the key to ko.ts and run `pnpm sync`
|
|
191
194
|
|
|
192
195
|
**Cause 2: Not using SD() in the model**
|
|
196
|
+
|
|
193
197
|
```typescript
|
|
194
198
|
// Wrong: using a raw string directly
|
|
195
199
|
throw new BadRequestException("이메일이 잘못되었습니다");
|
|
@@ -209,6 +213,7 @@ All user-facing strings must be wrapped with the SD() function.
|
|
|
209
213
|
When an Entity uses a String PK, the i18n function types must reflect this.
|
|
210
214
|
|
|
211
215
|
**BAD: Number only**
|
|
216
|
+
|
|
212
217
|
```typescript
|
|
213
218
|
// ko.ts
|
|
214
219
|
notFound: (name: string, id: number) => `존재하지 않는 ${name} ID ${id}`,
|
|
@@ -220,6 +225,7 @@ throw new NotFoundException(SD("notFound")(this.modelName, id));
|
|
|
220
225
|
```
|
|
221
226
|
|
|
222
227
|
**GOOD: Support both with a union type**
|
|
228
|
+
|
|
223
229
|
```typescript
|
|
224
230
|
// ko.ts
|
|
225
231
|
notFound: (name: string, id: number | string) => `존재하지 않는 ${name} ID ${id}`,
|
|
@@ -229,20 +235,21 @@ throw new NotFoundException(SD("notFound")(this.modelName, id));
|
|
|
229
235
|
```
|
|
230
236
|
|
|
231
237
|
**Applicable i18n keys:**
|
|
238
|
+
|
|
232
239
|
- `notFound`: Entity lookup failure
|
|
233
240
|
- `error.entityNotFound`: Specific entity lookup failure (deprecated, prefer `notFound`)
|
|
234
241
|
|
|
235
242
|
### Type Patterns by Namespace
|
|
236
243
|
|
|
237
|
-
| i18n key
|
|
238
|
-
|
|
239
|
-
| `notFound`
|
|
240
|
-
| `search.invalidField`
|
|
241
|
-
| `validation.required`
|
|
242
|
-
| `validation.maxLength` | `(field: string, max: number)`
|
|
243
|
-
| `validation.minLength` | `(field: string, min: number)`
|
|
244
|
-
| `entity.create`
|
|
245
|
-
| `entity.edit`
|
|
244
|
+
| i18n key | Parameter type | Purpose |
|
|
245
|
+
| ---------------------- | -------------------------------------- | ------------------------- |
|
|
246
|
+
| `notFound` | `(name: string, id: number \| string)` | Entity lookup failure |
|
|
247
|
+
| `search.invalidField` | `(field: string)` | Invalid search field |
|
|
248
|
+
| `validation.required` | `(field: string)` | Required field validation |
|
|
249
|
+
| `validation.maxLength` | `(field: string, max: number)` | Max length validation |
|
|
250
|
+
| `validation.minLength` | `(field: string, min: number)` | Min length validation |
|
|
251
|
+
| `entity.create` | `(name: string)` | Entity creation screen |
|
|
252
|
+
| `entity.edit` | `(name: string, id: number \| string)` | Entity edit screen |
|
|
246
253
|
|
|
247
254
|
### How to Check PK Type
|
|
248
255
|
|
|
@@ -265,6 +272,7 @@ Check the id field type in the Entity file:
|
|
|
265
272
|
```
|
|
266
273
|
|
|
267
274
|
**String PK entities in the KOPRI project:**
|
|
275
|
+
|
|
268
276
|
- Account
|
|
269
277
|
- Session
|
|
270
278
|
- User
|
|
@@ -10,15 +10,18 @@ description: Sonamu database migration. CREATE/ALTER TABLE, FK ordering, up/down
|
|
|
10
10
|
**Do not write migration files manually or execute SQL directly.** Sonamu detects entity.json changes and generates accurate migration files.
|
|
11
11
|
|
|
12
12
|
**Prerequisites:**
|
|
13
|
+
|
|
13
14
|
- `pnpm dev` must be running in `/packages/api`
|
|
14
15
|
|
|
15
16
|
**Method 1: Sonamu UI (confirm with user before choosing)**
|
|
17
|
+
|
|
16
18
|
1. Open Sonamu UI in browser: `http://localhost:34900/sonamu-ui`
|
|
17
19
|
2. Check the prepared list in the Migration menu
|
|
18
20
|
3. Generate a migration file with the "Generate" button
|
|
19
21
|
4. Apply to the actual DB with the "Apply" button
|
|
20
22
|
|
|
21
23
|
**Method 2: CLI**
|
|
24
|
+
|
|
22
25
|
```bash
|
|
23
26
|
cd packages/api
|
|
24
27
|
pnpm sonamu migrate generate # Generate migration file
|
|
@@ -28,6 +31,7 @@ pnpm sonamu migrate run # Apply to actual DB
|
|
|
28
31
|
**CRITICAL: Ask the user whether to proceed with UI or CLI before starting.**
|
|
29
32
|
|
|
30
33
|
**DO NOT:**
|
|
34
|
+
|
|
31
35
|
- Write migration files manually
|
|
32
36
|
- Execute SQL directly (`CREATE TABLE`, `ALTER TABLE`, etc.)
|
|
33
37
|
|
|
@@ -92,7 +96,11 @@ export async function down(knex: Knex): Promise<void> {
|
|
|
92
96
|
export async function up(knex: Knex): Promise<void> {
|
|
93
97
|
return knex.schema.alterTable("employees", (table) => {
|
|
94
98
|
table.foreign("user_id").references("users.id").onUpdate("CASCADE").onDelete("CASCADE");
|
|
95
|
-
table
|
|
99
|
+
table
|
|
100
|
+
.foreign("department_id")
|
|
101
|
+
.references("departments.id")
|
|
102
|
+
.onUpdate("CASCADE")
|
|
103
|
+
.onDelete("SET NULL");
|
|
96
104
|
});
|
|
97
105
|
}
|
|
98
106
|
|
|
@@ -107,6 +115,7 @@ export async function down(knex: Knex): Promise<void> {
|
|
|
107
115
|
## PK Type Change
|
|
108
116
|
|
|
109
117
|
### Situation
|
|
118
|
+
|
|
110
119
|
When the PK type of an existing table must be changed (e.g. integer -> text, bigint -> uuid), with FKs referencing that PK in multiple tables.
|
|
111
120
|
|
|
112
121
|
### Required Order
|
|
@@ -124,15 +133,25 @@ export async function up(knex: Knex): Promise<void> {
|
|
|
124
133
|
|
|
125
134
|
// Step 3: Change types of the PK column and all FK columns simultaneously
|
|
126
135
|
await knex.raw('ALTER TABLE "parent_table" ALTER COLUMN "id" TYPE new_type USING "id"::new_type');
|
|
127
|
-
await knex.raw(
|
|
128
|
-
|
|
136
|
+
await knex.raw(
|
|
137
|
+
'ALTER TABLE "child_table_1" ALTER COLUMN "parent_id" TYPE new_type USING "parent_id"::new_type',
|
|
138
|
+
);
|
|
139
|
+
await knex.raw(
|
|
140
|
+
'ALTER TABLE "child_table_2" ALTER COLUMN "parent_id" TYPE new_type USING "parent_id"::new_type',
|
|
141
|
+
);
|
|
129
142
|
|
|
130
143
|
// Step 4: ADD the PK constraint
|
|
131
|
-
await knex.raw(
|
|
144
|
+
await knex.raw(
|
|
145
|
+
'ALTER TABLE "parent_table" ADD CONSTRAINT "parent_table_pkey" PRIMARY KEY ("id")',
|
|
146
|
+
);
|
|
132
147
|
|
|
133
148
|
// Step 5: ADD all FK constraints
|
|
134
|
-
await knex.raw(
|
|
135
|
-
|
|
149
|
+
await knex.raw(
|
|
150
|
+
'ALTER TABLE "child_table_1" ADD CONSTRAINT "child_table_1_parent_id_foreign" FOREIGN KEY ("parent_id") REFERENCES "parent_table"("id") ON UPDATE RESTRICT ON DELETE CASCADE',
|
|
151
|
+
);
|
|
152
|
+
await knex.raw(
|
|
153
|
+
'ALTER TABLE "child_table_2" ADD CONSTRAINT "child_table_2_parent_id_foreign" FOREIGN KEY ("parent_id") REFERENCES "parent_table"("id") ON UPDATE RESTRICT ON DELETE RESTRICT',
|
|
154
|
+
);
|
|
136
155
|
}
|
|
137
156
|
```
|
|
138
157
|
|
|
@@ -164,8 +183,12 @@ export async function up(knex: Knex): Promise<void> {
|
|
|
164
183
|
await knex.raw('ALTER TABLE "users" ADD CONSTRAINT "users_pkey" PRIMARY KEY ("id")');
|
|
165
184
|
|
|
166
185
|
// 5. Restore FK constraints
|
|
167
|
-
await knex.raw(
|
|
168
|
-
|
|
186
|
+
await knex.raw(
|
|
187
|
+
'ALTER TABLE "accounts" ADD CONSTRAINT "accounts_user_id_foreign" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON UPDATE RESTRICT ON DELETE CASCADE',
|
|
188
|
+
);
|
|
189
|
+
await knex.raw(
|
|
190
|
+
'ALTER TABLE "sessions" ADD CONSTRAINT "sessions_user_id_foreign" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON UPDATE RESTRICT ON DELETE CASCADE',
|
|
191
|
+
);
|
|
169
192
|
}
|
|
170
193
|
```
|
|
171
194
|
|
|
@@ -201,27 +224,27 @@ pnpm sonamu migrate apply # Apply to a specific DB configuration target
|
|
|
201
224
|
|
|
202
225
|
## Entity Type → DB Type
|
|
203
226
|
|
|
204
|
-
| Entity
|
|
205
|
-
|
|
206
|
-
| `string`
|
|
207
|
-
| `string[]`
|
|
208
|
-
| `integer`
|
|
209
|
-
| `integer[]`
|
|
210
|
-
| `bigInteger`
|
|
211
|
-
| `bigInteger[]` | `bigint[]`
|
|
212
|
-
| `boolean`
|
|
213
|
-
| `boolean[]`
|
|
214
|
-
| `number`
|
|
215
|
-
| `numeric`
|
|
216
|
-
| `date`
|
|
217
|
-
| `date[]`
|
|
218
|
-
| `uuid`
|
|
219
|
-
| `uuid[]`
|
|
220
|
-
| `json`
|
|
221
|
-
| `enum`
|
|
222
|
-
| `vector`
|
|
223
|
-
| `vector[]`
|
|
224
|
-
| `tsvector`
|
|
227
|
+
| Entity | DB | Knex |
|
|
228
|
+
| -------------- | ------------------------- | ------------------------------------------- |
|
|
229
|
+
| `string` | `varchar(n)` / `text` | `table.string(name, length)` |
|
|
230
|
+
| `string[]` | `varchar(n)[]` / `text[]` | `table.specificType(name, 'text[]')` |
|
|
231
|
+
| `integer` | `integer` | `table.integer(name)` |
|
|
232
|
+
| `integer[]` | `integer[]` | `table.specificType(name, 'integer[]')` |
|
|
233
|
+
| `bigInteger` | `bigint` | `table.bigInteger(name)` |
|
|
234
|
+
| `bigInteger[]` | `bigint[]` | `table.specificType(name, 'bigint[]')` |
|
|
235
|
+
| `boolean` | `boolean` | `table.boolean(name)` |
|
|
236
|
+
| `boolean[]` | `boolean[]` | `table.specificType(name, 'boolean[]')` |
|
|
237
|
+
| `number` | `numeric(p,s)` | `table.decimal(name, p, s)` |
|
|
238
|
+
| `numeric` | `numeric(p,s)` | `table.decimal(name, p, s)` |
|
|
239
|
+
| `date` | `timestamptz` | `table.timestamp(name, { useTz: true })` |
|
|
240
|
+
| `date[]` | `timestamptz[]` | `table.specificType(name, 'timestamptz[]')` |
|
|
241
|
+
| `uuid` | `uuid` | `table.uuid(name)` |
|
|
242
|
+
| `uuid[]` | `uuid[]` | `table.specificType(name, 'uuid[]')` |
|
|
243
|
+
| `json` | `jsonb` | `table.jsonb(name)` |
|
|
244
|
+
| `enum` | `text` | `table.text(name)` |
|
|
245
|
+
| `vector` | `vector(n)` | `table.specificType(name, 'vector(n)')` |
|
|
246
|
+
| `vector[]` | `vector(n)[]` | `table.specificType(name, 'vector(n)[]')` |
|
|
247
|
+
| `tsvector` | `tsvector` | `table.specificType(name, 'tsvector')` |
|
|
225
248
|
|
|
226
249
|
## Execution Order (Important!)
|
|
227
250
|
|
|
@@ -248,7 +271,7 @@ The sync command references `dist/sonamu.config.js`. An error will occur if it d
|
|
|
248
271
|
|
|
249
272
|
```bash
|
|
250
273
|
cd packages/api
|
|
251
|
-
|
|
274
|
+
pnpm exec tsdown --config tsdown.config.ts
|
|
252
275
|
```
|
|
253
276
|
|
|
254
277
|
### 2. Verify DB Connection
|
|
@@ -272,7 +295,7 @@ Split the migration, or set the FK to nullable and add it later.
|
|
|
272
295
|
cd packages/api
|
|
273
296
|
|
|
274
297
|
# 1. Build config
|
|
275
|
-
|
|
298
|
+
pnpm exec tsdown --config tsdown.config.ts
|
|
276
299
|
|
|
277
300
|
# 2. Run sync
|
|
278
301
|
pnpm sonamu sync
|