sonamu 0.6.0 → 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 +2 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +6 -1
- 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 +178 -409
- package/dist/api/config.d.ts +27 -13
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +19 -26
- package/dist/api/context.d.ts +4 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts +20 -6
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +111 -18
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +3 -3
- package/dist/api/sonamu.d.ts +7 -7
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +83 -51
- 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 +5 -1
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +5 -2
- package/dist/bin/cli.js +165 -64
- 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 +30 -13
- 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 +232 -89
- 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 +11 -10
- package/dist/database/db.d.ts +5 -6
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +22 -25
- 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 +2 -2
- package/dist/database/puri.d.ts +25 -14
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +83 -21
- package/dist/database/puri.types.d.ts +21 -7
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +4 -1
- 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 +1 -1
- 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 +228 -78
- package/dist/entity/entity-manager.d.ts +165 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +26 -10
- package/dist/entity/entity.d.ts +5 -3
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +153 -54
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/dist/file-storage/file-storage.js +2 -2
- package/dist/index.d.ts +18 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -13
- 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 +123 -67
- 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 +67 -218
- package/dist/migration/migrator.d.ts +24 -73
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +121 -301
- 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 +1 -1
- 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 +91 -8
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +285 -41
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +1 -1
- package/dist/syncer/api-parser.d.ts +3 -13
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +67 -56
- package/dist/syncer/checksum.d.ts +2 -2
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +11 -11
- package/dist/syncer/code-generator.d.ts +3 -3
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +37 -17
- package/dist/syncer/entity-operations.d.ts +2 -2
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +9 -8
- 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 +1 -1
- package/dist/syncer/index.d.ts +4 -4
- package/dist/syncer/index.d.ts.map +1 -1
- package/dist/syncer/index.js +5 -5
- package/dist/syncer/module-loader.d.ts +4 -4
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +17 -12
- package/dist/syncer/syncer.d.ts +31 -24
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +92 -45
- 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 +15 -8
- package/dist/template/helpers.d.ts +2 -2
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +3 -3
- package/dist/template/implementations/entity.template.d.ts +2 -2
- package/dist/template/implementations/entity.template.d.ts.map +1 -1
- package/dist/template/implementations/entity.template.js +4 -5
- package/dist/template/implementations/generated.template.d.ts +2 -3
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +46 -29
- package/dist/template/implementations/generated_http.template.d.ts +2 -3
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +9 -9
- package/dist/template/implementations/generated_sso.template.d.ts +3 -4
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +54 -25
- package/dist/template/implementations/init_types.template.d.ts +2 -2
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.js +2 -2
- package/dist/template/implementations/model.template.d.ts +2 -2
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +47 -37
- package/dist/template/implementations/model_test.template.d.ts +2 -2
- package/dist/template/implementations/model_test.template.d.ts.map +1 -1
- package/dist/template/implementations/model_test.template.js +2 -2
- package/dist/template/implementations/service.template.d.ts +4 -4
- package/dist/template/implementations/service.template.d.ts.map +1 -1
- package/dist/template/implementations/service.template.js +24 -16
- package/dist/template/implementations/view_enums_buttonset.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_buttonset.template.js +1 -1
- package/dist/template/implementations/view_enums_dropdown.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_dropdown.template.js +2 -2
- package/dist/template/implementations/view_enums_select.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_select.template.js +2 -2
- package/dist/template/implementations/view_form.template.d.ts +2 -2
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +4 -4
- package/dist/template/implementations/view_id_all_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_all_select.template.js +1 -1
- package/dist/template/implementations/view_id_async_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_async_select.template.js +1 -1
- package/dist/template/implementations/view_list.template.d.ts +2 -2
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +29 -19
- package/dist/template/implementations/view_list_columns.template.d.ts +3 -3
- package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list_columns.template.js +1 -1
- package/dist/template/implementations/view_search_input.template.d.ts +2 -2
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +1 -1
- package/dist/template/index.d.ts +4 -2
- package/dist/template/index.d.ts.map +1 -1
- package/dist/template/index.js +5 -3
- 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 +12 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +19 -6
- package/dist/template/zod-converter.d.ts +40 -7
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +341 -58
- 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 +12 -3
- 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 +338 -236
- package/dist/types/types.d.ts +709 -104
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +309 -52
- package/dist/typings/knex.d.js +2 -2
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +3 -3
- package/dist/utils/console-util.js +1 -1
- package/dist/utils/controller.d.ts +1 -0
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +4 -1
- package/dist/utils/esm-utils.d.ts +0 -6
- package/dist/utils/esm-utils.d.ts.map +1 -1
- package/dist/utils/esm-utils.js +2 -9
- 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 +1 -1
- package/dist/utils/lodash-able.d.ts.map +1 -1
- package/dist/utils/lodash-able.js +1 -1
- 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 +1 -1
- package/dist/utils/path-utils.d.ts.map +1 -1
- package/dist/utils/path-utils.js +3 -3
- package/dist/utils/process-utils.js +1 -1
- 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 +14 -3
- 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 +7 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +44 -5
- 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 +1 -1
- package/package.json +54 -29
- 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 +176 -533
- package/src/api/config.ts +39 -56
- package/src/api/context.ts +7 -18
- package/src/api/decorators.ts +175 -46
- package/src/api/index.ts +2 -2
- package/src/api/sonamu.ts +133 -124
- package/src/api/validator.ts +83 -0
- package/src/bin/build-config.ts +7 -1
- package/src/bin/cli.ts +192 -110
- 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 +36 -50
- 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 +182 -126
- package/src/database/puri.types.ts +64 -31
- package/src/database/transaction-context.ts +1 -1
- package/src/database/upsert-builder.ts +262 -132
- package/src/entity/entity-manager.ts +36 -28
- package/src/entity/entity.ts +330 -249
- 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 -12
- package/src/migration/code-generation.ts +185 -172
- package/src/migration/migration-set.ts +80 -293
- package/src/migration/migrator.ts +182 -425
- 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 +378 -33
- package/src/shared/web.shared.ts.txt +20 -24
- package/src/stream/sse.ts +5 -5
- package/src/syncer/api-parser.ts +52 -69
- package/src/syncer/checksum.ts +25 -37
- package/src/syncer/code-generator.ts +58 -62
- package/src/syncer/entity-operations.ts +12 -15
- package/src/syncer/file-patterns.ts +2 -2
- package/src/syncer/index.ts +4 -4
- package/src/syncer/module-loader.ts +28 -25
- package/src/syncer/syncer.ts +155 -162
- package/src/template/entity-converter.ts +18 -27
- package/src/template/helpers.ts +8 -11
- package/src/template/implementations/entity.template.ts +6 -6
- package/src/template/implementations/generated.template.ts +99 -99
- package/src/template/implementations/generated_http.template.ts +21 -54
- package/src/template/implementations/generated_sso.template.ts +78 -65
- package/src/template/implementations/init_types.template.ts +4 -6
- package/src/template/implementations/model.template.ts +47 -38
- package/src/template/implementations/model_test.template.ts +3 -3
- package/src/template/implementations/service.template.ts +56 -80
- package/src/template/implementations/view_enums_buttonset.template.ts +2 -2
- package/src/template/implementations/view_enums_dropdown.template.ts +4 -4
- package/src/template/implementations/view_enums_select.template.ts +3 -3
- package/src/template/implementations/view_form.template.ts +34 -75
- package/src/template/implementations/view_id_all_select.template.ts +2 -2
- package/src/template/implementations/view_id_async_select.template.ts +9 -23
- package/src/template/implementations/view_list.template.ts +54 -95
- package/src/template/implementations/view_list_columns.template.ts +4 -10
- package/src/template/implementations/view_search_input.template.ts +2 -2
- package/src/template/index.ts +4 -2
- package/src/template/template-manager.ts +166 -0
- package/src/template/template-types.ts +16 -0
- package/src/template/template.ts +29 -10
- package/src/template/zod-converter.ts +407 -101
- package/src/testing/_relation-graph.ts +18 -11
- package/src/testing/fixture-manager.ts +468 -362
- package/src/types/types.ts +516 -248
- package/src/typings/knex.d.ts +7 -9
- package/src/utils/async-utils.ts +8 -12
- package/src/utils/console-util.ts +1 -1
- package/src/utils/controller.ts +3 -0
- package/src/utils/esm-utils.ts +8 -18
- 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 +3 -6
- package/src/utils/process-utils.ts +1 -1
- package/src/utils/sql-parser.ts +23 -5
- package/src/utils/type-utils.ts +83 -0
- package/src/utils/utils.ts +58 -9
- package/src/utils/zod-error.ts +3 -3
- 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 -72
- 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 -39
- 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 -210
- package/src/bin/cli-wrapper.ts +0 -82
- package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
- package/src/entity/entity-utils.ts +0 -291
package/dist/utils/path-utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isHotReloadServer } from "./
|
|
1
|
+
import { isHotReloadServer, isTest } from "./controller.js";
|
|
2
2
|
/**
|
|
3
3
|
* 어떤 경로가 들어오든, 현재 실행 환경에 맞는 경로로 바꿔줍니다.
|
|
4
4
|
*
|
|
@@ -49,7 +49,7 @@ import { isHotReloadServer } from "./esm-utils.js";
|
|
|
49
49
|
*
|
|
50
50
|
* @param anyPath
|
|
51
51
|
* @returns
|
|
52
|
-
*/ export function runtimePath(anyPath, isDev = isHotReloadServer()) {
|
|
52
|
+
*/ export function runtimePath(anyPath, isDev = isHotReloadServer() || isTest()) {
|
|
53
53
|
if (isDev) {
|
|
54
54
|
return anyPath.replace(/dist\//, "src/").replace(/\.js/, ".ts");
|
|
55
55
|
} else {
|
|
@@ -57,4 +57,4 @@ import { isHotReloadServer } from "./esm-utils.js";
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wYXRoLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzSG90UmVsb2FkU2VydmVyLCBpc1Rlc3QgfSBmcm9tIFwiLi9jb250cm9sbGVyLmpzXCI7XG5cbi8qKlxuICogQVBJIO2MqO2CpOyngCDrgrTrtoAg7IOB64yAIOqyveuhnCAoc3JjLyDrmJDripQgZGlzdC/roZwg7Iuc7J6RKVxuICpcbiAqICoq7IKs7JqpIOychOy5mCoqOiBBUEkg7Yyo7YKk7KeAIOuCtOu2gCDtjIzsnbwg7LC47KGwXG4gKiAqKuyYiOyLnCoqOlxuICogLSBgXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJgXG4gKiAtIGBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJgXG4gKlxuICogKirquLDspIDsoJAqKjogYFNvbmFtdS5hcGlSb290UGF0aGAgKOydvOuwmOyggeycvOuhnCDtlITroZzsoJ3tirjsnZggYC9hcGlgIOuUlOugie2GoOumrClcbiAqL1xuZXhwb3J0IHR5cGUgQXBpUmVsYXRpdmVQYXRoID0gYCR7XCJzcmNcIiB8IFwiZGlzdFwifS8ke3N0cmluZ31gIHwgXCJzb25hbXUuY29uZmlnLnRzXCI7XG5cbi8qKlxuICog7JWxIOujqO2KuCDquLDspIAg7IOB64yAIOqyveuhnCAoYXBpLywgd2ViLyDrk7Eg7YOA6rKfIOuUlOugie2GoOumrOuhnCDsi5zsnpEpXG4gKlxuICogKirsgqzsmqkg7JyE7LmYKio6IOuLpOuluCDtg4Dqsp8oYXBpLCB3ZWIg65OxKeydmCDtjIzsnbwg7LC47KGwXG4gKiAqKuyYiOyLnCoqOlxuICogLSBgXCJhcGkvc3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50c1wiYFxuICogLSBgXCJ3ZWIvc3JjL3BhZ2VzL2FkbWluL3VzZXJzL2luZGV4LnRzeFwiYFxuICogLSBgXCJhcHAvZGlzdC9pbmRleC5qc1wiYFxuICpcbiAqICoq6riw7KSA7KCQKio6IGBTb25hbXUuYXBwUm9vdFBhdGhgICjsnbzrsJjsoIHsnLzroZwg66qo64W466CI7Y+sIOujqO2KuClcbiAqL1xuZXhwb3J0IHR5cGUgQXBwUmVsYXRpdmVQYXRoID0gYCR7c3RyaW5nfS8ke1wic3JjXCIgfCBcImRpc3RcIn0vJHtzdHJpbmd9YDtcblxuLyoqXG4gKiDsi5zsiqTthZwg7KCI64yAIOqyveuhnCAo66Oo7Yq4IC8g67aA7YSwIOyLnOyekSlcbiAqXG4gKiAqKuyCrOyaqSDsnITsuZgqKjog7YyM7J287Iuc7Iqk7YWcIOyngeygkSDsoJHqt7wsIGdsb2Ig7Yyo7YS0XG4gKiAqKuyYiOyLnCoqOiBgXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcImBcbiAqXG4gKiAqKuykkeyalCoqOlxuICogLSBpbXBvcnQg7Iuc7JeQ64qUIOuhnOuNlOqwgCDslYzslYTshJwgc3JjL2Rpc3Qg67OA7ZmY7ZW07KO866+A66GcIOyWtOuKkCDqsr3roZzrk6Ag6rCA64qlXG4gKiAtIGZzIOyngeygkSDsoJHqt7wg7Iuc7JeQ64qUIOyLpOygnCDsobTsnqztlZjripQg6rK966Gc66W8IOyCrOyaqe2VtOyVvCDtlahcbiAqICAgLSBEZXY6IHNyYy8qLnRzIOqyveuhnCDsgqzsmqlcbiAqICAgLSBQcm9kOiBkaXN0LyouanMg6rK966GcIOyCrOyaqVxuICovXG5leHBvcnQgdHlwZSBBYnNvbHV0ZVBhdGggPSBgLyR7c3RyaW5nfWA7XG5cbi8qKlxuICog7Ja065akIOqyveuhnOqwgCDrk6TslrTsmKTrk6AsIO2YhOyerCDsi6Ttlokg7ZmY6rK97JeQIOunnuuKlCDqsr3roZzroZwg67CU6r+U7KSN64uI64ukLlxuICpcbiAqIFwic3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50c1wi6rCAIOuTpOyWtOyZlOydhCDrlYwg6rCc67CcIOuqqOuTnOudvOuptD9cbiAqIC0+IFwic3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50c1wiXG4gKiBcInNyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOuwsO2PrCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJcbiAqIFwiZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOqwnOuwnCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcInNyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIlxuICogXCJkaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wi6rCAIOuTpOyWtOyZlOydhCDrlYwg67Cw7Y+sIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanNcIlxuICpcbiAqIFwiL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOqwnOuwnCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcIi9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJcbiAqIFwiL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOuwsO2PrCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcIi9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wiXG4gKiBcIi9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qc1wi6rCAIOuTpOyWtOyZlOydhCDrlYwg6rCc67CcIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJcbiAqIFwiL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCIvZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanNcIlxuICpcbiAqIFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDqsJzrsJwg66qo65Oc652866m0P1xuICogLT4gXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIlxuICogXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIuqwgCDrk6TslrTsmZTsnYQg65WMIOuwsO2PrCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanNcIlxuICogXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDqsJzrsJwg66qo65Oc652866m0P1xuICogLT4gXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL3NyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHNcIlxuICogXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzXCJcbiAqXG4gKiBcInNyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHM/aG90PTEyMzQ1Njc4OTBcIuqwgCDrk6TslrTsmZTsnYQg65WMIOqwnOuwnCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcInNyYy9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwudHM/aG90PTEyMzQ1Njc4OTBcIlxuICogXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzP2hvdD0xMjM0NTY3ODkwXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCJkaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qcz9ob3Q9MTIzNDU2Nzg5MFwiXG4gKiBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzP2hvdD0xMjM0NTY3ODkwXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDqsJzrsJwg66qo65Oc652866m0P1xuICogLT4gXCJzcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzP2hvdD0xMjM0NTY3ODkwXCJcbiAqIFwiZGlzdC9hcHBsaWNhdGlvbi91c2VyL3VzZXIubW9kZWwuanM/aG90PTEyMzQ1Njc4OTBcIuqwgCDrk6TslrTsmZTsnYQg65WMIOuwsO2PrCDrqqjrk5zrnbzrqbQ/XG4gKiAtPiBcImRpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzP2hvdD0xMjM0NTY3ODkwXCJcbiAqXG4gKiBcIi9Vc2Vycy9wb3RhZG9zL1Byb2plY3RzL3NvbmFtdS9hcGkvc3JjL2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC50cz9ob3Q9MTIzNDU2Nzg5MFwi6rCAIOuTpOyWtOyZlOydhCDrlYwg6rCc67CcIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzP2hvdD0xMjM0NTY3ODkwXCJcbiAqIFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzP2hvdD0xMjM0NTY3ODkwXCLqsIAg65Ok7Ja07JmU7J2EIOuVjCDrsLDtj6wg66qo65Oc652866m0P1xuICogLT4gXCIvVXNlcnMvcG90YWRvcy9Qcm9qZWN0cy9zb25hbXUvYXBpL2Rpc3QvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLmpzP2hvdD0xMjM0NTY3ODkwXCJcbiAqIFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qcz9ob3Q9MTIzNDU2Nzg5MFwi6rCAIOuTpOyWtOyZlOydhCDrlYwg6rCc67CcIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzP2hvdD0xMjM0NTY3ODkwXCJcbiAqIFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qcz9ob3Q9MTIzNDU2Nzg5MFwi6rCAIOuTpOyWtOyZlOydhCDrlYwg67Cw7Y+sIOuqqOuTnOudvOuptD9cbiAqIC0+IFwiL1VzZXJzL3BvdGFkb3MvUHJvamVjdHMvc29uYW11L2FwaS9kaXN0L2FwcGxpY2F0aW9uL3VzZXIvdXNlci5tb2RlbC5qcz9ob3Q9MTIzNDU2Nzg5MFwiXG4gKlxuICogQHBhcmFtIGFueVBhdGhcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW50aW1lUGF0aChhbnlQYXRoOiBzdHJpbmcsIGlzRGV2OiBib29sZWFuID0gaXNIb3RSZWxvYWRTZXJ2ZXIoKSB8fCBpc1Rlc3QoKSk6IHN0cmluZyB7XG4gIGlmIChpc0Rldikge1xuICAgIHJldHVybiBhbnlQYXRoLnJlcGxhY2UoL2Rpc3RcXC8vLCBcInNyYy9cIikucmVwbGFjZSgvXFwuanMvLCBcIi50c1wiKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYW55UGF0aC5yZXBsYWNlKC9zcmNcXC8vLCBcImRpc3QvXCIpLnJlcGxhY2UoL1xcLnRzLywgXCIuanNcIik7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpc0hvdFJlbG9hZFNlcnZlciIsImlzVGVzdCIsInJ1bnRpbWVQYXRoIiwiYW55UGF0aCIsImlzRGV2IiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsaUJBQWlCLEVBQUVDLE1BQU0sUUFBUSxrQkFBa0I7QUF5QzVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtEQyxHQUNELE9BQU8sU0FBU0MsWUFBWUMsT0FBZSxFQUFFQyxRQUFpQkosdUJBQXVCQyxRQUFRO0lBQzNGLElBQUlHLE9BQU87UUFDVCxPQUFPRCxRQUFRRSxPQUFPLENBQUMsVUFBVSxRQUFRQSxPQUFPLENBQUMsUUFBUTtJQUMzRCxPQUFPO1FBQ0wsT0FBT0YsUUFBUUUsT0FBTyxDQUFDLFNBQVMsU0FBU0EsT0FBTyxDQUFDLFFBQVE7SUFDM0Q7QUFDRiJ9
|
|
@@ -33,4 +33,4 @@ import { setTimeout as setTimeoutPromises } from "node:timers/promises";
|
|
|
33
33
|
process.off(event, onEvent);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wcm9jZXNzLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IHNldFRpbWVvdXQgYXMgc2V0VGltZW91dFByb21pc2VzIH0gZnJvbSBcInRpbWVycy9wcm9taXNlc1wiO1xuXG4vKipcbiAqIOyjvOyWtOynhCDsnpHsl4XsnYQg7Iuk7ZaJ7ZWp64uI64ukLlxuICog7KO87Ja07KeEIO2UhOuhnOyEuOyKpCDsnbTrsqTtirgoPeyLnOq3uOuEkCnqsIAg67Cc7IOd7ZWY7JiA7J2EIOuVjOyXkOuPhCDstZzrjIAg7ZWc6rOEKGRlbGF5QmVmb3JlU2h1dGRvd24pIOuPmeyViCDsnpHsl4XsnYQg6riw64uk66awIO2bhCDsooXro4ztlanri4jri6QuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8dm9pZD59IGpvYiAtIOyLpO2Wie2VoCDsnpHsl4VcbiAqIEBwYXJhbSB7ZXZlbnQ6IE5vZGVKUy5TaWduYWxzOyBkZWxheUJlZm9yZVNodXRkb3duOiBudW1iZXJ9IG9wdGlvbnMgLSDsmLXshZhcbiAqIEBwYXJhbSB7Tm9kZUpTLlNpZ25hbHN9IG9wdGlvbnMuZXZlbnQgLSDtlITroZzshLjsiqQg7J2067Kk7Yq4XG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5kZWxheUJlZm9yZVNodXRkb3duIC0g7LWc64yAIO2VnOqzhCDsi5zqsIRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhHcmFjZWZ1bFNodXRkb3duKFxuICBqb2I6ICgpID0+
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9wcm9jZXNzLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IHNldFRpbWVvdXQgYXMgc2V0VGltZW91dFByb21pc2VzIH0gZnJvbSBcInRpbWVycy9wcm9taXNlc1wiO1xuXG4vKipcbiAqIOyjvOyWtOynhCDsnpHsl4XsnYQg7Iuk7ZaJ7ZWp64uI64ukLlxuICog7KO87Ja07KeEIO2UhOuhnOyEuOyKpCDsnbTrsqTtirgoPeyLnOq3uOuEkCnqsIAg67Cc7IOd7ZWY7JiA7J2EIOuVjOyXkOuPhCDstZzrjIAg7ZWc6rOEKGRlbGF5QmVmb3JlU2h1dGRvd24pIOuPmeyViCDsnpHsl4XsnYQg6riw64uk66awIO2bhCDsooXro4ztlanri4jri6QuXG4gKiBAcGFyYW0geygpID0+IFByb21pc2U8dm9pZD59IGpvYiAtIOyLpO2Wie2VoCDsnpHsl4VcbiAqIEBwYXJhbSB7ZXZlbnQ6IE5vZGVKUy5TaWduYWxzOyBkZWxheUJlZm9yZVNodXRkb3duOiBudW1iZXJ9IG9wdGlvbnMgLSDsmLXshZhcbiAqIEBwYXJhbSB7Tm9kZUpTLlNpZ25hbHN9IG9wdGlvbnMuZXZlbnQgLSDtlITroZzshLjsiqQg7J2067Kk7Yq4XG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5kZWxheUJlZm9yZVNodXRkb3duIC0g7LWc64yAIO2VnOqzhCDsi5zqsIRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhHcmFjZWZ1bFNodXRkb3duKFxuICBqb2I6ICgpID0+IFByb21pc2U8dm9pZD4sXG4gIHtcbiAgICB3aGVuVGhpc0hhcHBlbnM6IGV2ZW50LFxuICAgIHdhaXRGb3JVcFRvOiBkZWxheUJlZm9yZVNodXRkb3duLFxuICB9OiB7IHdoZW5UaGlzSGFwcGVuczogTm9kZUpTLlNpZ25hbHM7IHdhaXRGb3JVcFRvOiBudW1iZXIgfSA9IHtcbiAgICB3aGVuVGhpc0hhcHBlbnM6IFwiU0lHVVNSMlwiLFxuICAgIHdhaXRGb3JVcFRvOiAyMDAwMCxcbiAgfSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBsZXQgaXNSdW5uaW5nID0gdHJ1ZSBhcyBib29sZWFuO1xuXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3Qgb25FdmVudCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzUnVubmluZykge1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhjaGFsay5tYWdlbnRhQnJpZ2h0KGB3YWl0IGZvciBzeW5jaW5nIGRvbmUuLi4uYCkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNldFRpbWVvdXRQcm9taXNlcyhkZWxheUJlZm9yZVNodXRkb3duLCBcIndhaXRpbmctc3luY1wiLCB7XG4gICAgICAgIHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge31cbiAgICBjb25zb2xlLmxvZyhjaGFsay5tYWdlbnRhQnJpZ2h0KGBTeW5jaW5nIERPTkUhYCkpO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfTtcbiAgcHJvY2Vzcy5vbihldmVudCwgb25FdmVudCk7XG5cbiAgYXdhaXQgam9iKCk7XG5cbiAgaXNSdW5uaW5nID0gZmFsc2U7XG4gIGFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICBwcm9jZXNzLm9mZihldmVudCwgb25FdmVudCk7XG59XG4iXSwibmFtZXMiOlsiY2hhbGsiLCJzZXRUaW1lb3V0Iiwic2V0VGltZW91dFByb21pc2VzIiwicnVuV2l0aEdyYWNlZnVsU2h1dGRvd24iLCJqb2IiLCJ3aGVuVGhpc0hhcHBlbnMiLCJldmVudCIsIndhaXRGb3JVcFRvIiwiZGVsYXlCZWZvcmVTaHV0ZG93biIsImlzUnVubmluZyIsImFib3J0Q29udHJvbGxlciIsIkFib3J0Q29udHJvbGxlciIsIm9uRXZlbnQiLCJwcm9jZXNzIiwiZXhpdCIsImNvbnNvbGUiLCJsb2ciLCJtYWdlbnRhQnJpZ2h0Iiwic2lnbmFsIiwib24iLCJhYm9ydCIsIm9mZiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxRQUFRO0FBQzFCLFNBQVNDLGNBQWNDLGtCQUFrQixRQUFRLHVCQUFrQjtBQUVuRTs7Ozs7OztDQU9DLEdBQ0QsT0FBTyxlQUFlQyx3QkFDcEJDLEdBQXdCLEVBQ3hCLEVBQ0VDLGlCQUFpQkMsS0FBSyxFQUN0QkMsYUFBYUMsbUJBQW1CLEVBQ3lCLEdBQUc7SUFDNURILGlCQUFpQjtJQUNqQkUsYUFBYTtBQUNmLENBQUM7SUFFRCxJQUFJRSxZQUFZO0lBRWhCLE1BQU1DLGtCQUFrQixJQUFJQztJQUM1QixNQUFNQyxVQUFVO1FBQ2QsSUFBSSxDQUFDSCxXQUFXO1lBQ2RJLFFBQVFDLElBQUksQ0FBQztRQUNmO1FBQ0FDLFFBQVFDLEdBQUcsQ0FBQ2hCLE1BQU1pQixhQUFhLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztRQUUzRCxJQUFJO1lBQ0YsTUFBTWYsbUJBQW1CTSxxQkFBcUIsZ0JBQWdCO2dCQUM1RFUsUUFBUVIsZ0JBQWdCUSxNQUFNO1lBQ2hDO1FBQ0YsRUFBRSxPQUFNLENBQUM7UUFDVEgsUUFBUUMsR0FBRyxDQUFDaEIsTUFBTWlCLGFBQWEsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUMvQ0osUUFBUUMsSUFBSSxDQUFDO0lBQ2Y7SUFDQUQsUUFBUU0sRUFBRSxDQUFDYixPQUFPTTtJQUVsQixNQUFNUjtJQUVOSyxZQUFZO0lBQ1pDLGdCQUFnQlUsS0FBSztJQUNyQlAsUUFBUVEsR0FBRyxDQUFDZixPQUFPTTtBQUNyQiJ9
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { AST, ColumnRef } from "node-sql-parser";
|
|
1
|
+
import type { AST, ColumnRef, Join } from "node-sql-parser";
|
|
2
2
|
export declare function getTableName(expr: ColumnRef): string | null;
|
|
3
3
|
export declare function getTableNamesFromWhere(ast: AST | AST[]): string[];
|
|
4
|
+
/**
|
|
5
|
+
* 주의: table명이 아닌 alias를 반환함
|
|
6
|
+
*/
|
|
7
|
+
export declare function getJoinTables(ast: AST | AST[], joinTypes: Join["join"][]): string[];
|
|
4
8
|
//# sourceMappingURL=sql-parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-parser.d.ts","sourceRoot":"","sources":["../../src/utils/sql-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sql-parser.d.ts","sourceRoot":"","sources":["../../src/utils/sql-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAA+B,IAAI,EAAU,MAAM,iBAAiB,CAAC;AAIjG,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,iBAO3C;AAGD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,CA0BjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAYnF"}
|
package/dist/utils/sql-parser.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { unique } from "radashi";
|
|
2
|
+
import { nonNullable } from "./utils.js";
|
|
2
3
|
export function getTableName(expr) {
|
|
3
4
|
if ("table" in expr && expr.table !== null) {
|
|
4
5
|
return typeof expr.table === "string" ? expr.table : expr.table.value;
|
|
@@ -27,9 +28,19 @@ export function getTableNamesFromWhere(ast) {
|
|
|
27
28
|
...extractTableName(where.right)
|
|
28
29
|
];
|
|
29
30
|
};
|
|
30
|
-
return
|
|
31
|
+
return unique((Array.isArray(ast) ? ast : [
|
|
31
32
|
ast
|
|
32
33
|
]).flatMap((a)=>a.type === "select" || a.type === "update" || a.type === "delete" ? extractTableNames(a.where) : []));
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* 주의: table명이 아닌 alias를 반환함
|
|
37
|
+
*/ export function getJoinTables(ast, joinTypes) {
|
|
38
|
+
const extractJoinTables = (froms)=>{
|
|
39
|
+
return froms.map((f)=>"join" in f && joinTypes.includes(f.join) ? f.as : null).filter(nonNullable);
|
|
40
|
+
};
|
|
41
|
+
return unique((Array.isArray(ast) ? ast : [
|
|
42
|
+
ast
|
|
43
|
+
]).flatMap((a)=>a.type === "select" && Array.isArray(a.from) ? extractJoinTables(a.from) : []));
|
|
44
|
+
}
|
|
34
45
|
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zcWwtcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQVNULCBDb2x1bW5SZWYsIEV4cHIsIEV4cHJlc3Npb25WYWx1ZSwgRnJvbSwgSm9pbiwgU2VsZWN0IH0gZnJvbSBcIm5vZGUtc3FsLXBhcnNlclwiO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IG5vbk51bGxhYmxlIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlTmFtZShleHByOiBDb2x1bW5SZWYpIHtcbiAgaWYgKFwidGFibGVcIiBpbiBleHByICYmIGV4cHIudGFibGUgIT09IG51bGwpIHtcbiAgICByZXR1cm4gdHlwZW9mIGV4cHIudGFibGUgPT09IFwic3RyaW5nXCJcbiAgICAgID8gZXhwci50YWJsZVxuICAgICAgOiAoZXhwci50YWJsZSBhcyB7IHR5cGU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gd2hlcmUg7KGw6rG07JeQIOyCrOyaqeuQnCDthYzsnbTruJTrqoXsnYQg7LaU7LacXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFibGVOYW1lc0Zyb21XaGVyZShhc3Q6IEFTVCB8IEFTVFtdKTogc3RyaW5nW10ge1xuICBjb25zdCBleHRyYWN0VGFibGVOYW1lcyA9ICh3aGVyZTogU2VsZWN0W1wid2hlcmVcIl0pOiBzdHJpbmdbXSA9PiB7XG4gICAgaWYgKHdoZXJlID09PSBudWxsIHx8ICEod2hlcmUudHlwZSA9PT0gXCJiaW5hcnlfZXhwclwiICYmIFwibGVmdFwiIGluIHdoZXJlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGV4dHJhY3RUYWJsZU5hbWUgPSAoZXhwcjogRXhwciB8IEV4cHJlc3Npb25WYWx1ZSk6IHN0cmluZ1tdID0+IHtcbiAgICAgIGlmIChleHByLnR5cGUgPT09IFwiY29sdW1uX3JlZlwiKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlID0gZ2V0VGFibGVOYW1lKGV4cHIgYXMgQ29sdW1uUmVmKTtcbiAgICAgICAgcmV0dXJuIHRhYmxlID8gW3RhYmxlXSA6IFtdO1xuICAgICAgfSBlbHNlIGlmIChleHByLnR5cGUgPT09IFwiYmluYXJ5X2V4cHJcIiAmJiBcImxlZnRcIiBpbiBleHByKSB7XG4gICAgICAgIHJldHVybiBleHRyYWN0VGFibGVOYW1lcyhleHByKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbXTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFsuLi5leHRyYWN0VGFibGVOYW1lKHdoZXJlLmxlZnQpLCAuLi5leHRyYWN0VGFibGVOYW1lKHdoZXJlLnJpZ2h0KV07XG4gIH07XG5cbiAgcmV0dXJuIHVuaXF1ZShcbiAgICAoQXJyYXkuaXNBcnJheShhc3QpID8gYXN0IDogW2FzdF0pLmZsYXRNYXAoKGEpID0+XG4gICAgICBhLnR5cGUgPT09IFwic2VsZWN0XCIgfHwgYS50eXBlID09PSBcInVwZGF0ZVwiIHx8IGEudHlwZSA9PT0gXCJkZWxldGVcIlxuICAgICAgICA/IGV4dHJhY3RUYWJsZU5hbWVzKGEud2hlcmUpXG4gICAgICAgIDogW10sXG4gICAgKSxcbiAgKTtcbn1cblxuLyoqXG4gKiDso7zsnZg6IHRhYmxl66qF7J20IOyVhOuLjCBhbGlhc+ulvCDrsJjtmZjtlahcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEpvaW5UYWJsZXMoYXN0OiBBU1QgfCBBU1RbXSwgam9pblR5cGVzOiBKb2luW1wiam9pblwiXVtdKTogc3RyaW5nW10ge1xuICBjb25zdCBleHRyYWN0Sm9pblRhYmxlcyA9IChmcm9tczogRnJvbVtdKTogc3RyaW5nW10gPT4ge1xuICAgIHJldHVybiBmcm9tc1xuICAgICAgLm1hcCgoZikgPT4gKFwiam9pblwiIGluIGYgJiYgam9pblR5cGVzLmluY2x1ZGVzKGYuam9pbikgPyBmLmFzIDogbnVsbCkpXG4gICAgICAuZmlsdGVyKG5vbk51bGxhYmxlKTtcbiAgfTtcblxuICByZXR1cm4gdW5pcXVlKFxuICAgIChBcnJheS5pc0FycmF5KGFzdCkgPyBhc3QgOiBbYXN0XSkuZmxhdE1hcCgoYSkgPT5cbiAgICAgIGEudHlwZSA9PT0gXCJzZWxlY3RcIiAmJiBBcnJheS5pc0FycmF5KGEuZnJvbSkgPyBleHRyYWN0Sm9pblRhYmxlcyhhLmZyb20pIDogW10sXG4gICAgKSxcbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1bmlxdWUiLCJub25OdWxsYWJsZSIsImdldFRhYmxlTmFtZSIsImV4cHIiLCJ0YWJsZSIsInZhbHVlIiwiZ2V0VGFibGVOYW1lc0Zyb21XaGVyZSIsImFzdCIsImV4dHJhY3RUYWJsZU5hbWVzIiwid2hlcmUiLCJ0eXBlIiwiZXh0cmFjdFRhYmxlTmFtZSIsImxlZnQiLCJyaWdodCIsIkFycmF5IiwiaXNBcnJheSIsImZsYXRNYXAiLCJhIiwiZ2V0Sm9pblRhYmxlcyIsImpvaW5UeXBlcyIsImV4dHJhY3RKb2luVGFibGVzIiwiZnJvbXMiLCJtYXAiLCJmIiwiaW5jbHVkZXMiLCJqb2luIiwiYXMiLCJmaWx0ZXIiLCJmcm9tIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxNQUFNLFFBQVEsVUFBVTtBQUNqQyxTQUFTQyxXQUFXLFFBQVEsYUFBVTtBQUV0QyxPQUFPLFNBQVNDLGFBQWFDLElBQWU7SUFDMUMsSUFBSSxXQUFXQSxRQUFRQSxLQUFLQyxLQUFLLEtBQUssTUFBTTtRQUMxQyxPQUFPLE9BQU9ELEtBQUtDLEtBQUssS0FBSyxXQUN6QkQsS0FBS0MsS0FBSyxHQUNWLEFBQUNELEtBQUtDLEtBQUssQ0FBcUNDLEtBQUs7SUFDM0Q7SUFDQSxPQUFPO0FBQ1Q7QUFFQSx5QkFBeUI7QUFDekIsT0FBTyxTQUFTQyx1QkFBdUJDLEdBQWdCO0lBQ3JELE1BQU1DLG9CQUFvQixDQUFDQztRQUN6QixJQUFJQSxVQUFVLFFBQVEsQ0FBRUEsQ0FBQUEsTUFBTUMsSUFBSSxLQUFLLGlCQUFpQixVQUFVRCxLQUFJLEdBQUk7WUFDeEUsT0FBTyxFQUFFO1FBQ1g7UUFFQSxNQUFNRSxtQkFBbUIsQ0FBQ1I7WUFDeEIsSUFBSUEsS0FBS08sSUFBSSxLQUFLLGNBQWM7Z0JBQzlCLE1BQU1OLFFBQVFGLGFBQWFDO2dCQUMzQixPQUFPQyxRQUFRO29CQUFDQTtpQkFBTSxHQUFHLEVBQUU7WUFDN0IsT0FBTyxJQUFJRCxLQUFLTyxJQUFJLEtBQUssaUJBQWlCLFVBQVVQLE1BQU07Z0JBQ3hELE9BQU9LLGtCQUFrQkw7WUFDM0I7WUFDQSxPQUFPLEVBQUU7UUFDWDtRQUVBLE9BQU87ZUFBSVEsaUJBQWlCRixNQUFNRyxJQUFJO2VBQU1ELGlCQUFpQkYsTUFBTUksS0FBSztTQUFFO0lBQzVFO0lBRUEsT0FBT2IsT0FDTCxBQUFDYyxDQUFBQSxNQUFNQyxPQUFPLENBQUNSLE9BQU9BLE1BQU07UUFBQ0E7S0FBSSxBQUFELEVBQUdTLE9BQU8sQ0FBQyxDQUFDQyxJQUMxQ0EsRUFBRVAsSUFBSSxLQUFLLFlBQVlPLEVBQUVQLElBQUksS0FBSyxZQUFZTyxFQUFFUCxJQUFJLEtBQUssV0FDckRGLGtCQUFrQlMsRUFBRVIsS0FBSyxJQUN6QixFQUFFO0FBR1o7QUFFQTs7Q0FFQyxHQUNELE9BQU8sU0FBU1MsY0FBY1gsR0FBZ0IsRUFBRVksU0FBeUI7SUFDdkUsTUFBTUMsb0JBQW9CLENBQUNDO1FBQ3pCLE9BQU9BLE1BQ0pDLEdBQUcsQ0FBQyxDQUFDQyxJQUFPLFVBQVVBLEtBQUtKLFVBQVVLLFFBQVEsQ0FBQ0QsRUFBRUUsSUFBSSxJQUFJRixFQUFFRyxFQUFFLEdBQUcsTUFDL0RDLE1BQU0sQ0FBQzFCO0lBQ1o7SUFFQSxPQUFPRCxPQUNMLEFBQUNjLENBQUFBLE1BQU1DLE9BQU8sQ0FBQ1IsT0FBT0EsTUFBTTtRQUFDQTtLQUFJLEFBQUQsRUFBR1MsT0FBTyxDQUFDLENBQUNDLElBQzFDQSxFQUFFUCxJQUFJLEtBQUssWUFBWUksTUFBTUMsT0FBTyxDQUFDRSxFQUFFVyxJQUFJLElBQUlSLGtCQUFrQkgsRUFBRVcsSUFBSSxJQUFJLEVBQUU7QUFHbkYifQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
type Expand<T> = T extends infer O ? {
|
|
2
|
+
[K in keyof O]: O[K];
|
|
3
|
+
} : never;
|
|
4
|
+
type SetPath<T, P extends string, V> = T extends readonly (infer U)[] ? SetPath<U, P, V>[] : P extends `${infer K}.${infer Rest}` ? K extends keyof T ? Expand<{
|
|
5
|
+
[Key in keyof T]: Key extends K ? SetPath<T[K], Rest, V> : T[Key];
|
|
6
|
+
}> : Expand<T & {
|
|
7
|
+
[Key in K]: SetPath<{}, Rest, V>;
|
|
8
|
+
}> : P extends keyof T ? Expand<{
|
|
9
|
+
[Key in keyof T]: Key extends P ? V : T[Key];
|
|
10
|
+
}> : Expand<T & {
|
|
11
|
+
[Key in P]: V;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function withProp<T extends object, P extends string, V>(obj: T, path: P, value: V): SetPath<T, P, V>;
|
|
14
|
+
interface ChainWrapper<T> {
|
|
15
|
+
set<P extends string, V>(path: P, value: V): ChainWrapper<SetPath<T, P, V>>;
|
|
16
|
+
value(): T;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 객체를 감싸서 체이닝을 시작합니다.
|
|
20
|
+
*/
|
|
21
|
+
export declare function withProps<T extends object>(obj: T): ChainWrapper<T>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=type-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../src/utils/type-utils.ts"],"names":[],"mappings":"AACA,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAGtE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACjE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAElB,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,MAAM,IAAI,EAAE,GAClC,CAAC,SAAS,MAAM,CAAC,GAEf,MAAM,CAAC;KACJ,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GACtB,CAAC,CAAC,GAAG,CAAC;CACX,CAAC,GAEF,MAAM,CAAC,CAAC,GAAG;KAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;CAAE,CAAC,GAElD,CAAC,SAAS,MAAM,CAAC,GAEf,MAAM,CAAC;KAAG,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;CAAE,CAAC,GAExD,MAAM,CAAC,CAAC,GAAG;KAAG,GAAG,IAAI,CAAC,GAAG,CAAC;CAAE,CAAC,CAAC;AAEtC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,EAC5D,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAiClB;AAED,UAAU,YAAY,CAAC,CAAC;IAEtB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAG5E,KAAK,IAAI,CAAC,CAAC;CACZ;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAQnE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// 타입을 펼쳐서 보여주는 유틸리티 (객체에만 사용해야 함)
|
|
2
|
+
export function withProp(obj, path, value) {
|
|
3
|
+
const keys = path.split(".");
|
|
4
|
+
if (keys.length === 0) throw new Error("Path cannot be empty");
|
|
5
|
+
const result = structuredClone(obj);
|
|
6
|
+
const setDeep = (current, keys, value)=>{
|
|
7
|
+
if (keys.length === 0) return;
|
|
8
|
+
const [key, ...rest] = keys;
|
|
9
|
+
if (rest.length === 0) {
|
|
10
|
+
if (Array.isArray(current)) {
|
|
11
|
+
current.forEach((item)=>{
|
|
12
|
+
item[key] = value;
|
|
13
|
+
});
|
|
14
|
+
} else {
|
|
15
|
+
current[key] = value;
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
if (!(key in current) || typeof current[key] !== "object") {
|
|
19
|
+
current[key] = {};
|
|
20
|
+
}
|
|
21
|
+
if (Array.isArray(current[key])) {
|
|
22
|
+
current[key].forEach((item)=>{
|
|
23
|
+
setDeep(item, rest, value);
|
|
24
|
+
});
|
|
25
|
+
} else {
|
|
26
|
+
setDeep(current[key], rest, value);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
setDeep(result, keys, value);
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 객체를 감싸서 체이닝을 시작합니다.
|
|
35
|
+
*/ export function withProps(obj) {
|
|
36
|
+
return {
|
|
37
|
+
set: (path, value)=>{
|
|
38
|
+
const nextObj = withProp(obj, path, value);
|
|
39
|
+
return withProps(nextObj);
|
|
40
|
+
},
|
|
41
|
+
value: ()=>obj
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90eXBlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIO2DgOyeheydhCDtjrzss5DshJwg67O07Jes7KO864qUIOycoO2LuOumrO2LsCAo6rCd7LK07JeQ66eMIOyCrOyaqe2VtOyVvCDtlagpXG50eXBlIEV4cGFuZDxUPiA9IFQgZXh0ZW5kcyBpbmZlciBPID8geyBbSyBpbiBrZXlvZiBPXTogT1tLXSB9IDogbmV2ZXI7XG5cbi8vIO2VteyLrCDroZzsp4FcbnR5cGUgU2V0UGF0aDxULCBQIGV4dGVuZHMgc3RyaW5nLCBWPiA9IFQgZXh0ZW5kcyByZWFkb25seSAoaW5mZXIgVSlbXSAvLyBbU3RlcCAxXSDtmITsnqwg7YOA7J6F7J20IOuwsOyXtOyduOqwgD8gLT4g7JqU7IaMKFUp7JeQIOuMgO2VtCDsnqzqt4Ag7Zi47LacIO2bhCDrsLDsl7TroZwg6rCQ7IyIXG4gID8gU2V0UGF0aDxVLCBQLCBWPltdXG4gIDogLy8gW1N0ZXAgMl0g6rK966Gc6rCAIOygkCguKeycvOuhnCDrgpjriZjripTqsIA/XG4gICAgUCBleHRlbmRzIGAke2luZmVyIEt9LiR7aW5mZXIgUmVzdH1gXG4gICAgPyBLIGV4dGVuZHMga2V5b2YgVFxuICAgICAgPyAvLyBbU3RlcCAyLTFdIO2CpOqwgCDsobTsnqztlahcbiAgICAgICAgRXhwYW5kPHtcbiAgICAgICAgICBbS2V5IGluIGtleW9mIFRdOiBLZXkgZXh0ZW5kcyBLXG4gICAgICAgICAgICA/IFNldFBhdGg8VFtLXSwgUmVzdCwgVj4gLy8g7J6s6reAIO2YuOy2nFxuICAgICAgICAgICAgOiBUW0tleV07XG4gICAgICAgIH0+XG4gICAgICA6IC8vIFtTdGVwIDItMl0g7YKk6rCAIOyXhuydjCAo7IOI66Gc7Jq0IOqwneyytCDqsr3roZwg7IOd7ISxKVxuICAgICAgICBFeHBhbmQ8VCAmIHsgW0tleSBpbiBLXTogU2V0UGF0aDx7fSwgUmVzdCwgVj4gfT5cbiAgICA6IC8vIFtTdGVwIDNdIOqyveuhnOydmCDrp4jsp4Drp4kgKEJhc2UgQ2FzZSlcbiAgICAgIFAgZXh0ZW5kcyBrZXlvZiBUXG4gICAgICA/IC8vIFtTdGVwIDMtMV0g6riw7KG0IO2CpCDrja7slrTsk7DquLAgKOq1kOywqCDtg4DsnoUgJiDrjIDsi6Ag7KGw6rG067aAIO2DgOyeheycvOuhnCDsmYTsoIQg6rWQ7LK0KVxuICAgICAgICBFeHBhbmQ8eyBbS2V5IGluIGtleW9mIFRdOiBLZXkgZXh0ZW5kcyBQID8gViA6IFRbS2V5XSB9PlxuICAgICAgOiAvLyBbU3RlcCAzLTJdIOyDiCDtgqQg7LaU6rCAXG4gICAgICAgIEV4cGFuZDxUICYgeyBbS2V5IGluIFBdOiBWIH0+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFByb3A8VCBleHRlbmRzIG9iamVjdCwgUCBleHRlbmRzIHN0cmluZywgVj4oXG4gIG9iajogVCxcbiAgcGF0aDogUCxcbiAgdmFsdWU6IFYsXG4pOiBTZXRQYXRoPFQsIFAsIFY+IHtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoXCIuXCIpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcihcIlBhdGggY2Fubm90IGJlIGVtcHR5XCIpO1xuICBjb25zdCByZXN1bHQgPSBzdHJ1Y3R1cmVkQ2xvbmUob2JqKTtcblxuICBjb25zdCBzZXREZWVwID0gKGN1cnJlbnQ6IGFueSwga2V5czogc3RyaW5nW10sIHZhbHVlOiBWKTogdm9pZCA9PiB7XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgW2tleSwgLi4ucmVzdF0gPSBrZXlzO1xuXG4gICAgaWYgKHJlc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgICAgICBjdXJyZW50LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBpdGVtW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50W2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEoa2V5IGluIGN1cnJlbnQpIHx8IHR5cGVvZiBjdXJyZW50W2tleV0gIT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY3VycmVudFtrZXldID0ge307XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50W2tleV0pKSB7XG4gICAgICAgIGN1cnJlbnRba2V5XS5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICBzZXREZWVwKGl0ZW0sIHJlc3QsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXREZWVwKGN1cnJlbnRba2V5XSwgcmVzdCwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzZXREZWVwKHJlc3VsdCwga2V5cywgdmFsdWUpO1xuICByZXR1cm4gcmVzdWx0IGFzIFNldFBhdGg8VCwgUCwgVj47XG59XG5cbmludGVyZmFjZSBDaGFpbldyYXBwZXI8VD4ge1xuICAvLyDqsr3roZzsl5Ag6rCS7J2EIOyEpOygle2VmOqzoCDrs4Dqsr3rkJwg7YOA7J6F7J2YIOyDiOuhnOyatCDssrTsnbgg656Y7Y2866W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAgc2V0PFAgZXh0ZW5kcyBzdHJpbmcsIFY+KHBhdGg6IFAsIHZhbHVlOiBWKTogQ2hhaW5XcmFwcGVyPFNldFBhdGg8VCwgUCwgVj4+O1xuXG4gIC8vIOy1nOyihSDqsrDqs7wg6rCd7LK066W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAgdmFsdWUoKTogVDtcbn1cblxuLyoqXG4gKiDqsJ3ssrTrpbwg6rCQ7Iu47IScIOyytOydtOuLneydhCDsi5zsnpHtlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUHJvcHM8VCBleHRlbmRzIG9iamVjdD4ob2JqOiBUKTogQ2hhaW5XcmFwcGVyPFQ+IHtcbiAgcmV0dXJuIHtcbiAgICBzZXQ6IDxQIGV4dGVuZHMgc3RyaW5nLCBWPihwYXRoOiBQLCB2YWx1ZTogVikgPT4ge1xuICAgICAgY29uc3QgbmV4dE9iaiA9IHdpdGhQcm9wKG9iaiwgcGF0aCwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHdpdGhQcm9wcyhuZXh0T2JqKSBhcyBDaGFpbldyYXBwZXI8U2V0UGF0aDxULCBQLCBWPj47XG4gICAgfSxcbiAgICB2YWx1ZTogKCkgPT4gb2JqLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbIndpdGhQcm9wIiwib2JqIiwicGF0aCIsInZhbHVlIiwia2V5cyIsInNwbGl0IiwibGVuZ3RoIiwiRXJyb3IiLCJyZXN1bHQiLCJzdHJ1Y3R1cmVkQ2xvbmUiLCJzZXREZWVwIiwiY3VycmVudCIsImtleSIsInJlc3QiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwiaXRlbSIsIndpdGhQcm9wcyIsInNldCIsIm5leHRPYmoiXSwibWFwcGluZ3MiOiJBQUFBLGtDQUFrQztBQXdCbEMsT0FBTyxTQUFTQSxTQUNkQyxHQUFNLEVBQ05DLElBQU8sRUFDUEMsS0FBUTtJQUVSLE1BQU1DLE9BQU9GLEtBQUtHLEtBQUssQ0FBQztJQUN4QixJQUFJRCxLQUFLRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUlDLE1BQU07SUFDdkMsTUFBTUMsU0FBU0MsZ0JBQWdCUjtJQUUvQixNQUFNUyxVQUFVLENBQUNDLFNBQWNQLE1BQWdCRDtRQUM3QyxJQUFJQyxLQUFLRSxNQUFNLEtBQUssR0FBRztRQUN2QixNQUFNLENBQUNNLEtBQUssR0FBR0MsS0FBSyxHQUFHVDtRQUV2QixJQUFJUyxLQUFLUCxNQUFNLEtBQUssR0FBRztZQUNyQixJQUFJUSxNQUFNQyxPQUFPLENBQUNKLFVBQVU7Z0JBQzFCQSxRQUFRSyxPQUFPLENBQUMsQ0FBQ0M7b0JBQ2ZBLElBQUksQ0FBQ0wsSUFBSSxHQUFHVDtnQkFDZDtZQUNGLE9BQU87Z0JBQ0xRLE9BQU8sQ0FBQ0MsSUFBSSxHQUFHVDtZQUNqQjtRQUNGLE9BQU87WUFDTCxJQUFJLENBQUVTLENBQUFBLE9BQU9ELE9BQU0sS0FBTSxPQUFPQSxPQUFPLENBQUNDLElBQUksS0FBSyxVQUFVO2dCQUN6REQsT0FBTyxDQUFDQyxJQUFJLEdBQUcsQ0FBQztZQUNsQjtZQUNBLElBQUlFLE1BQU1DLE9BQU8sQ0FBQ0osT0FBTyxDQUFDQyxJQUFJLEdBQUc7Z0JBQy9CRCxPQUFPLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxDQUFDLENBQUNDO29CQUNwQlAsUUFBUU8sTUFBTUosTUFBTVY7Z0JBQ3RCO1lBQ0YsT0FBTztnQkFDTE8sUUFBUUMsT0FBTyxDQUFDQyxJQUFJLEVBQUVDLE1BQU1WO1lBQzlCO1FBQ0Y7SUFDRjtJQUVBTyxRQUFRRixRQUFRSixNQUFNRDtJQUN0QixPQUFPSztBQUNUO0FBVUE7O0NBRUMsR0FDRCxPQUFPLFNBQVNVLFVBQTRCakIsR0FBTTtJQUNoRCxPQUFPO1FBQ0xrQixLQUFLLENBQXNCakIsTUFBU0M7WUFDbEMsTUFBTWlCLFVBQVVwQixTQUFTQyxLQUFLQyxNQUFNQztZQUNwQyxPQUFPZSxVQUFVRTtRQUNuQjtRQUNBakIsT0FBTyxJQUFNRjtJQUNmO0FBQ0YifQ==
|
package/dist/utils/utils.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import { AbsolutePath } from "./path-utils";
|
|
1
|
+
import type { AbsolutePath } from "./path-utils";
|
|
2
2
|
export declare function findAppRootPath(): Promise<AbsolutePath>;
|
|
3
3
|
export declare function findApiRootPath(): AbsolutePath;
|
|
4
4
|
export declare function nonNullable<T>(value: T): value is NonNullable<T>;
|
|
5
5
|
export declare function exhaustive(_param: never): void;
|
|
6
|
+
export declare function assertExists<T>(value: T | null | undefined, message?: string): T;
|
|
7
|
+
export declare function assertNotNull<T>(value: T | null, message?: string): T;
|
|
8
|
+
export declare function assertDefined<T>(value: T | undefined, message?: string): T;
|
|
9
|
+
export declare function chunk<T>(array: T[], size: number): T[][];
|
|
10
|
+
export declare function intersectionBy<T, K>(arr1: readonly T[], arr2: readonly T[], iteratee: (item: T) => K): T[];
|
|
11
|
+
export declare function differenceWith<T>(arr1: readonly T[], arr2: readonly T[], comparator: (a: T, b: T) => boolean): T[];
|
|
6
12
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAG7D;AAED,wBAAgB,eAAe,IAAI,YAAY,CAyB9C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAEhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,QAEvC;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAKhF;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAKrE;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAK1E;AAGD,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAExD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EACjC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GACvB,CAAC,EAAE,CAGL;AAED,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,GAClC,CAAC,EAAE,CAEL"}
|
package/dist/utils/utils.js
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import path from "path";
|
|
2
1
|
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { cluster } from "radashi";
|
|
3
4
|
export async function findAppRootPath() {
|
|
4
5
|
const apiRootPath = findApiRootPath();
|
|
5
6
|
return apiRootPath.split(path.sep).slice(0, -1).join(path.sep);
|
|
6
7
|
}
|
|
7
8
|
export function findApiRootPath() {
|
|
8
|
-
// NOTE: for support npm / yarn workspaces
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
// NOTE: for support npm / yarn / pnpm workspaces
|
|
10
|
+
// 하지만 workspace 쓰면 process.cwd() 하면 되는데... 이건 나중에 협의 후 수정하는걸로
|
|
11
|
+
const workspacePath = process.env.PNPM_SCRIPT_SRC_DIR ?? process.env.INIT_CWD;
|
|
12
|
+
if (nonNullable(workspacePath)) {
|
|
11
13
|
return workspacePath;
|
|
12
14
|
}
|
|
15
|
+
if (nonNullable(process.env.PNPM_PACKAGE_NAME)) {
|
|
16
|
+
return process.cwd().split(path.sep).join(path.sep);
|
|
17
|
+
}
|
|
13
18
|
const basePath = import.meta.filename;
|
|
14
19
|
let dir = path.dirname(basePath);
|
|
15
20
|
if (dir.includes("/.yarn/")) {
|
|
@@ -29,5 +34,39 @@ export function nonNullable(value) {
|
|
|
29
34
|
export function exhaustive(_param) {
|
|
30
35
|
throw new Error(`exhaustive`);
|
|
31
36
|
}
|
|
37
|
+
// 일반 버전
|
|
38
|
+
export function assertExists(value, message) {
|
|
39
|
+
if (value === null || value === undefined) {
|
|
40
|
+
throw new Error(message ?? "Value must exist");
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
// null만 체크
|
|
45
|
+
export function assertNotNull(value, message) {
|
|
46
|
+
if (value === null) {
|
|
47
|
+
throw new Error(message ?? "Value must not be null");
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
// undefined만 체크
|
|
52
|
+
export function assertDefined(value, message) {
|
|
53
|
+
if (value === undefined) {
|
|
54
|
+
throw new Error(message ?? "Value must be defined");
|
|
55
|
+
}
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
// lodash chunk 대체 (radash cluster 사용)
|
|
59
|
+
export function chunk(array, size) {
|
|
60
|
+
return cluster(array, Math.ceil(array.length / size));
|
|
61
|
+
}
|
|
62
|
+
// lodash intersectionBy 대체
|
|
63
|
+
export function intersectionBy(arr1, arr2, iteratee) {
|
|
64
|
+
const arr2Keys = new Set(arr2.map(iteratee));
|
|
65
|
+
return arr1.filter((item)=>arr2Keys.has(iteratee(item)));
|
|
66
|
+
}
|
|
67
|
+
// lodash differenceWith 대체
|
|
68
|
+
export function differenceWith(arr1, arr2, comparator) {
|
|
69
|
+
return arr1.filter((itemA)=>!arr2.some((itemB)=>comparator(itemA, itemB)));
|
|
70
|
+
}
|
|
32
71
|
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgY2x1c3RlciB9IGZyb20gXCJyYWRhc2hpXCI7XG5pbXBvcnQgdHlwZSB7IEFic29sdXRlUGF0aCB9IGZyb20gXCIuL3BhdGgtdXRpbHNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRBcHBSb290UGF0aCgpOiBQcm9taXNlPEFic29sdXRlUGF0aD4ge1xuICBjb25zdCBhcGlSb290UGF0aCA9IGZpbmRBcGlSb290UGF0aCgpO1xuICByZXR1cm4gYXBpUm9vdFBhdGguc3BsaXQocGF0aC5zZXApLnNsaWNlKDAsIC0xKS5qb2luKHBhdGguc2VwKSBhcyBBYnNvbHV0ZVBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQXBpUm9vdFBhdGgoKTogQWJzb2x1dGVQYXRoIHtcbiAgLy8gTk9URTogZm9yIHN1cHBvcnQgbnBtIC8geWFybiAvIHBucG0gd29ya3NwYWNlc1xuICAvLyDtlZjsp4Drp4wgd29ya3NwYWNlIOyTsOuptCBwcm9jZXNzLmN3ZCgpIO2VmOuptCDrkJjripTrjbAuLi4g7J206rG0IOuCmOykkeyXkCDtmJHsnZgg7ZuEIOyImOygle2VmOuKlOqxuOuhnFxuICBjb25zdCB3b3Jrc3BhY2VQYXRoID0gcHJvY2Vzcy5lbnYuUE5QTV9TQ1JJUFRfU1JDX0RJUiA/PyBwcm9jZXNzLmVudi5JTklUX0NXRDtcbiAgaWYgKG5vbk51bGxhYmxlKHdvcmtzcGFjZVBhdGgpKSB7XG4gICAgcmV0dXJuIHdvcmtzcGFjZVBhdGggYXMgQWJzb2x1dGVQYXRoO1xuICB9XG5cbiAgaWYgKG5vbk51bGxhYmxlKHByb2Nlc3MuZW52LlBOUE1fUEFDS0FHRV9OQU1FKSkge1xuICAgIHJldHVybiBwcm9jZXNzLmN3ZCgpLnNwbGl0KHBhdGguc2VwKS5qb2luKHBhdGguc2VwKSBhcyBBYnNvbHV0ZVBhdGg7XG4gIH1cblxuICBjb25zdCBiYXNlUGF0aCA9IGltcG9ydC5tZXRhLmZpbGVuYW1lO1xuICBsZXQgZGlyID0gcGF0aC5kaXJuYW1lKGJhc2VQYXRoKTtcbiAgaWYgKGRpci5pbmNsdWRlcyhcIi8ueWFybi9cIikpIHtcbiAgICBkaXIgPSBkaXIuc3BsaXQoXCIvLnlhcm4vXCIpWzBdO1xuICB9XG5cbiAgZG8ge1xuICAgIGlmIChmcy5leGlzdHNTeW5jKHBhdGguam9pbihkaXIsIFwiL3BhY2thZ2UuanNvblwiKSkpIHtcbiAgICAgIHJldHVybiBkaXIuc3BsaXQocGF0aC5zZXApLmpvaW4ocGF0aC5zZXApIGFzIEFic29sdXRlUGF0aDtcbiAgICB9XG4gICAgZGlyID0gZGlyLnNwbGl0KHBhdGguc2VwKS5zbGljZSgwLCAtMSkuam9pbihwYXRoLnNlcCk7XG4gIH0gd2hpbGUgKGRpci5zcGxpdChwYXRoLnNlcCkubGVuZ3RoID4gMSk7XG4gIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIEFwcFJvb3QgdXNpbmcgU29uYW11IC0yXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9uTnVsbGFibGU8VD4odmFsdWU6IFQpOiB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhoYXVzdGl2ZShfcGFyYW06IG5ldmVyKSB7XG4gIHRocm93IG5ldyBFcnJvcihgZXhoYXVzdGl2ZWApO1xufVxuXG4vLyDsnbzrsJgg67KE7KCEXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXhpc3RzPFQ+KHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCwgbWVzc2FnZT86IHN0cmluZyk6IFQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVmFsdWUgbXVzdCBleGlzdFwiKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8vIG51bGzrp4wg7LK07YGsXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0Tm90TnVsbDxUPih2YWx1ZTogVCB8IG51bGwsIG1lc3NhZ2U/OiBzdHJpbmcpOiBUIHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJWYWx1ZSBtdXN0IG5vdCBiZSBudWxsXCIpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8vIHVuZGVmaW5lZOunjCDssrTtgaxcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnREZWZpbmVkPFQ+KHZhbHVlOiBUIHwgdW5kZWZpbmVkLCBtZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJWYWx1ZSBtdXN0IGJlIGRlZmluZWRcIik7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBsb2Rhc2ggY2h1bmsg64yA7LK0IChyYWRhc2ggY2x1c3RlciDsgqzsmqkpXG5leHBvcnQgZnVuY3Rpb24gY2h1bms8VD4oYXJyYXk6IFRbXSwgc2l6ZTogbnVtYmVyKTogVFtdW10ge1xuICByZXR1cm4gY2x1c3RlcihhcnJheSwgTWF0aC5jZWlsKGFycmF5Lmxlbmd0aCAvIHNpemUpKTtcbn1cbi8vIGxvZGFzaCBpbnRlcnNlY3Rpb25CeSDrjIDssrRcbmV4cG9ydCBmdW5jdGlvbiBpbnRlcnNlY3Rpb25CeTxULCBLPihcbiAgYXJyMTogcmVhZG9ubHkgVFtdLFxuICBhcnIyOiByZWFkb25seSBUW10sXG4gIGl0ZXJhdGVlOiAoaXRlbTogVCkgPT4gSyxcbik6IFRbXSB7XG4gIGNvbnN0IGFycjJLZXlzID0gbmV3IFNldChhcnIyLm1hcChpdGVyYXRlZSkpO1xuICByZXR1cm4gYXJyMS5maWx0ZXIoKGl0ZW0pID0+IGFycjJLZXlzLmhhcyhpdGVyYXRlZShpdGVtKSkpO1xufVxuLy8gbG9kYXNoIGRpZmZlcmVuY2VXaXRoIOuMgOyytFxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZlcmVuY2VXaXRoPFQ+KFxuICBhcnIxOiByZWFkb25seSBUW10sXG4gIGFycjI6IHJlYWRvbmx5IFRbXSxcbiAgY29tcGFyYXRvcjogKGE6IFQsIGI6IFQpID0+IGJvb2xlYW4sXG4pOiBUW10ge1xuICByZXR1cm4gYXJyMS5maWx0ZXIoKGl0ZW1BKSA9PiAhYXJyMi5zb21lKChpdGVtQikgPT4gY29tcGFyYXRvcihpdGVtQSwgaXRlbUIpKSk7XG59XG4iXSwibmFtZXMiOlsiZnMiLCJwYXRoIiwiY2x1c3RlciIsImZpbmRBcHBSb290UGF0aCIsImFwaVJvb3RQYXRoIiwiZmluZEFwaVJvb3RQYXRoIiwic3BsaXQiLCJzZXAiLCJzbGljZSIsImpvaW4iLCJ3b3Jrc3BhY2VQYXRoIiwicHJvY2VzcyIsImVudiIsIlBOUE1fU0NSSVBUX1NSQ19ESVIiLCJJTklUX0NXRCIsIm5vbk51bGxhYmxlIiwiUE5QTV9QQUNLQUdFX05BTUUiLCJjd2QiLCJiYXNlUGF0aCIsImZpbGVuYW1lIiwiZGlyIiwiZGlybmFtZSIsImluY2x1ZGVzIiwiZXhpc3RzU3luYyIsImxlbmd0aCIsIkVycm9yIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJleGhhdXN0aXZlIiwiX3BhcmFtIiwiYXNzZXJ0RXhpc3RzIiwibWVzc2FnZSIsImFzc2VydE5vdE51bGwiLCJhc3NlcnREZWZpbmVkIiwiY2h1bmsiLCJhcnJheSIsInNpemUiLCJNYXRoIiwiY2VpbCIsImludGVyc2VjdGlvbkJ5IiwiYXJyMSIsImFycjIiLCJpdGVyYXRlZSIsImFycjJLZXlzIiwiU2V0IiwibWFwIiwiZmlsdGVyIiwiaXRlbSIsImhhcyIsImRpZmZlcmVuY2VXaXRoIiwiY29tcGFyYXRvciIsIml0ZW1BIiwic29tZSIsIml0ZW1CIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxRQUFRLEtBQUs7QUFDcEIsT0FBT0MsVUFBVSxPQUFPO0FBQ3hCLFNBQVNDLE9BQU8sUUFBUSxVQUFVO0FBR2xDLE9BQU8sZUFBZUM7SUFDcEIsTUFBTUMsY0FBY0M7SUFDcEIsT0FBT0QsWUFBWUUsS0FBSyxDQUFDTCxLQUFLTSxHQUFHLEVBQUVDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR0MsSUFBSSxDQUFDUixLQUFLTSxHQUFHO0FBQy9EO0FBRUEsT0FBTyxTQUFTRjtJQUNkLGlEQUFpRDtJQUNqRCw4REFBOEQ7SUFDOUQsTUFBTUssZ0JBQWdCQyxRQUFRQyxHQUFHLENBQUNDLG1CQUFtQixJQUFJRixRQUFRQyxHQUFHLENBQUNFLFFBQVE7SUFDN0UsSUFBSUMsWUFBWUwsZ0JBQWdCO1FBQzlCLE9BQU9BO0lBQ1Q7SUFFQSxJQUFJSyxZQUFZSixRQUFRQyxHQUFHLENBQUNJLGlCQUFpQixHQUFHO1FBQzlDLE9BQU9MLFFBQVFNLEdBQUcsR0FBR1gsS0FBSyxDQUFDTCxLQUFLTSxHQUFHLEVBQUVFLElBQUksQ0FBQ1IsS0FBS00sR0FBRztJQUNwRDtJQUVBLE1BQU1XLFdBQVcsWUFBWUMsUUFBUTtJQUNyQyxJQUFJQyxNQUFNbkIsS0FBS29CLE9BQU8sQ0FBQ0g7SUFDdkIsSUFBSUUsSUFBSUUsUUFBUSxDQUFDLFlBQVk7UUFDM0JGLE1BQU1BLElBQUlkLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtJQUMvQjtJQUVBLEdBQUc7UUFDRCxJQUFJTixHQUFHdUIsVUFBVSxDQUFDdEIsS0FBS1EsSUFBSSxDQUFDVyxLQUFLLG1CQUFtQjtZQUNsRCxPQUFPQSxJQUFJZCxLQUFLLENBQUNMLEtBQUtNLEdBQUcsRUFBRUUsSUFBSSxDQUFDUixLQUFLTSxHQUFHO1FBQzFDO1FBQ0FhLE1BQU1BLElBQUlkLEtBQUssQ0FBQ0wsS0FBS00sR0FBRyxFQUFFQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUdDLElBQUksQ0FBQ1IsS0FBS00sR0FBRztJQUN0RCxRQUFTYSxJQUFJZCxLQUFLLENBQUNMLEtBQUtNLEdBQUcsRUFBRWlCLE1BQU0sR0FBRyxFQUFHO0lBQ3pDLE1BQU0sSUFBSUMsTUFBTTtBQUNsQjtBQUVBLE9BQU8sU0FBU1YsWUFBZVcsS0FBUTtJQUNyQyxPQUFPQSxVQUFVLFFBQVFBLFVBQVVDO0FBQ3JDO0FBRUEsT0FBTyxTQUFTQyxXQUFXQyxNQUFhO0lBQ3RDLE1BQU0sSUFBSUosTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUM5QjtBQUVBLFFBQVE7QUFDUixPQUFPLFNBQVNLLGFBQWdCSixLQUEyQixFQUFFSyxPQUFnQjtJQUMzRSxJQUFJTCxVQUFVLFFBQVFBLFVBQVVDLFdBQVc7UUFDekMsTUFBTSxJQUFJRixNQUFNTSxXQUFXO0lBQzdCO0lBQ0EsT0FBT0w7QUFDVDtBQUVBLFdBQVc7QUFDWCxPQUFPLFNBQVNNLGNBQWlCTixLQUFlLEVBQUVLLE9BQWdCO0lBQ2hFLElBQUlMLFVBQVUsTUFBTTtRQUNsQixNQUFNLElBQUlELE1BQU1NLFdBQVc7SUFDN0I7SUFDQSxPQUFPTDtBQUNUO0FBQ0EsZ0JBQWdCO0FBQ2hCLE9BQU8sU0FBU08sY0FBaUJQLEtBQW9CLEVBQUVLLE9BQWdCO0lBQ3JFLElBQUlMLFVBQVVDLFdBQVc7UUFDdkIsTUFBTSxJQUFJRixNQUFNTSxXQUFXO0lBQzdCO0lBQ0EsT0FBT0w7QUFDVDtBQUVBLHNDQUFzQztBQUN0QyxPQUFPLFNBQVNRLE1BQVNDLEtBQVUsRUFBRUMsSUFBWTtJQUMvQyxPQUFPbEMsUUFBUWlDLE9BQU9FLEtBQUtDLElBQUksQ0FBQ0gsTUFBTVgsTUFBTSxHQUFHWTtBQUNqRDtBQUNBLDJCQUEyQjtBQUMzQixPQUFPLFNBQVNHLGVBQ2RDLElBQWtCLEVBQ2xCQyxJQUFrQixFQUNsQkMsUUFBd0I7SUFFeEIsTUFBTUMsV0FBVyxJQUFJQyxJQUFJSCxLQUFLSSxHQUFHLENBQUNIO0lBQ2xDLE9BQU9GLEtBQUtNLE1BQU0sQ0FBQyxDQUFDQyxPQUFTSixTQUFTSyxHQUFHLENBQUNOLFNBQVNLO0FBQ3JEO0FBQ0EsMkJBQTJCO0FBQzNCLE9BQU8sU0FBU0UsZUFDZFQsSUFBa0IsRUFDbEJDLElBQWtCLEVBQ2xCUyxVQUFtQztJQUVuQyxPQUFPVixLQUFLTSxNQUFNLENBQUMsQ0FBQ0ssUUFBVSxDQUFDVixLQUFLVyxJQUFJLENBQUMsQ0FBQ0MsUUFBVUgsV0FBV0MsT0FBT0U7QUFDeEUifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod-error.d.ts","sourceRoot":"","sources":["../../src/utils/zod-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"zod-error.d.ts","sourceRoot":"","sources":["../../src/utils/zod-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,eAAe,EAAE,CAgBrE"}
|
package/dist/utils/zod-error.js
CHANGED
|
@@ -16,4 +16,4 @@ export function humanizeZodError(error) {
|
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy96b2QtZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG50eXBlIFZhbGlkYXRpb25FcnJvciA9IHtcbiAgcGF0aDogc3RyaW5nW107XG4gIG1lc3NhZ2U6IHN0cmluZztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBodW1hbml6ZVpvZEVycm9yKGVycm9yOiB6LlpvZEVycm9yKTogVmFsaWRhdGlvbkVycm9yW10ge1xuICByZXR1cm4gZXJyb3IuaXNzdWVzLm1hcCgoeyBwYXRoOiBvcmlnaW5QYXRoLCBtZXNzYWdlIH0pID0+IHtcbiAgICBjb25zdCBwYXRoID0gb3JpZ2luUGF0aC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzeW1ib2xcIikge1xuICAgICAgICByZXR1cm4gaXRlbS5kZXNjcmlwdGlvbiA/PyBpdGVtLnRvU3RyaW5nKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICByZXR1cm4gYFske2l0ZW19XWA7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgcGF0aCwgbWVzc2FnZTogbWVzc2FnZSB9O1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJodW1hbml6ZVpvZEVycm9yIiwiZXJyb3IiLCJpc3N1ZXMiLCJtYXAiLCJwYXRoIiwib3JpZ2luUGF0aCIsIm1lc3NhZ2UiLCJpdGVtIiwiZGVzY3JpcHRpb24iLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxTQUFTQSxpQkFBaUJDLEtBQWlCO0lBQ2hELE9BQU9BLE1BQU1DLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRUMsTUFBTUMsVUFBVSxFQUFFQyxPQUFPLEVBQUU7UUFDcEQsTUFBTUYsT0FBT0MsV0FBV0YsR0FBRyxDQUFDLENBQUNJO1lBQzNCLElBQUksT0FBT0EsU0FBUyxVQUFVO2dCQUM1QixPQUFPQSxLQUFLQyxXQUFXLElBQUlELEtBQUtFLFFBQVE7WUFDMUM7WUFFQSxJQUFJLE9BQU9GLFNBQVMsVUFBVTtnQkFDNUIsT0FBTyxDQUFDLENBQUMsRUFBRUEsS0FBSyxDQUFDLENBQUM7WUFDcEI7WUFFQSxPQUFPQTtRQUNUO1FBRUEsT0FBTztZQUFFSDtZQUFNRSxTQUFTQTtRQUFRO0lBQ2xDO0FBQ0YifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sonamu",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Sonamu — TypeScript Fullstack API Framework",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -13,15 +13,21 @@
|
|
|
13
13
|
"import": "./dist/index.js",
|
|
14
14
|
"types": "./dist/index.d.ts"
|
|
15
15
|
},
|
|
16
|
+
"./ai": {
|
|
17
|
+
"import": "./dist/ai/index.js",
|
|
18
|
+
"types": "./dist/ai/index.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"./ai/providers/rtzr": {
|
|
21
|
+
"import": "./dist/ai/providers/rtzr/index.js",
|
|
22
|
+
"types": "./dist/ai/providers/rtzr/index.d.ts"
|
|
23
|
+
},
|
|
24
|
+
"./loader-register": {
|
|
25
|
+
"default": "./dist/bin/loader-register.js"
|
|
26
|
+
},
|
|
16
27
|
"./hot-hook-register": {
|
|
17
28
|
"default": "./dist/bin/hot-hook-register.js"
|
|
18
29
|
}
|
|
19
30
|
},
|
|
20
|
-
"scripts": {
|
|
21
|
-
"dev": "nodemon exec",
|
|
22
|
-
"build": "rm -rf dist && swc src -d dist --strip-leading-paths && tsc --emitDeclarationOnly",
|
|
23
|
-
"publish": "yarn build && yarn npm publish"
|
|
24
|
-
},
|
|
25
31
|
"license": "MIT",
|
|
26
32
|
"author": {
|
|
27
33
|
"name": "Minsang Kim",
|
|
@@ -32,71 +38,90 @@
|
|
|
32
38
|
"type": "git",
|
|
33
39
|
"url": "https://github.com/ping-alive/sonamu.git"
|
|
34
40
|
},
|
|
35
|
-
"bin": "./
|
|
41
|
+
"bin": "./bin/cli.js",
|
|
36
42
|
"files": [
|
|
37
43
|
"dist",
|
|
38
|
-
"src"
|
|
44
|
+
"src",
|
|
45
|
+
"bin",
|
|
46
|
+
".swcrc.project-default"
|
|
39
47
|
],
|
|
40
48
|
"dependencies": {
|
|
41
49
|
"@aws-sdk/client-s3": "^3.921.0",
|
|
42
50
|
"@aws-sdk/s3-request-presigner": "^3.921.0",
|
|
51
|
+
"@biomejs/js-api": "^4.0.0",
|
|
52
|
+
"@biomejs/wasm-nodejs": "^2.3.7",
|
|
43
53
|
"@fastify/cors": "^8.1.0",
|
|
44
54
|
"@fastify/formbody": "^7.1.0",
|
|
45
55
|
"@fastify/multipart": "^8",
|
|
46
56
|
"@fastify/passport": "^2.2.0",
|
|
47
|
-
"@fastify/secure-session": "^
|
|
57
|
+
"@fastify/secure-session": "^7",
|
|
48
58
|
"@fastify/static": "^7",
|
|
49
59
|
"@swc/core": "^1.13.19",
|
|
50
60
|
"chalk": "^4.1.2",
|
|
51
61
|
"chokidar": "^4.0.3",
|
|
52
|
-
"date-fns": "^4.1.0",
|
|
53
62
|
"date-fns-tz": "^3.2.0",
|
|
54
63
|
"dotenv": "^16.0.2",
|
|
55
64
|
"fast-deep-equal": "^3.1.3",
|
|
56
65
|
"fastify": "^4.23.2",
|
|
57
66
|
"fastify-qs": "^4.0.0",
|
|
58
67
|
"fastify-sse-v2": "^4.2.1",
|
|
59
|
-
"flydrive": "^1.3.0",
|
|
60
68
|
"inflection": "^1.13.2",
|
|
61
69
|
"knex": "^3.1.0",
|
|
62
|
-
"lodash": "^4.17.21",
|
|
63
|
-
"lodash-es": "^4.17.21",
|
|
64
|
-
"luxon": "^3.0.3",
|
|
65
70
|
"mime-types": "^3.0.1",
|
|
66
71
|
"minimatch": "^10.0.3",
|
|
67
|
-
"mysql2": "^3.6.1",
|
|
68
72
|
"node-sql-parser": "^5.2.0",
|
|
69
|
-
"
|
|
73
|
+
"pg": "^8.16.3",
|
|
70
74
|
"prompts": "^2.4.2",
|
|
71
75
|
"qs": "^6.11.0",
|
|
76
|
+
"radashi": "^12.2.0",
|
|
72
77
|
"tsicli": "^1.0.5",
|
|
73
|
-
"
|
|
78
|
+
"vitest": "^4.0.10",
|
|
79
|
+
"zod": "^4.1.12",
|
|
80
|
+
"@sonamu-kit/hot-runner": "^0.1.1",
|
|
81
|
+
"@sonamu-kit/loader": "^2.1.3",
|
|
82
|
+
"@sonamu-kit/hot-hook": "^0.4.1"
|
|
74
83
|
},
|
|
75
84
|
"devDependencies": {
|
|
76
|
-
"@
|
|
77
|
-
"@sonamu-kit/ui": "^0.6.0",
|
|
85
|
+
"@biomejs/biome": "^2.3.7",
|
|
78
86
|
"@swc/cli": "^0.7.8",
|
|
79
87
|
"@types/inflection": "^1.13.0",
|
|
80
|
-
"@types/lodash": "^4.14.198",
|
|
81
|
-
"@types/lodash-es": "^4.17.12",
|
|
82
|
-
"@types/luxon": "^3.0.1",
|
|
83
88
|
"@types/mime-types": "^3.0.1",
|
|
84
89
|
"@types/node": "^22",
|
|
85
|
-
"@types/
|
|
90
|
+
"@types/pg": "^8.15.6",
|
|
86
91
|
"@types/prompts": "^2.0.14",
|
|
87
92
|
"@types/qs": "^6.9.7",
|
|
88
|
-
"
|
|
93
|
+
"nodemon": "3.1.10",
|
|
89
94
|
"tsup": "^8.1.0",
|
|
90
|
-
"typescript": "^5.
|
|
95
|
+
"typescript": "^5.9.3"
|
|
91
96
|
},
|
|
92
97
|
"peerDependencies": {
|
|
93
|
-
"@sonamu-kit/hot-runner": "^0.1.1",
|
|
94
|
-
"@sonamu-kit/loader": "^2.1.2",
|
|
95
98
|
"@swc/cli": "^0.7.8",
|
|
96
99
|
"@swc/core": "^1.13.5",
|
|
97
100
|
"fastify": "^4.23.2",
|
|
98
101
|
"knex": "^3.1.0",
|
|
99
|
-
"
|
|
100
|
-
"
|
|
102
|
+
"typescript": "^5.9.3",
|
|
103
|
+
"@ai-sdk/openai": "3.0.0-beta.75",
|
|
104
|
+
"@ai-sdk/provider": "3.0.0-beta.22",
|
|
105
|
+
"@ai-sdk/provider-utils": "4.0.0-beta.40",
|
|
106
|
+
"ai": "^6.0.0-beta.99"
|
|
107
|
+
},
|
|
108
|
+
"peerDependenciesMeta": {
|
|
109
|
+
"@ai-sdk/openai": {
|
|
110
|
+
"optional": true
|
|
111
|
+
},
|
|
112
|
+
"@ai-sdk/provider": {
|
|
113
|
+
"optional": true
|
|
114
|
+
},
|
|
115
|
+
"@ai-sdk/provider-utils": {
|
|
116
|
+
"optional": true
|
|
117
|
+
},
|
|
118
|
+
"ai": {
|
|
119
|
+
"optional": true
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"scripts": {
|
|
123
|
+
"dev": "nodemon exec",
|
|
124
|
+
"build": "rm -rf dist && swc src -d dist --strip-leading-paths && tsc --emitDeclarationOnly",
|
|
125
|
+
"test:type": "vitest --typecheck test-d.ts"
|
|
101
126
|
}
|
|
102
127
|
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { Tool, ToolCallOptions } from "@ai-sdk/provider-utils";
|
|
2
|
+
import { tool } from "@ai-sdk/provider-utils";
|
|
3
|
+
import type { Agent, ToolSet } from "ai";
|
|
4
|
+
import { ToolLoopAgent } from "ai";
|
|
5
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
6
|
+
import inflection from "inflection";
|
|
7
|
+
import type { AgentConfig, RegisteredToolDefinition, ToolDecoratorOptions } from "./types";
|
|
8
|
+
|
|
9
|
+
const toolDefinitions: RegisteredToolDefinition[] = [];
|
|
10
|
+
|
|
11
|
+
// TODO(Haze, 251205): 텍스트가 아닌 structured output일 경우에 대한 지원이 필요
|
|
12
|
+
export class BaseAgentClass<TStore> {
|
|
13
|
+
private _als = new AsyncLocalStorage<TStore>();
|
|
14
|
+
|
|
15
|
+
public get store() {
|
|
16
|
+
return this._als.getStore();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// NOTE: [schemaSymbol] 추론 불가로 인해 캐스팅
|
|
20
|
+
protected get toolSet() {
|
|
21
|
+
const targeted = toolDefinitions.filter((def) => def.from === this.constructor.name);
|
|
22
|
+
return targeted.reduce<Record<string, Tool>>((acc, def) => {
|
|
23
|
+
acc[def.name] = tool({
|
|
24
|
+
description: def.description,
|
|
25
|
+
inputSchema: def.schema.input,
|
|
26
|
+
outputSchema: def.schema.output,
|
|
27
|
+
needsApproval: def.needsApproval ?? false,
|
|
28
|
+
toModelOutput: def.toModelOutput,
|
|
29
|
+
providerOptions: def.providerOptions,
|
|
30
|
+
execute: (input: unknown, options: ToolCallOptions) => {
|
|
31
|
+
const bound = def.method.bind(this);
|
|
32
|
+
return bound.length >= 2 ? bound(input, options) : bound(input);
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
return acc;
|
|
36
|
+
}, {}) as ToolSet;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public get tools(): ToolSet {
|
|
40
|
+
return this.toolSet;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public use<TReturn>(
|
|
44
|
+
config: AgentConfig,
|
|
45
|
+
initialStatus: TStore,
|
|
46
|
+
callback: (agent: Agent<never, ToolSet>) => Promise<TReturn>,
|
|
47
|
+
) {
|
|
48
|
+
const agent = new ToolLoopAgent({
|
|
49
|
+
...config,
|
|
50
|
+
tools: this.tools,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
return this._als.run(initialStatus, () => callback(agent));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function tools<INPUT, OUTPUT = unknown>(options: ToolDecoratorOptions<INPUT, OUTPUT>) {
|
|
58
|
+
const { name, description, schema, needsApproval, toModelOutput, providerOptions } = options;
|
|
59
|
+
return (target: BaseAgentClass<unknown>, propertyKey: string, descriptor: PropertyDescriptor) => {
|
|
60
|
+
if (!(target instanceof BaseAgentClass)) {
|
|
61
|
+
throw new Error("Target must be a subclass of BaseAgentClass");
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const method = descriptor.value;
|
|
65
|
+
const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
|
|
66
|
+
const methodName = propertyKey;
|
|
67
|
+
|
|
68
|
+
const defaultPath =
|
|
69
|
+
modelName !== undefined
|
|
70
|
+
? `${inflection.camelize(
|
|
71
|
+
(modelName ?? "").replace(/Model$/, "").replace(/Frame$/, ""),
|
|
72
|
+
true,
|
|
73
|
+
)}.${inflection.camelize(methodName, true)}`
|
|
74
|
+
: inflection.camelize(methodName, true);
|
|
75
|
+
|
|
76
|
+
toolDefinitions.push({
|
|
77
|
+
name: name ?? defaultPath,
|
|
78
|
+
description,
|
|
79
|
+
schema,
|
|
80
|
+
needsApproval,
|
|
81
|
+
toModelOutput,
|
|
82
|
+
providerOptions,
|
|
83
|
+
method,
|
|
84
|
+
from: target.constructor.name,
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
}
|