sonamu 0.8.26 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +60 -13
- package/dist/_virtual/rolldown_runtime.js +39 -0
- package/dist/ai/agents/agent.d.ts +3 -3
- package/dist/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/agents/agent.js +76 -73
- package/dist/ai/agents/index.js +3 -3
- package/dist/ai/agents/types.d.ts +3 -3
- package/dist/ai/agents/types.d.ts.map +1 -1
- package/dist/ai/agents/types.js +1 -3
- package/dist/ai/index.js +3 -2
- package/dist/ai/providers/rtzr/api.js +25 -25
- package/dist/ai/providers/rtzr/error.js +25 -26
- package/dist/ai/providers/rtzr/index.js +5 -5
- package/dist/ai/providers/rtzr/model.d.ts +1 -1
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/model.js +117 -133
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/options.js +35 -41
- package/dist/ai/providers/rtzr/provider.d.ts +1 -1
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/provider.js +53 -51
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/utils.js +84 -84
- package/dist/api/base-frame.d.ts +2 -2
- package/dist/api/base-frame.d.ts.map +1 -1
- package/dist/api/base-frame.js +29 -19
- package/dist/api/caster.d.ts +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +51 -61
- package/dist/api/code-converters.d.ts +4 -3
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +226 -249
- package/dist/api/config.d.ts +17 -17
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +37 -30
- package/dist/api/context.d.ts +10 -10
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +8 -2
- package/dist/api/decorators.d.ts +8 -8
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +245 -268
- package/dist/api/index.js +39 -7
- package/dist/api/secret.js +22 -15
- package/dist/api/sonamu.d.ts +15 -15
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +1012 -1131
- package/dist/api/validator.js +88 -79
- package/dist/auth/auth-generator.d.ts.map +1 -1
- package/dist/auth/auth-generator.js +203 -200
- package/dist/auth/better-auth-entities.d.ts +2 -2
- package/dist/auth/better-auth-entities.d.ts.map +1 -1
- package/dist/auth/better-auth-entities.js +369 -429
- package/dist/auth/index.js +21 -6
- package/dist/auth/knex-adapter.d.ts +2 -2
- package/dist/auth/knex-adapter.d.ts.map +1 -1
- package/dist/auth/knex-adapter.js +153 -157
- package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/admin.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/admin.js +58 -56
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/anonymous.js +20 -20
- package/dist/auth/plugins/entity-definitions/api-key.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/api-key.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/api-key.js +185 -196
- package/dist/auth/plugins/entity-definitions/index.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/index.js +26 -29
- package/dist/auth/plugins/entity-definitions/jwt.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/jwt.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/jwt.js +62 -64
- package/dist/auth/plugins/entity-definitions/organization.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/organization.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/organization.js +362 -421
- package/dist/auth/plugins/entity-definitions/passkey.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/passkey.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/passkey.js +115 -126
- package/dist/auth/plugins/entity-definitions/phone-number.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/phone-number.js +31 -40
- package/dist/auth/plugins/entity-definitions/sso.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/sso.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/sso.js +94 -107
- package/dist/auth/plugins/entity-definitions/two-factor.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/two-factor.js +78 -92
- package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/types.js +1 -10
- package/dist/auth/plugins/entity-definitions/username.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/username.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/username.js +31 -40
- package/dist/auth/plugins/index.js +12 -3
- package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +28 -29
- package/dist/auth/plugins/wrappers/anonymous.d.ts +2 -1
- package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/anonymous.js +23 -22
- package/dist/auth/plugins/wrappers/api-key.d.ts +2 -1
- package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/api-key.js +39 -34
- package/dist/auth/plugins/wrappers/index.js +11 -11
- package/dist/auth/plugins/wrappers/jwt.d.ts +2 -1
- package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/jwt.js +31 -26
- package/dist/auth/plugins/wrappers/organization.d.ts +2 -1
- package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/organization.js +65 -62
- package/dist/auth/plugins/wrappers/passkey.d.ts +2 -1
- package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/passkey.js +33 -28
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +26 -23
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.js +37 -31
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +31 -28
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +23 -23
- package/dist/bin/build-config.js +31 -31
- package/dist/bin/cli.js +1063 -1204
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +266 -259
- package/dist/bin/hmr-hook-register.d.ts.map +1 -1
- package/dist/bin/hmr-hook-register.js +19 -18
- package/dist/bin/test-command.d.ts.map +1 -1
- package/dist/bin/test-command.js +180 -177
- package/dist/bin/ts-loader-register.js +13 -6
- package/dist/bin/ts-loader-registration.d.ts.map +1 -1
- package/dist/bin/ts-loader-registration.js +28 -38
- package/dist/cache/cache-manager.d.ts +1 -1
- package/dist/cache/cache-manager.d.ts.map +1 -1
- package/dist/cache/cache-manager.js +20 -15
- package/dist/cache/decorator.d.ts +1 -1
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/decorator.js +84 -76
- package/dist/cache/drivers.js +21 -34
- package/dist/cache/index.js +10 -7
- package/dist/cache/types.d.ts +2 -2
- package/dist/cache/types.d.ts.map +1 -1
- package/dist/cache/types.js +1 -6
- package/dist/cache-control/cache-control.d.ts +2 -2
- package/dist/cache-control/cache-control.d.ts.map +1 -1
- package/dist/cache-control/cache-control.js +106 -122
- package/dist/cache-control/types.d.ts +2 -2
- package/dist/cache-control/types.d.ts.map +1 -1
- package/dist/cache-control/types.js +1 -19
- package/dist/compress/compress.d.ts +1 -1
- package/dist/compress/compress.d.ts.map +1 -1
- package/dist/compress/compress.js +58 -56
- package/dist/compress/index.js +7 -2
- package/dist/compress/types.js +1 -11
- package/dist/cone/cone-generator.d.ts +1 -1
- package/dist/cone/cone-generator.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +216 -219
- package/dist/database/_batch_update.d.ts +1 -1
- package/dist/database/_batch_update.d.ts.map +1 -1
- package/dist/database/_batch_update.js +107 -102
- package/dist/database/base-model.d.ts +8 -9
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +371 -392
- package/dist/database/base-model.types.d.ts +5 -5
- package/dist/database/base-model.types.d.ts.map +1 -1
- package/dist/database/base-model.types.js +1 -20
- package/dist/database/db.d.ts +5 -2
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +185 -171
- package/dist/database/knex.d.ts +1 -1
- package/dist/database/knex.d.ts.map +1 -1
- package/dist/database/knex.js +48 -42
- package/dist/database/puri-subset.types.d.ts +6 -7
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-subset.types.js +1 -16
- package/dist/database/puri-wrapper.d.ts +6 -6
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +99 -101
- package/dist/database/puri.d.ts +4 -5
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +1021 -1227
- package/dist/database/puri.types.d.ts +6 -6
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +15 -6
- package/dist/database/transaction-context.d.ts +2 -2
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/transaction-context.js +22 -13
- package/dist/database/upsert-builder.d.ts +3 -3
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +405 -465
- package/dist/dict/en.js +72 -74
- package/dist/dict/index.js +13 -13
- package/dist/dict/ko.js +72 -74
- package/dist/dict/rc-keys.js +150 -168
- package/dist/dict/sd.d.ts +3 -1
- package/dist/dict/sd.d.ts.map +1 -1
- package/dist/dict/sd.js +54 -40
- package/dist/dict/sonamu-dictionary.d.ts +1 -1
- package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.js +887 -955
- package/dist/dict/types.js +1 -7
- package/dist/dict/utils.js +26 -24
- package/dist/entity/entity-manager.d.ts +9 -9
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +226 -223
- package/dist/entity/entity-template-cone.d.ts +1 -1
- package/dist/entity/entity-template-cone.d.ts.map +1 -1
- package/dist/entity/entity-template-cone.js +152 -151
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +952 -1089
- package/dist/exceptions/error-handler.d.ts +1 -1
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +32 -27
- package/dist/exceptions/so-exceptions.d.ts +1 -1
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.js +61 -68
- package/dist/filter/index.js +9 -3
- package/dist/filter/types.js +92 -88
- package/dist/filter/utils.d.ts +1 -1
- package/dist/filter/utils.d.ts.map +1 -1
- package/dist/filter/utils.js +147 -161
- package/dist/index.js +87 -40
- package/dist/logger/category.d.ts.map +1 -1
- package/dist/logger/category.js +30 -29
- package/dist/logger/configure.d.ts.map +1 -1
- package/dist/logger/configure.js +83 -107
- package/dist/migration/code-generation.d.ts +2 -2
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +1385 -1578
- package/dist/migration/migration-set.d.ts +1 -1
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +177 -227
- package/dist/migration/migrator.d.ts +4 -3
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +340 -345
- package/dist/migration/postgresql-schema-reader.d.ts +2 -2
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/postgresql-schema-reader.js +506 -564
- package/dist/migration/slack-confirm.d.ts +2 -2
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +205 -193
- package/dist/migration/types.d.ts +2 -2
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/migration/types.js +1 -3
- package/dist/naite/messaging-types.d.ts +1 -0
- package/dist/naite/messaging-types.d.ts.map +1 -1
- package/dist/naite/messaging-types.js +1 -7
- package/dist/naite/naite-reporter.d.ts +2 -2
- package/dist/naite/naite-reporter.d.ts.map +1 -1
- package/dist/naite/naite-reporter.js +127 -120
- package/dist/naite/naite.d.ts +3 -2
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +266 -300
- package/dist/ssr/index.d.ts +2 -2
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +13 -3
- package/dist/ssr/registry.d.ts +1 -1
- package/dist/ssr/registry.d.ts.map +1 -1
- package/dist/ssr/registry.js +45 -37
- package/dist/ssr/renderer.d.ts +4 -4
- package/dist/ssr/renderer.d.ts.map +1 -1
- package/dist/ssr/renderer.js +84 -91
- package/dist/ssr/types.d.ts +2 -2
- package/dist/ssr/types.d.ts.map +1 -1
- package/dist/ssr/types.js +1 -3
- package/dist/storage/base-file.js +54 -41
- package/dist/storage/buffered-file.d.ts +2 -2
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.js +51 -44
- package/dist/storage/drivers.d.ts +2 -2
- package/dist/storage/drivers.d.ts.map +1 -1
- package/dist/storage/drivers.js +12 -7
- package/dist/storage/index.js +14 -7
- package/dist/storage/s3-driver.d.ts +2 -2
- package/dist/storage/s3-driver.d.ts.map +1 -1
- package/dist/storage/s3-driver.js +52 -48
- package/dist/storage/storage-manager.d.ts +2 -2
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +33 -25
- package/dist/storage/types.d.ts +2 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +1 -5
- package/dist/storage/uploaded-file.d.ts +1 -1
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/storage/uploaded-file.js +45 -35
- package/dist/stream/index.js +7 -2
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +72 -67
- package/dist/syncer/api-parser.d.ts +1 -1
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +224 -245
- package/dist/syncer/checksum.d.ts +1 -1
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +86 -72
- package/dist/syncer/code-generator.d.ts +2 -2
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +154 -160
- package/dist/syncer/entity-operations.d.ts +1 -1
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +63 -54
- package/dist/syncer/file-patterns.d.ts +1 -1
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +38 -38
- package/dist/syncer/index.js +19 -8
- package/dist/syncer/module-loader.d.ts +5 -5
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +83 -78
- package/dist/syncer/syncer-actions.d.ts +2 -2
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +76 -91
- package/dist/syncer/syncer.d.ts +7 -6
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +426 -492
- package/dist/tasks/decorator.d.ts +3 -3
- package/dist/tasks/decorator.d.ts.map +1 -1
- package/dist/tasks/decorator.js +32 -28
- package/dist/tasks/step-wrapper.d.ts +1 -1
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.js +42 -41
- package/dist/tasks/workflow-manager.d.ts +2 -2
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +192 -221
- package/dist/template/entity-converter.d.ts +1 -1
- package/dist/template/entity-converter.d.ts.map +1 -1
- package/dist/template/entity-converter.js +103 -103
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +163 -163
- package/dist/template/implementations/entity.template.d.ts +1 -1
- package/dist/template/implementations/entity.template.d.ts.map +1 -1
- package/dist/template/implementations/entity.template.js +76 -85
- package/dist/template/implementations/entry-server.template.d.ts +1 -1
- package/dist/template/implementations/entry-server.template.d.ts.map +1 -1
- package/dist/template/implementations/entry-server.template.js +32 -27
- package/dist/template/implementations/generated.template.d.ts +1 -1
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +254 -275
- package/dist/template/implementations/generated_http.template.d.ts +2 -2
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +114 -133
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +249 -275
- package/dist/template/implementations/init_types.template.d.ts +1 -1
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.js +40 -34
- package/dist/template/implementations/model.template.d.ts +1 -1
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +56 -53
- package/dist/template/implementations/model_test.template.d.ts +1 -1
- package/dist/template/implementations/model_test.template.d.ts.map +1 -1
- package/dist/template/implementations/model_test.template.js +32 -24
- package/dist/template/implementations/queries.template.d.ts +1 -1
- package/dist/template/implementations/queries.template.d.ts.map +1 -1
- package/dist/template/implementations/queries.template.js +84 -89
- package/dist/template/implementations/sd.template.d.ts +1 -1
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +137 -144
- package/dist/template/implementations/services.template.d.ts +1 -1
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +164 -189
- package/dist/template/implementations/view_form.template.d.ts +1 -1
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +258 -285
- package/dist/template/implementations/view_id_all_select.template.d.ts +1 -1
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_all_select.template.js +31 -25
- package/dist/template/implementations/view_list.template.d.ts +1 -1
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +304 -355
- package/dist/template/implementations/view_search_input.template.d.ts +1 -1
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +31 -27
- package/dist/template/index.js +21 -7
- package/dist/template/template-manager.d.ts +1 -1
- package/dist/template/template-manager.d.ts.map +1 -1
- package/dist/template/template-manager.js +132 -123
- package/dist/template/template-types.js +8 -6
- package/dist/template/template.d.ts +2 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +73 -68
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +603 -657
- package/dist/testing/_relation-graph.d.ts +1 -1
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/_relation-graph.js +93 -88
- package/dist/testing/bootstrap.d.ts +22 -13
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +114 -114
- package/dist/testing/data-explorer.d.ts +3 -3
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +237 -265
- package/dist/testing/dev-test-routes.d.ts +2 -2
- package/dist/testing/dev-test-routes.d.ts.map +1 -1
- package/dist/testing/dev-test-routes.js +258 -249
- package/dist/testing/dev-vitest-manager.d.ts +1 -1
- package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
- package/dist/testing/dev-vitest-manager.js +514 -539
- package/dist/testing/faker-mappings.js +422 -420
- package/dist/testing/fixture-generator.d.ts +3 -3
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +1216 -1346
- package/dist/testing/fixture-loader.js +26 -25
- package/dist/testing/fixture-manager.d.ts +3 -3
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +706 -776
- package/dist/testing/global-setup.js +53 -49
- package/dist/testing/index.js +19 -11
- package/dist/testing/naite-vitest-reporter.js +18 -13
- package/dist/testing/parallel-db-manager.d.ts +1 -1
- package/dist/testing/parallel-db-manager.d.ts.map +1 -1
- package/dist/testing/parallel-db-manager.js +63 -78
- package/dist/testing/vitest-helpers.d.ts +1 -1
- package/dist/testing/vitest-helpers.d.ts.map +1 -1
- package/dist/testing/vitest-helpers.js +37 -33
- package/dist/types/types.d.ts +28 -28
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +764 -890
- package/dist/ui/ai-api.d.ts +1 -1
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +52 -42
- package/dist/ui/ai-client.d.ts +1 -2
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +353 -388
- package/dist/ui/api.d.ts +1 -1
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +903 -1145
- package/dist/ui/cdd-service.d.ts +1 -1
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +406 -407
- package/dist/ui/cdd-types.js +1 -3
- package/dist/ui-web/assets/index-C-Zz-wYg.css +1 -0
- package/dist/ui-web/assets/index-DejDON8K.js +238 -0
- package/dist/ui-web/index.html +3 -3
- package/dist/utils/async-utils.js +57 -45
- package/dist/utils/console-util.d.ts.map +1 -1
- package/dist/utils/console-util.js +104 -87
- package/dist/utils/controller.js +26 -19
- package/dist/utils/esm-utils.js +49 -38
- package/dist/utils/formatter.d.ts +1 -2
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +89 -115
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +68 -65
- package/dist/utils/lodash-able.js +11 -4
- package/dist/utils/model.d.ts +1 -1
- package/dist/utils/model.d.ts.map +1 -1
- package/dist/utils/model.js +21 -19
- package/dist/utils/object-utils.js +148 -186
- package/dist/utils/path-utils.js +67 -57
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +37 -31
- package/dist/utils/sql-parser.d.ts +1 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +40 -40
- package/dist/utils/type-utils.js +44 -43
- package/dist/utils/utils.d.ts +2 -3
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +81 -93
- package/dist/utils/zod-error.d.ts +1 -1
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +24 -17
- package/dist/vector/chunking.d.ts +1 -1
- package/dist/vector/chunking.d.ts.map +1 -1
- package/dist/vector/chunking.js +100 -94
- package/dist/vector/config.d.ts +1 -1
- package/dist/vector/config.d.ts.map +1 -1
- package/dist/vector/config.js +76 -78
- package/dist/vector/embedding.d.ts +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/dist/vector/embedding.js +128 -125
- package/dist/vector/index.js +5 -5
- package/dist/vector/types.js +1 -5
- package/package.json +31 -36
- package/src/ai/agents/agent.ts +12 -5
- package/src/ai/agents/types.ts +5 -5
- package/src/ai/providers/rtzr/model.ts +8 -10
- package/src/ai/providers/rtzr/options.ts +2 -1
- package/src/ai/providers/rtzr/provider.ts +5 -3
- package/src/ai/providers/rtzr/utils.ts +2 -7
- package/src/api/__tests__/config.test.ts +15 -8
- package/src/api/base-frame.ts +5 -3
- package/src/api/caster.ts +7 -6
- package/src/api/code-converters.ts +23 -26
- package/src/api/config.ts +23 -17
- package/src/api/context.ts +18 -11
- package/src/api/decorators.ts +17 -18
- package/src/api/sonamu.ts +44 -49
- package/src/auth/auth-generator.ts +4 -6
- package/src/auth/better-auth-entities.ts +3 -2
- package/src/auth/knex-adapter.ts +6 -5
- package/src/auth/plugins/entity-definitions/admin.ts +1 -1
- package/src/auth/plugins/entity-definitions/anonymous.ts +1 -1
- package/src/auth/plugins/entity-definitions/api-key.ts +1 -1
- package/src/auth/plugins/entity-definitions/index.ts +1 -1
- package/src/auth/plugins/entity-definitions/jwt.ts +1 -1
- package/src/auth/plugins/entity-definitions/organization.ts +1 -1
- package/src/auth/plugins/entity-definitions/passkey.ts +1 -1
- package/src/auth/plugins/entity-definitions/phone-number.ts +1 -1
- package/src/auth/plugins/entity-definitions/sso.ts +1 -1
- package/src/auth/plugins/entity-definitions/two-factor.ts +1 -1
- package/src/auth/plugins/entity-definitions/types.ts +1 -1
- package/src/auth/plugins/entity-definitions/username.ts +1 -1
- package/src/auth/plugins/wrappers/admin.ts +3 -1
- package/src/auth/plugins/wrappers/anonymous.ts +3 -1
- package/src/auth/plugins/wrappers/api-key.ts +3 -1
- package/src/auth/plugins/wrappers/jwt.ts +3 -1
- package/src/auth/plugins/wrappers/organization.ts +3 -1
- package/src/auth/plugins/wrappers/passkey.ts +3 -1
- package/src/auth/plugins/wrappers/phone-number.ts +3 -1
- package/src/auth/plugins/wrappers/sso.ts +2 -1
- package/src/auth/plugins/wrappers/two-factor.ts +3 -1
- package/src/auth/plugins/wrappers/username.ts +3 -1
- package/src/bin/__tests__/ts-loader-register.test.ts +7 -12
- package/src/bin/build-config.ts +3 -3
- package/src/bin/cli.ts +27 -25
- package/src/bin/fixture.ts +4 -2
- package/src/bin/hmr-hook-register.ts +1 -0
- package/src/bin/test-command.ts +4 -2
- package/src/bin/ts-loader-registration.ts +6 -22
- package/src/cache/cache-manager.ts +2 -1
- package/src/cache/decorator.ts +2 -2
- package/src/cache/types.ts +3 -3
- package/src/cache-control/cache-control.ts +3 -2
- package/src/cache-control/types.ts +2 -2
- package/src/compress/compress.ts +1 -1
- package/src/cone/cone-generator.ts +5 -3
- package/src/database/_batch_update.ts +1 -1
- package/src/database/base-model.ts +20 -14
- package/src/database/base-model.types.ts +12 -11
- package/src/database/db.ts +56 -21
- package/src/database/knex.ts +2 -2
- package/src/database/puri-subset.test-d.ts +33 -32
- package/src/database/puri-subset.types.ts +6 -7
- package/src/database/puri-wrapper.ts +29 -26
- package/src/database/puri.ts +36 -34
- package/src/database/puri.types.test-d.ts +6 -5
- package/src/database/puri.types.ts +9 -12
- package/src/database/transaction-context.ts +2 -2
- package/src/database/upsert-builder.ts +17 -10
- package/src/dict/sd.ts +17 -4
- package/src/dict/sonamu-dictionary.ts +23 -17
- package/src/entity/entity-manager.ts +9 -7
- package/src/entity/entity-template-cone.ts +10 -3
- package/src/entity/entity.ts +20 -16
- package/src/exceptions/error-handler.ts +2 -1
- package/src/exceptions/so-exceptions.ts +1 -1
- package/src/filter/utils.ts +3 -2
- package/src/logger/category.ts +1 -0
- package/src/logger/configure.ts +5 -5
- package/src/migration/__tests__/code-generation.search-text.test.ts +2 -3
- package/src/migration/code-generation.ts +26 -25
- package/src/migration/migration-set.ts +16 -18
- package/src/migration/migrator.ts +38 -33
- package/src/migration/postgresql-schema-reader.ts +12 -12
- package/src/migration/slack-confirm.ts +5 -4
- package/src/migration/types.ts +2 -2
- package/src/naite/messaging-types.ts +1 -1
- package/src/naite/naite-reporter.ts +5 -3
- package/src/naite/naite.ts +12 -7
- package/src/shared/app.shared.ts.txt +2 -2
- package/src/shared/web.shared.ts.txt +2 -2
- package/src/skills/AGENTS.md +19 -18
- package/src/skills/commands/sonamu-skills.md +9 -9
- package/src/skills/sonamu/SKILL.md +111 -104
- package/src/skills/sonamu/ai-agents.md +27 -26
- package/src/skills/sonamu/api.md +81 -69
- package/src/skills/sonamu/auth-migration.md +13 -27
- package/src/skills/sonamu/auth-plugins.md +41 -31
- package/src/skills/sonamu/auth.md +30 -24
- package/src/skills/sonamu/cdd.md +26 -17
- package/src/skills/sonamu/cone.md +50 -50
- package/src/skills/sonamu/config.md +74 -51
- package/src/skills/sonamu/create-sonamu.md +31 -19
- package/src/skills/sonamu/database.md +43 -26
- package/src/skills/sonamu/entity-basic.md +61 -61
- package/src/skills/sonamu/entity-relations.md +84 -80
- package/src/skills/sonamu/entity-validation-checklist.md +19 -15
- package/src/skills/sonamu/fixture-cli.md +52 -30
- package/src/skills/sonamu/framework-change.md +9 -7
- package/src/skills/sonamu/frontend.md +64 -82
- package/src/skills/sonamu/i18n.md +45 -37
- package/src/skills/sonamu/migration.md +54 -31
- package/src/skills/sonamu/model.md +98 -66
- package/src/skills/sonamu/naite.md +34 -32
- package/src/skills/sonamu/project-init.md +28 -8
- package/src/skills/sonamu/puri.md +82 -91
- package/src/skills/sonamu/scaffolding.md +44 -32
- package/src/skills/sonamu/skill-contribution.md +50 -45
- package/src/skills/sonamu/subset.md +13 -13
- package/src/skills/sonamu/tasks.md +73 -58
- package/src/skills/sonamu/testing-devrunner.md +56 -36
- package/src/skills/sonamu/testing.md +23 -58
- package/src/skills/sonamu/upsert.md +32 -31
- package/src/skills/sonamu/vector.md +37 -36
- package/src/ssr/index.ts +2 -12
- package/src/ssr/registry.ts +1 -1
- package/src/ssr/renderer.ts +7 -5
- package/src/ssr/types.ts +2 -2
- package/src/storage/buffered-file.ts +4 -2
- package/src/storage/drivers.ts +3 -2
- package/src/storage/s3-driver.ts +7 -4
- package/src/storage/storage-manager.ts +3 -2
- package/src/storage/types.ts +3 -2
- package/src/storage/uploaded-file.ts +1 -1
- package/src/stream/sse.ts +2 -2
- package/src/syncer/api-parser.ts +8 -5
- package/src/syncer/checksum.ts +9 -5
- package/src/syncer/code-generator.ts +16 -8
- package/src/syncer/entity-operations.ts +5 -3
- package/src/syncer/file-patterns.ts +2 -1
- package/src/syncer/module-loader.ts +9 -6
- package/src/syncer/syncer-actions.ts +5 -3
- package/src/syncer/syncer.ts +18 -24
- package/src/tasks/decorator.ts +10 -8
- package/src/tasks/step-wrapper.ts +1 -1
- package/src/tasks/workflow-manager.ts +18 -15
- package/src/template/__tests__/generated.template.search-text.test.ts +1 -0
- package/src/template/entity-converter.ts +4 -2
- package/src/template/generated.template.test-d.ts +2 -1
- package/src/template/helpers.ts +5 -2
- package/src/template/implementations/entity.template.ts +9 -8
- package/src/template/implementations/entry-server.template.ts +1 -1
- package/src/template/implementations/generated.template.ts +21 -29
- package/src/template/implementations/generated_http.template.ts +9 -6
- package/src/template/implementations/generated_sso.template.ts +6 -4
- package/src/template/implementations/init_types.template.ts +3 -2
- package/src/template/implementations/model.template.ts +4 -2
- package/src/template/implementations/model_test.template.ts +3 -2
- package/src/template/implementations/queries.template.ts +6 -14
- package/src/template/implementations/sd.template.ts +4 -2
- package/src/template/implementations/services.template.ts +7 -11
- package/src/template/implementations/view_form.template.ts +5 -3
- package/src/template/implementations/view_id_all_select.template.ts +3 -2
- package/src/template/implementations/view_list.template.ts +7 -5
- package/src/template/implementations/view_search_input.template.ts +3 -2
- package/src/template/template-manager.ts +4 -3
- package/src/template/template.ts +4 -3
- package/src/template/zod-converter.ts +10 -7
- package/src/testing/__tests__/dev-test-routes.test.ts +3 -2
- package/src/testing/__tests__/dev-vitest-manager.test.ts +1 -0
- package/src/testing/_relation-graph.ts +2 -2
- package/src/testing/bootstrap.ts +55 -27
- package/src/testing/data-explorer.ts +5 -4
- package/src/testing/dev-test-routes.ts +8 -5
- package/src/testing/dev-vitest-manager.ts +13 -12
- package/src/testing/fixture-generator.ts +11 -17
- package/src/testing/fixture-manager.ts +21 -17
- package/src/testing/parallel-db-manager.ts +2 -1
- package/src/testing/vitest-helpers.ts +2 -1
- package/src/types/__tests__/entity-json-schema-search-text.test.ts +1 -0
- package/src/types/types.ts +8 -8
- package/src/typings/knex.d.ts +4 -4
- package/src/ui/ai-api.ts +5 -3
- package/src/ui/ai-client.ts +6 -5
- package/src/ui/api.ts +25 -23
- package/src/ui/cdd-service.ts +12 -11
- package/src/utils/console-util.ts +3 -1
- package/src/utils/formatter.ts +94 -102
- package/src/utils/fs-utils.ts +2 -1
- package/src/utils/model.ts +2 -2
- package/src/utils/object-utils.ts +3 -3
- package/src/utils/process-utils.ts +2 -1
- package/src/utils/sql-parser.ts +10 -1
- package/src/utils/type-utils.ts +3 -3
- package/src/utils/utils.ts +9 -7
- package/src/utils/zod-error.ts +1 -1
- package/src/vector/chunking.ts +1 -1
- package/src/vector/config.ts +1 -1
- package/src/vector/embedding.ts +11 -9
- package/tsdown.api.config.ts +50 -0
- package/.swcrc.project-default +0 -18
- package/dist/api/__tests__/config.test.js +0 -189
- package/dist/bin/__tests__/test-command.test.js +0 -112
- package/dist/bin/__tests__/ts-loader-register.test.js +0 -45
- package/dist/database/puri-subset.test-d.js +0 -89
- package/dist/database/puri.types.test-d.js +0 -129
- package/dist/migration/__tests__/code-generation.search-text.test.js +0 -435
- package/dist/template/__tests__/generated.template.search-text.test.js +0 -99
- package/dist/template/generated.template.test-d.js +0 -24
- package/dist/testing/__tests__/dev-test-routes.test.js +0 -144
- package/dist/testing/__tests__/dev-vitest-manager.test.js +0 -152
- package/dist/types/__tests__/entity-json-schema-search-text.test.js +0 -256
- package/dist/typings/knex.d.js +0 -3
- package/dist/ui-web/assets/index-CKo0Z2Iu.css +0 -1
- package/dist/ui-web/assets/index-DK-2aacv.js +0 -257
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmr-hook-register.d.ts","sourceRoot":"","sources":["../../src/bin/hmr-hook-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"hmr-hook-register.d.ts","sourceRoot":"","sources":["../../src/bin/hmr-hook-register.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,EAAE,CAAC"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
//#region src/bin/hmr-hook-register.ts
|
|
1
2
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
console.log("🔥 HMR-hook initialized");
|
|
3
|
+
* hmr-hook 초기화하는 모듈입니다.
|
|
4
|
+
*
|
|
5
|
+
* 이 파일은 --import 플래그로 프로세스 시작 시 로드되어야 합니다.
|
|
6
|
+
*
|
|
7
|
+
* 환경변수:
|
|
8
|
+
* - API_ROOT_PATH: 사용자 프로젝트의 API 루트 경로
|
|
9
|
+
* - HOT: 'yes'일 때만 hmr-hook 활성화
|
|
10
|
+
*/
|
|
11
|
+
if (process.env.HOT === "yes" && process.env.API_ROOT_PATH) {
|
|
12
|
+
const { hot } = await import("@sonamu-kit/hmr-hook");
|
|
13
|
+
await hot.init({
|
|
14
|
+
rootDirectory: process.env.API_ROOT_PATH,
|
|
15
|
+
boundaries: [`./src/**/*.ts`]
|
|
16
|
+
});
|
|
17
|
+
console.log("🔥 HMR-hook initialized");
|
|
18
18
|
}
|
|
19
|
-
export { };
|
|
20
19
|
|
|
21
|
-
//#
|
|
20
|
+
//#endregion
|
|
21
|
+
export { };
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG1yLWhvb2stcmVnaXN0ZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9obXItaG9vay1yZWdpc3Rlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGhtci1ob29rIOy0iOq4sO2ZlO2VmOuKlCDrqqjrk4jsnoXri4jri6QuXG4gKlxuICog7J20IO2MjOydvOydgCAtLWltcG9ydCDtlIzrnpjqt7jroZwg7ZSE66Gc7IS47IqkIOyLnOyekSDsi5wg66Gc65Oc65CY7Ja07JW8IO2VqeuLiOuLpC5cbiAqXG4gKiDtmZjqsr3rs4DsiJg6XG4gKiAtIEFQSV9ST09UX1BBVEg6IOyCrOyaqeyekCDtlITroZzsoJ3tirjsnZggQVBJIOujqO2KuCDqsr3roZxcbiAqIC0gSE9UOiAneWVzJ+ydvCDrlYzrp4wgaG1yLWhvb2sg7Zmc7ISx7ZmUXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52LkhPVCA9PT0gXCJ5ZXNcIiAmJiBwcm9jZXNzLmVudi5BUElfUk9PVF9QQVRIKSB7XG4gIGNvbnN0IHsgaG90IH0gPSBhd2FpdCBpbXBvcnQoXCJAc29uYW11LWtpdC9obXItaG9va1wiKTtcblxuICBhd2FpdCBob3QuaW5pdCh7XG4gICAgcm9vdERpcmVjdG9yeTogcHJvY2Vzcy5lbnYuQVBJX1JPT1RfUEFUSCwgLy8g7J20IOy5nOq1rOqwgCDtlITroZzsoJ3tirggQVBJIOqyveuhnOuhnCDsnpgg7ISk7KCV65CY7Ja07JW8IOyVhOuemCDrsJTsmrTrjZTrpqzqsIAg7J6R64+Z7ZWp64uI64ukLlxuICAgIGJvdW5kYXJpZXM6IFtgLi9zcmMvKiovKi50c2BdLCAvLyDtlITroZzsoJ3tirjsnZgg7J20IOy5nOq1rOuTpOydtCDrsJTsmrTrjZTrpqzqsIAg65Cp64uI64ukLlxuICB9KTtcblxuICBjb25zb2xlLmxvZyhcIvCflKUgSE1SLWhvb2sgaW5pdGlhbGl6ZWRcIik7XG59XG5cbi8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZVxuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBVUEsSUFBSSxRQUFRLElBQUksUUFBUSxTQUFTLFFBQVEsSUFBSSxlQUFlO0NBQzFELE1BQU0sRUFBRSxRQUFRLE1BQU0sT0FBTztBQUU3QixPQUFNLElBQUksS0FBSztFQUNiLGVBQWUsUUFBUSxJQUFJO0VBQzNCLFlBQVksQ0FBQyxnQkFBZ0I7RUFDOUIsQ0FBQztBQUVGLFNBQVEsSUFBSSwwQkFBMEIifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-command.d.ts","sourceRoot":"","sources":["../../src/bin/test-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-command.d.ts","sourceRoot":"","sources":["../../src/bin/test-command.ts"],"names":[],"mappings":"AAoCA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmIjD"}
|
package/dist/bin/test-command.js
CHANGED
|
@@ -1,190 +1,193 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { findApiRootPath, init_utils } from "../utils/utils.js";
|
|
2
|
+
import { init_config, loadConfig } from "../api/config.js";
|
|
2
3
|
import chalk from "chalk";
|
|
3
|
-
import
|
|
4
|
-
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
|
|
6
|
+
//#region src/bin/test-command.ts
|
|
7
|
+
init_config();
|
|
8
|
+
init_utils();
|
|
5
9
|
async function loadTestConfig() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
const prevVitest = process.env.VITEST;
|
|
11
|
+
process.env.VITEST = "true";
|
|
12
|
+
try {
|
|
13
|
+
const apiRootPath = findApiRootPath();
|
|
14
|
+
return await loadConfig(apiRootPath);
|
|
15
|
+
} finally {
|
|
16
|
+
if (prevVitest === undefined) {
|
|
17
|
+
delete process.env.VITEST;
|
|
18
|
+
} else {
|
|
19
|
+
process.env.VITEST = prevVitest;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
18
22
|
}
|
|
19
23
|
function resolveTestBaseUrl(config) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const port = config.server.listen?.port ?? 3e3;
|
|
25
|
+
const host = config.server.listen?.host ?? "localhost";
|
|
26
|
+
const routePrefix = config.test?.devRunner?.routePrefix ?? "/__test__";
|
|
27
|
+
return {
|
|
28
|
+
host,
|
|
29
|
+
port,
|
|
30
|
+
routePrefix,
|
|
31
|
+
baseUrl: `http://${host}:${port}${routePrefix}`
|
|
32
|
+
};
|
|
29
33
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
throw err;
|
|
132
|
-
}
|
|
34
|
+
async function testCommand() {
|
|
35
|
+
const args = process.argv.slice(3);
|
|
36
|
+
const config = await loadTestConfig();
|
|
37
|
+
const files = [];
|
|
38
|
+
let pattern;
|
|
39
|
+
let showTraces = false;
|
|
40
|
+
let showStatus = false;
|
|
41
|
+
for (let i = 0; i < args.length; i++) {
|
|
42
|
+
const arg = args[i];
|
|
43
|
+
if (arg === "--pattern" || arg === "-p") {
|
|
44
|
+
pattern = args[++i];
|
|
45
|
+
} else if (arg === "--traces" || arg === "-t") {
|
|
46
|
+
showTraces = true;
|
|
47
|
+
} else if (arg === "--status" || arg === "-s") {
|
|
48
|
+
showStatus = true;
|
|
49
|
+
} else if (!arg.startsWith("-")) {
|
|
50
|
+
files.push(arg);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (showStatus) {
|
|
54
|
+
return testStatusCommand(config);
|
|
55
|
+
}
|
|
56
|
+
if (!config.test?.devRunner?.enabled) {
|
|
57
|
+
console.error(chalk.red("devRunner가 활성화되지 않았습니다. sonamu.config.ts에서 test.devRunner.enabled: true 설정이 필요합니다"));
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
const { baseUrl } = resolveTestBaseUrl(config);
|
|
61
|
+
const url = `${baseUrl}/run`;
|
|
62
|
+
const payload = {};
|
|
63
|
+
if (files.length > 0) {
|
|
64
|
+
payload.files = files;
|
|
65
|
+
}
|
|
66
|
+
if (pattern) {
|
|
67
|
+
payload.pattern = pattern;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const response = await fetch(url, {
|
|
71
|
+
method: "POST",
|
|
72
|
+
headers: { "Content-Type": "application/json" },
|
|
73
|
+
body: JSON.stringify(payload)
|
|
74
|
+
});
|
|
75
|
+
if (response.status === 404) {
|
|
76
|
+
console.error(chalk.red("devRunner가 활성화되지 않았습니다. sonamu.config.ts에서 test.devRunner.enabled: true 설정이 필요합니다"));
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
if (response.status === 500) {
|
|
80
|
+
const errorBody = await response.json();
|
|
81
|
+
console.error(chalk.red("Vitest 인스턴스가 아직 준비되지 않았습니다"));
|
|
82
|
+
if (errorBody.error) {
|
|
83
|
+
console.error(chalk.red(errorBody.error));
|
|
84
|
+
}
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
console.error(chalk.red(`예상하지 못한 응답: ${response.status}`));
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
const result = await response.json();
|
|
92
|
+
const { passed, failed: failedCount, total, durationMs } = result.summary;
|
|
93
|
+
const passedStr = chalk.green(`${passed} passed`);
|
|
94
|
+
const failedStr = failedCount > 0 ? chalk.red(`${failedCount} failed`) : `${failedCount} failed`;
|
|
95
|
+
console.log(`\nTests: ${passedStr}, ${failedStr}, ${total} total`);
|
|
96
|
+
console.log(chalk.dim(`Duration: ${durationMs}ms`));
|
|
97
|
+
const failedTests = collectFailedFromResults(result.results);
|
|
98
|
+
if (failedTests.length > 0) {
|
|
99
|
+
console.log(chalk.red.bold("\nFailed tests:"));
|
|
100
|
+
for (const f of failedTests) {
|
|
101
|
+
console.log(` ${chalk.red("x")} ${f.fullName} ${chalk.dim(`(${f.file})`)}`);
|
|
102
|
+
if (f.error) {
|
|
103
|
+
console.log(` ${chalk.red(f.error.message)}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (showTraces) {
|
|
108
|
+
const testsWithTraces = collectTracesFromResults(result.results);
|
|
109
|
+
if (testsWithTraces.length > 0) {
|
|
110
|
+
console.log(chalk.cyan.bold("\nTraces:"));
|
|
111
|
+
for (const { testName, file, traces } of testsWithTraces) {
|
|
112
|
+
console.log(`\n ${chalk.bold(testName)}`);
|
|
113
|
+
console.log(` ${chalk.dim(path.basename(file))}`);
|
|
114
|
+
for (const trace of traces) {
|
|
115
|
+
const loc = `${path.basename(trace.filePath)}:${trace.lineNumber}`;
|
|
116
|
+
const valueStr = typeof trace.value === "string" ? trace.value : JSON.stringify(trace.value, null, 2) ?? "undefined";
|
|
117
|
+
console.log(`\n ${chalk.yellow(`[${trace.key}]`)} ${chalk.dim(loc)}`);
|
|
118
|
+
const indented = valueStr.split("\n").join("\n ");
|
|
119
|
+
console.log(` ${indented}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (!result.ok) {
|
|
125
|
+
process.exit(1);
|
|
126
|
+
}
|
|
127
|
+
} catch (err) {
|
|
128
|
+
if (err instanceof TypeError && err.cause) {
|
|
129
|
+
console.error(chalk.red("dev 서버에 연결할 수 없습니다. sonamu dev가 실행 중인지 확인하세요"));
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
throw err;
|
|
133
|
+
}
|
|
133
134
|
}
|
|
134
135
|
function collectFailedFromResults(nodes) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
136
|
+
const result = [];
|
|
137
|
+
for (const node of nodes) {
|
|
138
|
+
if (node.kind === "test" && node.state === "failed") {
|
|
139
|
+
result.push(node);
|
|
140
|
+
}
|
|
141
|
+
if (node.children.length > 0) {
|
|
142
|
+
result.push(...collectFailedFromResults(node.children));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
145
146
|
}
|
|
146
147
|
function collectTracesFromResults(nodes) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
148
|
+
const result = [];
|
|
149
|
+
for (const node of nodes) {
|
|
150
|
+
if (node.kind === "test" && node.traces.length > 0) {
|
|
151
|
+
result.push({
|
|
152
|
+
testName: node.fullName,
|
|
153
|
+
file: node.file,
|
|
154
|
+
traces: node.traces
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
if (node.children.length > 0) {
|
|
158
|
+
result.push(...collectTracesFromResults(node.children));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return result;
|
|
161
162
|
}
|
|
162
163
|
async function testStatusCommand(config) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
164
|
+
if (!config.test?.devRunner?.enabled) {
|
|
165
|
+
console.error(chalk.red("devRunner가 활성화되지 않았습니다. sonamu.config.ts에서 test.devRunner.enabled: true 설정이 필요합니다"));
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
const { baseUrl } = resolveTestBaseUrl(config);
|
|
169
|
+
const url = `${baseUrl}/status`;
|
|
170
|
+
try {
|
|
171
|
+
const response = await fetch(url);
|
|
172
|
+
if (!response.ok) {
|
|
173
|
+
console.error(chalk.red(`예상하지 못한 응답: ${response.status}`));
|
|
174
|
+
process.exit(1);
|
|
175
|
+
}
|
|
176
|
+
const status = await response.json();
|
|
177
|
+
console.log(chalk.bold("DevRunner 상태:"));
|
|
178
|
+
console.log(` ready: ${status.ready ? chalk.green("true") : chalk.red("false")}`);
|
|
179
|
+
console.log(` running: ${status.running ? chalk.yellow("true") : "false"}`);
|
|
180
|
+
console.log(` lastRunAt: ${status.lastRunAt ?? chalk.dim("없음")}`);
|
|
181
|
+
console.log(` sseAvailable: ${status.sseAvailable ? chalk.green("true") : "false"}`);
|
|
182
|
+
} catch (err) {
|
|
183
|
+
if (err instanceof TypeError && err.cause) {
|
|
184
|
+
console.error(chalk.red("dev 서버에 연결할 수 없습니다. sonamu dev가 실행 중인지 확인하세요"));
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
throw err;
|
|
188
|
+
}
|
|
188
189
|
}
|
|
189
190
|
|
|
190
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdGVzdC1jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB0eXBlIHsgU29uYW11Q29uZmlnIH0gZnJvbSBcIi4uL2FwaS9jb25maWdcIjtcbmltcG9ydCB7IGxvYWRDb25maWcgfSBmcm9tIFwiLi4vYXBpL2NvbmZpZ1wiO1xuaW1wb3J0IHR5cGUgeyBSdW5SZXN1bHQsIFRlc3RDYXNlUmVzdWx0IH0gZnJvbSBcIi4uL3Rlc3RpbmdcIjtcbmltcG9ydCB7IGZpbmRBcGlSb290UGF0aCB9IGZyb20gXCIuLi91dGlscy91dGlsc1wiO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkVGVzdENvbmZpZygpOiBQcm9taXNlPFNvbmFtdUNvbmZpZz4ge1xuICBjb25zdCBwcmV2Vml0ZXN0ID0gcHJvY2Vzcy5lbnYuVklURVNUO1xuICBwcm9jZXNzLmVudi5WSVRFU1QgPSBcInRydWVcIjtcbiAgdHJ5IHtcbiAgICBjb25zdCBhcGlSb290UGF0aCA9IGZpbmRBcGlSb290UGF0aCgpO1xuICAgIHJldHVybiBhd2FpdCBsb2FkQ29uZmlnKGFwaVJvb3RQYXRoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAocHJldlZpdGVzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuVklURVNUO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5WSVRFU1QgPSBwcmV2Vml0ZXN0O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlVGVzdEJhc2VVcmwoY29uZmlnOiBTb25hbXVDb25maWcpOiB7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICByb3V0ZVByZWZpeDogc3RyaW5nO1xuICBiYXNlVXJsOiBzdHJpbmc7XG59IHtcbiAgY29uc3QgcG9ydCA9IGNvbmZpZy5zZXJ2ZXIubGlzdGVuPy5wb3J0ID8/IDMwMDA7XG4gIGNvbnN0IGhvc3QgPSBjb25maWcuc2VydmVyLmxpc3Rlbj8uaG9zdCA/PyBcImxvY2FsaG9zdFwiO1xuICBjb25zdCByb3V0ZVByZWZpeCA9IGNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LnJvdXRlUHJlZml4ID8/IFwiL19fdGVzdF9fXCI7XG4gIHJldHVybiB7IGhvc3QsIHBvcnQsIHJvdXRlUHJlZml4LCBiYXNlVXJsOiBgaHR0cDovLyR7aG9zdH06JHtwb3J0fSR7cm91dGVQcmVmaXh9YCB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdENvbW1hbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMyk7XG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZFRlc3RDb25maWcoKTtcblxuICAvLyBwcm9jZXNzLmFyZ3Yg7YyM7IuxOiBzb25hbXUgdGVzdCBbZmlsZS4uLl0gLS1wYXR0ZXJuIFwi7J2066aEXCIgLS10cmFjZXMgLS1zdGF0dXNcbiAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBwYXR0ZXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBzaG93VHJhY2VzID0gZmFsc2U7XG4gIGxldCBzaG93U3RhdHVzID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09PSBcIi0tcGF0dGVyblwiIHx8IGFyZyA9PT0gXCItcFwiKSB7XG4gICAgICBwYXR0ZXJuID0gYXJnc1srK2ldO1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSBcIi0tdHJhY2VzXCIgfHwgYXJnID09PSBcIi10XCIpIHtcbiAgICAgIHNob3dUcmFjZXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSBcIi0tc3RhdHVzXCIgfHwgYXJnID09PSBcIi1zXCIpIHtcbiAgICAgIHNob3dTdGF0dXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWFyZy5zdGFydHNXaXRoKFwiLVwiKSkge1xuICAgICAgZmlsZXMucHVzaChhcmcpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzaG93U3RhdHVzKSB7XG4gICAgcmV0dXJuIHRlc3RTdGF0dXNDb21tYW5kKGNvbmZpZyk7XG4gIH1cblxuICBpZiAoIWNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LmVuYWJsZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgY2hhbGsucmVkKFxuICAgICAgICBcImRldlJ1bm5lcuqwgCDtmZzshLHtmZTrkJjsp4Ag7JWK7JWY7Iq164uI64ukLiBzb25hbXUuY29uZmlnLnRz7JeQ7IScIHRlc3QuZGV2UnVubmVyLmVuYWJsZWQ6IHRydWUg7ISk7KCV7J20IO2VhOyalO2VqeuLiOuLpFwiLFxuICAgICAgKSxcbiAgICApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGNvbnN0IHsgYmFzZVVybCB9ID0gcmVzb2x2ZVRlc3RCYXNlVXJsKGNvbmZpZyk7XG4gIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3J1bmA7XG5cbiAgY29uc3QgcGF5bG9hZDogeyBmaWxlcz86IHN0cmluZ1tdOyBwYXR0ZXJuPzogc3RyaW5nIH0gPSB7fTtcbiAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICBwYXlsb2FkLmZpbGVzID0gZmlsZXM7XG4gIH1cbiAgaWYgKHBhdHRlcm4pIHtcbiAgICBwYXlsb2FkLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXG4gICAgICAgICAgXCJkZXZSdW5uZXLqsIAg7Zmc7ISx7ZmU65CY7KeAIOyViuyVmOyKteuLiOuLpC4gc29uYW11LmNvbmZpZy50c+yXkOyEnCB0ZXN0LmRldlJ1bm5lci5lbmFibGVkOiB0cnVlIOyEpOygleydtCDtlYTsmpTtlanri4jri6RcIixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNTAwKSB7XG4gICAgICBjb25zdCBlcnJvckJvZHkgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7IGVycm9yPzogc3RyaW5nIH07XG4gICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChcIlZpdGVzdCDsnbjsiqTthLTsiqTqsIAg7JWE7KeBIOykgOu5hOuQmOyngCDslYrslZjsirXri4jri6RcIikpO1xuICAgICAgaWYgKGVycm9yQm9keS5lcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvckJvZHkuZXJyb3IpKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChg7JiI7IOB7ZWY7KeAIOuqu+2VnCDsnZHri7U6ICR7cmVzcG9uc2Uuc3RhdHVzfWApKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyBSdW5SZXN1bHQ7XG5cbiAgICBjb25zdCB7IHBhc3NlZCwgZmFpbGVkOiBmYWlsZWRDb3VudCwgdG90YWwsIGR1cmF0aW9uTXMgfSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgIGNvbnN0IHBhc3NlZFN0ciA9IGNoYWxrLmdyZWVuKGAke3Bhc3NlZH0gcGFzc2VkYCk7XG4gICAgY29uc3QgZmFpbGVkU3RyID1cbiAgICAgIGZhaWxlZENvdW50ID4gMCA/IGNoYWxrLnJlZChgJHtmYWlsZWRDb3VudH0gZmFpbGVkYCkgOiBgJHtmYWlsZWRDb3VudH0gZmFpbGVkYDtcbiAgICBjb25zb2xlLmxvZyhgXFxuVGVzdHM6ICR7cGFzc2VkU3RyfSwgJHtmYWlsZWRTdHJ9LCAke3RvdGFsfSB0b3RhbGApO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmRpbShgRHVyYXRpb246ICR7ZHVyYXRpb25Nc31tc2ApKTtcblxuICAgIGNvbnN0IGZhaWxlZFRlc3RzID0gY29sbGVjdEZhaWxlZEZyb21SZXN1bHRzKHJlc3VsdC5yZXN1bHRzKTtcbiAgICBpZiAoZmFpbGVkVGVzdHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkLmJvbGQoXCJcXG5GYWlsZWQgdGVzdHM6XCIpKTtcbiAgICAgIGZvciAoY29uc3QgZiBvZiBmYWlsZWRUZXN0cykge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAke2NoYWxrLnJlZChcInhcIil9ICR7Zi5mdWxsTmFtZX0gJHtjaGFsay5kaW0oYCgke2YuZmlsZX0pYCl9YCk7XG4gICAgICAgIGlmIChmLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgICAke2NoYWxrLnJlZChmLmVycm9yLm1lc3NhZ2UpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNob3dUcmFjZXMpIHtcbiAgICAgIGNvbnN0IHRlc3RzV2l0aFRyYWNlcyA9IGNvbGxlY3RUcmFjZXNGcm9tUmVzdWx0cyhyZXN1bHQucmVzdWx0cyk7XG4gICAgICBpZiAodGVzdHNXaXRoVHJhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbi5ib2xkKFwiXFxuVHJhY2VzOlwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgeyB0ZXN0TmFtZSwgZmlsZSwgdHJhY2VzIH0gb2YgdGVzdHNXaXRoVHJhY2VzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYFxcbiAgJHtjaGFsay5ib2xkKHRlc3ROYW1lKX1gKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAke2NoYWxrLmRpbShwYXRoLmJhc2VuYW1lKGZpbGUpKX1gKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRyYWNlIG9mIHRyYWNlcykge1xuICAgICAgICAgICAgY29uc3QgbG9jID0gYCR7cGF0aC5iYXNlbmFtZSh0cmFjZS5maWxlUGF0aCl9OiR7dHJhY2UubGluZU51bWJlcn1gO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTdHIgPVxuICAgICAgICAgICAgICB0eXBlb2YgdHJhY2UudmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICA/IHRyYWNlLnZhbHVlXG4gICAgICAgICAgICAgICAgOiAoSlNPTi5zdHJpbmdpZnkodHJhY2UudmFsdWUsIG51bGwsIDIpID8/IFwidW5kZWZpbmVkXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFxcbiAgICAke2NoYWxrLnllbGxvdyhgWyR7dHJhY2Uua2V5fV1gKX0gJHtjaGFsay5kaW0obG9jKX1gKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGVudGVkID0gdmFsdWVTdHIuc3BsaXQoXCJcXG5cIikuam9pbihcIlxcbiAgICBcIik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICR7aW5kZW50ZWR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZXJyLmNhdXNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXCJkZXYg7ISc67KE7JeQIOyXsOqysO2VoCDsiJgg7JeG7Iq164uI64ukLiBzb25hbXUgZGV26rCAIOyLpO2WiSDspJHsnbjsp4Ag7ZmV7J247ZWY7IS47JqUXCIpLFxuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RGYWlsZWRGcm9tUmVzdWx0cyhub2RlczogVGVzdENhc2VSZXN1bHRbXSk6IFRlc3RDYXNlUmVzdWx0W10ge1xuICBjb25zdCByZXN1bHQ6IFRlc3RDYXNlUmVzdWx0W10gPSBbXTtcbiAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgaWYgKG5vZGUua2luZCA9PT0gXCJ0ZXN0XCIgJiYgbm9kZS5zdGF0ZSA9PT0gXCJmYWlsZWRcIikge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLmNvbGxlY3RGYWlsZWRGcm9tUmVzdWx0cyhub2RlLmNoaWxkcmVuKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RUcmFjZXNGcm9tUmVzdWx0cyhcbiAgbm9kZXM6IFRlc3RDYXNlUmVzdWx0W10sXG4pOiB7IHRlc3ROYW1lOiBzdHJpbmc7IGZpbGU6IHN0cmluZzsgdHJhY2VzOiBUZXN0Q2FzZVJlc3VsdFtcInRyYWNlc1wiXSB9W10ge1xuICBjb25zdCByZXN1bHQ6IHsgdGVzdE5hbWU6IHN0cmluZzsgZmlsZTogc3RyaW5nOyB0cmFjZXM6IFRlc3RDYXNlUmVzdWx0W1widHJhY2VzXCJdIH1bXSA9IFtdO1xuICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICBpZiAobm9kZS5raW5kID09PSBcInRlc3RcIiAmJiBub2RlLnRyYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHQucHVzaCh7IHRlc3ROYW1lOiBub2RlLmZ1bGxOYW1lLCBmaWxlOiBub2RlLmZpbGUsIHRyYWNlczogbm9kZS50cmFjZXMgfSk7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLmNvbGxlY3RUcmFjZXNGcm9tUmVzdWx0cyhub2RlLmNoaWxkcmVuKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRlc3RTdGF0dXNDb21tYW5kKGNvbmZpZzogU29uYW11Q29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghY29uZmlnLnRlc3Q/LmRldlJ1bm5lcj8uZW5hYmxlZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBjaGFsay5yZWQoXG4gICAgICAgIFwiZGV2UnVubmVy6rCAIO2ZnOyEse2ZlOuQmOyngCDslYrslZjsirXri4jri6QuIHNvbmFtdS5jb25maWcudHPsl5DshJwgdGVzdC5kZXZSdW5uZXIuZW5hYmxlZDogdHJ1ZSDshKTsoJXsnbQg7ZWE7JqU7ZWp64uI64ukXCIsXG4gICAgICApLFxuICAgICk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgY29uc3QgeyBiYXNlVXJsIH0gPSByZXNvbHZlVGVzdEJhc2VVcmwoY29uZmlnKTtcbiAgY29uc3QgdXJsID0gYCR7YmFzZVVybH0vc3RhdHVzYDtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGDsmIjsg4HtlZjsp4Ag66q77ZWcIOydkeuLtTogJHtyZXNwb25zZS5zdGF0dXN9YCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1cyA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIHtcbiAgICAgIHJlYWR5OiBib29sZWFuO1xuICAgICAgcnVubmluZzogYm9vbGVhbjtcbiAgICAgIGxhc3RSdW5BdDogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHNzZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgICB9O1xuXG4gICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIkRldlJ1bm5lciDsg4Htg5w6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICByZWFkeTogICAgICAgICR7c3RhdHVzLnJlYWR5ID8gY2hhbGsuZ3JlZW4oXCJ0cnVlXCIpIDogY2hhbGsucmVkKFwiZmFsc2VcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgcnVubmluZzogICAgICAke3N0YXR1cy5ydW5uaW5nID8gY2hhbGsueWVsbG93KFwidHJ1ZVwiKSA6IFwiZmFsc2VcIn1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBsYXN0UnVuQXQ6ICAgICR7c3RhdHVzLmxhc3RSdW5BdCA/PyBjaGFsay5kaW0oXCLsl4bsnYxcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgc3NlQXZhaWxhYmxlOiAke3N0YXR1cy5zc2VBdmFpbGFibGUgPyBjaGFsay5ncmVlbihcInRydWVcIikgOiBcImZhbHNlXCJ9YCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZXJyLmNhdXNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXCJkZXYg7ISc67KE7JeQIOyXsOqysO2VoCDsiJgg7JeG7Iq164uI64ukLiBzb25hbXUgZGV26rCAIOyLpO2WiSDspJHsnbjsp4Ag7ZmV7J247ZWY7IS47JqUXCIpLFxuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG4iXSwibmFtZXMiOlsicGF0aCIsImNoYWxrIiwibG9hZENvbmZpZyIsImZpbmRBcGlSb290UGF0aCIsImxvYWRUZXN0Q29uZmlnIiwicHJldlZpdGVzdCIsInByb2Nlc3MiLCJlbnYiLCJWSVRFU1QiLCJhcGlSb290UGF0aCIsInVuZGVmaW5lZCIsInJlc29sdmVUZXN0QmFzZVVybCIsImNvbmZpZyIsInBvcnQiLCJzZXJ2ZXIiLCJsaXN0ZW4iLCJob3N0Iiwicm91dGVQcmVmaXgiLCJ0ZXN0IiwiZGV2UnVubmVyIiwiYmFzZVVybCIsInRlc3RDb21tYW5kIiwiYXJncyIsImFyZ3YiLCJzbGljZSIsImZpbGVzIiwicGF0dGVybiIsInNob3dUcmFjZXMiLCJzaG93U3RhdHVzIiwiaSIsImxlbmd0aCIsImFyZyIsInN0YXJ0c1dpdGgiLCJwdXNoIiwidGVzdFN0YXR1c0NvbW1hbmQiLCJlbmFibGVkIiwiY29uc29sZSIsImVycm9yIiwicmVkIiwiZXhpdCIsInVybCIsInBheWxvYWQiLCJyZXNwb25zZSIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwiZXJyb3JCb2R5IiwianNvbiIsIm9rIiwicmVzdWx0IiwicGFzc2VkIiwiZmFpbGVkIiwiZmFpbGVkQ291bnQiLCJ0b3RhbCIsImR1cmF0aW9uTXMiLCJzdW1tYXJ5IiwicGFzc2VkU3RyIiwiZ3JlZW4iLCJmYWlsZWRTdHIiLCJsb2ciLCJkaW0iLCJmYWlsZWRUZXN0cyIsImNvbGxlY3RGYWlsZWRGcm9tUmVzdWx0cyIsInJlc3VsdHMiLCJib2xkIiwiZiIsImZ1bGxOYW1lIiwiZmlsZSIsIm1lc3NhZ2UiLCJ0ZXN0c1dpdGhUcmFjZXMiLCJjb2xsZWN0VHJhY2VzRnJvbVJlc3VsdHMiLCJjeWFuIiwidGVzdE5hbWUiLCJ0cmFjZXMiLCJiYXNlbmFtZSIsInRyYWNlIiwibG9jIiwiZmlsZVBhdGgiLCJsaW5lTnVtYmVyIiwidmFsdWVTdHIiLCJ2YWx1ZSIsInllbGxvdyIsImtleSIsImluZGVudGVkIiwic3BsaXQiLCJqb2luIiwiZXJyIiwiVHlwZUVycm9yIiwiY2F1c2UiLCJub2RlcyIsIm5vZGUiLCJraW5kIiwic3RhdGUiLCJjaGlsZHJlbiIsInJlYWR5IiwicnVubmluZyIsImxhc3RSdW5BdCIsInNzZUF2YWlsYWJsZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsVUFBVSxZQUFZO0FBQzdCLE9BQU9DLFdBQVcsUUFBUTtBQUUxQixTQUFTQyxVQUFVLFFBQVEsbUJBQWdCO0FBRTNDLFNBQVNDLGVBQWUsUUFBUSxvQkFBaUI7QUFFakQsZUFBZUM7SUFDYixNQUFNQyxhQUFhQyxRQUFRQyxHQUFHLENBQUNDLE1BQU07SUFDckNGLFFBQVFDLEdBQUcsQ0FBQ0MsTUFBTSxHQUFHO0lBQ3JCLElBQUk7UUFDRixNQUFNQyxjQUFjTjtRQUNwQixPQUFPLE1BQU1ELFdBQVdPO0lBQzFCLFNBQVU7UUFDUixJQUFJSixlQUFlSyxXQUFXO1lBQzVCLE9BQU9KLFFBQVFDLEdBQUcsQ0FBQ0MsTUFBTTtRQUMzQixPQUFPO1lBQ0xGLFFBQVFDLEdBQUcsQ0FBQ0MsTUFBTSxHQUFHSDtRQUN2QjtJQUNGO0FBQ0Y7QUFFQSxTQUFTTSxtQkFBbUJDLE1BQW9CO0lBTTlDLE1BQU1DLE9BQU9ELE9BQU9FLE1BQU0sQ0FBQ0MsTUFBTSxFQUFFRixRQUFRO0lBQzNDLE1BQU1HLE9BQU9KLE9BQU9FLE1BQU0sQ0FBQ0MsTUFBTSxFQUFFQyxRQUFRO0lBQzNDLE1BQU1DLGNBQWNMLE9BQU9NLElBQUksRUFBRUMsV0FBV0YsZUFBZTtJQUMzRCxPQUFPO1FBQUVEO1FBQU1IO1FBQU1JO1FBQWFHLFNBQVMsQ0FBQyxPQUFPLEVBQUVKLEtBQUssQ0FBQyxFQUFFSCxPQUFPSSxhQUFhO0lBQUM7QUFDcEY7QUFFQSxPQUFPLGVBQWVJO0lBQ3BCLE1BQU1DLE9BQU9oQixRQUFRaUIsSUFBSSxDQUFDQyxLQUFLLENBQUM7SUFFaEMsTUFBTVosU0FBUyxNQUFNUjtJQUVyQiwwRUFBMEU7SUFDMUUsTUFBTXFCLFFBQWtCLEVBQUU7SUFDMUIsSUFBSUM7SUFDSixJQUFJQyxhQUFhO0lBQ2pCLElBQUlDLGFBQWE7SUFFakIsSUFBSyxJQUFJQyxJQUFJLEdBQUdBLElBQUlQLEtBQUtRLE1BQU0sRUFBRUQsSUFBSztRQUNwQyxNQUFNRSxNQUFNVCxJQUFJLENBQUNPLEVBQUU7UUFDbkIsSUFBSUUsUUFBUSxlQUFlQSxRQUFRLE1BQU07WUFDdkNMLFVBQVVKLElBQUksQ0FBQyxFQUFFTyxFQUFFO1FBQ3JCLE9BQU8sSUFBSUUsUUFBUSxjQUFjQSxRQUFRLE1BQU07WUFDN0NKLGFBQWE7UUFDZixPQUFPLElBQUlJLFFBQVEsY0FBY0EsUUFBUSxNQUFNO1lBQzdDSCxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUNHLElBQUlDLFVBQVUsQ0FBQyxNQUFNO1lBQy9CUCxNQUFNUSxJQUFJLENBQUNGO1FBQ2I7SUFDRjtJQUVBLElBQUlILFlBQVk7UUFDZCxPQUFPTSxrQkFBa0J0QjtJQUMzQjtJQUVBLElBQUksQ0FBQ0EsT0FBT00sSUFBSSxFQUFFQyxXQUFXZ0IsU0FBUztRQUNwQ0MsUUFBUUMsS0FBSyxDQUNYcEMsTUFBTXFDLEdBQUcsQ0FDUDtRQUdKaEMsUUFBUWlDLElBQUksQ0FBQztJQUNmO0lBRUEsTUFBTSxFQUFFbkIsT0FBTyxFQUFFLEdBQUdULG1CQUFtQkM7SUFDdkMsTUFBTTRCLE1BQU0sR0FBR3BCLFFBQVEsSUFBSSxDQUFDO0lBRTVCLE1BQU1xQixVQUFrRCxDQUFDO0lBQ3pELElBQUloQixNQUFNSyxNQUFNLEdBQUcsR0FBRztRQUNwQlcsUUFBUWhCLEtBQUssR0FBR0E7SUFDbEI7SUFDQSxJQUFJQyxTQUFTO1FBQ1hlLFFBQVFmLE9BQU8sR0FBR0E7SUFDcEI7SUFFQSxJQUFJO1FBQ0YsTUFBTWdCLFdBQVcsTUFBTUMsTUFBTUgsS0FBSztZQUNoQ0ksUUFBUTtZQUNSQyxTQUFTO2dCQUFFLGdCQUFnQjtZQUFtQjtZQUM5Q0MsTUFBTUMsS0FBS0MsU0FBUyxDQUFDUDtRQUN2QjtRQUVBLElBQUlDLFNBQVNPLE1BQU0sS0FBSyxLQUFLO1lBQzNCYixRQUFRQyxLQUFLLENBQ1hwQyxNQUFNcUMsR0FBRyxDQUNQO1lBR0poQyxRQUFRaUMsSUFBSSxDQUFDO1FBQ2Y7UUFFQSxJQUFJRyxTQUFTTyxNQUFNLEtBQUssS0FBSztZQUMzQixNQUFNQyxZQUFhLE1BQU1SLFNBQVNTLElBQUk7WUFDdENmLFFBQVFDLEtBQUssQ0FBQ3BDLE1BQU1xQyxHQUFHLENBQUM7WUFDeEIsSUFBSVksVUFBVWIsS0FBSyxFQUFFO2dCQUNuQkQsUUFBUUMsS0FBSyxDQUFDcEMsTUFBTXFDLEdBQUcsQ0FBQ1ksVUFBVWIsS0FBSztZQUN6QztZQUNBL0IsUUFBUWlDLElBQUksQ0FBQztRQUNmO1FBRUEsSUFBSSxDQUFDRyxTQUFTVSxFQUFFLEVBQUU7WUFDaEJoQixRQUFRQyxLQUFLLENBQUNwQyxNQUFNcUMsR0FBRyxDQUFDLENBQUMsWUFBWSxFQUFFSSxTQUFTTyxNQUFNLEVBQUU7WUFDeEQzQyxRQUFRaUMsSUFBSSxDQUFDO1FBQ2Y7UUFFQSxNQUFNYyxTQUFVLE1BQU1YLFNBQVNTLElBQUk7UUFFbkMsTUFBTSxFQUFFRyxNQUFNLEVBQUVDLFFBQVFDLFdBQVcsRUFBRUMsS0FBSyxFQUFFQyxVQUFVLEVBQUUsR0FBR0wsT0FBT00sT0FBTztRQUN6RSxNQUFNQyxZQUFZM0QsTUFBTTRELEtBQUssQ0FBQyxHQUFHUCxPQUFPLE9BQU8sQ0FBQztRQUNoRCxNQUFNUSxZQUNKTixjQUFjLElBQUl2RCxNQUFNcUMsR0FBRyxDQUFDLEdBQUdrQixZQUFZLE9BQU8sQ0FBQyxJQUFJLEdBQUdBLFlBQVksT0FBTyxDQUFDO1FBQ2hGcEIsUUFBUTJCLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRUgsVUFBVSxFQUFFLEVBQUVFLFVBQVUsRUFBRSxFQUFFTCxNQUFNLE1BQU0sQ0FBQztRQUNqRXJCLFFBQVEyQixHQUFHLENBQUM5RCxNQUFNK0QsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFTixXQUFXLEVBQUUsQ0FBQztRQUVqRCxNQUFNTyxjQUFjQyx5QkFBeUJiLE9BQU9jLE9BQU87UUFDM0QsSUFBSUYsWUFBWW5DLE1BQU0sR0FBRyxHQUFHO1lBQzFCTSxRQUFRMkIsR0FBRyxDQUFDOUQsTUFBTXFDLEdBQUcsQ0FBQzhCLElBQUksQ0FBQztZQUMzQixLQUFLLE1BQU1DLEtBQUtKLFlBQWE7Z0JBQzNCN0IsUUFBUTJCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTlELE1BQU1xQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUrQixFQUFFQyxRQUFRLENBQUMsQ0FBQyxFQUFFckUsTUFBTStELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUssRUFBRUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO2dCQUMzRSxJQUFJRixFQUFFaEMsS0FBSyxFQUFFO29CQUNYRCxRQUFRMkIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFOUQsTUFBTXFDLEdBQUcsQ0FBQytCLEVBQUVoQyxLQUFLLENBQUNtQyxPQUFPLEdBQUc7Z0JBQ2pEO1lBQ0Y7UUFDRjtRQUVBLElBQUk3QyxZQUFZO1lBQ2QsTUFBTThDLGtCQUFrQkMseUJBQXlCckIsT0FBT2MsT0FBTztZQUMvRCxJQUFJTSxnQkFBZ0IzQyxNQUFNLEdBQUcsR0FBRztnQkFDOUJNLFFBQVEyQixHQUFHLENBQUM5RCxNQUFNMEUsSUFBSSxDQUFDUCxJQUFJLENBQUM7Z0JBQzVCLEtBQUssTUFBTSxFQUFFUSxRQUFRLEVBQUVMLElBQUksRUFBRU0sTUFBTSxFQUFFLElBQUlKLGdCQUFpQjtvQkFDeERyQyxRQUFRMkIsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFOUQsTUFBTW1FLElBQUksQ0FBQ1EsV0FBVztvQkFDekN4QyxRQUFRMkIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFOUQsTUFBTStELEdBQUcsQ0FBQ2hFLEtBQUs4RSxRQUFRLENBQUNQLFFBQVE7b0JBQ2pELEtBQUssTUFBTVEsU0FBU0YsT0FBUTt3QkFDMUIsTUFBTUcsTUFBTSxHQUFHaEYsS0FBSzhFLFFBQVEsQ0FBQ0MsTUFBTUUsUUFBUSxFQUFFLENBQUMsRUFBRUYsTUFBTUcsVUFBVSxFQUFFO3dCQUNsRSxNQUFNQyxXQUNKLE9BQU9KLE1BQU1LLEtBQUssS0FBSyxXQUNuQkwsTUFBTUssS0FBSyxHQUNWckMsS0FBS0MsU0FBUyxDQUFDK0IsTUFBTUssS0FBSyxFQUFFLE1BQU0sTUFBTTt3QkFDL0NoRCxRQUFRMkIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFOUQsTUFBTW9GLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRU4sTUFBTU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRXJGLE1BQU0rRCxHQUFHLENBQUNnQixNQUFNO3dCQUN2RSxNQUFNTyxXQUFXSixTQUFTSyxLQUFLLENBQUMsTUFBTUMsSUFBSSxDQUFDO3dCQUMzQ3JELFFBQVEyQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUV3QixVQUFVO29CQUMvQjtnQkFDRjtZQUNGO1FBQ0Y7UUFFQSxJQUFJLENBQUNsQyxPQUFPRCxFQUFFLEVBQUU7WUFDZDlDLFFBQVFpQyxJQUFJLENBQUM7UUFDZjtJQUNGLEVBQUUsT0FBT21ELEtBQUs7UUFDWixJQUFJQSxlQUFlQyxhQUFhRCxJQUFJRSxLQUFLLEVBQUU7WUFDekN4RCxRQUFRQyxLQUFLLENBQ1hwQyxNQUFNcUMsR0FBRyxDQUFDO1lBRVpoQyxRQUFRaUMsSUFBSSxDQUFDO1FBQ2Y7UUFDQSxNQUFNbUQ7SUFDUjtBQUNGO0FBRUEsU0FBU3hCLHlCQUF5QjJCLEtBQXVCO0lBQ3ZELE1BQU14QyxTQUEyQixFQUFFO0lBQ25DLEtBQUssTUFBTXlDLFFBQVFELE1BQU87UUFDeEIsSUFBSUMsS0FBS0MsSUFBSSxLQUFLLFVBQVVELEtBQUtFLEtBQUssS0FBSyxVQUFVO1lBQ25EM0MsT0FBT3BCLElBQUksQ0FBQzZEO1FBQ2Q7UUFDQSxJQUFJQSxLQUFLRyxRQUFRLENBQUNuRSxNQUFNLEdBQUcsR0FBRztZQUM1QnVCLE9BQU9wQixJQUFJLElBQUlpQyx5QkFBeUI0QixLQUFLRyxRQUFRO1FBQ3ZEO0lBQ0Y7SUFDQSxPQUFPNUM7QUFDVDtBQUVBLFNBQVNxQix5QkFDUG1CLEtBQXVCO0lBRXZCLE1BQU14QyxTQUFpRixFQUFFO0lBQ3pGLEtBQUssTUFBTXlDLFFBQVFELE1BQU87UUFDeEIsSUFBSUMsS0FBS0MsSUFBSSxLQUFLLFVBQVVELEtBQUtqQixNQUFNLENBQUMvQyxNQUFNLEdBQUcsR0FBRztZQUNsRHVCLE9BQU9wQixJQUFJLENBQUM7Z0JBQUUyQyxVQUFVa0IsS0FBS3hCLFFBQVE7Z0JBQUVDLE1BQU11QixLQUFLdkIsSUFBSTtnQkFBRU0sUUFBUWlCLEtBQUtqQixNQUFNO1lBQUM7UUFDOUU7UUFDQSxJQUFJaUIsS0FBS0csUUFBUSxDQUFDbkUsTUFBTSxHQUFHLEdBQUc7WUFDNUJ1QixPQUFPcEIsSUFBSSxJQUFJeUMseUJBQXlCb0IsS0FBS0csUUFBUTtRQUN2RDtJQUNGO0lBQ0EsT0FBTzVDO0FBQ1Q7QUFFQSxlQUFlbkIsa0JBQWtCdEIsTUFBb0I7SUFDbkQsSUFBSSxDQUFDQSxPQUFPTSxJQUFJLEVBQUVDLFdBQVdnQixTQUFTO1FBQ3BDQyxRQUFRQyxLQUFLLENBQ1hwQyxNQUFNcUMsR0FBRyxDQUNQO1FBR0poQyxRQUFRaUMsSUFBSSxDQUFDO0lBQ2Y7SUFFQSxNQUFNLEVBQUVuQixPQUFPLEVBQUUsR0FBR1QsbUJBQW1CQztJQUN2QyxNQUFNNEIsTUFBTSxHQUFHcEIsUUFBUSxPQUFPLENBQUM7SUFFL0IsSUFBSTtRQUNGLE1BQU1zQixXQUFXLE1BQU1DLE1BQU1IO1FBRTdCLElBQUksQ0FBQ0UsU0FBU1UsRUFBRSxFQUFFO1lBQ2hCaEIsUUFBUUMsS0FBSyxDQUFDcEMsTUFBTXFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRUksU0FBU08sTUFBTSxFQUFFO1lBQ3hEM0MsUUFBUWlDLElBQUksQ0FBQztRQUNmO1FBRUEsTUFBTVUsU0FBVSxNQUFNUCxTQUFTUyxJQUFJO1FBT25DZixRQUFRMkIsR0FBRyxDQUFDOUQsTUFBTW1FLElBQUksQ0FBQztRQUN2QmhDLFFBQVEyQixHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWQsT0FBT2lELEtBQUssR0FBR2pHLE1BQU00RCxLQUFLLENBQUMsVUFBVTVELE1BQU1xQyxHQUFHLENBQUMsVUFBVTtRQUN4RkYsUUFBUTJCLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFZCxPQUFPa0QsT0FBTyxHQUFHbEcsTUFBTW9GLE1BQU0sQ0FBQyxVQUFVLFNBQVM7UUFDaEZqRCxRQUFRMkIsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVkLE9BQU9tRCxTQUFTLElBQUluRyxNQUFNK0QsR0FBRyxDQUFDLE9BQU87UUFDcEU1QixRQUFRMkIsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVkLE9BQU9vRCxZQUFZLEdBQUdwRyxNQUFNNEQsS0FBSyxDQUFDLFVBQVUsU0FBUztJQUN0RixFQUFFLE9BQU82QixLQUFLO1FBQ1osSUFBSUEsZUFBZUMsYUFBYUQsSUFBSUUsS0FBSyxFQUFFO1lBQ3pDeEQsUUFBUUMsS0FBSyxDQUNYcEMsTUFBTXFDLEdBQUcsQ0FBQztZQUVaaEMsUUFBUWlDLElBQUksQ0FBQztRQUNmO1FBQ0EsTUFBTW1EO0lBQ1I7QUFDRiJ9
|
|
191
|
+
//#endregion
|
|
192
|
+
export { testCommand };
|
|
193
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jb21tYW5kLmpzIiwibmFtZXMiOlsiZmlsZXM6IHN0cmluZ1tdIiwicGF0dGVybjogc3RyaW5nIHwgdW5kZWZpbmVkIiwicGF5bG9hZDogeyBmaWxlcz86IHN0cmluZ1tdOyBwYXR0ZXJuPzogc3RyaW5nIH0iLCJyZXN1bHQ6IFRlc3RDYXNlUmVzdWx0W10iLCJyZXN1bHQ6IHsgdGVzdE5hbWU6IHN0cmluZzsgZmlsZTogc3RyaW5nOyB0cmFjZXM6IFRlc3RDYXNlUmVzdWx0W1widHJhY2VzXCJdIH1bXSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdGVzdC1jb21tYW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG5pbXBvcnQgeyB0eXBlIFNvbmFtdUNvbmZpZyB9IGZyb20gXCIuLi9hcGkvY29uZmlnXCI7XG5pbXBvcnQgeyBsb2FkQ29uZmlnIH0gZnJvbSBcIi4uL2FwaS9jb25maWdcIjtcbmltcG9ydCB7IHR5cGUgUnVuUmVzdWx0LCB0eXBlIFRlc3RDYXNlUmVzdWx0IH0gZnJvbSBcIi4uL3Rlc3RpbmdcIjtcbmltcG9ydCB7IGZpbmRBcGlSb290UGF0aCB9IGZyb20gXCIuLi91dGlscy91dGlsc1wiO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkVGVzdENvbmZpZygpOiBQcm9taXNlPFNvbmFtdUNvbmZpZz4ge1xuICBjb25zdCBwcmV2Vml0ZXN0ID0gcHJvY2Vzcy5lbnYuVklURVNUO1xuICBwcm9jZXNzLmVudi5WSVRFU1QgPSBcInRydWVcIjtcbiAgdHJ5IHtcbiAgICBjb25zdCBhcGlSb290UGF0aCA9IGZpbmRBcGlSb290UGF0aCgpO1xuICAgIHJldHVybiBhd2FpdCBsb2FkQ29uZmlnKGFwaVJvb3RQYXRoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAocHJldlZpdGVzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuVklURVNUO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5WSVRFU1QgPSBwcmV2Vml0ZXN0O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlVGVzdEJhc2VVcmwoY29uZmlnOiBTb25hbXVDb25maWcpOiB7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICByb3V0ZVByZWZpeDogc3RyaW5nO1xuICBiYXNlVXJsOiBzdHJpbmc7XG59IHtcbiAgY29uc3QgcG9ydCA9IGNvbmZpZy5zZXJ2ZXIubGlzdGVuPy5wb3J0ID8/IDMwMDA7XG4gIGNvbnN0IGhvc3QgPSBjb25maWcuc2VydmVyLmxpc3Rlbj8uaG9zdCA/PyBcImxvY2FsaG9zdFwiO1xuICBjb25zdCByb3V0ZVByZWZpeCA9IGNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LnJvdXRlUHJlZml4ID8/IFwiL19fdGVzdF9fXCI7XG4gIHJldHVybiB7IGhvc3QsIHBvcnQsIHJvdXRlUHJlZml4LCBiYXNlVXJsOiBgaHR0cDovLyR7aG9zdH06JHtwb3J0fSR7cm91dGVQcmVmaXh9YCB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdENvbW1hbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMyk7XG5cbiAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZFRlc3RDb25maWcoKTtcblxuICAvLyBwcm9jZXNzLmFyZ3Yg7YyM7IuxOiBzb25hbXUgdGVzdCBbZmlsZS4uLl0gLS1wYXR0ZXJuIFwi7J2066aEXCIgLS10cmFjZXMgLS1zdGF0dXNcbiAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBwYXR0ZXJuOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBzaG93VHJhY2VzID0gZmFsc2U7XG4gIGxldCBzaG93U3RhdHVzID0gZmFsc2U7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09PSBcIi0tcGF0dGVyblwiIHx8IGFyZyA9PT0gXCItcFwiKSB7XG4gICAgICBwYXR0ZXJuID0gYXJnc1srK2ldO1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSBcIi0tdHJhY2VzXCIgfHwgYXJnID09PSBcIi10XCIpIHtcbiAgICAgIHNob3dUcmFjZXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSBcIi0tc3RhdHVzXCIgfHwgYXJnID09PSBcIi1zXCIpIHtcbiAgICAgIHNob3dTdGF0dXMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWFyZy5zdGFydHNXaXRoKFwiLVwiKSkge1xuICAgICAgZmlsZXMucHVzaChhcmcpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzaG93U3RhdHVzKSB7XG4gICAgcmV0dXJuIHRlc3RTdGF0dXNDb21tYW5kKGNvbmZpZyk7XG4gIH1cblxuICBpZiAoIWNvbmZpZy50ZXN0Py5kZXZSdW5uZXI/LmVuYWJsZWQpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgY2hhbGsucmVkKFxuICAgICAgICBcImRldlJ1bm5lcuqwgCDtmZzshLHtmZTrkJjsp4Ag7JWK7JWY7Iq164uI64ukLiBzb25hbXUuY29uZmlnLnRz7JeQ7IScIHRlc3QuZGV2UnVubmVyLmVuYWJsZWQ6IHRydWUg7ISk7KCV7J20IO2VhOyalO2VqeuLiOuLpFwiLFxuICAgICAgKSxcbiAgICApO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGNvbnN0IHsgYmFzZVVybCB9ID0gcmVzb2x2ZVRlc3RCYXNlVXJsKGNvbmZpZyk7XG4gIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3J1bmA7XG5cbiAgY29uc3QgcGF5bG9hZDogeyBmaWxlcz86IHN0cmluZ1tdOyBwYXR0ZXJuPzogc3RyaW5nIH0gPSB7fTtcbiAgaWYgKGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICBwYXlsb2FkLmZpbGVzID0gZmlsZXM7XG4gIH1cbiAgaWYgKHBhdHRlcm4pIHtcbiAgICBwYXlsb2FkLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXG4gICAgICAgICAgXCJkZXZSdW5uZXLqsIAg7Zmc7ISx7ZmU65CY7KeAIOyViuyVmOyKteuLiOuLpC4gc29uYW11LmNvbmZpZy50c+yXkOyEnCB0ZXN0LmRldlJ1bm5lci5lbmFibGVkOiB0cnVlIOyEpOygleydtCDtlYTsmpTtlanri4jri6RcIixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNTAwKSB7XG4gICAgICBjb25zdCBlcnJvckJvZHkgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7IGVycm9yPzogc3RyaW5nIH07XG4gICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChcIlZpdGVzdCDsnbjsiqTthLTsiqTqsIAg7JWE7KeBIOykgOu5hOuQmOyngCDslYrslZjsirXri4jri6RcIikpO1xuICAgICAgaWYgKGVycm9yQm9keS5lcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvckJvZHkuZXJyb3IpKTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChg7JiI7IOB7ZWY7KeAIOuqu+2VnCDsnZHri7U6ICR7cmVzcG9uc2Uuc3RhdHVzfWApKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyBSdW5SZXN1bHQ7XG5cbiAgICBjb25zdCB7IHBhc3NlZCwgZmFpbGVkOiBmYWlsZWRDb3VudCwgdG90YWwsIGR1cmF0aW9uTXMgfSA9IHJlc3VsdC5zdW1tYXJ5O1xuICAgIGNvbnN0IHBhc3NlZFN0ciA9IGNoYWxrLmdyZWVuKGAke3Bhc3NlZH0gcGFzc2VkYCk7XG4gICAgY29uc3QgZmFpbGVkU3RyID1cbiAgICAgIGZhaWxlZENvdW50ID4gMCA/IGNoYWxrLnJlZChgJHtmYWlsZWRDb3VudH0gZmFpbGVkYCkgOiBgJHtmYWlsZWRDb3VudH0gZmFpbGVkYDtcbiAgICBjb25zb2xlLmxvZyhgXFxuVGVzdHM6ICR7cGFzc2VkU3RyfSwgJHtmYWlsZWRTdHJ9LCAke3RvdGFsfSB0b3RhbGApO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmRpbShgRHVyYXRpb246ICR7ZHVyYXRpb25Nc31tc2ApKTtcblxuICAgIGNvbnN0IGZhaWxlZFRlc3RzID0gY29sbGVjdEZhaWxlZEZyb21SZXN1bHRzKHJlc3VsdC5yZXN1bHRzKTtcbiAgICBpZiAoZmFpbGVkVGVzdHMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkLmJvbGQoXCJcXG5GYWlsZWQgdGVzdHM6XCIpKTtcbiAgICAgIGZvciAoY29uc3QgZiBvZiBmYWlsZWRUZXN0cykge1xuICAgICAgICBjb25zb2xlLmxvZyhgICAke2NoYWxrLnJlZChcInhcIil9ICR7Zi5mdWxsTmFtZX0gJHtjaGFsay5kaW0oYCgke2YuZmlsZX0pYCl9YCk7XG4gICAgICAgIGlmIChmLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgICAke2NoYWxrLnJlZChmLmVycm9yLm1lc3NhZ2UpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNob3dUcmFjZXMpIHtcbiAgICAgIGNvbnN0IHRlc3RzV2l0aFRyYWNlcyA9IGNvbGxlY3RUcmFjZXNGcm9tUmVzdWx0cyhyZXN1bHQucmVzdWx0cyk7XG4gICAgICBpZiAodGVzdHNXaXRoVHJhY2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbi5ib2xkKFwiXFxuVHJhY2VzOlwiKSk7XG4gICAgICAgIGZvciAoY29uc3QgeyB0ZXN0TmFtZSwgZmlsZSwgdHJhY2VzIH0gb2YgdGVzdHNXaXRoVHJhY2VzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYFxcbiAgJHtjaGFsay5ib2xkKHRlc3ROYW1lKX1gKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICAke2NoYWxrLmRpbShwYXRoLmJhc2VuYW1lKGZpbGUpKX1gKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRyYWNlIG9mIHRyYWNlcykge1xuICAgICAgICAgICAgY29uc3QgbG9jID0gYCR7cGF0aC5iYXNlbmFtZSh0cmFjZS5maWxlUGF0aCl9OiR7dHJhY2UubGluZU51bWJlcn1gO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTdHIgPVxuICAgICAgICAgICAgICB0eXBlb2YgdHJhY2UudmFsdWUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICA/IHRyYWNlLnZhbHVlXG4gICAgICAgICAgICAgICAgOiAoSlNPTi5zdHJpbmdpZnkodHJhY2UudmFsdWUsIG51bGwsIDIpID8/IFwidW5kZWZpbmVkXCIpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFxcbiAgICAke2NoYWxrLnllbGxvdyhgWyR7dHJhY2Uua2V5fV1gKX0gJHtjaGFsay5kaW0obG9jKX1gKTtcbiAgICAgICAgICAgIGNvbnN0IGluZGVudGVkID0gdmFsdWVTdHIuc3BsaXQoXCJcXG5cIikuam9pbihcIlxcbiAgICBcIik7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgICAgICR7aW5kZW50ZWR9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZXN1bHQub2spIHtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZXJyLmNhdXNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXCJkZXYg7ISc67KE7JeQIOyXsOqysO2VoCDsiJgg7JeG7Iq164uI64ukLiBzb25hbXUgZGV26rCAIOyLpO2WiSDspJHsnbjsp4Ag7ZmV7J247ZWY7IS47JqUXCIpLFxuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RGYWlsZWRGcm9tUmVzdWx0cyhub2RlczogVGVzdENhc2VSZXN1bHRbXSk6IFRlc3RDYXNlUmVzdWx0W10ge1xuICBjb25zdCByZXN1bHQ6IFRlc3RDYXNlUmVzdWx0W10gPSBbXTtcbiAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgaWYgKG5vZGUua2luZCA9PT0gXCJ0ZXN0XCIgJiYgbm9kZS5zdGF0ZSA9PT0gXCJmYWlsZWRcIikge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLmNvbGxlY3RGYWlsZWRGcm9tUmVzdWx0cyhub2RlLmNoaWxkcmVuKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RUcmFjZXNGcm9tUmVzdWx0cyhcbiAgbm9kZXM6IFRlc3RDYXNlUmVzdWx0W10sXG4pOiB7IHRlc3ROYW1lOiBzdHJpbmc7IGZpbGU6IHN0cmluZzsgdHJhY2VzOiBUZXN0Q2FzZVJlc3VsdFtcInRyYWNlc1wiXSB9W10ge1xuICBjb25zdCByZXN1bHQ6IHsgdGVzdE5hbWU6IHN0cmluZzsgZmlsZTogc3RyaW5nOyB0cmFjZXM6IFRlc3RDYXNlUmVzdWx0W1widHJhY2VzXCJdIH1bXSA9IFtdO1xuICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICBpZiAobm9kZS5raW5kID09PSBcInRlc3RcIiAmJiBub2RlLnRyYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICByZXN1bHQucHVzaCh7IHRlc3ROYW1lOiBub2RlLmZ1bGxOYW1lLCBmaWxlOiBub2RlLmZpbGUsIHRyYWNlczogbm9kZS50cmFjZXMgfSk7XG4gICAgfVxuICAgIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLmNvbGxlY3RUcmFjZXNGcm9tUmVzdWx0cyhub2RlLmNoaWxkcmVuKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRlc3RTdGF0dXNDb21tYW5kKGNvbmZpZzogU29uYW11Q29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghY29uZmlnLnRlc3Q/LmRldlJ1bm5lcj8uZW5hYmxlZCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBjaGFsay5yZWQoXG4gICAgICAgIFwiZGV2UnVubmVy6rCAIO2ZnOyEse2ZlOuQmOyngCDslYrslZjsirXri4jri6QuIHNvbmFtdS5jb25maWcudHPsl5DshJwgdGVzdC5kZXZSdW5uZXIuZW5hYmxlZDogdHJ1ZSDshKTsoJXsnbQg7ZWE7JqU7ZWp64uI64ukXCIsXG4gICAgICApLFxuICAgICk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgY29uc3QgeyBiYXNlVXJsIH0gPSByZXNvbHZlVGVzdEJhc2VVcmwoY29uZmlnKTtcbiAgY29uc3QgdXJsID0gYCR7YmFzZVVybH0vc3RhdHVzYDtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGDsmIjsg4HtlZjsp4Ag66q77ZWcIOydkeuLtTogJHtyZXNwb25zZS5zdGF0dXN9YCkpO1xuICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1cyA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIHtcbiAgICAgIHJlYWR5OiBib29sZWFuO1xuICAgICAgcnVubmluZzogYm9vbGVhbjtcbiAgICAgIGxhc3RSdW5BdDogc3RyaW5nIHwgbnVsbDtcbiAgICAgIHNzZUF2YWlsYWJsZTogYm9vbGVhbjtcbiAgICB9O1xuXG4gICAgY29uc29sZS5sb2coY2hhbGsuYm9sZChcIkRldlJ1bm5lciDsg4Htg5w6XCIpKTtcbiAgICBjb25zb2xlLmxvZyhgICByZWFkeTogICAgICAgICR7c3RhdHVzLnJlYWR5ID8gY2hhbGsuZ3JlZW4oXCJ0cnVlXCIpIDogY2hhbGsucmVkKFwiZmFsc2VcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgcnVubmluZzogICAgICAke3N0YXR1cy5ydW5uaW5nID8gY2hhbGsueWVsbG93KFwidHJ1ZVwiKSA6IFwiZmFsc2VcIn1gKTtcbiAgICBjb25zb2xlLmxvZyhgICBsYXN0UnVuQXQ6ICAgICR7c3RhdHVzLmxhc3RSdW5BdCA/PyBjaGFsay5kaW0oXCLsl4bsnYxcIil9YCk7XG4gICAgY29uc29sZS5sb2coYCAgc3NlQXZhaWxhYmxlOiAke3N0YXR1cy5zc2VBdmFpbGFibGUgPyBjaGFsay5ncmVlbihcInRydWVcIikgOiBcImZhbHNlXCJ9YCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUeXBlRXJyb3IgJiYgZXJyLmNhdXNlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBjaGFsay5yZWQoXCJkZXYg7ISc67KE7JeQIOyXsOqysO2VoCDsiJgg7JeG7Iq164uI64ukLiBzb25hbXUgZGV26rCAIOyLpO2WiSDspJHsnbjsp4Ag7ZmV7J247ZWY7IS47JqUXCIpLFxuICAgICAgKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OzthQUsyQztZQUVNO0FBRWpELGVBQWUsaUJBQXdDO0NBQ3JELE1BQU0sYUFBYSxRQUFRLElBQUk7QUFDL0IsU0FBUSxJQUFJLFNBQVM7QUFDckIsS0FBSTtFQUNGLE1BQU0sY0FBYyxpQkFBaUI7QUFDckMsU0FBTyxNQUFNLFdBQVcsWUFBWTtXQUM1QjtBQUNSLE1BQUksZUFBZSxXQUFXO0FBQzVCLFVBQU8sUUFBUSxJQUFJO1NBQ2Q7QUFDTCxXQUFRLElBQUksU0FBUzs7OztBQUszQixTQUFTLG1CQUFtQixRQUsxQjtDQUNBLE1BQU0sT0FBTyxPQUFPLE9BQU8sUUFBUSxRQUFRO0NBQzNDLE1BQU0sT0FBTyxPQUFPLE9BQU8sUUFBUSxRQUFRO0NBQzNDLE1BQU0sY0FBYyxPQUFPLE1BQU0sV0FBVyxlQUFlO0FBQzNELFFBQU87RUFBRTtFQUFNO0VBQU07RUFBYSxTQUFTLFVBQVUsS0FBSyxHQUFHLE9BQU87RUFBZTs7QUFHckYsZUFBc0IsY0FBNkI7Q0FDakQsTUFBTSxPQUFPLFFBQVEsS0FBSyxNQUFNLEVBQUU7Q0FFbEMsTUFBTSxTQUFTLE1BQU0sZ0JBQWdCO0NBR3JDLE1BQU1BLFFBQWtCLEVBQUU7Q0FDMUIsSUFBSUM7Q0FDSixJQUFJLGFBQWE7Q0FDakIsSUFBSSxhQUFhO0FBRWpCLE1BQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLFFBQVEsS0FBSztFQUNwQyxNQUFNLE1BQU0sS0FBSztBQUNqQixNQUFJLFFBQVEsZUFBZSxRQUFRLE1BQU07QUFDdkMsYUFBVSxLQUFLLEVBQUU7YUFDUixRQUFRLGNBQWMsUUFBUSxNQUFNO0FBQzdDLGdCQUFhO2FBQ0osUUFBUSxjQUFjLFFBQVEsTUFBTTtBQUM3QyxnQkFBYTthQUNKLENBQUMsSUFB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
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import { findApiRootPath } from "../utils/utils.js";
|
|
2
|
-
import { ensureTsLoaderRegistered } from "./ts-loader-registration.js";
|
|
1
|
+
import { findApiRootPath, init_utils } from "../utils/utils.js";
|
|
2
|
+
import { ensureTsLoaderRegistered, init_ts_loader_registration } from "./ts-loader-registration.js";
|
|
3
|
+
|
|
4
|
+
//#region src/bin/ts-loader-register.ts
|
|
5
|
+
await init_utils();
|
|
6
|
+
await init_ts_loader_registration();
|
|
3
7
|
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
* @sonamu-kit/ts-loader/loader를 등록하는 스크립트입니다.
|
|
9
|
+
* 이 스크립트는 sonamu cli로 dev 실행할 때 --import로 실행됩니다.
|
|
10
|
+
*/
|
|
11
|
+
await ensureTsLoaderRegistered(findApiRootPath());
|
|
7
12
|
|
|
8
|
-
//#
|
|
13
|
+
//#endregion
|
|
14
|
+
export { };
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMtbG9hZGVyLXJlZ2lzdGVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdHMtbG9hZGVyLXJlZ2lzdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbmRBcGlSb290UGF0aCB9IGZyb20gXCIuLi91dGlscy91dGlscy5qc1wiO1xuaW1wb3J0IHsgZW5zdXJlVHNMb2FkZXJSZWdpc3RlcmVkIH0gZnJvbSBcIi4vdHMtbG9hZGVyLXJlZ2lzdHJhdGlvbi5qc1wiO1xuXG4vKipcbiAqIEBzb25hbXUta2l0L3RzLWxvYWRlci9sb2FkZXLrpbwg65Ox66Gd7ZWY64qUIOyKpO2BrOumve2KuOyeheuLiOuLpC5cbiAqIOydtCDsiqTtgazrpr3tirjripQgc29uYW11IGNsaeuhnCBkZXYg7Iuk7ZaJ7ZWgIOuVjCAtLWltcG9ydOuhnCDsi6TtlonrkKnri4jri6QuXG4gKi9cbmF3YWl0IGVuc3VyZVRzTG9hZGVyUmVnaXN0ZXJlZChmaW5kQXBpUm9vdFBhdGgoKSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7a0JBQW9EO21DQUNtQjs7Ozs7QUFNdkUsTUFBTSx5QkFBeUIsaUJBQWlCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-loader-registration.d.ts","sourceRoot":"","sources":["../../src/bin/ts-loader-registration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ts-loader-registration.d.ts","sourceRoot":"","sources":["../../src/bin/ts-loader-registration.ts"],"names":[],"mappings":"AAyBA,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa7E"}
|
|
@@ -1,42 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { __esmMin } from "../_virtual/rolldown_runtime.js";
|
|
2
|
+
import { createRequire, register } from "node:module";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
|
|
5
|
+
//#region src/bin/ts-loader-registration.ts
|
|
5
6
|
function getTsLoaderRegisterState() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
return globalState[tsLoaderRegisterStateKey];
|
|
13
|
-
}
|
|
14
|
-
async function setupSwcConfig(apiRoot) {
|
|
15
|
-
try {
|
|
16
|
-
const projectSwcrcPath = path.join(apiRoot, ".swcrc");
|
|
17
|
-
if (await exists(projectSwcrcPath)) {
|
|
18
|
-
process.env.SWCRC_PATH = projectSwcrcPath;
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
const sonamuSwcrcPath = path.join(import.meta.dirname, "..", "..", ".swcrc.project-default");
|
|
22
|
-
if (await exists(sonamuSwcrcPath)) {
|
|
23
|
-
process.env.SWCRC_PATH = sonamuSwcrcPath;
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
} catch {
|
|
27
|
-
// 환경 변수 설정 실패는 무시 (loader가 기본 설정 사용)
|
|
28
|
-
}
|
|
7
|
+
const globalState = globalThis;
|
|
8
|
+
if (!globalState[tsLoaderRegisterStateKey]) {
|
|
9
|
+
globalState[tsLoaderRegisterStateKey] = { registered: false };
|
|
10
|
+
}
|
|
11
|
+
return globalState[tsLoaderRegisterStateKey];
|
|
29
12
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
state.registered = true;
|
|
13
|
+
async function ensureTsLoaderRegistered(apiRoot) {
|
|
14
|
+
const state = getTsLoaderRegisterState();
|
|
15
|
+
if (state.registered) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
void apiRoot;
|
|
19
|
+
const loaderPath = require.resolve("@sonamu-kit/ts-loader/loader");
|
|
20
|
+
register(pathToFileURL(loaderPath).href, { parentURL: import.meta.url });
|
|
21
|
+
state.registered = true;
|
|
40
22
|
}
|
|
23
|
+
var tsLoaderRegisterStateKey, require;
|
|
24
|
+
var init_ts_loader_registration = __esmMin((() => {
|
|
25
|
+
tsLoaderRegisterStateKey = Symbol.for("sonamu.ts-loader-register.state");
|
|
26
|
+
require = createRequire(import.meta.url);
|
|
27
|
+
}));
|
|
41
28
|
|
|
42
|
-
//#
|
|
29
|
+
//#endregion
|
|
30
|
+
init_ts_loader_registration();
|
|
31
|
+
export { ensureTsLoaderRegistered, init_ts_loader_registration };
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHMtbG9hZGVyLXJlZ2lzdHJhdGlvbi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL3RzLWxvYWRlci1yZWdpc3RyYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXIgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tIFwibm9kZTp1cmxcIjtcblxuY29uc3QgdHNMb2FkZXJSZWdpc3RlclN0YXRlS2V5ID0gU3ltYm9sLmZvcihcInNvbmFtdS50cy1sb2FkZXItcmVnaXN0ZXIuc3RhdGVcIik7XG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuXG50eXBlIFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSA9IHtcbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbn07XG5cbnR5cGUgR2xvYmFsV2l0aFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSA9IHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICBbdHNMb2FkZXJSZWdpc3RlclN0YXRlS2V5XT86IFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZTtcbn07XG5cbmZ1bmN0aW9uIGdldFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZSgpOiBUc0xvYWRlclJlZ2lzdGVyU3RhdGUge1xuICBjb25zdCBnbG9iYWxTdGF0ZSA9IGdsb2JhbFRoaXMgYXMgR2xvYmFsV2l0aFRzTG9hZGVyUmVnaXN0ZXJTdGF0ZTtcblxuICBpZiAoIWdsb2JhbFN0YXRlW3RzTG9hZGVyUmVnaXN0ZXJTdGF0ZUtleV0pIHtcbiAgICBnbG9iYWxTdGF0ZVt0c0xvYWRlclJlZ2lzdGVyU3RhdGVLZXldID0geyByZWdpc3RlcmVkOiBmYWxzZSB9O1xuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFN0YXRlW3RzTG9hZGVyUmVnaXN0ZXJTdGF0ZUtleV07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVUc0xvYWRlclJlZ2lzdGVyZWQoYXBpUm9vdDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHN0YXRlID0gZ2V0VHNMb2FkZXJSZWdpc3RlclN0YXRlKCk7XG4gIGlmIChzdGF0ZS5yZWdpc3RlcmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdm9pZCBhcGlSb290O1xuICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFwiQHNvbmFtdS1raXQvdHMtbG9hZGVyL2xvYWRlclwiKTtcblxuICByZWdpc3RlcihwYXRoVG9GaWxlVVJMKGxvYWRlclBhdGgpLmhyZWYsIHtcbiAgICBwYXJlbnRVUkw6IGltcG9ydC5tZXRhLnVybCxcbiAgfSk7XG4gIHN0YXRlLnJlZ2lzdGVyZWQgPSB0cnVlO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQWVBLFNBQVMsMkJBQWtEO0NBQ3pELE1BQU0sY0FBYztBQUVwQixLQUFJLENBQUMsWUFBWSwyQkFBMkI7QUFDMUMsY0FBWSw0QkFBNEIsRUFBRSxZQUFZLE9BQU87O0FBRy9ELFFBQU8sWUFBWTs7QUFHckIsZUFBc0IseUJBQXlCLFNBQWdDO0NBQzdFLE1BQU0sUUFBUSwwQkFBMEI7QUFDeEMsS0FBSSxNQUFNLFlBQVk7QUFDcEI7O0FBR0YsTUFBSztDQUNMLE1BQU0sYUFBYSxRQUFRLFFBQVEsK0JBQStCO0FBRWxFLFVBQVMsY0FBYyxXQUFXLENBQUMsTUFBTSxFQUN2QyxXQUFXLE9BQU8sS0FBSyxLQUN4QixDQUFDO0FBQ0YsT0FBTSxhQUFhOzs7O0NBakNmLDJCQUEyQixPQUFPLElBQUksa0NBQWtDO0NBQ3hFLFVBQVUsY0FBYyxPQUFPLEtBQUssSUFBSSJ9
|