sonamu 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.swcrc.project-default +18 -0
- package/bin/cli.js +24 -0
- package/dist/ai/agents/agent.d.ts +11 -0
- package/dist/ai/agents/agent.d.ts.map +1 -0
- package/dist/ai/agents/agent.js +65 -0
- package/dist/ai/agents/index.d.ts +3 -0
- package/dist/ai/agents/index.d.ts.map +1 -0
- package/dist/ai/agents/index.js +4 -0
- package/dist/ai/agents/types.d.ts +43 -0
- package/dist/ai/agents/types.d.ts.map +1 -0
- package/dist/ai/agents/types.js +3 -0
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +3 -0
- package/dist/ai/providers/rtzr/api.d.ts +22 -0
- package/dist/ai/providers/rtzr/api.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/api.js +28 -0
- package/dist/ai/providers/rtzr/error.d.ts +18 -0
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/error.js +29 -0
- package/dist/ai/providers/rtzr/index.d.ts +5 -0
- package/dist/ai/providers/rtzr/index.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/index.js +6 -0
- package/dist/ai/providers/rtzr/model.d.ts +52 -0
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/model.js +137 -0
- package/dist/ai/providers/rtzr/options.d.ts +7 -0
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/options.js +47 -0
- package/dist/ai/providers/rtzr/provider.d.ts +18 -0
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/provider.js +54 -0
- package/dist/ai/providers/rtzr/utils.d.ts +19 -0
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -0
- package/dist/ai/providers/rtzr/utils.js +88 -0
- package/dist/api/base-frame.d.ts +2 -2
- package/dist/api/base-frame.d.ts.map +1 -1
- package/dist/api/base-frame.js +2 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +6 -1
- package/dist/api/code-converters.d.ts +58 -14
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +178 -409
- package/dist/api/config.d.ts +27 -13
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +19 -26
- package/dist/api/context.d.ts +4 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts +20 -6
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +111 -18
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +3 -3
- package/dist/api/sonamu.d.ts +7 -7
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +83 -51
- package/dist/api/validator.d.ts +6 -0
- package/dist/api/validator.d.ts.map +1 -0
- package/dist/api/validator.js +81 -0
- package/dist/bin/build-config.d.ts +5 -1
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +5 -2
- package/dist/bin/cli.js +165 -64
- package/dist/bin/loader-register.d.ts +2 -0
- package/dist/bin/loader-register.d.ts.map +1 -0
- package/dist/bin/loader-register.js +34 -0
- package/dist/database/_batch_update.d.ts +5 -3
- package/dist/database/_batch_update.d.ts.map +1 -1
- package/dist/database/_batch_update.js +30 -13
- package/dist/database/base-model.d.ts +96 -10
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +232 -89
- package/dist/database/base-model.types.d.ts +93 -0
- package/dist/database/base-model.types.d.ts.map +1 -0
- package/dist/database/base-model.types.js +10 -0
- package/dist/database/code-generator.d.ts +1 -1
- package/dist/database/code-generator.d.ts.map +1 -1
- package/dist/database/code-generator.js +11 -10
- package/dist/database/db.d.ts +5 -6
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +22 -25
- package/dist/database/puri-subset.test-d.js +81 -0
- package/dist/database/puri-subset.types.d.ts +123 -0
- package/dist/database/puri-subset.types.d.ts.map +1 -0
- package/dist/database/puri-subset.types.js +16 -0
- package/dist/database/puri-wrapper.d.ts +13 -11
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri-wrapper.js +2 -2
- package/dist/database/puri.d.ts +25 -14
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +83 -21
- package/dist/database/puri.types.d.ts +21 -7
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +4 -1
- package/dist/database/transaction-context.d.ts +1 -1
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/transaction-context.js +1 -1
- package/dist/database/upsert-builder.d.ts +9 -3
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +228 -78
- package/dist/entity/entity-manager.d.ts +165 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +26 -10
- package/dist/entity/entity.d.ts +5 -3
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +153 -54
- package/dist/exceptions/error-handler.d.ts +1 -1
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +1 -1
- package/dist/exceptions/so-exceptions.d.ts +1 -1
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.js +1 -1
- package/dist/file-storage/driver.d.ts +1 -1
- package/dist/file-storage/driver.d.ts.map +1 -1
- package/dist/file-storage/driver.js +1 -1
- package/dist/file-storage/file-storage.js +2 -2
- package/dist/index.d.ts +18 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -13
- package/dist/migration/code-generation.d.ts +1 -1
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +123 -67
- package/dist/migration/migration-set.d.ts +2 -10
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +67 -218
- package/dist/migration/migrator.d.ts +24 -73
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +121 -301
- package/dist/migration/postgresql-schema-reader.d.ts +51 -0
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -0
- package/dist/migration/postgresql-schema-reader.js +245 -0
- package/dist/migration/types.d.ts +6 -38
- package/dist/migration/types.d.ts.map +1 -1
- package/dist/migration/types.js +1 -1
- package/dist/naite/messaging-types.d.ts +43 -0
- package/dist/naite/messaging-types.d.ts.map +1 -0
- package/dist/naite/messaging-types.js +7 -0
- package/dist/naite/naite-reporter.d.ts +41 -0
- package/dist/naite/naite-reporter.d.ts.map +1 -0
- package/dist/naite/naite-reporter.js +102 -0
- package/dist/naite/naite.d.ts +91 -8
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +285 -41
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +1 -1
- package/dist/syncer/api-parser.d.ts +3 -13
- package/dist/syncer/api-parser.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +67 -56
- package/dist/syncer/checksum.d.ts +2 -2
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +11 -11
- package/dist/syncer/code-generator.d.ts +3 -3
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +37 -17
- package/dist/syncer/entity-operations.d.ts +2 -2
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +9 -8
- package/dist/syncer/file-patterns.d.ts +1 -1
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +1 -1
- package/dist/syncer/index.d.ts +4 -4
- package/dist/syncer/index.d.ts.map +1 -1
- package/dist/syncer/index.js +5 -5
- package/dist/syncer/module-loader.d.ts +4 -4
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +17 -12
- package/dist/syncer/syncer.d.ts +31 -24
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +92 -45
- package/dist/template/entity-converter.d.ts +1 -1
- package/dist/template/entity-converter.d.ts.map +1 -1
- package/dist/template/entity-converter.js +15 -8
- package/dist/template/helpers.d.ts +2 -2
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +3 -3
- package/dist/template/implementations/entity.template.d.ts +2 -2
- package/dist/template/implementations/entity.template.d.ts.map +1 -1
- package/dist/template/implementations/entity.template.js +4 -5
- package/dist/template/implementations/generated.template.d.ts +2 -3
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +46 -29
- package/dist/template/implementations/generated_http.template.d.ts +2 -3
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +9 -9
- package/dist/template/implementations/generated_sso.template.d.ts +3 -4
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +54 -25
- package/dist/template/implementations/init_types.template.d.ts +2 -2
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.js +2 -2
- package/dist/template/implementations/model.template.d.ts +2 -2
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +47 -37
- package/dist/template/implementations/model_test.template.d.ts +2 -2
- package/dist/template/implementations/model_test.template.d.ts.map +1 -1
- package/dist/template/implementations/model_test.template.js +2 -2
- package/dist/template/implementations/service.template.d.ts +4 -4
- package/dist/template/implementations/service.template.d.ts.map +1 -1
- package/dist/template/implementations/service.template.js +24 -16
- package/dist/template/implementations/view_enums_buttonset.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_buttonset.template.js +1 -1
- package/dist/template/implementations/view_enums_dropdown.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_dropdown.template.js +2 -2
- package/dist/template/implementations/view_enums_select.template.d.ts +2 -2
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_enums_select.template.js +2 -2
- package/dist/template/implementations/view_form.template.d.ts +2 -2
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +4 -4
- package/dist/template/implementations/view_id_all_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_all_select.template.js +1 -1
- package/dist/template/implementations/view_id_async_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_async_select.template.js +1 -1
- package/dist/template/implementations/view_list.template.d.ts +2 -2
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +29 -19
- package/dist/template/implementations/view_list_columns.template.d.ts +3 -3
- package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list_columns.template.js +1 -1
- package/dist/template/implementations/view_search_input.template.d.ts +2 -2
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +1 -1
- package/dist/template/index.d.ts +4 -2
- package/dist/template/index.d.ts.map +1 -1
- package/dist/template/index.js +5 -3
- package/dist/template/template-manager.d.ts +56 -0
- package/dist/template/template-manager.d.ts.map +1 -0
- package/dist/template/template-manager.js +125 -0
- package/dist/template/template-types.d.ts +16 -0
- package/dist/template/template-types.d.ts.map +1 -0
- package/dist/template/template-types.js +7 -0
- package/dist/template/template.d.ts +12 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +19 -6
- package/dist/template/zod-converter.d.ts +40 -7
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +341 -58
- package/dist/testing/_relation-graph.d.ts +1 -1
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/_relation-graph.js +12 -3
- package/dist/testing/fixture-manager.d.ts +42 -11
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +338 -236
- package/dist/types/types.d.ts +709 -104
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +309 -52
- package/dist/typings/knex.d.js +2 -2
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +3 -3
- package/dist/utils/console-util.js +1 -1
- package/dist/utils/controller.d.ts +1 -0
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +4 -1
- package/dist/utils/esm-utils.d.ts +0 -6
- package/dist/utils/esm-utils.d.ts.map +1 -1
- package/dist/utils/esm-utils.js +2 -9
- package/dist/utils/formatter.d.ts +3 -0
- package/dist/utils/formatter.d.ts.map +1 -0
- package/dist/utils/formatter.js +110 -0
- package/dist/utils/fs-utils.d.ts +1 -1
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +1 -1
- package/dist/utils/lodash-able.d.ts.map +1 -1
- package/dist/utils/lodash-able.js +1 -1
- package/dist/utils/object-utils.d.ts +44 -0
- package/dist/utils/object-utils.d.ts.map +1 -0
- package/dist/utils/object-utils.js +191 -0
- package/dist/utils/path-utils.d.ts +1 -1
- package/dist/utils/path-utils.d.ts.map +1 -1
- package/dist/utils/path-utils.js +3 -3
- package/dist/utils/process-utils.js +1 -1
- package/dist/utils/sql-parser.d.ts +5 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +14 -3
- package/dist/utils/type-utils.d.ts +23 -0
- package/dist/utils/type-utils.d.ts.map +1 -0
- package/dist/utils/type-utils.js +45 -0
- package/dist/utils/utils.d.ts +7 -1
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +44 -5
- package/dist/utils/zod-error.d.ts +1 -1
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +1 -1
- package/package.json +54 -29
- package/src/ai/agents/agent.ts +87 -0
- package/src/ai/agents/index.ts +2 -0
- package/src/ai/agents/types.ts +47 -0
- package/src/ai/index.ts +1 -0
- package/src/ai/providers/rtzr/api.ts +37 -0
- package/src/ai/providers/rtzr/error.ts +34 -0
- package/src/ai/providers/rtzr/index.ts +4 -0
- package/src/ai/providers/rtzr/model.ts +201 -0
- package/src/ai/providers/rtzr/options.ts +49 -0
- package/src/ai/providers/rtzr/provider.ts +91 -0
- package/src/ai/providers/rtzr/utils.ts +127 -0
- package/src/api/base-frame.ts +4 -2
- package/src/api/caster.ts +17 -23
- package/src/api/code-converters.ts +176 -533
- package/src/api/config.ts +39 -56
- package/src/api/context.ts +7 -18
- package/src/api/decorators.ts +175 -46
- package/src/api/index.ts +2 -2
- package/src/api/sonamu.ts +133 -124
- package/src/api/validator.ts +83 -0
- package/src/bin/build-config.ts +7 -1
- package/src/bin/cli.ts +192 -110
- package/src/bin/loader-register.ts +38 -0
- package/src/database/_batch_update.ts +46 -31
- package/src/database/base-model.ts +390 -182
- package/src/database/base-model.types.ts +155 -0
- package/src/database/code-generator.ts +13 -32
- package/src/database/db.ts +36 -50
- package/src/database/puri-subset.test-d.ts +471 -0
- package/src/database/puri-subset.types.ts +195 -0
- package/src/database/puri-wrapper.ts +58 -67
- package/src/database/puri.ts +182 -126
- package/src/database/puri.types.ts +64 -31
- package/src/database/transaction-context.ts +1 -1
- package/src/database/upsert-builder.ts +262 -132
- package/src/entity/entity-manager.ts +36 -28
- package/src/entity/entity.ts +330 -249
- package/src/exceptions/error-handler.ts +3 -3
- package/src/exceptions/so-exceptions.ts +11 -11
- package/src/file-storage/driver.ts +5 -5
- package/src/file-storage/file-storage.ts +2 -2
- package/src/index.ts +18 -12
- package/src/migration/code-generation.ts +185 -172
- package/src/migration/migration-set.ts +80 -293
- package/src/migration/migrator.ts +182 -425
- package/src/migration/mysql-schema-reader.ts.txt +272 -0
- package/src/migration/postgresql-schema-reader.ts +310 -0
- package/src/migration/types.ts +6 -39
- package/src/naite/messaging-types.ts +51 -0
- package/src/naite/naite-reporter.ts +128 -0
- package/src/naite/naite.ts +378 -33
- package/src/shared/web.shared.ts.txt +20 -24
- package/src/stream/sse.ts +5 -5
- package/src/syncer/api-parser.ts +52 -69
- package/src/syncer/checksum.ts +25 -37
- package/src/syncer/code-generator.ts +58 -62
- package/src/syncer/entity-operations.ts +12 -15
- package/src/syncer/file-patterns.ts +2 -2
- package/src/syncer/index.ts +4 -4
- package/src/syncer/module-loader.ts +28 -25
- package/src/syncer/syncer.ts +155 -162
- package/src/template/entity-converter.ts +18 -27
- package/src/template/helpers.ts +8 -11
- package/src/template/implementations/entity.template.ts +6 -6
- package/src/template/implementations/generated.template.ts +99 -99
- package/src/template/implementations/generated_http.template.ts +21 -54
- package/src/template/implementations/generated_sso.template.ts +78 -65
- package/src/template/implementations/init_types.template.ts +4 -6
- package/src/template/implementations/model.template.ts +47 -38
- package/src/template/implementations/model_test.template.ts +3 -3
- package/src/template/implementations/service.template.ts +56 -80
- package/src/template/implementations/view_enums_buttonset.template.ts +2 -2
- package/src/template/implementations/view_enums_dropdown.template.ts +4 -4
- package/src/template/implementations/view_enums_select.template.ts +3 -3
- package/src/template/implementations/view_form.template.ts +34 -75
- package/src/template/implementations/view_id_all_select.template.ts +2 -2
- package/src/template/implementations/view_id_async_select.template.ts +9 -23
- package/src/template/implementations/view_list.template.ts +54 -95
- package/src/template/implementations/view_list_columns.template.ts +4 -10
- package/src/template/implementations/view_search_input.template.ts +2 -2
- package/src/template/index.ts +4 -2
- package/src/template/template-manager.ts +166 -0
- package/src/template/template-types.ts +16 -0
- package/src/template/template.ts +29 -10
- package/src/template/zod-converter.ts +407 -101
- package/src/testing/_relation-graph.ts +18 -11
- package/src/testing/fixture-manager.ts +468 -362
- package/src/types/types.ts +516 -248
- package/src/typings/knex.d.ts +7 -9
- package/src/utils/async-utils.ts +8 -12
- package/src/utils/console-util.ts +1 -1
- package/src/utils/controller.ts +3 -0
- package/src/utils/esm-utils.ts +8 -18
- package/src/utils/formatter.ts +109 -0
- package/src/utils/fs-utils.ts +1 -1
- package/src/utils/lodash-able.ts +1 -4
- package/src/utils/object-utils.ts +217 -0
- package/src/utils/path-utils.ts +3 -6
- package/src/utils/process-utils.ts +1 -1
- package/src/utils/sql-parser.ts +23 -5
- package/src/utils/type-utils.ts +83 -0
- package/src/utils/utils.ts +58 -9
- package/src/utils/zod-error.ts +3 -3
- package/dist/bin/cli-wrapper.d.ts +0 -3
- package/dist/bin/cli-wrapper.d.ts.map +0 -1
- package/dist/bin/cli-wrapper.js +0 -72
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +0 -2
- package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +0 -1
- package/dist/database/knex-plugins/knex-on-duplicate-update.js +0 -39
- package/dist/entity/entity-utils.d.ts +0 -61
- package/dist/entity/entity-utils.d.ts.map +0 -1
- package/dist/entity/entity-utils.js +0 -210
- package/src/bin/cli-wrapper.ts +0 -82
- package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
- package/src/entity/entity-utils.ts +0 -291
|
@@ -102,4 +102,4 @@ export function ${names.capital}IdAsyncSelect<T extends ${names.capital}SubsetKe
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19pZF9hc3luY19zZWxlY3QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfaWRfYXN5bmNfc2VsZWN0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfaWRfYXN5bmNfc2VsZWN0XCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIndlYi9zcmMvY29tcG9uZW50c1wiLFxuICAgICAgcGF0aDogYCR7bmFtZXMuZnN9LyR7bmFtZXMuY2FwaXRhbH1JZEFzeW5jU2VsZWN0LnRzeGAsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkLCB0ZXh0RmllbGQgfTogVGVtcGxhdGVPcHRpb25zW1widmlld19pZF9hc3luY19zZWxlY3RcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICAgIGlmICghdGV4dEZpZWxkKSB7XG4gICAgICBjb25zdCBwaWNrZWRQcm9wID0gZW50aXR5LnByb3BzLmZpbmQoKHByb3ApID0+IFtcIm5hbWVcIiwgXCJ0aXRsZVwiXS5pbmNsdWRlcyhwcm9wLm5hbWUpKTtcbiAgICAgIGlmIChwaWNrZWRQcm9wKSB7XG4gICAgICAgIHRleHRGaWVsZCA9IHBpY2tlZFByb3AubmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZVByb3AgPSBlbnRpdHkucHJvcHMuZmluZCgocHJvcCkgPT4gcHJvcC50eXBlID09PSBcInN0cmluZ1wiKTtcbiAgICAgICAgaWYgKGNhbmRpZGF0ZVByb3ApIHtcbiAgICAgICAgICB0ZXh0RmllbGQgPSBjYW5kaWRhdGVQcm9wLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJ0ZXh0RmllbGQg7LC+7J2EIOyImCDsl4bsnYxcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCBTeW50aGV0aWNFdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRHJvcGRvd25Qcm9wcywgRHJvcGRvd25JdGVtUHJvcHMsIERyb3Bkb3duT25TZWFyY2hDaGFuZ2VEYXRhLCBEcm9wZG93biB9IGZyb20gXCJzZW1hbnRpYy11aS1yZWFjdFwiO1xuaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfVN1YnNldEtleSwgJHtcbiAgICAgICAgbmFtZXMuY2FwaXRhbFxuICAgICAgfVN1YnNldE1hcHBpbmcgfSBmcm9tIFwic3JjL3NlcnZpY2VzL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlIH0gZnJvbSBcInNyYy9zZXJ2aWNlcy8ke25hbWVzLmZzfS8ke25hbWVzLmZzfS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyAke25hbWVzLmNhcGl0YWx9TGlzdFBhcmFtcyB9IGZyb20gXCJzcmMvc2VydmljZXMvJHtuYW1lcy5mc30vJHtuYW1lcy5mc30udHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uICR7bmFtZXMuY2FwaXRhbH1JZEFzeW5jU2VsZWN0PFQgZXh0ZW5kcyAke25hbWVzLmNhcGl0YWx9U3Vic2V0S2V5PihcbiAgeyBzdWJzZXQsIGJhc2VMaXN0UGFyYW1zLCB0ZXh0RmllbGQsIHZhbHVlRmllbGQsIC4uLnByb3BzIH06IERyb3Bkb3duUHJvcHMgJiB7XG4gICAgc3Vic2V0OiBUO1xuICAgIGJhc2VMaXN0UGFyYW1zPzogJHtuYW1lcy5jYXBpdGFsfUxpc3RQYXJhbXM7XG4gICAgdGV4dEZpZWxkJHt0ZXh0RmllbGQgPyBcIj9cIiA6IFwiXCJ9OiBrZXlvZiAke25hbWVzLmNhcGl0YWx9U3Vic2V0TWFwcGluZ1tUXTtcbiAgICB2YWx1ZUZpZWxkPzoga2V5b2YgJHtuYW1lcy5jYXBpdGFsfVN1YnNldE1hcHBpbmdbVF07XG4gIH0sXG4pIHtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gdXNlU3RhdGU8RHJvcGRvd25JdGVtUHJvcHNbXT4oW10pO1xuICBjb25zdCBbbGlzdFBhcmFtcywgc2V0TGlzdFBhcmFtc10gPSB1c2VTdGF0ZTwke25hbWVzLmNhcGl0YWx9TGlzdFBhcmFtcz4oXG4gICAgYmFzZUxpc3RQYXJhbXMgPz8ge30sXG4gICk7XG5cbiAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gJHtuYW1lcy5jYXBpdGFsfVNlcnZpY2UudXNlJHtuYW1lcy5jYXBpdGFsUGx1cmFsfShzdWJzZXQsIGxpc3RQYXJhbXMpO1xuICBjb25zdCB7IHJvd3M6ICR7bmFtZXMuY2FtZWxQbHVyYWx9LCB0b3RhbCB9ID0gZGF0YSA/PyB7fTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldE9wdGlvbnMoXG4gICAgICAoJHtuYW1lcy5jYW1lbFBsdXJhbH0gPz8gW10pLm1hcCgoJHtuYW1lcy5jYW1lbH0pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBrZXk6ICR7bmFtZXMuY2FtZWx9LmlkLFxuICAgICAgICAgIHZhbHVlOiAke25hbWVzLmNhbWVsfVt2YWx1ZUZpZWxkID8/ICdpZCddIGFzIHN0cmluZyB8IG51bWJlcixcbiAgICAgICAgICB0ZXh0OiBTdHJpbmcoJHtuYW1lcy5jYW1lbH1bdGV4dEZpZWxkJHt0ZXh0RmllbGQgPyBgID8/ICcke3RleHRGaWVsZH0nYCA6IFwiXCJ9XSksXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuICB9LCBbJHtuYW1lcy5jYW1lbFBsdXJhbH1dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldExpc3RQYXJhbXMoe1xuICAgICAgLi4ubGlzdFBhcmFtcyxcbiAgICAgIC4uLmJhc2VMaXN0UGFyYW1zLFxuICAgIH0pO1xuICB9LCBbYmFzZUxpc3RQYXJhbXNdKTtcblxuICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSAoXG4gICAgZTogU3ludGhldGljRXZlbnQ8SFRNTEVsZW1lbnQsIEV2ZW50PixcbiAgICBkYXRhOiBEcm9wZG93bk9uU2VhcmNoQ2hhbmdlRGF0YSxcbiAgKSA9PiB7XG4gICAgc2V0TGlzdFBhcmFtcyh7XG4gICAgICAuLi5saXN0UGFyYW1zLFxuICAgICAga2V5d29yZDogZGF0YS5zZWFyY2hRdWVyeSxcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxEcm9wZG93blxuICAgICAgcGxhY2Vob2xkZXI9XCIke2VudGl0eS50aXRsZSA/PyBuYW1lcy5jb25zdGFudH1cIlxuICAgICAgc2VsZWN0aW9uXG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgb25TZWFyY2hDaGFuZ2U9e2hhbmRsZVNlYXJjaENoYW5nZX1cbiAgICAgIGRpc2FibGVkPXshJHtuYW1lcy5jYW1lbFBsdXJhbH19XG4gICAgICBsb2FkaW5nPXshJHtuYW1lcy5jYW1lbFBsdXJhbH19XG4gICAgICBzZWxlY3RPbkJsdXI9e2ZhbHNlfVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4gICk7XG59XG4gICAgICBgLnRyaW0oKSxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJFbnRpdHlNYW5hZ2VyIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fdmlld19pZF9hc3luY19zZWxlY3QiLCJnZXRUYXJnZXRBbmRQYXRoIiwibmFtZXMiLCJ0YXJnZXQiLCJwYXRoIiwiZnMiLCJjYXBpdGFsIiwicmVuZGVyIiwiZW50aXR5SWQiLCJ0ZXh0RmllbGQiLCJnZXROYW1lc0Zyb21JZCIsImVudGl0eSIsImdldCIsInBpY2tlZFByb3AiLCJwcm9wcyIsImZpbmQiLCJwcm9wIiwiaW5jbHVkZXMiLCJuYW1lIiwiY2FuZGlkYXRlUHJvcCIsInR5cGUiLCJjb25zb2xlIiwibG9nIiwiYm9keSIsImNhcGl0YWxQbHVyYWwiLCJjYW1lbFBsdXJhbCIsImNhbWVsIiwidGl0bGUiLCJjb25zdGFudCIsInRyaW0iLCJpbXBvcnRLZXlzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLFFBQWdDLGlDQUE4QjtBQUVwRixTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFFdkMsT0FBTyxNQUFNQyx1Q0FBdUNEO0lBQ2xELGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxpQkFBaUJDLEtBQXdCLEVBQUU7UUFDekMsT0FBTztZQUNMQyxRQUFRO1lBQ1JDLE1BQU0sR0FBR0YsTUFBTUcsRUFBRSxDQUFDLENBQUMsRUFBRUgsTUFBTUksT0FBTyxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZEO0lBQ0Y7SUFFQUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFNBQVMsRUFBMkMsRUFBRTtRQUN2RSxNQUFNUCxRQUFRSixjQUFjWSxjQUFjLENBQUNGO1FBRTNDLE1BQU1HLFNBQVNiLGNBQWNjLEdBQUcsQ0FBQ0o7UUFDakMsSUFBSSxDQUFDQyxXQUFXO1lBQ2QsTUFBTUksYUFBYUYsT0FBT0csS0FBSyxDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsT0FBUztvQkFBQztvQkFBUTtpQkFBUSxDQUFDQyxRQUFRLENBQUNELEtBQUtFLElBQUk7WUFDbkYsSUFBSUwsWUFBWTtnQkFDZEosWUFBWUksV0FBV0ssSUFBSTtZQUM3QixPQUFPO2dCQUNMLE1BQU1DLGdCQUFnQlIsT0FBT0csS0FBSyxDQUFDQyxJQUFJLENBQUMsQ0FBQ0MsT0FBU0EsS0FBS0ksSUFBSSxLQUFLO2dCQUNoRSxJQUFJRCxlQUFlO29CQUNqQlYsWUFBWVUsY0FBY0QsSUFBSTtnQkFDaEMsT0FBTztvQkFDTEcsUUFBUUMsR0FBRyxDQUFDO2dCQUNkO1lBQ0Y7UUFDRjtRQUVBLE9BQU87WUFDTCxHQUFHLElBQUksQ0FBQ3JCLGdCQUFnQixDQUFDQyxNQUFNO1lBQy9CcUIsTUFBTSxDQUFDOzs7U0FHSixFQUFFckIsTUFBTUksT0FBTyxDQUFDLFdBQVcsRUFDNUJKLE1BQU1JLE9BQU8sQ0FDZDtTQUNFLEVBQUVKLE1BQU1JLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRUosTUFBTUcsRUFBRSxDQUFDLENBQUMsRUFBRUgsTUFBTUcsRUFBRSxDQUFDO1NBQ3BFLEVBQUVILE1BQU1JLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRUosTUFBTUcsRUFBRSxDQUFDLENBQUMsRUFBRUgsTUFBTUcsRUFBRSxDQUFDOztnQkFFaEUsRUFBRUgsTUFBTUksT0FBTyxDQUFDLHdCQUF3QixFQUFFSixNQUFNSSxPQUFPLENBQUM7OztxQkFHbkQsRUFBRUosTUFBTUksT0FBTyxDQUFDO2FBQ3hCLEVBQUVHLFlBQVksTUFBTSxHQUFHLFFBQVEsRUFBRVAsTUFBTUksT0FBTyxDQUFDO3VCQUNyQyxFQUFFSixNQUFNSSxPQUFPLENBQUM7Ozs7K0NBSVEsRUFBRUosTUFBTUksT0FBTyxDQUFDOzs7OzBCQUlyQyxFQUFFSixNQUFNSSxPQUFPLENBQUMsV0FBVyxFQUFFSixNQUFNc0IsYUFBYSxDQUFDO2dCQUMzRCxFQUFFdEIsTUFBTXVCLFdBQVcsQ0FBQzs7OztPQUk3QixFQUFFdkIsTUFBTXVCLFdBQVcsQ0FBQyxhQUFhLEVBQUV2QixNQUFNd0IsS0FBSyxDQUFDOztlQUV2QyxFQUFFeEIsTUFBTXdCLEtBQUssQ0FBQztpQkFDWixFQUFFeEIsTUFBTXdCLEtBQUssQ0FBQzt1QkFDUixFQUFFeEIsTUFBTXdCLEtBQUssQ0FBQyxVQUFVLEVBQUVqQixZQUFZLENBQUMsS0FBSyxFQUFFQSxVQUFVLENBQUMsQ0FBQyxHQUFHLEdBQUc7Ozs7TUFJakYsRUFBRVAsTUFBTXVCLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQXFCUCxFQUFFZCxPQUFPZ0IsS0FBSyxJQUFJekIsTUFBTTBCLFFBQVEsQ0FBQzs7OztpQkFJbkMsRUFBRTFCLE1BQU11QixXQUFXLENBQUM7Z0JBQ3JCLEVBQUV2QixNQUFNdUIsV0FBVyxDQUFDOzs7Ozs7TUFNOUIsQ0FBQyxDQUFDSSxJQUFJO1lBQ05DLFlBQVksRUFBRTtRQUNoQjtJQUNGO0FBQ0YifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { type EntityNamesRecord } from "../../entity/entity-manager";
|
|
2
|
+
import type { RenderingNode, TemplateKey, TemplateOptions } from "../../types/types";
|
|
3
3
|
import { Template } from "../template";
|
|
4
4
|
export declare class Template__view_list extends Template {
|
|
5
5
|
constructor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view_list.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_list.template.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"view_list.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_list.template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIrF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,mBAAoB,SAAQ,QAAQ;;IAK/C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc,EAAE,SAAS,GAAE,MAAW;IAMpF,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,EACxB,SAAS,GAAE,MAAc,EACzB,WAAW,GAAE,OAAe,GAC3B,MAAM;IAyDT,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,GACvB,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;IAwBpB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAiCjF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAkC3E,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB;IAgBK,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC;;;;;;;;;;CAgUxD"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import assert from "assert";
|
|
1
2
|
import inflection from "inflection";
|
|
2
|
-
import
|
|
3
|
+
import { flat, unique } from "radashi";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
import { EntityManager } from "../../entity/entity-manager.js";
|
|
5
|
-
import { getRelationPropFromColName, getEnumInfoFromColName } from "../helpers.js";
|
|
6
|
-
import { Template } from "../template.js";
|
|
7
|
-
import { zodTypeToRenderingNode, getZodTypeById } from "../zod-converter.js";
|
|
8
6
|
import { getColumnsNode } from "../entity-converter.js";
|
|
7
|
+
import { getEnumInfoFromColName, getRelationPropFromColName } from "../helpers.js";
|
|
8
|
+
import { Template } from "../template.js";
|
|
9
|
+
import { getZodTypeById, zodTypeToRenderingNode } from "../zod-converter.js";
|
|
9
10
|
export class Template__view_list extends Template {
|
|
10
11
|
constructor(){
|
|
11
12
|
super("view_list");
|
|
@@ -27,8 +28,10 @@ export class Template__view_list extends Template {
|
|
|
27
28
|
case "number-id":
|
|
28
29
|
return `<>{${colName}}</>`;
|
|
29
30
|
case "number-fk_id":
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
{
|
|
32
|
+
const relPropFk = getRelationPropFromColName(entityId, col.name.replace("_id", ""));
|
|
33
|
+
return `<>${relPropFk.with}#{${colName}}</>`;
|
|
34
|
+
}
|
|
32
35
|
case "string-image":
|
|
33
36
|
return `<>{${col.nullable ? `${colName} && ` : ""}<img src={${colName}} />}</>`;
|
|
34
37
|
case "datetime":
|
|
@@ -46,8 +49,10 @@ export class Template__view_list extends Template {
|
|
|
46
49
|
case "boolean":
|
|
47
50
|
return `<>{${colName} ? <Label color='green' circular>O</Label> : <Label color='grey' circular>X</Label> }</>`;
|
|
48
51
|
case "enums":
|
|
49
|
-
|
|
50
|
-
|
|
52
|
+
{
|
|
53
|
+
const { id: enumId } = getEnumInfoFromColName(entityId, col.name);
|
|
54
|
+
return `<>{${col.nullable ? `${colName} && ` : ""}${enumId}Label[${colName}]}</>`;
|
|
55
|
+
}
|
|
51
56
|
case "array-images":
|
|
52
57
|
return `<>{ ${colName}.map(r => ${col.nullable ? `r && ` : ""}<img src={r} />) }</>`;
|
|
53
58
|
case "number-plain":
|
|
@@ -55,11 +60,13 @@ export class Template__view_list extends Template {
|
|
|
55
60
|
case "object":
|
|
56
61
|
return `<>{/* object ${colName} */}</>`;
|
|
57
62
|
case "object-pick":
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
63
|
+
{
|
|
64
|
+
const pickedChild = col.children?.find((child)=>child.name === col.config?.picked);
|
|
65
|
+
if (!pickedChild) {
|
|
66
|
+
throw new Error(`object-pick 선택 실패 (오브젝트: ${col.name})`);
|
|
67
|
+
}
|
|
68
|
+
return this.renderColumn(entityId, pickedChild, names, `${colName}${col.nullable ? "?" : ""}`);
|
|
61
69
|
}
|
|
62
|
-
return this.renderColumn(entityId, pickedChild, names, `${colName}${col.nullable ? "?" : ""}`);
|
|
63
70
|
case "array":
|
|
64
71
|
return `<>{ /* array ${colName} */ }</>`;
|
|
65
72
|
default:
|
|
@@ -75,18 +82,19 @@ export class Template__view_list extends Template {
|
|
|
75
82
|
} else if (col.renderType === "object") {
|
|
76
83
|
try {
|
|
77
84
|
const relProp = getRelationPropFromColName(entityId, col.name);
|
|
78
|
-
const result = col.children
|
|
85
|
+
const result = col.children?.map((child)=>{
|
|
79
86
|
entityId = relProp.with;
|
|
80
87
|
names = EntityManager.getNamesFromId(relProp.with);
|
|
81
88
|
return this.renderColumnImport(entityId, child, names);
|
|
82
89
|
});
|
|
83
|
-
return
|
|
90
|
+
return flat(result ?? []);
|
|
84
91
|
} catch {
|
|
85
92
|
return [
|
|
86
93
|
null
|
|
87
94
|
];
|
|
88
95
|
}
|
|
89
96
|
} else if (col.renderType === "array") {
|
|
97
|
+
assert(col.element);
|
|
90
98
|
return this.renderColumnImport(entityId, col.element, names);
|
|
91
99
|
}
|
|
92
100
|
return [
|
|
@@ -188,11 +196,11 @@ export class Template__view_list extends Template {
|
|
|
188
196
|
"number-id"
|
|
189
197
|
].includes(col.renderType) || col.name.endsWith("_id")))// orderBy가 가장 뒤로 오게 순서 조정
|
|
190
198
|
.sort((a)=>{
|
|
191
|
-
return a.name
|
|
199
|
+
return a.name === "orderBy" ? 1 : -1;
|
|
192
200
|
});
|
|
193
201
|
// 필터 컬럼을 프리 템플릿으로 설정
|
|
194
202
|
const preTemplates = [];
|
|
195
|
-
for (
|
|
203
|
+
for (const col of filterColumns){
|
|
196
204
|
let key;
|
|
197
205
|
let targetEntityId = entityId;
|
|
198
206
|
let enumId;
|
|
@@ -229,10 +237,12 @@ export class Template__view_list extends Template {
|
|
|
229
237
|
});
|
|
230
238
|
}
|
|
231
239
|
// 리스트 컬럼
|
|
232
|
-
|
|
240
|
+
assert(columnsNode.children);
|
|
241
|
+
const columnImports = unique(columnsNode.children.flatMap((col)=>{
|
|
233
242
|
return this.renderColumnImport(entityId, col, names);
|
|
234
|
-
}).
|
|
243
|
+
}).filter((col)=>col !== null)).join("\n");
|
|
235
244
|
// SearchInput
|
|
245
|
+
assert(preTemplates);
|
|
236
246
|
preTemplates.push({
|
|
237
247
|
key: "view_search_input",
|
|
238
248
|
options: {
|
|
@@ -462,4 +472,4 @@ export default function ${names.capital}List({}: ${names.capital}ListProps) {
|
|
|
462
472
|
}
|
|
463
473
|
}
|
|
464
474
|
|
|
465
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19saXN0LnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBSZW5kZXJpbmdOb2RlLCBUZW1wbGF0ZUtleSwgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyLCBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lLCBnZXRFbnVtSW5mb0Zyb21Db2xOYW1lIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcbmltcG9ydCB7IFJlbmRlcmVkVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlLCBnZXRab2RUeXBlQnlJZCB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRDb2x1bW5zTm9kZSB9IGZyb20gXCIuLi9lbnRpdHktY29udmVydGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fdmlld19saXN0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfbGlzdFwiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgobmFtZXM6IEVudGl0eU5hbWVzUmVjb3JkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogXCJ3ZWIvc3JjL3BhZ2VzL2FkbWluXCIsXG4gICAgICBwYXRoOiBgJHtuYW1lcy5mc1BsdXJhbH0vaW5kZXgudHN4YCxcbiAgICB9O1xuICB9XG5cbiAgd3JhcFRjKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb2xsYXBzaW5nOiBib29sZWFuID0gdHJ1ZSxcbiAgICBjbGFzc05hbWU6IHN0cmluZyA9IFwiXCJcbiAgKSB7XG4gICAgcmV0dXJuIGA8VGFibGUuQ2VsbCBrZXk9XCIke2tleX1cIiR7Y29sbGFwc2luZyA/IFwiIGNvbGxhcHNpbmdcIiA6IFwiXCJ9JHtcbiAgICAgIGNsYXNzTmFtZSA/IGAgY2xhc3NOYW1lPXtcXGAke2NsYXNzTmFtZX1cXGB9YCA6IFwiXCJcbiAgICB9PiR7Ym9keX08L1RhYmxlLkNlbGw+YDtcbiAgfVxuXG4gIHJlbmRlckNvbHVtbihcbiAgICBlbnRpdHlJZDogc3RyaW5nLFxuICAgIGNvbDogUmVuZGVyaW5nTm9kZSxcbiAgICBuYW1lczogRW50aXR5TmFtZXNSZWNvcmQsXG4gICAgcGFyZW50T2JqOiBzdHJpbmcgPSBcInJvd1wiLFxuICAgIHdpdGhvdXROYW1lOiBib29sZWFuID0gZmFsc2VcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2xOYW1lID0gd2l0aG91dE5hbWUgPyBgJHtwYXJlbnRPYmp9YCA6IGAke3BhcmVudE9ian0uJHtjb2wubmFtZX1gO1xuXG4gICAgc3dpdGNoIChjb2wucmVuZGVyVHlwZSkge1xuICAgICAgY2FzZSBcInN0cmluZy1wbGFpblwiOlxuICAgICAgY2FzZSBcInN0cmluZy1kYXRlXCI6XG4gICAgICBjYXNlIFwibnVtYmVyLWlkXCI6XG4gICAgICAgIHJldHVybiBgPD57JHtjb2xOYW1lfX08Lz5gO1xuICAgICAgY2FzZSBcIm51bWJlci1ma19pZFwiOlxuICAgICAgICBjb25zdCByZWxQcm9wRmsgPSBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShcbiAgICAgICAgICBlbnRpdHlJZCxcbiAgICAgICAgICBjb2wubmFtZS5yZXBsYWNlKFwiX2lkXCIsIFwiXCIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBgPD4ke3JlbFByb3BGay53aXRofSN7JHtjb2xOYW1lfX08Lz5gO1xuICAgICAgY2FzZSBcInN0cmluZy1pbWFnZVwiOlxuICAgICAgICByZXR1cm4gYDw+eyR7XG4gICAgICAgICAgY29sLm51bGxhYmxlID8gYCR7Y29sTmFtZX0gJiYgYCA6IFwiXCJcbiAgICAgICAgfTxpbWcgc3JjPXske2NvbE5hbWV9fSAvPn08Lz5gO1xuICAgICAgY2FzZSBcImRhdGV0aW1lXCI6XG4gICAgICAgIGlmIChjb2wubnVsbGFibGUpIHtcbiAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGlueVwiPnske2NvbE5hbWV9ID09PSBudWxsID8gJy0nIDogZm9ybWF0RGF0ZVRpbWUoJHtjb2xOYW1lfSl9PC9zcGFuPmA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXRpbnlcIj57Zm9ybWF0RGF0ZVRpbWUoJHtjb2xOYW1lfSl9PC9zcGFuPmA7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgXCJzdHJpbmctZGF0ZXRpbWVcIjpcbiAgICAgICAgaWYgKGNvbC5udWxsYWJsZSkge1xuICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10aW55XCI+eyR7Y29sTmFtZX0gPT09IG51bGwgPyAnLScgOiBkYXRlRigke2NvbE5hbWV9KX08L3NwYW4+YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGlueVwiPntkYXRlRigke2NvbE5hbWV9KX08L3NwYW4+YDtcbiAgICAgICAgfVxuICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgcmV0dXJuIGA8Pnske2NvbE5hbWV9ID8gPExhYmVsIGNvbG9yPSdncmVlbicgY2lyY3VsYXI+TzwvTGFiZWw+IDogPExhYmVsIGNvbG9yPSdncmV5JyBjaXJjdWxhcj5YPC9MYWJlbD4gfTwvPmA7XG4gICAgICBjYXNlIFwiZW51bXNcIjpcbiAgICAgICAgY29uc3QgeyBpZDogZW51bUlkIH0gPSBnZXRFbnVtSW5mb0Zyb21Db2xOYW1lKGVudGl0eUlkLCBjb2wubmFtZSk7XG4gICAgICAgIHJldHVybiBgPD57JHtcbiAgICAgICAgICBjb2wubnVsbGFibGUgPyBgJHtjb2xOYW1lfSAmJiBgIDogXCJcIlxuICAgICAgICB9JHtlbnVtSWR9TGFiZWxbJHtjb2xOYW1lfV19PC8+YDtcbiAgICAgIGNhc2UgXCJhcnJheS1pbWFnZXNcIjpcbiAgICAgICAgcmV0dXJuIGA8PnsgJHtjb2xOYW1lfS5tYXAociA9PiAke1xuICAgICAgICAgIGNvbC5udWxsYWJsZSA/IGByICYmIGAgOiBcIlwiXG4gICAgICAgIH08aW1nIHNyYz17cn0gLz4pIH08Lz5gO1xuICAgICAgY2FzZSBcIm51bWJlci1wbGFpblwiOlxuICAgICAgICByZXR1cm4gYDw+eyR7Y29sLm51bGxhYmxlID8gYCR7Y29sTmFtZX0gJiYgYCA6IFwiXCJ9bnVtRigke2NvbE5hbWV9KX08Lz5gO1xuICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICByZXR1cm4gYDw+ey8qIG9iamVjdCAke2NvbE5hbWV9ICovfTwvPmA7XG4gICAgICBjYXNlIFwib2JqZWN0LXBpY2tcIjpcbiAgICAgICAgY29uc3QgcGlja2VkQ2hpbGQgPSBjb2wuY2hpbGRyZW4hLmZpbmQoXG4gICAgICAgICAgKGNoaWxkKSA9PiBjaGlsZC5uYW1lID09PSBjb2wuY29uZmlnPy5waWNrZWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFwaWNrZWRDaGlsZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgb2JqZWN0LXBpY2sg7ISg7YOdIOyLpO2MqCAo7Jik67iM7KCd7Yq4OiAke2NvbC5uYW1lfSlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJDb2x1bW4oXG4gICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgcGlja2VkQ2hpbGQsXG4gICAgICAgICAgbmFtZXMsXG4gICAgICAgICAgYCR7Y29sTmFtZX0ke2NvbC5udWxsYWJsZSA/IFwiP1wiIDogXCJcIn1gXG4gICAgICAgICk7XG4gICAgICBjYXNlIFwiYXJyYXlcIjpcbiAgICAgICAgcmV0dXJuIGA8PnsgLyogYXJyYXkgJHtjb2xOYW1lfSAqLyB9PC8+YDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihg66CM642UIOu2iOqwgCDsu6zrn7wgJHtjb2wucmVuZGVyVHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJDb2x1bW5JbXBvcnQoXG4gICAgZW50aXR5SWQ6IHN0cmluZyxcbiAgICBjb2w6IFJlbmRlcmluZ05vZGUsXG4gICAgbmFtZXM6IEVudGl0eU5hbWVzUmVjb3JkXG4gICk6IChzdHJpbmcgfCBudWxsKVtdIHtcbiAgICBpZiAoY29sLnJlbmRlclR5cGUgPT09IFwiZW51bXNcIikge1xuICAgICAgY29uc3QgeyBpZDogZW51bUlkIH0gPSBnZXRFbnVtSW5mb0Zyb21Db2xOYW1lKG5hbWVzLmNhcGl0YWwsIGNvbC5uYW1lKTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGBpbXBvcnQgeyAke2VudW1JZH1MYWJlbCB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9zb25hbXUuZ2VuZXJhdGVkJztgLFxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGNvbC5yZW5kZXJUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWxQcm9wID0gZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUoZW50aXR5SWQsIGNvbC5uYW1lKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY29sLmNoaWxkcmVuIS5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgZW50aXR5SWQgPSByZWxQcm9wLndpdGg7XG4gICAgICAgICAgbmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKHJlbFByb3Aud2l0aCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29sdW1uSW1wb3J0KGVudGl0eUlkLCBjaGlsZCwgbmFtZXMpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF8uZmxhdHRlbkRlZXAocmVzdWx0KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gW251bGxdO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sLnJlbmRlclR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29sdW1uSW1wb3J0KGVudGl0eUlkLCBjb2wuZWxlbWVudCEsIG5hbWVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW251bGxdO1xuICB9XG5cbiAgcmVuZGVyRmlsdGVySW1wb3J0KFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgY29sOiBSZW5kZXJpbmdOb2RlLFxuICAgIG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZFxuICApIHtcbiAgICBpZiAoY29sLm5hbWUgPT09IFwic2VhcmNoXCIpIHtcbiAgICAgIHJldHVybiBgaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfVNlYXJjaElucHV0IH0gZnJvbSBcInNyYy9jb21wb25lbnRzLyR7bmFtZXMuZnN9LyR7bmFtZXMuY2FwaXRhbH1TZWFyY2hJbnB1dFwiO2A7XG4gICAgfSBlbHNlIGlmIChjb2wucmVuZGVyVHlwZSA9PT0gXCJlbnVtc1wiKSB7XG4gICAgICBpZiAoY29sLm5hbWUgPT09IFwib3JkZXJCeVwiKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudElkID0gYCR7bmFtZXMuY2FwaXRhbH0ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICAgICAgY29sLm5hbWVcbiAgICAgICAgKX1TZWxlY3RgO1xuICAgICAgICByZXR1cm4gYGltcG9ydCB7ICR7Y29tcG9uZW50SWR9IH0gZnJvbSBcInNyYy9jb21wb25lbnRzLyR7bmFtZXMuZnN9LyR7Y29tcG9uZW50SWR9XCI7YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBpZCwgdGFyZ2V0RW50aXR5TmFtZXM6IHRhcmdldE1ETmFtZXMgfSA9XG4gICAgICAgICAgICBnZXRFbnVtSW5mb0Zyb21Db2xOYW1lKGVudGl0eUlkLCBjb2wubmFtZSk7XG4gICAgICAgICAgY29uc3QgY29tcG9uZW50SWQgPSBgJHtpZH1TZWxlY3RgO1xuICAgICAgICAgIHJldHVybiBgaW1wb3J0IHsgJHtjb21wb25lbnRJZH0gfSBmcm9tIFwic3JjL2NvbXBvbmVudHMvJHt0YXJnZXRNRE5hbWVzLmZzfS8ke2NvbXBvbmVudElkfVwiO2A7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjb2wucmVuZGVyVHlwZSA9PT0gXCJudW1iZXItZmtfaWRcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKFxuICAgICAgICAgIGVudGl0eUlkLFxuICAgICAgICAgIGNvbC5uYW1lLnJlcGxhY2UoXCJfaWRcIiwgXCJcIilcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0TmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKHJlbFByb3Aud2l0aCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudElkID0gYCR7cmVsUHJvcC53aXRofUlkQXN5bmNTZWxlY3RgO1xuICAgICAgICByZXR1cm4gYGltcG9ydCB7ICR7Y29tcG9uZW50SWR9IH0gZnJvbSBcInNyYy9jb21wb25lbnRzLyR7dGFyZ2V0TmFtZXMuZnN9LyR7Y29tcG9uZW50SWR9XCI7YDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBg66CM642UIOu2iOqwgOuKpe2VnCDtlYTthLAg7J6E7Y+s7Yq4ICR7Y29sLm5hbWV9ICR7Y29sLnJlbmRlclR5cGV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJGaWx0ZXIoZW50aXR5SWQ6IHN0cmluZywgY29sOiBSZW5kZXJpbmdOb2RlLCBuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICBpZiAoY29sLm5hbWUgPT09IFwic2VhcmNoXCIpIHtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cblxuICAgIGNvbnN0IGlzQ2xlYXJhYmxlID0gY29sLm9wdGlvbmFsID09PSB0cnVlICYmIGNvbC5uYW1lICE9PSBcIm9yZGVyQnlcIjtcbiAgICBsZXQgY29tcG9uZW50SWQ6IHN0cmluZztcbiAgICBpZiAoY29sLnJlbmRlclR5cGUgPT09IFwiZW51bXNcIikge1xuICAgICAgaWYgKGNvbC5uYW1lID09PSBcIm9yZGVyQnlcIikge1xuICAgICAgICBjb21wb25lbnRJZCA9IGAke25hbWVzLmNhcGl0YWx9JHtpbmZsZWN0aW9uLmNhbWVsaXplKGNvbC5uYW1lKX1TZWxlY3RgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7IGlkIH0gPSBnZXRFbnVtSW5mb0Zyb21Db2xOYW1lKGVudGl0eUlkLCBjb2wubmFtZSk7XG4gICAgICAgICAgY29tcG9uZW50SWQgPSBgJHtpZH1TZWxlY3RgO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGA8JHtjb21wb25lbnRJZH0gey4uLnJlZ2lzdGVyKCcke2NvbC5uYW1lfScpfSAke1xuICAgICAgICBpc0NsZWFyYWJsZSA/IFwiY2xlYXJhYmxlXCIgOiBcIlwiXG4gICAgICB9IC8+YDtcbiAgICB9IGVsc2UgaWYgKGNvbC5yZW5kZXJUeXBlID09PSBcIm51bWJlci1ma19pZFwiKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZWxQcm9wID0gZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUoXG4gICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgY29sLm5hbWUucmVwbGFjZShcIl9pZFwiLCBcIlwiKVxuICAgICAgICApO1xuICAgICAgICBjb21wb25lbnRJZCA9IGAke3JlbFByb3Aud2l0aH1JZEFzeW5jU2VsZWN0YDtcbiAgICAgICAgcmV0dXJuIGA8JHtjb21wb25lbnRJZH0gey4uLnJlZ2lzdGVyKCcke2NvbC5uYW1lfScpfSAke1xuICAgICAgICAgIGlzQ2xlYXJhYmxlID8gXCJjbGVhcmFibGVcIiA6IFwiXCJcbiAgICAgICAgfSBzdWJzZXQ9XCJBXCIgLz5gO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGDroIzrjZQg67aI6rCA64ql7ZWcIO2VhO2EsCDsnoTtj6ztirggJHtjb2wubmFtZX0gJHtjb2wucmVuZGVyVHlwZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGdldERlZmF1bHQoY29sdW1uczogUmVuZGVyaW5nTm9kZVtdKToge1xuICAgIG9yZGVyQnk6IHN0cmluZztcbiAgICBzZWFyY2g6IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgZGVmID0ge1xuICAgICAgb3JkZXJCeTogXCJpZC1kZXNjXCIsXG4gICAgICBzZWFyY2g6IFwidGl0bGVcIixcbiAgICB9O1xuICAgIGNvbnN0IG9yZGVyQnlab2RUeXBlID0gY29sdW1ucy5maW5kKFxuICAgICAgKGNvbCkgPT4gY29sLm5hbWUgPT09IFwib3JkZXJCeVwiXG4gICAgKT8uem9kVHlwZTtcbiAgICBpZiAob3JkZXJCeVpvZFR5cGUgJiYgb3JkZXJCeVpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEVudW0pIHtcbiAgICAgIGRlZi5vcmRlckJ5ID0gb3JkZXJCeVpvZFR5cGUub3B0aW9uc1swXS50b1N0cmluZygpO1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2hab2RUeXBlID0gY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5uYW1lID09PSBcInNlYXJjaFwiKT8uem9kVHlwZTtcbiAgICBpZiAoc2VhcmNoWm9kVHlwZSAmJiBzZWFyY2hab2RUeXBlIGluc3RhbmNlb2Ygei5ab2RFbnVtKSB7XG4gICAgICBkZWYuc2VhcmNoID0gc2VhcmNoWm9kVHlwZS5vcHRpb25zWzBdLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBkZWY7XG4gIH1cblxuICBhc3luYyByZW5kZXIoeyBlbnRpdHlJZCB9OiBUZW1wbGF0ZU9wdGlvbnNbXCJ2aWV3X2xpc3RcIl0pIHtcbiAgICBjb25zdCBjb2x1bW5zTm9kZSA9IGF3YWl0IGdldENvbHVtbnNOb2RlKGVudGl0eUlkLCBcIkFcIik7XG4gICAgY29uc3QgbGlzdFBhcmFtc1pvZFR5cGUgPSBhd2FpdCBnZXRab2RUeXBlQnlJZChgJHtlbnRpdHlJZH1MaXN0UGFyYW1zYCk7XG4gICAgY29uc3QgbGlzdFBhcmFtc05vZGUgPSB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlKGxpc3RQYXJhbXNab2RUeXBlKTtcblxuICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuXG4gICAgLy8g7Iuk7KCcIOumrOyKpO2KuCDsu6zrn7xcbiAgICBjb25zdCBjb2x1bW5zID0gKGNvbHVtbnNOb2RlLmNoaWxkcmVuIGFzIFJlbmRlcmluZ05vZGVbXSlcbiAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sLm5hbWUgIT09IFwiaWRcIilcbiAgICAgIC5tYXAoKGNvbCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wQ2FuZGlkYXRlID0gZW50aXR5LnByb3BzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gY29sLm5hbWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IGNvbC5uYW1lLFxuICAgICAgICAgIGxhYmVsOiBwcm9wQ2FuZGlkYXRlPy5kZXNjID8/IGNvbC5sYWJlbCxcbiAgICAgICAgICB0YzogYChyb3cpID0+ICR7dGhpcy5yZW5kZXJDb2x1bW4oZW50aXR5SWQsIGNvbCwgbmFtZXMpfWAsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgIC8vIO2VhO2EsCDsu6zrn7xcbiAgICBjb25zdCBmaWx0ZXJDb2x1bW5zID0gKGxpc3RQYXJhbXNOb2RlLmNoaWxkcmVuIGFzIFJlbmRlcmluZ05vZGVbXSlcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChjb2wpID0+XG4gICAgICAgICAgY29sLm5hbWUgIT09IFwiaWRcIiAmJlxuICAgICAgICAgIGNvbC5uYW1lICE9PSBcInF1ZXJ5TW9kZVwiICYmXG4gICAgICAgICAgKFtcImVudW1zXCIsIFwibnVtYmVyLWlkXCJdLmluY2x1ZGVzKGNvbC5yZW5kZXJUeXBlKSB8fFxuICAgICAgICAgICAgY29sLm5hbWUuZW5kc1dpdGgoXCJfaWRcIikpXG4gICAgICApXG4gICAgICAvLyBvcmRlckJ56rCAIOqwgOyepSDrkqTroZwg7Jik6rKMIOyInOyEnCDsobDsoJVcbiAgICAgIC5zb3J0KChhKSA9PiB7XG4gICAgICAgIHJldHVybiBhLm5hbWUgPT0gXCJvcmRlckJ5XCIgPyAxIDogLTE7XG4gICAgICB9KTtcblxuICAgIC8vIO2VhO2EsCDsu6zrn7zsnYQg7ZSE66asIO2FnO2UjOumv+ycvOuhnCDshKTsoJVcbiAgICBjb25zdCBwcmVUZW1wbGF0ZXM6IFJlbmRlcmVkVGVtcGxhdGVbXCJwcmVUZW1wbGF0ZXNcIl0gPSBbXTtcbiAgICBmb3IgKGxldCBjb2wgb2YgZmlsdGVyQ29sdW1ucykge1xuICAgICAgbGV0IGtleTogVGVtcGxhdGVLZXk7XG4gICAgICBsZXQgdGFyZ2V0RW50aXR5SWQgPSBlbnRpdHlJZDtcbiAgICAgIGxldCBlbnVtSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKGNvbC5yZW5kZXJUeXBlID09PSBcImVudW1zXCIpIHtcbiAgICAgICAgaWYgKGNvbC5uYW1lID09PSBcInNlYXJjaFwiKSB7XG4gICAgICAgICAga2V5ID0gXCJ2aWV3X2VudW1zX2Ryb3Bkb3duXCI7XG4gICAgICAgICAgZW51bUlkID0gYCR7bmFtZXMuY2FwaXRhbH1TZWFyY2hGaWVsZGA7XG4gICAgICAgICAgdGFyZ2V0RW50aXR5SWQgPSBuYW1lcy5jYXBpdGFsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGtleSA9IFwidmlld19lbnVtc19zZWxlY3RcIjtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRFbnRpdHlOYW1lcywgaWQgfSA9IGdldEVudW1JbmZvRnJvbUNvbE5hbWUoXG4gICAgICAgICAgICAgIGVudGl0eUlkLFxuICAgICAgICAgICAgICBjb2wubmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRhcmdldEVudGl0eUlkID0gdGFyZ2V0RW50aXR5TmFtZXMuY2FwaXRhbDtcbiAgICAgICAgICAgIGVudW1JZCA9IGlkO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXkgPSBcInZpZXdfaWRfYXN5bmNfc2VsZWN0XCI7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKFxuICAgICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgICBjb2wubmFtZS5yZXBsYWNlKFwiX2lkXCIsIFwiXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YXJnZXRFbnRpdHlJZCA9IHJlbFByb3Aud2l0aDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJlVGVtcGxhdGVzLnB1c2goe1xuICAgICAgICBrZXksXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBlbnRpdHlJZDogdGFyZ2V0RW50aXR5SWQsXG4gICAgICAgICAgZW51bUlkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8g66as7Iqk7Yq4IOy7rOufvFxuICAgIGNvbnN0IGNvbHVtbkltcG9ydHMgPSBfLnVuaXEoXG4gICAgICBjb2x1bW5zTm9kZVxuICAgICAgICAuY2hpbGRyZW4hLm1hcCgoY29sKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQ29sdW1uSW1wb3J0KGVudGl0eUlkLCBjb2wsIG5hbWVzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZsYXQoKVxuICAgICAgICAuZmlsdGVyKChjb2wpID0+IGNvbCAhPT0gbnVsbClcbiAgICApLmpvaW4oXCJcXG5cIik7XG5cbiAgICAvLyBTZWFyY2hJbnB1dFxuICAgIHByZVRlbXBsYXRlcyEucHVzaCh7XG4gICAgICBrZXk6IFwidmlld19zZWFyY2hfaW5wdXRcIixcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZW50aXR5SWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8g65SU7Y+07Yq4IO2MjOudvOuvuO2EsFxuICAgIGNvbnN0IGRlZiA9IHRoaXMuZ2V0RGVmYXVsdChmaWx0ZXJDb2x1bW5zKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgobmFtZXMpLFxuICAgICAgYm9keTogYFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IExpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7XG4gIEJyZWFkY3J1bWIsXG4gIENoZWNrYm94LFxuICBQYWdpbmF0aW9uLFxuICBTZWdtZW50LFxuICBUYWJsZSxcbiAgVGFibGVSb3csXG4gIE1lc3NhZ2UsXG4gIFRyYW5zaXRpb24sXG4gIEJ1dHRvbixcbiAgTGFiZWwsXG59IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcbmltcG9ydCB7IERlbEJ1dHRvbiwgRWRpdEJ1dHRvbiwgQXBwQnJlYWRjcnVtYnMsIEFkZEJ1dHRvbiwgdXNlU2VsZWN0aW9uLCB1c2VMaXN0UGFyYW1zLCBTb25hbXVDb2wsIG51bUYsIGZvcm1hdERhdGUsIGZvcm1hdERhdGVUaW1lIH0gZnJvbSAnQHNvbmFtdS1raXQvcmVhY3Qtc3VpJztcblxuaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfVN1YnNldEEgfSBmcm9tIFwic3JjL3NlcnZpY2VzL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlIH0gZnJvbSAnc3JjL3NlcnZpY2VzLyR7bmFtZXMuZnN9LyR7XG4gICAgICAgIG5hbWVzLmZzXG4gICAgICB9LnNlcnZpY2UnO1xuaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfUxpc3RQYXJhbXMgfSBmcm9tICdzcmMvc2VydmljZXMvJHtuYW1lcy5mc30vJHtcbiAgICAgICAgbmFtZXMuZnNcbiAgICAgIH0udHlwZXMnO1xuJHtjb2x1bW5JbXBvcnRzfVxuJHtmaWx0ZXJDb2x1bW5zXG4gIC5tYXAoKGNvbCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJlbmRlckZpbHRlckltcG9ydChlbnRpdHlJZCwgY29sLCBuYW1lcyk7XG4gIH0pXG4gIC5qb2luKFwiXFxuXCIpfVxuXG50eXBlICR7bmFtZXMuY2FwaXRhbH1MaXN0UHJvcHMgPSB7fTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICR7bmFtZXMuY2FwaXRhbH1MaXN0KHt9OiAke25hbWVzLmNhcGl0YWx9TGlzdFByb3BzKSB7XG4gIC8vIOumrOyKpO2KuCDtlYTthLBcbiAgY29uc3QgeyBsaXN0UGFyYW1zLCByZWdpc3RlciB9ID0gdXNlTGlzdFBhcmFtcygke25hbWVzLmNhcGl0YWx9TGlzdFBhcmFtcywge1xuICAgIG51bTogMTIsXG4gICAgcGFnZTogMSxcbiAgICBvcmRlckJ5OiAnJHtkZWYub3JkZXJCeX0nLFxuICAgIHNlYXJjaDogJyR7ZGVmLnNlYXJjaH0nLFxuICB9KTtcblxuICAvLyDrpqzsiqTtirgg7L+866asXG4gIGNvbnN0IHsgZGF0YSwgbXV0YXRlLCBlcnJvciwgaXNMb2FkaW5nIH0gPSAke25hbWVzLmNhcGl0YWx9U2VydmljZS51c2Uke1xuICAgIG5hbWVzLmNhcGl0YWxQbHVyYWxcbiAgfSgnQScsIGxpc3RQYXJhbXMpO1xuICBjb25zdCB7IHJvd3MsIHRvdGFsIH0gPSBkYXRhID8/IHt9O1xuXG4gIC8vIOyCreygnFxuICBjb25zdCBjb25maXJtRGVsID0gKGlkczogbnVtYmVyW10pID0+IHtcbiAgICBjb25zdCBhbnN3ZXIgPSBjb25maXJtKCfsgq3soJztlZjsi5zqsqDsirXri4jquYw/Jyk7XG4gICAgaWYgKCFhbnN3ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAke25hbWVzLmNhcGl0YWx9U2VydmljZS5kZWwoaWRzKS50aGVuKCgpID0+IHtcbiAgICAgIG11dGF0ZSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIC8vIOydvOq0hCDsgq3soJxcbiAgY29uc3QgY29uZmlybURlbFNlbGVjdGVkID0gKCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlciA9IGNvbmZpcm0oXFxgXFwke3NlbGVjdGVkS2V5cy5sZW5ndGh96rG07J2EIOydvOq0hCDsgq3soJztlZjsi5zqsqDsirXri4jquYw/XFxgKTtcbiAgICBpZiAoIWFuc3dlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLmRlbChzZWxlY3RlZEtleXMpLnRoZW4oKCkgPT4ge1xuICAgICAgbXV0YXRlKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgLy8g7ZiE7J6sIOqyveuhnOyZgCDtg4DsnbTti4BcbiAgY29uc3QgUEFHRSA9IHtcbiAgICByb3V0ZTogJy9hZG1pbi8ke25hbWVzLmZzUGx1cmFsfScsXG4gICAgdGl0bGU6ICcke2VudGl0eS50aXRsZSA/PyBuYW1lcy5jYXBpdGFsfScsXG4gIH07XG5cbiAgLy8g7ISg7YOdXG4gIGNvbnN0IHtcbiAgICBnZXRTZWxlY3RlZCxcbiAgICBpc0FsbFNlbGVjdGVkLFxuICAgIHNlbGVjdGVkS2V5cyxcbiAgICB0b2dnbGUsXG4gICAgc2VsZWN0QWxsLFxuICAgIGRlc2VsZWN0QWxsLFxuICAgIGhhbmRsZUNoZWNrYm94Q2xpY2ssXG4gIH0gPSB1c2VTZWxlY3Rpb24oKHJvd3MgPz8gW10pLm1hcCgocm93KSA9PiByb3cuaWQpKTtcblxuICAvLyDsu6zrn7xcbiAgY29uc3QgY29sdW1uczpTb25hbXVDb2w8JHtuYW1lcy5jYXBpdGFsfVN1YnNldEE+W10gPSBbJHtjb2x1bW5zXG4gICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBgeyBsYWJlbDogXCIke2NvbC5sYWJlbH1cIixgLFxuICAgICAgICBgdGM6ICR7Y29sLnRjfSwgYCxcbiAgICAgICAgYGNvbGxhcHNpbmc6ICR7W1wiVGl0bGVcIiwgXCJOYW1lXCJdLmluY2x1ZGVzKGNvbC5sYWJlbCkgPT09IGZhbHNlfSwgfWAsXG4gICAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgfSlcbiAgICAuam9pbihcIixcXG5cIil9XTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwibGlzdCAke25hbWVzLmZzUGx1cmFsfS1pbmRleFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0b3AtbmF2XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGVhZGVyXCI+e1BBR0UudGl0bGV9PC9kaXY+XG4gICAgICAgICAgPEFwcEJyZWFkY3J1bWJzPlxuICAgICAgICAgICAgPEJyZWFkY3J1bWIuU2VjdGlvbiBhY3RpdmU+e1BBR0UudGl0bGV9PC9CcmVhZGNydW1iLlNlY3Rpb24+XG4gICAgICAgICAgPC9BcHBCcmVhZGNydW1icz5cbiAgICAgICAgICA8JHtuYW1lcy5jYXBpdGFsfVNlYXJjaElucHV0XG4gICAgICAgICAgICBpbnB1dD17cmVnaXN0ZXIoJ2tleXdvcmQnKX1cbiAgICAgICAgICAgIGRyb3Bkb3duPXtyZWdpc3Rlcignc2VhcmNoJyl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlsdGVycy1yb3dcIj5cbiAgICAgICAgICAke2ZpbHRlckNvbHVtbnNcbiAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJGaWx0ZXIoZW50aXR5SWQsIGNvbCwgbmFtZXMpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5qb2luKFwiJm5ic3A7XFxuXCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8U2VnbWVudCBiYXNpYyBwYWRkZWQgY2xhc3NOYW1lPVwiY29udGVudHMtc2VnbWVudFwiIGxvYWRpbmc9e2lzTG9hZGluZ30+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYnV0dG9ucy1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnY291bnQnLCB7IGhpZGRlbjogaXNMb2FkaW5nIH0pfT5cbiAgICAgICAgICAgIHt0b3RhbH0g6rG0XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b25zXCI+XG4gICAgICAgICAgICA8QWRkQnV0dG9uIGN1cnJlbnRSb3V0ZT17UEFHRS5yb3V0ZX0gaWNvbj1cIndyaXRlXCIgbGFiZWw9XCLstpTqsIBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8VGFibGVcbiAgICAgICAgICBjZWxsZWRcbiAgICAgICAgICBjb21wYWN0XG4gICAgICAgICAgc2VsZWN0YWJsZVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7IGhpZGRlbjogdG90YWwgPT09IHVuZGVmaW5lZCB8fCB0b3RhbCA9PT0gMCB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWJsZS5IZWFkZXI+XG4gICAgICAgICAgICA8VGFibGVSb3c+XG4gICAgICAgICAgICAgIDxUYWJsZS5IZWFkZXJDZWxsIGNvbGxhcHNpbmc+XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBsYWJlbD1cIklEXCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2lzQWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aXNBbGxTZWxlY3RlZCA/IGRlc2VsZWN0QWxsIDogc2VsZWN0QWxsfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVGFibGUuSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC8qIEhlYWRlciAqL1xuICAgICAgICAgICAgICAgIGNvbHVtbnMubWFwKChjb2wsIGluZGV4KSA9PiBjb2wudGggPz8gPFRhYmxlLkhlYWRlckNlbGwga2V5PXtpbmRleH0gY29sbGFwc2luZz17Y29sLmNvbGxhcHNpbmd9PnsgY29sLmxhYmVsIH08L1RhYmxlLkhlYWRlckNlbGw+KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDxUYWJsZS5IZWFkZXJDZWxsPuq0gOumrDwvVGFibGUuSGVhZGVyQ2VsbD5cbiAgICAgICAgICAgIDwvVGFibGVSb3c+XG4gICAgICAgICAgPC9UYWJsZS5IZWFkZXI+XG4gICAgICAgICAgPFRhYmxlLkJvZHk+XG4gICAgICAgICAgICB7cm93cyAmJlxuICAgICAgICAgICAgICByb3dzLm1hcCgocm93LCByb3dJbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgIDxUYWJsZS5Sb3cga2V5PXtyb3cuaWR9PlxuICAgICAgICAgICAgICAgICAgPFRhYmxlLkNlbGw+XG4gICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtyb3cuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Z2V0U2VsZWN0ZWQocm93LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gdG9nZ2xlKHJvdy5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveENsaWNrKGUsIHJvd0luZGV4KVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvVGFibGUuQ2VsbD5cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgLyogQm9keSAqL1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLm1hcCgoY29sLCBjb2xJbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZS5DZWxsIGtleT17Y29sSW5kZXh9IGNvbGxhcHNpbmc9e2NvbC5jb2xsYXBzaW5nfSBjbGFzc05hbWU9e2NvbC5jbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAge2NvbC50Yyhyb3csIHJvd0luZGV4KX1cbiAgICAgICAgICAgICAgICAgICAgICA8L1RhYmxlLkNlbGw+XG4gICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8VGFibGUuQ2VsbCBjb2xsYXBzaW5nPlxuICAgICAgICAgICAgICAgICAgICA8RWRpdEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGFzPXtMaW5rfVxuICAgICAgICAgICAgICAgICAgICAgIHRvPXtcXGBcXCR7UEFHRS5yb3V0ZX0vZm9ybT9pZD1cXCR7cm93LmlkfVxcYH1cbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZT17eyBmcm9tOiBQQUdFLnJvdXRlIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxEZWxCdXR0b24gb25DbGljaz17KCkgPT4gY29uZmlybURlbChbcm93LmlkXSl9IC8+XG4gICAgICAgICAgICAgICAgICA8L1RhYmxlLkNlbGw+XG4gICAgICAgICAgICAgICAgPC9UYWJsZS5Sb3c+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvVGFibGUuQm9keT5cbiAgICAgICAgPC9UYWJsZT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcygncGFnaW5hdGlvbi1yb3cnLCB7XG4gICAgICAgICAgICBoaWRkZW46ICh0b3RhbCA/PyAwKSA9PT0gMCxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxQYWdpbmF0aW9uXG4gICAgICAgICAgICB0b3RhbFBhZ2VzPXtNYXRoLmNlaWwoKHRvdGFsID8/IDApIC8gKGxpc3RQYXJhbXMubnVtID8/IDI0KSl9XG4gICAgICAgICAgICB7Li4ucmVnaXN0ZXIoJ3BhZ2UnKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvU2VnbWVudD5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaXhlZC1tZW51XCI+XG4gICAgICAgIDxUcmFuc2l0aW9uXG4gICAgICAgICAgdmlzaWJsZT17c2VsZWN0ZWRLZXlzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgYW5pbWF0aW9uPVwic2xpZGUgbGVmdFwiXG4gICAgICAgICAgZHVyYXRpb249ezUwMH1cbiAgICAgICAgPlxuICAgICAgICAgIDxNZXNzYWdlIHNpemU9XCJzbWFsbFwiIGNvbG9yPVwidmlvbGV0XCIgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB4LTRcIj57c2VsZWN0ZWRLZXlzLmxlbmd0aH3qsJwg7ISg7YOd65CoPC9zcGFuPlxuICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwidGlueVwiIGNvbG9yPVwidmlvbGV0XCIgb25DbGljaz17KCkgPT4gZGVzZWxlY3RBbGwoKX0+XG4gICAgICAgICAgICAgIOyEoO2DnSDtlbTsoJxcbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgPEJ1dHRvbiBzaXplPVwidGlueVwiIGNvbG9yPVwicmVkXCIgb25DbGljaz17Y29uZmlybURlbFNlbGVjdGVkfT5cbiAgICAgICAgICAgICAg7J286rSEIOyCreygnFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9NZXNzYWdlPlxuICAgICAgICA8L1RyYW5zaXRpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICBwcmVUZW1wbGF0ZXMsXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImluZmxlY3Rpb24iLCJfIiwieiIsIkVudGl0eU1hbmFnZXIiLCJnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZSIsImdldEVudW1JbmZvRnJvbUNvbE5hbWUiLCJUZW1wbGF0ZSIsInpvZFR5cGVUb1JlbmRlcmluZ05vZGUiLCJnZXRab2RUeXBlQnlJZCIsImdldENvbHVtbnNOb2RlIiwiVGVtcGxhdGVfX3ZpZXdfbGlzdCIsImdldFRhcmdldEFuZFBhdGgiLCJuYW1lcyIsInRhcmdldCIsInBhdGgiLCJmc1BsdXJhbCIsIndyYXBUYyIsImJvZHkiLCJrZXkiLCJjb2xsYXBzaW5nIiwiY2xhc3NOYW1lIiwicmVuZGVyQ29sdW1uIiwiZW50aXR5SWQiLCJjb2wiLCJwYXJlbnRPYmoiLCJ3aXRob3V0TmFtZSIsImNvbE5hbWUiLCJuYW1lIiwicmVuZGVyVHlwZSIsInJlbFByb3BGayIsInJlcGxhY2UiLCJ3aXRoIiwibnVsbGFibGUiLCJpZCIsImVudW1JZCIsInBpY2tlZENoaWxkIiwiY2hpbGRyZW4iLCJmaW5kIiwiY2hpbGQiLCJjb25maWciLCJwaWNrZWQiLCJFcnJvciIsInJlbmRlckNvbHVtbkltcG9ydCIsImNhcGl0YWwiLCJyZWxQcm9wIiwicmVzdWx0IiwibWFwIiwiZ2V0TmFtZXNGcm9tSWQiLCJmbGF0dGVuRGVlcCIsImVsZW1lbnQiLCJyZW5kZXJGaWx0ZXJJbXBvcnQiLCJmcyIsImNvbXBvbmVudElkIiwiY2FtZWxpemUiLCJ0YXJnZXRFbnRpdHlOYW1lcyIsInRhcmdldE1ETmFtZXMiLCJ0YXJnZXROYW1lcyIsInJlbmRlckZpbHRlciIsImlzQ2xlYXJhYmxlIiwib3B0aW9uYWwiLCJnZXREZWZhdWx0IiwiY29sdW1ucyIsImRlZiIsIm9yZGVyQnkiLCJzZWFyY2giLCJvcmRlckJ5Wm9kVHlwZSIsInpvZFR5cGUiLCJab2RFbnVtIiwib3B0aW9ucyIsInRvU3RyaW5nIiwic2VhcmNoWm9kVHlwZSIsInJlbmRlciIsImNvbHVtbnNOb2RlIiwibGlzdFBhcmFtc1pvZFR5cGUiLCJsaXN0UGFyYW1zTm9kZSIsImVudGl0eSIsImdldCIsImZpbHRlciIsInByb3BDYW5kaWRhdGUiLCJwcm9wcyIsInAiLCJsYWJlbCIsImRlc2MiLCJ0YyIsImZpbHRlckNvbHVtbnMiLCJpbmNsdWRlcyIsImVuZHNXaXRoIiwic29ydCIsImEiLCJwcmVUZW1wbGF0ZXMiLCJ0YXJnZXRFbnRpdHlJZCIsInB1c2giLCJjb2x1bW5JbXBvcnRzIiwidW5pcSIsImZsYXQiLCJqb2luIiwiY2FwaXRhbFBsdXJhbCIsInRpdGxlIiwidHJpbSIsImltcG9ydEtleXMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGdCQUFnQixhQUFhO0FBQ3BDLFlBQVlDLE9BQU8sWUFBWTtBQUMvQixTQUFTQyxDQUFDLFFBQVEsTUFBTTtBQUV4QixTQUFTQyxhQUFhLFFBQTJCLGlDQUE4QjtBQUMvRSxTQUFTQywwQkFBMEIsRUFBRUMsc0JBQXNCLFFBQVEsZ0JBQWE7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
|
|
475
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19saXN0LnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCB7IGZsYXQsIHVuaXF1ZSB9IGZyb20gXCJyYWRhc2hpXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgUmVuZGVyaW5nTm9kZSwgVGVtcGxhdGVLZXksIFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0Q29sdW1uc05vZGUgfSBmcm9tIFwiLi4vZW50aXR5LWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgZ2V0RW51bUluZm9Gcm9tQ29sTmFtZSwgZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUgfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBSZW5kZXJlZFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgZ2V0Wm9kVHlwZUJ5SWQsIHpvZFR5cGVUb1JlbmRlcmluZ05vZGUgfSBmcm9tIFwiLi4vem9kLWNvbnZlcnRlclwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfbGlzdCBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJ2aWV3X2xpc3RcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IFwid2ViL3NyYy9wYWdlcy9hZG1pblwiLFxuICAgICAgcGF0aDogYCR7bmFtZXMuZnNQbHVyYWx9L2luZGV4LnRzeGAsXG4gICAgfTtcbiAgfVxuXG4gIHdyYXBUYyhib2R5OiBzdHJpbmcsIGtleTogc3RyaW5nLCBjb2xsYXBzaW5nOiBib29sZWFuID0gdHJ1ZSwgY2xhc3NOYW1lOiBzdHJpbmcgPSBcIlwiKSB7XG4gICAgcmV0dXJuIGA8VGFibGUuQ2VsbCBrZXk9XCIke2tleX1cIiR7Y29sbGFwc2luZyA/IFwiIGNvbGxhcHNpbmdcIiA6IFwiXCJ9JHtcbiAgICAgIGNsYXNzTmFtZSA/IGAgY2xhc3NOYW1lPXtcXGAke2NsYXNzTmFtZX1cXGB9YCA6IFwiXCJcbiAgICB9PiR7Ym9keX08L1RhYmxlLkNlbGw+YDtcbiAgfVxuXG4gIHJlbmRlckNvbHVtbihcbiAgICBlbnRpdHlJZDogc3RyaW5nLFxuICAgIGNvbDogUmVuZGVyaW5nTm9kZSxcbiAgICBuYW1lczogRW50aXR5TmFtZXNSZWNvcmQsXG4gICAgcGFyZW50T2JqOiBzdHJpbmcgPSBcInJvd1wiLFxuICAgIHdpdGhvdXROYW1lOiBib29sZWFuID0gZmFsc2UsXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgY29sTmFtZSA9IHdpdGhvdXROYW1lID8gYCR7cGFyZW50T2JqfWAgOiBgJHtwYXJlbnRPYmp9LiR7Y29sLm5hbWV9YDtcblxuICAgIHN3aXRjaCAoY29sLnJlbmRlclR5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmctcGxhaW5cIjpcbiAgICAgIGNhc2UgXCJzdHJpbmctZGF0ZVwiOlxuICAgICAgY2FzZSBcIm51bWJlci1pZFwiOlxuICAgICAgICByZXR1cm4gYDw+eyR7Y29sTmFtZX19PC8+YDtcbiAgICAgIGNhc2UgXCJudW1iZXItZmtfaWRcIjoge1xuICAgICAgICBjb25zdCByZWxQcm9wRmsgPSBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZCwgY29sLm5hbWUucmVwbGFjZShcIl9pZFwiLCBcIlwiKSk7XG4gICAgICAgIHJldHVybiBgPD4ke3JlbFByb3BGay53aXRofSN7JHtjb2xOYW1lfX08Lz5gO1xuICAgICAgfVxuICAgICAgY2FzZSBcInN0cmluZy1pbWFnZVwiOlxuICAgICAgICByZXR1cm4gYDw+eyR7Y29sLm51bGxhYmxlID8gYCR7Y29sTmFtZX0gJiYgYCA6IFwiXCJ9PGltZyBzcmM9eyR7Y29sTmFtZX19IC8+fTwvPmA7XG4gICAgICBjYXNlIFwiZGF0ZXRpbWVcIjpcbiAgICAgICAgaWYgKGNvbC5udWxsYWJsZSkge1xuICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10aW55XCI+eyR7Y29sTmFtZX0gPT09IG51bGwgPyAnLScgOiBmb3JtYXREYXRlVGltZSgke2NvbE5hbWV9KX08L3NwYW4+YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gYDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGlueVwiPntmb3JtYXREYXRlVGltZSgke2NvbE5hbWV9KX08L3NwYW4+YDtcbiAgICAgICAgfVxuICAgICAgY2FzZSBcInN0cmluZy1kYXRldGltZVwiOlxuICAgICAgICBpZiAoY29sLm51bGxhYmxlKSB7XG4gICAgICAgICAgcmV0dXJuIGA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXRpbnlcIj57JHtjb2xOYW1lfSA9PT0gbnVsbCA/ICctJyA6IGRhdGVGKCR7Y29sTmFtZX0pfTwvc3Bhbj5gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10aW55XCI+e2RhdGVGKCR7Y29sTmFtZX0pfTwvc3Bhbj5gO1xuICAgICAgICB9XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICByZXR1cm4gYDw+eyR7Y29sTmFtZX0gPyA8TGFiZWwgY29sb3I9J2dyZWVuJyBjaXJjdWxhcj5PPC9MYWJlbD4gOiA8TGFiZWwgY29sb3I9J2dyZXknIGNpcmN1bGFyPlg8L0xhYmVsPiB9PC8+YDtcbiAgICAgIGNhc2UgXCJlbnVtc1wiOiB7XG4gICAgICAgIGNvbnN0IHsgaWQ6IGVudW1JZCB9ID0gZ2V0RW51bUluZm9Gcm9tQ29sTmFtZShlbnRpdHlJZCwgY29sLm5hbWUpO1xuICAgICAgICByZXR1cm4gYDw+eyR7Y29sLm51bGxhYmxlID8gYCR7Y29sTmFtZX0gJiYgYCA6IFwiXCJ9JHtlbnVtSWR9TGFiZWxbJHtjb2xOYW1lfV19PC8+YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJhcnJheS1pbWFnZXNcIjpcbiAgICAgICAgcmV0dXJuIGA8PnsgJHtjb2xOYW1lfS5tYXAociA9PiAke2NvbC5udWxsYWJsZSA/IGByICYmIGAgOiBcIlwifTxpbWcgc3JjPXtyfSAvPikgfTwvPmA7XG4gICAgICBjYXNlIFwibnVtYmVyLXBsYWluXCI6XG4gICAgICAgIHJldHVybiBgPD57JHtjb2wubnVsbGFibGUgPyBgJHtjb2xOYW1lfSAmJiBgIDogXCJcIn1udW1GKCR7Y29sTmFtZX0pfTwvPmA7XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIHJldHVybiBgPD57Lyogb2JqZWN0ICR7Y29sTmFtZX0gKi99PC8+YDtcbiAgICAgIGNhc2UgXCJvYmplY3QtcGlja1wiOiB7XG4gICAgICAgIGNvbnN0IHBpY2tlZENoaWxkID0gY29sLmNoaWxkcmVuPy5maW5kKChjaGlsZCkgPT4gY2hpbGQubmFtZSA9PT0gY29sLmNvbmZpZz8ucGlja2VkKTtcbiAgICAgICAgaWYgKCFwaWNrZWRDaGlsZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgb2JqZWN0LXBpY2sg7ISg7YOdIOyLpO2MqCAo7Jik67iM7KCd7Yq4OiAke2NvbC5uYW1lfSlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJDb2x1bW4oXG4gICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgcGlja2VkQ2hpbGQsXG4gICAgICAgICAgbmFtZXMsXG4gICAgICAgICAgYCR7Y29sTmFtZX0ke2NvbC5udWxsYWJsZSA/IFwiP1wiIDogXCJcIn1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgIHJldHVybiBgPD57IC8qIGFycmF5ICR7Y29sTmFtZX0gKi8gfTwvPmA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYOugjOuNlCDrtojqsIAg7Lus65+8ICR7Y29sLnJlbmRlclR5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyQ29sdW1uSW1wb3J0KFxuICAgIGVudGl0eUlkOiBzdHJpbmcsXG4gICAgY29sOiBSZW5kZXJpbmdOb2RlLFxuICAgIG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCxcbiAgKTogKHN0cmluZyB8IG51bGwpW10ge1xuICAgIGlmIChjb2wucmVuZGVyVHlwZSA9PT0gXCJlbnVtc1wiKSB7XG4gICAgICBjb25zdCB7IGlkOiBlbnVtSWQgfSA9IGdldEVudW1JbmZvRnJvbUNvbE5hbWUobmFtZXMuY2FwaXRhbCwgY29sLm5hbWUpO1xuICAgICAgcmV0dXJuIFtgaW1wb3J0IHsgJHtlbnVtSWR9TGFiZWwgfSBmcm9tICdzcmMvc2VydmljZXMvc29uYW11LmdlbmVyYXRlZCc7YF07XG4gICAgfSBlbHNlIGlmIChjb2wucmVuZGVyVHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBjb2wubmFtZSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbC5jaGlsZHJlbj8ubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgIGVudGl0eUlkID0gcmVsUHJvcC53aXRoO1xuICAgICAgICAgIG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChyZWxQcm9wLndpdGgpO1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckNvbHVtbkltcG9ydChlbnRpdHlJZCwgY2hpbGQsIG5hbWVzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmbGF0KHJlc3VsdCA/PyBbXSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIFtudWxsXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbC5yZW5kZXJUeXBlID09PSBcImFycmF5XCIpIHtcbiAgICAgIGFzc2VydChjb2wuZWxlbWVudCk7XG4gICAgICByZXR1cm4gdGhpcy5yZW5kZXJDb2x1bW5JbXBvcnQoZW50aXR5SWQsIGNvbC5lbGVtZW50LCBuYW1lcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtudWxsXTtcbiAgfVxuXG4gIHJlbmRlckZpbHRlckltcG9ydChlbnRpdHlJZDogc3RyaW5nLCBjb2w6IFJlbmRlcmluZ05vZGUsIG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIGlmIChjb2wubmFtZSA9PT0gXCJzZWFyY2hcIikge1xuICAgICAgcmV0dXJuIGBpbXBvcnQgeyAke25hbWVzLmNhcGl0YWx9U2VhcmNoSW5wdXQgfSBmcm9tIFwic3JjL2NvbXBvbmVudHMvJHtuYW1lcy5mc30vJHtuYW1lcy5jYXBpdGFsfVNlYXJjaElucHV0XCI7YDtcbiAgICB9IGVsc2UgaWYgKGNvbC5yZW5kZXJUeXBlID09PSBcImVudW1zXCIpIHtcbiAgICAgIGlmIChjb2wubmFtZSA9PT0gXCJvcmRlckJ5XCIpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50SWQgPSBgJHtuYW1lcy5jYXBpdGFsfSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShjb2wubmFtZSl9U2VsZWN0YDtcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgeyAke2NvbXBvbmVudElkfSB9IGZyb20gXCJzcmMvY29tcG9uZW50cy8ke25hbWVzLmZzfS8ke2NvbXBvbmVudElkfVwiO2A7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgaWQsIHRhcmdldEVudGl0eU5hbWVzOiB0YXJnZXRNRE5hbWVzIH0gPSBnZXRFbnVtSW5mb0Zyb21Db2xOYW1lKFxuICAgICAgICAgICAgZW50aXR5SWQsXG4gICAgICAgICAgICBjb2wubmFtZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGNvbXBvbmVudElkID0gYCR7aWR9U2VsZWN0YDtcbiAgICAgICAgICByZXR1cm4gYGltcG9ydCB7ICR7Y29tcG9uZW50SWR9IH0gZnJvbSBcInNyYy9jb21wb25lbnRzLyR7dGFyZ2V0TUROYW1lcy5mc30vJHtjb21wb25lbnRJZH1cIjtgO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sLnJlbmRlclR5cGUgPT09IFwibnVtYmVyLWZrX2lkXCIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlbFByb3AgPSBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZCwgY29sLm5hbWUucmVwbGFjZShcIl9pZFwiLCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHRhcmdldE5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChyZWxQcm9wLndpdGgpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRJZCA9IGAke3JlbFByb3Aud2l0aH1JZEFzeW5jU2VsZWN0YDtcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgeyAke2NvbXBvbmVudElkfSB9IGZyb20gXCJzcmMvY29tcG9uZW50cy8ke3RhcmdldE5hbWVzLmZzfS8ke2NvbXBvbmVudElkfVwiO2A7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg66CM642UIOu2iOqwgOuKpe2VnCDtlYTthLAg7J6E7Y+s7Yq4ICR7Y29sLm5hbWV9ICR7Y29sLnJlbmRlclR5cGV9YCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyRmlsdGVyKGVudGl0eUlkOiBzdHJpbmcsIGNvbDogUmVuZGVyaW5nTm9kZSwgbmFtZXM6IEVudGl0eU5hbWVzUmVjb3JkKSB7XG4gICAgaWYgKGNvbC5uYW1lID09PSBcInNlYXJjaFwiKSB7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0NsZWFyYWJsZSA9IGNvbC5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBjb2wubmFtZSAhPT0gXCJvcmRlckJ5XCI7XG4gICAgbGV0IGNvbXBvbmVudElkOiBzdHJpbmc7XG4gICAgaWYgKGNvbC5yZW5kZXJUeXBlID09PSBcImVudW1zXCIpIHtcbiAgICAgIGlmIChjb2wubmFtZSA9PT0gXCJvcmRlckJ5XCIpIHtcbiAgICAgICAgY29tcG9uZW50SWQgPSBgJHtuYW1lcy5jYXBpdGFsfSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShjb2wubmFtZSl9U2VsZWN0YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBpZCB9ID0gZ2V0RW51bUluZm9Gcm9tQ29sTmFtZShlbnRpdHlJZCwgY29sLm5hbWUpO1xuICAgICAgICAgIGNvbXBvbmVudElkID0gYCR7aWR9U2VsZWN0YDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBgPCR7Y29tcG9uZW50SWR9IHsuLi5yZWdpc3RlcignJHtjb2wubmFtZX0nKX0gJHtpc0NsZWFyYWJsZSA/IFwiY2xlYXJhYmxlXCIgOiBcIlwifSAvPmA7XG4gICAgfSBlbHNlIGlmIChjb2wucmVuZGVyVHlwZSA9PT0gXCJudW1iZXItZmtfaWRcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBjb2wubmFtZS5yZXBsYWNlKFwiX2lkXCIsIFwiXCIpKTtcbiAgICAgICAgY29tcG9uZW50SWQgPSBgJHtyZWxQcm9wLndpdGh9SWRBc3luY1NlbGVjdGA7XG4gICAgICAgIHJldHVybiBgPCR7Y29tcG9uZW50SWR9IHsuLi5yZWdpc3RlcignJHtjb2wubmFtZX0nKX0gJHtcbiAgICAgICAgICBpc0NsZWFyYWJsZSA/IFwiY2xlYXJhYmxlXCIgOiBcIlwiXG4gICAgICAgIH0gc3Vic2V0PVwiQVwiIC8+YDtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDroIzrjZQg67aI6rCA64ql7ZWcIO2VhO2EsCDsnoTtj6ztirggJHtjb2wubmFtZX0gJHtjb2wucmVuZGVyVHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBnZXREZWZhdWx0KGNvbHVtbnM6IFJlbmRlcmluZ05vZGVbXSk6IHtcbiAgICBvcmRlckJ5OiBzdHJpbmc7XG4gICAgc2VhcmNoOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IGRlZiA9IHtcbiAgICAgIG9yZGVyQnk6IFwiaWQtZGVzY1wiLFxuICAgICAgc2VhcmNoOiBcInRpdGxlXCIsXG4gICAgfTtcbiAgICBjb25zdCBvcmRlckJ5Wm9kVHlwZSA9IGNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wubmFtZSA9PT0gXCJvcmRlckJ5XCIpPy56b2RUeXBlO1xuICAgIGlmIChvcmRlckJ5Wm9kVHlwZSAmJiBvcmRlckJ5Wm9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgICAgZGVmLm9yZGVyQnkgPSBvcmRlckJ5Wm9kVHlwZS5vcHRpb25zWzBdLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGNvbnN0IHNlYXJjaFpvZFR5cGUgPSBjb2x1bW5zLmZpbmQoKGNvbCkgPT4gY29sLm5hbWUgPT09IFwic2VhcmNoXCIpPy56b2RUeXBlO1xuICAgIGlmIChzZWFyY2hab2RUeXBlICYmIHNlYXJjaFpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEVudW0pIHtcbiAgICAgIGRlZi5zZWFyY2ggPSBzZWFyY2hab2RUeXBlLm9wdGlvbnNbMF0udG9TdHJpbmcoKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZjtcbiAgfVxuXG4gIGFzeW5jIHJlbmRlcih7IGVudGl0eUlkIH06IFRlbXBsYXRlT3B0aW9uc1tcInZpZXdfbGlzdFwiXSkge1xuICAgIGNvbnN0IGNvbHVtbnNOb2RlID0gYXdhaXQgZ2V0Q29sdW1uc05vZGUoZW50aXR5SWQsIFwiQVwiKTtcbiAgICBjb25zdCBsaXN0UGFyYW1zWm9kVHlwZSA9IGF3YWl0IGdldFpvZFR5cGVCeUlkKGAke2VudGl0eUlkfUxpc3RQYXJhbXNgKTtcbiAgICBjb25zdCBsaXN0UGFyYW1zTm9kZSA9IHpvZFR5cGVUb1JlbmRlcmluZ05vZGUobGlzdFBhcmFtc1pvZFR5cGUpO1xuXG4gICAgY29uc3QgbmFtZXMgPSBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKGVudGl0eUlkKTtcbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAvLyDsi6TsoJwg66as7Iqk7Yq4IOy7rOufvFxuICAgIGNvbnN0IGNvbHVtbnMgPSAoY29sdW1uc05vZGUuY2hpbGRyZW4gYXMgUmVuZGVyaW5nTm9kZVtdKVxuICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wubmFtZSAhPT0gXCJpZFwiKVxuICAgICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BDYW5kaWRhdGUgPSBlbnRpdHkucHJvcHMuZmluZCgocCkgPT4gcC5uYW1lID09PSBjb2wubmFtZSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogY29sLm5hbWUsXG4gICAgICAgICAgbGFiZWw6IHByb3BDYW5kaWRhdGU/LmRlc2MgPz8gY29sLmxhYmVsLFxuICAgICAgICAgIHRjOiBgKHJvdykgPT4gJHt0aGlzLnJlbmRlckNvbHVtbihlbnRpdHlJZCwgY29sLCBuYW1lcyl9YCxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgLy8g7ZWE7YSwIOy7rOufvFxuICAgIGNvbnN0IGZpbHRlckNvbHVtbnMgPSAobGlzdFBhcmFtc05vZGUuY2hpbGRyZW4gYXMgUmVuZGVyaW5nTm9kZVtdKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGNvbCkgPT5cbiAgICAgICAgICBjb2wubmFtZSAhPT0gXCJpZFwiICYmXG4gICAgICAgICAgY29sLm5hbWUgIT09IFwicXVlcnlNb2RlXCIgJiZcbiAgICAgICAgICAoW1wiZW51bXNcIiwgXCJudW1iZXItaWRcIl0uaW5jbHVkZXMoY29sLnJlbmRlclR5cGUpIHx8IGNvbC5uYW1lLmVuZHNXaXRoKFwiX2lkXCIpKSxcbiAgICAgIClcbiAgICAgIC8vIG9yZGVyQnnqsIAg6rCA7J6lIOuSpOuhnCDsmKTqsowg7Iic7IScIOyhsOyglVxuICAgICAgLnNvcnQoKGEpID0+IHtcbiAgICAgICAgcmV0dXJuIGEubmFtZSA9PT0gXCJvcmRlckJ5XCIgPyAxIDogLTE7XG4gICAgICB9KTtcblxuICAgIC8vIO2VhO2EsCDsu6zrn7zsnYQg7ZSE66asIO2FnO2UjOumv+ycvOuhnCDshKTsoJVcbiAgICBjb25zdCBwcmVUZW1wbGF0ZXM6IFJlbmRlcmVkVGVtcGxhdGVbXCJwcmVUZW1wbGF0ZXNcIl0gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBmaWx0ZXJDb2x1bW5zKSB7XG4gICAgICBsZXQga2V5OiBUZW1wbGF0ZUtleTtcbiAgICAgIGxldCB0YXJnZXRFbnRpdHlJZCA9IGVudGl0eUlkO1xuICAgICAgbGV0IGVudW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoY29sLnJlbmRlclR5cGUgPT09IFwiZW51bXNcIikge1xuICAgICAgICBpZiAoY29sLm5hbWUgPT09IFwic2VhcmNoXCIpIHtcbiAgICAgICAgICBrZXkgPSBcInZpZXdfZW51bXNfZHJvcGRvd25cIjtcbiAgICAgICAgICBlbnVtSWQgPSBgJHtuYW1lcy5jYXBpdGFsfVNlYXJjaEZpZWxkYDtcbiAgICAgICAgICB0YXJnZXRFbnRpdHlJZCA9IG5hbWVzLmNhcGl0YWw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2V5ID0gXCJ2aWV3X2VudW1zX3NlbGVjdFwiO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IHRhcmdldEVudGl0eU5hbWVzLCBpZCB9ID0gZ2V0RW51bUluZm9Gcm9tQ29sTmFtZShlbnRpdHlJZCwgY29sLm5hbWUpO1xuICAgICAgICAgICAgdGFyZ2V0RW50aXR5SWQgPSB0YXJnZXRFbnRpdHlOYW1lcy5jYXBpdGFsO1xuICAgICAgICAgICAgZW51bUlkID0gaWQ7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGtleSA9IFwidmlld19pZF9hc3luY19zZWxlY3RcIjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZWxQcm9wID0gZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUoZW50aXR5SWQsIGNvbC5uYW1lLnJlcGxhY2UoXCJfaWRcIiwgXCJcIikpO1xuICAgICAgICAgIHRhcmdldEVudGl0eUlkID0gcmVsUHJvcC53aXRoO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwcmVUZW1wbGF0ZXMucHVzaCh7XG4gICAgICAgIGtleSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGVudGl0eUlkOiB0YXJnZXRFbnRpdHlJZCxcbiAgICAgICAgICBlbnVtSWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyDrpqzsiqTtirgg7Lus65+8XG4gICAgYXNzZXJ0KGNvbHVtbnNOb2RlLmNoaWxkcmVuKTtcbiAgICBjb25zdCBjb2x1bW5JbXBvcnRzID0gdW5pcXVlKFxuICAgICAgY29sdW1uc05vZGUuY2hpbGRyZW5cbiAgICAgICAgLmZsYXRNYXAoKGNvbCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckNvbHVtbkltcG9ydChlbnRpdHlJZCwgY29sLCBuYW1lcyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sICE9PSBudWxsKSxcbiAgICApLmpvaW4oXCJcXG5cIik7XG5cbiAgICAvLyBTZWFyY2hJbnB1dFxuICAgIGFzc2VydChwcmVUZW1wbGF0ZXMpO1xuICAgIHByZVRlbXBsYXRlcy5wdXNoKHtcbiAgICAgIGtleTogXCJ2aWV3X3NlYXJjaF9pbnB1dFwiLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBlbnRpdHlJZCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyDrlJTtj7Ttirgg7YyM652866+47YSwXG4gICAgY29uc3QgZGVmID0gdGhpcy5nZXREZWZhdWx0KGZpbHRlckNvbHVtbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcyksXG4gICAgICBib2R5OiBgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTGluayB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHtcbiAgQnJlYWRjcnVtYixcbiAgQ2hlY2tib3gsXG4gIFBhZ2luYXRpb24sXG4gIFNlZ21lbnQsXG4gIFRhYmxlLFxuICBUYWJsZVJvdyxcbiAgTWVzc2FnZSxcbiAgVHJhbnNpdGlvbixcbiAgQnV0dG9uLFxuICBMYWJlbCxcbn0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgRGVsQnV0dG9uLCBFZGl0QnV0dG9uLCBBcHBCcmVhZGNydW1icywgQWRkQnV0dG9uLCB1c2VTZWxlY3Rpb24sIHVzZUxpc3RQYXJhbXMsIFNvbmFtdUNvbCwgbnVtRiwgZm9ybWF0RGF0ZSwgZm9ybWF0RGF0ZVRpbWUgfSBmcm9tICdAc29uYW11LWtpdC9yZWFjdC1zdWknO1xuXG5pbXBvcnQgeyAke25hbWVzLmNhcGl0YWx9U3Vic2V0QSB9IGZyb20gXCJzcmMvc2VydmljZXMvc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfVNlcnZpY2UgfSBmcm9tICdzcmMvc2VydmljZXMvJHtuYW1lcy5mc30vJHtuYW1lcy5mc30uc2VydmljZSc7XG5pbXBvcnQgeyAke25hbWVzLmNhcGl0YWx9TGlzdFBhcmFtcyB9IGZyb20gJ3NyYy9zZXJ2aWNlcy8ke25hbWVzLmZzfS8ke25hbWVzLmZzfS50eXBlcyc7XG4ke2NvbHVtbkltcG9ydHN9XG4ke2ZpbHRlckNvbHVtbnNcbiAgLm1hcCgoY29sKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyRmlsdGVySW1wb3J0KGVudGl0eUlkLCBjb2wsIG5hbWVzKTtcbiAgfSlcbiAgLmpvaW4oXCJcXG5cIil9XG5cbnR5cGUgJHtuYW1lcy5jYXBpdGFsfUxpc3RQcm9wcyA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gJHtuYW1lcy5jYXBpdGFsfUxpc3Qoe306ICR7bmFtZXMuY2FwaXRhbH1MaXN0UHJvcHMpIHtcbiAgLy8g66as7Iqk7Yq4IO2VhO2EsFxuICBjb25zdCB7IGxpc3RQYXJhbXMsIHJlZ2lzdGVyIH0gPSB1c2VMaXN0UGFyYW1zKCR7bmFtZXMuY2FwaXRhbH1MaXN0UGFyYW1zLCB7XG4gICAgbnVtOiAxMixcbiAgICBwYWdlOiAxLFxuICAgIG9yZGVyQnk6ICcke2RlZi5vcmRlckJ5fScsXG4gICAgc2VhcmNoOiAnJHtkZWYuc2VhcmNofScsXG4gIH0pO1xuXG4gIC8vIOumrOyKpO2KuCDsv7zrpqxcbiAgY29uc3QgeyBkYXRhLCBtdXRhdGUsIGVycm9yLCBpc0xvYWRpbmcgfSA9ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLnVzZSR7XG4gICAgbmFtZXMuY2FwaXRhbFBsdXJhbFxuICB9KCdBJywgbGlzdFBhcmFtcyk7XG4gIGNvbnN0IHsgcm93cywgdG90YWwgfSA9IGRhdGEgPz8ge307XG5cbiAgLy8g7IKt7KCcXG4gIGNvbnN0IGNvbmZpcm1EZWwgPSAoaWRzOiBudW1iZXJbXSkgPT4ge1xuICAgIGNvbnN0IGFuc3dlciA9IGNvbmZpcm0oJ+yCreygnO2VmOyLnOqyoOyKteuLiOq5jD8nKTtcbiAgICBpZiAoIWFuc3dlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLmRlbChpZHMpLnRoZW4oKCkgPT4ge1xuICAgICAgbXV0YXRlKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgLy8g7J286rSEIOyCreygnFxuICBjb25zdCBjb25maXJtRGVsU2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgY29uc3QgYW5zd2VyID0gY29uZmlybShcXGBcXCR7c2VsZWN0ZWRLZXlzLmxlbmd0aH3qsbTsnYQg7J286rSEIOyCreygnO2VmOyLnOqyoOyKteuLiOq5jD9cXGApO1xuICAgIGlmICghYW5zd2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgJHtuYW1lcy5jYXBpdGFsfVNlcnZpY2UuZGVsKHNlbGVjdGVkS2V5cykudGhlbigoKSA9PiB7XG4gICAgICBtdXRhdGUoKTtcbiAgICB9KTtcbiAgfTtcblxuICAvLyDtmITsnqwg6rK966Gc7JmAIO2DgOydtO2LgFxuICBjb25zdCBQQUdFID0ge1xuICAgIHJvdXRlOiAnL2FkbWluLyR7bmFtZXMuZnNQbHVyYWx9JyxcbiAgICB0aXRsZTogJyR7ZW50aXR5LnRpdGxlID8/IG5hbWVzLmNhcGl0YWx9JyxcbiAgfTtcblxuICAvLyDshKDtg51cbiAgY29uc3Qge1xuICAgIGdldFNlbGVjdGVkLFxuICAgIGlzQWxsU2VsZWN0ZWQsXG4gICAgc2VsZWN0ZWRLZXlzLFxuICAgIHRvZ2dsZSxcbiAgICBzZWxlY3RBbGwsXG4gICAgZGVzZWxlY3RBbGwsXG4gICAgaGFuZGxlQ2hlY2tib3hDbGljayxcbiAgfSA9IHVzZVNlbGVjdGlvbigocm93cyA/PyBbXSkubWFwKChyb3cpID0+IHJvdy5pZCkpO1xuXG4gIC8vIOy7rOufvFxuICBjb25zdCBjb2x1bW5zOlNvbmFtdUNvbDwke25hbWVzLmNhcGl0YWx9U3Vic2V0QT5bXSA9IFske2NvbHVtbnNcbiAgICAubWFwKChjb2wpID0+IHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGB7IGxhYmVsOiBcIiR7Y29sLmxhYmVsfVwiLGAsXG4gICAgICAgIGB0YzogJHtjb2wudGN9LCBgLFxuICAgICAgICBgY29sbGFwc2luZzogJHtbXCJUaXRsZVwiLCBcIk5hbWVcIl0uaW5jbHVkZXMoY29sLmxhYmVsKSA9PT0gZmFsc2V9LCB9YCxcbiAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICB9KVxuICAgIC5qb2luKFwiLFxcblwiKX1dO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJsaXN0ICR7bmFtZXMuZnNQbHVyYWx9LWluZGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvcC1uYXZcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXItcm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoZWFkZXJcIj57UEFHRS50aXRsZX08L2Rpdj5cbiAgICAgICAgICA8QXBwQnJlYWRjcnVtYnM+XG4gICAgICAgICAgICA8QnJlYWRjcnVtYi5TZWN0aW9uIGFjdGl2ZT57UEFHRS50aXRsZX08L0JyZWFkY3J1bWIuU2VjdGlvbj5cbiAgICAgICAgICA8L0FwcEJyZWFkY3J1bWJzPlxuICAgICAgICAgIDwke25hbWVzLmNhcGl0YWx9U2VhcmNoSW5wdXRcbiAgICAgICAgICAgIGlucHV0PXtyZWdpc3Rlcigna2V5d29yZCcpfVxuICAgICAgICAgICAgZHJvcGRvd249e3JlZ2lzdGVyKCdzZWFyY2gnKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmaWx0ZXJzLXJvd1wiPlxuICAgICAgICAgICR7ZmlsdGVyQ29sdW1uc1xuICAgICAgICAgICAgLm1hcCgoY29sKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckZpbHRlcihlbnRpdHlJZCwgY29sLCBuYW1lcyk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCImbmJzcDtcXG5cIil9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxTZWdtZW50IGJhc2ljIHBhZGRlZCBjbGFzc05hbWU9XCJjb250ZW50cy1zZWdtZW50XCIgbG9hZGluZz17aXNMb2FkaW5nfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJidXR0b25zLXJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdjb3VudCcsIHsgaGlkZGVuOiBpc0xvYWRpbmcgfSl9PlxuICAgICAgICAgICAge3RvdGFsfSDqsbRcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxBZGRCdXR0b24gY3VycmVudFJvdXRlPXtQQUdFLnJvdXRlfSBpY29uPVwid3JpdGVcIiBsYWJlbD1cIuy2lOqwgFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxUYWJsZVxuICAgICAgICAgIGNlbGxlZFxuICAgICAgICAgIGNvbXBhY3RcbiAgICAgICAgICBzZWxlY3RhYmxlXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHsgaGlkZGVuOiB0b3RhbCA9PT0gdW5kZWZpbmVkIHx8IHRvdGFsID09PSAwIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFRhYmxlLkhlYWRlcj5cbiAgICAgICAgICAgIDxUYWJsZVJvdz5cbiAgICAgICAgICAgICAgPFRhYmxlLkhlYWRlckNlbGwgY29sbGFwc2luZz5cbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGxhYmVsPVwiSURcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17aXNBbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtpc0FsbFNlbGVjdGVkID8gZGVzZWxlY3RBbGwgOiBzZWxlY3RBbGx9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9UYWJsZS5IZWFkZXJDZWxsPlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLyogSGVhZGVyICovXG4gICAgICAgICAgICAgICAgY29sdW1ucy5tYXAoKGNvbCwgaW5kZXgpID0+IGNvbC50aCA/PyA8VGFibGUuSGVhZGVyQ2VsbCBrZXk9e2luZGV4fSBjb2xsYXBzaW5nPXtjb2wuY29sbGFwc2luZ30+eyBjb2wubGFiZWwgfTwvVGFibGUuSGVhZGVyQ2VsbD4pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPFRhYmxlLkhlYWRlckNlbGw+6rSA66asPC9UYWJsZS5IZWFkZXJDZWxsPlxuICAgICAgICAgICAgPC9UYWJsZVJvdz5cbiAgICAgICAgICA8L1RhYmxlLkhlYWRlcj5cbiAgICAgICAgICA8VGFibGUuQm9keT5cbiAgICAgICAgICAgIHtyb3dzICYmXG4gICAgICAgICAgICAgIHJvd3MubWFwKChyb3csIHJvd0luZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgPFRhYmxlLlJvdyBrZXk9e3Jvdy5pZH0+XG4gICAgICAgICAgICAgICAgICA8VGFibGUuQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e3Jvdy5pZH1cbiAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtnZXRTZWxlY3RlZChyb3cuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiB0b2dnbGUocm93LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94Q2xpY2soZSwgcm93SW5kZXgpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9UYWJsZS5DZWxsPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAvKiBCb2R5ICovXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbnMubWFwKChjb2wsIGNvbEluZGV4KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgPFRhYmxlLkNlbGwga2V5PXtjb2xJbmRleH0gY29sbGFwc2luZz17Y29sLmNvbGxhcHNpbmd9IGNsYXNzTmFtZT17Y29sLmNsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y29sLnRjKHJvdywgcm93SW5kZXgpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGUuQ2VsbD5cbiAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDxUYWJsZS5DZWxsIGNvbGxhcHNpbmc+XG4gICAgICAgICAgICAgICAgICAgIDxFZGl0QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgYXM9e0xpbmt9XG4gICAgICAgICAgICAgICAgICAgICAgdG89e1xcYFxcJHtQQUdFLnJvdXRlfS9mb3JtP2lkPVxcJHtyb3cuaWR9XFxgfVxuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlPXt7IGZyb206IFBBR0Uucm91dGUgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPERlbEJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBjb25maXJtRGVsKFtyb3cuaWRdKX0gLz5cbiAgICAgICAgICAgICAgICAgIDwvVGFibGUuQ2VsbD5cbiAgICAgICAgICAgICAgICA8L1RhYmxlLlJvdz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9UYWJsZS5Cb2R5PlxuICAgICAgICA8L1RhYmxlPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdwYWdpbmF0aW9uLXJvdycsIHtcbiAgICAgICAgICAgIGhpZGRlbjogKHRvdGFsID8/IDApID09PSAwLFxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFBhZ2luYXRpb25cbiAgICAgICAgICAgIHRvdGFsUGFnZXM9e01hdGguY2VpbCgodG90YWwgPz8gMCkgLyAobGlzdFBhcmFtcy5udW0gPz8gMjQpKX1cbiAgICAgICAgICAgIHsuLi5yZWdpc3RlcigncGFnZScpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9TZWdtZW50PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkLW1lbnVcIj5cbiAgICAgICAgPFRyYW5zaXRpb25cbiAgICAgICAgICB2aXNpYmxlPXtzZWxlY3RlZEtleXMubGVuZ3RoID4gMH1cbiAgICAgICAgICBhbmltYXRpb249XCJzbGlkZSBsZWZ0XCJcbiAgICAgICAgICBkdXJhdGlvbj17NTAwfVxuICAgICAgICA+XG4gICAgICAgICAgPE1lc3NhZ2Ugc2l6ZT1cInNtYWxsXCIgY29sb3I9XCJ2aW9sZXRcIiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicHgtNFwiPntzZWxlY3RlZEtleXMubGVuZ3RofeqwnCDshKDtg53rkKg8L3NwYW4+XG4gICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJ0aW55XCIgY29sb3I9XCJ2aW9sZXRcIiBvbkNsaWNrPXsoKSA9PiBkZXNlbGVjdEFsbCgpfT5cbiAgICAgICAgICAgICAg7ISg7YOdIO2VtOygnFxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uIHNpemU9XCJ0aW55XCIgY29sb3I9XCJyZWRcIiBvbkNsaWNrPXtjb25maXJtRGVsU2VsZWN0ZWR9PlxuICAgICAgICAgICAgICDsnbzqtIQg7IKt7KCcXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L01lc3NhZ2U+XG4gICAgICAgIDwvVHJhbnNpdGlvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuICAgICAgYC50cmltKCksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICAgIHByZVRlbXBsYXRlcyxcbiAgICB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsiYXNzZXJ0IiwiaW5mbGVjdGlvbiIsImZsYXQiLCJ1bmlxdWUiLCJ6IiwiRW50aXR5TWFuYWdlciIsImdldENvbHVtbnNOb2RlIiwiZ2V0RW51bUluZm9Gcm9tQ29sTmFtZSIsImdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lIiwiVGVtcGxhdGUiLCJnZXRab2RUeXBlQnlJZCIsInpvZFR5cGVUb1JlbmRlcmluZ05vZGUiLCJUZW1wbGF0ZV9fdmlld19saXN0IiwiZ2V0VGFyZ2V0QW5kUGF0aCIsIm5hbWVzIiwidGFyZ2V0IiwicGF0aCIsImZzUGx1cmFsIiwid3JhcFRjIiwiYm9keSIsImtleSIsImNvbGxhcHNpbmciLCJjbGFzc05hbWUiLCJyZW5kZXJDb2x1bW4iLCJlbnRpdHlJZCIsImNvbCIsInBhcmVudE9iaiIsIndpdGhvdXROYW1lIiwiY29sTmFtZSIsIm5hbWUiLCJyZW5kZXJUeXBlIiwicmVsUHJvcEZrIiwicmVwbGFjZSIsIndpdGgiLCJudWxsYWJsZSIsImlkIiwiZW51bUlkIiwicGlja2VkQ2hpbGQiLCJjaGlsZHJlbiIsImZpbmQiLCJjaGlsZCIsImNvbmZpZyIsInBpY2tlZCIsIkVycm9yIiwicmVuZGVyQ29sdW1uSW1wb3J0IiwiY2FwaXRhbCIsInJlbFByb3AiLCJyZXN1bHQiLCJtYXAiLCJnZXROYW1lc0Zyb21JZCIsImVsZW1lbnQiLCJyZW5kZXJGaWx0ZXJJbXBvcnQiLCJmcyIsImNvbXBvbmVudElkIiwiY2FtZWxpemUiLCJ0YXJnZXRFbnRpdHlOYW1lcyIsInRhcmdldE1ETmFtZXMiLCJ0YXJnZXROYW1lcyIsInJlbmRlckZpbHRlciIsImlzQ2xlYXJhYmxlIiwib3B0aW9uYWwiLCJnZXREZWZhdWx0IiwiY29sdW1ucyIsImRlZiIsIm9yZGVyQnkiLCJzZWFyY2giLCJvcmRlckJ5Wm9kVHlwZSIsInpvZFR5cGUiLCJab2RFbnVtIiwib3B0aW9ucyIsInRvU3RyaW5nIiwic2VhcmNoWm9kVHlwZSIsInJlbmRlciIsImNvbHVtbnNOb2RlIiwibGlzdFBhcmFtc1pvZFR5cGUiLCJsaXN0UGFyYW1zTm9kZSIsImVudGl0eSIsImdldCIsImZpbHRlciIsInByb3BDYW5kaWRhdGUiLCJwcm9wcyIsInAiLCJsYWJlbCIsImRlc2MiLCJ0YyIsImZpbHRlckNvbHVtbnMiLCJpbmNsdWRlcyIsImVuZHNXaXRoIiwic29ydCIsImEiLCJwcmVUZW1wbGF0ZXMiLCJ0YXJnZXRFbnRpdHlJZCIsInB1c2giLCJjb2x1bW5JbXBvcnRzIiwiZmxhdE1hcCIsImpvaW4iLCJjYXBpdGFsUGx1cmFsIiwidGl0bGUiLCJ0cmltIiwiaW1wb3J0S2V5cyJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsWUFBWSxTQUFTO0FBQzVCLE9BQU9DLGdCQUFnQixhQUFhO0FBQ3BDLFNBQVNDLElBQUksRUFBRUMsTUFBTSxRQUFRLFVBQVU7QUFDdkMsU0FBU0MsQ0FBQyxRQUFRLE1BQU07QUFDeEIsU0FBU0MsYUFBYSxRQUFnQyxpQ0FBOEI7QUFFcEYsU0FBU0MsY0FBYyxRQUFRLHlCQUFzQjtBQUNyRCxTQUFTQyxzQkFBc0IsRUFBRUMsMEJBQTBCLFFBQVEsZ0JBQWE7QUFFaEYsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBQ3ZDLFNBQVNDLGNBQWMsRUFBRUMsc0JBQXNCLFFBQVEsc0JBQW1CO0FBRTFFLE9BQU8sTUFBTUMsNEJBQTRCSDtJQUN2QyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUksaUJBQWlCQyxLQUF3QixFQUFFO1FBQ3pDLE9BQU87WUFDTEMsUUFBUTtZQUNSQyxNQUFNLEdBQUdGLE1BQU1HLFFBQVEsQ0FBQyxVQUFV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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { type EntityNamesRecord } from "../../entity/entity-manager";
|
|
2
|
+
import type { TemplateOptions } from "../../types/types";
|
|
3
3
|
import { Template } from "../template";
|
|
4
4
|
export declare class Template__view_list_columns extends Template {
|
|
5
5
|
constructor();
|
|
@@ -7,7 +7,7 @@ export declare class Template__view_list_columns extends Template {
|
|
|
7
7
|
target: string;
|
|
8
8
|
path: string;
|
|
9
9
|
};
|
|
10
|
-
render({ entityId, columns, columnImports
|
|
10
|
+
render({ entityId, columns, columnImports }: TemplateOptions["view_list_columns"]): {
|
|
11
11
|
body: string;
|
|
12
12
|
importKeys: never[];
|
|
13
13
|
target: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view_list_columns.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_list_columns.template.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"view_list_columns.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_list_columns.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,2BAA4B,SAAQ,QAAQ;;IAKvD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAQzC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,eAAe,CAAC,mBAAmB,CAAC;;;;;;CAmClF"}
|
|
@@ -46,4 +46,4 @@ export default columns;
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19saXN0X2NvbHVtbnMudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfbGlzdF9jb2x1bW5zIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfbGlzdF9jb2x1bW5zXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIndlYi9zcmMvcGFnZXMvYWRtaW5cIixcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzUGx1cmFsfS9fY29sdW1ucy50c3hgLFxuICAgIH07XG4gIH1cblxuICAvLyDsu6zrn7xcbiAgcmVuZGVyKHsgZW50aXR5SWQsIGNvbHVtbnMsIGNvbHVtbkltcG9ydHMgfTogVGVtcGxhdGVPcHRpb25zW1widmlld19saXN0X2NvbHVtbnNcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcyksXG4gICAgICBib2R5OiBgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgU2VnbWVudCxcbiAgVGFibGUsXG4gIFRhYmxlUm93LFxuICBCdXR0b24sXG4gIExhYmVsLFxufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgeyBEYXRlVGltZSB9IGZyb20gXCJsdXhvblwiO1xuaW1wb3J0IHsgVEZDb2x1bW4gfSBmcm9tIFwic3JjL3R5cGVmcmFtZS9pc28tdHlwZXNcIjtcbmltcG9ydCB7ICR7bmFtZXMuY2FwaXRhbH1TdWJzZXRBIH0gZnJvbSBcInNyYy9zZXJ2aWNlcy8ke25hbWVzLmZzfS8ke25hbWVzLmZzfS5nZW5lcmF0ZWRcIjtcbiR7Y29sdW1uSW1wb3J0c31cblxuY29uc3QgY29sdW1uczogeyBba2V5IGluIEV4Y2x1ZGU8a2V5b2YgJHtcbiAgICAgICAgbmFtZXMuY2FwaXRhbFxuICAgICAgfVN1YnNldEEsICdpZCc+XTogVEZDb2x1bW48JHtuYW1lcy5jYXBpdGFsfVN1YnNldEE+IH0gPSB7JHtjb2x1bW5zXG4gICAgICAgIC5tYXAoKGNvbCkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBgJHtjb2wubmFtZX06IHsgbGFiZWw6IFwiJHtjb2wubGFiZWx9XCIsYCxcbiAgICAgICAgICAgIGB0YzogJHtjb2wudGN9LCBgLFxuICAgICAgICAgICAgYGNvbGxhcHNpbmc6ICR7W1wiVGl0bGVcIiwgXCJOYW1lXCJdLmluY2x1ZGVzKGNvbC5sYWJlbCkgPT09IGZhbHNlfSwgfWAsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9KVxuICAgICAgICAuam9pbihcIixcXG5cIil9fTtcbmV4cG9ydCBkZWZhdWx0IGNvbHVtbnM7XG4gICAgICBgLnRyaW0oKSxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJFbnRpdHlNYW5hZ2VyIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fdmlld19saXN0X2NvbHVtbnMiLCJnZXRUYXJnZXRBbmRQYXRoIiwibmFtZXMiLCJ0YXJnZXQiLCJwYXRoIiwiZnNQbHVyYWwiLCJyZW5kZXIiLCJlbnRpdHlJZCIsImNvbHVtbnMiLCJjb2x1bW5JbXBvcnRzIiwiZ2V0TmFtZXNGcm9tSWQiLCJib2R5IiwiY2FwaXRhbCIsImZzIiwibWFwIiwiY29sIiwibmFtZSIsImxhYmVsIiwidGMiLCJpbmNsdWRlcyIsImpvaW4iLCJ0cmltIiwiaW1wb3J0S2V5cyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxRQUFnQyxpQ0FBOEI7QUFFcEYsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBRXZDLE9BQU8sTUFBTUMsb0NBQW9DRDtJQUMvQyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUUsaUJBQWlCQyxLQUF3QixFQUFFO1FBQ3pDLE9BQU87WUFDTEMsUUFBUTtZQUNSQyxNQUFNLEdBQUdGLE1BQU1HLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDeEM7SUFDRjtJQUVBLEtBQUs7SUFDTEMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUF3QyxFQUFFO1FBQ2pGLE1BQU1QLFFBQVFKLGNBQWNZLGNBQWMsQ0FBQ0g7UUFFM0MsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDTixnQkFBZ0IsQ0FBQ0MsTUFBTTtZQUMvQlMsTUFBTSxDQUFDOzs7Ozs7Ozs7OztTQVdKLEVBQUVULE1BQU1VLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRVYsTUFBTVcsRUFBRSxDQUFDLENBQUMsRUFBRVgsTUFBTVcsRUFBRSxDQUFDO0FBQzdFLEVBQUVKLGNBQWM7O3VDQUV1QixFQUMvQlAsTUFBTVUsT0FBTyxDQUNkLDBCQUEwQixFQUFFVixNQUFNVSxPQUFPLENBQUMsY0FBYyxFQUFFSixRQUN4RE0sR0FBRyxDQUFDLENBQUNDO2dCQUNKLE9BQU87b0JBQ0wsR0FBR0EsSUFBSUMsSUFBSSxDQUFDLFlBQVksRUFBRUQsSUFBSUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsQ0FBQyxJQUFJLEVBQUVGLElBQUlHLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLENBQUMsWUFBWSxFQUFFO3dCQUFDO3dCQUFTO3FCQUFPLENBQUNDLFFBQVEsQ0FBQ0osSUFBSUUsS0FBSyxNQUFNLE1BQU0sR0FBRyxDQUFDO2lCQUNwRSxDQUFDRyxJQUFJLENBQUM7WUFDVCxHQUNDQSxJQUFJLENBQUMsT0FBTzs7TUFFZixDQUFDLENBQUNDLElBQUk7WUFDTkMsWUFBWSxFQUFFO1FBQ2hCO0lBQ0Y7QUFDRiJ9
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { type EntityNamesRecord } from "../../entity/entity-manager";
|
|
2
|
+
import type { TemplateOptions } from "../../types/types";
|
|
3
3
|
import { Template } from "../template";
|
|
4
4
|
export declare class Template__view_search_input extends Template {
|
|
5
5
|
constructor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view_search_input.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_search_input.template.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"view_search_input.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_search_input.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,2BAA4B,SAAQ,QAAQ;;IAKvD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,mBAAmB,CAAC;;;;;;CAkD1D"}
|
|
@@ -61,4 +61,4 @@ export function ${names.capital}SearchInput({
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19zZWFyY2hfaW5wdXQudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfc2VhcmNoX2lucHV0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfc2VhcmNoX2lucHV0XCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIndlYi9zcmMvY29tcG9uZW50c1wiLFxuICAgICAgcGF0aDogYCR7bmFtZXMuZnN9LyR7bmFtZXMuY2FwaXRhbH1TZWFyY2hJbnB1dC50c3hgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoeyBlbnRpdHlJZCB9OiBUZW1wbGF0ZU9wdGlvbnNbXCJ2aWV3X3NlYXJjaF9pbnB1dFwiXSkge1xuICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBEcm9wZG93blByb3BzLCBJbnB1dCwgSW5wdXRQcm9wcyB9IGZyb20gXCJzZW1hbnRpYy11aS1yZWFjdFwiO1xuaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfVNlYXJjaEZpZWxkRHJvcGRvd24gfSBmcm9tIFwic3JjL2NvbXBvbmVudHMvJHtuYW1lcy5mc30vJHtuYW1lcy5jYXBpdGFsfVNlYXJjaEZpZWxkRHJvcGRvd25cIjtcblxuZXhwb3J0IGZ1bmN0aW9uICR7bmFtZXMuY2FwaXRhbH1TZWFyY2hJbnB1dCh7XG4gIGlucHV0OiB7IHZhbHVlOiBpbnB1dFZhbHVlLCBvbkNoYW5nZTogaW5wdXRPbkNoYW5nZSwgLi4uaW5wdXRQcm9wcyB9LFxuICBkcm9wZG93bjogZHJvcGRvd25Qcm9wcyxcbn06IHtcbiAgaW5wdXQ6IElucHV0UHJvcHM7XG4gIGRyb3Bkb3duOiBEcm9wZG93blByb3BzO1xufSkge1xuICBjb25zdCBba2V5d29yZCwgc2V0S2V5d29yZF0gPSB1c2VTdGF0ZTxzdHJpbmc+KGlucHV0VmFsdWUgPz8gJycpO1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZTogeyBrZXk6IHN0cmluZyB9KSA9PiB7XG4gICAgaWYgKGlucHV0T25DaGFuZ2UgJiYgZS5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGlucHV0T25DaGFuZ2UoZSBhcyBhbnksIHtcbiAgICAgICAgdmFsdWU6IGtleXdvcmQsXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8SW5wdXRcbiAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIuqygOyDiS4uLlwiXG4gICAgICBzdHlsZT17eyBtYXJnaW46IDAgfX1cbiAgICAgIGxhYmVsPXs8JHtuYW1lcy5jYXBpdGFsfVNlYXJjaEZpZWxkRHJvcGRvd24gey4uLmRyb3Bkb3duUHJvcHN9IC8+fVxuICAgICAgbGFiZWxQb3NpdGlvbj1cImxlZnRcIlxuICAgICAgYWN0aW9uPXt7XG4gICAgICAgIGljb246ICdzZWFyY2gnLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBoYW5kbGVLZXlEb3duKHsga2V5OiAnRW50ZXInIH0pLFxuICAgICAgfX1cbiAgICAgIHsuLi5pbnB1dFByb3BzfVxuICAgICAgdmFsdWU9e2tleXdvcmR9XG4gICAgICBvbkNoYW5nZT17KGUsIHsgdmFsdWUgfSkgPT4gc2V0S2V5d29yZCh2YWx1ZSl9XG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgLz5cbiAgKTtcbn1cbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX192aWV3X3NlYXJjaF9pbnB1dCIsImdldFRhcmdldEFuZFBhdGgiLCJuYW1lcyIsInRhcmdldCIsInBhdGgiLCJmcyIsImNhcGl0YWwiLCJyZW5kZXIiLCJlbnRpdHlJZCIsImdldE5hbWVzRnJvbUlkIiwiYm9keSIsInRyaW0iLCJpbXBvcnRLZXlzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxhQUFhLFFBQWdDLGlDQUE4QjtBQUVwRixTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFFdkMsT0FBTyxNQUFNQyxvQ0FBb0NEO0lBQy9DLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxpQkFBaUJDLEtBQXdCLEVBQUU7UUFDekMsT0FBTztZQUNMQyxRQUFRO1lBQ1JDLE1BQU0sR0FBR0YsTUFBTUcsRUFBRSxDQUFDLENBQUMsRUFBRUgsTUFBTUksT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUNyRDtJQUNGO0lBRUFDLE9BQU8sRUFBRUMsUUFBUSxFQUF3QyxFQUFFO1FBQ3pELE1BQU1OLFFBQVFKLGNBQWNXLGNBQWMsQ0FBQ0Q7UUFFM0MsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDUCxnQkFBZ0IsQ0FBQ0MsTUFBTTtZQUMvQlEsTUFBTSxDQUFDOzs7O1NBSUosRUFBRVIsTUFBTUksT0FBTyxDQUFDLDJDQUEyQyxFQUFFSixNQUFNRyxFQUFFLENBQUMsQ0FBQyxFQUFFSCxNQUFNSSxPQUFPLENBQUM7O2dCQUVoRixFQUFFSixNQUFNSSxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FzQmxCLEVBQUVKLE1BQU1JLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7OztNQWF4QixDQUFDLENBQUNLLElBQUk7WUFDTkMsWUFBWSxFQUFFO1FBQ2hCO0lBQ0Y7QUFDRiJ9
|
package/dist/template/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export * from "./template";
|
|
2
|
-
export * from "./helpers";
|
|
3
1
|
export * from "./entity-converter";
|
|
2
|
+
export * from "./helpers";
|
|
3
|
+
export * from "./template";
|
|
4
|
+
export * from "./template-manager";
|
|
5
|
+
export * from "./template-types";
|
|
4
6
|
export * from "./zod-converter";
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/template/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
|
package/dist/template/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
export * from "./template.js";
|
|
2
|
-
export * from "./helpers.js";
|
|
3
1
|
export * from "./entity-converter.js";
|
|
2
|
+
export * from "./helpers.js";
|
|
3
|
+
export * from "./template.js";
|
|
4
|
+
export * from "./template-manager.js";
|
|
5
|
+
export * from "./template-types.js";
|
|
4
6
|
export * from "./zod-converter.js";
|
|
5
7
|
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9lbnRpdHktY29udmVydGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9oZWxwZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVtcGxhdGUtbWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVtcGxhdGUtdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3pvZC1jb252ZXJ0ZXJcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdCQUFxQjtBQUNuQyxjQUFjLGVBQVk7QUFDMUIsY0FBYyxnQkFBYTtBQUMzQixjQUFjLHdCQUFxQjtBQUNuQyxjQUFjLHNCQUFtQjtBQUNqQyxjQUFjLHFCQUFrQiJ9
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { TemplateKey } from "../types/types";
|
|
2
|
+
import { Template } from "./template";
|
|
3
|
+
declare class TemplateManagerClass {
|
|
4
|
+
private templates;
|
|
5
|
+
isAutoloaded: boolean;
|
|
6
|
+
/**
|
|
7
|
+
* 빌트인 템플릿 로드 (implementations/*.template.js)
|
|
8
|
+
*/
|
|
9
|
+
autoload(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* 템플릿 다시 로드
|
|
12
|
+
*/
|
|
13
|
+
reload(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* 프로젝트 디렉토리에서 커스텀 템플릿 로드
|
|
16
|
+
*/
|
|
17
|
+
loadFromDirectory(dir: string): Promise<number>;
|
|
18
|
+
private isTemplateClass;
|
|
19
|
+
/**
|
|
20
|
+
* 템플릿 등록
|
|
21
|
+
*/
|
|
22
|
+
register(template: Template): void;
|
|
23
|
+
/**
|
|
24
|
+
* 여러 템플릿 등록
|
|
25
|
+
*/
|
|
26
|
+
registerAll(templates: Template[]): void;
|
|
27
|
+
/**
|
|
28
|
+
* 템플릿 조회
|
|
29
|
+
* 빌트인 : 자동완성 지원
|
|
30
|
+
* 커스텀 : 임의 문자열 지원
|
|
31
|
+
*/
|
|
32
|
+
get(key: TemplateKey | (string & {})): Template;
|
|
33
|
+
/**
|
|
34
|
+
* 템플릿 존재 여부
|
|
35
|
+
*/
|
|
36
|
+
exists(key: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* 모든 템플릿 키 목록
|
|
39
|
+
*/
|
|
40
|
+
getAllKeys(): string[];
|
|
41
|
+
/**
|
|
42
|
+
* 등록된 템플릿 개수
|
|
43
|
+
*/
|
|
44
|
+
get size(): number;
|
|
45
|
+
/**
|
|
46
|
+
* 모든 상태 초기화 (테스트용)
|
|
47
|
+
*/
|
|
48
|
+
reset(): void;
|
|
49
|
+
/**
|
|
50
|
+
* 격리된 인스턴스 생성 (테스트용)
|
|
51
|
+
*/
|
|
52
|
+
static createInstance(): TemplateManagerClass;
|
|
53
|
+
}
|
|
54
|
+
export declare const TemplateManager: TemplateManagerClass;
|
|
55
|
+
export { TemplateManagerClass };
|
|
56
|
+
//# sourceMappingURL=template-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-manager.d.ts","sourceRoot":"","sources":["../../src/template/template-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,cAAM,oBAAoB;IACxB,OAAO,CAAC,SAAS,CAAkD;IACnE,YAAY,EAAE,OAAO,CAAS;IAM9B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B/B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B;;OAEG;IACG,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBrD,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAMlC;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAUxC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,QAAQ;IAQ/C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;IAItB;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAMD;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,oBAAoB;CAG9C;AAED,eAAO,MAAM,eAAe,sBAA6B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|