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,249 @@
|
|
|
1
|
+
import assert from "assert";
|
|
2
|
+
import { unique } from "radashi";
|
|
3
|
+
import { Sonamu } from "../../api/index.js";
|
|
4
|
+
import { EntityManager } from "../../entity/entity-manager.js";
|
|
5
|
+
import { Naite } from "../../naite/naite.js";
|
|
6
|
+
import { isVirtualProp } from "../../types/types.js";
|
|
7
|
+
import { nonNullable } from "../../utils/utils.js";
|
|
8
|
+
import { Template } from "../template.js";
|
|
9
|
+
import { propNodeToZodTypeDef, zodTypeToZodCode } from "../zod-converter.js";
|
|
10
|
+
export class Template__generated extends Template {
|
|
11
|
+
constructor(){
|
|
12
|
+
super("generated");
|
|
13
|
+
}
|
|
14
|
+
getTargetAndPath() {
|
|
15
|
+
const { dir } = Sonamu.config.api;
|
|
16
|
+
return {
|
|
17
|
+
target: `${dir}/src/application`,
|
|
18
|
+
path: `sonamu.generated.ts`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
render() {
|
|
22
|
+
const entityIds = EntityManager.getAllIds();
|
|
23
|
+
const entities = entityIds.map((id)=>EntityManager.get(id));
|
|
24
|
+
// 전체 SourceCode 생성
|
|
25
|
+
const sourceCodes = entities.flatMap((entity)=>{
|
|
26
|
+
return [
|
|
27
|
+
this.getEnumsSourceCode(entity),
|
|
28
|
+
this.getBaseSchemaSourceCode(entity),
|
|
29
|
+
this.getBaseListParamsSourceCode(entity),
|
|
30
|
+
this.getSubsetSourceCode(entity)
|
|
31
|
+
].filter(nonNullable);
|
|
32
|
+
});
|
|
33
|
+
Naite.t("Template__generated:sourceCodes", sourceCodes);
|
|
34
|
+
// Sort
|
|
35
|
+
const LABEL_KEY_ORDER = [
|
|
36
|
+
"Enums",
|
|
37
|
+
"BaseSchema",
|
|
38
|
+
"BaseListParams",
|
|
39
|
+
"Subsets",
|
|
40
|
+
"SubsetQueries"
|
|
41
|
+
];
|
|
42
|
+
sourceCodes.sort((a, b)=>{
|
|
43
|
+
const [aKey] = a.label.split(":");
|
|
44
|
+
const [bKey] = b.label.split(":");
|
|
45
|
+
const aIndex = LABEL_KEY_ORDER.indexOf(aKey);
|
|
46
|
+
const bIndex = LABEL_KEY_ORDER.indexOf(bKey);
|
|
47
|
+
if (aIndex > bIndex) {
|
|
48
|
+
return 1;
|
|
49
|
+
} else if (aIndex < bIndex) {
|
|
50
|
+
return -1;
|
|
51
|
+
} else {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const sourceCode = sourceCodes.reduce((result, ts)=>{
|
|
56
|
+
if (ts === null) {
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
lines: [
|
|
61
|
+
...result.lines,
|
|
62
|
+
`// ${ts.label}`,
|
|
63
|
+
...ts.lines,
|
|
64
|
+
""
|
|
65
|
+
],
|
|
66
|
+
importKeys: unique([
|
|
67
|
+
...result.importKeys,
|
|
68
|
+
...ts.importKeys
|
|
69
|
+
].sort())
|
|
70
|
+
};
|
|
71
|
+
}, {
|
|
72
|
+
lines: [],
|
|
73
|
+
importKeys: []
|
|
74
|
+
});
|
|
75
|
+
// .types.ts의 타입을 참조하는 경우 순환참조(상호참조)가 발생하므로 타입을 가져와 인라인 처리
|
|
76
|
+
const allTypeKeys = entities.flatMap((entity)=>Object.keys(entity.types));
|
|
77
|
+
const cdImportKeys = sourceCode.importKeys.filter((importKey)=>allTypeKeys.includes(importKey));
|
|
78
|
+
if (cdImportKeys.length > 0) {
|
|
79
|
+
const customScalarLines = cdImportKeys.flatMap((importKey)=>{
|
|
80
|
+
const entity = entities.find((entity)=>entity.types[importKey]);
|
|
81
|
+
if (!entity) {
|
|
82
|
+
throw new Error(`ZodType not found ${importKey}`);
|
|
83
|
+
}
|
|
84
|
+
const zodType = entity.types[importKey];
|
|
85
|
+
assert(zodType);
|
|
86
|
+
return [
|
|
87
|
+
`// CustomScalar: ${importKey}`,
|
|
88
|
+
`const ${importKey} = ${zodTypeToZodCode(zodType)};`,
|
|
89
|
+
`type ${importKey} = z.infer<typeof ${importKey}>`,
|
|
90
|
+
""
|
|
91
|
+
];
|
|
92
|
+
});
|
|
93
|
+
sourceCode.lines = [
|
|
94
|
+
...customScalarLines,
|
|
95
|
+
...sourceCode.lines
|
|
96
|
+
];
|
|
97
|
+
sourceCode.importKeys = sourceCode.importKeys.filter((importKey)=>!cdImportKeys.includes(importKey));
|
|
98
|
+
}
|
|
99
|
+
const body = sourceCode.lines.join("\n");
|
|
100
|
+
Naite.t("Template__generated:body", body);
|
|
101
|
+
// import
|
|
102
|
+
const sonamuImports = [
|
|
103
|
+
"zArrayable",
|
|
104
|
+
"SQLDateTimeString",
|
|
105
|
+
"SubsetQuery",
|
|
106
|
+
"SonamuQueryMode"
|
|
107
|
+
].filter((mod)=>body.includes(mod));
|
|
108
|
+
return {
|
|
109
|
+
...this.getTargetAndPath(),
|
|
110
|
+
body,
|
|
111
|
+
importKeys: sourceCode.importKeys,
|
|
112
|
+
customHeaders: [
|
|
113
|
+
"/** biome-ignore-all lint: generated는 무시 */",
|
|
114
|
+
"/** biome-ignore-all assist: generated는 무시 */",
|
|
115
|
+
"",
|
|
116
|
+
`import { z } from 'zod';`,
|
|
117
|
+
`import { ${sonamuImports.join(",")} } from "sonamu";`
|
|
118
|
+
]
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
getEnumsSourceCode(entity) {
|
|
122
|
+
if (Object.keys(entity.enumLabels).length === 0) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
label: `Enums: ${entity.id}`,
|
|
127
|
+
lines: [
|
|
128
|
+
...Object.entries(entity.enumLabels).filter(([_, enumLabel])=>Object.keys(enumLabel).length > 0).flatMap(([enumId, enumLabel])=>[
|
|
129
|
+
`export const ${enumId} = z.enum([${Object.keys(enumLabel).map((el)=>`"${el}"`)}]).describe("${enumId}");`,
|
|
130
|
+
`export type ${enumId} = z.infer<typeof ${enumId}>;`,
|
|
131
|
+
`export const ${enumId}Label = ${JSON.stringify(enumLabel)};`
|
|
132
|
+
])
|
|
133
|
+
],
|
|
134
|
+
importKeys: []
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
getBaseSchemaSourceCode(entity, importKeys = []) {
|
|
138
|
+
const schemaName = `${entity.names.module}BaseSchema`;
|
|
139
|
+
const propNode = {
|
|
140
|
+
nodeType: "object",
|
|
141
|
+
children: entity.props.map((prop)=>{
|
|
142
|
+
return {
|
|
143
|
+
nodeType: "plain",
|
|
144
|
+
prop
|
|
145
|
+
};
|
|
146
|
+
})
|
|
147
|
+
};
|
|
148
|
+
const schemaBody = (()=>{
|
|
149
|
+
const result = propNodeToZodTypeDef(propNode, importKeys);
|
|
150
|
+
if (result.endsWith(",")) {
|
|
151
|
+
return result.slice(0, -1);
|
|
152
|
+
}
|
|
153
|
+
return result;
|
|
154
|
+
})();
|
|
155
|
+
// fulltext index에 포함된 컬럼들 추출
|
|
156
|
+
const fulltextColumns = unique(entity.indexes.filter((index)=>index.type === "fulltext").flatMap((index)=>index.columns));
|
|
157
|
+
// virtual props
|
|
158
|
+
const virtualProps = entity.props.filter((prop)=>isVirtualProp(prop)).map((prop)=>prop.name);
|
|
159
|
+
const lines = [
|
|
160
|
+
`export const ${schemaName} = ${schemaBody};`,
|
|
161
|
+
`export type ${schemaName} = z.infer<typeof ${schemaName}>` + (fulltextColumns.length > 0 ? ` & { readonly __fulltext__: readonly [${fulltextColumns.map((col)=>`"${col}"`).join(", ")}] }` : "") + (virtualProps.length > 0 ? ` & { readonly __virtual__: readonly [${virtualProps.map((prop)=>`"${prop}"`).join(", ")}] }` : "") + ";"
|
|
162
|
+
];
|
|
163
|
+
return {
|
|
164
|
+
label: `BaseSchema: ${entity.id}`,
|
|
165
|
+
importKeys,
|
|
166
|
+
lines
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
getBaseListParamsSourceCode(entity) {
|
|
170
|
+
// Prop 없는 MD인 경우 생성 제외
|
|
171
|
+
if (entity.props.length === 0) {
|
|
172
|
+
return null;
|
|
173
|
+
} else if (entity.parentId !== undefined) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const schemaName = `${entity.names.module}BaseListParams`;
|
|
177
|
+
const filterProps = entity.props.filter((prop)=>prop.toFilter === true);
|
|
178
|
+
const propNodes = filterProps.map((prop)=>{
|
|
179
|
+
return {
|
|
180
|
+
nodeType: "plain",
|
|
181
|
+
prop,
|
|
182
|
+
children: []
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
const importKeys = [];
|
|
186
|
+
const filterBody = propNodes.map((propNode)=>propNodeToZodTypeDef(propNode, importKeys)).join("\n");
|
|
187
|
+
const schemaBody = `
|
|
188
|
+
z.object({
|
|
189
|
+
num: z.number().int().nonnegative(),
|
|
190
|
+
page: z.number().int().min(1),
|
|
191
|
+
search: ${entity.id}SearchField,
|
|
192
|
+
keyword: z.string(),
|
|
193
|
+
orderBy: ${entity.id}OrderBy,
|
|
194
|
+
queryMode: SonamuQueryMode,
|
|
195
|
+
id: zArrayable(z.number().int().positive()),${filterBody}
|
|
196
|
+
}).partial();
|
|
197
|
+
`.trim();
|
|
198
|
+
const lines = [
|
|
199
|
+
`export const ${schemaName} = ${schemaBody}`,
|
|
200
|
+
`export type ${schemaName} = z.infer<typeof ${schemaName}>;`
|
|
201
|
+
];
|
|
202
|
+
return {
|
|
203
|
+
label: `BaseListParams: ${entity.id}`,
|
|
204
|
+
importKeys,
|
|
205
|
+
lines
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
getSubsetSourceCode(entity) {
|
|
209
|
+
if (Object.keys(entity.subsets).length === 0) {
|
|
210
|
+
return null;
|
|
211
|
+
} else if (entity.parentId !== undefined) {
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
const subsetKeys = Object.keys(entity.subsets);
|
|
215
|
+
const importKeys = [];
|
|
216
|
+
const lines = [
|
|
217
|
+
...subsetKeys.flatMap((subsetKey)=>{
|
|
218
|
+
// 서브셋에서 FieldExpr[] 가져옴
|
|
219
|
+
const fieldExprs = entity.subsets[subsetKey];
|
|
220
|
+
// FieldExpr[]로 EntityPropNode[] 가져옴
|
|
221
|
+
const propNodes = entity.fieldExprsToPropNodes(fieldExprs);
|
|
222
|
+
const schemaName = `${entity.names.module}Subset${subsetKey}`;
|
|
223
|
+
const propNode = {
|
|
224
|
+
nodeType: "object",
|
|
225
|
+
children: propNodes
|
|
226
|
+
};
|
|
227
|
+
// EntityPropNode[]로 ZodTypeDef(string)을 가져옴
|
|
228
|
+
const body = propNodeToZodTypeDef(propNode, importKeys);
|
|
229
|
+
return [
|
|
230
|
+
`export const ${schemaName} = ${body.replace(/,$/, "")};`,
|
|
231
|
+
`export type ${schemaName} = z.infer<typeof ${schemaName}>;`
|
|
232
|
+
];
|
|
233
|
+
}),
|
|
234
|
+
`export type ${entity.names.module}SubsetMapping = {`,
|
|
235
|
+
...subsetKeys.map((subsetKey)=>` ${subsetKey}: ${entity.names.module}Subset${subsetKey};`),
|
|
236
|
+
"};",
|
|
237
|
+
`export const ${entity.names.module}SubsetKey = z.enum([${subsetKeys.map((k)=>`"${k}"`).join(",")}]);`,
|
|
238
|
+
`export type ${entity.names.module}SubsetKey = z.infer<typeof ${entity.names.module}SubsetKey>;`,
|
|
239
|
+
""
|
|
240
|
+
];
|
|
241
|
+
return {
|
|
242
|
+
label: `Subsets: ${entity.id}`,
|
|
243
|
+
lines,
|
|
244
|
+
importKeys: unique(importKeys)
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGlcIjtcbmltcG9ydCB0eXBlIHsgRW50aXR5IH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi8uLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlQcm9wTm9kZSwgaXNWaXJ0dWFsUHJvcCB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgbm9uTnVsbGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBwcm9wTm9kZVRvWm9kVHlwZURlZiwgem9kVHlwZVRvWm9kQ29kZSB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCB0eXBlIFNvdXJjZUNvZGUgPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGxpbmVzOiBzdHJpbmdbXTtcbiAgaW1wb3J0S2V5czogc3RyaW5nW107XG59O1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWQgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYHNvbmFtdS5nZW5lcmF0ZWQudHNgLFxuICAgIH07XG4gIH1cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IGVudGl0eUlkcyA9IEVudGl0eU1hbmFnZXIuZ2V0QWxsSWRzKCk7XG4gICAgY29uc3QgZW50aXRpZXMgPSBlbnRpdHlJZHMubWFwKChpZCkgPT4gRW50aXR5TWFuYWdlci5nZXQoaWQpKTtcblxuICAgIC8vIOyghOyytCBTb3VyY2VDb2RlIOyDneyEsVxuICAgIGNvbnN0IHNvdXJjZUNvZGVzID0gZW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB0aGlzLmdldEVudW1zU291cmNlQ29kZShlbnRpdHkpLFxuICAgICAgICB0aGlzLmdldEJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0U3Vic2V0U291cmNlQ29kZShlbnRpdHkpLFxuICAgICAgXS5maWx0ZXIobm9uTnVsbGFibGUpO1xuICAgIH0pO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOnNvdXJjZUNvZGVzXCIsIHNvdXJjZUNvZGVzKTtcblxuICAgIC8vIFNvcnRcbiAgICBjb25zdCBMQUJFTF9LRVlfT1JERVIgPSBbXCJFbnVtc1wiLCBcIkJhc2VTY2hlbWFcIiwgXCJCYXNlTGlzdFBhcmFtc1wiLCBcIlN1YnNldHNcIiwgXCJTdWJzZXRRdWVyaWVzXCJdO1xuICAgIHNvdXJjZUNvZGVzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IFthS2V5XSA9IGEubGFiZWwuc3BsaXQoXCI6XCIpO1xuICAgICAgY29uc3QgW2JLZXldID0gYi5sYWJlbC5zcGxpdChcIjpcIik7XG4gICAgICBjb25zdCBhSW5kZXggPSBMQUJFTF9LRVlfT1JERVIuaW5kZXhPZihhS2V5KTtcbiAgICAgIGNvbnN0IGJJbmRleCA9IExBQkVMX0tFWV9PUkRFUi5pbmRleE9mKGJLZXkpO1xuICAgICAgaWYgKGFJbmRleCA+IGJJbmRleCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSBpZiAoYUluZGV4IDwgYkluZGV4KSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc291cmNlQ29kZSA9IHNvdXJjZUNvZGVzLnJlZHVjZShcbiAgICAgIChyZXN1bHQsIHRzKSA9PiB7XG4gICAgICAgIGlmICh0cyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lczogWy4uLnJlc3VsdC5saW5lcywgYC8vICR7dHMubGFiZWx9YCwgLi4udHMubGluZXMsIFwiXCJdLFxuICAgICAgICAgIGltcG9ydEtleXM6IHVuaXF1ZShbLi4ucmVzdWx0LmltcG9ydEtleXMsIC4uLnRzLmltcG9ydEtleXNdLnNvcnQoKSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsaW5lczogW10sXG4gICAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgfSBhcyBPbWl0PFNvdXJjZUNvZGUsIFwibGFiZWxcIj4sXG4gICAgKTtcblxuICAgIC8vIC50eXBlcy50c+ydmCDtg4DsnoXsnYQg7LC47KGw7ZWY64qUIOqyveyasCDsiJztmZjssLjsobAo7IOB7Zi47LC47KGwKeqwgCDrsJzsg53tlZjrr4DroZwg7YOA7J6F7J2EIOqwgOyguOyZgCDsnbjrnbzsnbgg7LKY66asXG4gICAgY29uc3QgYWxsVHlwZUtleXMgPSBlbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+IE9iamVjdC5rZXlzKGVudGl0eS50eXBlcykpO1xuICAgIGNvbnN0IGNkSW1wb3J0S2V5cyA9IHNvdXJjZUNvZGUuaW1wb3J0S2V5cy5maWx0ZXIoKGltcG9ydEtleSkgPT5cbiAgICAgIGFsbFR5cGVLZXlzLmluY2x1ZGVzKGltcG9ydEtleSksXG4gICAgKTtcbiAgICBpZiAoY2RJbXBvcnRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGN1c3RvbVNjYWxhckxpbmVzID0gY2RJbXBvcnRLZXlzLmZsYXRNYXAoKGltcG9ydEtleSkgPT4ge1xuICAgICAgICBjb25zdCBlbnRpdHkgPSBlbnRpdGllcy5maW5kKChlbnRpdHkpID0+IGVudGl0eS50eXBlc1tpbXBvcnRLZXldKTtcbiAgICAgICAgaWYgKCFlbnRpdHkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFpvZFR5cGUgbm90IGZvdW5kICR7aW1wb3J0S2V5fWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHpvZFR5cGUgPSBlbnRpdHkudHlwZXNbaW1wb3J0S2V5XTtcbiAgICAgICAgYXNzZXJ0KHpvZFR5cGUpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgYC8vIEN1c3RvbVNjYWxhcjogJHtpbXBvcnRLZXl9YCxcbiAgICAgICAgICBgY29uc3QgJHtpbXBvcnRLZXl9ID0gJHt6b2RUeXBlVG9ab2RDb2RlKHpvZFR5cGUpfTtgLFxuICAgICAgICAgIGB0eXBlICR7aW1wb3J0S2V5fSA9IHouaW5mZXI8dHlwZW9mICR7aW1wb3J0S2V5fT5gLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgIF07XG4gICAgICB9KTtcbiAgICAgIHNvdXJjZUNvZGUubGluZXMgPSBbLi4uY3VzdG9tU2NhbGFyTGluZXMsIC4uLnNvdXJjZUNvZGUubGluZXNdO1xuICAgICAgc291cmNlQ29kZS5pbXBvcnRLZXlzID0gc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcihcbiAgICAgICAgKGltcG9ydEtleSkgPT4gIWNkSW1wb3J0S2V5cy5pbmNsdWRlcyhpbXBvcnRLZXkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gc291cmNlQ29kZS5saW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOmJvZHlcIiwgYm9keSk7XG5cbiAgICAvLyBpbXBvcnRcbiAgICBjb25zdCBzb25hbXVJbXBvcnRzID0gW1xuICAgICAgXCJ6QXJyYXlhYmxlXCIsXG4gICAgICBcIlNRTERhdGVUaW1lU3RyaW5nXCIsXG4gICAgICBcIlN1YnNldFF1ZXJ5XCIsXG4gICAgICBcIlNvbmFtdVF1ZXJ5TW9kZVwiLFxuICAgIF0uZmlsdGVyKChtb2QpID0+IGJvZHkuaW5jbHVkZXMobW9kKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5LFxuICAgICAgaW1wb3J0S2V5czogc291cmNlQ29kZS5pbXBvcnRLZXlzLFxuICAgICAgY3VzdG9tSGVhZGVyczogW1xuICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZOuKlCDrrLTsi5wgKi9cIixcbiAgICAgICAgXCIvKiogYmlvbWUtaWdub3JlLWFsbCBhc3Npc3Q6IGdlbmVyYXRlZOuKlCDrrLTsi5wgKi9cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgYGltcG9ydCB7IHogfSBmcm9tICd6b2QnO2AsXG4gICAgICAgIGBpbXBvcnQgeyAke3NvbmFtdUltcG9ydHMuam9pbihcIixcIil9IH0gZnJvbSBcInNvbmFtdVwiO2AsXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBnZXRFbnVtc1NvdXJjZUNvZGUoZW50aXR5OiBFbnRpdHkpOiBTb3VyY2VDb2RlIHwgbnVsbCB7XG4gICAgaWYgKE9iamVjdC5rZXlzKGVudGl0eS5lbnVtTGFiZWxzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBFbnVtczogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgIC4uLk9iamVjdC5lbnRyaWVzKGVudGl0eS5lbnVtTGFiZWxzKVxuICAgICAgICAgIC5maWx0ZXIoKFtfLCBlbnVtTGFiZWxdKSA9PiBPYmplY3Qua2V5cyhlbnVtTGFiZWwpLmxlbmd0aCA+IDApXG4gICAgICAgICAgLmZsYXRNYXAoKFtlbnVtSWQsIGVudW1MYWJlbF0pID0+IFtcbiAgICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnVtSWR9ID0gei5lbnVtKFske09iamVjdC5rZXlzKGVudW1MYWJlbCkubWFwKFxuICAgICAgICAgICAgICAoZWwpID0+IGBcIiR7ZWx9XCJgLFxuICAgICAgICAgICAgKX1dKS5kZXNjcmliZShcIiR7ZW51bUlkfVwiKTtgLFxuICAgICAgICAgICAgYGV4cG9ydCB0eXBlICR7ZW51bUlkfSA9IHouaW5mZXI8dHlwZW9mICR7ZW51bUlkfT47YCxcbiAgICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnVtSWR9TGFiZWwgPSAke0pTT04uc3RyaW5naWZ5KGVudW1MYWJlbCl9O2AsXG4gICAgICAgICAgXSksXG4gICAgICBdLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIGdldEJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5LCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdKTogU291cmNlQ29kZSB7XG4gICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9QmFzZVNjaGVtYWA7XG4gICAgY29uc3QgcHJvcE5vZGU6IEVudGl0eVByb3BOb2RlID0ge1xuICAgICAgbm9kZVR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBjaGlsZHJlbjogZW50aXR5LnByb3BzLm1hcCgocHJvcCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGVUeXBlOiBcInBsYWluXCIsXG4gICAgICAgICAgcHJvcCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICBjb25zdCBzY2hlbWFCb2R5ID0gKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHByb3BOb2RlVG9ab2RUeXBlRGVmKHByb3BOb2RlLCBpbXBvcnRLZXlzKTtcbiAgICAgIGlmIChyZXN1bHQuZW5kc1dpdGgoXCIsXCIpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pKCk7XG5cbiAgICAvLyBmdWxsdGV4dCBpbmRleOyXkCDtj6ztlajrkJwg7Lus65+865OkIOy2lOy2nFxuICAgIGNvbnN0IGZ1bGx0ZXh0Q29sdW1ucyA9IHVuaXF1ZShcbiAgICAgIGVudGl0eS5pbmRleGVzLmZpbHRlcigoaW5kZXgpID0+IGluZGV4LnR5cGUgPT09IFwiZnVsbHRleHRcIikuZmxhdE1hcCgoaW5kZXgpID0+IGluZGV4LmNvbHVtbnMpLFxuICAgICk7XG5cbiAgICAvLyB2aXJ0dWFsIHByb3BzXG4gICAgY29uc3QgdmlydHVhbFByb3BzID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiBpc1ZpcnR1YWxQcm9wKHByb3ApKVxuICAgICAgLm1hcCgocHJvcCkgPT4gcHJvcC5uYW1lKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgYGV4cG9ydCBjb25zdCAke3NjaGVtYU5hbWV9ID0gJHtzY2hlbWFCb2R5fTtgLFxuICAgICAgYGV4cG9ydCB0eXBlICR7c2NoZW1hTmFtZX0gPSB6LmluZmVyPHR5cGVvZiAke3NjaGVtYU5hbWV9PmAgK1xuICAgICAgICAoZnVsbHRleHRDb2x1bW5zLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGAgJiB7IHJlYWRvbmx5IF9fZnVsbHRleHRfXzogcmVhZG9ubHkgWyR7ZnVsbHRleHRDb2x1bW5zXG4gICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfV0gfWBcbiAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgKHZpcnR1YWxQcm9wcy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBgICYgeyByZWFkb25seSBfX3ZpcnR1YWxfXzogcmVhZG9ubHkgWyR7dmlydHVhbFByb3BzXG4gICAgICAgICAgICAgIC5tYXAoKHByb3ApID0+IGBcIiR7cHJvcH1cImApXG4gICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9XSB9YFxuICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICBcIjtcIixcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgQmFzZVNjaGVtYTogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5KTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIC8vIFByb3Ag7JeG64qUIE1E7J24IOqyveyasCDsg53shLEg7KCc7Jm4XG4gICAgaWYgKGVudGl0eS5wcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoZW50aXR5LnBhcmVudElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYU5hbWUgPSBgJHtlbnRpdHkubmFtZXMubW9kdWxlfUJhc2VMaXN0UGFyYW1zYDtcblxuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZW50aXR5LnByb3BzLmZpbHRlcigocHJvcCkgPT4gcHJvcC50b0ZpbHRlciA9PT0gdHJ1ZSk7XG5cbiAgICBjb25zdCBwcm9wTm9kZXM6IEVudGl0eVByb3BOb2RlW10gPSBmaWx0ZXJQcm9wcy5tYXAoKHByb3ApID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVUeXBlOiBcInBsYWluXCIgYXMgY29uc3QsXG4gICAgICAgIHByb3AsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGZpbHRlckJvZHkgPSBwcm9wTm9kZXNcbiAgICAgIC5tYXAoKHByb3BOb2RlKSA9PiBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cykpXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIGNvbnN0IHNjaGVtYUJvZHkgPSBgXG56Lm9iamVjdCh7XG4gIG51bTogei5udW1iZXIoKS5pbnQoKS5ub25uZWdhdGl2ZSgpLFxuICBwYWdlOiB6Lm51bWJlcigpLmludCgpLm1pbigxKSxcbiAgc2VhcmNoOiAke2VudGl0eS5pZH1TZWFyY2hGaWVsZCxcbiAga2V5d29yZDogei5zdHJpbmcoKSxcbiAgb3JkZXJCeTogJHtlbnRpdHkuaWR9T3JkZXJCeSxcbiAgcXVlcnlNb2RlOiBTb25hbXVRdWVyeU1vZGUsXG4gIGlkOiB6QXJyYXlhYmxlKHoubnVtYmVyKCkuaW50KCkucG9zaXRpdmUoKSksJHtmaWx0ZXJCb2R5fVxufSkucGFydGlhbCgpO1xuYC50cmltKCk7XG5cbiAgICBjb25zdCBsaW5lcyA9IFtcbiAgICAgIGBleHBvcnQgY29uc3QgJHtzY2hlbWFOYW1lfSA9ICR7c2NoZW1hQm9keX1gLFxuICAgICAgYGV4cG9ydCB0eXBlICR7c2NoZW1hTmFtZX0gPSB6LmluZmVyPHR5cGVvZiAke3NjaGVtYU5hbWV9PjtgLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBCYXNlTGlzdFBhcmFtczogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3Vic2V0U291cmNlQ29kZShlbnRpdHk6IEVudGl0eSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChlbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2V0S2V5cyA9IE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnN1YnNldEtleXMuZmxhdE1hcCgoc3Vic2V0S2V5KSA9PiB7XG4gICAgICAgIC8vIOyEnOu4jOyFi+yXkOyEnCBGaWVsZEV4cHJbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgZmllbGRFeHBycyA9IGVudGl0eS5zdWJzZXRzW3N1YnNldEtleV07XG5cbiAgICAgICAgLy8gRmllbGRFeHByW13roZwgRW50aXR5UHJvcE5vZGVbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgcHJvcE5vZGVzID0gZW50aXR5LmZpZWxkRXhwcnNUb1Byb3BOb2RlcyhmaWVsZEV4cHJzKTtcbiAgICAgICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9YDtcbiAgICAgICAgY29uc3QgcHJvcE5vZGU6IEVudGl0eVByb3BOb2RlID0ge1xuICAgICAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIGNoaWxkcmVuOiBwcm9wTm9kZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gRW50aXR5UHJvcE5vZGVbXeuhnCBab2RUeXBlRGVmKHN0cmluZynsnYQg6rCA7KC47Ji0XG4gICAgICAgIGNvbnN0IGJvZHkgPSBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cyk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke2JvZHkucmVwbGFjZSgvLCQvLCBcIlwiKX07YCxcbiAgICAgICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+O2AsXG4gICAgICAgIF07XG4gICAgICB9KSxcbiAgICAgIGBleHBvcnQgdHlwZSAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0TWFwcGluZyA9IHtgLFxuICAgICAgLi4uc3Vic2V0S2V5cy5tYXAoKHN1YnNldEtleSkgPT4gYCAgJHtzdWJzZXRLZXl9OiAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9O2ApLFxuICAgICAgXCJ9O1wiLFxuICAgICAgYGV4cG9ydCBjb25zdCAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5ID0gei5lbnVtKFske3N1YnNldEtleXNcbiAgICAgICAgLm1hcCgoaykgPT4gYFwiJHtrfVwiYClcbiAgICAgICAgLmpvaW4oXCIsXCIpfV0pO2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtlbnRpdHkubmFtZXMubW9kdWxlfVN1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mICR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRLZXk+O2AsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBTdWJzZXRzOiAke2VudGl0eS5pZH1gLFxuICAgICAgbGluZXMsXG4gICAgICBpbXBvcnRLZXlzOiB1bmlxdWUoaW1wb3J0S2V5cyksXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImFzc2VydCIsInVuaXF1ZSIsIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJOYWl0ZSIsImlzVmlydHVhbFByb3AiLCJub25OdWxsYWJsZSIsIlRlbXBsYXRlIiwicHJvcE5vZGVUb1pvZFR5cGVEZWYiLCJ6b2RUeXBlVG9ab2RDb2RlIiwiVGVtcGxhdGVfX2dlbmVyYXRlZCIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiZW50aXR5SWRzIiwiZ2V0QWxsSWRzIiwiZW50aXRpZXMiLCJtYXAiLCJpZCIsImdldCIsInNvdXJjZUNvZGVzIiwiZmxhdE1hcCIsImVudGl0eSIsImdldEVudW1zU291cmNlQ29kZSIsImdldEJhc2VTY2hlbWFTb3VyY2VDb2RlIiwiZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlIiwiZ2V0U3Vic2V0U291cmNlQ29kZSIsImZpbHRlciIsInQiLCJMQUJFTF9LRVlfT1JERVIiLCJzb3J0IiwiYSIsImIiLCJhS2V5IiwibGFiZWwiLCJzcGxpdCIsImJLZXkiLCJhSW5kZXgiLCJpbmRleE9mIiwiYkluZGV4Iiwic291cmNlQ29kZSIsInJlZHVjZSIsInJlc3VsdCIsInRzIiwibGluZXMiLCJpbXBvcnRLZXlzIiwiYWxsVHlwZUtleXMiLCJPYmplY3QiLCJrZXlzIiwidHlwZXMiLCJjZEltcG9ydEtleXMiLCJpbXBvcnRLZXkiLCJpbmNsdWRlcyIsImxlbmd0aCIsImN1c3RvbVNjYWxhckxpbmVzIiwiZmluZCIsIkVycm9yIiwiem9kVHlwZSIsImJvZHkiLCJqb2luIiwic29uYW11SW1wb3J0cyIsIm1vZCIsImN1c3RvbUhlYWRlcnMiLCJlbnVtTGFiZWxzIiwiZW50cmllcyIsIl8iLCJlbnVtTGFiZWwiLCJlbnVtSWQiLCJlbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzY2hlbWFOYW1lIiwibmFtZXMiLCJtb2R1bGUiLCJwcm9wTm9kZSIsIm5vZGVUeXBlIiwiY2hpbGRyZW4iLCJwcm9wcyIsInByb3AiLCJzY2hlbWFCb2R5IiwiZW5kc1dpdGgiLCJzbGljZSIsImZ1bGx0ZXh0Q29sdW1ucyIsImluZGV4ZXMiLCJpbmRleCIsInR5cGUiLCJjb2x1bW5zIiwidmlydHVhbFByb3BzIiwibmFtZSIsImNvbCIsInBhcmVudElkIiwidW5kZWZpbmVkIiwiZmlsdGVyUHJvcHMiLCJ0b0ZpbHRlciIsInByb3BOb2RlcyIsImZpbHRlckJvZHkiLCJ0cmltIiwic3Vic2V0cyIsInN1YnNldEtleXMiLCJzdWJz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
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Template } from "./base-template";
|
|
2
|
+
import type { ExtendedApi } from "../../api/decorators";
|
|
3
|
+
import { Template } from "../template";
|
|
5
4
|
export declare class Template__generated_http extends Template {
|
|
6
5
|
constructor();
|
|
7
6
|
getTargetAndPath(): {
|
|
8
7
|
target: string;
|
|
9
8
|
path: string;
|
|
10
9
|
};
|
|
11
|
-
render(
|
|
10
|
+
render(): Promise<{
|
|
12
11
|
body: string;
|
|
13
12
|
importKeys: never[];
|
|
14
13
|
target: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated_http.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_http.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,QAAQ;;IAKpD,gBAAgB;;;;IASV,MAAM;;;;;;IA8CZ,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAgEvE,gBAAgB,CACd,GAAG,EAAE,WAAW,EAEhB,UAAU,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;KAAE,GACnD;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;CAY9B"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import qs from "qs";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { getZodObjectFromApi } from "../../api/code-converters.js";
|
|
4
|
+
import { Sonamu } from "../../api/sonamu.js";
|
|
5
|
+
import { Template } from "../template.js";
|
|
6
|
+
export class Template__generated_http extends Template {
|
|
7
|
+
constructor(){
|
|
8
|
+
super("generated_http");
|
|
9
|
+
}
|
|
10
|
+
getTargetAndPath() {
|
|
11
|
+
const { dir } = Sonamu.config.api;
|
|
12
|
+
return {
|
|
13
|
+
target: `${dir}/src/application`,
|
|
14
|
+
path: `sonamu.generated.http`
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
async render() {
|
|
18
|
+
const { syncer: { types, apis }, config: { api: { route: { prefix } } } } = Sonamu;
|
|
19
|
+
const lines = await Promise.all(apis.map(async (api)=>{
|
|
20
|
+
const reqObject = this.resolveApiParams(api, types);
|
|
21
|
+
const dataLines = await (async ()=>{
|
|
22
|
+
if ((api.options.httpMethod ?? "GET") === "GET") {
|
|
23
|
+
return {
|
|
24
|
+
querystring: [
|
|
25
|
+
qs.stringify(reqObject, {
|
|
26
|
+
encode: false
|
|
27
|
+
}).split("&").join("\n\t&")
|
|
28
|
+
],
|
|
29
|
+
body: []
|
|
30
|
+
};
|
|
31
|
+
} else {
|
|
32
|
+
return {
|
|
33
|
+
querystring: [],
|
|
34
|
+
body: [
|
|
35
|
+
"",
|
|
36
|
+
JSON.stringify(reqObject, null, 2)
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
})();
|
|
41
|
+
return [
|
|
42
|
+
[
|
|
43
|
+
`${api.options.httpMethod ?? "GET"} {{baseUrl}}${prefix}${api.path}`,
|
|
44
|
+
...dataLines.querystring
|
|
45
|
+
].join("\n\t?"),
|
|
46
|
+
`Content-Type: ${api.options.contentType ?? "application/json"}`,
|
|
47
|
+
...dataLines.body
|
|
48
|
+
].join("\n");
|
|
49
|
+
}));
|
|
50
|
+
return {
|
|
51
|
+
...this.getTargetAndPath(),
|
|
52
|
+
body: lines.join("\n\n###\n\n"),
|
|
53
|
+
importKeys: []
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
zodTypeToReqDefault(zodType, name) {
|
|
57
|
+
if (zodType instanceof z.ZodObject) {
|
|
58
|
+
return Object.fromEntries(Object.keys(zodType.shape).map((key)=>[
|
|
59
|
+
key,
|
|
60
|
+
this.zodTypeToReqDefault(zodType.shape[key], key)
|
|
61
|
+
]));
|
|
62
|
+
} else if (zodType instanceof z.ZodArray) {
|
|
63
|
+
return [
|
|
64
|
+
this.zodTypeToReqDefault(zodType.element, name)
|
|
65
|
+
];
|
|
66
|
+
} else if (zodType instanceof z.ZodString) {
|
|
67
|
+
if (name.endsWith("_at") || name.endsWith("_date") || name === "range") {
|
|
68
|
+
return "2000-01-01";
|
|
69
|
+
} else {
|
|
70
|
+
return name.toUpperCase();
|
|
71
|
+
}
|
|
72
|
+
} else if (zodType instanceof z.ZodNumber) {
|
|
73
|
+
if (name === "num") {
|
|
74
|
+
return 24;
|
|
75
|
+
}
|
|
76
|
+
const minValue = zodType.minValue ?? 0;
|
|
77
|
+
return minValue > Number.MIN_SAFE_INTEGER ? minValue : 0;
|
|
78
|
+
} else if (zodType instanceof z.ZodBoolean) {
|
|
79
|
+
return false;
|
|
80
|
+
} else if (zodType instanceof z.ZodEnum) {
|
|
81
|
+
return zodType.options[0];
|
|
82
|
+
} else if (zodType instanceof z.ZodOptional) {
|
|
83
|
+
return this.zodTypeToReqDefault(zodType.def.innerType, name);
|
|
84
|
+
} else if (zodType instanceof z.ZodNullable) {
|
|
85
|
+
return null;
|
|
86
|
+
} else if (zodType instanceof z.ZodUnion) {
|
|
87
|
+
return this.zodTypeToReqDefault(zodType.def.options[0], name);
|
|
88
|
+
} else if (zodType instanceof z.ZodUnknown) {
|
|
89
|
+
return "unknown";
|
|
90
|
+
} else if (zodType instanceof z.ZodTuple) {
|
|
91
|
+
/** biome-ignore lint/suspicious/noExplicitAny: ZodTuple 타입 사용 */ return zodType.def.items.map((item)=>this.zodTypeToReqDefault(item, name));
|
|
92
|
+
} else if (zodType instanceof z.ZodDate) {
|
|
93
|
+
return "2000-01-01";
|
|
94
|
+
} else if (zodType instanceof z.ZodLiteral) {
|
|
95
|
+
return zodType.value;
|
|
96
|
+
} else if (zodType instanceof z.ZodRecord || zodType instanceof z.ZodMap) {
|
|
97
|
+
// biome-ignore lint/suspicious/noExplicitAny: ZodRecord 타입 사용
|
|
98
|
+
const kvDef = zodType.def;
|
|
99
|
+
// biome-ignore lint/suspicious/noExplicitAny: ZodIntersection 타입 사용
|
|
100
|
+
const key = this.zodTypeToReqDefault(kvDef.keyType, name);
|
|
101
|
+
const value = this.zodTypeToReqDefault(kvDef.valueType, name);
|
|
102
|
+
return {
|
|
103
|
+
[key]: value
|
|
104
|
+
};
|
|
105
|
+
} else if (zodType instanceof z.ZodSet) {
|
|
106
|
+
return [
|
|
107
|
+
this.zodTypeToReqDefault(zodType.def.valueType, name)
|
|
108
|
+
];
|
|
109
|
+
} else if (zodType instanceof z.ZodIntersection) {
|
|
110
|
+
return this.zodTypeToReqDefault(zodType.def.right, name);
|
|
111
|
+
} else if (zodType instanceof z.ZodDefault) {
|
|
112
|
+
return this.zodTypeToReqDefault(zodType.def.innerType, name);
|
|
113
|
+
} else {
|
|
114
|
+
// console.log(zodType);
|
|
115
|
+
return `unknown-${zodType.type}`;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
resolveApiParams(api, // biome-ignore lint/suspicious/noExplicitAny: ZodObject 타입 사용
|
|
119
|
+
references) {
|
|
120
|
+
const reqType = getZodObjectFromApi(api, references);
|
|
121
|
+
try {
|
|
122
|
+
const def = this.zodTypeToReqDefault(reqType, "unknownName");
|
|
123
|
+
return def;
|
|
124
|
+
} catch (error) {
|
|
125
|
+
console.error(error);
|
|
126
|
+
throw new Error(`Invalid zod type detected on ${api.modelName}:${api.methodName}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHFzIGZyb20gXCJxc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdldFpvZE9iamVjdEZyb21BcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkX2h0dHBcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLmh0dHBgLFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc3luY2VyOiB7IHR5cGVzLCBhcGlzIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXBpOiB7XG4gICAgICAgICAgcm91dGU6IHsgcHJlZml4IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gPSBTb25hbXU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBpcy5tYXAoYXN5bmMgKGFwaSkgPT4ge1xuICAgICAgICBjb25zdCByZXFPYmplY3QgPSB0aGlzLnJlc29sdmVBcGlQYXJhbXMoYXBpLCB0eXBlcyk7XG5cbiAgICAgICAgY29uc3QgZGF0YUxpbmVzID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIikgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiBbcXMuc3RyaW5naWZ5KHJlcU9iamVjdCwgeyBlbmNvZGU6IGZhbHNlIH0pLnNwbGl0KFwiJlwiKS5qb2luKFwiXFxuXFx0JlwiKV0sXG4gICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcXVlcnlzdHJpbmc6IFtdLFxuICAgICAgICAgICAgICBib2R5OiBbXCJcIiwgSlNPTi5zdHJpbmdpZnkocmVxT2JqZWN0LCBudWxsLCAyKV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGAke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIn0ge3tiYXNlVXJsfX0ke3ByZWZpeH0ke2FwaS5wYXRofWAsXG4gICAgICAgICAgICAuLi5kYXRhTGluZXMucXVlcnlzdHJpbmcsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXFx0P1wiKSxcbiAgICAgICAgICBgQ29udGVudC1UeXBlOiAke2FwaS5vcHRpb25zLmNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWAsXG4gICAgICAgICAgLi4uZGF0YUxpbmVzLmJvZHksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIHpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZTogei5ab2RUeXBlPHVua25vd24+LCBuYW1lOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kT2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3Qua2V5cyh6b2RUeXBlLnNoYXBlKS5tYXAoKGtleSkgPT4gW1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZS5zaGFwZVtrZXldLCBrZXkpLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkge1xuICAgICAgcmV0dXJuIFt0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RBcnJheTx6LlpvZFR5cGU+KS5lbGVtZW50LCBuYW1lKV07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RTdHJpbmcpIHtcbiAgICAgIGlmIChuYW1lLmVuZHNXaXRoKFwiX2F0XCIpIHx8IG5hbWUuZW5kc1dpdGgoXCJfZGF0ZVwiKSB8fCBuYW1lID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bWJlcikge1xuICAgICAgaWYgKG5hbWUgPT09IFwibnVtXCIpIHtcbiAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW5WYWx1ZSA9IHpvZFR5cGUubWluVmFsdWUgPz8gMDtcbiAgICAgIHJldHVybiBtaW5WYWx1ZSA+IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSID8gbWluVmFsdWUgOiAwO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQm9vbGVhbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUub3B0aW9uc1swXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kT3B0aW9uYWw8ei5ab2RUeXBlPikuZGVmLmlubmVyVHlwZSwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdWxsYWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RVbmlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCgoem9kVHlwZSBhcyB6LlpvZFVuaW9uPHouWm9kVHlwZVtdPikuZGVmLm9wdGlvbnNbMF0sIG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVW5rbm93bikge1xuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVHVwbGUpIHtcbiAgICAgIC8qKiBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFpvZFR1cGxlIO2DgOyehSDsgqzsmqkgKi9cbiAgICAgIHJldHVybiB6b2RUeXBlLmRlZi5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGl0ZW0sIG5hbWUpKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZERhdGUpIHtcbiAgICAgIHJldHVybiBcIjIwMDAtMDEtMDFcIjtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZExpdGVyYWwpIHtcbiAgICAgIHJldHVybiB6b2RUeXBlLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kUmVjb3JkIHx8IHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE1hcCkge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBab2RSZWNvcmQg7YOA7J6FIOyCrOyaqVxuICAgICAgY29uc3Qga3ZEZWYgPSAoem9kVHlwZSBhcyB6LlpvZFJlY29yZDxhbnksIHouWm9kVHlwZT4gfCB6LlpvZE1hcDx6LlpvZFR5cGUsIHouWm9kVHlwZT4pLmRlZjtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogWm9kSW50ZXJzZWN0aW9uIO2DgOyehSDsgqzsmqlcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChrdkRlZi5rZXlUeXBlLCBuYW1lKSBhcyBhbnk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChrdkRlZi52YWx1ZVR5cGUsIG5hbWUpO1xuICAgICAgcmV0dXJuIHsgW2tleV06IHZhbHVlIH07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RTZXQpIHtcbiAgICAgIHJldHVybiBbdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kU2V0PHouWm9kVHlwZT4pLmRlZi52YWx1ZVR5cGUsIG5hbWUpXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEludGVyc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChcbiAgICAgICAgKHpvZFR5cGUgYXMgei5ab2RJbnRlcnNlY3Rpb248ei5ab2RUeXBlLCB6LlpvZFR5cGU+KS5kZWYucmlnaHQsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCgoem9kVHlwZSBhcyB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPikuZGVmLmlubmVyVHlwZSwgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHpvZFR5cGUpO1xuICAgICAgcmV0dXJuIGB1bmtub3duLSR7em9kVHlwZS50eXBlfWA7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZUFwaVBhcmFtcyhcbiAgICBhcGk6IEV4dGVuZGVkQXBpLFxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogWm9kT2JqZWN0IO2DgOyehSDsgqzsmqlcbiAgICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RPYmplY3Q8YW55PiB9LFxuICApOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB7XG4gICAgY29uc3QgcmVxVHlwZSA9IGdldFpvZE9iamVjdEZyb21BcGkoYXBpLCByZWZlcmVuY2VzKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVmID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KHJlcVR5cGUsIFwidW5rbm93bk5hbWVcIikgYXMge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBkZWY7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHpvZCB0eXBlIGRldGVjdGVkIG9uICR7YXBpLm1vZGVsTmFtZX06JHthcGkubWV0aG9kTmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJxcyIsInoiLCJnZXRab2RPYmplY3RGcm9tQXBpIiwiU29uYW11IiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAiLCJnZXRUYXJnZXRBbmRQYXRoIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsInJlbmRlciIsInN5bmNlciIsInR5cGVzIiwiYXBpcyIsInJvdXRlIiwicHJlZml4IiwibGluZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicmVxT2JqZWN0IiwicmVzb2x2ZUFwaVBhcmFtcyIsImRhdGFMaW5lcyIsIm9wdGlvbnMiLCJodHRwTWV0aG9kIiwicXVlcnlzdHJpbmciLCJzdHJpbmdpZnkiLCJlbmNvZGUiLCJzcGxpdCIsImpvaW4iLCJib2R5IiwiSlNPTiIsImNvbnRlbnRUeXBlIiwiaW1wb3J0S2V5cyIsInpvZFR5cGVUb1JlcURlZmF1bHQiLCJ6b2RUeXBlIiwibmFtZSIsIlpvZE9iamVjdCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwia2V5cyIsInNoYXBlIiwia2V5IiwiWm9kQXJyYXkiLCJlbGVtZW50IiwiWm9kU3RyaW5nIiwiZW5kc1dpdGgiLCJ0b1VwcGVyQ2FzZSIsIlpvZE51bWJlciIsIm1pblZhbHVlIiwiTnVtYmVyIiwiTUlOX1NBRkVfSU5URUdFUiIsIlpvZEJvb2xlYW4iLCJab2RFbnVtIiwiWm9kT3B0aW9uYWwiLCJkZWYiLCJpbm5lclR5cGUiLCJab2ROdWxsYWJsZSIsIlpvZFVuaW9uIiwiWm9kVW5rbm93biIsIlpvZFR1cGxlIiwiaXRlbXMiLCJpdGVtIiwiWm9kRGF0ZSIsIlpvZExpdGVyYWwiLCJ2YWx1ZSIsIlpvZFJlY29yZCIsIlpvZE1hcCIsImt2RGVmIiwia2V5VHlwZSIsInZhbHVlVHlwZSIsIlpvZFNldCIsIlpvZEludGVyc2VjdGlvbiIsInJpZ2h0IiwiWm9kRGVmYXVsdCIsInR5cGUiLCJyZWZlcmVuY2VzIiwicmVxVHlwZSIsImVycm9yIiwiY29uc29sZSIsIkVycm9yIiwibW9kZWxOYW1lIiwibWV0aG9kTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsUUFBUSxLQUFLO0FBQ3BCLFNBQVNDLENBQUMsUUFBUSxNQUFNO0FBQ3hCLFNBQVNDLG1CQUFtQixRQUFRLCtCQUE0QjtBQUVoRSxTQUFTQyxNQUFNLFFBQVEsc0JBQW1CO0FBQzFDLFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUV2QyxPQUFPLE1BQU1DLGlDQUFpQ0Q7SUFDNUMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFFLG1CQUFtQjtRQUNqQixNQUFNLEVBQUVDLEdBQUcsRUFBRSxHQUFHSixPQUFPSyxNQUFNLENBQUNDLEdBQUc7UUFFakMsT0FBTztZQUNMQyxRQUFRLEdBQUdILElBQUksZ0JBQWdCLENBQUM7WUFDaENJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMvQjtJQUNGO0lBRUEsTUFBTUMsU0FBUztRQUNiLE1BQU0sRUFDSkMsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxFQUN2QlAsUUFBUSxFQUNOQyxLQUFLLEVBQ0hPLE9BQU8sRUFBRUMsTUFBTSxFQUFFLEVBQ2xCLEVBQ0YsRUFDRixHQUFHZDtRQUVKLE1BQU1lLFFBQVEsTUFBTUMsUUFBUUMsR0FBRyxDQUM3QkwsS0FBS00sR0FBRyxDQUFDLE9BQU9aO1lBQ2QsTUFBTWEsWUFBWSxJQUFJLENBQUNDLGdCQUFnQixDQUFDZCxLQUFLSztZQUU3QyxNQUFNVSxZQUFZLE1BQU0sQUFBQyxDQUFBO2dCQUN2QixJQUFJLEFBQUNmLENBQUFBLElBQUlnQixPQUFPLENBQUNDLFVBQVUsSUFBSSxLQUFJLE1BQU8sT0FBTztvQkFDL0MsT0FBTzt3QkFDTEMsYUFBYTs0QkFBQzNCLEdBQUc0QixTQUFTLENBQUNOLFdBQVc7Z0NBQUVPLFFBQVE7NEJBQU0sR0FBR0MsS0FBSyxDQUFDLEtBQUtDLElB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
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Template } from "
|
|
3
|
-
import { SourceCode } from "./generated.template";
|
|
4
|
-
import { Entity } from "../entity/entity";
|
|
1
|
+
import type { Entity } from "../../entity/entity";
|
|
2
|
+
import { Template } from "../template";
|
|
3
|
+
import type { SourceCode } from "./generated.template";
|
|
5
4
|
export declare class Template__generated_sso extends Template {
|
|
6
5
|
constructor();
|
|
7
6
|
getTargetAndPath(): {
|
|
8
7
|
target: string;
|
|
9
8
|
path: string;
|
|
10
9
|
};
|
|
11
|
-
render(
|
|
10
|
+
render(): {
|
|
12
11
|
body: string;
|
|
13
12
|
importKeys: string[];
|
|
14
13
|
customHeaders: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated_sso.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_sso.template.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,uBAAwB,SAAQ,QAAQ;;IAKnD,gBAAgB;;;;IAShB,MAAM;;;;;;;IA4FN,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI;CAkCnE"}
|