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
|
@@ -10,6 +10,7 @@ description: Sonamu better-auth authentication system. Automatic entity generati
|
|
|
10
10
|
## Automatic Entity Generation
|
|
11
11
|
|
|
12
12
|
**Source code:**
|
|
13
|
+
|
|
13
14
|
- CLI: `modules/sonamu/src/bin/cli.ts` (auth_generate function)
|
|
14
15
|
- Generation logic: `modules/sonamu/src/auth/auth-generator.ts`
|
|
15
16
|
- Entity definitions: `modules/sonamu/src/auth/better-auth-entities.ts`
|
|
@@ -56,14 +57,15 @@ pnpm sonamu auth generate --plugins admin,2fa,username
|
|
|
56
57
|
|
|
57
58
|
The 4 entities generated (`betterAuthV1` array):
|
|
58
59
|
|
|
59
|
-
| Entity
|
|
60
|
-
|
|
61
|
-
| User
|
|
62
|
-
| Session
|
|
63
|
-
| Account
|
|
64
|
-
| Verification | verifications | id, identifier, value, expires_at
|
|
60
|
+
| Entity | Table | Key fields |
|
|
61
|
+
| ------------ | ------------- | -------------------------------------- |
|
|
62
|
+
| User | users | id, name, email, email_verified, image |
|
|
63
|
+
| Session | sessions | id, token, expires_at, user_id |
|
|
64
|
+
| Account | accounts | id, provider_id, access_token, user_id |
|
|
65
|
+
| Verification | verifications | id, identifier, value, expires_at |
|
|
65
66
|
|
|
66
67
|
**How it works:**
|
|
68
|
+
|
|
67
69
|
- If the entity does not exist, it is created fresh
|
|
68
70
|
- If the entity already exists, only missing fields are added
|
|
69
71
|
- Fields with changed types are updated automatically
|
|
@@ -73,12 +75,12 @@ The 4 entities generated (`betterAuthV1` array):
|
|
|
73
75
|
|
|
74
76
|
**Source code:** `modules/sonamu/src/auth/better-auth-entities.ts` (BASE_FIELD_MAPPINGS)
|
|
75
77
|
|
|
76
|
-
| better-auth
|
|
77
|
-
|
|
78
|
+
| better-auth | Sonamu |
|
|
79
|
+
| --------------- | ---------------- |
|
|
78
80
|
| `emailVerified` | `email_verified` |
|
|
79
|
-
| `createdAt`
|
|
80
|
-
| `userId`
|
|
81
|
-
| `expiresAt`
|
|
81
|
+
| `createdAt` | `created_at` |
|
|
82
|
+
| `userId` | `user_id` |
|
|
83
|
+
| `expiresAt` | `expires_at` |
|
|
82
84
|
|
|
83
85
|
## Config Setup
|
|
84
86
|
|
|
@@ -102,12 +104,12 @@ server: {
|
|
|
102
104
|
|
|
103
105
|
## API Endpoints (Auto-registered)
|
|
104
106
|
|
|
105
|
-
| Path
|
|
106
|
-
|
|
107
|
-
| `/api/auth/sign-up/email` | POST
|
|
108
|
-
| `/api/auth/sign-in/email` | POST
|
|
109
|
-
| `/api/auth/sign-out`
|
|
110
|
-
| `/api/auth/get-session`
|
|
107
|
+
| Path | Method | Description |
|
|
108
|
+
| ------------------------- | ------ | ----------- |
|
|
109
|
+
| `/api/auth/sign-up/email` | POST | Sign up |
|
|
110
|
+
| `/api/auth/sign-in/email` | POST | Sign in |
|
|
111
|
+
| `/api/auth/sign-out` | POST | Sign out |
|
|
112
|
+
| `/api/auth/get-session` | GET | Get session |
|
|
111
113
|
|
|
112
114
|
## Accessing user/session from Context
|
|
113
115
|
|
|
@@ -119,9 +121,9 @@ import { Sonamu } from "sonamu";
|
|
|
119
121
|
@api({ httpMethod: "GET", guards: ["user"] })
|
|
120
122
|
async me(): Promise<UserSubsetA | null> {
|
|
121
123
|
const { user, session } = Sonamu.getContext();
|
|
122
|
-
|
|
124
|
+
|
|
123
125
|
if (!user) return null;
|
|
124
|
-
|
|
126
|
+
|
|
125
127
|
// user.id, user.email, user.name, etc. are accessible
|
|
126
128
|
return this.findById("A", user.id);
|
|
127
129
|
}
|
|
@@ -134,6 +136,7 @@ async me(): Promise<UserSubsetA | null> {
|
|
|
134
136
|
### Built-in Guards
|
|
135
137
|
|
|
136
138
|
Sonamu provides 3 default guards:
|
|
139
|
+
|
|
137
140
|
- `query`: allows all users (including unauthenticated)
|
|
138
141
|
- `user`: allows only authenticated users
|
|
139
142
|
- `admin`: allows only users with admin privileges
|
|
@@ -202,35 +205,35 @@ import { Sonamu } from "sonamu";
|
|
|
202
205
|
apiConfig: {
|
|
203
206
|
guardHandler: (guard, request, api) => {
|
|
204
207
|
const { user } = Sonamu.getContext();
|
|
205
|
-
|
|
208
|
+
|
|
206
209
|
switch (guard) {
|
|
207
210
|
case "user":
|
|
208
211
|
if (!user) {
|
|
209
212
|
throw new Error("Login is required");
|
|
210
213
|
}
|
|
211
214
|
break;
|
|
212
|
-
|
|
215
|
+
|
|
213
216
|
case "admin":
|
|
214
217
|
// Requires adding a role field to the User entity
|
|
215
218
|
if (!user || (user as any).role !== "admin") {
|
|
216
219
|
throw new Error("Only admins can access this");
|
|
217
220
|
}
|
|
218
221
|
break;
|
|
219
|
-
|
|
222
|
+
|
|
220
223
|
case "manager":
|
|
221
224
|
// Custom guard: manager permission
|
|
222
225
|
if (!user || !["admin", "manager"].includes((user as any).role)) {
|
|
223
226
|
throw new Error("Manager permission is required");
|
|
224
227
|
}
|
|
225
228
|
break;
|
|
226
|
-
|
|
229
|
+
|
|
227
230
|
case "evaluator":
|
|
228
231
|
// Custom guard: evaluator permission
|
|
229
232
|
if (!user || !["admin", "evaluator"].includes((user as any).role)) {
|
|
230
233
|
throw new Error("Evaluator permission is required");
|
|
231
234
|
}
|
|
232
235
|
break;
|
|
233
|
-
|
|
236
|
+
|
|
234
237
|
case "query":
|
|
235
238
|
// Allow all users
|
|
236
239
|
break;
|
|
@@ -278,6 +281,7 @@ Adding an enum:
|
|
|
278
281
|
## Checklist
|
|
279
282
|
|
|
280
283
|
After setup, verify:
|
|
284
|
+
|
|
281
285
|
- [ ] **[Before generate] Confirm with user whether plugins are needed**
|
|
282
286
|
- If "later" → remember `plugins_deferred: true`, guide on optimal timing
|
|
283
287
|
- [ ] Run `pnpm sonamu auth generate [--plugins ...]`
|
|
@@ -291,9 +295,11 @@ After setup, verify:
|
|
|
291
295
|
## Reference
|
|
292
296
|
|
|
293
297
|
**Skills documentation:**
|
|
298
|
+
|
|
294
299
|
- Detailed configuration: "server.auth details" section in `config.md`
|
|
295
300
|
- Context API: "Context access" section in `api.md`
|
|
296
301
|
|
|
297
302
|
**Official documentation:**
|
|
303
|
+
|
|
298
304
|
- Korean: `modules/docs/ko/api-development/authentication/setup.mdx`
|
|
299
305
|
- English: `modules/docs/en/api-development/authentication/setup.mdx`
|
package/src/skills/sonamu/cdd.md
CHANGED
|
@@ -12,6 +12,7 @@ description: CDD artifact technical reference. contract.md format, rules.json fo
|
|
|
12
12
|
Documents domain rules and decision rationale in a cohesive form. Located at `contract/**/*.contract.md`.
|
|
13
13
|
|
|
14
14
|
**Include:**
|
|
15
|
+
|
|
15
16
|
- Domain rules and constraints ("Refunds are only allowed within 7 days of payment")
|
|
16
17
|
- Decision rationale ("Due to PG provider policy")
|
|
17
18
|
- Cross-module domain workflows ("Order status: pending → confirmed → shipped → completed")
|
|
@@ -20,6 +21,7 @@ Documents domain rules and decision rationale in a cohesive form. Located at `co
|
|
|
20
21
|
- Edge cases and intended handling
|
|
21
22
|
|
|
22
23
|
**Exclude:**
|
|
24
|
+
|
|
23
25
|
- Implementation details (file paths, function names, class structure)
|
|
24
26
|
- API endpoints or data schemas
|
|
25
27
|
- UI layouts or component structure
|
|
@@ -62,13 +64,13 @@ Records code conventions and UI/API rules.
|
|
|
62
64
|
}
|
|
63
65
|
```
|
|
64
66
|
|
|
65
|
-
| Field
|
|
66
|
-
|
|
67
|
-
| `description`
|
|
68
|
-
| `rules[].id`
|
|
69
|
-
| `rules[].when`
|
|
70
|
-
| `rules[].instruction` | Specific directive to follow
|
|
71
|
-
| `rules[].examples`
|
|
67
|
+
| Field | Description |
|
|
68
|
+
| --------------------- | -------------------------------------- |
|
|
69
|
+
| `description` | Scope and intent of the rule-set |
|
|
70
|
+
| `rules[].id` | Stable identifier |
|
|
71
|
+
| `rules[].when` | Condition under which the rule applies |
|
|
72
|
+
| `rules[].instruction` | Specific directive to follow |
|
|
73
|
+
| `rules[].examples` | Optional code/usage examples |
|
|
72
74
|
|
|
73
75
|
### `*.known-issues.json`
|
|
74
76
|
|
|
@@ -94,14 +96,21 @@ Records known bugs, framework constraints, and temporary workarounds. Include in
|
|
|
94
96
|
ACs are not managed as separate documents. The describe/test names in test files are the ACs themselves.
|
|
95
97
|
|
|
96
98
|
**AC writing principles:**
|
|
99
|
+
|
|
97
100
|
- **Small and specific**: one AC = one behavior/outcome
|
|
98
101
|
- **Include input and expected result in the name**: `"Returns 409 when email is duplicate"` > `"Returns an error"`
|
|
99
102
|
|
|
100
103
|
```typescript
|
|
101
|
-
describe(
|
|
102
|
-
test(
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
describe("sign up", () => {
|
|
105
|
+
test("returns 409 when email is duplicate", () => {
|
|
106
|
+
/* TODO */
|
|
107
|
+
});
|
|
108
|
+
test("returns 400 when password is shorter than 8 characters", () => {
|
|
109
|
+
/* TODO */
|
|
110
|
+
});
|
|
111
|
+
test("returns the created user_id on success", () => {
|
|
112
|
+
/* TODO */
|
|
113
|
+
});
|
|
105
114
|
});
|
|
106
115
|
```
|
|
107
116
|
|
|
@@ -113,13 +122,13 @@ describe('sign up', () => {
|
|
|
113
122
|
pnpm cdd <command>
|
|
114
123
|
```
|
|
115
124
|
|
|
116
|
-
| Command
|
|
117
|
-
|
|
125
|
+
| Command | Description |
|
|
126
|
+
| ------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
118
127
|
| `cdd ac add <file> <test-name>` | Add an empty test skeleton to a test file. Use `--describe <group>` to specify a describe block |
|
|
119
|
-
| `cdd ac list [file]`
|
|
120
|
-
| `cdd rules validate`
|
|
121
|
-
| `cdd agents init [--force]`
|
|
122
|
-
| `cdd agents sync [--dry-run]`
|
|
128
|
+
| `cdd ac list [file]` | Print the describe/test tree of a test file. Parses `test()`, `it()`, and `testAs()` patterns |
|
|
129
|
+
| `cdd rules validate` | Validate the format of `contract/rules/*.rules.json` |
|
|
130
|
+
| `cdd agents init [--force]` | Initialize CDD agent setup in the project (creates `.agents/`, `AGENTS.md`, and symlinks) |
|
|
131
|
+
| `cdd agents sync [--dry-run]` | Update CDD agent prompts to the latest version |
|
|
123
132
|
|
|
124
133
|
### Common options
|
|
125
134
|
|
|
@@ -12,11 +12,11 @@ During fixture generation, the LLM references `cone.note` to produce realistic,
|
|
|
12
12
|
|
|
13
13
|
## Role of Cone
|
|
14
14
|
|
|
15
|
-
| Purpose
|
|
16
|
-
|
|
15
|
+
| Purpose | Description |
|
|
16
|
+
| ---------------------- | --------------------------------------------------------------------- |
|
|
17
17
|
| **Fixture generation** | LLM generates contextually appropriate test data based on `cone.note` |
|
|
18
|
-
| **Scaffolding**
|
|
19
|
-
| **Documentation**
|
|
18
|
+
| **Scaffolding** | Uses cone information to generate model and view templates |
|
|
19
|
+
| **Documentation** | Metadata describing Entity structure and the meaning of each field |
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -24,32 +24,32 @@ During fixture generation, the LLM references `cone.note` to produce realistic,
|
|
|
24
24
|
|
|
25
25
|
### Entity cone
|
|
26
26
|
|
|
27
|
-
| Field
|
|
28
|
-
|
|
29
|
-
| `note` | string
|
|
30
|
-
| `tags` | string[] | Classification tags
|
|
27
|
+
| Field | Type | Description |
|
|
28
|
+
| ------ | -------- | -------------------------------------------------------------- |
|
|
29
|
+
| `note` | string | Entity purpose, business context, and fixture generation guide |
|
|
30
|
+
| `tags` | string[] | Classification tags |
|
|
31
31
|
|
|
32
32
|
### Prop cone
|
|
33
33
|
|
|
34
|
-
| Field
|
|
35
|
-
|
|
36
|
-
| `note`
|
|
37
|
-
| `fixtureGenerator` | string | **Fallback.** faker.js expression. Fallback when no API key is available
|
|
38
|
-
| `fixtureDefault`
|
|
39
|
-
| `fixtureStrategy`
|
|
40
|
-
| `dataSource`
|
|
34
|
+
| Field | Type | Description |
|
|
35
|
+
| ------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
36
|
+
| `note` | string | **Highest priority.** Business meaning of the field, concrete examples, value ranges, format constraints. Input the LLM reads to generate data |
|
|
37
|
+
| `fixtureGenerator` | string | **Fallback.** faker.js expression. Fallback when no API key is available |
|
|
38
|
+
| `fixtureDefault` | any | Fixed default value |
|
|
39
|
+
| `fixtureStrategy` | string | `"sequence"` — used when id is auto-assigned by a DB sequence |
|
|
40
|
+
| `dataSource` | object | Strategy for fetching reference data for relation props |
|
|
41
41
|
|
|
42
42
|
### Subset cone
|
|
43
43
|
|
|
44
|
-
| Field
|
|
45
|
-
|
|
44
|
+
| Field | Type | Description |
|
|
45
|
+
| ------ | ------ | ---------------------------------------------------- |
|
|
46
46
|
| `note` | string | Subset purpose, included fields, and when it is used |
|
|
47
47
|
|
|
48
48
|
### Enum cone
|
|
49
49
|
|
|
50
|
-
| Field
|
|
51
|
-
|
|
52
|
-
| `note`
|
|
50
|
+
| Field | Type | Description |
|
|
51
|
+
| -------- | ------ | -------------------------------------- |
|
|
52
|
+
| `note` | string | Meaning and usage context of the enum |
|
|
53
53
|
| `values` | object | `{ note: string }` for each enum value |
|
|
54
54
|
|
|
55
55
|
---
|
|
@@ -97,10 +97,10 @@ pnpm sonamu cone gen Post --locale en
|
|
|
97
97
|
|
|
98
98
|
#### Options
|
|
99
99
|
|
|
100
|
-
| Option
|
|
101
|
-
|
|
102
|
-
| `--all`
|
|
103
|
-
| `--regenerate`
|
|
100
|
+
| Option | Description |
|
|
101
|
+
| ----------------------- | ------------------------------------------------------------------------------------ |
|
|
102
|
+
| `--all` | Generate cone for all Entities |
|
|
103
|
+
| `--regenerate` | Overwrite existing cone (default: only generate for fields with no note) |
|
|
104
104
|
| `--locale <ko\|en\|ja>` | Generation language (default: `i18n.defaultLocale` from `sonamu.config.ts`, or `ko`) |
|
|
105
105
|
|
|
106
106
|
#### How it works
|
|
@@ -129,12 +129,12 @@ pnpm sonamu stub entity Post --no-cones
|
|
|
129
129
|
|
|
130
130
|
#### Template cone vs LLM cone
|
|
131
131
|
|
|
132
|
-
| Item
|
|
133
|
-
|
|
134
|
-
| API key | Not required
|
|
132
|
+
| Item | Template cone | LLM cone |
|
|
133
|
+
| ------- | -------------------------------- | ------------------------ |
|
|
134
|
+
| API key | Not required | Required |
|
|
135
135
|
| Quality | Defaults based on faker-mappings | Reflects project context |
|
|
136
|
-
| Speed
|
|
137
|
-
| Upgrade | Can be upgraded with `cone gen`
|
|
136
|
+
| Speed | Immediate | Takes a few seconds |
|
|
137
|
+
| Upgrade | Can be upgraded with `cone gen` | — |
|
|
138
138
|
|
|
139
139
|
---
|
|
140
140
|
|
|
@@ -233,14 +233,14 @@ Using `fixtureStrategy: "sequence"` causes a `MAX(id::bigint)` error during fixt
|
|
|
233
233
|
|
|
234
234
|
Specifies how reference data is fetched for relation props.
|
|
235
235
|
|
|
236
|
-
| Strategy | Description
|
|
237
|
-
|
|
236
|
+
| Strategy | Description |
|
|
237
|
+
| -------- | -------------------------------- |
|
|
238
238
|
| `recent` | Most recent data (by created_at) |
|
|
239
|
-
| `sample` | Uniform sampling
|
|
240
|
-
| `random` | Random sampling
|
|
241
|
-
| `ids`
|
|
242
|
-
| `query`
|
|
243
|
-
| `file`
|
|
239
|
+
| `sample` | Uniform sampling |
|
|
240
|
+
| `random` | Random sampling |
|
|
241
|
+
| `ids` | Specific IDs |
|
|
242
|
+
| `query` | Custom query |
|
|
243
|
+
| `file` | Load from file |
|
|
244
244
|
|
|
245
245
|
```json
|
|
246
246
|
"dataSource": {
|
|
@@ -253,16 +253,16 @@ Specifies how reference data is fetched for relation props.
|
|
|
253
253
|
|
|
254
254
|
**Source:** `modules/sonamu/src/testing/data-explorer.ts`
|
|
255
255
|
|
|
256
|
-
| Option
|
|
257
|
-
|
|
258
|
-
| `strategy` | string
|
|
259
|
-
| `limit`
|
|
260
|
-
| `where`
|
|
261
|
-
| `orderBy`
|
|
262
|
-
| `ids`
|
|
263
|
-
| `filePath` | string
|
|
264
|
-
| `useCache` | boolean
|
|
265
|
-
| `cacheTtl` | number
|
|
256
|
+
| Option | Type | Default | Description |
|
|
257
|
+
| ---------- | ------------------ | ------- | ------------------------------------------------------ |
|
|
258
|
+
| `strategy` | string | — | Fetch strategy (see table above) |
|
|
259
|
+
| `limit` | number | — | Maximum number of records to fetch |
|
|
260
|
+
| `where` | object \| function | — | WHERE condition (object or Knex QueryBuilder function) |
|
|
261
|
+
| `orderBy` | string | — | Sort criteria |
|
|
262
|
+
| `ids` | number[] | — | Specific ID list for `ids` strategy |
|
|
263
|
+
| `filePath` | string | — | File path for `file` strategy |
|
|
264
|
+
| `useCache` | boolean | `false` | Whether to use caching |
|
|
265
|
+
| `cacheTtl` | number | `300` | Cache TTL (in seconds) |
|
|
266
266
|
|
|
267
267
|
**Example using a where condition:**
|
|
268
268
|
|
|
@@ -280,10 +280,10 @@ Specifies how reference data is fetched for relation props.
|
|
|
280
280
|
|
|
281
281
|
Used in `fixture gen` to fetch related data alongside the target data.
|
|
282
282
|
|
|
283
|
-
| Option
|
|
284
|
-
|
|
285
|
-
| `includeRelations` | boolean | `true`
|
|
286
|
-
| `maxDepth`
|
|
283
|
+
| Option | Type | Default | Description |
|
|
284
|
+
| ------------------ | ------- | ------- | ------------------------------------- |
|
|
285
|
+
| `includeRelations` | boolean | `true` | Whether to include related data |
|
|
286
|
+
| `maxDepth` | number | `2` | Maximum depth for recursive traversal |
|
|
287
287
|
|
|
288
288
|
---
|
|
289
289
|
|
|
@@ -44,21 +44,21 @@ SLACK_CHANNEL_ID=C0123456789
|
|
|
44
44
|
|
|
45
45
|
### Environment Variable Reference
|
|
46
46
|
|
|
47
|
-
| Variable
|
|
48
|
-
|
|
49
|
-
| `DB_HOST`
|
|
50
|
-
| `DB_PORT`
|
|
51
|
-
| `DB_USER`
|
|
52
|
-
| `DB_PASSWORD`
|
|
53
|
-
| `DATABASE_NAME`
|
|
54
|
-
| `PROJECT_NAME`
|
|
55
|
-
| `CONTAINER_NAME`
|
|
56
|
-
| `SESSION_SECRET`
|
|
57
|
-
| `SESSION_SALT`
|
|
58
|
-
| `AWS_ACCESS_KEY_ID`
|
|
59
|
-
| `AWS_SECRET_ACCESS_KEY` |
|
|
60
|
-
| `S3_REGION`
|
|
61
|
-
| `S3_BUCKET`
|
|
47
|
+
| Variable | Required | Description |
|
|
48
|
+
| ----------------------- | -------- | --------------------------------------------------------- |
|
|
49
|
+
| `DB_HOST` | ✓ | DB host (Docker: `0.0.0.0`, external DB: the relevant IP) |
|
|
50
|
+
| `DB_PORT` | ✓ | DB port (default: `5432`) |
|
|
51
|
+
| `DB_USER` | ✓ | DB username (default: `postgres`) |
|
|
52
|
+
| `DB_PASSWORD` | ✓ | DB password |
|
|
53
|
+
| `DATABASE_NAME` | ✓ | Database name |
|
|
54
|
+
| `PROJECT_NAME` | ✓ | Project name (used in Docker, config) |
|
|
55
|
+
| `CONTAINER_NAME` | | Docker container name |
|
|
56
|
+
| `SESSION_SECRET` | | Session encryption key (required in production) |
|
|
57
|
+
| `SESSION_SALT` | | Session salt (16 characters) |
|
|
58
|
+
| `AWS_ACCESS_KEY_ID` | | Required when using S3 |
|
|
59
|
+
| `AWS_SECRET_ACCESS_KEY` | | Required when using S3 |
|
|
60
|
+
| `S3_REGION` | | S3 region (default: `ap-northeast-2`) |
|
|
61
|
+
| `S3_BUCKET` | | S3 bucket name |
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
@@ -79,14 +79,30 @@ const port = 34900;
|
|
|
79
79
|
|
|
80
80
|
export default defineConfig({
|
|
81
81
|
projectName: process.env.PROJECT_NAME ?? "MyProject",
|
|
82
|
-
api: {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
82
|
+
api: {
|
|
83
|
+
/* API settings */
|
|
84
|
+
},
|
|
85
|
+
i18n: {
|
|
86
|
+
/* i18n settings */
|
|
87
|
+
},
|
|
88
|
+
sync: {
|
|
89
|
+
/* sync settings */
|
|
90
|
+
},
|
|
91
|
+
database: {
|
|
92
|
+
/* DB settings */
|
|
93
|
+
},
|
|
94
|
+
logging: {
|
|
95
|
+
/* logging settings (disable with false) */
|
|
96
|
+
},
|
|
97
|
+
test: {
|
|
98
|
+
/* test settings */
|
|
99
|
+
},
|
|
100
|
+
server: {
|
|
101
|
+
/* server settings */
|
|
102
|
+
},
|
|
103
|
+
slackConfirm: {
|
|
104
|
+
/* Production migration Slack approval */
|
|
105
|
+
},
|
|
90
106
|
});
|
|
91
107
|
```
|
|
92
108
|
|
|
@@ -190,6 +206,7 @@ pnpm sonamu auth generate
|
|
|
190
206
|
```
|
|
191
207
|
|
|
192
208
|
Generated entities:
|
|
209
|
+
|
|
193
210
|
- **User** - user (id, name, email, email_verified, image)
|
|
194
211
|
- **Session** - session (token, expires_at, user_id)
|
|
195
212
|
- **Account** - account (provider_id, access_token, etc.)
|
|
@@ -221,12 +238,12 @@ server: {
|
|
|
221
238
|
|
|
222
239
|
Automatically registered under the `/api/auth/*` path:
|
|
223
240
|
|
|
224
|
-
| Endpoint
|
|
225
|
-
|
|
226
|
-
| `/api/auth/sign-up/email` | POST
|
|
227
|
-
| `/api/auth/sign-in/email` | POST
|
|
228
|
-
| `/api/auth/sign-out`
|
|
229
|
-
| `/api/auth/get-session`
|
|
241
|
+
| Endpoint | Method | Description |
|
|
242
|
+
| ------------------------- | ------ | ----------- |
|
|
243
|
+
| `/api/auth/sign-up/email` | POST | Sign up |
|
|
244
|
+
| `/api/auth/sign-in/email` | POST | Sign in |
|
|
245
|
+
| `/api/auth/sign-out` | POST | Sign out |
|
|
246
|
+
| `/api/auth/get-session` | GET | Get session |
|
|
230
247
|
|
|
231
248
|
### 4. Accessing user/session from Context
|
|
232
249
|
|
|
@@ -243,12 +260,12 @@ async me(): Promise<UserSubsetA | null> {
|
|
|
243
260
|
|
|
244
261
|
better-auth uses camelCase, Sonamu uses snake_case. Automatic mapping is applied:
|
|
245
262
|
|
|
246
|
-
| better-auth
|
|
247
|
-
|
|
263
|
+
| better-auth | Sonamu |
|
|
264
|
+
| --------------- | ---------------- |
|
|
248
265
|
| `emailVerified` | `email_verified` |
|
|
249
|
-
| `createdAt`
|
|
250
|
-
| `userId`
|
|
251
|
-
| `expiresAt`
|
|
266
|
+
| `createdAt` | `created_at` |
|
|
267
|
+
| `userId` | `user_id` |
|
|
268
|
+
| `expiresAt` | `expires_at` |
|
|
252
269
|
|
|
253
270
|
---
|
|
254
271
|
|
|
@@ -277,8 +294,8 @@ declare module "sonamu" {
|
|
|
277
294
|
query: true;
|
|
278
295
|
admin: true;
|
|
279
296
|
user: true;
|
|
280
|
-
manager: true;
|
|
281
|
-
superadmin: true;
|
|
297
|
+
manager: true; // added
|
|
298
|
+
superadmin: true; // added
|
|
282
299
|
}
|
|
283
300
|
}
|
|
284
301
|
```
|
|
@@ -370,9 +387,11 @@ export function canAccess(userRole: string, menu: keyof typeof menuPermissions)
|
|
|
370
387
|
|
|
371
388
|
```tsx
|
|
372
389
|
// web/src/components/Sidebar.tsx
|
|
373
|
-
{
|
|
374
|
-
|
|
375
|
-
|
|
390
|
+
{
|
|
391
|
+
canAccess(user.role, "userManagement") && (
|
|
392
|
+
<MenuItem href="/admin/users">User Management</MenuItem>
|
|
393
|
+
);
|
|
394
|
+
}
|
|
376
395
|
```
|
|
377
396
|
|
|
378
397
|
---
|
|
@@ -394,6 +413,7 @@ session: {
|
|
|
394
413
|
```
|
|
395
414
|
|
|
396
415
|
**Production checklist:**
|
|
416
|
+
|
|
397
417
|
- `SESSION_SECRET`: must be changed to a strong random string
|
|
398
418
|
- `SESSION_SALT`: change to a 16-character random string
|
|
399
419
|
- `cookie.domain`: change to the actual domain
|
|
@@ -480,6 +500,7 @@ cache: {
|
|
|
480
500
|
```
|
|
481
501
|
|
|
482
502
|
**Available drivers:**
|
|
503
|
+
|
|
483
504
|
- `memory` - in-memory cache (default)
|
|
484
505
|
- `file` - file-based cache
|
|
485
506
|
- `redis` - Redis cache
|
|
@@ -576,6 +597,7 @@ lifecycle: {
|
|
|
576
597
|
## Sonamu Local Development Environment Setup
|
|
577
598
|
|
|
578
599
|
**When is this needed:**
|
|
600
|
+
|
|
579
601
|
- When modifying the Sonamu framework source code during development
|
|
580
602
|
- When linking a local Sonamu repository to a project for development
|
|
581
603
|
|
|
@@ -610,7 +632,7 @@ overrides:
|
|
|
610
632
|
```json
|
|
611
633
|
{
|
|
612
634
|
"dependencies": {
|
|
613
|
-
"sonamu": "^0.7.45"
|
|
635
|
+
"sonamu": "^0.7.45" // specify the latest published version
|
|
614
636
|
}
|
|
615
637
|
}
|
|
616
638
|
```
|
|
@@ -694,17 +716,17 @@ Pass Fastify server options directly (excluding `logger`).
|
|
|
694
716
|
|
|
695
717
|
### Full Plugin List
|
|
696
718
|
|
|
697
|
-
| Plugin
|
|
698
|
-
|
|
699
|
-
| `compress`
|
|
700
|
-
| `cors`
|
|
701
|
-
| `formbody`
|
|
702
|
-
| `multipart` | `boolean \| FastifyMultipartOptions` | File upload
|
|
703
|
-
| `qs`
|
|
704
|
-
| `session`
|
|
705
|
-
| `sse`
|
|
706
|
-
| `static`
|
|
707
|
-
| `custom`
|
|
719
|
+
| Plugin | Type | Description |
|
|
720
|
+
| ----------- | ------------------------------------ | ---------------------------------------- |
|
|
721
|
+
| `compress` | `boolean \| FastifyCompressOptions` | Response compression (@fastify/compress) |
|
|
722
|
+
| `cors` | `boolean \| FastifyCorsOptions` | CORS configuration |
|
|
723
|
+
| `formbody` | `boolean \| FastifyFormbodyOptions` | x-www-form-urlencoded parsing |
|
|
724
|
+
| `multipart` | `boolean \| FastifyMultipartOptions` | File upload |
|
|
725
|
+
| `qs` | `boolean \| QsPluginOptions` | Query string parsing |
|
|
726
|
+
| `session` | session config | Session management |
|
|
727
|
+
| `sse` | `boolean \| SsePluginOptions` | Server-Sent Events |
|
|
728
|
+
| `static` | `boolean \| FastifyStaticOptions` | Static file serving |
|
|
729
|
+
| `custom` | `(server: FastifyInstance) => void` | Custom plugin registration function |
|
|
708
730
|
|
|
709
731
|
## logging
|
|
710
732
|
|
|
@@ -742,6 +764,7 @@ slackConfirm: {
|
|
|
742
764
|
5. Access Sonamu UI: http://localhost:34900/sonamu-ui
|
|
743
765
|
|
|
744
766
|
Before production deployment:
|
|
767
|
+
|
|
745
768
|
- [ ] Change `SESSION_SECRET`
|
|
746
769
|
- [ ] Change `SESSION_SALT`
|
|
747
770
|
- [ ] Change `cookie.domain` to the actual domain
|