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,225 +1,196 @@
|
|
|
1
|
+
import { __esmMin } from "../_virtual/rolldown_runtime.js";
|
|
2
|
+
import { convertDomainToCategory, init_category } from "../logger/category.js";
|
|
3
|
+
import { createMockSSEFactory, init_sse } from "../stream/sse.js";
|
|
4
|
+
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
5
|
+
import { Naite, init_naite } from "../naite/naite.js";
|
|
6
|
+
import { StepWrapper, init_step_wrapper } from "./step-wrapper.js";
|
|
1
7
|
import { getLogger } from "@logtape/logtape";
|
|
8
|
+
import assert from "assert";
|
|
2
9
|
import { BackendPostgres, OpenWorkflow } from "@sonamu-kit/tasks";
|
|
3
10
|
import { serializeRetryPolicy } from "@sonamu-kit/tasks/internal";
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
}, fn);
|
|
186
|
-
return workflow;
|
|
187
|
-
}
|
|
188
|
-
// 워크플로우를 등록 해제, 관련된 스케줄은 별도로 해제해야 함.
|
|
189
|
-
async unregisterWorkflow(workflow) {
|
|
190
|
-
this.#ow.unregisterWorkflow(workflow.name, workflow.version ?? null);
|
|
191
|
-
}
|
|
192
|
-
// Worker를 설정 후 시작
|
|
193
|
-
setupWorker(options) {
|
|
194
|
-
this.#worker = this.#ow.newWorker(options);
|
|
195
|
-
}
|
|
196
|
-
// Worker가 있으면 Worker까지 초기화, 아니면 백엔드만 초기화
|
|
197
|
-
async startWorker() {
|
|
198
|
-
await this.#backend.initialize();
|
|
199
|
-
await this.#worker?.start();
|
|
200
|
-
}
|
|
201
|
-
// Worker를 중지
|
|
202
|
-
async stopWorker() {
|
|
203
|
-
await this.#worker?.stop();
|
|
204
|
-
}
|
|
205
|
-
// cron task들을 모두 중지
|
|
206
|
-
async stopSchedules() {
|
|
207
|
-
await Promise.allSettled(Array.from(this.#scheduledTasks.values()).map(({ task })=>Promise.resolve(task.stop())));
|
|
208
|
-
}
|
|
209
|
-
// cron task들을 모두 정리
|
|
210
|
-
async destroySchedules() {
|
|
211
|
-
await Promise.allSettled(Array.from(this.#scheduledTasks.values()).map(({ task })=>Promise.resolve(task.destroy())));
|
|
212
|
-
this.#scheduledTasks.clear();
|
|
213
|
-
}
|
|
214
|
-
async destroy() {
|
|
215
|
-
await this.stopSchedules();
|
|
216
|
-
await this.stopWorker();
|
|
217
|
-
await this.destroySchedules();
|
|
218
|
-
await this.#backend.stop();
|
|
219
|
-
}
|
|
220
|
-
[Symbol.asyncDispose]() {
|
|
221
|
-
return this.destroy();
|
|
222
|
-
}
|
|
223
|
-
}
|
|
11
|
+
import { schedule } from "node-cron";
|
|
12
|
+
|
|
13
|
+
//#region src/tasks/workflow-manager.ts
|
|
14
|
+
var WorkflowManager;
|
|
15
|
+
var init_workflow_manager = __esmMin((() => {
|
|
16
|
+
init_sonamu();
|
|
17
|
+
init_category();
|
|
18
|
+
init_naite();
|
|
19
|
+
init_sse();
|
|
20
|
+
init_step_wrapper();
|
|
21
|
+
WorkflowManager = class {
|
|
22
|
+
#backend;
|
|
23
|
+
#ow;
|
|
24
|
+
#worker;
|
|
25
|
+
#workflowsMap;
|
|
26
|
+
#scheduledTasks;
|
|
27
|
+
constructor(dbConf, runMigrations = true) {
|
|
28
|
+
const backend = new BackendPostgres(dbConf, { runMigrations });
|
|
29
|
+
this.#backend = backend;
|
|
30
|
+
this.#ow = new OpenWorkflow({ backend });
|
|
31
|
+
this.#worker = null;
|
|
32
|
+
this.#workflowsMap = new Map();
|
|
33
|
+
this.#scheduledTasks = new Map();
|
|
34
|
+
}
|
|
35
|
+
get backend() {
|
|
36
|
+
return this.#backend;
|
|
37
|
+
}
|
|
38
|
+
get workflowDefinitions() {
|
|
39
|
+
return Array.from(this.#workflowsMap.values()).flat().map((wf) => ({
|
|
40
|
+
id: wf.id,
|
|
41
|
+
name: wf.name,
|
|
42
|
+
version: wf.version,
|
|
43
|
+
schedules: wf.schedules.map((s) => ({
|
|
44
|
+
name: s.name,
|
|
45
|
+
expression: s.expression
|
|
46
|
+
})),
|
|
47
|
+
retryPolicy: wf.retryPolicy ? serializeRetryPolicy(wf.retryPolicy) : undefined
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 정의된 워크플로우 및 워크플로우에 대한 scheduled tasks를 동기화합니다.
|
|
52
|
+
*/
|
|
53
|
+
async synchronize(workflowMap) {
|
|
54
|
+
await Promise.allSettled(Array.from(this.#workflowsMap.entries()).filter(([key]) => !workflowMap.has(key)).flatMap(([_, workflows]) => workflows.map((workflow) => {
|
|
55
|
+
return Promise.allSettled([...workflow.schedules.map((schedule$1) => this.unscheduleTask(schedule$1.name)), this.unregisterWorkflow(workflow)]);
|
|
56
|
+
})));
|
|
57
|
+
await Promise.allSettled(Array.from(workflowMap.entries()).filter(([key]) => !this.#workflowsMap.has(key)).flatMap(([_, workflows]) => workflows.map((workflow) => {
|
|
58
|
+
this.registerWorkflow({
|
|
59
|
+
id: workflow.id,
|
|
60
|
+
name: workflow.name,
|
|
61
|
+
version: workflow.version ?? null,
|
|
62
|
+
schema: workflow.schema,
|
|
63
|
+
function: workflow.fn,
|
|
64
|
+
retryPolicy: workflow.retryPolicy
|
|
65
|
+
});
|
|
66
|
+
return Promise.allSettled(workflow.schedules.map((schedule$1) => this.scheduleTask(workflow, schedule$1)));
|
|
67
|
+
})));
|
|
68
|
+
await Promise.allSettled(Array.from(workflowMap.entries()).filter(([key]) => this.#workflowsMap.has(key)).map(([key, newWorkflows]) => {
|
|
69
|
+
const previousWorkflows = this.#workflowsMap.get(key);
|
|
70
|
+
assert(previousWorkflows, "previous workflows not found");
|
|
71
|
+
return [key, [previousWorkflows, newWorkflows]];
|
|
72
|
+
}).map(async ([_, [previousWorkflows, newWorkflows]]) => {
|
|
73
|
+
await Promise.allSettled(previousWorkflows.filter((prevItem) => !newWorkflows.some((newItem) => newItem.id === prevItem.id)).map((prevItem) => {
|
|
74
|
+
return Promise.allSettled([...prevItem.schedules.map((schedule$1) => this.unscheduleTask(schedule$1.name)), this.unregisterWorkflow(prevItem)]);
|
|
75
|
+
}));
|
|
76
|
+
await Promise.allSettled(newWorkflows.filter((newItem) => !previousWorkflows.some((prevItem) => prevItem.id === newItem.id)).map(async (newItem) => {
|
|
77
|
+
this.registerWorkflow({
|
|
78
|
+
id: newItem.id,
|
|
79
|
+
name: newItem.name,
|
|
80
|
+
version: newItem.version ?? null,
|
|
81
|
+
schema: newItem.schema,
|
|
82
|
+
function: newItem.fn,
|
|
83
|
+
retryPolicy: newItem.retryPolicy
|
|
84
|
+
});
|
|
85
|
+
return Promise.allSettled(newItem.schedules.map((schedule$1) => this.scheduleTask(newItem, schedule$1)));
|
|
86
|
+
}));
|
|
87
|
+
}));
|
|
88
|
+
this.#workflowsMap = workflowMap;
|
|
89
|
+
}
|
|
90
|
+
run(options, input) {
|
|
91
|
+
return this.#ow.runWorkflow({
|
|
92
|
+
name: options.name,
|
|
93
|
+
version: options.version ?? undefined
|
|
94
|
+
}, input);
|
|
95
|
+
}
|
|
96
|
+
async scheduleTask(workflow, schedule$1) {
|
|
97
|
+
if (!this.#worker) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const task = schedule(schedule$1.expression, (async ({ name, version }, { input }) => {
|
|
101
|
+
const inputData = await (typeof input === "function" ? Promise.resolve(input()) : Promise.resolve(input));
|
|
102
|
+
return this.run({
|
|
103
|
+
name,
|
|
104
|
+
version: version ?? null
|
|
105
|
+
}, inputData);
|
|
106
|
+
}).bind(this, workflow, schedule$1), {
|
|
107
|
+
name: schedule$1.name,
|
|
108
|
+
timezone: Sonamu.config.api.timezone,
|
|
109
|
+
noOverlap: false
|
|
110
|
+
});
|
|
111
|
+
this.#scheduledTasks.set(schedule$1.name, {
|
|
112
|
+
task,
|
|
113
|
+
inputFn: schedule$1.input,
|
|
114
|
+
workflowId: workflow.id
|
|
115
|
+
});
|
|
116
|
+
await task.start();
|
|
117
|
+
}
|
|
118
|
+
async unscheduleTask(name) {
|
|
119
|
+
if (!this.#worker) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const taskItem = this.#scheduledTasks.get(name);
|
|
123
|
+
if (!taskItem) {
|
|
124
|
+
console.error("scheduled task not found", name);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this.#scheduledTasks.delete(name);
|
|
128
|
+
await taskItem.task.stop();
|
|
129
|
+
await taskItem.task.destroy();
|
|
130
|
+
}
|
|
131
|
+
registerWorkflow(options) {
|
|
132
|
+
const fn = async (params) => {
|
|
133
|
+
const baseContext = {
|
|
134
|
+
request: null,
|
|
135
|
+
reply: null,
|
|
136
|
+
headers: {},
|
|
137
|
+
createSSE: (schema) => createMockSSEFactory(schema),
|
|
138
|
+
naiteStore: Naite.createStore(),
|
|
139
|
+
locale: "",
|
|
140
|
+
user: null,
|
|
141
|
+
session: null
|
|
142
|
+
};
|
|
143
|
+
const contextProvider = Sonamu.config.tasks?.contextProvider;
|
|
144
|
+
const context = contextProvider ? await Promise.resolve(contextProvider(baseContext)) : baseContext;
|
|
145
|
+
const step = new StepWrapper(params.step);
|
|
146
|
+
return Sonamu.asyncLocalStorage.run({ context }, () => options.function({
|
|
147
|
+
input: params.input,
|
|
148
|
+
step,
|
|
149
|
+
version: params.version,
|
|
150
|
+
logger: getLogger(convertDomainToCategory(options.name, "workflow"))
|
|
151
|
+
}));
|
|
152
|
+
};
|
|
153
|
+
const workflow = this.#ow.defineWorkflow({
|
|
154
|
+
name: options.name,
|
|
155
|
+
version: options.version ?? undefined,
|
|
156
|
+
schema: options.schema,
|
|
157
|
+
retryPolicy: options.retryPolicy
|
|
158
|
+
}, fn);
|
|
159
|
+
return workflow;
|
|
160
|
+
}
|
|
161
|
+
async unregisterWorkflow(workflow) {
|
|
162
|
+
this.#ow.unregisterWorkflow(workflow.name, workflow.version ?? null);
|
|
163
|
+
}
|
|
164
|
+
setupWorker(options) {
|
|
165
|
+
this.#worker = this.#ow.newWorker(options);
|
|
166
|
+
}
|
|
167
|
+
async startWorker() {
|
|
168
|
+
await this.#backend.initialize();
|
|
169
|
+
await this.#worker?.start();
|
|
170
|
+
}
|
|
171
|
+
async stopWorker() {
|
|
172
|
+
await this.#worker?.stop();
|
|
173
|
+
}
|
|
174
|
+
async stopSchedules() {
|
|
175
|
+
await Promise.allSettled(Array.from(this.#scheduledTasks.values()).map(({ task }) => Promise.resolve(task.stop())));
|
|
176
|
+
}
|
|
177
|
+
async destroySchedules() {
|
|
178
|
+
await Promise.allSettled(Array.from(this.#scheduledTasks.values()).map(({ task }) => Promise.resolve(task.destroy())));
|
|
179
|
+
this.#scheduledTasks.clear();
|
|
180
|
+
}
|
|
181
|
+
async destroy() {
|
|
182
|
+
await this.stopSchedules();
|
|
183
|
+
await this.stopWorker();
|
|
184
|
+
await this.destroySchedules();
|
|
185
|
+
await this.#backend.stop();
|
|
186
|
+
}
|
|
187
|
+
[Symbol.asyncDispose]() {
|
|
188
|
+
return this.destroy();
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
}));
|
|
224
192
|
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy93b3JrZmxvdy1tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciwgdHlwZSBMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgQmFja2VuZFBvc3RncmVzLCBPcGVuV29ya2Zsb3csIHR5cGUgV29ya2VyIH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQge1xuICB0eXBlIFJ1bm5hYmxlV29ya2Zsb3csXG4gIHR5cGUgU2NoZW1hSW5wdXQsXG4gIHR5cGUgU2NoZW1hT3V0cHV0LFxuICB0eXBlIFN0YW5kYXJkU2NoZW1hVjEsXG4gIHR5cGUgU3RlcEFwaSxcbiAgc2VyaWFsaXplUmV0cnlQb2xpY3ksXG4gIHR5cGUgV29ya2Zsb3dSdW5IYW5kbGUsXG4gIHR5cGUgV29ya2Zsb3dTcGVjLFxufSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB7IHNjaGVkdWxlIGFzIGNyb25TY2hlZHVsZSwgdHlwZSBTY2hlZHVsZWRUYXNrIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHR5cGUgeyBab2RPYmplY3QgfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgdHlwZSB7IENvbnRleHQgfSBmcm9tIFwiLi4vYXBpL2NvbnRleHRcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IE5haXRlIH0gZnJvbSBcIi4uL25haXRlL25haXRlXCI7XG5pbXBvcnQgeyBjcmVhdGVNb2NrU1NFRmFjdG9yeSB9IGZyb20gXCIuLi9zdHJlYW0vc3NlXCI7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGFibGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dNZXRhZGF0YSB9IGZyb20gXCIuL2RlY29yYXRvclwiO1xuaW1wb3J0IHsgU3RlcFdyYXBwZXIgfSBmcm9tIFwiLi9zdGVwLXdyYXBwZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXb3JrZmxvd09wdGlvbnMge1xuICAvLyB3b3JrZXLsl5DshJwg64+Z7IucIOyLpO2Wie2VoCDtg5zsiqTtgawg7IiYLCDquLDrs7jsnYAgQ1BVIOy9lOyWtCDsiJggLSAx6rCcXG4gIGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8vIHdvcmtlcuyXkOyEnCDsgqzsmqntlaAgcHViL3N1YiDsl6zrtoAsIOq4sOuzuOydgCB0cnVlXG4gIHVzZVB1YlN1Yj86IGJvb2xlYW47XG5cbiAgLy8gcHViL3N1YuycvOuhnCDtg5zsiqTtgazrpbwg7IiY7Iug7ZaI7J2EIOuVjCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJ6rmM7KeAIOyngOyXsCDsi5zqsIQsIOq4sOuzuOydgCA1MDBtc1xuICBsaXN0ZW5EZWxheT86IG51bWJlcjtcbn1cblxuLy8gV29ya2Zsb3cg7ZWo7IiY7J2YIO2DgOyehSwgQHNvbmFtdS1raXQvdGFza3PsmYAg64uk66W4IOygkOydgCBzdGVw7J2EIO2VnOuyiCDqsJDsi7wg7ZiV7YOcLlxuZXhwb3J0IHR5cGUgV29ya2Zsb3dGdW5jdGlvbjxJbnB1dCwgT3V0cHV0PiA9IChcbiAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgbG9nZ2VyOiBMb2dnZXI7XG4gICAgaW5wdXQ6IElucHV0O1xuICAgIHN0ZXA6IFN0ZXBXcmFwcGVyO1xuICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIH0+LFxuKSA9PiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG5cbi8vIFdvcmtmbG9366W8IOuTseuhne2VoCDrlYzrpbwg7JyE7ZWcIO2DgOyehVxuZXhwb3J0IHR5cGUgV29ya2Zsb3dDcmVhdGVPcHRpb25zPFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbj4gPSBPbWl0PFxuICBXb3JrZmxvd1NwZWM8U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0LCBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4+LFxuICBcInZlcnNpb25cIlxuPiAmIHtcbiAgaWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb246IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pjtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd01hbmFnZXIge1xuICAvLyBiYWNrZW5kIOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjYmFja2VuZDogQmFja2VuZFBvc3RncmVzO1xuXG4gIC8vIE9wZW5Xb3JrZmxvdyDsnbjsiqTthLTsiqRcbiAgcmVhZG9ubHkgI293OiBPcGVuV29ya2Zsb3c7XG5cbiAgLy8gV29ya2VyIOyduOyKpO2EtOyKpCAo7JeG7J2EIOyImCDsnojsnLzrqbAsIOydtCDrlYzripQg67aE7IKw65CcIOyEnOuyhCDtmZjqsr3sl5DshJwgRELsl5AgcHVibGlzaOunjCDtlZzri6Tqs6Ag6rCA7KCV7ZWoKVxuICAjd29ya2VyOiBXb3JrZXIgfCBudWxsO1xuXG4gIC8vIO2MjOydvCDqsr3roZwgLT4g7YyM7J287JeQIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg66mU7YOA642w7J207YSwIOuqqeuhnVxuICAjd29ya2Zsb3dzTWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+O1xuXG4gIC8vIFRhc2sg7J2066aEIC0+IFRhc2sg7KCV67O0IOuwjyBJbnB1dCDqsJIsIFdvcmtmbG93IElEXG4gICNzY2hlZHVsZWRUYXNrczogTWFwPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICB0YXNrOiBTY2hlZHVsZWRUYXNrO1xuICAgICAgaW5wdXRGbjogRXhlY3V0YWJsZTxTY2hlbWFJbnB1dDx1bmtub3duLCB1bmtub3duPj47XG4gICAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gICAgfVxuICA+O1xuXG4gIC8vIEJhY2tlbmRQb3N0Z3Jlc+yXkOyEnCDsspjrpqztlZjripQg6rKD65Ok7J20IOyeiOyWtOyEnCBLbmV4IOy7pOuEpeyFmOydtCDslYTri4jrnbwg7ISk7KCV6rCS7J2EIOuEo+yWtOykmOyVvO2VqC5cbiAgY29uc3RydWN0b3IoZGJDb25mOiBLbmV4LkNvbmZpZywgcnVuTWlncmF0aW9uczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBiYWNrZW5kID0gbmV3IEJhY2tlbmRQb3N0Z3JlcyhkYkNvbmYsIHsgcnVuTWlncmF0aW9ucyB9KTtcblxuICAgIHRoaXMuI2JhY2tlbmQgPSBiYWNrZW5kO1xuICAgIHRoaXMuI293ID0gbmV3IE9wZW5Xb3JrZmxvdyh7IGJhY2tlbmQgfSk7XG4gICAgdGhpcy4jd29ya2VyID0gbnVsbDtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIC8vIFNvbmFtdSBVSSBBUEnsl5DshJwg7JuM7YGs7ZSM66Gc7JqwIOyLpO2WiSDrqqnroZ0g7KGw7ZqMLCDst6jshowg65Ox7JeQIOyCrOyaqe2VqeuLiOuLpC5cbiAgZ2V0IGJhY2tlbmQoKTogQmFja2VuZFBvc3RncmVzIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZDtcbiAgfVxuXG4gIGdldCB3b3JrZmxvd0RlZmluaXRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuI3dvcmtmbG93c01hcC52YWx1ZXMoKSlcbiAgICAgIC5mbGF0KClcbiAgICAgIC5tYXAoKHdmKSA9PiAoe1xuICAgICAgICBpZDogd2YuaWQsXG4gICAgICAgIG5hbWU6IHdmLm5hbWUsXG4gICAgICAgIHZlcnNpb246IHdmLnZlcnNpb24sXG4gICAgICAgIHNjaGVkdWxlczogd2Yuc2NoZWR1bGVzLm1hcCgocykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICAgICAgZXhwcmVzc2lvbjogcy5leHByZXNzaW9uLFxuICAgICAgICB9KSksXG4gICAgICAgIHJldHJ5UG9saWN5OiB3Zi5yZXRyeVBvbGljeSA/IHNlcmlhbGl6ZVJldHJ5UG9saWN5KHdmLnJldHJ5UG9saWN5KSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoJXsnZjrkJwg7JuM7YGs7ZSM66Gc7JqwIOuwjyDsm4ztgaztlIzroZzsmrDsl5Ag64yA7ZWcIHNjaGVkdWxlZCB0YXNrc+ulvCDrj5nquLDtmZTtlanri4jri6QuXG4gICAqL1xuICBhc3luYyBzeW5jaHJvbml6ZSh3b3JrZmxvd01hcDogTWFwPHN0cmluZywgV29ya2Zsb3dNZXRhZGF0YVtdPikge1xuICAgIC8vIDEuIOyCreygnOuQnCDtjIzsnbzsnYAg7J286rSEIOyCreygnFxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLmVudHJpZXMoKSlcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICF3b3JrZmxvd01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgLi4ud29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMudW5zY2hlZHVsZVRhc2soc2NoZWR1bGUubmFtZSkpLFxuICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdyksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMi4g7IOI66GcIOy2lOqwgOuQnCDtjIzsnbzsnYAg7J286rSEIOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuI3dvcmtmbG93c01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyV29ya2Zsb3coe1xuICAgICAgICAgICAgICBpZDogd29ya2Zsb3cuaWQsXG4gICAgICAgICAgICAgIG5hbWU6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb246IHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2NoZW1hOiB3b3JrZmxvdy5zY2hlbWEsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uOiB3b3JrZmxvdy5mbixcbiAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IHdvcmtmbG93LnJldHJ5UG9saWN5LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IG5ld0l0ZW0ucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICAgICAgICAgICAgbmV3SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy5zY2hlZHVsZVRhc2sobmV3SXRlbSwgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gd29ya2Zsb3dNYXA7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg7Iuk7ZaJXG4gIHJ1bjxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogT21pdDxXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sIFwiZnVuY3Rpb25cIiB8IFwic2NoZW1hXCIgfCBcImlkXCI+LFxuICAgIGlucHV0OiBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4sXG4gICk6IFByb21pc2U8V29ya2Zsb3dSdW5IYW5kbGU8T3V0cHV0Pj4ge1xuICAgIHJldHVybiB0aGlzLiNvdy5ydW5Xb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGlucHV0LFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrpbwg65Ox66GdXG4gIGFzeW5jIHNjaGVkdWxlVGFzayhcbiAgICB3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICBzY2hlZHVsZTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICApIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2sgPSBjcm9uU2NoZWR1bGUoXG4gICAgICBzY2hlZHVsZS5leHByZXNzaW9uLFxuICAgICAgKGFzeW5jIChcbiAgICAgICAgeyBuYW1lLCB2ZXJzaW9uIH06IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgICAgIHsgaW5wdXQgfTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IGF3YWl0ICh0eXBlb2YgaW5wdXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGlucHV0KCkpXG4gICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoaW5wdXQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ydW4oeyBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uID8/IG51bGwgfSwgaW5wdXREYXRhKTtcbiAgICAgIH0pLmJpbmQodGhpcywgd29ya2Zsb3csIHNjaGVkdWxlKSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogc2NoZWR1bGUubmFtZSxcbiAgICAgICAgdGltZXpvbmU6IFNvbmFtdS5jb25maWcuYXBpLnRpbWV6b25lLFxuICAgICAgICBub092ZXJsYXA6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3Muc2V0KHNjaGVkdWxlLm5hbWUsIHtcbiAgICAgIHRhc2ssXG4gICAgICBpbnB1dEZuOiBzY2hlZHVsZS5pbnB1dCxcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93LmlkLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhc2suc3RhcnQoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDspJHsp4BcbiAgYXN5bmMgdW5zY2hlZHVsZVRhc2sobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gV29ya2Vy6rCAIO2ZnOyEse2ZlOuQnCDrhbjrk5zsl5DshJzrp4wg7LKY66asXG4gICAgaWYgKCF0aGlzLiN3b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrSXRlbSA9IHRoaXMuI3NjaGVkdWxlZFRhc2tzLmdldChuYW1lKTtcbiAgICBpZiAoIXRhc2tJdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwic2NoZWR1bGVkIHRhc2sgbm90IGZvdW5kXCIsIG5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmRlbGV0ZShuYW1lKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLnN0b3AoKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0sIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIOuTseuhne2VtOyVvCDtlaguXG4gIHJlZ2lzdGVyV29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPixcbiAgKTogUnVubmFibGVXb3JrZmxvdzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4ge1xuICAgIGNvbnN0IGZuID0gYXN5bmMgKFxuICAgICAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgICAgIGlucHV0OiBTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+O1xuICAgICAgICBzdGVwOiBTdGVwQXBpO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfT4sXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29udGV4dCA9IHtcbiAgICAgICAgcmVxdWVzdDogbnVsbCxcbiAgICAgICAgcmVwbHk6IG51bGwsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBjcmVhdGVTU0U6IChzY2hlbWE6IFpvZE9iamVjdCkgPT4gY3JlYXRlTW9ja1NTRUZhY3Rvcnkoc2NoZW1hKSxcbiAgICAgICAgbmFpdGVTdG9yZTogTmFpdGUuY3JlYXRlU3RvcmUoKSxcbiAgICAgICAgdXNlcjogbnVsbCxcbiAgICAgICAgcGFzc3BvcnQ6IHtcbiAgICAgICAgICBsb2dpbjogYXN5bmMgKCkgPT4ge30sXG4gICAgICAgICAgbG9nb3V0OiAoKSA9PiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBDb250ZXh0O1xuXG4gICAgICBjb25zdCBjb250ZXh0UHJvdmlkZXIgPSBTb25hbXUuY29uZmlnLnRhc2tzPy5jb250ZXh0UHJvdmlkZXI7XG4gICAgICBjb25zdCBjb250ZXh0OiBDb250ZXh0ID0gY29udGV4dFByb3ZpZGVyXG4gICAgICAgID8gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGNvbnRleHRQcm92aWRlcihiYXNlQ29udGV4dCkpXG4gICAgICAgIDogYmFzZUNvbnRleHQ7XG5cbiAgICAgIGNvbnN0IHN0ZXAgPSBuZXcgU3RlcFdyYXBwZXIocGFyYW1zLnN0ZXApO1xuICAgICAgcmV0dXJuIFNvbmFtdS5hc3luY0xvY2FsU3RvcmFnZS5ydW4oeyBjb250ZXh0IH0sICgpID0+XG4gICAgICAgIG9wdGlvbnMuZnVuY3Rpb24oe1xuICAgICAgICAgIGlucHV0OiBwYXJhbXMuaW5wdXQsXG4gICAgICAgICAgc3RlcCxcbiAgICAgICAgICB2ZXJzaW9uOiBwYXJhbXMudmVyc2lvbixcbiAgICAgICAgICBsb2dnZXI6IGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeShvcHRpb25zLm5hbWUsIFwid29ya2Zsb3dcIikpLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy4jb3cuZGVmaW5lV29ya2Zsb3coXG4gICAgICB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IHVuZGVmaW5lZCxcbiAgICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcbiAgICAgICAgcmV0cnlQb2xpY3k6IG9wdGlvbnMucmV0cnlQb2xpY3ksXG4gICAgICB9LFxuICAgICAgZm4sXG4gICAgKTtcbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg65Ox66GdIO2VtOygnCwg6rSA66Co65CcIOyKpOy8gOykhOydgCDrs4Trj4TroZwg7ZW07KCc7ZW07JW8IO2VqC5cbiAgYXN5bmMgdW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93OiBQaWNrPFdvcmtmbG93TWV0YWRhdGEsIFwibmFtZVwiIHwgXCJ2ZXJzaW9uXCIgfCBcImlkXCI+KSB7XG4gICAgdGhpcy4jb3cudW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93Lm5hbWUsIHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCk7XG4gIH1cblxuICAvLyBXb3JrZXLrpbwg7ISk7KCVIO2bhCDsi5zsnpFcbiAgc2V0dXBXb3JrZXIob3B0aW9uczogV29ya2Zsb3dPcHRpb25zKSB7XG4gICAgdGhpcy4jd29ya2VyID0gdGhpcy4jb3cubmV3V29ya2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gV29ya2Vy6rCAIOyeiOycvOuptCBXb3JrZXLquYzsp4Ag7LSI6riw7ZmULCDslYTri4jrqbQg67Cx7JeU65Oc66eMIOy0iOq4sO2ZlFxuICBhc3luYyBzdGFydFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLmluaXRpYWxpemUoKTtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0YXJ0KCk7XG4gIH1cblxuICAvLyBXb3JrZXLrpbwg7KSR7KeAXG4gIGFzeW5jIHN0b3BXb3JrZXIoKSB7XG4gICAgYXdhaXQgdGhpcy4jd29ya2VyPy5zdG9wKCk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrk6TsnYQg66qo65GQIOykkeyngFxuICBhc3luYyBzdG9wU2NoZWR1bGVzKCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jc2NoZWR1bGVkVGFza3MudmFsdWVzKCkpLm1hcCgoeyB0YXNrIH0pID0+IFByb21pc2UucmVzb2x2ZSh0YXNrLnN0b3AoKSkpLFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrk6TsnYQg66qo65GQIOygleumrFxuICBhc3luYyBkZXN0cm95U2NoZWR1bGVzKCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jc2NoZWR1bGVkVGFza3MudmFsdWVzKCkpLm1hcCgoeyB0YXNrIH0pID0+IFByb21pc2UucmVzb2x2ZSh0YXNrLmRlc3Ryb3koKSkpLFxuICAgICk7XG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3MuY2xlYXIoKTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wU2NoZWR1bGVzKCk7XG4gICAgYXdhaXQgdGhpcy5zdG9wV29ya2VyKCk7XG4gICAgYXdhaXQgdGhpcy5kZXN0cm95U2NoZWR1bGVzKCk7XG4gICAgYXdhaXQgdGhpcy4jYmFja2VuZC5zdG9wKCk7XG4gIH1cblxuICBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVzdHJveSgpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0TG9nZ2VyIiwiQmFja2VuZFBvc3RncmVzIiwiT3BlbldvcmtmbG93Iiwic2VyaWFsaXplUmV0cnlQb2xpY3kiLCJhc3NlcnQiLCJzY2hlZHVsZSIsImNyb25TY2hlZHVsZSIsIlNvbmFtdSIsImNvbnZlcnREb21haW5Ub0NhdGVnb3J5IiwiTmFpdGUiLCJjcmVhdGVNb2NrU1NFRmFjdG9yeSIsIlN0ZXBXcmFwcGVyIiwiV29ya2Zsb3dNYW5hZ2VyIiwiZGJDb25mIiwicnVuTWlncmF0aW9ucyIsImJhY2tlbmQiLCJNYXAiLCJ3b3JrZmxvd0RlZmluaXRpb25zIiwiQXJyYXkiLCJmcm9tIiwidmFsdWVzIiwiZmxhdCIsIm1hcCIsIndmIiwiaWQiLCJuYW1lIiwidmVyc2lvbiIsInNjaGVkdWxlcyIsInMiLCJleHByZXNzaW9uIiwicmV0cnlQb2xpY3kiLCJ1bmRlZmluZWQiLCJzeW5jaHJvbml6ZSIsIndvcmtmbG93TWFwIiwiUHJvbWlzZSIsImFsbFNldHRsZWQiLCJlbnRyaWVzIiwiZmlsdGVyIiwia2V5IiwiaGFzIiwiZmxhdE1hcCIsIl8iLCJ3b3JrZmxvd3MiLCJ3b3JrZmxvdyIsInVuc2NoZWR1bGVUYXNrIiwidW5yZWdpc3RlcldvcmtmbG93IiwicmVnaXN0ZXJXb3JrZmxvdyIsInNjaGVtYSIsImZ1bmN0aW9uIiwiZm4iLCJzY2hlZHVsZVRhc2siLCJuZXdXb3JrZmxvd3MiLCJwcmV2aW91c1dvcmtmbG93cyIsImdldCIsInByZXZJdGVtIiwic29tZSIsIm5ld0l0ZW0iLCJydW4iLCJvcHRpb25zIiwiaW5wdXQiLCJydW5Xb3JrZmxvdyIsInRhc2siLCJpbnB1dERhdGEiLCJyZXNvbHZlIiwiYmluZCIsInRpbWV6b25lIiwiY29uZmlnIiwiYXBpIiwibm9PdmVybGFwIiwic2V0IiwiaW5wdXRGbiIsIndvcmtmbG93SWQiLCJzdGFydCIsInRhc2tJdGVtIiwiY29uc29sZSIsImVycm9yIiwiZGVsZXRlIiwic3RvcCIsImRlc3Ryb3kiLCJwYXJhbXMiLCJiYXNlQ29udGV4dCIsInJlcXVlc3QiLCJyZXBseSIsImhlYWRlcnMiLCJjcmVhdGVTU0UiLCJuYWl0ZVN0b3JlIiwiY3JlYXRlU3RvcmUiLCJ1c2VyIiwicGFzc3BvcnQiLCJsb2dpbiIsImxvZ291dCIsImNvbnRleHRQcm92aWRlciIsInRhc2tzIiwiY29udGV4dCIsInN0ZXAiLCJhc3luY0xvY2FsU3RvcmFnZSIsImxvZ2dlciIsImRlZmluZVdvcmtmbG93Iiwic2V0dXBXb3JrZXIiLCJuZXdXb3JrZXIiLCJzdGFydFdvcmtlciIsImluaXRpYWxpemUiLCJzdG9wV29ya2VyIiwic3RvcFNjaGVkdWxlcyIsImRlc3Ryb3lTY2hlZHVsZXMiLCJjbGVhciIsIlN5bWJvbCIsImFzeW5jRGlzcG9zZSJdLCJtYXBw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
|
|
193
|
+
//#endregion
|
|
194
|
+
init_workflow_manager();
|
|
195
|
+
export { WorkflowManager };
|
|
196
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5qcyIsIm5hbWVzIjpbIiNiYWNrZW5kIiwiI293IiwiI3dvcmtlciIsIiN3b3JrZmxvd3NNYXAiLCIjc2NoZWR1bGVkVGFza3MiLCJzY2hlZHVsZSIsImNyb25TY2hlZHVsZSIsImNvbnRleHQ6IENvbnRleHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3Mvd29ya2Zsb3ctbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHR5cGUgTG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IEJhY2tlbmRQb3N0Z3JlcywgT3BlbldvcmtmbG93IH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgeyB0eXBlIFdvcmtlciB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplUmV0cnlQb2xpY3kgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCB7XG4gIHR5cGUgUnVubmFibGVXb3JrZmxvdyxcbiAgdHlwZSBTY2hlbWFJbnB1dCxcbiAgdHlwZSBTY2hlbWFPdXRwdXQsXG4gIHR5cGUgU3RhbmRhcmRTY2hlbWFWMSxcbiAgdHlwZSBTdGVwQXBpLFxuICB0eXBlIFdvcmtmbG93UnVuSGFuZGxlLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgc2NoZWR1bGUgYXMgY3JvblNjaGVkdWxlIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBTY2hlZHVsZWRUYXNrIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBab2RPYmplY3QgfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tTU0VGYWN0b3J5IH0gZnJvbSBcIi4uL3N0cmVhbS9zc2VcIjtcbmltcG9ydCB7IHR5cGUgRXhlY3V0YWJsZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4vZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBTdGVwV3JhcHBlciB9IGZyb20gXCIuL3N0ZXAtd3JhcHBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIC8vIHdvcmtlcuyXkOyEnCDrj5nsi5wg7Iuk7ZaJ7ZWgIO2DnOyKpO2BrCDsiJgsIOq4sOuzuOydgCAxXG4gIGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8vIHdvcmtlcuyXkOyEnCDsgqzsmqntlaAgcHViL3N1YiDsl6zrtoAsIOq4sOuzuOydgCB0cnVlXG4gIHVzZVB1YlN1Yj86IGJvb2xlYW47XG5cbiAgLy8gcHViL3N1YuycvOuhnCDtg5zsiqTtgazrpbwg7IiY7Iug7ZaI7J2EIOuVjCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJ6rmM7KeAIOyngOyXsCDsi5zqsIQsIOq4sOuzuOydgCA1MDBtc1xuICBsaXN0ZW5EZWxheT86IG51bWJlcjtcbn1cblxuLy8gV29ya2Zsb3cg7ZWo7IiY7J2YIO2DgOyehSwgQHNvbmFtdS1raXQvdGFza3PsmYAg64uk66W4IOygkOydgCBzdGVw7J2EIO2VnOuyiCDqsJDsi7wg7ZiV7YOcLlxuZXhwb3J0IHR5cGUgV29ya2Zsb3dGdW5jdGlvbjxJbnB1dCwgT3V0cHV0PiA9IChcbiAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgbG9nZ2VyOiBMb2dnZXI7XG4gICAgaW5wdXQ6IElucHV0O1xuICAgIHN0ZXA6IFN0ZXBXcmFwcGVyO1xuICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIH0+LFxuKSA9PiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG5cbi8vIFdvcmtmbG9366W8IOuTseuhne2VoCDrlYzrpbwg7JyE7ZWcIO2DgOyehVxuZXhwb3J0IHR5cGUgV29ya2Zsb3dDcmVhdGVPcHRpb25zPFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbj4gPSBPbWl0PFxuICBXb3JrZmxvd1NwZWM8U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0LCBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4+LFxuICBcInZlcnNpb25cIlxuPiAmIHtcbiAgaWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb246IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pjtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd01hbmFnZXIge1xuICAvLyBiYWNrZW5kIOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjYmFja2VuZDogQmFja2VuZFBvc3RncmVzO1xuXG4gIC8vIE9wZW5Xb3JrZmxvdyDsnbjsiqTthLTsiqRcbiAgcmVhZG9ubHkgI293OiBPcGVuV29ya2Zsb3c7XG5cbiAgLy8gV29ya2VyIOyduOyKpO2EtOyKpCAo7JeG7J2EIOyImCDsnojsnLzrqbAsIOydtCDrlYzripQg67aE7IKw65CcIOyEnOuyhCDtmZjqsr3sl5DshJwgRELsl5AgcHVibGlzaOunjCDtlZzri6Tqs6Ag6rCA7KCV7ZWoKVxuICAjd29ya2VyOiBXb3JrZXIgfCBudWxsO1xuXG4gIC8vIO2MjOydvCDqsr3roZwgLT4g7YyM7J287JeQIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg66mU7YOA642w7J207YSwIOuqqeuhnVxuICAjd29ya2Zsb3dzTWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+O1xuXG4gIC8vIFRhc2sg7J2066aEIC0+IFRhc2sg7KCV67O0IOuwjyBJbnB1dCDqsJIsIFdvcmtmbG93IElEXG4gICNzY2hlZHVsZWRUYXNrczogTWFwPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICB0YXNrOiBTY2hlZHVsZWRUYXNrO1xuICAgICAgaW5wdXRGbjogRXhlY3V0YWJsZTxTY2hlbWFJbnB1dDx1bmtub3duLCB1bmtub3duPj47XG4gICAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gICAgfVxuICA+O1xuXG4gIC8vIEJhY2tlbmRQb3N0Z3Jlc+yXkOyEnCDsspjrpqztlZjripQg6rKD65Ok7J20IOyeiOyWtOyEnCBLbmV4IOy7pOuEpeyFmOydtCDslYTri4jrnbwg7ISk7KCV6rCS7J2EIOuEo+yWtOykmOyVvO2VqC5cbiAgY29uc3RydWN0b3IoZGJDb25mOiBLbmV4LkNvbmZpZywgcnVuTWlncmF0aW9uczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBiYWNrZW5kID0gbmV3IEJhY2tlbmRQb3N0Z3JlcyhkYkNvbmYsIHsgcnVuTWlncmF0aW9ucyB9KTtcblxuICAgIHRoaXMuI2JhY2tlbmQgPSBiYWNrZW5kO1xuICAgIHRoaXMuI293ID0gbmV3IE9wZW5Xb3JrZmxvdyh7IGJhY2tlbmQgfSk7XG4gICAgdGhpcy4jd29ya2VyID0gbnVsbDtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIC8vIFNvbmFtdSBVSSBBUEnsl5DshJwg7JuM7YGs7ZSM66Gc7JqwIOyLpO2WiSDrqqnroZ0g7KGw7ZqMLCDst6jshowg65Ox7JeQIOyCrOyaqe2VqeuLiOuLpC5cbiAgZ2V0IGJhY2tlbmQoKTogQmFja2VuZFBvc3RncmVzIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZDtcbiAgfVxuXG4gIGdldCB3b3JrZmxvd0RlZmluaXRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuI3dvcmtmbG93c01hcC52YWx1ZXMoKSlcbiAgICAgIC5mbGF0KClcbiAgICAgIC5tYXAoKHdmKSA9PiAoe1xuICAgICAgICBpZDogd2YuaWQsXG4gICAgICAgIG5hbWU6IHdmLm5hbWUsXG4gICAgICAgIHZlcnNpb246IHdmLnZlcnNpb24sXG4gICAgICAgIHNjaGVkdWxlczogd2Yuc2NoZWR1bGVzLm1hcCgocykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICAgICAgZXhwcmVzc2lvbjogcy5leHByZXNzaW9uLFxuICAgICAgICB9KSksXG4gICAgICAgIHJldHJ5UG9saWN5OiB3Zi5yZXRyeVBvbGljeSA/IHNlcmlhbGl6ZVJldHJ5UG9saWN5KHdmLnJldHJ5UG9saWN5KSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoJXsnZjrkJwg7JuM7YGs7ZSM66Gc7JqwIOuwjyDsm4ztgaztlIzroZzsmrDsl5Ag64yA7ZWcIHNjaGVkdWxlZCB0YXNrc+ulvCDrj5nquLDtmZTtlanri4jri6QuXG4gICAqL1xuICBhc3luYyBzeW5jaHJvbml6ZSh3b3JrZmxvd01hcDogTWFwPHN0cmluZywgV29ya2Zsb3dNZXRhZGF0YVtdPikge1xuICAgIC8vIDEuIOyCreygnOuQnCDtjIzsnbzsnYAg7J286rSEIOyCreygnFxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLmVudHJpZXMoKSlcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICF3b3JrZmxvd01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgLi4ud29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMudW5zY2hlZHVsZVRhc2soc2NoZWR1bGUubmFtZSkpLFxuICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdyksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMi4g7IOI66GcIOy2lOqwgOuQnCDtjIzsnbzsnYAg7J286rSEIOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuI3dvcmtmbG93c01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyV29ya2Zsb3coe1xuICAgICAgICAgICAgICBpZDogd29ya2Zsb3cuaWQsXG4gICAgICAgICAgICAgIG5hbWU6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb246IHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2NoZW1hOiB3b3JrZmxvdy5zY2hlbWEsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uOiB3b3JrZmxvdy5mbixcbiAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IHdvcmtmbG93LnJldHJ5UG9saWN5LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IG5ld0l0ZW0ucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICAgICAgICAgICAgbmV3SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy5zY2hlZHVsZVRhc2sobmV3SXRlbSwgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gd29ya2Zsb3dNYXA7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg7Iuk7ZaJXG4gIHJ1bjxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogT21pdDxXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sIFwiZnVuY3Rpb25cIiB8IFwic2NoZW1hXCIgfCBcImlkXCI+LFxuICAgIGlucHV0OiBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4sXG4gICk6IFByb21pc2U8V29ya2Zsb3dSdW5IYW5kbGU8T3V0cHV0Pj4ge1xuICAgIHJldHVybiB0aGlzLiNvdy5ydW5Xb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGlucHV0LFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrpbwg65Ox66GdXG4gIGFzeW5jIHNjaGVkdWxlVGFzayhcbiAgICB3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICBzY2hlZHVsZTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICApIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2sgPSBjcm9uU2NoZWR1bGUoXG4gICAgICBzY2hlZHVsZS5leHByZXNzaW9uLFxuICAgICAgKGFzeW5jIChcbiAgICAgICAgeyBuYW1lLCB2ZXJzaW9uIH06IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgICAgIHsgaW5wdXQgfTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IGF3YWl0ICh0eXBlb2YgaW5wdXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGlucHV0KCkpXG4gICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoaW5wdXQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ydW4oeyBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uID8/IG51bGwgfSwgaW5wdXREYXRhKTtcbiAgICAgIH0pLmJpbmQodGhpcywgd29ya2Zsb3csIHNjaGVkdWxlKSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogc2NoZWR1bGUubmFtZSxcbiAgICAgICAgdGltZXpvbmU6IFNvbmFtdS5jb25maWcuYXBpLnRpbWV6b25lLFxuICAgICAgICBub092ZXJsYXA6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3Muc2V0KHNjaGVkdWxlLm5hbWUsIHtcbiAgICAgIHRhc2ssXG4gICAgICBpbnB1dEZuOiBzY2hlZHVsZS5pbnB1dCxcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93LmlkLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhc2suc3RhcnQoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDspJHsp4BcbiAgYXN5bmMgdW5zY2hlZHVsZVRhc2sobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gV29ya2Vy6rCAIO2ZnOyEse2ZlOuQnCDrhbjrk5zsl5DshJzrp4wg7LKY66asXG4gICAgaWYgKCF0aGlzLiN3b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrSXRlbSA9IHRoaXMuI3NjaGVkdWxlZFRhc2tzLmdldChuYW1lKTtcbiAgICBpZiAoIXRhc2tJdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwic2NoZWR1bGVkIHRhc2sgbm90IGZvdW5kXCIsIG5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmRlbGV0ZShuYW1lKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLnN0b3AoKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0sIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIOuTseuhne2VtOyVvCDtlaguXG4gIHJlZ2lzdGVyV29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPixcbiAgKTogUnVubmFibGVXb3JrZmxvdzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4ge1xuICAgIGNvbnN0IGZuID0gYXN5bmMgKFxuICAgICAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgICAgIGlucHV0OiBTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+O1xuICAgICAgICBzdGVwOiBTdGVwQXBpO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfT4sXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29udGV4dCA9IHtcbiAgICAgICAgcmVxdWVzdDogbnVsbCxcbiAgICAgICAgcmVwbHk6IG51bGwsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBjcmVhdGVTU0U6IChzY2hlbWE6IFpvZE9iamVjdCkgPT4gY3JlYXRlTW9ja1NTRUZhY3Rvcnkoc2NoZW1hKSxcbiAgICAgICAgbmFpdGVTdG9yZTogTmFpdGUuY3JlYXRlU3RvcmUoKSxcbiAgICAgICAgbG9jYWxlOiBcIlwiLFxuICAgICAgICB1c2VyOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBudWxsLFxuICAgICAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG5cbiAgICAgIGNvbnN0IGNvbnRleHRQcm92aWRlciA9IFNvbmFtdS5jb25maWcudGFza3M/LmNvbnRleHRQcm92aWRlcjtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSBjb250ZXh0UHJvdmlkZXJcbiAgICAgICAgPyBhd2FpdCBQcm9taXNlLnJlc29sdmUoY29udGV4dFByb3ZpZGVyKGJhc2VDb250ZXh0KSlcbiAgICAgICAgOiBiYXNlQ29udGV4dDtcblxuICAgICAgY29uc3Qgc3RlcCA9IG5ldyBTdGVwV3JhcHBlcihwYXJhbXMuc3RlcCk7XG4gICAgICByZXR1cm4gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1bih7IGNvbnRleHQgfSwgKCkgPT5cbiAgICAgICAgb3B0aW9ucy5mdW5jdGlvbih7XG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy5pbnB1dCxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIHZlcnNpb246IHBhcmFtcy52ZXJzaW9uLFxuICAgICAgICAgIGxvZ2dlcjogZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KG9wdGlvbnMubmFtZSwgXCJ3b3JrZmxvd1wiKSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLiNvdy5kZWZpbmVXb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IG9wdGlvbnMuc2NoZW1hLFxuICAgICAgICByZXRyeVBvbGljeTogb3B0aW9ucy5yZXRyeVBvbGljeSxcbiAgICAgIH0sXG4gICAgICBmbixcbiAgICApO1xuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0g7ZW07KCcLCDqtIDroKjrkJwg7Iqk7LyA7KSE7J2AIOuzhOuPhOuhnCDtlbTsoJztlbTslbwg7ZWoLlxuICBhc3luYyB1bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIiB8IFwiaWRcIj4pIHtcbiAgICB0aGlzLiNvdy51bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3cubmFtZSwgd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDshKTsoJUg7ZuEIOyLnOyekVxuICBzZXR1cFdvcmtlcihvcHRpb25zOiBXb3JrZmxvd09wdGlvbnMpIHtcbiAgICB0aGlzLiN3b3JrZXIgPSB0aGlzLiNvdy5uZXdXb3JrZXIob3B0aW9ucyk7XG4gIH1cblxuICAvLyBXb3JrZXLqsIAg7J6I7Jy866m0IFdvcmtlcuq5jOyngCDstIjquLDtmZQsIOyVhOuLiOuptCDrsLHsl5Trk5zrp4wg7LSI6riw7ZmUXG4gIGFzeW5jIHN0YXJ0V29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuaW5pdGlhbGl6ZSgpO1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RhcnQoKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDspJHsp4BcbiAgYXN5bmMgc3RvcFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0b3AoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KSR7KeAXG4gIGFzeW5jIHN0b3BTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suc3RvcCgpKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KCV66asXG4gIGFzeW5jIGRlc3Ryb3lTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suZGVzdHJveSgpKSksXG4gICAgKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5jbGVhcigpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0b3BXb3JrZXIoKTtcbiAgICBhd2FpdCB0aGlzLmRlc3Ryb3lTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLnN0b3AoKTtcbiAgfVxuXG4gIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O2NBc0J1QztnQkFDc0I7YUFDdEI7V0FDYztvQkFHUjtDQXFDaEMsa0JBQWIsTUFBNkI7RUFFM0IsQ0FBU0E7RUFHVCxDQUFTQztF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-converter.d.ts","sourceRoot":"","sources":["../../src/template/entity-converter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-converter.d.ts","sourceRoot":"","sources":["../../src/template/entity-converter.ts"],"names":[],"mappings":"AAEA,OAAO,CAAC,MAAM,KAAK,CAAC;AAKpB,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGzE;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAyDhG;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAsCvF"}
|