sonamu 0.5.7 → 0.7.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/.swcrc.project-default +18 -0
- package/bin/cli.js +24 -0
- package/dist/ai/agents/agent.d.ts +11 -0
- package/dist/ai/agents/agent.d.ts.map +1 -0
- package/dist/ai/agents/agent.js +65 -0
- package/dist/ai/agents/index.d.ts +3 -0
- package/dist/ai/agents/index.d.ts.map +1 -0
- package/dist/ai/agents/index.js +4 -0
- package/dist/ai/agents/types.d.ts +43 -0
- package/dist/ai/agents/types.d.ts.map +1 -0
- package/dist/ai/agents/types.js +3 -0
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +3 -0
- package/dist/ai/providers/rtzr/api.d.ts +22 -0
- package/dist/ai/providers/rtzr/api.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/api.js +28 -0
- package/dist/ai/providers/rtzr/error.d.ts +18 -0
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/error.js +29 -0
- package/dist/ai/providers/rtzr/index.d.ts +5 -0
- package/dist/ai/providers/rtzr/index.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/index.js +6 -0
- package/dist/ai/providers/rtzr/model.d.ts +52 -0
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/model.js +137 -0
- package/dist/ai/providers/rtzr/options.d.ts +7 -0
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/options.js +47 -0
- package/dist/ai/providers/rtzr/provider.d.ts +18 -0
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/provider.js +54 -0
- package/dist/ai/providers/rtzr/utils.d.ts +19 -0
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/utils.js +88 -0
- 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 +13 -2
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +71 -2
- package/dist/api/code-converters.d.ts +58 -14
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +258 -2
- package/dist/api/config.d.ts +90 -0
- package/dist/api/config.d.ts.map +1 -0
- package/dist/api/config.js +25 -0
- package/dist/api/context.d.ts +4 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +3 -2
- package/dist/api/decorators.d.ts +20 -6
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +235 -2
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +9 -2
- package/dist/api/sonamu.d.ts +10 -24
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +514 -2
- package/dist/api/validator.d.ts +6 -0
- package/dist/api/validator.d.ts.map +1 -0
- package/dist/api/validator.js +81 -0
- package/dist/bin/build-config.d.ts +6 -1
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +15 -2
- package/dist/bin/cli.js +519 -2
- package/dist/bin/hot-hook-register.d.ts +11 -0
- package/dist/bin/hot-hook-register.d.ts.map +1 -0
- package/dist/bin/hot-hook-register.js +21 -0
- package/dist/bin/loader-register.d.ts +2 -0
- package/dist/bin/loader-register.d.ts.map +1 -0
- package/dist/bin/loader-register.js +34 -0
- package/dist/database/_batch_update.d.ts +5 -3
- package/dist/database/_batch_update.d.ts.map +1 -1
- package/dist/database/_batch_update.js +95 -2
- package/dist/database/base-model.d.ts +96 -10
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +390 -2
- package/dist/database/base-model.types.d.ts +93 -0
- package/dist/database/base-model.types.d.ts.map +1 -0
- package/dist/database/base-model.types.js +10 -0
- package/dist/database/code-generator.d.ts +1 -1
- package/dist/database/code-generator.d.ts.map +1 -1
- package/dist/database/code-generator.js +54 -2
- package/dist/database/db.d.ts +6 -21
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +129 -2
- package/dist/database/puri-subset.test-d.js +81 -0
- package/dist/database/puri-subset.types.d.ts +123 -0
- package/dist/database/puri-subset.types.d.ts.map +1 -0
- package/dist/database/puri-subset.types.js +16 -0
- package/dist/database/puri-wrapper.d.ts +13 -11
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +109 -2
- package/dist/database/puri.d.ts +41 -23
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +601 -2
- package/dist/database/puri.types.d.ts +25 -6
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +6 -2
- package/dist/database/transaction-context.d.ts +1 -1
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/transaction-context.js +14 -2
- package/dist/database/upsert-builder.d.ts +9 -3
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +365 -2
- package/dist/entity/entity-manager.d.ts +167 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +130 -2
- package/dist/entity/entity.d.ts +5 -3
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +750 -2
- 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 +29 -2
- 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 +85 -2
- package/dist/file-storage/driver.d.ts +1 -1
- package/dist/file-storage/driver.d.ts.map +1 -1
- package/dist/file-storage/driver.js +79 -2
- package/dist/file-storage/file-storage.js +75 -2
- package/dist/index.d.ts +18 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -2
- package/dist/migration/code-generation.d.ts +1 -1
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +614 -2
- package/dist/migration/migration-set.d.ts +2 -10
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +213 -2
- package/dist/migration/migrator.d.ts +24 -82
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +330 -2
- package/dist/migration/postgresql-schema-reader.d.ts +51 -0
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -0
- package/dist/migration/postgresql-schema-reader.js +245 -0
- package/dist/migration/types.d.ts +6 -38
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/migration/types.js +3 -2
- package/dist/naite/messaging-types.d.ts +43 -0
- package/dist/naite/messaging-types.d.ts.map +1 -0
- package/dist/naite/messaging-types.js +7 -0
- package/dist/naite/naite-reporter.d.ts +41 -0
- package/dist/naite/naite-reporter.d.ts.map +1 -0
- package/dist/naite/naite-reporter.js +102 -0
- package/dist/naite/naite.d.ts +95 -0
- package/dist/naite/naite.d.ts.map +1 -0
- package/dist/naite/naite.js +316 -0
- package/dist/stream/index.js +3 -2
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +38 -2
- package/dist/syncer/api-parser.d.ts +10 -0
- package/dist/syncer/api-parser.d.ts.map +1 -0
- package/dist/syncer/api-parser.js +240 -0
- package/dist/syncer/checksum.d.ts +21 -0
- package/dist/syncer/checksum.d.ts.map +1 -0
- package/dist/syncer/checksum.js +98 -0
- package/dist/syncer/code-generator.d.ts +20 -0
- package/dist/syncer/code-generator.d.ts.map +1 -0
- package/dist/syncer/code-generator.js +161 -0
- package/dist/syncer/entity-operations.d.ts +17 -0
- package/dist/syncer/entity-operations.d.ts.map +1 -0
- package/dist/syncer/entity-operations.js +59 -0
- package/dist/syncer/file-patterns.d.ts +29 -0
- package/dist/syncer/file-patterns.d.ts.map +1 -0
- package/dist/syncer/file-patterns.js +38 -0
- package/dist/syncer/index.d.ts +6 -0
- package/dist/syncer/index.d.ts.map +1 -1
- package/dist/syncer/index.js +9 -2
- package/dist/syncer/module-loader.d.ts +35 -0
- package/dist/syncer/module-loader.d.ts.map +1 -0
- package/dist/syncer/module-loader.js +87 -0
- package/dist/syncer/syncer.d.ts +98 -106
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +422 -2
- package/dist/template/entity-converter.d.ts +14 -0
- package/dist/template/entity-converter.d.ts.map +1 -0
- package/dist/template/entity-converter.js +108 -0
- package/dist/template/helpers.d.ts +23 -0
- package/dist/template/helpers.d.ts.map +1 -0
- package/dist/template/helpers.js +64 -0
- package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
- package/dist/template/implementations/entity.template.d.ts.map +1 -0
- package/dist/template/implementations/entity.template.js +86 -0
- package/dist/{templates → template/implementations}/generated.template.d.ts +3 -4
- package/dist/template/implementations/generated.template.d.ts.map +1 -0
- package/dist/template/implementations/generated.template.js +249 -0
- package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -4
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_http.template.js +131 -0
- package/dist/{templates → template/implementations}/generated_sso.template.d.ts +4 -5
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_sso.template.js +134 -0
- package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
- package/dist/template/implementations/init_types.template.d.ts.map +1 -0
- package/dist/template/implementations/init_types.template.js +38 -0
- package/dist/template/implementations/model.template.d.ts +17 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -0
- package/dist/template/implementations/model.template.js +181 -0
- package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
- package/dist/template/implementations/model_test.template.d.ts.map +1 -0
- package/dist/template/implementations/model_test.template.js +35 -0
- package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
- package/dist/template/implementations/service.template.d.ts.map +1 -0
- package/dist/template/implementations/service.template.js +201 -0
- package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
- package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
- package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_select.template.js +55 -0
- package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
- package/dist/template/implementations/view_form.template.d.ts.map +1 -0
- package/dist/template/implementations/view_form.template.js +337 -0
- package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_all_select.template.js +31 -0
- package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_async_select.template.js +105 -0
- package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
- package/dist/template/implementations/view_list.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list.template.js +475 -0
- package/dist/template/implementations/view_list_columns.template.d.ts +17 -0
- package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list_columns.template.js +49 -0
- package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
- package/dist/template/implementations/view_search_input.template.js +64 -0
- package/dist/template/index.d.ts +7 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js +8 -0
- package/dist/template/template-manager.d.ts +56 -0
- package/dist/template/template-manager.d.ts.map +1 -0
- package/dist/template/template-manager.js +125 -0
- package/dist/template/template-types.d.ts +16 -0
- package/dist/template/template-types.d.ts.map +1 -0
- package/dist/template/template-types.js +7 -0
- package/dist/template/template.d.ts +49 -0
- package/dist/template/template.d.ts.map +1 -0
- package/dist/template/template.js +60 -0
- package/dist/template/zod-converter.d.ts +51 -0
- package/dist/template/zod-converter.d.ts.map +1 -0
- package/dist/template/zod-converter.js +449 -0
- 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 +89 -2
- package/dist/testing/fixture-manager.d.ts +42 -11
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +623 -2
- package/dist/types/types.d.ts +747 -143
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +546 -2
- package/dist/typings/knex.d.js +3 -2
- package/dist/utils/async-utils.d.ts +7 -0
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +57 -2
- package/dist/utils/console-util.d.ts +2 -0
- package/dist/utils/console-util.d.ts.map +1 -0
- package/dist/utils/console-util.js +6 -0
- package/dist/utils/controller.d.ts +1 -0
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +29 -2
- package/dist/utils/esm-utils.d.ts +39 -0
- package/dist/utils/esm-utils.d.ts.map +1 -0
- package/dist/utils/esm-utils.js +49 -0
- package/dist/utils/formatter.d.ts +3 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +110 -0
- package/dist/utils/fs-utils.d.ts +1 -1
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +17 -2
- package/dist/utils/lodash-able.d.ts.map +1 -1
- package/dist/utils/lodash-able.js +6 -2
- package/dist/utils/model.js +22 -2
- package/dist/utils/object-utils.d.ts +44 -0
- package/dist/utils/object-utils.d.ts.map +1 -0
- package/dist/utils/object-utils.js +191 -0
- package/dist/utils/path-utils.d.ts +89 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +60 -0
- package/dist/utils/process-utils.d.ts +13 -0
- package/dist/utils/process-utils.d.ts.map +1 -0
- package/dist/utils/process-utils.js +36 -0
- package/dist/utils/sql-parser.d.ts +5 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +46 -2
- package/dist/utils/type-utils.d.ts +23 -0
- package/dist/utils/type-utils.d.ts.map +1 -0
- package/dist/utils/type-utils.js +45 -0
- package/dist/utils/utils.d.ts +10 -7
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +72 -2
- 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 +19 -2
- package/package.json +65 -27
- package/src/ai/agents/agent.ts +87 -0
- package/src/ai/agents/index.ts +2 -0
- package/src/ai/agents/types.ts +47 -0
- package/src/ai/index.ts +1 -0
- package/src/ai/providers/rtzr/api.ts +37 -0
- package/src/ai/providers/rtzr/error.ts +34 -0
- package/src/ai/providers/rtzr/index.ts +4 -0
- package/src/ai/providers/rtzr/model.ts +201 -0
- package/src/ai/providers/rtzr/options.ts +49 -0
- package/src/ai/providers/rtzr/provider.ts +91 -0
- package/src/ai/providers/rtzr/utils.ts +127 -0
- package/src/api/base-frame.ts +4 -2
- package/src/api/caster.ts +17 -23
- package/src/api/code-converters.ts +178 -535
- package/src/api/config.ts +125 -0
- package/src/api/context.ts +7 -17
- package/src/api/decorators.ts +176 -46
- package/src/api/index.ts +2 -2
- package/src/api/sonamu.ts +190 -167
- package/src/api/validator.ts +83 -0
- package/src/bin/build-config.ts +8 -1
- package/src/bin/cli.ts +258 -124
- package/src/bin/hot-hook-register.ts +22 -0
- package/src/bin/loader-register.ts +38 -0
- package/src/database/_batch_update.ts +46 -31
- package/src/database/base-model.ts +390 -182
- package/src/database/base-model.types.ts +155 -0
- package/src/database/code-generator.ts +13 -32
- package/src/database/db.ts +40 -96
- package/src/database/puri-subset.test-d.ts +471 -0
- package/src/database/puri-subset.types.ts +195 -0
- package/src/database/puri-wrapper.ts +58 -67
- package/src/database/puri.ts +229 -148
- package/src/database/puri.types.ts +76 -30
- package/src/database/transaction-context.ts +1 -1
- package/src/database/upsert-builder.ts +262 -132
- package/src/entity/entity-manager.ts +48 -36
- package/src/entity/entity.ts +330 -248
- package/src/exceptions/error-handler.ts +3 -3
- package/src/exceptions/so-exceptions.ts +11 -11
- package/src/file-storage/driver.ts +5 -5
- package/src/file-storage/file-storage.ts +2 -2
- package/src/index.ts +18 -10
- package/src/migration/code-generation.ts +185 -172
- package/src/migration/migration-set.ts +80 -293
- package/src/migration/migrator.ts +199 -571
- package/src/migration/mysql-schema-reader.ts.txt +272 -0
- package/src/migration/postgresql-schema-reader.ts +310 -0
- package/src/migration/types.ts +6 -39
- package/src/naite/messaging-types.ts +51 -0
- package/src/naite/naite-reporter.ts +128 -0
- package/src/naite/naite.ts +415 -0
- package/src/shared/web.shared.ts.txt +20 -24
- package/src/stream/sse.ts +5 -5
- package/src/syncer/api-parser.ts +282 -0
- package/src/syncer/checksum.ts +140 -0
- package/src/syncer/code-generator.ts +198 -0
- package/src/syncer/entity-operations.ts +65 -0
- package/src/syncer/file-patterns.ts +56 -0
- package/src/syncer/index.ts +6 -0
- package/src/syncer/module-loader.ts +128 -0
- package/src/syncer/syncer.ts +389 -1453
- package/src/template/entity-converter.ts +114 -0
- package/src/template/helpers.ts +81 -0
- package/src/{templates → template/implementations}/entity.template.ts +7 -7
- package/src/{templates → template/implementations}/generated.template.ts +101 -101
- package/src/{templates → template/implementations}/generated_http.template.ts +27 -57
- package/src/template/implementations/generated_sso.template.ts +151 -0
- package/src/{templates → template/implementations}/init_types.template.ts +5 -7
- package/src/{templates → template/implementations}/model.template.ts +52 -43
- package/src/{templates → template/implementations}/model_test.template.ts +5 -5
- package/src/{templates → template/implementations}/service.template.ts +66 -82
- package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
- package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +4 -20
- package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
- package/src/{templates → template/implementations}/view_form.template.ts +40 -83
- package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
- package/src/{templates → template/implementations}/view_id_async_select.template.ts +10 -24
- package/src/{templates → template/implementations}/view_list.template.ts +60 -152
- package/src/{templates → template/implementations}/view_list_columns.template.ts +5 -11
- package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
- package/src/template/index.ts +6 -0
- package/src/template/template-manager.ts +166 -0
- package/src/template/template-types.ts +16 -0
- package/src/template/template.ts +105 -0
- package/src/template/zod-converter.ts +525 -0
- package/src/testing/_relation-graph.ts +18 -11
- package/src/testing/fixture-manager.ts +472 -359
- package/src/types/types.ts +553 -308
- package/src/typings/knex.d.ts +7 -9
- package/src/utils/async-utils.ts +23 -10
- package/src/utils/console-util.ts +4 -0
- package/src/utils/controller.ts +3 -0
- package/src/utils/esm-utils.ts +59 -0
- package/src/utils/formatter.ts +109 -0
- package/src/utils/fs-utils.ts +1 -1
- package/src/utils/lodash-able.ts +1 -4
- package/src/utils/object-utils.ts +217 -0
- package/src/utils/path-utils.ts +99 -0
- package/src/utils/process-utils.ts +46 -0
- package/src/utils/sql-parser.ts +23 -5
- package/src/utils/type-utils.ts +83 -0
- package/src/utils/utils.ts +66 -43
- package/src/utils/zod-error.ts +3 -4
- package/dist/api/base-frame.js.map +0 -1
- package/dist/api/caster.js.map +0 -1
- package/dist/api/code-converters.js.map +0 -1
- package/dist/api/context.js.map +0 -1
- package/dist/api/decorators.js.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/sonamu.js.map +0 -1
- package/dist/bin/build-config.js.map +0 -1
- package/dist/bin/cli-wrapper.d.ts +0 -3
- package/dist/bin/cli-wrapper.d.ts.map +0 -1
- package/dist/bin/cli-wrapper.js +0 -3
- package/dist/bin/cli-wrapper.js.map +0 -1
- package/dist/bin/cli.js.map +0 -1
- package/dist/database/_batch_update.js.map +0 -1
- package/dist/database/base-model.js.map +0 -1
- package/dist/database/code-generator.js.map +0 -1
- package/dist/database/db.js.map +0 -1
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +0 -2
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +0 -1
- package/dist/database/knex-plugins/knex-on-duplicate-update.js +0 -2
- package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
- package/dist/database/puri-wrapper.js.map +0 -1
- package/dist/database/puri.js.map +0 -1
- package/dist/database/puri.types.js.map +0 -1
- package/dist/database/transaction-context.js.map +0 -1
- package/dist/database/upsert-builder.js.map +0 -1
- package/dist/entity/entity-manager.js.map +0 -1
- package/dist/entity/entity-utils.d.ts +0 -61
- package/dist/entity/entity-utils.d.ts.map +0 -1
- package/dist/entity/entity-utils.js +0 -2
- package/dist/entity/entity-utils.js.map +0 -1
- package/dist/entity/entity.js.map +0 -1
- package/dist/exceptions/error-handler.js.map +0 -1
- package/dist/exceptions/so-exceptions.js.map +0 -1
- package/dist/file-storage/driver.js.map +0 -1
- package/dist/file-storage/file-storage.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/migration/code-generation.js.map +0 -1
- package/dist/migration/migration-set.js.map +0 -1
- package/dist/migration/migrator.js.map +0 -1
- package/dist/migration/types.js.map +0 -1
- package/dist/stream/index.js.map +0 -1
- package/dist/stream/sse.js.map +0 -1
- package/dist/syncer/index.js.map +0 -1
- package/dist/syncer/syncer.js.map +0 -1
- package/dist/templates/base-template.d.ts +0 -13
- package/dist/templates/base-template.d.ts.map +0 -1
- package/dist/templates/base-template.js +0 -2
- package/dist/templates/base-template.js.map +0 -1
- package/dist/templates/entity.template.d.ts.map +0 -1
- package/dist/templates/entity.template.js +0 -2
- package/dist/templates/entity.template.js.map +0 -1
- package/dist/templates/generated.template.d.ts.map +0 -1
- package/dist/templates/generated.template.js +0 -2
- package/dist/templates/generated.template.js.map +0 -1
- package/dist/templates/generated_http.template.d.ts.map +0 -1
- package/dist/templates/generated_http.template.js +0 -2
- package/dist/templates/generated_http.template.js.map +0 -1
- package/dist/templates/generated_sso.template.d.ts.map +0 -1
- package/dist/templates/generated_sso.template.js +0 -2
- package/dist/templates/generated_sso.template.js.map +0 -1
- package/dist/templates/index.d.ts +0 -2
- package/dist/templates/index.d.ts.map +0 -1
- package/dist/templates/index.js +0 -2
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/init_types.template.d.ts.map +0 -1
- package/dist/templates/init_types.template.js +0 -2
- package/dist/templates/init_types.template.js.map +0 -1
- package/dist/templates/model.template.d.ts +0 -17
- package/dist/templates/model.template.d.ts.map +0 -1
- package/dist/templates/model.template.js +0 -2
- package/dist/templates/model.template.js.map +0 -1
- package/dist/templates/model_test.template.d.ts.map +0 -1
- package/dist/templates/model_test.template.js +0 -2
- package/dist/templates/model_test.template.js.map +0 -1
- package/dist/templates/service.template.d.ts.map +0 -1
- package/dist/templates/service.template.js +0 -2
- package/dist/templates/service.template.js.map +0 -1
- package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
- package/dist/templates/view_enums_buttonset.template.js +0 -2
- package/dist/templates/view_enums_buttonset.template.js.map +0 -1
- package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
- package/dist/templates/view_enums_dropdown.template.js +0 -2
- package/dist/templates/view_enums_dropdown.template.js.map +0 -1
- package/dist/templates/view_enums_select.template.d.ts.map +0 -1
- package/dist/templates/view_enums_select.template.js +0 -2
- package/dist/templates/view_enums_select.template.js.map +0 -1
- package/dist/templates/view_form.template.d.ts.map +0 -1
- package/dist/templates/view_form.template.js +0 -2
- package/dist/templates/view_form.template.js.map +0 -1
- package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_all_select.template.js +0 -2
- package/dist/templates/view_id_all_select.template.js.map +0 -1
- package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_async_select.template.js +0 -2
- package/dist/templates/view_id_async_select.template.js.map +0 -1
- package/dist/templates/view_list.template.d.ts.map +0 -1
- package/dist/templates/view_list.template.js +0 -2
- package/dist/templates/view_list.template.js.map +0 -1
- package/dist/templates/view_list_columns.template.d.ts +0 -17
- package/dist/templates/view_list_columns.template.d.ts.map +0 -1
- package/dist/templates/view_list_columns.template.js +0 -2
- package/dist/templates/view_list_columns.template.js.map +0 -1
- package/dist/templates/view_search_input.template.d.ts.map +0 -1
- package/dist/templates/view_search_input.template.js +0 -2
- package/dist/templates/view_search_input.template.js.map +0 -1
- package/dist/testing/_relation-graph.js.map +0 -1
- package/dist/testing/fixture-manager.js.map +0 -1
- package/dist/types/types.js.map +0 -1
- package/dist/typings/knex.d.js.map +0 -1
- package/dist/utils/async-utils.js.map +0 -1
- package/dist/utils/controller.js.map +0 -1
- package/dist/utils/fs-utils.js.map +0 -1
- package/dist/utils/lodash-able.js.map +0 -1
- package/dist/utils/model.js.map +0 -1
- package/dist/utils/sql-parser.js.map +0 -1
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/zod-error.js.map +0 -1
- package/src/bin/cli-wrapper.ts +0 -75
- package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
- package/src/entity/entity-utils.ts +0 -291
- package/src/templates/base-template.ts +0 -19
- package/src/templates/generated_sso.template.ts +0 -138
- package/src/templates/index.ts +0 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const rtzrOptionsShape = {
|
|
4
|
+
domain: z.enum([
|
|
5
|
+
"CALL",
|
|
6
|
+
"GENERAL"
|
|
7
|
+
]).default("GENERAL"),
|
|
8
|
+
language: z.string(),
|
|
9
|
+
languageCandidates: z.array(z.string()).optional(),
|
|
10
|
+
keywords: z.union([
|
|
11
|
+
z.string(),
|
|
12
|
+
z.array(z.string())
|
|
13
|
+
]).optional(),
|
|
14
|
+
paragraphSplitterMax: z.number().optional(),
|
|
15
|
+
diarization: z.boolean().optional(),
|
|
16
|
+
itn: z.boolean().optional(),
|
|
17
|
+
diarizationSpkCount: z.number().optional(),
|
|
18
|
+
disfluencyFilter: z.boolean().optional(),
|
|
19
|
+
paragraphSplitter: z.boolean().optional(),
|
|
20
|
+
profanityFilter: z.boolean().optional(),
|
|
21
|
+
wordTimestamp: z.boolean().optional()
|
|
22
|
+
};
|
|
23
|
+
const rtzrOptionsMap = {
|
|
24
|
+
domain: "domain",
|
|
25
|
+
language: "language",
|
|
26
|
+
languageCandidates: "language_candidates",
|
|
27
|
+
keywords: "keywords",
|
|
28
|
+
paragraphSplitterMax: "paragraph_splitter.max",
|
|
29
|
+
diarization: "use_diarization",
|
|
30
|
+
itn: "use_itn",
|
|
31
|
+
diarizationSpkCount: "diarization.spk_count",
|
|
32
|
+
disfluencyFilter: "use_disfluency_filter",
|
|
33
|
+
paragraphSplitter: "use_paragraph_splitter",
|
|
34
|
+
profanityFilter: "use_profanity_filter",
|
|
35
|
+
wordTimestamp: "use_word_timestamp"
|
|
36
|
+
};
|
|
37
|
+
// https://developers.rtzr.ai/docs/stt-file/
|
|
38
|
+
export const rtzrTranscriptionProviderOptions = lazySchema(()=>zodSchema(z.object(rtzrOptionsShape).transform((item)=>{
|
|
39
|
+
return Object.fromEntries(Object.entries(item).map(([key, value])=>{
|
|
40
|
+
return [
|
|
41
|
+
rtzrOptionsMap[key],
|
|
42
|
+
value
|
|
43
|
+
];
|
|
44
|
+
}));
|
|
45
|
+
})));
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9haS9wcm92aWRlcnMvcnR6ci9vcHRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgSW5mZXJTY2hlbWEsIGxhenlTY2hlbWEsIHpvZFNjaGVtYSB9IGZyb20gXCJAYWktc2RrL3Byb3ZpZGVyLXV0aWxzXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5leHBvcnQgdHlwZSBSdHpyVHJhbnNjcmlwdGlvbk1vZGVsSWQgPSBcIndoaXNwZXJcIiB8IFwic29tbWVyc1wiIHwgKHN0cmluZyAmIHt9KTtcblxuY29uc3QgcnR6ck9wdGlvbnNTaGFwZSA9IHtcbiAgZG9tYWluOiB6LmVudW0oW1wiQ0FMTFwiLCBcIkdFTkVSQUxcIl0pLmRlZmF1bHQoXCJHRU5FUkFMXCIpLFxuICBsYW5ndWFnZTogei5zdHJpbmcoKSxcbiAgbGFuZ3VhZ2VDYW5kaWRhdGVzOiB6LmFycmF5KHouc3RyaW5nKCkpLm9wdGlvbmFsKCksXG4gIGtleXdvcmRzOiB6LnVuaW9uKFt6LnN0cmluZygpLCB6LmFycmF5KHouc3RyaW5nKCkpXSkub3B0aW9uYWwoKSxcbiAgcGFyYWdyYXBoU3BsaXR0ZXJNYXg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgZGlhcml6YXRpb246IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGl0bjogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgZGlhcml6YXRpb25TcGtDb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBkaXNmbHVlbmN5RmlsdGVyOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBwYXJhZ3JhcGhTcGxpdHRlcjogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgcHJvZmFuaXR5RmlsdGVyOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB3b3JkVGltZXN0YW1wOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufTtcblxuY29uc3QgcnR6ck9wdGlvbnNNYXA6IFJlY29yZDxrZXlvZiB0eXBlb2YgcnR6ck9wdGlvbnNTaGFwZSwgc3RyaW5nPiA9IHtcbiAgZG9tYWluOiBcImRvbWFpblwiLFxuICBsYW5ndWFnZTogXCJsYW5ndWFnZVwiLFxuICBsYW5ndWFnZUNhbmRpZGF0ZXM6IFwibGFuZ3VhZ2VfY2FuZGlkYXRlc1wiLFxuICBrZXl3b3JkczogXCJrZXl3b3Jkc1wiLFxuICBwYXJhZ3JhcGhTcGxpdHRlck1heDogXCJwYXJhZ3JhcGhfc3BsaXR0ZXIubWF4XCIsXG4gIGRpYXJpemF0aW9uOiBcInVzZV9kaWFyaXphdGlvblwiLFxuICBpdG46IFwidXNlX2l0blwiLFxuICBkaWFyaXphdGlvblNwa0NvdW50OiBcImRpYXJpemF0aW9uLnNwa19jb3VudFwiLFxuICBkaXNmbHVlbmN5RmlsdGVyOiBcInVzZV9kaXNmbHVlbmN5X2ZpbHRlclwiLFxuICBwYXJhZ3JhcGhTcGxpdHRlcjogXCJ1c2VfcGFyYWdyYXBoX3NwbGl0dGVyXCIsXG4gIHByb2Zhbml0eUZpbHRlcjogXCJ1c2VfcHJvZmFuaXR5X2ZpbHRlclwiLFxuICB3b3JkVGltZXN0YW1wOiBcInVzZV93b3JkX3RpbWVzdGFtcFwiLFxufTtcblxuLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLnJ0enIuYWkvZG9jcy9zdHQtZmlsZS9cbmV4cG9ydCBjb25zdCBydHpyVHJhbnNjcmlwdGlvblByb3ZpZGVyT3B0aW9ucyA9IGxhenlTY2hlbWEoKCkgPT5cbiAgem9kU2NoZW1hKFxuICAgIHoub2JqZWN0KHJ0enJPcHRpb25zU2hhcGUpLnRyYW5zZm9ybSgoaXRlbSkgPT4ge1xuICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoaXRlbSkubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICByZXR1cm4gW3J0enJPcHRpb25zTWFwW2tleSBhcyBrZXlvZiB0eXBlb2YgcnR6ck9wdGlvbnNTaGFwZV0sIHZhbHVlXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0pLFxuICApLFxuKTtcblxuZXhwb3J0IHR5cGUgUnR6clRyYW5zY3JpcHRpb25Qcm92aWRlck9wdGlvbnMgPSBJbmZlclNjaGVtYTx0eXBlb2YgcnR6clRyYW5zY3JpcHRpb25Qcm92aWRlck9wdGlvbnM+O1xuIl0sIm5hbWVzIjpbImxhenlTY2hlbWEiLCJ6b2RTY2hlbWEiLCJ6IiwicnR6ck9wdGlvbnNTaGFwZSIsImRvbWFpbiIsImVudW0iLCJkZWZhdWx0IiwibGFuZ3VhZ2UiLCJzdHJpbmciLCJsYW5ndWFnZUNhbmRpZGF0ZXMiLCJhcnJheSIsIm9wdGlvbmFsIiwia2V5d29yZHMiLCJ1bmlvbiIsInBhcmFncmFwaFNwbGl0dGVyTWF4IiwibnVtYmVyIiwiZGlhcml6YXRpb24iLCJib29sZWFuIiwiaXRuIiwiZGlhcml6YXRpb25TcGtDb3VudCIsImRpc2ZsdWVuY3lGaWx0ZXIiLCJwYXJhZ3JhcGhTcGxpdHRlciIsInByb2Zhbml0eUZpbHRlciIsIndvcmRUaW1lc3RhbXAiLCJydHpyT3B0aW9uc01hcCIsInJ0enJUcmFuc2NyaXB0aW9uUHJvdmlkZXJPcHRpb25zIiwib2JqZWN0IiwidHJhbnNmb3JtIiwiaXRlbSIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwiZW50cmllcyIsIm1hcCIsImtleSIsInZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUEyQkEsVUFBVSxFQUFFQyxTQUFTLFFBQVEseUJBQXlCO0FBQ2pGLFNBQVNDLENBQUMsUUFBUSxNQUFNO0FBSXhCLE1BQU1DLG1CQUFtQjtJQUN2QkMsUUFBUUYsRUFBRUcsSUFBSSxDQUFDO1FBQUM7UUFBUTtLQUFVLEVBQUVDLE9BQU8sQ0FBQztJQUM1Q0MsVUFBVUwsRUFBRU0sTUFBTTtJQUNsQkMsb0JBQW9CUCxFQUFFUSxLQUFLLENBQUNSLEVBQUVNLE1BQU0sSUFBSUcsUUFBUTtJQUNoREMsVUFBVVYsRUFBRVcsS0FBSyxDQUFDO1FBQUNYLEVBQUVNLE1BQU07UUFBSU4sRUFBRVEsS0FBSyxDQUFDUixFQUFFTSxNQUFNO0tBQUksRUFBRUcsUUFBUTtJQUM3REcsc0JBQXNCWixFQUFFYSxNQUFNLEdBQUdKLFFBQVE7SUFDekNLLGFBQWFkLEVBQUVlLE9BQU8sR0FBR04sUUFBUTtJQUNqQ08sS0FBS2hCLEVBQUVlLE9BQU8sR0FBR04sUUFBUTtJQUN6QlEscUJBQXFCakIsRUFBRWEsTUFBTSxHQUFHSixRQUFRO0lBQ3hDUyxrQkFBa0JsQixFQUFFZSxPQUFPLEdBQUdOLFFBQVE7SUFDdENVLG1CQUFtQm5CLEVBQUVlLE9BQU8sR0FBR04sUUFBUTtJQUN2Q1csaUJBQWlCcEIsRUFBRWUsT0FBTyxHQUFHTixRQUFRO0lBQ3JDWSxlQUFlckIsRUFBRWUsT0FBTyxHQUFHTixRQUFRO0FBQ3JDO0FBRUEsTUFBTWEsaUJBQWdFO0lBQ3BFcEIsUUFBUTtJQUNSRyxVQUFVO0lBQ1ZFLG9CQUFvQjtJQUNwQkcsVUFBVTtJQUNWRSxzQkFBc0I7SUFDdEJFLGFBQWE7SUFDYkUsS0FBSztJQUNMQyxxQkFBcUI7SUFDckJDLGtCQUFrQjtJQUNsQkMsbUJBQW1CO0lBQ25CQyxpQkFBaUI7SUFDakJDLGVBQWU7QUFDakI7QUFFQSw0Q0FBNEM7QUFDNUMsT0FBTyxNQUFNRSxtQ0FBbUN6QixXQUFXLElBQ3pEQyxVQUNFQyxFQUFFd0IsTUFBTSxDQUFDdkIsa0JBQWtCd0IsU0FBUyxDQUFDLENBQUNDO1FBQ3BDLE9BQU9DLE9BQU9DLFdBQVcsQ0FDdkJELE9BQU9FLE9BQU8sQ0FBQ0gsTUFBTUksR0FBRyxDQUFDLENBQUMsQ0FBQ0MsS0FBS0MsTUFBTTtZQUNwQyxPQUFPO2dCQUFDVixjQUFjLENBQUNTLElBQXFDO2dCQUFFQzthQUFNO1FBQ3RFO0lBRUosS0FFRiJ9
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ProviderV3, type TranscriptionModelV3 } from "@ai-sdk/provider";
|
|
2
|
+
import { type FetchFunction } from "@ai-sdk/provider-utils";
|
|
3
|
+
import type { RtzrTranscriptionModelId } from "./options";
|
|
4
|
+
export interface RtzrProvider extends ProviderV3 {
|
|
5
|
+
(modelId: RtzrTranscriptionModelId): TranscriptionModelV3;
|
|
6
|
+
transcription(modelId: RtzrTranscriptionModelId): TranscriptionModelV3;
|
|
7
|
+
}
|
|
8
|
+
export interface RtzrProviderSettings {
|
|
9
|
+
baseURL?: string;
|
|
10
|
+
clientId?: string;
|
|
11
|
+
clientSecret?: string;
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
name?: string;
|
|
14
|
+
fetch?: FetchFunction;
|
|
15
|
+
}
|
|
16
|
+
export declare function createRtzr(options?: RtzrProviderSettings): RtzrProvider;
|
|
17
|
+
export declare const rtzr: RtzrProvider;
|
|
18
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/rtzr/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAE1D,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,CAAC,OAAO,EAAE,wBAAwB,GAAG,oBAAoB,CAAC;IAC1D,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,oBAAoB,CAAC;CACxE;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,oBAAyB,GAAG,YAAY,CA+D3E;AAED,eAAO,MAAM,IAAI,cAAe,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { NoSuchModelError } from "@ai-sdk/provider";
|
|
2
|
+
import { loadApiKey, loadOptionalSetting, withoutTrailingSlash, withUserAgentSuffix } from "@ai-sdk/provider-utils";
|
|
3
|
+
import { RtzrTranscriptionModel } from "./model.js";
|
|
4
|
+
export function createRtzr(options = {}) {
|
|
5
|
+
const baseURL = withoutTrailingSlash(loadOptionalSetting({
|
|
6
|
+
settingValue: options.baseURL,
|
|
7
|
+
environmentVariableName: "RTZR_BASE_URL"
|
|
8
|
+
})) ?? "https://openapi.vito.ai/v1";
|
|
9
|
+
const providerName = options.name ?? "rtzr";
|
|
10
|
+
const getHeaders = ()=>withUserAgentSuffix({
|
|
11
|
+
...options.headers
|
|
12
|
+
}, `cartanova-ai/rtzr-api-provider`);
|
|
13
|
+
const createTranscriptionModel = (modelId)=>{
|
|
14
|
+
const clientId = loadApiKey({
|
|
15
|
+
apiKey: options.clientId,
|
|
16
|
+
environmentVariableName: "RTZR_CLIENT_ID",
|
|
17
|
+
description: "RTZR"
|
|
18
|
+
});
|
|
19
|
+
const clientSecret = loadApiKey({
|
|
20
|
+
apiKey: options.clientSecret,
|
|
21
|
+
environmentVariableName: "RTZR_CLIENT_SECRET",
|
|
22
|
+
description: "RTZR"
|
|
23
|
+
});
|
|
24
|
+
return new RtzrTranscriptionModel(modelId, {
|
|
25
|
+
provider: `${providerName}.transcription`,
|
|
26
|
+
auth: {
|
|
27
|
+
clientId,
|
|
28
|
+
clientSecret
|
|
29
|
+
},
|
|
30
|
+
url: ({ path })=>`${baseURL}${path}`,
|
|
31
|
+
headers: getHeaders,
|
|
32
|
+
fetch: options.fetch
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
const provider = (modelId)=>createTranscriptionModel(modelId);
|
|
36
|
+
provider.specificationVersion = "v3";
|
|
37
|
+
provider.transcription = createTranscriptionModel;
|
|
38
|
+
provider.transcriptionModel = createTranscriptionModel;
|
|
39
|
+
const handleUnsupportedTypes = (modelType)=>{
|
|
40
|
+
return (modelId)=>{
|
|
41
|
+
throw new NoSuchModelError({
|
|
42
|
+
modelId,
|
|
43
|
+
modelType
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
provider.languageModel = handleUnsupportedTypes("languageModel");
|
|
48
|
+
provider.embeddingModel = handleUnsupportedTypes("embeddingModel");
|
|
49
|
+
provider.imageModel = handleUnsupportedTypes("imageModel");
|
|
50
|
+
return provider;
|
|
51
|
+
}
|
|
52
|
+
export const rtzr = createRtzr();
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9haS9wcm92aWRlcnMvcnR6ci9wcm92aWRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOb1N1Y2hNb2RlbEVycm9yLCB0eXBlIFByb3ZpZGVyVjMsIHR5cGUgVHJhbnNjcmlwdGlvbk1vZGVsVjMgfSBmcm9tIFwiQGFpLXNkay9wcm92aWRlclwiO1xuaW1wb3J0IHtcbiAgdHlwZSBGZXRjaEZ1bmN0aW9uLFxuICBsb2FkQXBpS2V5LFxuICBsb2FkT3B0aW9uYWxTZXR0aW5nLFxuICB3aXRob3V0VHJhaWxpbmdTbGFzaCxcbiAgd2l0aFVzZXJBZ2VudFN1ZmZpeCxcbn0gZnJvbSBcIkBhaS1zZGsvcHJvdmlkZXItdXRpbHNcIjtcbmltcG9ydCB7IFJ0enJUcmFuc2NyaXB0aW9uTW9kZWwgfSBmcm9tIFwiLi9tb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBSdHpyVHJhbnNjcmlwdGlvbk1vZGVsSWQgfSBmcm9tIFwiLi9vcHRpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnR6clByb3ZpZGVyIGV4dGVuZHMgUHJvdmlkZXJWMyB7XG4gIChtb2RlbElkOiBSdHpyVHJhbnNjcmlwdGlvbk1vZGVsSWQpOiBUcmFuc2NyaXB0aW9uTW9kZWxWMztcbiAgdHJhbnNjcmlwdGlvbihtb2RlbElkOiBSdHpyVHJhbnNjcmlwdGlvbk1vZGVsSWQpOiBUcmFuc2NyaXB0aW9uTW9kZWxWMztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdHpyUHJvdmlkZXJTZXR0aW5ncyB7XG4gIGJhc2VVUkw/OiBzdHJpbmc7XG4gIGNsaWVudElkPzogc3RyaW5nO1xuICBjbGllbnRTZWNyZXQ/OiBzdHJpbmc7XG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBuYW1lPzogc3RyaW5nO1xuICBmZXRjaD86IEZldGNoRnVuY3Rpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSdHpyKG9wdGlvbnM6IFJ0enJQcm92aWRlclNldHRpbmdzID0ge30pOiBSdHpyUHJvdmlkZXIge1xuICBjb25zdCBiYXNlVVJMID1cbiAgICB3aXRob3V0VHJhaWxpbmdTbGFzaChcbiAgICAgIGxvYWRPcHRpb25hbFNldHRpbmcoe1xuICAgICAgICBzZXR0aW5nVmFsdWU6IG9wdGlvbnMuYmFzZVVSTCxcbiAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU6IFwiUlRaUl9CQVNFX1VSTFwiLFxuICAgICAgfSksXG4gICAgKSA/PyBcImh0dHBzOi8vb3BlbmFwaS52aXRvLmFpL3YxXCI7XG5cbiAgY29uc3QgcHJvdmlkZXJOYW1lID0gb3B0aW9ucy5uYW1lID8/IFwicnR6clwiO1xuXG4gIGNvbnN0IGdldEhlYWRlcnMgPSAoKSA9PlxuICAgIHdpdGhVc2VyQWdlbnRTdWZmaXgoXG4gICAgICB7XG4gICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgIH0sXG4gICAgICBgY2FydGFub3ZhLWFpL3J0enItYXBpLXByb3ZpZGVyYCxcbiAgICApO1xuXG4gIGNvbnN0IGNyZWF0ZVRyYW5zY3JpcHRpb25Nb2RlbCA9IChtb2RlbElkOiBSdHpyVHJhbnNjcmlwdGlvbk1vZGVsSWQpID0+IHtcbiAgICBjb25zdCBjbGllbnRJZCA9IGxvYWRBcGlLZXkoe1xuICAgICAgYXBpS2V5OiBvcHRpb25zLmNsaWVudElkLFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZU5hbWU6IFwiUlRaUl9DTElFTlRfSURcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlJUWlJcIixcbiAgICB9KTtcblxuICAgIGNvbnN0IGNsaWVudFNlY3JldCA9IGxvYWRBcGlLZXkoe1xuICAgICAgYXBpS2V5OiBvcHRpb25zLmNsaWVudFNlY3JldCxcbiAgICAgIGVudmlyb25tZW50VmFyaWFibGVOYW1lOiBcIlJUWlJfQ0xJRU5UX1NFQ1JFVFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUlRaUlwiLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBSdHpyVHJhbnNjcmlwdGlvbk1vZGVsKG1vZGVsSWQsIHtcbiAgICAgIHByb3ZpZGVyOiBgJHtwcm92aWRlck5hbWV9LnRyYW5zY3JpcHRpb25gLFxuICAgICAgYXV0aDoge1xuICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgY2xpZW50U2VjcmV0LFxuICAgICAgfSxcbiAgICAgIHVybDogKHsgcGF0aCB9KSA9PiBgJHtiYXNlVVJMfSR7cGF0aH1gLFxuICAgICAgaGVhZGVyczogZ2V0SGVhZGVycyxcbiAgICAgIGZldGNoOiBvcHRpb25zLmZldGNoLFxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHByb3ZpZGVyID0gKG1vZGVsSWQ6IFJ0enJUcmFuc2NyaXB0aW9uTW9kZWxJZCkgPT4gY3JlYXRlVHJhbnNjcmlwdGlvbk1vZGVsKG1vZGVsSWQpO1xuXG4gIHByb3ZpZGVyLnNwZWNpZmljYXRpb25WZXJzaW9uID0gXCJ2M1wiIGFzIGNvbnN0O1xuICBwcm92aWRlci50cmFuc2NyaXB0aW9uID0gY3JlYXRlVHJhbnNjcmlwdGlvbk1vZGVsO1xuICBwcm92aWRlci50cmFuc2NyaXB0aW9uTW9kZWwgPSBjcmVhdGVUcmFuc2NyaXB0aW9uTW9kZWw7XG5cbiAgY29uc3QgaGFuZGxlVW5zdXBwb3J0ZWRUeXBlcyA9IChtb2RlbFR5cGU6IFwibGFuZ3VhZ2VNb2RlbFwiIHwgXCJlbWJlZGRpbmdNb2RlbFwiIHwgXCJpbWFnZU1vZGVsXCIpID0+IHtcbiAgICByZXR1cm4gKG1vZGVsSWQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhyb3cgbmV3IE5vU3VjaE1vZGVsRXJyb3Ioe1xuICAgICAgICBtb2RlbElkLFxuICAgICAgICBtb2RlbFR5cGUsXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xuXG4gIHByb3ZpZGVyLmxhbmd1YWdlTW9kZWwgPSBoYW5kbGVVbnN1cHBvcnRlZFR5cGVzKFwibGFuZ3VhZ2VNb2RlbFwiKTtcbiAgcHJvdmlkZXIuZW1iZWRkaW5nTW9kZWwgPSBoYW5kbGVVbnN1cHBvcnRlZFR5cGVzKFwiZW1iZWRkaW5nTW9kZWxcIik7XG4gIHByb3ZpZGVyLmltYWdlTW9kZWwgPSBoYW5kbGVVbnN1cHBvcnRlZFR5cGVzKFwiaW1hZ2VNb2RlbFwiKTtcbiAgcmV0dXJuIHByb3ZpZGVyIGFzIFJ0enJQcm92aWRlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHJ0enIgPSBjcmVhdGVSdHpyKCk7XG4iXSwibmFtZXMiOlsiTm9TdWNoTW9kZWxFcnJvciIsImxvYWRBcGlLZXkiLCJsb2FkT3B0aW9uYWxTZXR0aW5nIiwid2l0aG91dFRyYWlsaW5nU2xhc2giLCJ3aXRoVXNlckFnZW50U3VmZml4IiwiUnR6clRyYW5zY3JpcHRpb25Nb2RlbCIsImNyZWF0ZVJ0enIiLCJvcHRpb25zIiwiYmFzZVVSTCIsInNldHRpbmdWYWx1ZSIsImVudmlyb25tZW50VmFyaWFibGVOYW1lIiwicHJvdmlkZXJOYW1lIiwibmFtZSIsImdldEhlYWRlcnMiLCJoZWFkZXJzIiwiY3JlYXRlVHJhbnNjcmlwdGlvbk1vZGVsIiwibW9kZWxJZCIsImNsaWVudElkIiwiYXBpS2V5IiwiZGVzY3JpcHRpb24iLCJjbGllbnRTZWNyZXQiLCJwcm92aWRlciIsImF1dGgiLCJ1cmwiLCJwYXRoIiwiZmV0Y2giLCJzcGVjaWZpY2F0aW9uVmVyc2lvbiIsInRyYW5zY3JpcHRpb24iLCJ0cmFuc2NyaXB0aW9uTW9kZWwiLCJoYW5kbGVVbnN1cHBvcnRlZFR5cGVzIiwibW9kZWxUeXBlIiwibGFuZ3VhZ2VNb2RlbCIsImVtYmVkZGluZ01vZGVsIiwiaW1hZ2VNb2RlbCIsInJ0enIiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGdCQUFnQixRQUFvRCxtQkFBbUI7QUFDaEcsU0FFRUMsVUFBVSxFQUNWQyxtQkFBbUIsRUFDbkJDLG9CQUFvQixFQUNwQkMsbUJBQW1CLFFBQ2QseUJBQXlCO0FBQ2hDLFNBQVNDLHNCQUFzQixRQUFRLGFBQVU7QUFpQmpELE9BQU8sU0FBU0MsV0FBV0MsVUFBZ0MsQ0FBQyxDQUFDO0lBQzNELE1BQU1DLFVBQ0pMLHFCQUNFRCxvQkFBb0I7UUFDbEJPLGNBQWNGLFFBQVFDLE9BQU87UUFDN0JFLHlCQUF5QjtJQUMzQixPQUNHO0lBRVAsTUFBTUMsZUFBZUosUUFBUUssSUFBSSxJQUFJO0lBRXJDLE1BQU1DLGFBQWEsSUFDakJULG9CQUNFO1lBQ0UsR0FBR0csUUFBUU8sT0FBTztRQUNwQixHQUNBLENBQUMsOEJBQThCLENBQUM7SUFHcEMsTUFBTUMsMkJBQTJCLENBQUNDO1FBQ2hDLE1BQU1DLFdBQVdoQixXQUFXO1lBQzFCaUIsUUFBUVgsUUFBUVUsUUFBUTtZQUN4QlAseUJBQXlCO1lBQ3pCUyxhQUFhO1FBQ2Y7UUFFQSxNQUFNQyxlQUFlbkIsV0FBVztZQUM5QmlCLFFBQVFYLFFBQVFhLFlBQVk7WUFDNUJWLHlCQUF5QjtZQUN6QlMsYUFBYTtRQUNmO1FBRUEsT0FBTyxJQUFJZCx1QkFBdUJXLFNBQVM7WUFDekNLLFVBQVUsR0FBR1YsYUFBYSxjQUFjLENBQUM7WUFDekNXLE1BQU07Z0JBQ0pMO2dCQUNBRztZQUNGO1lBQ0FHLEtBQUssQ0FBQyxFQUFFQyxJQUFJLEVBQUUsR0FBSyxHQUFHaEIsVUFBVWdCLE1BQU07WUFDdENWLFNBQVNEO1lBQ1RZLE9BQU9sQixRQUFRa0IsS0FBSztRQUN0QjtJQUNGO0lBRUEsTUFBTUosV0FBVyxDQUFDTCxVQUFzQ0QseUJBQXlCQztJQUVqRkssU0FBU0ssb0JBQW9CLEdBQUc7SUFDaENMLFNBQVNNLGFBQWEsR0FBR1o7SUFDekJNLFNBQVNPLGtCQUFrQixHQUFHYjtJQUU5QixNQUFNYyx5QkFBeUIsQ0FBQ0M7UUFDOUIsT0FBTyxDQUFDZDtZQUNOLE1BQU0sSUFBSWhCLGlCQUFpQjtnQkFDekJnQjtnQkFDQWM7WUFDRjtRQUNGO0lBQ0Y7SUFFQVQsU0FBU1UsYUFBYSxHQUFHRix1QkFBdUI7SUFDaERSLFNBQVNXLGNBQWMsR0FBR0gsdUJBQXVCO0lBQ2pEUixTQUFTWSxVQUFVLEdBQUdKLHVCQUF1QjtJQUM3QyxPQUFPUjtBQUNUO0FBRUEsT0FBTyxNQUFNYSxPQUFPNUIsYUFBYSJ9
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type FetchFunction, type ResponseHandler } from "@ai-sdk/provider-utils";
|
|
2
|
+
export declare function handleFetchError({ error, url, requestBodyValues, }: {
|
|
3
|
+
error: unknown;
|
|
4
|
+
url: string;
|
|
5
|
+
requestBodyValues: unknown;
|
|
6
|
+
}): unknown;
|
|
7
|
+
export declare const getFromApi: <T>({ url, headers, successfulResponseHandler, failedResponseHandler, abortSignal, fetch, }: {
|
|
8
|
+
url: string;
|
|
9
|
+
headers?: Record<string, string | undefined>;
|
|
10
|
+
failedResponseHandler: ResponseHandler<Error>;
|
|
11
|
+
successfulResponseHandler: ResponseHandler<T>;
|
|
12
|
+
abortSignal?: AbortSignal;
|
|
13
|
+
fetch?: FetchFunction;
|
|
14
|
+
}) => Promise<{
|
|
15
|
+
value: T;
|
|
16
|
+
rawValue?: unknown;
|
|
17
|
+
responseHeaders?: Record<string, string>;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/rtzr/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAIhC,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,GAAG,EACH,iBAAiB,GAClB,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,OAAO,CAAC;CAC5B,WAuBA;AAKD,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,yFAOjC;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,qBAAqB,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9C,yBAAyB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAC9C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;;;;EAiEA,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { APICallError } from "@ai-sdk/provider";
|
|
2
|
+
import { extractResponseHeaders, isAbortError, withUserAgentSuffix } from "@ai-sdk/provider-utils";
|
|
3
|
+
const FETCH_FAILED_ERROR_MESSAGES = [
|
|
4
|
+
"fetch failed",
|
|
5
|
+
"failed to fetch"
|
|
6
|
+
];
|
|
7
|
+
export function handleFetchError({ error, url, requestBodyValues }) {
|
|
8
|
+
if (isAbortError(error)) {
|
|
9
|
+
return error;
|
|
10
|
+
}
|
|
11
|
+
if (error instanceof TypeError && FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())) {
|
|
12
|
+
const cause = error.cause;
|
|
13
|
+
if (cause != null) {
|
|
14
|
+
return new APICallError({
|
|
15
|
+
message: `Cannot connect to API: ${cause.message}`,
|
|
16
|
+
cause,
|
|
17
|
+
url,
|
|
18
|
+
requestBodyValues,
|
|
19
|
+
isRetryable: true
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return error;
|
|
24
|
+
}
|
|
25
|
+
// use function to allow for mocking in tests:
|
|
26
|
+
const getOriginalFetch = ()=>globalThis.fetch;
|
|
27
|
+
export const getFromApi = async ({ url, headers = {}, successfulResponseHandler, failedResponseHandler, abortSignal, fetch = getOriginalFetch() })=>{
|
|
28
|
+
try {
|
|
29
|
+
const response = await fetch(url, {
|
|
30
|
+
method: "GET",
|
|
31
|
+
headers: withUserAgentSuffix(headers, `cartanova-ai/rtzr-api-provider`),
|
|
32
|
+
signal: abortSignal
|
|
33
|
+
});
|
|
34
|
+
const responseHeaders = extractResponseHeaders(response);
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
let errorInformation;
|
|
37
|
+
try {
|
|
38
|
+
errorInformation = await failedResponseHandler({
|
|
39
|
+
response,
|
|
40
|
+
url,
|
|
41
|
+
requestBodyValues: {}
|
|
42
|
+
});
|
|
43
|
+
} catch (error) {
|
|
44
|
+
if (isAbortError(error) || APICallError.isInstance(error)) {
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
throw new APICallError({
|
|
48
|
+
message: "Failed to process error response",
|
|
49
|
+
cause: error,
|
|
50
|
+
statusCode: response.status,
|
|
51
|
+
url,
|
|
52
|
+
responseHeaders,
|
|
53
|
+
requestBodyValues: {}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
throw errorInformation.value;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
return await successfulResponseHandler({
|
|
60
|
+
response,
|
|
61
|
+
url,
|
|
62
|
+
requestBodyValues: {}
|
|
63
|
+
});
|
|
64
|
+
} catch (error) {
|
|
65
|
+
if (error instanceof Error) {
|
|
66
|
+
if (isAbortError(error) || APICallError.isInstance(error)) {
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
throw new APICallError({
|
|
71
|
+
message: "Failed to process successful response",
|
|
72
|
+
cause: error,
|
|
73
|
+
statusCode: response.status,
|
|
74
|
+
url,
|
|
75
|
+
responseHeaders,
|
|
76
|
+
requestBodyValues: {}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
} catch (error) {
|
|
80
|
+
throw handleFetchError({
|
|
81
|
+
error,
|
|
82
|
+
url,
|
|
83
|
+
requestBodyValues: {}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9haS9wcm92aWRlcnMvcnR6ci91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUElDYWxsRXJyb3IgfSBmcm9tIFwiQGFpLXNkay9wcm92aWRlclwiO1xuaW1wb3J0IHtcbiAgZXh0cmFjdFJlc3BvbnNlSGVhZGVycyxcbiAgdHlwZSBGZXRjaEZ1bmN0aW9uLFxuICBpc0Fib3J0RXJyb3IsXG4gIHR5cGUgUmVzcG9uc2VIYW5kbGVyLFxuICB3aXRoVXNlckFnZW50U3VmZml4LFxufSBmcm9tIFwiQGFpLXNkay9wcm92aWRlci11dGlsc1wiO1xuXG5jb25zdCBGRVRDSF9GQUlMRURfRVJST1JfTUVTU0FHRVMgPSBbXCJmZXRjaCBmYWlsZWRcIiwgXCJmYWlsZWQgdG8gZmV0Y2hcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVGZXRjaEVycm9yKHtcbiAgZXJyb3IsXG4gIHVybCxcbiAgcmVxdWVzdEJvZHlWYWx1ZXMsXG59OiB7XG4gIGVycm9yOiB1bmtub3duO1xuICB1cmw6IHN0cmluZztcbiAgcmVxdWVzdEJvZHlWYWx1ZXM6IHVua25vd247XG59KSB7XG4gIGlmIChpc0Fib3J0RXJyb3IoZXJyb3IpKSB7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG5cbiAgaWYgKFxuICAgIGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yICYmXG4gICAgRkVUQ0hfRkFJTEVEX0VSUk9SX01FU1NBR0VTLmluY2x1ZGVzKGVycm9yLm1lc3NhZ2UudG9Mb3dlckNhc2UoKSlcbiAgKSB7XG4gICAgY29uc3QgY2F1c2UgPSAoZXJyb3IgYXMgeyBjYXVzZT86IEVycm9yIH0pLmNhdXNlO1xuXG4gICAgaWYgKGNhdXNlICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBuZXcgQVBJQ2FsbEVycm9yKHtcbiAgICAgICAgbWVzc2FnZTogYENhbm5vdCBjb25uZWN0IHRvIEFQSTogJHtjYXVzZS5tZXNzYWdlfWAsXG4gICAgICAgIGNhdXNlLFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVlc3RCb2R5VmFsdWVzLFxuICAgICAgICBpc1JldHJ5YWJsZTogdHJ1ZSwgLy8gcmV0cnkgd2hlbiBuZXR3b3JrIGVycm9yXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXJyb3I7XG59XG5cbi8vIHVzZSBmdW5jdGlvbiB0byBhbGxvdyBmb3IgbW9ja2luZyBpbiB0ZXN0czpcbmNvbnN0IGdldE9yaWdpbmFsRmV0Y2ggPSAoKSA9PiBnbG9iYWxUaGlzLmZldGNoO1xuXG5leHBvcnQgY29uc3QgZ2V0RnJvbUFwaSA9IGFzeW5jIDxUPih7XG4gIHVybCxcbiAgaGVhZGVycyA9IHt9LFxuICBzdWNjZXNzZnVsUmVzcG9uc2VIYW5kbGVyLFxuICBmYWlsZWRSZXNwb25zZUhhbmRsZXIsXG4gIGFib3J0U2lnbmFsLFxuICBmZXRjaCA9IGdldE9yaWdpbmFsRmV0Y2goKSxcbn06IHtcbiAgdXJsOiBzdHJpbmc7XG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xuICBmYWlsZWRSZXNwb25zZUhhbmRsZXI6IFJlc3BvbnNlSGFuZGxlcjxFcnJvcj47XG4gIHN1Y2Nlc3NmdWxSZXNwb25zZUhhbmRsZXI6IFJlc3BvbnNlSGFuZGxlcjxUPjtcbiAgYWJvcnRTaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgZmV0Y2g/OiBGZXRjaEZ1bmN0aW9uO1xufSkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICBoZWFkZXJzOiB3aXRoVXNlckFnZW50U3VmZml4KGhlYWRlcnMsIGBjYXJ0YW5vdmEtYWkvcnR6ci1hcGktcHJvdmlkZXJgKSxcbiAgICAgIHNpZ25hbDogYWJvcnRTaWduYWwsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZUhlYWRlcnMgPSBleHRyYWN0UmVzcG9uc2VIZWFkZXJzKHJlc3BvbnNlKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGxldCBlcnJvckluZm9ybWF0aW9uOiB7XG4gICAgICAgIHZhbHVlOiBFcnJvcjtcbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcbiAgICAgIH07XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGVycm9ySW5mb3JtYXRpb24gPSBhd2FpdCBmYWlsZWRSZXNwb25zZUhhbmRsZXIoe1xuICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgIHVybCxcbiAgICAgICAgICByZXF1ZXN0Qm9keVZhbHVlczoge30sXG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGlzQWJvcnRFcnJvcihlcnJvcikgfHwgQVBJQ2FsbEVycm9yLmlzSW5zdGFuY2UoZXJyb3IpKSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgQVBJQ2FsbEVycm9yKHtcbiAgICAgICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBwcm9jZXNzIGVycm9yIHJlc3BvbnNlXCIsXG4gICAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICAgIHJlcXVlc3RCb2R5VmFsdWVzOiB7fSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9ySW5mb3JtYXRpb24udmFsdWU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBzdWNjZXNzZnVsUmVzcG9uc2VIYW5kbGVyKHtcbiAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgIHVybCxcbiAgICAgICAgcmVxdWVzdEJvZHlWYWx1ZXM6IHt9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGlmIChpc0Fib3J0RXJyb3IoZXJyb3IpIHx8IEFQSUNhbGxFcnJvci5pc0luc3RhbmNlKGVycm9yKSkge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBBUElDYWxsRXJyb3Ioe1xuICAgICAgICBtZXNzYWdlOiBcIkZhaWxlZCB0byBwcm9jZXNzIHN1Y2Nlc3NmdWwgcmVzcG9uc2VcIixcbiAgICAgICAgY2F1c2U6IGVycm9yLFxuICAgICAgICBzdGF0dXNDb2RlOiByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgIHVybCxcbiAgICAgICAgcmVzcG9uc2VIZWFkZXJzLFxuICAgICAgICByZXF1ZXN0Qm9keVZhbHVlczoge30sXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgaGFuZGxlRmV0Y2hFcnJvcih7IGVycm9yLCB1cmwsIHJlcXVlc3RCb2R5VmFsdWVzOiB7fSB9KTtcbiAgfVxufTtcbiJdLCJuYW1lcyI6WyJBUElDYWxsRXJyb3IiLCJleHRyYWN0UmVzcG9uc2VIZWFkZXJzIiwiaXNBYm9ydEVycm9yIiwid2l0aFVzZXJBZ2VudFN1ZmZpeCIsIkZFVENIX0ZBSUxFRF9FUlJPUl9NRVNTQUdFUyIsImhhbmRsZUZldGNoRXJyb3IiLCJlcnJvciIsInVybCIsInJlcXVlc3RCb2R5VmFsdWVzIiwiVHlwZUVycm9yIiwiaW5jbHVkZXMiLCJtZXNzYWdlIiwidG9Mb3dlckNhc2UiLCJjYXVzZSIsImlzUmV0cnlhYmxlIiwiZ2V0T3JpZ2luYWxGZXRjaCIsImdsb2JhbFRoaXMiLCJmZXRjaCIsImdldEZyb21BcGkiLCJoZWFkZXJzIiwic3VjY2Vzc2Z1bFJlc3BvbnNlSGFuZGxlciIsImZhaWxlZFJlc3BvbnNlSGFuZGxlciIsImFib3J0U2lnbmFsIiwicmVzcG9uc2UiLCJtZXRob2QiLCJzaWduYWwiLCJyZXNwb25zZUhlYWRlcnMiLCJvayIsImVycm9ySW5mb3JtYXRpb24iLCJpc0luc3RhbmNlIiwic3RhdHVzQ29kZSIsInN0YXR1cyIsInZhbHVlIiwiRXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksUUFBUSxtQkFBbUI7QUFDaEQsU0FDRUMsc0JBQXNCLEVBRXRCQyxZQUFZLEVBRVpDLG1CQUFtQixRQUNkLHlCQUF5QjtBQUVoQyxNQUFNQyw4QkFBOEI7SUFBQztJQUFnQjtDQUFrQjtBQUV2RSxPQUFPLFNBQVNDLGlCQUFpQixFQUMvQkMsS0FBSyxFQUNMQyxHQUFHLEVBQ0hDLGlCQUFpQixFQUtsQjtJQUNDLElBQUlOLGFBQWFJLFFBQVE7UUFDdkIsT0FBT0E7SUFDVDtJQUVBLElBQ0VBLGlCQUFpQkcsYUFDakJMLDRCQUE0Qk0sUUFBUSxDQUFDSixNQUFNSyxPQUFPLENBQUNDLFdBQVcsS0FDOUQ7UUFDQSxNQUFNQyxRQUFRLEFBQUNQLE1BQTRCTyxLQUFLO1FBRWhELElBQUlBLFNBQVMsTUFBTTtZQUNqQixPQUFPLElBQUliLGFBQWE7Z0JBQ3RCVyxTQUFTLENBQUMsdUJBQXVCLEVBQUVFLE1BQU1GLE9BQU8sRUFBRTtnQkFDbERFO2dCQUNBTjtnQkFDQUM7Z0JBQ0FNLGFBQWE7WUFDZjtRQUNGO0lBQ0Y7SUFFQSxPQUFPUjtBQUNUO0FBRUEsOENBQThDO0FBQzlDLE1BQU1TLG1CQUFtQixJQUFNQyxXQUFXQyxLQUFLO0FBRS9DLE9BQU8sTUFBTUMsYUFBYSxPQUFVLEVBQ2xDWCxHQUFHLEVBQ0hZLFVBQVUsQ0FBQyxDQUFDLEVBQ1pDLHlCQUF5QixFQUN6QkMscUJBQXFCLEVBQ3JCQyxXQUFXLEVBQ1hMLFFBQVFGLGtCQUFrQixFQVEzQjtJQUNDLElBQUk7UUFDRixNQUFNUSxXQUFXLE1BQU1OLE1BQU1WLEtBQUs7WUFDaENpQixRQUFRO1lBQ1JMLFNBQVNoQixvQkFBb0JnQixTQUFTLENBQUMsOEJBQThCLENBQUM7WUFDdEVNLFFBQVFIO1FBQ1Y7UUFFQSxNQUFNSSxrQkFBa0J6Qix1QkFBdUJzQjtRQUUvQyxJQUFJLENBQUNBLFNBQVNJLEVBQUUsRUFBRTtZQUNoQixJQUFJQztZQUtKLElBQUk7Z0JBQ0ZBLG1CQUFtQixNQUFNUCxzQkFBc0I7b0JBQzdDRTtvQkFDQWhCO29CQUNBQyxtQkFBbUIsQ0FBQztnQkFDdEI7WUFDRixFQUFFLE9BQU9GLE9BQU87Z0JBQ2QsSUFBSUosYUFBYUksVUFBVU4sYUFBYTZCLFVBQVUsQ0FBQ3ZCLFFBQVE7b0JBQ3pELE1BQU1BO2dCQUNSO2dCQUVBLE1BQU0sSUFBSU4sYUFBYTtvQkFDckJXLFNBQVM7b0JBQ1RFLE9BQU9QO29CQUNQd0IsWUFBWVAsU0FBU1EsTUFBTTtvQkFDM0J4QjtvQkFDQW1CO29CQUNBbEIsbUJBQW1CLENBQUM7Z0JBQ3RCO1lBQ0Y7WUFFQSxNQUFNb0IsaUJBQWlCSSxLQUFLO1FBQzlCO1FBRUEsSUFBSTtZQUNGLE9BQU8sTUFBTVosMEJBQTBCO2dCQUNyQ0c7Z0JBQ0FoQjtnQkFDQUMsbUJBQW1CLENBQUM7WUFDdEI7UUFDRixFQUFFLE9BQU9GLE9BQU87WUFDZCxJQUFJQSxpQkFBaUIyQixPQUFPO2dCQUMxQixJQUFJL0IsYUFBYUksVUFBVU4sYUFBYTZCLFVBQVUsQ0FBQ3ZCLFFBQVE7b0JBQ3pELE1BQU1BO2dCQUNSO1lBQ0Y7WUFFQSxNQUFNLElBQUlOLGFBQWE7Z0JBQ3JCVyxTQUFTO2dCQUNURSxPQUFPUDtnQkFDUHdCLFlBQVlQLFNBQVNRLE1BQU07Z0JBQzNCeEI7Z0JBQ0FtQjtnQkFDQWxCLG1CQUFtQixDQUFDO1lBQ3RCO1FBQ0Y7SUFDRixFQUFFLE9BQU9GLE9BQU87UUFDZCxNQUFNRCxpQkFBaUI7WUFBRUM7WUFBT0M7WUFBS0MsbUJBQW1CLENBQUM7UUFBRTtJQUM3RDtBQUNGLEVBQUUifQ==
|
package/dist/api/base-frame.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Knex } from "knex";
|
|
2
|
-
import { DBPreset } from "../database/db";
|
|
1
|
+
import type { Knex } from "knex";
|
|
2
|
+
import type { DBPreset } from "../database/db";
|
|
3
3
|
import { UpsertBuilder } from "../database/upsert-builder";
|
|
4
4
|
export declare abstract class BaseFrameClass {
|
|
5
5
|
getDB(which: DBPreset): Knex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-frame.d.ts","sourceRoot":"","sources":["../../src/api/base-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"base-frame.d.ts","sourceRoot":"","sources":["../../src/api/base-frame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,8BAAsB,cAAc;IAClC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI5B,gBAAgB;CAGjB"}
|
package/dist/api/base-frame.js
CHANGED
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// Static imports kept for non-async functions (getDB, getUpsertBuilder)
|
|
2
|
+
import { DB } from "../database/db.js";
|
|
3
|
+
import { UpsertBuilder } from "../database/upsert-builder.js";
|
|
4
|
+
export class BaseFrameClass {
|
|
5
|
+
getDB(which) {
|
|
6
|
+
return DB.getDB(which);
|
|
7
|
+
}
|
|
8
|
+
getUpsertBuilder() {
|
|
9
|
+
return new UpsertBuilder();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvYmFzZS1mcmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHR5cGUgeyBEQlByZXNldCB9IGZyb20gXCIuLi9kYXRhYmFzZS9kYlwiO1xuLy8gU3RhdGljIGltcG9ydHMga2VwdCBmb3Igbm9uLWFzeW5jIGZ1bmN0aW9ucyAoZ2V0REIsIGdldFVwc2VydEJ1aWxkZXIpXG5pbXBvcnQgeyBEQiB9IGZyb20gXCIuLi9kYXRhYmFzZS9kYlwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZyYW1lQ2xhc3Mge1xuICBnZXREQih3aGljaDogREJQcmVzZXQpOiBLbmV4IHtcbiAgICByZXR1cm4gREIuZ2V0REIod2hpY2gpO1xuICB9XG5cbiAgZ2V0VXBzZXJ0QnVpbGRlcigpIHtcbiAgICByZXR1cm4gbmV3IFVwc2VydEJ1aWxkZXIoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkRCIiwiVXBzZXJ0QnVpbGRlciIsIkJhc2VGcmFtZUNsYXNzIiwiZ2V0REIiLCJ3aGljaCIsImdldFVwc2VydEJ1aWxkZXIiXSwibWFwcGluZ3MiOiJBQUVBLHdFQUF3RTtBQUN4RSxTQUFTQSxFQUFFLFFBQVEsb0JBQWlCO0FBQ3BDLFNBQVNDLGFBQWEsUUFBUSxnQ0FBNkI7QUFFM0QsT0FBTyxNQUFlQztJQUNwQkMsTUFBTUMsS0FBZSxFQUFRO1FBQzNCLE9BQU9KLEdBQUdHLEtBQUssQ0FBQ0M7SUFDbEI7SUFFQUMsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSUo7SUFDYjtBQUNGIn0=
|
package/dist/api/caster.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caster.d.ts","sourceRoot":"","sources":["../../src/api/caster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"caster.d.ts","sourceRoot":"","sources":["../../src/api/caster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0B5C,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CA8CvD;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,wEAKrD"}
|
package/dist/api/caster.js
CHANGED
|
@@ -1,2 +1,71 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
function isNumberType(zodType) {
|
|
4
|
+
return zodType instanceof z.ZodNumber;
|
|
5
|
+
}
|
|
6
|
+
function isNullOrOptional(zodType) {
|
|
7
|
+
return zodType instanceof z.ZodNullable || zodType instanceof z.ZodOptional;
|
|
8
|
+
}
|
|
9
|
+
// optional, nullable 무관하게 ZodNumber 체크
|
|
10
|
+
function isZodNumberAnyway(zodType) {
|
|
11
|
+
if (isNumberType(zodType)) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
// ZodNullable 또는 ZodOptional일 때
|
|
15
|
+
if (isNullOrOptional(zodType) && isNumberType(zodType.def.innerType)) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
// ZodType을 이용해 raw를 Type Coercing
|
|
21
|
+
// biome-ignore lint/suspicious/noExplicitAny: 캐스팅에는 any가 필요함.
|
|
22
|
+
export function caster(zodType, raw) {
|
|
23
|
+
if (isZodNumberAnyway(zodType) && typeof raw === "string") {
|
|
24
|
+
// number
|
|
25
|
+
return Number(raw);
|
|
26
|
+
} else if (zodType instanceof z.ZodUnion && zodType.options.some((opt)=>isZodNumberAnyway(opt))) {
|
|
27
|
+
// zArrayable Number 케이스 처리
|
|
28
|
+
if (Array.isArray(raw)) {
|
|
29
|
+
const numType = zodType.options.find((opt)=>isNumberType(opt));
|
|
30
|
+
assert(numType !== undefined);
|
|
31
|
+
// biome-ignore lint/suspicious/noExplicitAny: 캐스팅에는 any가 필요함.
|
|
32
|
+
return raw.map((elem)=>caster(numType, elem));
|
|
33
|
+
} else {
|
|
34
|
+
return Number(raw);
|
|
35
|
+
}
|
|
36
|
+
} else if (zodType instanceof z.ZodBoolean && (raw === "true" || raw === "false")) {
|
|
37
|
+
// boolean
|
|
38
|
+
return raw === "true";
|
|
39
|
+
} else if (raw !== null && Array.isArray(raw) && zodType instanceof z.ZodArray) {
|
|
40
|
+
// array
|
|
41
|
+
// biome-ignore lint/suspicious/noExplicitAny: 캐스팅에는 any가 필요함.
|
|
42
|
+
return raw.map((elem)=>caster(zodType.element, elem));
|
|
43
|
+
} else if (zodType instanceof z.ZodObject && typeof raw === "object" && raw !== null) {
|
|
44
|
+
// object
|
|
45
|
+
return Object.keys(raw).reduce((r, rawKey)=>{
|
|
46
|
+
r[rawKey] = caster(zodType.shape[rawKey], raw[rawKey]);
|
|
47
|
+
return r;
|
|
48
|
+
}, {});
|
|
49
|
+
} else if (zodType instanceof z.ZodOptional) {
|
|
50
|
+
// optional
|
|
51
|
+
return caster(zodType.def.innerType, raw);
|
|
52
|
+
} else if (zodType instanceof z.ZodNullable) {
|
|
53
|
+
// nullable
|
|
54
|
+
return caster(zodType.def.innerType, raw);
|
|
55
|
+
} else if (zodType instanceof z.ZodDate && new Date(raw).toString() !== "Invalid Date") {
|
|
56
|
+
// date
|
|
57
|
+
return new Date(raw);
|
|
58
|
+
} else {
|
|
59
|
+
// 나머지는 처리 안함
|
|
60
|
+
return raw;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// biome-ignore lint/suspicious/noExplicitAny: 캐스팅에는 any가 필요함.
|
|
64
|
+
export function fastifyCaster(schema) {
|
|
65
|
+
// biome-ignore lint/suspicious/noExplicitAny: 캐스팅에는 any가 필요함.
|
|
66
|
+
return z.preprocess((raw)=>{
|
|
67
|
+
return caster(schema, raw);
|
|
68
|
+
}, schema);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY2FzdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgJFpvZFR5cGUgfSBmcm9tIFwiem9kL3Y0L2NvcmVcIjtcblxuZnVuY3Rpb24gaXNOdW1iZXJUeXBlKHpvZFR5cGU6ICRab2RUeXBlKTogem9kVHlwZSBpcyB6LlpvZE51bWJlciB7XG4gIHJldHVybiB6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdW1iZXI7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yT3B0aW9uYWwoem9kVHlwZTogJFpvZFR5cGUpOiB6b2RUeXBlIGlzIHouWm9kTnVsbGFibGUgfCB6LlpvZE9wdGlvbmFsIHtcbiAgcmV0dXJuIHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bGxhYmxlIHx8IHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsO1xufVxuXG4vLyBvcHRpb25hbCwgbnVsbGFibGUg66y06rSA7ZWY6rKMIFpvZE51bWJlciDssrTtgaxcbmZ1bmN0aW9uIGlzWm9kTnVtYmVyQW55d2F5KHpvZFR5cGU6ICRab2RUeXBlKSB7XG4gIGlmIChpc051bWJlclR5cGUoem9kVHlwZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFpvZE51bGxhYmxlIOuYkOuKlCBab2RPcHRpb25hbOydvCDrlYxcbiAgaWYgKGlzTnVsbE9yT3B0aW9uYWwoem9kVHlwZSkgJiYgaXNOdW1iZXJUeXBlKHpvZFR5cGUuZGVmLmlubmVyVHlwZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gWm9kVHlwZeydhCDsnbTsmqntlbQgcmF366W8IFR5cGUgQ29lcmNpbmdcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG5leHBvcnQgZnVuY3Rpb24gY2FzdGVyKHpvZFR5cGU6ICRab2RUeXBlLCByYXc6IGFueSk6IGFueSB7XG4gIGlmIChpc1pvZE51bWJlckFueXdheSh6b2RUeXBlKSAmJiB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gbnVtYmVyXG4gICAgcmV0dXJuIE51bWJlcihyYXcpO1xuICB9IGVsc2UgaWYgKFxuICAgIHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFVuaW9uICYmXG4gICAgem9kVHlwZS5vcHRpb25zLnNvbWUoKG9wdCkgPT4gaXNab2ROdW1iZXJBbnl3YXkob3B0KSlcbiAgKSB7XG4gICAgLy8gekFycmF5YWJsZSBOdW1iZXIg7LyA7J207IqkIOyymOumrFxuICAgIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHtcbiAgICAgIGNvbnN0IG51bVR5cGUgPSB6b2RUeXBlLm9wdGlvbnMuZmluZCgob3B0KSA9PiBpc051bWJlclR5cGUob3B0KSk7XG4gICAgICBhc3NlcnQobnVtVHlwZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG4gICAgICByZXR1cm4gcmF3Lm1hcCgoZWxlbTogYW55KSA9PiBjYXN0ZXIobnVtVHlwZSwgZWxlbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHJhdyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEJvb2xlYW4gJiYgKHJhdyA9PT0gXCJ0cnVlXCIgfHwgcmF3ID09PSBcImZhbHNlXCIpKSB7XG4gICAgLy8gYm9vbGVhblxuICAgIHJldHVybiByYXcgPT09IFwidHJ1ZVwiO1xuICB9IGVsc2UgaWYgKHJhdyAhPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHJhdykgJiYgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQXJyYXkpIHtcbiAgICAvLyBhcnJheVxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG4gICAgcmV0dXJuIHJhdy5tYXAoKGVsZW06IGFueSkgPT4gY2FzdGVyKHpvZFR5cGUuZWxlbWVudCwgZWxlbSkpO1xuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9iamVjdCAmJiB0eXBlb2YgcmF3ID09PSBcIm9iamVjdFwiICYmIHJhdyAhPT0gbnVsbCkge1xuICAgIC8vIG9iamVjdFxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyYXcpLnJlZHVjZShcbiAgICAgIChyLCByYXdLZXkpID0+IHtcbiAgICAgICAgcltyYXdLZXldID0gY2FzdGVyKHpvZFR5cGUuc2hhcGVbcmF3S2V5XSwgcmF3W3Jhd0tleV0pO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgLy8gb3B0aW9uYWxcbiAgICByZXR1cm4gY2FzdGVyKHpvZFR5cGUuZGVmLmlubmVyVHlwZSwgcmF3KTtcbiAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdWxsYWJsZSkge1xuICAgIC8vIG51bGxhYmxlXG4gICAgcmV0dXJuIGNhc3Rlcih6b2RUeXBlLmRlZi5pbm5lclR5cGUsIHJhdyk7XG4gIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSAmJiBuZXcgRGF0ZShyYXcpLnRvU3RyaW5nKCkgIT09IFwiSW52YWxpZCBEYXRlXCIpIHtcbiAgICAvLyBkYXRlXG4gICAgcmV0dXJuIG5ldyBEYXRlKHJhdyk7XG4gIH0gZWxzZSB7XG4gICAgLy8g64KY66i47KeA64qUIOyymOumrCDslYjtlahcbiAgICByZXR1cm4gcmF3O1xuICB9XG59XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG5leHBvcnQgZnVuY3Rpb24gZmFzdGlmeUNhc3RlcihzY2hlbWE6IHouWm9kT2JqZWN0PGFueT4pIHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiDsupDsiqTtjIXsl5DripQgYW556rCAIO2VhOyalO2VqC5cbiAgcmV0dXJuIHoucHJlcHJvY2VzcygocmF3OiBhbnkpID0+IHtcbiAgICByZXR1cm4gY2FzdGVyKHNjaGVtYSwgcmF3KTtcbiAgfSwgc2NoZW1hKTtcbn1cbiJdLCJuYW1lcyI6WyJhc3NlcnQiLCJ6IiwiaXNOdW1iZXJUeXBlIiwiem9kVHlwZSIsIlpvZE51bWJlciIsImlzTnVsbE9yT3B0aW9uYWwiLCJab2ROdWxsYWJsZSIsIlpvZE9wdGlvbmFsIiwiaXNab2ROdW1iZXJBbnl3YXkiLCJkZWYiLCJpbm5lclR5cGUiLCJjYXN0ZXIiLCJyYXciLCJOdW1iZXIiLCJab2RVbmlvbiIsIm9wdGlvbnMiLCJzb21lIiwib3B0IiwiQXJyYXkiLCJpc0FycmF5IiwibnVtVHlwZSIsImZpbmQiLCJ1bmRlZmluZWQiLCJtYXAiLCJlbGVtIiwiWm9kQm9vbGVhbiIsIlpvZEFycmF5IiwiZWxlbWVudCIsIlpvZE9iamVjdCIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJyIiwicmF3S2V5Iiwic2hhcGUiLCJab2REYXRlIiwiRGF0ZSIsInRvU3RyaW5nIiwiZmFzdGlmeUNhc3RlciIsInNjaGVtYSIsInByZXByb2Nlc3MiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixTQUFTQyxDQUFDLFFBQVEsTUFBTTtBQUd4QixTQUFTQyxhQUFhQyxPQUFpQjtJQUNyQyxPQUFPQSxtQkFBbUJGLEVBQUVHLFNBQVM7QUFDdkM7QUFFQSxTQUFTQyxpQkFBaUJGLE9BQWlCO0lBQ3pDLE9BQU9BLG1CQUFtQkYsRUFBRUssV0FBVyxJQUFJSCxtQkFBbUJGLEVBQUVNLFdBQVc7QUFDN0U7QUFFQSx1Q0FBdUM7QUFDdkMsU0FBU0Msa0JBQWtCTCxPQUFpQjtJQUMxQyxJQUFJRCxhQUFhQyxVQUFVO1FBQ3pCLE9BQU87SUFDVDtJQUVBLGdDQUFnQztJQUNoQyxJQUFJRSxpQkFBaUJGLFlBQVlELGFBQWFDLFFBQVFNLEdBQUcsQ0FBQ0MsU0FBUyxHQUFHO1FBQ3BFLE9BQU87SUFDVDtJQUVBLE9BQU87QUFDVDtBQUVBLGtDQUFrQztBQUNsQyw4REFBOEQ7QUFDOUQsT0FBTyxTQUFTQyxPQUFPUixPQUFpQixFQUFFUyxHQUFRO0lBQ2hELElBQUlKLGtCQUFrQkwsWUFBWSxPQUFPUyxRQUFRLFVBQVU7UUFDekQsU0FBUztRQUNULE9BQU9DLE9BQU9EO0lBQ2hCLE9BQU8sSUFDTFQsbUJBQW1CRixFQUFFYSxRQUFRLElBQzdCWCxRQUFRWSxPQUFPLENBQUNDLElBQUksQ0FBQyxDQUFDQyxNQUFRVCxrQkFBa0JTLE9BQ2hEO1FBQ0EsMkJBQTJCO1FBQzNCLElBQUlDLE1BQU1DLE9BQU8sQ0FBQ1AsTUFBTTtZQUN0QixNQUFNUSxVQUFVakIsUUFBUVksT0FBTyxDQUFDTSxJQUFJLENBQUMsQ0FBQ0osTUFBUWYsYUFBYWU7WUFDM0RqQixPQUFPb0IsWUFBWUU7WUFDbkIsOERBQThEO1lBQzlELE9BQU9WLElBQUlXLEdBQUcsQ0FBQyxDQUFDQyxPQUFjYixPQUFPUyxTQUFTSTtRQUNoRCxPQUFPO1lBQ0wsT0FBT1gsT0FBT0Q7UUFDaEI7SUFDRixPQUFPLElBQUlULG1CQUFtQkYsRUFBRXdCLFVBQVUsSUFBS2IsQ0FBQUEsUUFBUSxVQUFVQSxRQUFRLE9BQU0sR0FBSTtRQUNqRixVQUFVO1FBQ1YsT0FBT0EsUUFBUTtJQUNqQixPQUFPLElBQUlBLFFBQVEsUUFBUU0sTUFBTUMsT0FBTyxDQUFDUCxRQUFRVCxtQkFBbUJGLEVBQUV5QixRQUFRLEVBQUU7UUFDOUUsUUFBUTtRQUNSLDhEQUE4RDtRQUM5RCxPQUFPZCxJQUFJVyxHQUFHLENBQUMsQ0FBQ0MsT0FBY2IsT0FBT1IsUUFBUXdCLE9BQU8sRUFBRUg7SUFDeEQsT0FBTyxJQUFJckIsbUJBQW1CRixFQUFFMkIsU0FBUyxJQUFJLE9BQU9oQixRQUFRLFlBQVlBLFFBQVEsTUFBTTtRQUNwRixTQUFTO1FBQ1QsT0FBT2lCLE9BQU9DLElBQUksQ0FBQ2xCLEtBQUttQixNQUFNLENBQzVCLENBQUNDLEdBQUdDO1lBQ0ZELENBQUMsQ0FBQ0MsT0FBTyxHQUFHdEIsT0FBT1IsUUFBUStCLEtBQUssQ0FBQ0QsT0FBTyxFQUFFckIsR0FBRyxDQUFDcUIsT0FBTztZQUNyRCxPQUFPRDtRQUNULEdBQ0EsQ0FBQztJQUVMLE9BQU8sSUFBSTdCLG1CQUFtQkYsRUFBRU0sV0FBVyxFQUFFO1FBQzNDLFdBQVc7UUFDWCxPQUFPSSxPQUFPUixRQUFRTSxHQUFHLENBQUNDLFNBQVMsRUFBRUU7SUFDdkMsT0FBTyxJQUFJVCxtQkFBbUJGLEVBQUVLLFdBQVcsRUFBRTtRQUMzQyxXQUFXO1FBQ1gsT0FBT0ssT0FBT1IsUUFBUU0sR0FBRyxDQUFDQyxTQUFTLEVBQUVFO0lBQ3ZDLE9BQU8sSUFBSVQsbUJBQW1CRixFQUFFa0MsT0FBTyxJQUFJLElBQUlDLEtBQUt4QixLQUFLeUIsUUFBUSxPQUFPLGdCQUFnQjtRQUN0RixPQUFPO1FBQ1AsT0FBTyxJQUFJRCxLQUFLeEI7SUFDbEIsT0FBTztRQUNMLGFBQWE7UUFDYixPQUFPQTtJQUNUO0FBQ0Y7QUFFQSw4REFBOEQ7QUFDOUQsT0FBTyxTQUFTMEIsY0FBY0MsTUFBd0I7SUFDcEQsOERBQThEO0lBQzlELE9BQU90QyxFQUFFdUMsVUFBVSxDQUFDLENBQUM1QjtRQUNuQixPQUFPRCxPQUFPNEIsUUFBUTNCO0lBQ3hCLEdBQUcyQjtBQUNMIn0=
|
|
@@ -1,26 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* code-converters는 API 타입 정의들을 Zod 객체나 TypeScript 코드로 변환하는 함수들을 제공합니다.
|
|
3
|
+
*
|
|
4
|
+
* 1. API 시리즈들:
|
|
5
|
+
* - ExtendedApi, ApiParam, ApiParamType
|
|
6
|
+
* - API 메타데이터를 표현하는 타입 정의들
|
|
7
|
+
*
|
|
8
|
+
* 2. ZodObject 변환
|
|
9
|
+
* - API 타입 정의 → Zod 타입 인스턴스 (런타임 밸리데이션용)
|
|
10
|
+
* - getZodTypeFromApiParamType → getZodObjectFromApiParams → getZodObjectFromApi
|
|
11
|
+
*
|
|
12
|
+
* 3. TsTypeDef 변환
|
|
13
|
+
* - API 타입 정의 → TypeScript 타입 코드 문자열 (코드 생성용)
|
|
14
|
+
* - apiParamTypeToTsType → apiParamToTsCode, apiParamToTsCodeAsObject
|
|
15
|
+
*
|
|
16
|
+
* 참고:
|
|
17
|
+
* - ZodTypeDef 생성 (Zod 코드 문자열): zod-converter.ts의 zodTypeToZodCode 사용
|
|
18
|
+
* - EntityProp 변환: zod-converter.ts 참조
|
|
19
|
+
*/
|
|
1
20
|
import { z } from "zod";
|
|
2
21
|
import type { $ZodLooseShape } from "zod/v4/core";
|
|
3
|
-
import { ApiParam, ApiParamType
|
|
4
|
-
import { ExtendedApi } from "./decorators";
|
|
22
|
+
import { type ApiParam, ApiParamType } from "../types/types";
|
|
23
|
+
import type { ExtendedApi } from "./decorators";
|
|
5
24
|
type AnyZodObject = z.ZodObject<$ZodLooseShape>;
|
|
6
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Promise 타입을 한 번 언래핑하여 내부 타입을 반환합니다.
|
|
27
|
+
* Promise가 아닌 경우 원본 타입을 그대로 반환합니다.
|
|
28
|
+
*/
|
|
29
|
+
export declare function unwrapPromiseOnce(paramType: ApiParamType): ApiParamType | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* ApiParamType을 Zod 타입 인스턴스로 변환합니다.
|
|
32
|
+
* string, number, array, union 등 모든 ApiParamType을 처리하며,
|
|
33
|
+
* 순환참조가 발생하는 경우 z.unknown()으로 fallback합니다.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getZodTypeFromApiParamType(paramType: ApiParamType, references: {
|
|
7
36
|
[id: string]: AnyZodObject;
|
|
8
|
-
}): z.
|
|
37
|
+
}): z.ZodType<unknown>;
|
|
38
|
+
/**
|
|
39
|
+
* ApiParam 배열을 ZodObject로 변환합니다.
|
|
40
|
+
* 각 파라미터의 optional 여부를 반영하여 Zod 스키마를 생성합니다.
|
|
41
|
+
*/
|
|
9
42
|
export declare function getZodObjectFromApiParams(apiParams: ApiParam[], references?: {
|
|
10
43
|
[id: string]: AnyZodObject;
|
|
11
44
|
}): z.ZodObject;
|
|
12
|
-
|
|
45
|
+
/**
|
|
46
|
+
* ExtendedApi를 ZodObject로 변환합니다.
|
|
47
|
+
* TypeParameter와 일반 파라미터를 처리하며,
|
|
48
|
+
* Context, RefKnex, _로 시작하는 optional 파라미터는 제외합니다.
|
|
49
|
+
*/
|
|
50
|
+
export declare function getZodObjectFromApi(api: ExtendedApi, references?: {
|
|
13
51
|
[id: string]: AnyZodObject;
|
|
14
|
-
}): z.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
52
|
+
}): z.ZodObject<z.core.$ZodLooseShape, z.core.$strip>;
|
|
53
|
+
/**
|
|
54
|
+
* ApiParamType을 TypeScript 타입 문자열로 변환합니다.
|
|
55
|
+
* union, intersection, array, ref 등 모든 타입을 TS 문법으로 표현하며,
|
|
56
|
+
* import가 필요한 타입 ID는 injectImportKeys에 수집합니다.
|
|
57
|
+
*/
|
|
58
|
+
export declare function apiParamTypeToTsType(paramType: ApiParamType, injectImportKeys: string[]): string;
|
|
59
|
+
/**
|
|
60
|
+
* ApiParam 배열을 TypeScript 함수 파라미터 코드로 변환합니다.
|
|
61
|
+
* 예: "name: string, age?: number, active: boolean = true"
|
|
62
|
+
*/
|
|
19
63
|
export declare function apiParamToTsCode(params: ApiParam[], injectImportKeys: string[]): string;
|
|
64
|
+
/**
|
|
65
|
+
* ApiParam 배열을 TypeScript 객체 타입 코드로 변환합니다.
|
|
66
|
+
* 예: "{ name: string, age?: number, active: boolean = true }"
|
|
67
|
+
*/
|
|
20
68
|
export declare function apiParamToTsCodeAsObject(params: ApiParam[], injectImportKeys: string[]): string;
|
|
21
|
-
export declare function apiParamTypeToTsType(paramType: ApiParamType, injectImportKeys: string[]): string;
|
|
22
|
-
export declare function unwrapPromiseOnce(paramType: ApiParamType): ApiParamType;
|
|
23
|
-
export declare function serializeZodType(zt: z.ZodType): any;
|
|
24
|
-
export declare function zodTypeToTsTypeDef(zt: z.ZodType): string;
|
|
25
69
|
export {};
|
|
26
70
|
//# sourceMappingURL=code-converters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-converters.d.ts","sourceRoot":"","sources":["../../src/api/code-converters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"code-converters.d.ts","sourceRoot":"","sources":["../../src/api/code-converters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,KAAK,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;AAGhD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,4BAMxD;AAMD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE;IACV,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC;CAC5B,GACA,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CA6HpB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,QAAQ,EAAE,EACrB,UAAU,GAAE;IACV,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC;CACvB,GACL,CAAC,CAAC,SAAS,CAYb;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,UAAU,GAAE;IACV,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC;CACvB,qDAsBP;AAMD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,CAwDhG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,CAUvF;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM,CAU/F"}
|