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,226 +1,229 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import { __esmMin } from "../_virtual/rolldown_runtime.js";
|
|
2
|
+
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
3
|
+
import { EntityJsonSchema, SonamuFileArraySchema, SonamuFileSchema, init_types, isSearchTextJsonSourceZodType, isSearchTextProp } from "../types/types.js";
|
|
4
|
+
import { globAsync, init_async_utils } from "../utils/async-utils.js";
|
|
5
|
+
import { importMembers, init_esm_utils } from "../utils/esm-utils.js";
|
|
6
|
+
import { init_path_utils, runtimePath } from "../utils/path-utils.js";
|
|
4
7
|
import inflection from "inflection";
|
|
8
|
+
import { prettifyError, z as z$1 } from "zod";
|
|
9
|
+
import assert from "assert";
|
|
10
|
+
import { glob, readFile } from "fs/promises";
|
|
5
11
|
import path from "path";
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
throw new Error(`타입 파일의 모듈 경로를 계산할 수 없습니다: ${filePath}`);
|
|
220
|
-
}
|
|
221
|
-
return matched[1];
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
export const EntityManager = new EntityManagerClass();
|
|
12
|
+
import chalk from "chalk";
|
|
13
|
+
|
|
14
|
+
//#region src/entity/entity-manager.ts
|
|
15
|
+
var EntityManagerClass, EntityManager;
|
|
16
|
+
var init_entity_manager = __esmMin((() => {
|
|
17
|
+
init_sonamu();
|
|
18
|
+
init_types();
|
|
19
|
+
init_async_utils();
|
|
20
|
+
init_esm_utils();
|
|
21
|
+
init_path_utils();
|
|
22
|
+
EntityManagerClass = class {
|
|
23
|
+
entities = new Map();
|
|
24
|
+
modulePaths = new Map();
|
|
25
|
+
tableSpecs = new Map();
|
|
26
|
+
isAutoloaded = false;
|
|
27
|
+
async autoload(_ = false) {
|
|
28
|
+
if (this.isAutoloaded) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const pathPattern = path.join(Sonamu.apiRootPath, "/src/application/**/*.entity.json");
|
|
32
|
+
for await (const file of glob(path.resolve(pathPattern))) {
|
|
33
|
+
const json = JSON.parse((await readFile(file)).toString());
|
|
34
|
+
const error = this.schemaValidate(json);
|
|
35
|
+
if (error) {
|
|
36
|
+
const relativePath = path.relative(Sonamu.apiRootPath, file);
|
|
37
|
+
const errorMessage = prettifyError(error);
|
|
38
|
+
console.error(chalk.red(`Invalid entity.json schema: ${relativePath}\n${chalk.yellow(errorMessage)}`));
|
|
39
|
+
}
|
|
40
|
+
await this.register(json, { deferSearchTextJsonSourceValidation: true });
|
|
41
|
+
}
|
|
42
|
+
await this.registerNonEntityTypeModulePaths();
|
|
43
|
+
await this.validateAllRegisteredSearchTextJsonSources();
|
|
44
|
+
this.isAutoloaded = true;
|
|
45
|
+
}
|
|
46
|
+
schemaValidate(json) {
|
|
47
|
+
const result = EntityJsonSchema.safeParse(json);
|
|
48
|
+
return result.success ? null : result.error;
|
|
49
|
+
}
|
|
50
|
+
async reload(doSilent = false) {
|
|
51
|
+
this.entities.clear();
|
|
52
|
+
this.modulePaths.clear();
|
|
53
|
+
this.tableSpecs.clear();
|
|
54
|
+
this.isAutoloaded = false;
|
|
55
|
+
return await this.autoload(doSilent);
|
|
56
|
+
}
|
|
57
|
+
async register(json, options = {}) {
|
|
58
|
+
const { Entity } = await import("./entity.js");
|
|
59
|
+
const entity = new Entity(json);
|
|
60
|
+
await entity.registerModulePaths();
|
|
61
|
+
if (!options.deferSearchTextJsonSourceValidation) {
|
|
62
|
+
await this.validateSearchTextJsonSources(entity);
|
|
63
|
+
}
|
|
64
|
+
entity.registerTableSpecs();
|
|
65
|
+
this.entities.set(json.id, entity);
|
|
66
|
+
}
|
|
67
|
+
async validateAllRegisteredSearchTextJsonSources() {
|
|
68
|
+
for (const entity of this.entities.values()) {
|
|
69
|
+
await this.validateSearchTextJsonSources(entity);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async validateSearchTextJsonSources(entity) {
|
|
73
|
+
const propsByName = new Map(entity.props.map((prop) => [prop.name, prop]));
|
|
74
|
+
for (const prop of entity.props) {
|
|
75
|
+
if (!isSearchTextProp(prop)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
for (const source of prop.sourceColumns) {
|
|
79
|
+
const sourceProp = propsByName.get(source.name);
|
|
80
|
+
if (!sourceProp || sourceProp.type !== "json") {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const zodType = await this.resolveSearchTextJsonSourceType(entity, sourceProp.id);
|
|
84
|
+
if (!zodType) {
|
|
85
|
+
throw new Error(`searchText source "${source.name}"의 json 타입 "${sourceProp.id}"을(를) 로드할 수 없습니다.`);
|
|
86
|
+
}
|
|
87
|
+
if (!isSearchTextJsonSourceZodType(zodType)) {
|
|
88
|
+
throw new Error(`searchText source "${source.name}"의 json 타입 "${sourceProp.id}"은(는) unwrap 후 z.array(z.string()) 이어야 합니다.`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async resolveSearchTextJsonSourceType(entity, typeId) {
|
|
94
|
+
const localType = entity.types[typeId];
|
|
95
|
+
if (localType instanceof z$1.ZodType) {
|
|
96
|
+
return localType;
|
|
97
|
+
}
|
|
98
|
+
for (const registeredEntity of this.entities.values()) {
|
|
99
|
+
const registeredType = registeredEntity.types[typeId];
|
|
100
|
+
if (registeredType instanceof z$1.ZodType) {
|
|
101
|
+
return registeredType;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (typeId === "SonamuFile") {
|
|
105
|
+
return SonamuFileSchema;
|
|
106
|
+
}
|
|
107
|
+
if (typeId === "SonamuFile[]") {
|
|
108
|
+
return SonamuFileArraySchema;
|
|
109
|
+
}
|
|
110
|
+
const modulePath = this.modulePaths.get(typeId);
|
|
111
|
+
if (!modulePath) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const moduleFilePath = path.join(Sonamu.apiRootPath, runtimePath(`dist/application/${modulePath}.js`));
|
|
115
|
+
const importedMembers = await importMembers(moduleFilePath);
|
|
116
|
+
const matched = importedMembers.find(({ name }) => name === typeId);
|
|
117
|
+
if (!matched || !(matched.value instanceof z$1.ZodType)) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return matched.value;
|
|
121
|
+
}
|
|
122
|
+
get(entityId) {
|
|
123
|
+
const entity = this.entities.get(entityId);
|
|
124
|
+
if (entity === undefined) {
|
|
125
|
+
throw new Error(`존재하지 않는 Entity 요청 ${entityId}`);
|
|
126
|
+
}
|
|
127
|
+
return entity;
|
|
128
|
+
}
|
|
129
|
+
getByTable(table) {
|
|
130
|
+
const entity = Array.from(this.entities.values()).find((entity$1) => entity$1.table === table);
|
|
131
|
+
if (entity === undefined) {
|
|
132
|
+
throw new Error(`존재하지 않는 Entity 요청 ${table}`);
|
|
133
|
+
}
|
|
134
|
+
return entity;
|
|
135
|
+
}
|
|
136
|
+
exists(entityId) {
|
|
137
|
+
const entity = this.entities.get(entityId);
|
|
138
|
+
return entity !== undefined;
|
|
139
|
+
}
|
|
140
|
+
getAllIds() {
|
|
141
|
+
return Array.from(EntityManager.entities.keys()).toSorted();
|
|
142
|
+
}
|
|
143
|
+
getAllEntities() {
|
|
144
|
+
return Array.from(this.entities.values());
|
|
145
|
+
}
|
|
146
|
+
getAllParentIds() {
|
|
147
|
+
return this.getAllIds().filter((entityId) => {
|
|
148
|
+
const entity = this.get(entityId);
|
|
149
|
+
return entity.parentId === undefined;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
getChildrenIds(parentId) {
|
|
153
|
+
return this.getAllIds().filter((entityId) => {
|
|
154
|
+
const entity = this.get(entityId);
|
|
155
|
+
return entity.parentId === parentId;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
setModulePath(key, modulePath) {
|
|
159
|
+
this.modulePaths.set(key, modulePath);
|
|
160
|
+
}
|
|
161
|
+
getModulePath(key) {
|
|
162
|
+
const modulePath = this.modulePaths.get(key);
|
|
163
|
+
if (modulePath === undefined) {
|
|
164
|
+
throw new Error(`존재하지 않는 모듈 패스 요청 ${key}`);
|
|
165
|
+
}
|
|
166
|
+
return modulePath;
|
|
167
|
+
}
|
|
168
|
+
setTableSpec(tableSpec) {
|
|
169
|
+
this.tableSpecs.set(tableSpec.name, tableSpec);
|
|
170
|
+
}
|
|
171
|
+
getTableSpec(key) {
|
|
172
|
+
const tableSpec = this.tableSpecs.get(key);
|
|
173
|
+
if (tableSpec === undefined) {
|
|
174
|
+
throw new Error(`존재하지 않는 테이블 스펙 요청 ${key}`);
|
|
175
|
+
}
|
|
176
|
+
return tableSpec;
|
|
177
|
+
}
|
|
178
|
+
getNamesFromId(entityId) {
|
|
179
|
+
const pluralized = inflection.pluralize(entityId) === entityId ? `${entityId}List` : inflection.pluralize(entityId);
|
|
180
|
+
return {
|
|
181
|
+
fs: inflection.dasherize(inflection.underscore(entityId)).toLowerCase(),
|
|
182
|
+
fsPlural: inflection.dasherize(inflection.underscore(pluralized)).toLowerCase(),
|
|
183
|
+
camel: inflection.camelize(entityId, true),
|
|
184
|
+
camelPlural: inflection.camelize(pluralized, true),
|
|
185
|
+
capital: entityId,
|
|
186
|
+
capitalPlural: pluralized,
|
|
187
|
+
upper: entityId.toUpperCase(),
|
|
188
|
+
constant: inflection.underscore(entityId).toUpperCase()
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* EntityId는 Model을 제외한 PascalCase 이름입니다. (ex. "User")
|
|
193
|
+
* @param filePath
|
|
194
|
+
* @returns
|
|
195
|
+
*/
|
|
196
|
+
getEntityIdFromPath(filePath) {
|
|
197
|
+
const matched = filePath.match(/application\/(.+)\//);
|
|
198
|
+
assert(matched?.[1]);
|
|
199
|
+
return inflection.camelize(matched[1].replace(/-/g, "_"));
|
|
200
|
+
}
|
|
201
|
+
async registerNonEntityTypeModulePaths() {
|
|
202
|
+
const typePathsPatterns = [path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.types.ts")), path.join(Sonamu.apiRootPath, runtimePath("src/application/**/*.generated.ts"))];
|
|
203
|
+
const typePaths = (await Promise.all(typePathsPatterns.map((pattern) => globAsync(pattern)))).flat();
|
|
204
|
+
for (const filePath of typePaths) {
|
|
205
|
+
const modulePath = this.getModulePathFromTypeFilePath(filePath);
|
|
206
|
+
const importedMembers = await importMembers(filePath);
|
|
207
|
+
for (const { name, value } of importedMembers) {
|
|
208
|
+
if (value instanceof z$1.ZodType) {
|
|
209
|
+
this.setModulePath(name, modulePath);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
getModulePathFromTypeFilePath(filePath) {
|
|
215
|
+
const normalizedPath = filePath.replaceAll("\\", "/");
|
|
216
|
+
const matched = normalizedPath.match(/\/(?:src|dist)\/application\/(.+)\.(?:ts|js)$/);
|
|
217
|
+
if (!matched?.[1]) {
|
|
218
|
+
throw new Error(`타입 파일의 모듈 경로를 계산할 수 없습니다: ${filePath}`);
|
|
219
|
+
}
|
|
220
|
+
return matched[1];
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
EntityManager = new EntityManagerClass();
|
|
224
|
+
}));
|
|
225
225
|
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRpdHkvZW50aXR5LW1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyBnbG9iLCByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBwcmV0dGlmeUVycm9yLCB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW50aXR5SW5kZXgsXG4gIHR5cGUgRW50aXR5SnNvbixcbiAgRW50aXR5SnNvblNjaGVtYSxcbiAgaXNTZWFyY2hUZXh0SnNvblNvdXJjZVpvZFR5cGUsXG4gIGlzU2VhcmNoVGV4dFByb3AsXG4gIFNvbmFtdUZpbGVBcnJheVNjaGVtYSxcbiAgU29uYW11RmlsZVNjaGVtYSxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGltcG9ydE1lbWJlcnMgfSBmcm9tIFwiLi4vdXRpbHMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW50aW1lUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tIFwiLi9lbnRpdHlcIjtcblxuZXhwb3J0IHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgPSBSZWNvcmQ8XG4gIFwiZnNcIiB8IFwiZnNQbHVyYWxcIiB8IFwiY2FtZWxcIiB8IFwiY2FtZWxQbHVyYWxcIiB8IFwiY2FwaXRhbFwiIHwgXCJjYXBpdGFsUGx1cmFsXCIgfCBcInVwcGVyXCIgfCBcImNvbnN0YW50XCIsXG4gIHN0cmluZ1xuPjtcbmV4cG9ydCB0eXBlIFRhYmxlU3BlYyA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB1bmlxdWVJbmRleGVzOiBFbnRpdHlJbmRleFtdO1xuICBqc29uQ29sdW1uczogc3RyaW5nW107XG59O1xuY2xhc3MgRW50aXR5TWFuYWdlckNsYXNzIHtcbiAgcHJpdmF0ZSBlbnRpdGllczogTWFwPHN0cmluZywgRW50aXR5PiA9IG5ldyBNYXAoKTtcbiAgcHVibGljIG1vZHVsZVBhdGhzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHRhYmxlU3BlY3M6IE1hcDxzdHJpbmcsIFRhYmxlU3BlYz4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBpc0F1dG9sb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyDqsr3roZwg7KCE64us67Cb7JWEIOuqqOuToCBlbnRpdHkuanNvbiDtjIzsnbwg66Gc65OcXG4gIGFzeW5jIGF1dG9sb2FkKF86IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGlmICh0aGlzLmlzQXV0b2xvYWRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYXRoUGF0dGVybiA9IHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIFwiL3NyYy9hcHBsaWNhdGlvbi8qKi8qLmVudGl0eS5qc29uXCIpO1xuXG4gICAgZm9yIGF3YWl0IChjb25zdCBmaWxlIG9mIGdsb2IocGF0aC5yZXNvbHZlKHBhdGhQYXR0ZXJuKSkpIHtcbiAgICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKChhd2FpdCByZWFkRmlsZShmaWxlKSkudG9TdHJpbmcoKSk7XG5cbiAgICAgIC8vIGVudGl0eS5qc29uIOyKpO2CpOuniCDqsoDspp1cbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5zY2hlbWFWYWxpZGF0ZShqc29uKTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKFNvbmFtdS5hcGlSb290UGF0aCwgZmlsZSk7XG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHByZXR0aWZ5RXJyb3IoZXJyb3IpO1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIGNoYWxrLnJlZChgSW52YWxpZCBlbnRpdHkuanNvbiBzY2hlbWE6ICR7cmVsYXRpdmVQYXRofVxcbiR7Y2hhbGsueWVsbG93KGVycm9yTWVzc2FnZSl9YCksXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXIoanNvbiwgeyBkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbjogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyTm9uRW50aXR5VHlwZU1vZHVsZVBhdGhzKCk7XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZUFsbFJlZ2lzdGVyZWRTZWFyY2hUZXh0SnNvblNvdXJjZXMoKTtcblxuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNjaGVtYVZhbGlkYXRlKGpzb246IHVua25vd24pIHtcbiAgICBjb25zdCByZXN1bHQgPSBFbnRpdHlKc29uU2NoZW1hLnNhZmVQYXJzZShqc29uKTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyBudWxsIDogcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkKGRvU2lsZW50OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLmVudGl0aWVzLmNsZWFyKCk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5jbGVhcigpO1xuICAgIHRoaXMudGFibGVTcGVjcy5jbGVhcigpO1xuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hdXRvbG9hZChkb1NpbGVudCk7XG4gIH1cblxuICBhc3luYyByZWdpc3RlcihcbiAgICBqc29uOiBFbnRpdHlKc29uLFxuICAgIG9wdGlvbnM6IHsgZGVmZXJTZWFyY2hUZXh0SnNvblNvdXJjZVZhbGlkYXRpb24/OiBib29sZWFuIH0gPSB7fSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocygpO1xuICAgIGlmICghb3B0aW9ucy5kZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHkpO1xuICAgIH1cbiAgICBlbnRpdHkucmVnaXN0ZXJUYWJsZVNwZWNzKCk7XG4gICAgdGhpcy5lbnRpdGllcy5zZXQoanNvbi5pZCwgZW50aXR5KTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByb3BzQnlOYW1lID0gbmV3IE1hcChlbnRpdHkucHJvcHMubWFwKChwcm9wKSA9PiBbcHJvcC5uYW1lLCBwcm9wXSkpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGVudGl0eS5wcm9wcykge1xuICAgICAgaWYgKCFpc1NlYXJjaFRleHRQcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBwcm9wLnNvdXJjZUNvbHVtbnMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlUHJvcCA9IHByb3BzQnlOYW1lLmdldChzb3VyY2UubmFtZSk7XG4gICAgICAgIGlmICghc291cmNlUHJvcCB8fCBzb3VyY2VQcm9wLnR5cGUgIT09IFwianNvblwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6b2RUeXBlID0gYXdhaXQgdGhpcy5yZXNvbHZlU2VhcmNoVGV4dEpzb25Tb3VyY2VUeXBlKGVudGl0eSwgc291cmNlUHJvcC5pZCk7XG4gICAgICAgIGlmICghem9kVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzZWFyY2hUZXh0IHNvdXJjZSBcIiR7c291cmNlLm5hbWV9XCLsnZgganNvbiDtg4DsnoUgXCIke3NvdXJjZVByb3AuaWR9XCLsnYQo66W8KSDroZzrk5ztlaAg7IiYIOyXhuyKteuLiOuLpC5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlKHpvZFR5cGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNlYXJjaFRleHQgc291cmNlIFwiJHtzb3VyY2UubmFtZX1cIuydmCBqc29uIO2DgOyehSBcIiR7c291cmNlUHJvcC5pZH1cIuydgCjripQpIHVud3JhcCDtm4Qgei5hcnJheSh6LnN0cmluZygpKSDsnbTslrTslbwg7ZWp64uI64ukLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0eXBlSWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx6LlpvZFR5cGVBbnkgfCBudWxsPiB7XG4gICAgY29uc3QgbG9jYWxUeXBlID0gZW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgaWYgKGxvY2FsVHlwZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgcmV0dXJuIGxvY2FsVHlwZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlZ2lzdGVyZWRFbnRpdHkgb2YgdGhpcy5lbnRpdGllcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgcmVnaXN0ZXJlZFR5cGUgPSByZWdpc3RlcmVkRW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgICBpZiAocmVnaXN0ZXJlZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyZWRUeXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlSWQgPT09IFwiU29uYW11RmlsZVwiKSB7XG4gICAgICByZXR1cm4gU29uYW11RmlsZVNjaGVtYTtcbiAgICB9XG4gICAgaWYgKHR5cGVJZCA9PT0gXCJTb25hbXVGaWxlW11cIikge1xuICAgICAgcmV0dXJuIFNvbmFtdUZpbGVBcnJheVNjaGVtYTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQodHlwZUlkKTtcbiAgICBpZiAoIW1vZHVsZVBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgU29uYW11LmFwaVJvb3RQYXRoLFxuICAgICAgcnVudGltZVBhdGgoYGRpc3QvYXBwbGljYXRpb24vJHttb2R1bGVQYXRofS5qc2ApLFxuICAgICk7XG4gICAgY29uc3QgaW1wb3J0ZWRNZW1iZXJzID0gYXdhaXQgaW1wb3J0TWVtYmVyczx1bmtub3duPihtb2R1bGVGaWxlUGF0aCk7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGltcG9ydGVkTWVtYmVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdHlwZUlkKTtcbiAgICBpZiAoIW1hdGNoZWQgfHwgIShtYXRjaGVkLnZhbHVlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWQudmFsdWU7XG4gIH1cblxuICBnZXQoZW50aXR5SWQ6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdGllcy5nZXQoZW50aXR5SWQpO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZ2V0QnlUYWJsZSh0YWJsZTogc3RyaW5nKTogRW50aXR5IHtcbiAgICBjb25zdCBlbnRpdHkgPSBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpLmZpbmQoKGVudGl0eSkgPT4gZW50aXR5LnRhYmxlID09PSB0YWJsZSk7XG4gICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgRW50aXR5IOyalOyyrSAke3RhYmxlfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBleGlzdHMoZW50aXR5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICByZXR1cm4gZW50aXR5ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBbGxJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKEVudGl0eU1hbmFnZXIuZW50aXRpZXMua2V5cygpKS5zb3J0KCk7XG4gIH1cblxuICBnZXRBbGxFbnRpdGllcygpOiBFbnRpdHlbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRpdGllcy52YWx1ZXMoKSk7XG4gIH1cblxuICBnZXRBbGxQYXJlbnRJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENoaWxkcmVuSWRzKHBhcmVudElkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsSWRzKCkuZmlsdGVyKChlbnRpdHlJZCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5nZXQoZW50aXR5SWQpO1xuICAgICAgcmV0dXJuIGVudGl0eS5wYXJlbnRJZCA9PT0gcGFyZW50SWQ7XG4gICAgfSk7XG4gIH1cblxuICBzZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nLCBtb2R1bGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmRlYnVnKGNoYWxrLmN5YW4oYHNldE1vZHVsZVBhdGggOjogJHtrZXl9IDo6ICR7bW9kdWxlUGF0aH1gKSk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5zZXQoa2V5LCBtb2R1bGVQYXRoKTtcbiAgfVxuXG4gIGdldE1vZHVsZVBhdGgoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLm1vZHVsZVBhdGhzLmdldChrZXkpO1xuICAgIGlmIChtb2R1bGVQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDrqqjrk4gg7Yyo7IqkIOyalOyyrSAke2tleX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kdWxlUGF0aDtcbiAgfVxuXG4gIHNldFRhYmxlU3BlYyh0YWJsZVNwZWM6IFRhYmxlU3BlYykge1xuICAgIHRoaXMudGFibGVTcGVjcy5zZXQodGFibGVTcGVjLm5hbWUsIHRhYmxlU3BlYyk7XG4gIH1cblxuICBnZXRUYWJsZVNwZWMoa2V5OiBzdHJpbmcpOiBUYWJsZVNwZWMge1xuICAgIGNvbnN0IHRhYmxlU3BlYyA9IHRoaXMudGFibGVTcGVjcy5nZXQoa2V5KTtcbiAgICBpZiAodGFibGVTcGVjID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDthYzsnbTruJQg7Iqk7Y6ZIOyalOyyrSAke2tleX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVTcGVjO1xuICB9XG5cbiAgZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQ6IHN0cmluZyk6IEVudGl0eU5hbWVzUmVjb3JkIHtcbiAgICAvLyBlbnRpdHlJZOqwgCDri6jrs7XsiJgg64+Z7ZiVIOuLqOyWtOyduCDqsr3smrAgTGlzdCDrtpnsl6zshJwg7IOd7ISxXG4gICAgY29uc3QgcGx1cmFsaXplZCA9XG4gICAgICBpbmZsZWN0aW9uLnBsdXJhbGl6ZShlbnRpdHlJZCkgPT09IGVudGl0eUlkXG4gICAgICAgID8gYCR7ZW50aXR5SWR9TGlzdGBcbiAgICAgICAgOiBpbmZsZWN0aW9uLnBsdXJhbGl6ZShlbnRpdHlJZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZnM6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShlbnRpdHlJZCkpLnRvTG93ZXJDYXNlKCksXG4gICAgICBmc1BsdXJhbDogaW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBsdXJhbGl6ZWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgY2FtZWw6IGluZmxlY3Rpb24uY2FtZWxpemUoZW50aXR5SWQsIHRydWUpLFxuICAgICAgY2FtZWxQbHVyYWw6IGluZmxlY3Rpb24uY2FtZWxpemUocGx1cmFsaXplZCwgdHJ1ZSksXG4gICAgICBjYXBpdGFsOiBlbnRpdHlJZCxcbiAgICAgIGNhcGl0YWxQbHVyYWw6IHBsdXJhbGl6ZWQsXG4gICAgICB1cHBlcjogZW50aXR5SWQudG9VcHBlckNhc2UoKSxcbiAgICAgIGNvbnN0YW50OiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpLnRvVXBwZXJDYXNlKCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnRpdHlJZOuKlCBNb2RlbOydhCDsoJzsmbjtlZwgUGFzY2FsQ2FzZSDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyXCIpXG4gICAqIEBwYXJhbSBmaWxlUGF0aFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0RW50aXR5SWRGcm9tUGF0aChmaWxlUGF0aDogQWJzb2x1dGVQYXRoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXRjaGVkID0gZmlsZVBhdGgubWF0Y2goL2FwcGxpY2F0aW9uXFwvKC4rKVxcLy8pO1xuICAgIGFzc2VydChtYXRjaGVkPy5bMV0pO1xuICAgIHJldHVybiBpbmZsZWN0aW9uLmNhbWVsaXplKG1hdGNoZWRbMV0ucmVwbGFjZSgvLS9nLCBcIl9cIikpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWdpc3Rlck5vbkVudGl0eVR5cGVNb2R1bGVQYXRocygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0eXBlUGF0aHNQYXR0ZXJucyA9IFtcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIHJ1bnRpbWVQYXRoKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIikpLFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi5nZW5lcmF0ZWQudHNcIikpLFxuICAgIF07XG4gICAgY29uc3QgdHlwZVBhdGhzID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodHlwZVBhdGhzUGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBnbG9iQXN5bmMocGF0dGVybikpKVxuICAgICkuZmxhdCgpO1xuXG4gICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB0eXBlUGF0aHMpIHtcbiAgICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLmdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IGltcG9ydGVkTWVtYmVycyA9IGF3YWl0IGltcG9ydE1lbWJlcnM8dW5rbm93bj4oZmlsZVBhdGgpO1xuICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgaW1wb3J0ZWRNZW1iZXJzKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgICAgIHRoaXMuc2V0TW9kdWxlUGF0aChuYW1lLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kdWxlUGF0aEZyb21UeXBlRmlsZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBmaWxlUGF0aC5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIik7XG4gICAgY29uc3QgbWF0Y2hlZCA9IG5vcm1hbGl6ZWRQYXRoLm1hdGNoKC9cXC8oPzpzcmN8ZGlzdClcXC9hcHBsaWNhdGlvblxcLyguKylcXC4oPzp0c3xqcykkLyk7XG5cbiAgICBpZiAoIW1hdGNoZWQ/LlsxXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDtg4DsnoUg7YyM7J287J2YIOuqqOuTiCDqsr3roZzrpbwg6rOE7IKw7ZWgIOyImCDsl4bsirXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWRbMV07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVudGl0eU1hbmFnZXIgPSBuZXcgRW50aXR5TWFuYWdlckNsYXNzKCk7XG4iXSwibmFtZXMiOlsiYXNzZXJ0IiwiY2hhbGsiLCJnbG9iIiwicmVhZEZpbGUiLCJpbmZsZWN0aW9uIiwicGF0aCIsInByZXR0aWZ5RXJyb3IiLCJ6IiwiU29uYW11IiwiRW50aXR5SnNvblNjaGVtYSIsImlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlIiwiaXNTZWFyY2hUZXh0UHJvcCIsIlNvbmFtdUZpbGVBcnJheVNjaGVtYSIsIlNvbmFtdUZpbGVTY2hlbWEiLCJnbG9iQXN5bmMiLCJpbXBvcnRNZW1iZXJzIiwicnVudGltZVBhdGgiLCJFbnRpdHkiLCJFbnRpdHlNYW5hZ2VyQ2xhc3MiLCJlbnRpdGllcyIsIk1hcCIsIm1vZHVsZVBhdGhzIiwidGFibGVTcGVjcyIsImlzQXV0b2xvYWRlZCIsImF1dG9sb2FkIiwiXyIsInBhdGhQYXR0ZXJuIiwiam9pbiIsImFwaVJvb3RQYXRoIiwiZmlsZSIsInJlc29sdmUiLCJqc29uIiwiSlNPTiIsInBhcnNlIiwidG9TdHJpbmciLCJlcnJvciIsInNjaGVtYVZhbGlkYXRlIiwicmVsYXRpdmVQYXRoIiwicmVsYXRpdmUiLCJlcnJvck1lc3NhZ2UiLCJjb25zb2xlIiwicmVkIiwieWVsbG93IiwicmVnaXN0ZXIiLCJkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbiIsInJlZ2lzdGVyTm9uRW50aXR5VHlwZU1vZHVsZVBhdGhzIiwidmFsaWRhdGVBbGxSZWdpc3RlcmVkU2VhcmNoVGV4dEpzb25Tb3VyY2VzIiwicmVzdWx0Iiwic2FmZVBhcnNlIiwic3VjY2VzcyIsInJlbG9hZCIsImRvU2lsZW50IiwiY2xlYXIiLCJvcHRpb25zIiwiZW50aXR5IiwicmVnaXN0ZXJNb2R1bGVQYXRocyIsInZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzIiwicmVnaXN0ZXJUYWJsZVNwZWNzIiwic2V0IiwiaWQiLCJ2YWx1ZXMiLCJwcm9wc0J5TmFtZSIsInByb3BzIiwibWFwIiwicHJvcCIsIm5hbWUiLCJzb3VyY2UiLCJzb3VyY2VDb2x1bW5zIiwic291cmNlUHJvcCIsImdldCIsInR5cGUiLCJ6b2RUeXBlIiwicmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZSIsIkVycm9yIiwidHlwZUlkIiwibG9jYWxUeXBlIiwidHlwZXMiLCJab2RUeXBlIiwicmVnaXN0ZXJlZEVudGl0eSIsInJlZ2lzdGVyZWRUeXBlIiwibW9kdWxlUGF0aCIsIm1vZHVsZUZpbGVQYXRoIiwiaW1wb3J0ZWRNZW1iZXJzIiwibWF0Y2hlZCIsImZpbmQiLCJ2YWx1ZSIsImVudGl0eUlkIiwidW5kZWZpbmVkIiwiZ2V0QnlUYWJsZSIsInRhYmxlIiwiQXJyYXkiLCJmcm9tIiwiZXhpc3RzIiwiZ2V0QWxsSWRzIiwiRW50aXR5TWFuYWdlciIsImtleXMiLCJzb3J0IiwiZ2V0QWxsRW50aXRpZXMiLCJnZXRBbGxQYXJlbnRJZHMiLCJmaWx0ZXIiLCJwYXJlbnRJZCIsImdldENoaWxkcmVuSWRzIiwic2V0TW9kdWxlUGF0aCIsImtleSIsImdldE1vZHVsZVBhdGgiLCJzZXRUYWJsZVNwZWMiLCJ0YWJsZVNwZWMiLCJnZXRUYWJsZVNwZWMiLCJnZXROYW1lc0Zyb21JZCIsInBsdXJhbGl6ZWQiLCJwbHVyYWxpemUiLCJmcyIsImRhc2hlcml6ZSIsInVuZGVyc2NvcmUiLCJ0b0xvd2VyQ2FzZSIsImZzUGx1cmFsIiwiY2FtZWwiLCJjYW1lbGl6ZSIsImNhbWVsUGx1cmFsIiwiY2FwaXRhbCIsImNhcGl0YWxQbHVyYWwiLCJ1cHBlciIsInRvVXBwZXJDYXNlIiwiY29uc3RhbnQiLCJnZXRFbnRpdHlJZEZyb21QYXRoIiwiZmlsZVBhdGgiLCJtYXRjaCIsInJlcGxhY2UiLCJ0eXBlUGF0aHNQYXR0ZXJucyIsInR5cGVQYXRocyIsIlByb21pc2UiLCJhbGwiLCJwYXR0ZXJuIiwiZmxhdCIsImdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoIiwibm9ybWFsaXplZFBhdGgiLCJyZXBsYWNlQWxsIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxZQUFZLFNBQVM7QUFDNUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVNDLElBQUksRUFBRUMsUUFBUSxRQUFRLG1CQUFjO0FBQzdDLE9BQU9DLGdCQUFnQixhQUFhO0FBQ3BD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
|
|
226
|
+
//#endregion
|
|
227
|
+
init_entity_manager();
|
|
228
|
+
export { EntityManager, init_entity_manager };
|
|
229
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hbmFnZXIuanMiLCJuYW1lcyI6WyJ6IiwiZW50aXR5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9lbnRpdHktbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IGdsb2IsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgcHJldHRpZnlFcnJvciwgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7XG4gIEVudGl0eUpzb25TY2hlbWEsXG4gIGlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlLFxuICBpc1NlYXJjaFRleHRQcm9wLFxuICBTb25hbXVGaWxlQXJyYXlTY2hlbWEsXG4gIFNvbmFtdUZpbGVTY2hlbWEsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlJbmRleCwgdHlwZSBFbnRpdHlKc29uIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGltcG9ydE1lbWJlcnMgfSBmcm9tIFwiLi4vdXRpbHMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW50aW1lUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuL2VudGl0eVwiO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCA9IFJlY29yZDxcbiAgXCJmc1wiIHwgXCJmc1BsdXJhbFwiIHwgXCJjYW1lbFwiIHwgXCJjYW1lbFBsdXJhbFwiIHwgXCJjYXBpdGFsXCIgfCBcImNhcGl0YWxQbHVyYWxcIiB8IFwidXBwZXJcIiB8IFwiY29uc3RhbnRcIixcbiAgc3RyaW5nXG4+O1xuZXhwb3J0IHR5cGUgVGFibGVTcGVjID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVuaXF1ZUluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIGpzb25Db2x1bW5zOiBzdHJpbmdbXTtcbn07XG5jbGFzcyBFbnRpdHlNYW5hZ2VyQ2xhc3Mge1xuICBwcml2YXRlIGVudGl0aWVzOiBNYXA8c3RyaW5nLCBFbnRpdHk+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgbW9kdWxlUGF0aHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgdGFibGVTcGVjczogTWFwPHN0cmluZywgVGFibGVTcGVjPiA9IG5ldyBNYXAoKTtcbiAgcHVibGljIGlzQXV0b2xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIOqyveuhnCDsoITri6zrsJvslYQg66qo65OgIGVudGl0eS5qc29uIO2MjOydvCDroZzrk5xcbiAgYXN5bmMgYXV0b2xvYWQoXzogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuaXNBdXRvbG9hZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhdGhQYXR0ZXJuID0gcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCIvc3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIik7XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZ2xvYihwYXRoLnJlc29sdmUocGF0aFBhdHRlcm4pKSkge1xuICAgICAgY29uc3QganNvbiA9IEpTT04ucGFyc2UoKGF3YWl0IHJlYWRGaWxlKGZpbGUpKS50b1N0cmluZygpKTtcblxuICAgICAgLy8gZW50aXR5Lmpzb24g7Iqk7YKk66eIIOqygOymnVxuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnNjaGVtYVZhbGlkYXRlKGpzb24pO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoU29uYW11LmFwaVJvb3RQYXRoLCBmaWxlKTtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gcHJldHRpZnlFcnJvcihlcnJvcik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgY2hhbGsucmVkKGBJbnZhbGlkIGVudGl0eS5qc29uIHNjaGVtYTogJHtyZWxhdGl2ZVBhdGh9XFxuJHtjaGFsay55ZWxsb3coZXJyb3JNZXNzYWdlKX1gKSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5yZWdpc3Rlcihqc29uLCB7IGRlZmVyU2VhcmNoVGV4dEpzb25Tb3VyY2VWYWxpZGF0aW9uOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTtcbiAgICBhd2FpdCB0aGlzLnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpO1xuXG4gICAgdGhpcy5pc0F1dG9sb2FkZWQgPSB0cnVlO1xuICB9XG5cbiAgc2NoZW1hVmFsaWRhdGUoanNvbjogdW5rbm93bikge1xuICAgIGNvbnN0IHJlc3VsdCA9IEVudGl0eUpzb25TY2hlbWEuc2FmZVBhcnNlKGpzb24pO1xuICAgIHJldHVybiByZXN1bHQuc3VjY2VzcyA/IG51bGwgOiByZXN1bHQuZXJyb3I7XG4gIH1cblxuICBhc3luYyByZWxvYWQoZG9TaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMuZW50aXRpZXMuY2xlYXIoKTtcbiAgICB0aGlzLm1vZHVsZVBhdGhzLmNsZWFyKCk7XG4gICAgdGhpcy50YWJsZVNwZWNzLmNsZWFyKCk7XG4gICAgdGhpcy5pc0F1dG9sb2FkZWQgPSBmYWxzZTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmF1dG9sb2FkKGRvU2lsZW50KTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyKFxuICAgIGpzb246IEVudGl0eUpzb24sXG4gICAgb3B0aW9uczogeyBkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbj86IGJvb2xlYW4gfSA9IHt9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IEVudGl0eSB9ID0gYXdhaXQgaW1wb3J0KFwiLi9lbnRpdHlcIik7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocygpO1xuICAgIGlmICghb3B0aW9ucy5kZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHkpO1xuICAgIH1cbiAgICBlbnRpdHkucmVnaXN0ZXJUYWJsZVNwZWNzKCk7XG4gICAgdGhpcy5lbnRpdGllcy5zZXQoanNvbi5pZCwgZW50aXR5KTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZVNlYXJjaFRleHRKc29uU291cmNlcyhlbnRpdHk6IEVudGl0eSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByb3BzQnlOYW1lID0gbmV3IE1hcChlbnRpdHkucHJvcHMubWFwKChwcm9wKSA9PiBbcHJvcC5uYW1lLCBwcm9wXSkpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGVudGl0eS5wcm9wcykge1xuICAgICAgaWYgKCFpc1NlYXJjaFRleHRQcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBwcm9wLnNvdXJjZUNvbHVtbnMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlUHJvcCA9IHByb3BzQnlOYW1lLmdldChzb3VyY2UubmFtZSk7XG4gICAgICAgIGlmICghc291cmNlUHJvcCB8fCBzb3VyY2VQcm9wLnR5cGUgIT09IFwianNvblwiKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6b2RUeXBlID0gYXdhaXQgdGhpcy5yZXNvbHZlU2VhcmNoVGV4dEpzb25Tb3VyY2VUeXBlKGVudGl0eSwgc291cmNlUHJvcC5pZCk7XG4gICAgICAgIGlmICghem9kVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzZWFyY2hUZXh0IHNvdXJjZSBcIiR7c291cmNlLm5hbWV9XCLsnZgganNvbiDtg4DsnoUgXCIke3NvdXJjZVByb3AuaWR9XCLsnYQo66W8KSDroZzrk5ztlaAg7IiYIOyXhuyKteuLiOuLpC5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlKHpvZFR5cGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNlYXJjaFRleHQgc291cmNlIFwiJHtzb3VyY2UubmFtZX1cIuydmCBqc29uIO2DgOyehSBcIiR7c291cmNlUHJvcC5pZH1cIuydgCjripQpIHVud3JhcCDtm4Qgei5hcnJheSh6LnN0cmluZygpKSDsnbTslrTslbwg7ZWp64uI64ukLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0eXBlSWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTx6LlpvZFR5cGVBbnkgfCBudWxsPiB7XG4gICAgY29uc3QgbG9jYWxUeXBlID0gZW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgaWYgKGxvY2FsVHlwZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgcmV0dXJuIGxvY2FsVHlwZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHJlZ2lzdGVyZWRFbnRpdHkgb2YgdGhpcy5lbnRpdGllcy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgcmVnaXN0ZXJlZFR5cGUgPSByZWdpc3RlcmVkRW50aXR5LnR5cGVzW3R5cGVJZF07XG4gICAgICBpZiAocmVnaXN0ZXJlZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lzdGVyZWRUeXBlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlSWQgPT09IFwiU29uYW11RmlsZVwiKSB7XG4gICAgICByZXR1cm4gU29uYW11RmlsZVNjaGVtYTtcbiAgICB9XG4gICAgaWYgKHR5cGVJZCA9PT0gXCJTb25hbXVGaWxlW11cIikge1xuICAgICAgcmV0dXJuIFNvbmFtdUZpbGVBcnJheVNjaGVtYTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQodHlwZUlkKTtcbiAgICBpZiAoIW1vZHVsZVBhdGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZUZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgU29uYW11LmFwaVJvb3RQYXRoLFxuICAgICAgcnVudGltZVBhdGgoYGRpc3QvYXBwbGljYXRpb24vJHttb2R1bGVQYXRofS5qc2ApLFxuICAgICk7XG4gICAgY29uc3QgaW1wb3J0ZWRNZW1iZXJzID0gYXdhaXQgaW1wb3J0TWVtYmVyczx1bmtub3duPihtb2R1bGVGaWxlUGF0aCk7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGltcG9ydGVkTWVtYmVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdHlwZUlkKTtcbiAgICBpZiAoIW1hdGNoZWQgfHwgIShtYXRjaGVkLnZhbHVlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWQudmFsdWU7XG4gIH1cblxuICBnZXQoZW50aXR5SWQ6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdGllcy5nZXQoZW50aXR5SWQpO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHtlbnRpdHlJZH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZ2V0QnlUYWJsZSh0YWJsZTogc3RyaW5nKTogRW50aXR5IHtcbiAgICBjb25zdCBlbnRpdHkgPSBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpLmZpbmQoKGVudGl0eSkgPT4gZW50aXR5LnRhYmxlID09PSB0YWJsZSk7XG4gICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgRW50aXR5IOyalOyyrSAke3RhYmxlfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBleGlzdHMoZW50aXR5SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICByZXR1cm4gZW50aXR5ICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBbGxJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKEVudGl0eU1hbmFnZXIuZW50aXRpZXMua2V5cygpKS50b1NvcnRlZCgpO1xuICB9XG5cbiAgZ2V0QWxsRW50aXRpZXMoKTogRW50aXR5W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50aXRpZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50SWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxJZHMoKS5maWx0ZXIoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldChlbnRpdHlJZCk7XG4gICAgICByZXR1cm4gZW50aXR5LnBhcmVudElkID09PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDaGlsZHJlbklkcyhwYXJlbnRJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHBhcmVudElkO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0TW9kdWxlUGF0aChrZXk6IHN0cmluZywgbW9kdWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gY29uc29sZS5kZWJ1ZyhjaGFsay5jeWFuKGBzZXRNb2R1bGVQYXRoIDo6ICR7a2V5fSA6OiAke21vZHVsZVBhdGh9YCkpO1xuICAgIHRoaXMubW9kdWxlUGF0aHMuc2V0KGtleSwgbW9kdWxlUGF0aCk7XG4gIH1cblxuICBnZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5tb2R1bGVQYXRocy5nZXQoa2V5KTtcbiAgICBpZiAobW9kdWxlUGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg66qo65OIIO2MqOyKpCDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZVBhdGg7XG4gIH1cblxuICBzZXRUYWJsZVNwZWModGFibGVTcGVjOiBUYWJsZVNwZWMpIHtcbiAgICB0aGlzLnRhYmxlU3BlY3Muc2V0KHRhYmxlU3BlYy5uYW1lLCB0YWJsZVNwZWMpO1xuICB9XG5cbiAgZ2V0VGFibGVTcGVjKGtleTogc3RyaW5nKTogVGFibGVTcGVjIHtcbiAgICBjb25zdCB0YWJsZVNwZWMgPSB0aGlzLnRhYmxlU3BlY3MuZ2V0KGtleSk7XG4gICAgaWYgKHRhYmxlU3BlYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQg7YWM7J2067iUIOyKpO2OmSDsmpTssq0gJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlU3BlYztcbiAgfVxuXG4gIGdldE5hbWVzRnJvbUlkKGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHlOYW1lc1JlY29yZCB7XG4gICAgLy8gZW50aXR5SWTqsIAg64uo67O17IiYIOuPme2YlSDri6jslrTsnbgg6rK97JqwIExpc3Qg67aZ7Jes7IScIOyDneyEsVxuICAgIGNvbnN0IHBsdXJhbGl6ZWQgPVxuICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpID09PSBlbnRpdHlJZFxuICAgICAgICA/IGAke2VudGl0eUlkfUxpc3RgXG4gICAgICAgIDogaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZzOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZnNQbHVyYWw6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShwbHVyYWxpemVkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGNhbWVsOiBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eUlkLCB0cnVlKSxcbiAgICAgIGNhbWVsUGx1cmFsOiBpbmZsZWN0aW9uLmNhbWVsaXplKHBsdXJhbGl6ZWQsIHRydWUpLFxuICAgICAgY2FwaXRhbDogZW50aXR5SWQsXG4gICAgICBjYXBpdGFsUGx1cmFsOiBwbHVyYWxpemVkLFxuICAgICAgdXBwZXI6IGVudGl0eUlkLnRvVXBwZXJDYXNlKCksXG4gICAgICBjb25zdGFudDogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKS50b1VwcGVyQ2FzZSgpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRW50aXR5SWTripQgTW9kZWzsnYQg7KCc7Jm47ZWcIFBhc2NhbENhc2Ug7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlclwiKVxuICAgKiBAcGFyYW0gZmlsZVBhdGhcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldEVudGl0eUlkRnJvbVBhdGgoZmlsZVBhdGg6IEFic29sdXRlUGF0aCk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF0Y2hlZCA9IGZpbGVQYXRoLm1hdGNoKC9hcHBsaWNhdGlvblxcLyguKylcXC8vKTtcbiAgICBhc3NlcnQobWF0Y2hlZD8uWzFdKTtcbiAgICByZXR1cm4gaW5mbGVjdGlvbi5jYW1lbGl6ZShtYXRjaGVkWzFdLnJlcGxhY2UoLy0vZywgXCJfXCIpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdHlwZVBhdGhzUGF0dGVybnMgPSBbXG4gICAgICBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBydW50aW1lUGF0aChcInNyYy9hcHBsaWNhdGlvbi8qKi8qLnR5cGVzLnRzXCIpKSxcbiAgICAgIHBhdGguam9pbihTb25hbXUuYXBpUm9vdFBhdGgsIHJ1bnRpbWVQYXRoKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLnRzXCIpKSxcbiAgICBdO1xuICAgIGNvbnN0IHR5cGVQYXRocyA9IChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHR5cGVQYXRoc1BhdHRlcm5zLm1hcCgocGF0dGVybikgPT4gZ2xvYkFzeW5jKHBhdHRlcm4pKSlcbiAgICApLmZsYXQoKTtcblxuICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgdHlwZVBhdGhzKSB7XG4gICAgICBjb25zdCBtb2R1bGVQYXRoID0gdGhpcy5nZXRNb2R1bGVQYXRoRnJvbVR5cGVGaWxlUGF0aChmaWxlUGF0aCk7XG4gICAgICBjb25zdCBpbXBvcnRlZE1lbWJlcnMgPSBhd2FpdCBpbXBvcnRNZW1iZXJzPHVua25vd24+KGZpbGVQYXRoKTtcbiAgICAgIGZvciAoY29uc3QgeyBuYW1lLCB2YWx1ZSB9IG9mIGltcG9ydGVkTWVtYmVycykge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpIHtcbiAgICAgICAgICB0aGlzLnNldE1vZHVsZVBhdGgobmFtZSwgbW9kdWxlUGF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gZmlsZVBhdGgucmVwbGFjZUFsbChcIlxcXFxcIiwgXCIvXCIpO1xuICAgIGNvbnN0IG1hdGNoZWQgPSBub3JtYWxpemVkUGF0aC5tYXRjaCgvXFwvKD86c3JjfGRpc3QpXFwvYXBwbGljYXRpb25cXC8oLispXFwuKD86dHN8anMpJC8pO1xuXG4gICAgaWYgKCFtYXRjaGVkPy5bMV0pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7YOA7J6FIO2MjOydvOydmCDrqqjrk4gg6rK966Gc66W8IOqzhOyCsO2VoCDsiJgg7JeG7Iq164uI64ukOiAke2ZpbGVQYXRofWApO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVkWzFdO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBFbnRpdHlNYW5hZ2VyID0gbmV3IEVudGl0eU1hbmFnZXJDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O2NBUXVDO2FBT2Y7bUJBRXlCO2lCQUNFO2tCQUVEO0NBWTVDLHFCQUFOLE1BQXlCO0VBQ3ZCLEFBQVEsV0FBZ0MsSUFBSSxLQUFLO0VBQ2pELEFBQU8sY0FBbUMsSUFBSSxLQUFLO0VBQ25ELEFBQVEsYUFBcUMsSUFBSSxLQUFLO0VBQ3RELEFBQU8sZUFBd0I7RUFHL0IsTUFBTSxTQUFTLElBQWEsT0FBTztBQUNqQyxPQUFJLEtBQUssY0FBYztBQUNyQjs7R0FFRixNQUFNLGNBQWMsS0FBSyxLQUFLLE9BQU8sYUFBYSxvQ0FBb0M7QUFFdEYsY0FBVyxNQUFNLFFBQVEsS0FBSyxLQUFLLFFBQVEsWUFBWSxDQUFDLEVBQUU7SUFDeEQsTUFBTSxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsS0FBSyxFQUFFLFVBQVUsQ0FBQztJQUcxRCxNQUFNLFFBQVEsS0FBSyxlQUFlLEtBQUs7QUFDdkMsUUFBSSxPQUFPO0tBQ1QsTUFBTSxlQUFlLEtBQUssU0FBUyxPQUFPLGFBQWEsS0FBSztLQUM1RCxNQUFNLGVBQWUsY0FBYyxNQUFNO0FBQ3pDLGFBQVEsTUFDTixNQUFNLElBQUksK0JBQStCLGFBQWEsSUFBSSxNQUFNLE9BQU8sYUFBYSxHQUFHLENBQ3hGOztBQUdILFVBQU0sS0FBSyxTQUFTLE1BQU0sRUFBRSxxQ0FBcUMsTUFBTSxDQUFDOztBQUcxRSxTQUFNLEtBQUssa0NBQWtDO0FBQzdDLFNBQU0sS0FBSyw0Q0FBNEM7QUFFdkQsUUFBSyxlQUFlOztFQUd0QixlQUFlLE1BQWU7R0FDNUIsTUFBTSxTQUFTLGlCQUFpQixVQUFVLEtBQUs7QUFDL0MsVUFBTyxPQUFPLFVBQVUsT0FBTyxPQUFPOztFQUd4QyxNQUFNLE9BQU8sV0FBb0IsT0FBTztBQUN0QyxRQUFLLFNBQVMsT0FBTztBQUNyQixRQUFLLFlBQVksT0FBTztBQUN4QixRQUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-template-cone.d.ts","sourceRoot":"","sources":["../../src/entity/entity-template-cone.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-template-cone.d.ts","sourceRoot":"","sources":["../../src/entity/entity-template-cone.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,IAAI,EACT,KAAK,UAAU,EAIhB,MAAM,gBAAgB,CAAC;AASxB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,IAAI,GAAG,IAAI,GAAG,IAAW,GAChC;IACD,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACjC,CAsDA"}
|