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
|
@@ -35,6 +35,7 @@ description: Sonamu project creation and initialization. Check whether a project
|
|
|
35
35
|
- Confirm `.claude/skills/project/` directory was auto-created
|
|
36
36
|
|
|
37
37
|
2. **Write requirements**
|
|
38
|
+
|
|
38
39
|
```bash
|
|
39
40
|
# Write to .claude/skills/project/requirements.md
|
|
40
41
|
```
|
|
@@ -96,14 +97,17 @@ A system for managing research project calls, applications, and evaluations
|
|
|
96
97
|
### Important Notes
|
|
97
98
|
|
|
98
99
|
**Always document when:**
|
|
100
|
+
|
|
99
101
|
- The user provides requirements or a feature specification together with project creation
|
|
100
102
|
- There are business rules or special constraints
|
|
101
103
|
|
|
102
104
|
**When to document:**
|
|
105
|
+
|
|
103
106
|
- Immediately after project creation
|
|
104
107
|
- Before starting entity design
|
|
105
108
|
|
|
106
109
|
**How the document is used:**
|
|
110
|
+
|
|
107
111
|
- Reference during entity design
|
|
108
112
|
- Reference during API business logic implementation
|
|
109
113
|
- Reference when writing test cases
|
|
@@ -116,6 +120,7 @@ A system for managing research project calls, applications, and evaluations
|
|
|
116
120
|
**Must confirm before creating a project:**
|
|
117
121
|
|
|
118
122
|
Developers often separate working directories by project type:
|
|
123
|
+
|
|
119
124
|
- Company/framework projects: `~/Development/`
|
|
120
125
|
- Personal projects: `~/dev/programming/`
|
|
121
126
|
- Client work: `~/Projects/clients/`
|
|
@@ -123,11 +128,13 @@ Developers often separate working directories by project type:
|
|
|
123
128
|
### Confirmation Process
|
|
124
129
|
|
|
125
130
|
1. **Determine the current working directory**
|
|
131
|
+
|
|
126
132
|
```bash
|
|
127
133
|
pwd # check current directory
|
|
128
134
|
```
|
|
129
135
|
|
|
130
136
|
2. **Ask the user to confirm**
|
|
137
|
+
|
|
131
138
|
```
|
|
132
139
|
"You are currently in {current_directory}. Should I create the project here?
|
|
133
140
|
If you work in a different location, please tell me the directory to create the project in.
|
|
@@ -185,11 +192,13 @@ Is a Sonamu project already set up there?"
|
|
|
185
192
|
### A. For Sonamu Developers (Local Link)
|
|
186
193
|
|
|
187
194
|
> **Why use a local link:**
|
|
195
|
+
>
|
|
188
196
|
> - Sync directly from the Skills source
|
|
189
197
|
> - Local Sonamu changes take effect immediately
|
|
190
198
|
> - Required for framework development
|
|
191
199
|
|
|
192
200
|
#### 1. Create the Project
|
|
201
|
+
|
|
193
202
|
```bash
|
|
194
203
|
pnpm create sonamu [project-name] --yes
|
|
195
204
|
```
|
|
@@ -206,6 +215,7 @@ overrides:
|
|
|
206
215
|
```
|
|
207
216
|
|
|
208
217
|
> **Path example:**
|
|
218
|
+
>
|
|
209
219
|
> - If Sonamu is at `~/Development/sonamu`
|
|
210
220
|
> - And the project is at `~/Development/my_project`
|
|
211
221
|
> - → `link:../../sonamu/modules/sonamu`
|
|
@@ -213,6 +223,7 @@ overrides:
|
|
|
213
223
|
#### 3. Install Dependencies and Build
|
|
214
224
|
|
|
215
225
|
From the project root:
|
|
226
|
+
|
|
216
227
|
```bash
|
|
217
228
|
pnpm install
|
|
218
229
|
pnpm -r build
|
|
@@ -221,6 +232,7 @@ pnpm -r build
|
|
|
221
232
|
> **If build fails:** may be a resource initialization failure. Start Docker first (step 4), then start the dev server (step 5) and retry.
|
|
222
233
|
|
|
223
234
|
#### 4. Start the DB
|
|
235
|
+
|
|
224
236
|
```bash
|
|
225
237
|
cd packages/api
|
|
226
238
|
pnpm docker:up
|
|
@@ -229,6 +241,7 @@ pnpm docker:up
|
|
|
229
241
|
> If a port conflict error occurs → see `database.md`
|
|
230
242
|
|
|
231
243
|
#### 5. Start the Dev Server
|
|
244
|
+
|
|
232
245
|
```bash
|
|
233
246
|
pnpm dev
|
|
234
247
|
```
|
|
@@ -251,6 +264,7 @@ pnpm sonamu auth generate
|
|
|
251
264
|
#### 7. Check Subsets
|
|
252
265
|
|
|
253
266
|
In the Sonamu UI (`http://localhost:34900/sonamu-ui`) Entity menu:
|
|
267
|
+
|
|
254
268
|
- Check subsets for User, Account, Session, Verification entities
|
|
255
269
|
|
|
256
270
|
#### 8. DB Migration
|
|
@@ -282,11 +296,13 @@ pnpm sonamu skills sync
|
|
|
282
296
|
### B. For Sonamu Users (npm Version)
|
|
283
297
|
|
|
284
298
|
> **When using the npm version:**
|
|
299
|
+
>
|
|
285
300
|
> - Skills are included in the npm package
|
|
286
301
|
> - No local link needed
|
|
287
302
|
> - For general users
|
|
288
303
|
|
|
289
304
|
#### 1-3. Create and Configure the Project
|
|
305
|
+
|
|
290
306
|
```bash
|
|
291
307
|
pnpm create sonamu [project-name] --yes
|
|
292
308
|
cd [project-name]
|
|
@@ -355,6 +371,7 @@ Claude: "Before designing the survey system entities, let me confirm a few thing
|
|
|
355
371
|
```
|
|
356
372
|
|
|
357
373
|
**Why this is wrong:**
|
|
374
|
+
|
|
358
375
|
- Asking multiple questions at once (should ask one at a time)
|
|
359
376
|
- The question order is not clear
|
|
360
377
|
|
|
@@ -371,6 +388,7 @@ Claude: "The packages/api/.env file has been created. Would you like to review t
|
|
|
371
388
|
```
|
|
372
389
|
|
|
373
390
|
Default generated .env:
|
|
391
|
+
|
|
374
392
|
```env
|
|
375
393
|
DB_HOST=0.0.0.0
|
|
376
394
|
DB_PORT=5432
|
|
@@ -393,15 +411,17 @@ grep -r 'SonamuProject' packages/api/src/
|
|
|
393
411
|
```
|
|
394
412
|
|
|
395
413
|
**`packages/api/src/sonamu.config.ts`:**
|
|
414
|
+
|
|
396
415
|
```typescript
|
|
397
416
|
// DO NOT - template default left as-is
|
|
398
|
-
projectName: process.env.PROJECT_NAME ?? "SonamuProject"
|
|
417
|
+
projectName: process.env.PROJECT_NAME ?? "SonamuProject";
|
|
399
418
|
|
|
400
419
|
// DO - replace with real project name
|
|
401
|
-
projectName: process.env.PROJECT_NAME ?? "NIFOS"
|
|
420
|
+
projectName: process.env.PROJECT_NAME ?? "NIFOS";
|
|
402
421
|
```
|
|
403
422
|
|
|
404
423
|
**Replacement checklist:**
|
|
424
|
+
|
|
405
425
|
- [ ] `projectName` default in `sonamu.config.ts`
|
|
406
426
|
- [ ] `name` field in `package.json` (root)
|
|
407
427
|
- [ ] `PROJECT_NAME`, `DATABASE_NAME` in `.env`
|
|
@@ -448,10 +468,10 @@ After receiving the path, you can confirm by checking whether `packages/api/src/
|
|
|
448
468
|
|
|
449
469
|
When the user asks a configuration-related question, refer to `config.md` for the answer:
|
|
450
470
|
|
|
451
|
-
| Question
|
|
452
|
-
|
|
453
|
-
| "How do I configure .env?"
|
|
454
|
-
| "How do I connect S3?"
|
|
471
|
+
| Question | Reference |
|
|
472
|
+
| --------------------------------------- | ---------------------------------- |
|
|
473
|
+
| "How do I configure .env?" | config.md - .env file |
|
|
474
|
+
| "How do I connect S3?" | config.md - server.storage |
|
|
455
475
|
| "How do I change the session settings?" | config.md - server.plugins.session |
|
|
456
|
-
| "How do I change the port?"
|
|
457
|
-
| "Cache settings?"
|
|
476
|
+
| "How do I change the port?" | config.md - server.listen |
|
|
477
|
+
| "Cache settings?" | config.md - server.cache |
|
|
@@ -27,10 +27,10 @@ const users = await db.table({ u: "users" }).select({ id: "u.id" });
|
|
|
27
27
|
>
|
|
28
28
|
> ```typescript
|
|
29
29
|
> // WRONG — character spread bug
|
|
30
|
-
> db.table("files").select("files.entity_id", "files.file_type")
|
|
30
|
+
> db.table("files").select("files.entity_id", "files.file_type");
|
|
31
31
|
>
|
|
32
32
|
> // CORRECT
|
|
33
|
-
> db.table("files").select({ entity_id: "files.entity_id", file_type: "files.file_type" })
|
|
33
|
+
> db.table("files").select({ entity_id: "files.entity_id", file_type: "files.file_type" });
|
|
34
34
|
> ```
|
|
35
35
|
|
|
36
36
|
```typescript
|
|
@@ -46,7 +46,7 @@ db.select({
|
|
|
46
46
|
parent: {
|
|
47
47
|
id: "parent.id",
|
|
48
48
|
name: "parent.name",
|
|
49
|
-
}
|
|
49
|
+
},
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
// Append to existing select
|
|
@@ -99,7 +99,7 @@ db.select({
|
|
|
99
99
|
db.select({
|
|
100
100
|
score: Puri.rawNumber(
|
|
101
101
|
`word_similarity(?, items.title) * 5 + word_similarity(?, items.tags) * 2`,
|
|
102
|
-
[query, query]
|
|
102
|
+
[query, query],
|
|
103
103
|
),
|
|
104
104
|
label: Puri.rawString(`COALESCE(??, ?)`, ["items.name", "Unspecified"]),
|
|
105
105
|
});
|
|
@@ -109,23 +109,23 @@ db.select({
|
|
|
109
109
|
|
|
110
110
|
```typescript
|
|
111
111
|
// Basic
|
|
112
|
-
db.where("role", "admin")
|
|
113
|
-
db.where("age", ">=", 18)
|
|
114
|
-
db.where("deleted_at", null)
|
|
115
|
-
db.where("deleted_at", "!=", null)
|
|
112
|
+
db.where("role", "admin");
|
|
113
|
+
db.where("age", ">=", 18);
|
|
114
|
+
db.where("deleted_at", null); // IS NULL
|
|
115
|
+
db.where("deleted_at", "!=", null); // IS NOT NULL
|
|
116
116
|
|
|
117
117
|
// Multiple conditions (AND)
|
|
118
|
-
db.where("role", "admin").where("is_active", true)
|
|
118
|
+
db.where("role", "admin").where("is_active", true);
|
|
119
119
|
|
|
120
120
|
// IN / NOT IN
|
|
121
|
-
db.whereIn("role", ["admin", "moderator"])
|
|
122
|
-
db.whereNotIn("status", ["deleted", "banned"])
|
|
121
|
+
db.whereIn("role", ["admin", "moderator"]);
|
|
122
|
+
db.whereNotIn("status", ["deleted", "banned"]);
|
|
123
123
|
|
|
124
124
|
// LIKE
|
|
125
|
-
db.where("email", "like", `%${keyword}%`)
|
|
125
|
+
db.where("email", "like", `%${keyword}%`);
|
|
126
126
|
|
|
127
127
|
// Raw WHERE
|
|
128
|
-
db.whereRaw("EXTRACT(YEAR FROM created_at) = ?", [2024])
|
|
128
|
+
db.whereRaw("EXTRACT(YEAR FROM created_at) = ?", [2024]);
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
### WHERE Grouping (Parentheses)
|
|
@@ -137,10 +137,9 @@ db.whereGroup((g) => {
|
|
|
137
137
|
}).where("is_active", true);
|
|
138
138
|
|
|
139
139
|
// OR group
|
|
140
|
-
db.where("status", "active")
|
|
141
|
-
.
|
|
142
|
-
|
|
143
|
-
});
|
|
140
|
+
db.where("status", "active").orWhereGroup((g) => {
|
|
141
|
+
g.where("role", "admin").where("is_verified", true);
|
|
142
|
+
});
|
|
144
143
|
```
|
|
145
144
|
|
|
146
145
|
## JOIN
|
|
@@ -149,26 +148,24 @@ db.where("status", "active")
|
|
|
149
148
|
// INNER JOIN
|
|
150
149
|
db.table("employees")
|
|
151
150
|
.join("users", "employees.user_id", "users.id")
|
|
152
|
-
.select({ empId: "employees.id", userName: "users.username" })
|
|
151
|
+
.select({ empId: "employees.id", userName: "users.username" });
|
|
153
152
|
|
|
154
153
|
// LEFT JOIN
|
|
155
|
-
db.table("employees")
|
|
156
|
-
.leftJoin("departments", "employees.department_id", "departments.id")
|
|
154
|
+
db.table("employees").leftJoin("departments", "employees.department_id", "departments.id");
|
|
157
155
|
|
|
158
156
|
// Using aliases
|
|
159
157
|
db.table({ e: "employees" })
|
|
160
158
|
.join({ u: "users" }, "e.user_id", "u.id")
|
|
161
|
-
.leftJoin({ d: "departments" }, "e.department_id", "d.id")
|
|
159
|
+
.leftJoin({ d: "departments" }, "e.department_id", "d.id");
|
|
162
160
|
|
|
163
161
|
// Complex JOIN conditions with callback
|
|
164
|
-
db.table("orders")
|
|
165
|
-
.
|
|
166
|
-
|
|
167
|
-
.on("orders.store_id", "products.store_id");
|
|
168
|
-
})
|
|
162
|
+
db.table("orders").join("products", (j) => {
|
|
163
|
+
j.on("orders.product_id", "products.id").on("orders.store_id", "products.store_id");
|
|
164
|
+
});
|
|
169
165
|
|
|
170
166
|
// Subquery JOIN
|
|
171
|
-
const subquery = db
|
|
167
|
+
const subquery = db
|
|
168
|
+
.table("order_items")
|
|
172
169
|
.select({ order_id: "order_id", total: Puri.sum("amount") })
|
|
173
170
|
.groupBy("order_id");
|
|
174
171
|
|
|
@@ -180,9 +177,7 @@ db.table("orders")
|
|
|
180
177
|
## ORDER BY & LIMIT
|
|
181
178
|
|
|
182
179
|
```typescript
|
|
183
|
-
db.orderBy("created_at", "desc")
|
|
184
|
-
.limit(20)
|
|
185
|
-
.offset(40) // Page 3
|
|
180
|
+
db.orderBy("created_at", "desc").limit(20).offset(40); // Page 3
|
|
186
181
|
```
|
|
187
182
|
|
|
188
183
|
## GROUP BY & HAVING
|
|
@@ -208,46 +203,41 @@ db.groupBy("user_id").having("count", ">", 10);
|
|
|
208
203
|
await db.table("users").insert({ username: "john", email: "john@test.com" });
|
|
209
204
|
|
|
210
205
|
// RETURNING
|
|
211
|
-
const [{ id }] = await db.table("users")
|
|
212
|
-
.insert({ username: "john" })
|
|
213
|
-
.returning("id");
|
|
206
|
+
const [{ id }] = await db.table("users").insert({ username: "john" }).returning("id");
|
|
214
207
|
|
|
215
208
|
// Multiple columns RETURNING
|
|
216
|
-
const [row] = await db.table("users")
|
|
217
|
-
.insert({ username: "john" })
|
|
218
|
-
.returning(["id", "created_at"]);
|
|
209
|
+
const [row] = await db.table("users").insert({ username: "john" }).returning(["id", "created_at"]);
|
|
219
210
|
|
|
220
211
|
// All columns RETURNING
|
|
221
|
-
const [user] = await db.table("users")
|
|
222
|
-
.insert({ username: "john" })
|
|
223
|
-
.returning("*");
|
|
212
|
+
const [user] = await db.table("users").insert({ username: "john" }).returning("*");
|
|
224
213
|
```
|
|
225
214
|
|
|
226
215
|
### INSERT onConflict (Upsert)
|
|
227
216
|
|
|
228
217
|
```typescript
|
|
229
218
|
// DO NOTHING
|
|
230
|
-
await db.table("users")
|
|
231
|
-
.insert({ id: 1, username: "john" })
|
|
232
|
-
.onConflict("id"); // or .onConflict("id", "nothing")
|
|
219
|
+
await db.table("users").insert({ id: 1, username: "john" }).onConflict("id"); // or .onConflict("id", "nothing")
|
|
233
220
|
|
|
234
221
|
// DO UPDATE - specific columns only
|
|
235
|
-
await db
|
|
222
|
+
await db
|
|
223
|
+
.table("users")
|
|
236
224
|
.insert({ id: 1, username: "john", email: "new@test.com" })
|
|
237
225
|
.onConflict("id", { update: ["username", "email"] });
|
|
238
226
|
|
|
239
227
|
// DO UPDATE - with specified values
|
|
240
|
-
await db
|
|
228
|
+
await db
|
|
229
|
+
.table("users")
|
|
241
230
|
.insert({ id: 1, username: "john" })
|
|
242
231
|
.onConflict("id", {
|
|
243
232
|
update: {
|
|
244
233
|
username: "updated_john",
|
|
245
234
|
updated_at: Puri.rawDate("NOW()"),
|
|
246
|
-
}
|
|
235
|
+
},
|
|
247
236
|
});
|
|
248
237
|
|
|
249
238
|
// Composite key conflict
|
|
250
|
-
await db
|
|
239
|
+
await db
|
|
240
|
+
.table("user_settings")
|
|
251
241
|
.insert({ user_id: 1, key: "theme", value: "dark" })
|
|
252
242
|
.onConflict(["user_id", "key"], { update: ["value"] });
|
|
253
243
|
```
|
|
@@ -270,15 +260,15 @@ await db.table("users").where("id", 1).delete();
|
|
|
270
260
|
|
|
271
261
|
## Result Methods
|
|
272
262
|
|
|
273
|
-
| Method
|
|
274
|
-
|
|
275
|
-
| `await query`
|
|
276
|
-
| `first()`
|
|
277
|
-
| `pluck("col")` | `Promise<V[]>`
|
|
263
|
+
| Method | Returns | Description |
|
|
264
|
+
| -------------- | ------------------------- | ------------------------------- |
|
|
265
|
+
| `await query` | `T[]` | Array result (Puri is Thenable) |
|
|
266
|
+
| `first()` | `Promise<T \| undefined>` | First record |
|
|
267
|
+
| `pluck("col")` | `Promise<V[]>` | Array of a specific column only |
|
|
278
268
|
|
|
279
269
|
```typescript
|
|
280
|
-
const users = await db.table("users").select({ id: "id" });
|
|
281
|
-
const user = await db.table("users").where("id", 1).first();
|
|
270
|
+
const users = await db.table("users").select({ id: "id" }); // T[]
|
|
271
|
+
const user = await db.table("users").where("id", 1).first(); // T | undefined
|
|
282
272
|
const ids = await db.table("users").where("role", "admin").pluck("id"); // number[]
|
|
283
273
|
```
|
|
284
274
|
|
|
@@ -297,13 +287,13 @@ const query1 = baseQuery.clone().where("role", "admin");
|
|
|
297
287
|
const query2 = baseQuery.clone().where("role", "user");
|
|
298
288
|
|
|
299
289
|
// Clear parts of a query
|
|
300
|
-
db.clear("select")
|
|
301
|
-
db.clear("order")
|
|
302
|
-
db.clear("limit")
|
|
303
|
-
db.clear("offset")
|
|
290
|
+
db.clear("select"); // Clear SELECT clause
|
|
291
|
+
db.clear("order"); // Clear ORDER BY
|
|
292
|
+
db.clear("limit"); // Clear LIMIT
|
|
293
|
+
db.clear("offset"); // Clear OFFSET
|
|
304
294
|
|
|
305
295
|
// Remove a specific JOIN
|
|
306
|
-
db.clearJoin("alias")
|
|
296
|
+
db.clearJoin("alias");
|
|
307
297
|
```
|
|
308
298
|
|
|
309
299
|
## Transactions
|
|
@@ -324,16 +314,16 @@ await this.getPuri("w").transaction(async (trx) => {
|
|
|
324
314
|
|
|
325
315
|
```typescript
|
|
326
316
|
// Basic search (websearch_to_tsquery, simple config)
|
|
327
|
-
db.whereTsSearch("search_vector", "search term")
|
|
317
|
+
db.whereTsSearch("search_vector", "search term");
|
|
328
318
|
|
|
329
319
|
// Specify config
|
|
330
|
-
db.whereTsSearch("search_vector", "search term", "korean")
|
|
320
|
+
db.whereTsSearch("search_vector", "search term", "korean");
|
|
331
321
|
|
|
332
322
|
// Detailed options
|
|
333
323
|
db.whereTsSearch("search_vector", "search term", {
|
|
334
|
-
parser: "plainto_tsquery",
|
|
324
|
+
parser: "plainto_tsquery", // websearch_to_tsquery | plainto_tsquery | phraseto_tsquery
|
|
335
325
|
config: "korean",
|
|
336
|
-
})
|
|
326
|
+
});
|
|
337
327
|
```
|
|
338
328
|
|
|
339
329
|
### tsHighlight (Search Term Highlighting)
|
|
@@ -366,8 +356,8 @@ The first argument must be `Puri.toTsVector()` rather than a column name string.
|
|
|
366
356
|
db.select({
|
|
367
357
|
rank: Puri.tsRank(Puri.toTsVector("documents.search_vector"), "search term"),
|
|
368
358
|
})
|
|
369
|
-
.whereTsSearch("documents.search_vector", "search term")
|
|
370
|
-
.orderBy("rank", "desc");
|
|
359
|
+
.whereTsSearch("documents.search_vector", "search term")
|
|
360
|
+
.orderBy("rank", "desc");
|
|
371
361
|
|
|
372
362
|
// Specify config
|
|
373
363
|
db.select({
|
|
@@ -377,8 +367,8 @@ db.select({
|
|
|
377
367
|
// Options
|
|
378
368
|
db.select({
|
|
379
369
|
rank: Puri.tsRank(Puri.toTsVector("documents.title"), "search term", {
|
|
380
|
-
normalization: 1,
|
|
381
|
-
weights: [0.1, 0.2, 0.4, 1.0],
|
|
370
|
+
normalization: 1, // Document length normalization
|
|
371
|
+
weights: [0.1, 0.2, 0.4, 1.0], // D, C, B, A weights
|
|
382
372
|
}),
|
|
383
373
|
});
|
|
384
374
|
|
|
@@ -404,15 +394,15 @@ db.select({
|
|
|
404
394
|
|
|
405
395
|
```typescript
|
|
406
396
|
// Single column search
|
|
407
|
-
db.whereSearch("title", "search term")
|
|
397
|
+
db.whereSearch("title", "search term");
|
|
408
398
|
|
|
409
399
|
// Multi-column search (requires same column composition as index)
|
|
410
|
-
db.whereSearch(["title", "content"], "search term")
|
|
400
|
+
db.whereSearch(["title", "content"], "search term");
|
|
411
401
|
|
|
412
402
|
// Weight options
|
|
413
403
|
db.whereSearch(["title", "content"], "search term", {
|
|
414
|
-
weights: [10, 1],
|
|
415
|
-
})
|
|
404
|
+
weights: [10, 1], // 10x weight on title
|
|
405
|
+
});
|
|
416
406
|
```
|
|
417
407
|
|
|
418
408
|
### score (Search Score)
|
|
@@ -423,8 +413,8 @@ db.select({
|
|
|
423
413
|
title: "title",
|
|
424
414
|
score: Puri.score(),
|
|
425
415
|
})
|
|
426
|
-
.whereSearch("title", "search term")
|
|
427
|
-
.orderBy("score", "desc");
|
|
416
|
+
.whereSearch("title", "search term")
|
|
417
|
+
.orderBy("score", "desc");
|
|
428
418
|
```
|
|
429
419
|
|
|
430
420
|
### highlight (Highlighting)
|
|
@@ -456,7 +446,8 @@ db.select({
|
|
|
456
446
|
const embedding = await getEmbedding("search query");
|
|
457
447
|
|
|
458
448
|
// Default (cosine similarity)
|
|
459
|
-
const results = await db
|
|
449
|
+
const results = await db
|
|
450
|
+
.table("documents")
|
|
460
451
|
.select({ id: "id", title: "title" })
|
|
461
452
|
.vectorSimilarity("embedding", embedding);
|
|
462
453
|
// → SELECT *, 1 - (embedding <=> '[...]'::vector) as similarity
|
|
@@ -471,22 +462,22 @@ db.vectorSimilarity("embedding", embedding, { method: "inner_product" });
|
|
|
471
462
|
// threshold filter
|
|
472
463
|
db.vectorSimilarity("embedding", embedding, {
|
|
473
464
|
method: "cosine",
|
|
474
|
-
threshold: 0.7,
|
|
465
|
+
threshold: 0.7, // only similarity >= 0.7
|
|
475
466
|
});
|
|
476
467
|
|
|
477
468
|
// distinctOn (deduplicate)
|
|
478
469
|
db.vectorSimilarity("embedding", embedding, {
|
|
479
|
-
distinctOn: "document_id",
|
|
470
|
+
distinctOn: "document_id", // best similarity per document_id only
|
|
480
471
|
});
|
|
481
472
|
```
|
|
482
473
|
|
|
483
474
|
**Return value**: `similarity` column is automatically added
|
|
484
475
|
|
|
485
|
-
| method
|
|
486
|
-
|
|
487
|
-
| cosine
|
|
488
|
-
| l2
|
|
489
|
-
| inner_product | -distance (higher = more similar)
|
|
476
|
+
| method | similarity meaning | sort order |
|
|
477
|
+
| ------------- | ------------------------------------ | ---------- |
|
|
478
|
+
| cosine | 1 - distance (higher = more similar) | desc |
|
|
479
|
+
| l2 | distance (lower = more similar) | asc |
|
|
480
|
+
| inner_product | -distance (higher = more similar) | desc |
|
|
490
481
|
|
|
491
482
|
---
|
|
492
483
|
|
|
@@ -498,11 +489,11 @@ Requires `CREATE EXTENSION IF NOT EXISTS pg_trgm`. Typically used together with
|
|
|
498
489
|
|
|
499
490
|
The SQL operand order differs per operator:
|
|
500
491
|
|
|
501
|
-
| operator
|
|
502
|
-
|
|
503
|
-
| `<%` (default) | word similarity
|
|
504
|
-
| `%`
|
|
505
|
-
| `<<%`
|
|
492
|
+
| operator | meaning | SQL |
|
|
493
|
+
| -------------- | ---------------------- | -------------------- |
|
|
494
|
+
| `<%` (default) | word similarity | `'query' <% column` |
|
|
495
|
+
| `%` | similarity | `column % 'query'` |
|
|
496
|
+
| `<<%` | strict word similarity | `'query' <<% column` |
|
|
506
497
|
|
|
507
498
|
```typescript
|
|
508
499
|
puri.whereFuzzy("items.search_text", query);
|
|
@@ -527,7 +518,7 @@ const results = await this.getPuri("r")
|
|
|
527
518
|
title: "items.title_ko",
|
|
528
519
|
score: Puri.rawNumber(
|
|
529
520
|
`word_similarity(?, items.title_ko) * 5 + word_similarity(?, items.title_en) * 3`,
|
|
530
|
-
[query, query]
|
|
521
|
+
[query, query],
|
|
531
522
|
),
|
|
532
523
|
})
|
|
533
524
|
.orderByRaw("score DESC");
|
|
@@ -535,11 +526,11 @@ const results = await this.getPuri("r")
|
|
|
535
526
|
|
|
536
527
|
### Language-specific Characteristics
|
|
537
528
|
|
|
538
|
-
| Language | Suitability | Notes
|
|
539
|
-
|
|
540
|
-
| English
|
|
541
|
-
| Korean
|
|
542
|
-
| Japanese | Good
|
|
529
|
+
| Language | Suitability | Notes |
|
|
530
|
+
| -------- | ----------- | ----------------------------------------------- |
|
|
531
|
+
| English | Excellent | Word-level splitting + word_similarity |
|
|
532
|
+
| Korean | Good | Performance degrades for 1-2 character searches |
|
|
533
|
+
| Japanese | Good | Performance degrades for 1-2 character searches |
|
|
543
534
|
|
|
544
535
|
---
|
|
545
536
|
|