sonamu 0.5.7 → 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 +13 -2
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +71 -2
- 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 +258 -2
- package/dist/api/config.d.ts +90 -0
- package/dist/api/config.d.ts.map +1 -0
- package/dist/api/config.js +25 -0
- package/dist/api/context.d.ts +4 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +3 -2
- package/dist/api/decorators.d.ts +20 -6
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +235 -2
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +9 -2
- package/dist/api/sonamu.d.ts +10 -24
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +514 -2
- 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 +6 -1
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +15 -2
- package/dist/bin/cli.js +519 -2
- package/dist/bin/hot-hook-register.d.ts +11 -0
- package/dist/bin/hot-hook-register.d.ts.map +1 -0
- package/dist/bin/hot-hook-register.js +21 -0
- 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 +95 -2
- 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 +390 -2
- 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 +54 -2
- package/dist/database/db.d.ts +6 -21
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +129 -2
- 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 +109 -2
- package/dist/database/puri.d.ts +41 -23
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +601 -2
- package/dist/database/puri.types.d.ts +25 -6
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +6 -2
- 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 +14 -2
- 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 +365 -2
- package/dist/entity/entity-manager.d.ts +167 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +130 -2
- package/dist/entity/entity.d.ts +5 -3
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +750 -2
- 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 +29 -2
- 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 +85 -2
- 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 +79 -2
- package/dist/file-storage/file-storage.js +75 -2
- package/dist/index.d.ts +18 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -2
- 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 +614 -2
- 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 +213 -2
- package/dist/migration/migrator.d.ts +24 -82
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +330 -2
- 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 +3 -2
- 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 +95 -0
- package/dist/naite/naite.d.ts.map +1 -0
- package/dist/naite/naite.js +316 -0
- package/dist/stream/index.js +3 -2
- package/dist/stream/sse.d.ts +2 -2
- package/dist/stream/sse.d.ts.map +1 -1
- package/dist/stream/sse.js +38 -2
- package/dist/syncer/api-parser.d.ts +10 -0
- package/dist/syncer/api-parser.d.ts.map +1 -0
- package/dist/syncer/api-parser.js +240 -0
- package/dist/syncer/checksum.d.ts +21 -0
- package/dist/syncer/checksum.d.ts.map +1 -0
- package/dist/syncer/checksum.js +98 -0
- package/dist/syncer/code-generator.d.ts +20 -0
- package/dist/syncer/code-generator.d.ts.map +1 -0
- package/dist/syncer/code-generator.js +161 -0
- package/dist/syncer/entity-operations.d.ts +17 -0
- package/dist/syncer/entity-operations.d.ts.map +1 -0
- package/dist/syncer/entity-operations.js +59 -0
- package/dist/syncer/file-patterns.d.ts +29 -0
- package/dist/syncer/file-patterns.d.ts.map +1 -0
- package/dist/syncer/file-patterns.js +38 -0
- package/dist/syncer/index.d.ts +6 -0
- package/dist/syncer/index.d.ts.map +1 -1
- package/dist/syncer/index.js +9 -2
- package/dist/syncer/module-loader.d.ts +35 -0
- package/dist/syncer/module-loader.d.ts.map +1 -0
- package/dist/syncer/module-loader.js +87 -0
- package/dist/syncer/syncer.d.ts +98 -106
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +422 -2
- package/dist/template/entity-converter.d.ts +14 -0
- package/dist/template/entity-converter.d.ts.map +1 -0
- package/dist/template/entity-converter.js +108 -0
- package/dist/template/helpers.d.ts +23 -0
- package/dist/template/helpers.d.ts.map +1 -0
- package/dist/template/helpers.js +64 -0
- package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
- package/dist/template/implementations/entity.template.d.ts.map +1 -0
- package/dist/template/implementations/entity.template.js +86 -0
- package/dist/{templates → template/implementations}/generated.template.d.ts +3 -4
- package/dist/template/implementations/generated.template.d.ts.map +1 -0
- package/dist/template/implementations/generated.template.js +249 -0
- package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -4
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_http.template.js +131 -0
- package/dist/{templates → template/implementations}/generated_sso.template.d.ts +4 -5
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
- package/dist/template/implementations/generated_sso.template.js +134 -0
- package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
- package/dist/template/implementations/init_types.template.d.ts.map +1 -0
- package/dist/template/implementations/init_types.template.js +38 -0
- package/dist/template/implementations/model.template.d.ts +17 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -0
- package/dist/template/implementations/model.template.js +181 -0
- package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
- package/dist/template/implementations/model_test.template.d.ts.map +1 -0
- package/dist/template/implementations/model_test.template.js +35 -0
- package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
- package/dist/template/implementations/service.template.d.ts.map +1 -0
- package/dist/template/implementations/service.template.js +201 -0
- package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
- package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
- package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
- package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
- package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_enums_select.template.js +55 -0
- package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
- package/dist/template/implementations/view_form.template.d.ts.map +1 -0
- package/dist/template/implementations/view_form.template.js +337 -0
- package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_all_select.template.js +31 -0
- package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
- package/dist/template/implementations/view_id_async_select.template.js +105 -0
- package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
- package/dist/template/implementations/view_list.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list.template.js +475 -0
- package/dist/template/implementations/view_list_columns.template.d.ts +17 -0
- package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
- package/dist/template/implementations/view_list_columns.template.js +49 -0
- package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
- package/dist/template/implementations/view_search_input.template.js +64 -0
- package/dist/template/index.d.ts +7 -0
- package/dist/template/index.d.ts.map +1 -0
- package/dist/template/index.js +8 -0
- 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 +49 -0
- package/dist/template/template.d.ts.map +1 -0
- package/dist/template/template.js +60 -0
- package/dist/template/zod-converter.d.ts +51 -0
- package/dist/template/zod-converter.d.ts.map +1 -0
- package/dist/template/zod-converter.js +449 -0
- 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 +89 -2
- 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 +623 -2
- package/dist/types/types.d.ts +747 -143
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +546 -2
- package/dist/typings/knex.d.js +3 -2
- package/dist/utils/async-utils.d.ts +7 -0
- package/dist/utils/async-utils.d.ts.map +1 -1
- package/dist/utils/async-utils.js +57 -2
- package/dist/utils/console-util.d.ts +2 -0
- package/dist/utils/console-util.d.ts.map +1 -0
- package/dist/utils/console-util.js +6 -0
- package/dist/utils/controller.d.ts +1 -0
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +29 -2
- package/dist/utils/esm-utils.d.ts +39 -0
- package/dist/utils/esm-utils.d.ts.map +1 -0
- package/dist/utils/esm-utils.js +49 -0
- 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 +17 -2
- package/dist/utils/lodash-able.d.ts.map +1 -1
- package/dist/utils/lodash-able.js +6 -2
- package/dist/utils/model.js +22 -2
- 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 +89 -0
- package/dist/utils/path-utils.d.ts.map +1 -0
- package/dist/utils/path-utils.js +60 -0
- package/dist/utils/process-utils.d.ts +13 -0
- package/dist/utils/process-utils.d.ts.map +1 -0
- package/dist/utils/process-utils.js +36 -0
- 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 +46 -2
- 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 +10 -7
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +72 -2
- 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 +19 -2
- package/package.json +65 -27
- 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 +178 -535
- package/src/api/config.ts +125 -0
- package/src/api/context.ts +7 -17
- package/src/api/decorators.ts +176 -46
- package/src/api/index.ts +2 -2
- package/src/api/sonamu.ts +190 -167
- package/src/api/validator.ts +83 -0
- package/src/bin/build-config.ts +8 -1
- package/src/bin/cli.ts +258 -124
- package/src/bin/hot-hook-register.ts +22 -0
- 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 +40 -96
- 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 +229 -148
- package/src/database/puri.types.ts +76 -30
- package/src/database/transaction-context.ts +1 -1
- package/src/database/upsert-builder.ts +262 -132
- package/src/entity/entity-manager.ts +48 -36
- package/src/entity/entity.ts +330 -248
- 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 -10
- package/src/migration/code-generation.ts +185 -172
- package/src/migration/migration-set.ts +80 -293
- package/src/migration/migrator.ts +199 -571
- 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 +415 -0
- package/src/shared/web.shared.ts.txt +20 -24
- package/src/stream/sse.ts +5 -5
- package/src/syncer/api-parser.ts +282 -0
- package/src/syncer/checksum.ts +140 -0
- package/src/syncer/code-generator.ts +198 -0
- package/src/syncer/entity-operations.ts +65 -0
- package/src/syncer/file-patterns.ts +56 -0
- package/src/syncer/index.ts +6 -0
- package/src/syncer/module-loader.ts +128 -0
- package/src/syncer/syncer.ts +389 -1453
- package/src/template/entity-converter.ts +114 -0
- package/src/template/helpers.ts +81 -0
- package/src/{templates → template/implementations}/entity.template.ts +7 -7
- package/src/{templates → template/implementations}/generated.template.ts +101 -101
- package/src/{templates → template/implementations}/generated_http.template.ts +27 -57
- package/src/template/implementations/generated_sso.template.ts +151 -0
- package/src/{templates → template/implementations}/init_types.template.ts +5 -7
- package/src/{templates → template/implementations}/model.template.ts +52 -43
- package/src/{templates → template/implementations}/model_test.template.ts +5 -5
- package/src/{templates → template/implementations}/service.template.ts +66 -82
- package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
- package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +4 -20
- package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
- package/src/{templates → template/implementations}/view_form.template.ts +40 -83
- package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
- package/src/{templates → template/implementations}/view_id_async_select.template.ts +10 -24
- package/src/{templates → template/implementations}/view_list.template.ts +60 -152
- package/src/{templates → template/implementations}/view_list_columns.template.ts +5 -11
- package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
- package/src/template/index.ts +6 -0
- package/src/template/template-manager.ts +166 -0
- package/src/template/template-types.ts +16 -0
- package/src/template/template.ts +105 -0
- package/src/template/zod-converter.ts +525 -0
- package/src/testing/_relation-graph.ts +18 -11
- package/src/testing/fixture-manager.ts +472 -359
- package/src/types/types.ts +553 -308
- package/src/typings/knex.d.ts +7 -9
- package/src/utils/async-utils.ts +23 -10
- package/src/utils/console-util.ts +4 -0
- package/src/utils/controller.ts +3 -0
- package/src/utils/esm-utils.ts +59 -0
- 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 +99 -0
- package/src/utils/process-utils.ts +46 -0
- package/src/utils/sql-parser.ts +23 -5
- package/src/utils/type-utils.ts +83 -0
- package/src/utils/utils.ts +66 -43
- package/src/utils/zod-error.ts +3 -4
- package/dist/api/base-frame.js.map +0 -1
- package/dist/api/caster.js.map +0 -1
- package/dist/api/code-converters.js.map +0 -1
- package/dist/api/context.js.map +0 -1
- package/dist/api/decorators.js.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/sonamu.js.map +0 -1
- package/dist/bin/build-config.js.map +0 -1
- 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 -3
- package/dist/bin/cli-wrapper.js.map +0 -1
- package/dist/bin/cli.js.map +0 -1
- package/dist/database/_batch_update.js.map +0 -1
- package/dist/database/base-model.js.map +0 -1
- package/dist/database/code-generator.js.map +0 -1
- package/dist/database/db.js.map +0 -1
- 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 -2
- package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
- package/dist/database/puri-wrapper.js.map +0 -1
- package/dist/database/puri.js.map +0 -1
- package/dist/database/puri.types.js.map +0 -1
- package/dist/database/transaction-context.js.map +0 -1
- package/dist/database/upsert-builder.js.map +0 -1
- package/dist/entity/entity-manager.js.map +0 -1
- 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 -2
- package/dist/entity/entity-utils.js.map +0 -1
- package/dist/entity/entity.js.map +0 -1
- package/dist/exceptions/error-handler.js.map +0 -1
- package/dist/exceptions/so-exceptions.js.map +0 -1
- package/dist/file-storage/driver.js.map +0 -1
- package/dist/file-storage/file-storage.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/migration/code-generation.js.map +0 -1
- package/dist/migration/migration-set.js.map +0 -1
- package/dist/migration/migrator.js.map +0 -1
- package/dist/migration/types.js.map +0 -1
- package/dist/stream/index.js.map +0 -1
- package/dist/stream/sse.js.map +0 -1
- package/dist/syncer/index.js.map +0 -1
- package/dist/syncer/syncer.js.map +0 -1
- package/dist/templates/base-template.d.ts +0 -13
- package/dist/templates/base-template.d.ts.map +0 -1
- package/dist/templates/base-template.js +0 -2
- package/dist/templates/base-template.js.map +0 -1
- package/dist/templates/entity.template.d.ts.map +0 -1
- package/dist/templates/entity.template.js +0 -2
- package/dist/templates/entity.template.js.map +0 -1
- package/dist/templates/generated.template.d.ts.map +0 -1
- package/dist/templates/generated.template.js +0 -2
- package/dist/templates/generated.template.js.map +0 -1
- package/dist/templates/generated_http.template.d.ts.map +0 -1
- package/dist/templates/generated_http.template.js +0 -2
- package/dist/templates/generated_http.template.js.map +0 -1
- package/dist/templates/generated_sso.template.d.ts.map +0 -1
- package/dist/templates/generated_sso.template.js +0 -2
- package/dist/templates/generated_sso.template.js.map +0 -1
- package/dist/templates/index.d.ts +0 -2
- package/dist/templates/index.d.ts.map +0 -1
- package/dist/templates/index.js +0 -2
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/init_types.template.d.ts.map +0 -1
- package/dist/templates/init_types.template.js +0 -2
- package/dist/templates/init_types.template.js.map +0 -1
- package/dist/templates/model.template.d.ts +0 -17
- package/dist/templates/model.template.d.ts.map +0 -1
- package/dist/templates/model.template.js +0 -2
- package/dist/templates/model.template.js.map +0 -1
- package/dist/templates/model_test.template.d.ts.map +0 -1
- package/dist/templates/model_test.template.js +0 -2
- package/dist/templates/model_test.template.js.map +0 -1
- package/dist/templates/service.template.d.ts.map +0 -1
- package/dist/templates/service.template.js +0 -2
- package/dist/templates/service.template.js.map +0 -1
- package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
- package/dist/templates/view_enums_buttonset.template.js +0 -2
- package/dist/templates/view_enums_buttonset.template.js.map +0 -1
- package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
- package/dist/templates/view_enums_dropdown.template.js +0 -2
- package/dist/templates/view_enums_dropdown.template.js.map +0 -1
- package/dist/templates/view_enums_select.template.d.ts.map +0 -1
- package/dist/templates/view_enums_select.template.js +0 -2
- package/dist/templates/view_enums_select.template.js.map +0 -1
- package/dist/templates/view_form.template.d.ts.map +0 -1
- package/dist/templates/view_form.template.js +0 -2
- package/dist/templates/view_form.template.js.map +0 -1
- package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_all_select.template.js +0 -2
- package/dist/templates/view_id_all_select.template.js.map +0 -1
- package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
- package/dist/templates/view_id_async_select.template.js +0 -2
- package/dist/templates/view_id_async_select.template.js.map +0 -1
- package/dist/templates/view_list.template.d.ts.map +0 -1
- package/dist/templates/view_list.template.js +0 -2
- package/dist/templates/view_list.template.js.map +0 -1
- package/dist/templates/view_list_columns.template.d.ts +0 -17
- package/dist/templates/view_list_columns.template.d.ts.map +0 -1
- package/dist/templates/view_list_columns.template.js +0 -2
- package/dist/templates/view_list_columns.template.js.map +0 -1
- package/dist/templates/view_search_input.template.d.ts.map +0 -1
- package/dist/templates/view_search_input.template.js +0 -2
- package/dist/templates/view_search_input.template.js.map +0 -1
- package/dist/testing/_relation-graph.js.map +0 -1
- package/dist/testing/fixture-manager.js.map +0 -1
- package/dist/types/types.js.map +0 -1
- package/dist/typings/knex.d.js.map +0 -1
- package/dist/utils/async-utils.js.map +0 -1
- package/dist/utils/controller.js.map +0 -1
- package/dist/utils/fs-utils.js.map +0 -1
- package/dist/utils/lodash-able.js.map +0 -1
- package/dist/utils/model.js.map +0 -1
- package/dist/utils/sql-parser.js.map +0 -1
- package/dist/utils/utils.js.map +0 -1
- package/dist/utils/zod-error.js.map +0 -1
- package/src/bin/cli-wrapper.ts +0 -75
- package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
- package/src/entity/entity-utils.ts +0 -291
- package/src/templates/base-template.ts +0 -19
- package/src/templates/generated_sso.template.ts +0 -138
- package/src/templates/index.ts +0 -1
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import inflection from "inflection";
|
|
3
|
+
import { diff, group, sort, unique } from "radashi";
|
|
4
|
+
import { apiParamToTsCode, apiParamToTsCodeAsObject, apiParamTypeToTsType, unwrapPromiseOnce } from "../../api/code-converters.js";
|
|
5
|
+
import { Sonamu } from "../../api/sonamu.js";
|
|
6
|
+
import { Naite } from "../../naite/naite.js";
|
|
7
|
+
import { ApiParamType } from "../../types/types.js";
|
|
8
|
+
import { assertDefined } from "../../utils/utils.js";
|
|
9
|
+
import { Template } from "../template.js";
|
|
10
|
+
import { zodTypeToTsTypeDef } from "../zod-converter.js";
|
|
11
|
+
export class Template__service extends Template {
|
|
12
|
+
constructor(){
|
|
13
|
+
super("service");
|
|
14
|
+
}
|
|
15
|
+
getTargetAndPath(names) {
|
|
16
|
+
return {
|
|
17
|
+
target: ":target/src/services",
|
|
18
|
+
path: `${names.fs}/${names.fs}.service.ts`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
render({ namesRecord }) {
|
|
22
|
+
Naite.t("render", {
|
|
23
|
+
namesRecord
|
|
24
|
+
});
|
|
25
|
+
const { syncer: { apis } } = Sonamu;
|
|
26
|
+
const apisForThisModel = apis.filter((api)=>api.modelName === `${namesRecord.capital}Model`);
|
|
27
|
+
// 서비스 TypeSource
|
|
28
|
+
const { lines, importKeys } = this.getTypeSource(apisForThisModel);
|
|
29
|
+
// AxiosProgressEvent 있는지 확인
|
|
30
|
+
const hasAxiosProgressEvent = apis.find((api)=>(api.options.clients ?? []).includes("axios-multipart"));
|
|
31
|
+
return {
|
|
32
|
+
...this.getTargetAndPath(namesRecord),
|
|
33
|
+
body: lines.join("\n"),
|
|
34
|
+
importKeys: importKeys.filter((key)=>[
|
|
35
|
+
"ListResult"
|
|
36
|
+
].includes(key) === false),
|
|
37
|
+
customHeaders: [
|
|
38
|
+
`import { z } from 'zod';`,
|
|
39
|
+
`import qs from "qs";`,
|
|
40
|
+
`import useSWR, { type SWRResponse } from "swr";`,
|
|
41
|
+
`import { fetch, ListResult, SWRError, SwrOptions, handleConditional, swrPostFetcher, EventHandlers, SSEStreamOptions, useSSEStream } from '../sonamu.shared';`,
|
|
42
|
+
...hasAxiosProgressEvent ? [
|
|
43
|
+
`import { type AxiosProgressEvent } from 'axios';`
|
|
44
|
+
] : []
|
|
45
|
+
]
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
getTypeSource(apis) {
|
|
49
|
+
const importKeys = [];
|
|
50
|
+
// 제네릭에서 선언한 타입, importKeys에서 제외 필요
|
|
51
|
+
let typeParamNames = [];
|
|
52
|
+
const groups = group(apis, (api)=>api.modelName);
|
|
53
|
+
const body = Object.keys(groups).map((modelName)=>{
|
|
54
|
+
const methods = groups[modelName];
|
|
55
|
+
assert(methods);
|
|
56
|
+
const methodCodes = methods.map((api)=>{
|
|
57
|
+
// 컨텍스트 제외된 파라미터 리스트
|
|
58
|
+
const paramsWithoutContext = api.parameters.filter((param)=>!ApiParamType.isContext(param.type) && !ApiParamType.isRefKnex(param.type) && !(param.optional === true && param.name.startsWith("_")));
|
|
59
|
+
// 파라미터 타입 정의
|
|
60
|
+
const typeParamsDef = api.typeParameters.map((typeParam)=>{
|
|
61
|
+
return apiParamTypeToTsType(typeParam, importKeys);
|
|
62
|
+
}).join(", ");
|
|
63
|
+
typeParamNames = typeParamNames.concat(api.typeParameters.map((typeParam)=>typeParam.id));
|
|
64
|
+
// 파라미터 정의
|
|
65
|
+
const paramsDef = apiParamToTsCode(paramsWithoutContext, importKeys);
|
|
66
|
+
// 파라미터 정의 (객체 형태)
|
|
67
|
+
const paramsDefAsObject = apiParamToTsCodeAsObject(paramsWithoutContext, importKeys);
|
|
68
|
+
// 리턴 타입 정의
|
|
69
|
+
const returnTypeDef = apiParamTypeToTsType(assertDefined(unwrapPromiseOnce(api.returnType)), importKeys);
|
|
70
|
+
// 페이로드 데이터 정의
|
|
71
|
+
const payloadDef = `{ ${paramsWithoutContext.map((param)=>param.name).join(", ")} }`;
|
|
72
|
+
// 기본 URL
|
|
73
|
+
const apiBaseUrl = `${Sonamu.config.api.route.prefix}${api.path}`;
|
|
74
|
+
const clients = api.options.clients ?? [];
|
|
75
|
+
return [
|
|
76
|
+
// 클라이언트별로 생성
|
|
77
|
+
...sort(clients, (client)=>client === "swr" ? 0 : 1).map((client)=>{
|
|
78
|
+
switch(client){
|
|
79
|
+
case "axios":
|
|
80
|
+
return this.renderAxios(api, apiBaseUrl, typeParamsDef, paramsDef, returnTypeDef, payloadDef);
|
|
81
|
+
case "axios-multipart":
|
|
82
|
+
return this.renderAxiosMultipart(api, apiBaseUrl, typeParamsDef, paramsDef, returnTypeDef, paramsWithoutContext);
|
|
83
|
+
case "swr":
|
|
84
|
+
return this.renderSwr(api, apiBaseUrl, typeParamsDef, paramsDef, returnTypeDef, payloadDef);
|
|
85
|
+
case "window-fetch":
|
|
86
|
+
return this.renderWindowFetch(api, apiBaseUrl, typeParamsDef, paramsDef, payloadDef);
|
|
87
|
+
default:
|
|
88
|
+
return `// Not supported ${inflection.camelize(client, true)} yet.`;
|
|
89
|
+
}
|
|
90
|
+
}),
|
|
91
|
+
// 스트리밍인 경우
|
|
92
|
+
...api.streamOptions ? [
|
|
93
|
+
this.renderStream(api, apiBaseUrl, paramsDefAsObject)
|
|
94
|
+
] : []
|
|
95
|
+
].join("\n");
|
|
96
|
+
}).join("\n\n");
|
|
97
|
+
return `export namespace ${modelName.replace(/Model$/, "Service").replace(/Frame$/, "Service")} {
|
|
98
|
+
${methodCodes}
|
|
99
|
+
}`;
|
|
100
|
+
}).join("\n\n");
|
|
101
|
+
return {
|
|
102
|
+
lines: [
|
|
103
|
+
body
|
|
104
|
+
],
|
|
105
|
+
importKeys: diff(unique(importKeys), typeParamNames)
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
renderAxios(api, apiBaseUrl, typeParamsDef, paramsDef, returnTypeDef, payloadDef) {
|
|
109
|
+
const methodNameAxios = api.options.resourceName ? `get${inflection.camelize(api.options.resourceName)}` : api.methodName;
|
|
110
|
+
if (api.options.httpMethod === "GET") {
|
|
111
|
+
return `
|
|
112
|
+
export async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<${returnTypeDef}> {
|
|
113
|
+
return fetch({
|
|
114
|
+
method: "GET",
|
|
115
|
+
url: \`${apiBaseUrl}?\${qs.stringify(${payloadDef})}\`,
|
|
116
|
+
${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : ""}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
`.trim();
|
|
120
|
+
} else {
|
|
121
|
+
return `
|
|
122
|
+
export async function ${methodNameAxios}${typeParamsDef}(${paramsDef}): Promise<${returnTypeDef}> {
|
|
123
|
+
return fetch({
|
|
124
|
+
method: '${api.options.httpMethod}',
|
|
125
|
+
url: \`${apiBaseUrl}\`,
|
|
126
|
+
data: ${payloadDef},
|
|
127
|
+
${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : ""}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
`.trim();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
renderAxiosMultipart(api, apiBaseUrl, typeParamsDef, paramsDef, returnTypeDef, paramsWithoutContext) {
|
|
134
|
+
const isMultiple = api.uploadOptions?.mode === "multiple";
|
|
135
|
+
const fileParamName = isMultiple ? "files" : "file";
|
|
136
|
+
const fileParamType = isMultiple ? "File[]" : "File";
|
|
137
|
+
const formDataDef = isMultiple ? [
|
|
138
|
+
`${fileParamName}.forEach(f => { formData.append("${fileParamName}", f) } ); `,
|
|
139
|
+
...paramsWithoutContext.map((param)=>`formData.append('${param.name}', String(${param.name}));`)
|
|
140
|
+
].join("\n") : [
|
|
141
|
+
`formData.append("${fileParamName}", ${fileParamName});`,
|
|
142
|
+
...paramsWithoutContext.map((param)=>`formData.append('${param.name}', String(${param.name}));`)
|
|
143
|
+
].join("\n");
|
|
144
|
+
const paramsDefComma = paramsDef !== "" ? ", " : "";
|
|
145
|
+
return `
|
|
146
|
+
export async function ${api.methodName}${typeParamsDef}(
|
|
147
|
+
${paramsDef}${paramsDefComma}
|
|
148
|
+
${fileParamName}: ${fileParamType},
|
|
149
|
+
onUploadProgress?: (pe:AxiosProgressEvent) => void
|
|
150
|
+
): Promise<${returnTypeDef}> {
|
|
151
|
+
const formData = new FormData();
|
|
152
|
+
${formDataDef}
|
|
153
|
+
return fetch({
|
|
154
|
+
method: 'POST',
|
|
155
|
+
url: \`${apiBaseUrl}\`,
|
|
156
|
+
headers: {
|
|
157
|
+
"Content-Type": "multipart/form-data",
|
|
158
|
+
},
|
|
159
|
+
onUploadProgress,
|
|
160
|
+
data: formData,
|
|
161
|
+
${api.options.timeout ? `signal: AbortSignal.timeout(${api.options.timeout}),` : ""}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
`.trim();
|
|
165
|
+
}
|
|
166
|
+
renderSwr(api, apiBaseUrl, typeParamsDef, paramsDef, returnTypeDef, payloadDef) {
|
|
167
|
+
const methodNameSwr = api.options.resourceName ? `use${inflection.camelize(api.options.resourceName)}` : `use${inflection.camelize(api.methodName)}`;
|
|
168
|
+
return ` export function ${inflection.camelize(methodNameSwr, true)}${typeParamsDef}(${[
|
|
169
|
+
paramsDef,
|
|
170
|
+
"swrOptions?: SwrOptions"
|
|
171
|
+
].filter((p)=>p !== "").join(",")}, ): SWRResponse<${returnTypeDef}, SWRError> {
|
|
172
|
+
return useSWR(handleConditional([
|
|
173
|
+
\`${apiBaseUrl}\`,
|
|
174
|
+
${payloadDef},
|
|
175
|
+
], swrOptions?.conditional)${api.options.httpMethod === "POST" ? ", swrPostFetcher" : ""}${api.options.timeout ? `, { loadingTimeout: ${api.options.timeout} }` : ""});
|
|
176
|
+
}`;
|
|
177
|
+
}
|
|
178
|
+
renderWindowFetch(api, apiBaseUrl, typeParamsDef, paramsDef, payloadDef) {
|
|
179
|
+
return `
|
|
180
|
+
export async function ${api.methodName}${typeParamsDef}(${paramsDef}): Promise<Response> {
|
|
181
|
+
return window.fetch(\`${apiBaseUrl}?\${qs.stringify(${payloadDef})}\`${api.options.timeout ? `, { signal: AbortSignal.timeout(${api.options.timeout}) }` : ""});
|
|
182
|
+
}
|
|
183
|
+
`.trim();
|
|
184
|
+
}
|
|
185
|
+
renderStream(api, apiBaseUrl, paramsDefAsObject) {
|
|
186
|
+
if (!api.streamOptions) {
|
|
187
|
+
return "// streamOptions not found";
|
|
188
|
+
}
|
|
189
|
+
const methodNameStream = api.options.resourceName ? `use${inflection.camelize(api.options.resourceName)}` : `use${inflection.camelize(api.methodName)}`;
|
|
190
|
+
const methodNameStreamCamelized = inflection.camelize(methodNameStream, true);
|
|
191
|
+
const eventsTypeDef = zodTypeToTsTypeDef(api.streamOptions.events);
|
|
192
|
+
return ` export function ${methodNameStreamCamelized}(
|
|
193
|
+
params: ${paramsDefAsObject},
|
|
194
|
+
handlers: EventHandlers<${eventsTypeDef} & { end?: () => void }>,
|
|
195
|
+
options: SSEStreamOptions) {
|
|
196
|
+
return useSSEStream<${eventsTypeDef}>(\`${apiBaseUrl}\`, params, handlers, options);
|
|
197
|
+
}`;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2VydmljZS50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBkaWZmLCBncm91cCwgc29ydCwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7XG4gIGFwaVBhcmFtVG9Uc0NvZGUsXG4gIGFwaVBhcmFtVG9Uc0NvZGVBc09iamVjdCxcbiAgYXBpUGFyYW1UeXBlVG9Uc1R5cGUsXG4gIHVud3JhcFByb21pc2VPbmNlLFxufSBmcm9tIFwiLi4vLi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB0eXBlIHsgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi8uLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIEFwaVBhcmFtVHlwZSB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IHpvZFR5cGVUb1RzVHlwZURlZiB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2VydmljZSBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJzZXJ2aWNlXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIjp0YXJnZXQvc3JjL3NlcnZpY2VzXCIsXG4gICAgICBwYXRoOiBgJHtuYW1lcy5mc30vJHtuYW1lcy5mc30uc2VydmljZS50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IG5hbWVzUmVjb3JkIH06IFRlbXBsYXRlT3B0aW9uc1tcInNlcnZpY2VcIl0pIHtcbiAgICBOYWl0ZS50KFwicmVuZGVyXCIsIHsgbmFtZXNSZWNvcmQgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICBzeW5jZXI6IHsgYXBpcyB9LFxuICAgIH0gPSBTb25hbXU7XG5cbiAgICBjb25zdCBhcGlzRm9yVGhpc01vZGVsID0gYXBpcy5maWx0ZXIoKGFwaSkgPT4gYXBpLm1vZGVsTmFtZSA9PT0gYCR7bmFtZXNSZWNvcmQuY2FwaXRhbH1Nb2RlbGApO1xuXG4gICAgLy8g7ISc67mE7IqkIFR5cGVTb3VyY2VcbiAgICBjb25zdCB7IGxpbmVzLCBpbXBvcnRLZXlzIH0gPSB0aGlzLmdldFR5cGVTb3VyY2UoYXBpc0ZvclRoaXNNb2RlbCk7XG5cbiAgICAvLyBBeGlvc1Byb2dyZXNzRXZlbnQg7J6I64qU7KeAIO2ZleyduFxuICAgIGNvbnN0IGhhc0F4aW9zUHJvZ3Jlc3NFdmVudCA9IGFwaXMuZmluZCgoYXBpKSA9PlxuICAgICAgKGFwaS5vcHRpb25zLmNsaWVudHMgPz8gW10pLmluY2x1ZGVzKFwiYXhpb3MtbXVsdGlwYXJ0XCIpLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzUmVjb3JkKSxcbiAgICAgIGJvZHk6IGxpbmVzLmpvaW4oXCJcXG5cIiksXG4gICAgICBpbXBvcnRLZXlzOiBpbXBvcnRLZXlzLmZpbHRlcigoa2V5KSA9PiBbXCJMaXN0UmVzdWx0XCJdLmluY2x1ZGVzKGtleSkgPT09IGZhbHNlKSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcbiAgICAgICAgYGltcG9ydCB7IHogfSBmcm9tICd6b2QnO2AsXG4gICAgICAgIGBpbXBvcnQgcXMgZnJvbSBcInFzXCI7YCxcbiAgICAgICAgYGltcG9ydCB1c2VTV1IsIHsgdHlwZSBTV1JSZXNwb25zZSB9IGZyb20gXCJzd3JcIjtgLFxuICAgICAgICBgaW1wb3J0IHsgZmV0Y2gsIExpc3RSZXN1bHQsIFNXUkVycm9yLCBTd3JPcHRpb25zLCBoYW5kbGVDb25kaXRpb25hbCwgc3dyUG9zdEZldGNoZXIsIEV2ZW50SGFuZGxlcnMsIFNTRVN0cmVhbU9wdGlvbnMsIHVzZVNTRVN0cmVhbSB9IGZyb20gJy4uL3NvbmFtdS5zaGFyZWQnO2AsXG4gICAgICAgIC4uLihoYXNBeGlvc1Byb2dyZXNzRXZlbnQgPyBbYGltcG9ydCB7IHR5cGUgQXhpb3NQcm9ncmVzc0V2ZW50IH0gZnJvbSAnYXhpb3MnO2BdIDogW10pLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0VHlwZVNvdXJjZShhcGlzOiBFeHRlbmRlZEFwaVtdKToge1xuICAgIGxpbmVzOiBzdHJpbmdbXTtcbiAgICBpbXBvcnRLZXlzOiBzdHJpbmdbXTtcbiAgfSB7XG4gICAgY29uc3QgaW1wb3J0S2V5czogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIOygnOuEpOumreyXkOyEnCDshKDslrjtlZwg7YOA7J6FLCBpbXBvcnRLZXlz7JeQ7IScIOygnOyZuCDtlYTsmpRcbiAgICBsZXQgdHlwZVBhcmFtTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBjb25zdCBncm91cHMgPSBncm91cChhcGlzLCAoYXBpKSA9PiBhcGkubW9kZWxOYW1lKTtcbiAgICBjb25zdCBib2R5ID0gT2JqZWN0LmtleXMoZ3JvdXBzKVxuICAgICAgLm1hcCgobW9kZWxOYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldGhvZHMgPSBncm91cHNbbW9kZWxOYW1lXTtcbiAgICAgICAgYXNzZXJ0KG1ldGhvZHMpO1xuICAgICAgICBjb25zdCBtZXRob2RDb2RlcyA9IG1ldGhvZHNcbiAgICAgICAgICAubWFwKChhcGkpID0+IHtcbiAgICAgICAgICAgIC8vIOy7qO2FjeyKpO2KuCDsoJzsmbjrkJwg7YyM652866+47YSwIOumrOyKpO2KuFxuICAgICAgICAgICAgY29uc3QgcGFyYW1zV2l0aG91dENvbnRleHQgPSBhcGkucGFyYW1ldGVycy5maWx0ZXIoXG4gICAgICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzQ29udGV4dChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgICAgICFBcGlQYXJhbVR5cGUuaXNSZWZLbmV4KHBhcmFtLnR5cGUpICYmXG4gICAgICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSwgLy8gX+uhnCDsi5zsnpHtlZjripQg7YyM652866+47YSw64qUIOygnOyZuFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8g7YyM652866+47YSwIO2DgOyehSDsoJXsnZhcbiAgICAgICAgICAgIGNvbnN0IHR5cGVQYXJhbXNEZWYgPSBhcGkudHlwZVBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgLm1hcCgodHlwZVBhcmFtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwaVBhcmFtVHlwZVRvVHNUeXBlKHR5cGVQYXJhbSwgaW1wb3J0S2V5cyk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5qb2luKFwiLCBcIik7XG4gICAgICAgICAgICB0eXBlUGFyYW1OYW1lcyA9IHR5cGVQYXJhbU5hbWVzLmNvbmNhdChcbiAgICAgICAgICAgICAgYXBpLnR5cGVQYXJhbWV0ZXJzLm1hcCgodHlwZVBhcmFtKSA9PiB0eXBlUGFyYW0uaWQpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgLy8g7YyM652866+47YSwIOygleydmFxuICAgICAgICAgICAgY29uc3QgcGFyYW1zRGVmID0gYXBpUGFyYW1Ub1RzQ29kZShwYXJhbXNXaXRob3V0Q29udGV4dCwgaW1wb3J0S2V5cyk7XG5cbiAgICAgICAgICAgIC8vIO2MjOudvOuvuO2EsCDsoJXsnZggKOqwneyytCDtmJXtg5wpXG4gICAgICAgICAgICBjb25zdCBwYXJhbXNEZWZBc09iamVjdCA9IGFwaVBhcmFtVG9Uc0NvZGVBc09iamVjdChwYXJhbXNXaXRob3V0Q29udGV4dCwgaW1wb3J0S2V5cyk7XG5cbiAgICAgICAgICAgIC8vIOumrO2EtCDtg4DsnoUg7KCV7J2YXG4gICAgICAgICAgICBjb25zdCByZXR1cm5UeXBlRGVmID0gYXBpUGFyYW1UeXBlVG9Uc1R5cGUoXG4gICAgICAgICAgICAgIGFzc2VydERlZmluZWQodW53cmFwUHJvbWlzZU9uY2UoYXBpLnJldHVyblR5cGUpKSxcbiAgICAgICAgICAgICAgaW1wb3J0S2V5cyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIO2OmOydtOuhnOuTnCDrjbDsnbTthLAg7KCV7J2YXG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkRGVmID0gYHsgJHtwYXJhbXNXaXRob3V0Q29udGV4dC5tYXAoKHBhcmFtKSA9PiBwYXJhbS5uYW1lKS5qb2luKFwiLCBcIil9IH1gO1xuXG4gICAgICAgICAgICAvLyDquLDrs7ggVVJMXG4gICAgICAgICAgICBjb25zdCBhcGlCYXNlVXJsID0gYCR7U29uYW11LmNvbmZpZy5hcGkucm91dGUucHJlZml4fSR7YXBpLnBhdGh9YDtcblxuICAgICAgICAgICAgY29uc3QgY2xpZW50cyA9IGFwaS5vcHRpb25zLmNsaWVudHMgPz8gW107XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAvLyDtgbTrnbzsnbTslrjtirjrs4TroZwg7IOd7ISxXG4gICAgICAgICAgICAgIC4uLnNvcnQoY2xpZW50cywgKGNsaWVudCkgPT4gKGNsaWVudCA9PT0gXCJzd3JcIiA/IDAgOiAxKSkubWFwKChjbGllbnQpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNsaWVudCkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImF4aW9zXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlckF4aW9zKFxuICAgICAgICAgICAgICAgICAgICAgIGFwaSxcbiAgICAgICAgICAgICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYXJhbXNEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zRGVmLFxuICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGVEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZERlZixcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJheGlvcy1tdWx0aXBhcnRcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyQXhpb3NNdWx0aXBhcnQoXG4gICAgICAgICAgICAgICAgICAgICAgYXBpLFxuICAgICAgICAgICAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZVBhcmFtc0RlZixcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuVHlwZURlZixcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNXaXRob3V0Q29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJzd3JcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyU3dyKFxuICAgICAgICAgICAgICAgICAgICAgIGFwaSxcbiAgICAgICAgICAgICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgICAgICAgICAgIHR5cGVQYXJhbXNEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zRGVmLFxuICAgICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGVEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZERlZixcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJ3aW5kb3ctZmV0Y2hcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyV2luZG93RmV0Y2goXG4gICAgICAgICAgICAgICAgICAgICAgYXBpLFxuICAgICAgICAgICAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZVBhcmFtc0RlZixcbiAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNEZWYsXG4gICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZERlZixcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgLy8gTm90IHN1cHBvcnRlZCAke2luZmxlY3Rpb24uY2FtZWxpemUoY2xpZW50LCB0cnVlKX0geWV0LmA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8g7Iqk7Yq466as67CN7J24IOqyveyasFxuICAgICAgICAgICAgICAuLi4oYXBpLnN0cmVhbU9wdGlvbnMgPyBbdGhpcy5yZW5kZXJTdHJlYW0oYXBpLCBhcGlCYXNlVXJsLCBwYXJhbXNEZWZBc09iamVjdCldIDogW10pLFxuICAgICAgICAgICAgXS5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmpvaW4oXCJcXG5cXG5cIik7XG5cbiAgICAgICAgcmV0dXJuIGBleHBvcnQgbmFtZXNwYWNlICR7bW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiU2VydmljZVwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlNlcnZpY2VcIil9IHtcbiR7bWV0aG9kQ29kZXN9XG59YDtcbiAgICAgIH0pXG4gICAgICAuam9pbihcIlxcblxcblwiKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lczogW2JvZHldLFxuICAgICAgaW1wb3J0S2V5czogZGlmZih1bmlxdWUoaW1wb3J0S2V5cyksIHR5cGVQYXJhbU5hbWVzKSxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyQXhpb3MoXG4gICAgYXBpOiBFeHRlbmRlZEFwaSxcbiAgICBhcGlCYXNlVXJsOiBzdHJpbmcsXG4gICAgdHlwZVBhcmFtc0RlZjogc3RyaW5nLFxuICAgIHBhcmFtc0RlZjogc3RyaW5nLFxuICAgIHJldHVyblR5cGVEZWY6IHN0cmluZyxcbiAgICBwYXlsb2FkRGVmOiBzdHJpbmcsXG4gICkge1xuICAgIGNvbnN0IG1ldGhvZE5hbWVBeGlvcyA9IGFwaS5vcHRpb25zLnJlc291cmNlTmFtZVxuICAgICAgPyBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgOiBhcGkubWV0aG9kTmFtZTtcblxuICAgIGlmIChhcGkub3B0aW9ucy5odHRwTWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICByZXR1cm4gYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7bWV0aG9kTmFtZUF4aW9zfSR7dHlwZVBhcmFtc0RlZn0oJHtwYXJhbXNEZWZ9KTogUHJvbWlzZTwke3JldHVyblR5cGVEZWZ9PiB7XG4gICAgcmV0dXJuIGZldGNoKHtcbiAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgIHVybDogXFxgJHthcGlCYXNlVXJsfT9cXCR7cXMuc3RyaW5naWZ5KCR7cGF5bG9hZERlZn0pfVxcYCxcbiAgICAgICR7YXBpLm9wdGlvbnMudGltZW91dCA/IGBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoJHthcGkub3B0aW9ucy50aW1lb3V0fSksYCA6IFwiXCJ9XG4gICAgfSk7XG59XG4gICAgYC50cmltKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gJHttZXRob2ROYW1lQXhpb3N9JHt0eXBlUGFyYW1zRGVmfSgke3BhcmFtc0RlZn0pOiBQcm9taXNlPCR7cmV0dXJuVHlwZURlZn0+IHtcbiAgICByZXR1cm4gZmV0Y2goe1xuICAgICAgbWV0aG9kOiAnJHthcGkub3B0aW9ucy5odHRwTWV0aG9kfScsXG4gICAgICB1cmw6IFxcYCR7YXBpQmFzZVVybH1cXGAsXG4gICAgICBkYXRhOiAke3BheWxvYWREZWZ9LFxuICAgICAgJHthcGkub3B0aW9ucy50aW1lb3V0ID8gYHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCgke2FwaS5vcHRpb25zLnRpbWVvdXR9KSxgIDogXCJcIn1cbiAgICB9KTtcbn1cbiAgICAgIGAudHJpbSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlckF4aW9zTXVsdGlwYXJ0KFxuICAgIGFwaTogRXh0ZW5kZWRBcGksXG4gICAgYXBpQmFzZVVybDogc3RyaW5nLFxuICAgIHR5cGVQYXJhbXNEZWY6IHN0cmluZyxcbiAgICBwYXJhbXNEZWY6IHN0cmluZyxcbiAgICByZXR1cm5UeXBlRGVmOiBzdHJpbmcsXG4gICAgcGFyYW1zV2l0aG91dENvbnRleHQ6IEFwaVBhcmFtW10sXG4gICkge1xuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBhcGkudXBsb2FkT3B0aW9ucz8ubW9kZSA9PT0gXCJtdWx0aXBsZVwiO1xuICAgIGNvbnN0IGZpbGVQYXJhbU5hbWUgPSBpc011bHRpcGxlID8gXCJmaWxlc1wiIDogXCJmaWxlXCI7XG4gICAgY29uc3QgZmlsZVBhcmFtVHlwZSA9IGlzTXVsdGlwbGUgPyBcIkZpbGVbXVwiIDogXCJGaWxlXCI7XG5cbiAgICBjb25zdCBmb3JtRGF0YURlZiA9IGlzTXVsdGlwbGVcbiAgICAgID8gW1xuICAgICAgICAgIGAke2ZpbGVQYXJhbU5hbWV9LmZvckVhY2goZiA9PiB7IGZvcm1EYXRhLmFwcGVuZChcIiR7ZmlsZVBhcmFtTmFtZX1cIiwgZikgfSApOyBgLFxuICAgICAgICAgIC4uLnBhcmFtc1dpdGhvdXRDb250ZXh0Lm1hcChcbiAgICAgICAgICAgIChwYXJhbSkgPT4gYGZvcm1EYXRhLmFwcGVuZCgnJHtwYXJhbS5uYW1lfScsIFN0cmluZygke3BhcmFtLm5hbWV9KSk7YCxcbiAgICAgICAgICApLFxuICAgICAgICBdLmpvaW4oXCJcXG5cIilcbiAgICAgIDogW1xuICAgICAgICAgIGBmb3JtRGF0YS5hcHBlbmQoXCIke2ZpbGVQYXJhbU5hbWV9XCIsICR7ZmlsZVBhcmFtTmFtZX0pO2AsXG4gICAgICAgICAgLi4ucGFyYW1zV2l0aG91dENvbnRleHQubWFwKFxuICAgICAgICAgICAgKHBhcmFtKSA9PiBgZm9ybURhdGEuYXBwZW5kKCcke3BhcmFtLm5hbWV9JywgU3RyaW5nKCR7cGFyYW0ubmFtZX0pKTtgLFxuICAgICAgICAgICksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcblxuICAgIGNvbnN0IHBhcmFtc0RlZkNvbW1hID0gcGFyYW1zRGVmICE9PSBcIlwiID8gXCIsIFwiIDogXCJcIjtcbiAgICByZXR1cm4gYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7YXBpLm1ldGhvZE5hbWV9JHt0eXBlUGFyYW1zRGVmfShcbiAgJHtwYXJhbXNEZWZ9JHtwYXJhbXNEZWZDb21tYX1cbiAgJHtmaWxlUGFyYW1OYW1lfTogJHtmaWxlUGFyYW1UeXBlfSxcbiAgb25VcGxvYWRQcm9ncmVzcz86IChwZTpBeGlvc1Byb2dyZXNzRXZlbnQpID0+IHZvaWRcbiAgKTogUHJvbWlzZTwke3JldHVyblR5cGVEZWZ9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAke2Zvcm1EYXRhRGVmfVxuICAgIHJldHVybiBmZXRjaCh7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogXFxgJHthcGlCYXNlVXJsfVxcYCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXG4gICAgICB9LFxuICAgICAgb25VcGxvYWRQcm9ncmVzcyxcbiAgICAgIGRhdGE6IGZvcm1EYXRhLFxuICAgICAgJHthcGkub3B0aW9ucy50aW1lb3V0ID8gYHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCgke2FwaS5vcHRpb25zLnRpbWVvdXR9KSxgIDogXCJcIn1cbiAgICB9KTtcbiAgfVxuICBgLnRyaW0oKTtcbiAgfVxuXG4gIHJlbmRlclN3cihcbiAgICBhcGk6IEV4dGVuZGVkQXBpLFxuICAgIGFwaUJhc2VVcmw6IHN0cmluZyxcbiAgICB0eXBlUGFyYW1zRGVmOiBzdHJpbmcsXG4gICAgcGFyYW1zRGVmOiBzdHJpbmcsXG4gICAgcmV0dXJuVHlwZURlZjogc3RyaW5nLFxuICAgIHBheWxvYWREZWY6IHN0cmluZyxcbiAgKSB7XG4gICAgY29uc3QgbWV0aG9kTmFtZVN3ciA9IGFwaS5vcHRpb25zLnJlc291cmNlTmFtZVxuICAgICAgPyBgdXNlJHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgOiBgdXNlJHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5tZXRob2ROYW1lKX1gO1xuICAgIHJldHVybiBgICBleHBvcnQgZnVuY3Rpb24gJHtpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWVTd3IsIHRydWUpfSR7dHlwZVBhcmFtc0RlZn0oJHtbXG4gICAgICBwYXJhbXNEZWYsXG4gICAgICBcInN3ck9wdGlvbnM/OiBTd3JPcHRpb25zXCIsXG4gICAgXVxuICAgICAgLmZpbHRlcigocCkgPT4gcCAhPT0gXCJcIilcbiAgICAgIC5qb2luKFwiLFwiKX0sICk6IFNXUlJlc3BvbnNlPCR7cmV0dXJuVHlwZURlZn0sIFNXUkVycm9yPiB7XG4gICAgcmV0dXJuIHVzZVNXUihoYW5kbGVDb25kaXRpb25hbChbXG4gICAgICBcXGAke2FwaUJhc2VVcmx9XFxgLFxuICAgICAgJHtwYXlsb2FkRGVmfSxcbiAgICBdLCBzd3JPcHRpb25zPy5jb25kaXRpb25hbCkke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPT09IFwiUE9TVFwiID8gXCIsIHN3clBvc3RGZXRjaGVyXCIgOiBcIlwifSR7XG4gICAgICBhcGkub3B0aW9ucy50aW1lb3V0ID8gYCwgeyBsb2FkaW5nVGltZW91dDogJHthcGkub3B0aW9ucy50aW1lb3V0fSB9YCA6IFwiXCJcbiAgICB9KTtcbiAgfWA7XG4gIH1cblxuICByZW5kZXJXaW5kb3dGZXRjaChcbiAgICBhcGk6IEV4dGVuZGVkQXBpLFxuICAgIGFwaUJhc2VVcmw6IHN0cmluZyxcbiAgICB0eXBlUGFyYW1zRGVmOiBzdHJpbmcsXG4gICAgcGFyYW1zRGVmOiBzdHJpbmcsXG4gICAgcGF5bG9hZERlZjogc3RyaW5nLFxuICApIHtcbiAgICByZXR1cm4gYFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uICR7YXBpLm1ldGhvZE5hbWV9JHt0eXBlUGFyYW1zRGVmfSgke3BhcmFtc0RlZn0pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHdpbmRvdy5mZXRjaChcXGAke2FwaUJhc2VVcmx9P1xcJHtxcy5zdHJpbmdpZnkoJHtwYXlsb2FkRGVmfSl9XFxgJHtcbiAgICAgIGFwaS5vcHRpb25zLnRpbWVvdXQgPyBgLCB7IHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCgke2FwaS5vcHRpb25zLnRpbWVvdXR9KSB9YCA6IFwiXCJcbiAgICB9KTtcbn1cbiAgICBgLnRyaW0oKTtcbiAgfVxuXG4gIHJlbmRlclN0cmVhbShhcGk6IEV4dGVuZGVkQXBpLCBhcGlCYXNlVXJsOiBzdHJpbmcsIHBhcmFtc0RlZkFzT2JqZWN0OiBzdHJpbmcpIHtcbiAgICBpZiAoIWFwaS5zdHJlYW1PcHRpb25zKSB7XG4gICAgICByZXR1cm4gXCIvLyBzdHJlYW1PcHRpb25zIG5vdCBmb3VuZFwiO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZE5hbWVTdHJlYW0gPSBhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWVcbiAgICAgID8gYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkub3B0aW9ucy5yZXNvdXJjZU5hbWUpfWBcbiAgICAgIDogYHVzZSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShhcGkubWV0aG9kTmFtZSl9YDtcbiAgICBjb25zdCBtZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lU3RyZWFtLCB0cnVlKTtcblxuICAgIGNvbnN0IGV2ZW50c1R5cGVEZWYgPSB6b2RUeXBlVG9Uc1R5cGVEZWYoYXBpLnN0cmVhbU9wdGlvbnMuZXZlbnRzKTtcblxuICAgIHJldHVybiBgICBleHBvcnQgZnVuY3Rpb24gJHttZXRob2ROYW1lU3RyZWFtQ2FtZWxpemVkfShcbiAgcGFyYW1zOiAke3BhcmFtc0RlZkFzT2JqZWN0fSxcbiAgaGFuZGxlcnM6IEV2ZW50SGFuZGxlcnM8JHtldmVudHNUeXBlRGVmfSAmIHsgZW5kPzogKCkgPT4gdm9pZCB9PixcbiAgb3B0aW9uczogU1NFU3RyZWFtT3B0aW9ucykge1xuICAgIHJldHVybiB1c2VTU0VTdHJlYW08JHtldmVudHNUeXBlRGVmfT4oXFxgJHthcGlCYXNlVXJsfVxcYCwgcGFyYW1zLCBoYW5kbGVycywgb3B0aW9ucyk7XG4gIH1gO1xuICB9XG59XG4iXSwibmFtZXMiOlsiYXNzZXJ0IiwiaW5mbGVjdGlvbiIsImRpZmYiLCJncm91cCIsInNvcnQiLCJ1bmlxdWUiLCJhcGlQYXJhbVRvVHNDb2RlIiwiYXBpUGFyYW1Ub1RzQ29kZUFzT2JqZWN0IiwiYXBpUGFyYW1UeXBlVG9Uc1R5cGUiLCJ1bndyYXBQcm9taXNlT25jZSIsIlNvbmFtdSIsIk5haXRlIiwiQXBpUGFyYW1UeXBlIiwiYXNzZXJ0RGVmaW5lZCIsIlRlbXBsYXRlIiwiem9kVHlwZVRvVHNUeXBlRGVmIiwiVGVtcGxhdGVfX3NlcnZpY2UiLCJnZXRUYXJnZXRBbmRQYXRoIiwibmFtZXMiLCJ0YXJnZXQiLCJwYXRoIiwiZnMiLCJyZW5kZXIiLCJuYW1lc1JlY29yZCIsInQiLCJzeW5jZXIiLCJhcGlzIiwiYXBpc0ZvclRoaXNNb2RlbCIsImZpbHRlciIsImFwaSIsIm1vZGVsTmFtZSIsImNhcGl0YWwiLCJsaW5lcyIsImltcG9ydEtleXMiLCJnZXRUeXBlU291cmNlIiwiaGFzQXhpb3NQcm9ncmVzc0V2ZW50IiwiZmluZCIsIm9wdGlvbnMiLCJjbGllbnRzIiwiaW5jbHVkZXMiLCJib2R5Iiwiam9pbiIsImtleSIsImN1c3RvbUhlYWRlcnMiLCJ0eXBlUGFyYW1OYW1lcyIsImdyb3VwcyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJtZXRob2RzIiwibWV0aG9kQ29kZXMiLCJwYXJhbXNXaXRob3V0Q29udGV4dCIsInBhcmFtZXRlcnMiLCJwYXJhbSIsImlzQ29udGV4dCIsInR5cGUiLCJpc1JlZktuZXgiLCJvcHRpb25hbCIsIm5hbWUiLCJzdGFydHNXaXRoIiwidHlwZVBhcmFtc0RlZiIsInR5cGVQYXJhbWV0ZXJzIiwidHlwZVBhcmFtIiwiY29uY2F0IiwiaWQiLCJwYXJhbXNEZWYiLCJwYXJhbXNEZWZBc09iamVjdCIsInJldHVyblR5cGVEZWYiLCJyZXR1cm5UeXBlIiwicGF5bG9hZERlZiIsImFwaUJhc2VVcmwiLCJjb25maWciLCJyb3V0ZSIsInByZWZpeCIsImNsaWVudCIsInJlbmRlckF4aW9zIiwicmVuZGVyQXhpb3NNdWx0aXBhcnQiLCJyZW5kZXJTd3IiLCJyZW5kZXJXaW5kb3dGZXRjaCIsImNhbWVsaXplIiwic3RyZWFtT3B0aW9ucyIsInJlbmRlclN0cmVhbSIsInJlcGxhY2UiLCJtZXRob2ROYW1lQXhpb3MiLCJyZXNvdXJjZU5hbWUiLCJtZXRob2ROYW1lIiwiaHR0cE1ldGhvZCIsInRpbWVvdXQiLCJ0cmltIiwiaXNNdWx0aXBsZSIsInVwbG9hZE9wdGlvbnMiLCJtb2RlIiwiZmlsZVBhcmFtTmFtZSIsImZpbGVQYXJhbVR5cGUiLCJmb3JtRGF0YURlZiIsInBhcmFtc0RlZkNvbW1hIiwibWV0aG9kTmFtZVN3ciIsInAiLCJtZXRob2ROYW1lU3RyZWFtIiwibWV0aG9kTmFtZVN0cmVhbUNhbWVsaXplZCIsImV2ZW50c1R5cGVEZWYiLCJldmVudHMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixPQUFPQyxnQkFBZ0IsYUFBYTtBQUNwQyxTQUFTQyxJQUFJLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxNQUFNLFFBQVEsVUFBVTtBQUNwRCxTQUNFQyxnQkFBZ0IsRUFDaEJDLHdCQUF3QixFQUN4QkMsb0JBQW9CLEVBQ3BCQyxpQkFBaUIsUUFDWiwrQkFBNEI7QUFFbkMsU0FBU0MsTUFBTSxRQUFRLHNCQUFtQjtBQUUxQyxTQUFTQyxLQUFLLFFBQVEsdUJBQW9CO0FBRTFDLFNBQXdCQyxZQUFZLFFBQVEsdUJBQW9CO0FBQ2hFLFNBQVNDLGFBQWEsUUFBUSx1QkFBb0I7QUFDbEQsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBQ3ZDLFNBQVNDLGtCQUFrQixRQUFRLHNCQUFtQjtBQUV0RCxPQUFPLE1BQU1DLDBCQUEwQkY7SUFDckMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFHLGlCQUFpQkMsS0FBd0IsRUFBRTtRQUN6QyxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMsTUFBTSxHQUFHRixNQUFNRyxFQUFFLENBQUMsQ0FBQyxFQUFFSCxNQUFNRyxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQzVDO0lBQ0Y7SUFFQUMsT0FBTyxFQUFFQyxXQUFXLEVBQThCLEVBQUU7UUFDbERaLE1BQU1hLENBQUMsQ0FBQyxVQUFVO1lBQUVEO1FBQVk7UUFFaEMsTUFBTSxFQUNKRSxRQUFRLEVBQUVDLElBQUksRUFBRSxFQUNqQixHQUFHaEI7UUFFSixNQUFNaUIsbUJBQW1CRCxLQUFLRSxNQUFNLENBQUMsQ0FBQ0MsTUFBUUEsSUFBSUMsU0FBUyxLQUFLLEdBQUdQLFlBQVlRLE9BQU8sQ0FBQyxLQUFLLENBQUM7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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Template } from "
|
|
1
|
+
import { type EntityNamesRecord } from "../../entity/entity-manager";
|
|
2
|
+
import type { TemplateOptions } from "../../types/types";
|
|
3
|
+
import { Template } from "../template";
|
|
4
4
|
export declare class Template__view_enums_buttonset extends Template {
|
|
5
5
|
constructor();
|
|
6
6
|
getTargetAndPath(names: EntityNamesRecord, componentId: string): {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view_enums_buttonset.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_enums_buttonset.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,8BAA+B,SAAQ,QAAQ;;IAK1D,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM;;;;IAO9D,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,sBAAsB,CAAC;;;;;;CAiBrE"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EntityManager } from "../../entity/entity-manager.js";
|
|
2
|
+
import { Template } from "../template.js";
|
|
3
|
+
export class Template__view_enums_buttonset extends Template {
|
|
4
|
+
constructor(){
|
|
5
|
+
super("view_enums_buttonset");
|
|
6
|
+
}
|
|
7
|
+
getTargetAndPath(names, componentId) {
|
|
8
|
+
return {
|
|
9
|
+
target: "web/src/components",
|
|
10
|
+
path: `${names.fs}/${componentId}ButtonSet.tsx`
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
render({ entityId, enumId }) {
|
|
14
|
+
const names = EntityManager.getNamesFromId(entityId);
|
|
15
|
+
return {
|
|
16
|
+
...this.getTargetAndPath(names, enumId),
|
|
17
|
+
body: `
|
|
18
|
+
/*
|
|
19
|
+
view_enums_buttonset
|
|
20
|
+
${JSON.stringify({
|
|
21
|
+
key: this.key,
|
|
22
|
+
options: entityId
|
|
23
|
+
})}
|
|
24
|
+
*/
|
|
25
|
+
`.trim(),
|
|
26
|
+
importKeys: []
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19lbnVtc19idXR0b25zZXQudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfZW51bXNfYnV0dG9uc2V0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfZW51bXNfYnV0dG9uc2V0XCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQsIGNvbXBvbmVudElkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIndlYi9zcmMvY29tcG9uZW50c1wiLFxuICAgICAgcGF0aDogYCR7bmFtZXMuZnN9LyR7Y29tcG9uZW50SWR9QnV0dG9uU2V0LnRzeGAsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkLCBlbnVtSWQgfTogVGVtcGxhdGVPcHRpb25zW1widmlld19lbnVtc19idXR0b25zZXRcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcywgZW51bUlkKSxcbiAgICAgIGJvZHk6IGBcbi8qXG52aWV3X2VudW1zX2J1dHRvbnNldFxuJHtKU09OLnN0cmluZ2lmeSh7XG4gIGtleTogdGhpcy5rZXksXG4gIG9wdGlvbnM6IGVudGl0eUlkLFxufSl9XG4qL1xuICAgICAgYC50cmltKCksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsiRW50aXR5TWFuYWdlciIsIlRlbXBsYXRlIiwiVGVtcGxhdGVfX3ZpZXdfZW51bXNfYnV0dG9uc2V0IiwiZ2V0VGFyZ2V0QW5kUGF0aCIsIm5hbWVzIiwiY29tcG9uZW50SWQiLCJ0YXJnZXQiLCJwYXRoIiwiZnMiLCJyZW5kZXIiLCJlbnRpdHlJZCIsImVudW1JZCIsImdldE5hbWVzRnJvbUlkIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJrZXkiLCJvcHRpb25zIiwidHJpbSIsImltcG9ydEtleXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUV2QyxPQUFPLE1BQU1DLHVDQUF1Q0Q7SUFDbEQsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFFLGlCQUFpQkMsS0FBd0IsRUFBRUMsV0FBbUIsRUFBRTtRQUM5RCxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMsTUFBTSxHQUFHSCxNQUFNSSxFQUFFLENBQUMsQ0FBQyxFQUFFSCxZQUFZLGFBQWEsQ0FBQztRQUNqRDtJQUNGO0lBRUFJLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQTJDLEVBQUU7UUFDcEUsTUFBTVAsUUFBUUosY0FBY1ksY0FBYyxDQUFDRjtRQUUzQyxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUNQLGdCQUFnQixDQUFDQyxPQUFPTyxPQUFPO1lBQ3ZDRSxNQUFNLENBQUM7OztBQUdiLEVBQUVDLEtBQUtDLFNBQVMsQ0FBQztnQkFDZkMsS0FBSyxJQUFJLENBQUNBLEdBQUc7Z0JBQ2JDLFNBQVNQO1lBQ1gsR0FBRzs7TUFFRyxDQUFDLENBQUNRLElBQUk7WUFDTkMsWUFBWSxFQUFFO1FBQ2hCO0lBQ0Y7QUFDRiJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Template } from "
|
|
1
|
+
import { type EntityNamesRecord } from "../../entity/entity-manager";
|
|
2
|
+
import type { TemplateOptions } from "../../types/types";
|
|
3
|
+
import { Template } from "../template";
|
|
4
4
|
export declare class Template__view_enums_dropdown extends Template {
|
|
5
5
|
constructor();
|
|
6
6
|
getTargetAndPath(names: EntityNamesRecord, enumId: string): {
|
|
@@ -14,5 +14,4 @@ export declare class Template__view_enums_dropdown extends Template {
|
|
|
14
14
|
path: string;
|
|
15
15
|
};
|
|
16
16
|
}
|
|
17
|
-
export declare function getLabel(entityId: string, enumId: string): string;
|
|
18
17
|
//# sourceMappingURL=view_enums_dropdown.template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view_enums_dropdown.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_enums_dropdown.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,6BAA8B,SAAQ,QAAQ;;IAKzD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM;;;;IAOzD,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,qBAAqB,CAAC;;;;;;CAmCpE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { EntityManager } from "../../entity/entity-manager.js";
|
|
2
|
+
import { getLabel } from "../helpers.js";
|
|
3
|
+
import { Template } from "../template.js";
|
|
4
|
+
export class Template__view_enums_dropdown extends Template {
|
|
5
|
+
constructor(){
|
|
6
|
+
super("view_enums_dropdown");
|
|
7
|
+
}
|
|
8
|
+
getTargetAndPath(names, enumId) {
|
|
9
|
+
return {
|
|
10
|
+
target: "web/src/components",
|
|
11
|
+
path: `${names.fs}/${enumId}Dropdown.tsx`
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
render({ entityId, enumId }) {
|
|
15
|
+
const names = EntityManager.getNamesFromId(entityId);
|
|
16
|
+
const label = getLabel(entityId, enumId);
|
|
17
|
+
return {
|
|
18
|
+
...this.getTargetAndPath(names, enumId),
|
|
19
|
+
body: `
|
|
20
|
+
import React from 'react';
|
|
21
|
+
import {
|
|
22
|
+
Dropdown,
|
|
23
|
+
DropdownProps,
|
|
24
|
+
} from 'semantic-ui-react';
|
|
25
|
+
|
|
26
|
+
import { ${enumId}Label } from 'src/services/sonamu.generated';
|
|
27
|
+
|
|
28
|
+
export function ${enumId}Dropdown(props: DropdownProps) {
|
|
29
|
+
const options = Object.entries(${enumId}Label).map(([key, label]) => {
|
|
30
|
+
return {
|
|
31
|
+
key,
|
|
32
|
+
value: key,
|
|
33
|
+
text: "${label}: " + label,
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
return (
|
|
37
|
+
<Dropdown
|
|
38
|
+
className="label"
|
|
39
|
+
options={options}
|
|
40
|
+
{...props}
|
|
41
|
+
/>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
`.trim(),
|
|
45
|
+
importKeys: []
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19lbnVtc19kcm9wZG93bi50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlNYW5hZ2VyLCB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGdldExhYmVsIH0gZnJvbSBcIi4uL2hlbHBlcnNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fdmlld19lbnVtc19kcm9wZG93biBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJ2aWV3X2VudW1zX2Ryb3Bkb3duXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQsIGVudW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogXCJ3ZWIvc3JjL2NvbXBvbmVudHNcIixcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke2VudW1JZH1Ecm9wZG93bi50c3hgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoeyBlbnRpdHlJZCwgZW51bUlkIH06IFRlbXBsYXRlT3B0aW9uc1tcInZpZXdfZW51bXNfZHJvcGRvd25cIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuICAgIGNvbnN0IGxhYmVsID0gZ2V0TGFiZWwoZW50aXR5SWQsIGVudW1JZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzLCBlbnVtSWQpLFxuICAgICAgYm9keTogYFxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7XG4gIERyb3Bkb3duLFxuICBEcm9wZG93blByb3BzLFxufSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5cbmltcG9ydCB7ICR7ZW51bUlkfUxhYmVsIH0gZnJvbSAnc3JjL3NlcnZpY2VzL3NvbmFtdS5nZW5lcmF0ZWQnO1xuXG5leHBvcnQgZnVuY3Rpb24gJHtlbnVtSWR9RHJvcGRvd24ocHJvcHM6IERyb3Bkb3duUHJvcHMpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IE9iamVjdC5lbnRyaWVzKCR7ZW51bUlkfUxhYmVsKS5tYXAoKFtrZXksIGxhYmVsXSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBrZXksXG4gICAgICB2YWx1ZToga2V5LFxuICAgICAgdGV4dDogXCIke2xhYmVsfTogXCIgKyBsYWJlbCxcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25cbiAgICAgIGNsYXNzTmFtZT1cImxhYmVsXCJcbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVudGl0eU1hbmFnZXIiLCJnZXRMYWJlbCIsIlRlbXBsYXRlIiwiVGVtcGxhdGVfX3ZpZXdfZW51bXNfZHJvcGRvd24iLCJnZXRUYXJnZXRBbmRQYXRoIiwibmFtZXMiLCJlbnVtSWQiLCJ0YXJnZXQiLCJwYXRoIiwiZnMiLCJyZW5kZXIiLCJlbnRpdHlJZCIsImdldE5hbWVzRnJvbUlkIiwibGFiZWwiLCJib2R5IiwidHJpbSIsImltcG9ydEtleXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNBQVNDLFFBQVEsUUFBUSxnQkFBYTtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFFdkMsT0FBTyxNQUFNQyxzQ0FBc0NEO0lBQ2pELGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxpQkFBaUJDLEtBQXdCLEVBQUVDLE1BQWMsRUFBRTtRQUN6RCxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMsTUFBTSxHQUFHSCxNQUFNSSxFQUFFLENBQUMsQ0FBQyxFQUFFSCxPQUFPLFlBQVksQ0FBQztRQUMzQztJQUNGO0lBRUFJLE9BQU8sRUFBRUMsUUFBUSxFQUFFTCxNQUFNLEVBQTBDLEVBQUU7UUFDbkUsTUFBTUQsUUFBUUwsY0FBY1ksY0FBYyxDQUFDRDtRQUMzQyxNQUFNRSxRQUFRWixTQUFTVSxVQUFVTDtRQUVqQyxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUNGLGdCQUFnQixDQUFDQyxPQUFPQyxPQUFPO1lBQ3ZDUSxNQUFNLENBQUM7Ozs7Ozs7U0FPSixFQUFFUixPQUFPOztnQkFFRixFQUFFQSxPQUFPO2lDQUNRLEVBQUVBLE9BQU87Ozs7YUFJN0IsRUFBRU8sTUFBTTs7Ozs7Ozs7Ozs7TUFXZixDQUFDLENBQUNFLElBQUk7WUFDTkMsWUFBWSxFQUFFO1FBQ2hCO0lBQ0Y7QUFDRiJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Template } from "
|
|
1
|
+
import { type EntityNamesRecord } from "../../entity/entity-manager";
|
|
2
|
+
import type { TemplateOptions } from "../../types/types";
|
|
3
|
+
import { Template } from "../template";
|
|
4
4
|
export declare class Template__view_enums_select extends Template {
|
|
5
5
|
constructor();
|
|
6
6
|
getTargetAndPath(names: EntityNamesRecord, enumId: string): {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view_enums_select.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_enums_select.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,2BAA4B,SAAQ,QAAQ;;IAKvD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM;;;;IAOzD,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,mBAAmB,CAAC;;;;;;CAwClE"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { EntityManager } from "../../entity/entity-manager.js";
|
|
2
|
+
import { getLabel } from "../helpers.js";
|
|
3
|
+
import { Template } from "../template.js";
|
|
4
|
+
export class Template__view_enums_select extends Template {
|
|
5
|
+
constructor(){
|
|
6
|
+
super("view_enums_select");
|
|
7
|
+
}
|
|
8
|
+
getTargetAndPath(names, enumId) {
|
|
9
|
+
return {
|
|
10
|
+
target: "web/src/components",
|
|
11
|
+
path: `${names.fs}/${enumId}Select.tsx`
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
render({ entityId, enumId }) {
|
|
15
|
+
const names = EntityManager.getNamesFromId(entityId);
|
|
16
|
+
const label = getLabel(entityId, enumId);
|
|
17
|
+
return {
|
|
18
|
+
...this.getTargetAndPath(names, enumId),
|
|
19
|
+
body: `
|
|
20
|
+
import React from 'react';
|
|
21
|
+
import {
|
|
22
|
+
Dropdown,
|
|
23
|
+
DropdownProps,
|
|
24
|
+
} from 'semantic-ui-react';
|
|
25
|
+
|
|
26
|
+
import { ${enumId}, ${enumId}Label } from 'src/services/sonamu.generated';
|
|
27
|
+
|
|
28
|
+
export type ${enumId}SelectProps = {
|
|
29
|
+
placeholder?: string;
|
|
30
|
+
textPrefix?: string;
|
|
31
|
+
} & DropdownProps;
|
|
32
|
+
export function ${enumId}Select({placeholder, textPrefix, ...props}: ${enumId}SelectProps) {
|
|
33
|
+
const typeOptions = ${enumId}.options.map((key) => ({
|
|
34
|
+
key,
|
|
35
|
+
value: key,
|
|
36
|
+
text: (textPrefix ?? '${label}: ') + ${enumId}Label[key],
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<Dropdown
|
|
41
|
+
placeholder={placeholder ?? "${label}"}
|
|
42
|
+
selection
|
|
43
|
+
options={typeOptions}
|
|
44
|
+
selectOnBlur={false}
|
|
45
|
+
{...props}
|
|
46
|
+
/>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
`.trim(),
|
|
50
|
+
importKeys: []
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19lbnVtc19zZWxlY3QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCB9IGZyb20gXCIuLi9oZWxwZXJzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfZW51bXNfc2VsZWN0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfZW51bXNfc2VsZWN0XCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQsIGVudW1JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogXCJ3ZWIvc3JjL2NvbXBvbmVudHNcIixcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke2VudW1JZH1TZWxlY3QudHN4YCxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKHsgZW50aXR5SWQsIGVudW1JZCB9OiBUZW1wbGF0ZU9wdGlvbnNbXCJ2aWV3X2VudW1zX3NlbGVjdFwiXSkge1xuICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG4gICAgY29uc3QgbGFiZWwgPSBnZXRMYWJlbChlbnRpdHlJZCwgZW51bUlkKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgobmFtZXMsIGVudW1JZCksXG4gICAgICBib2R5OiBgXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgRHJvcGRvd24sXG4gIERyb3Bkb3duUHJvcHMsXG59IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcblxuaW1wb3J0IHsgJHtlbnVtSWR9LCAke2VudW1JZH1MYWJlbCB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9zb25hbXUuZ2VuZXJhdGVkJztcblxuZXhwb3J0IHR5cGUgJHtlbnVtSWR9U2VsZWN0UHJvcHMgPSB7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICB0ZXh0UHJlZml4Pzogc3RyaW5nO1xufSAmIERyb3Bkb3duUHJvcHM7XG5leHBvcnQgZnVuY3Rpb24gJHtlbnVtSWR9U2VsZWN0KHtwbGFjZWhvbGRlciwgdGV4dFByZWZpeCwgLi4ucHJvcHN9OiAke2VudW1JZH1TZWxlY3RQcm9wcykge1xuICBjb25zdCB0eXBlT3B0aW9ucyA9ICR7ZW51bUlkfS5vcHRpb25zLm1hcCgoa2V5KSA9PiAoe1xuICAgIGtleSxcbiAgICB2YWx1ZToga2V5LFxuICAgIHRleHQ6ICh0ZXh0UHJlZml4ID8/ICcke2xhYmVsfTogJykgKyAke2VudW1JZH1MYWJlbFtrZXldLFxuICB9KSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25cbiAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlciA/PyBcIiR7bGFiZWx9XCJ9XG4gICAgICBzZWxlY3Rpb25cbiAgICAgIG9wdGlvbnM9e3R5cGVPcHRpb25zfVxuICAgICAgc2VsZWN0T25CbHVyPXtmYWxzZX1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAvPlxuICApO1xufVxuICAgICAgYC50cmltKCksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG59XG4iXSwibmFtZXMiOlsiRW50aXR5TWFuYWdlciIsImdldExhYmVsIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fdmlld19lbnVtc19zZWxlY3QiLCJnZXRUYXJnZXRBbmRQYXRoIiwibmFtZXMiLCJlbnVtSWQiLCJ0YXJnZXQiLCJwYXRoIiwiZnMiLCJyZW5kZXIiLCJlbnRpdHlJZCIsImdldE5hbWVzRnJvbUlkIiwibGFiZWwiLCJib2R5IiwidHJpbSIsImltcG9ydEtleXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNBQVNDLFFBQVEsUUFBUSxnQkFBYTtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFFdkMsT0FBTyxNQUFNQyxvQ0FBb0NEO0lBQy9DLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxpQkFBaUJDLEtBQXdCLEVBQUVDLE1BQWMsRUFBRTtRQUN6RCxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMsTUFBTSxHQUFHSCxNQUFNSSxFQUFFLENBQUMsQ0FBQyxFQUFFSCxPQUFPLFVBQVUsQ0FBQztRQUN6QztJQUNGO0lBRUFJLE9BQU8sRUFBRUMsUUFBUSxFQUFFTCxNQUFNLEVBQXdDLEVBQUU7UUFDakUsTUFBTUQsUUFBUUwsY0FBY1ksY0FBYyxDQUFDRDtRQUMzQyxNQUFNRSxRQUFRWixTQUFTVSxVQUFVTDtRQUVqQyxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUNGLGdCQUFnQixDQUFDQyxPQUFPQyxPQUFPO1lBQ3ZDUSxNQUFNLENBQUM7Ozs7Ozs7U0FPSixFQUFFUixPQUFPLEVBQUUsRUFBRUEsT0FBTzs7WUFFakIsRUFBRUEsT0FBTzs7OztnQkFJTCxFQUFFQSxPQUFPLDRDQUE0QyxFQUFFQSxPQUFPO3NCQUN4RCxFQUFFQSxPQUFPOzs7MEJBR0wsRUFBRU8sTUFBTSxPQUFPLEVBQUVQLE9BQU87Ozs7O21DQUtmLEVBQUVPLE1BQU07Ozs7Ozs7O01BUXJDLENBQUMsQ0FBQ0UsSUFBSTtZQUNOQyxZQUFZLEVBQUU7UUFDaEI7SUFDRjtBQUNGIn0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Template } from "
|
|
1
|
+
import { type EntityNamesRecord } from "../../entity/entity-manager";
|
|
2
|
+
import type { RenderingNode, TemplateKey, TemplateOptions } from "../../types/types";
|
|
3
|
+
import { Template } from "../template";
|
|
4
4
|
export declare class Template__view_form extends Template {
|
|
5
5
|
constructor();
|
|
6
6
|
getTargetAndPath(names: EntityNamesRecord): {
|
|
@@ -12,7 +12,7 @@ export declare class Template__view_form extends Template {
|
|
|
12
12
|
renderColumnImport(entityId: string, col: RenderingNode): string;
|
|
13
13
|
renderColumn(entityId: string, col: RenderingNode, names: EntityNamesRecord, parent?: string): string;
|
|
14
14
|
resolveDefaultValue(columns: RenderingNode[]): object;
|
|
15
|
-
render({ entityId }: TemplateOptions["view_form"]
|
|
15
|
+
render({ entityId }: TemplateOptions["view_form"]): Promise<{
|
|
16
16
|
body: string;
|
|
17
17
|
importKeys: never[];
|
|
18
18
|
preTemplates: {
|
|
@@ -21,6 +21,6 @@ export declare class Template__view_form extends Template {
|
|
|
21
21
|
}[];
|
|
22
22
|
target: string;
|
|
23
23
|
path: string;
|
|
24
|
-
}
|
|
24
|
+
}>;
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=view_form.template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view_form.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_form.template.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGrF,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,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAO5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAI5C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa;IAmBvD,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,EACxB,MAAM,GAAE,MAAW,GAClB,MAAM;IA6DT,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM;IAqC/C,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC;;;;;;;;;;CAoOxD"}
|