sonamu 0.10.12 → 0.10.13
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/dist/ai/agents/agent.d.ts +1 -1
- package/dist/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/agents/agent.js +5 -6
- package/dist/ai/agents/types.d.ts +1 -1
- package/dist/ai/agents/types.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/api.js +18 -18
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/error.js +17 -15
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/model.js +3 -2
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/options.js +16 -16
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/provider.js +9 -9
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/utils.js +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +17 -17
- package/dist/api/code-converters.d.ts +4 -2
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +100 -19
- package/dist/api/config.d.ts +16 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +28 -21
- package/dist/api/context.d.ts +2 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +18 -11
- package/dist/api/http-validator.d.ts +36 -0
- package/dist/api/http-validator.d.ts.map +1 -0
- package/dist/api/http-validator.js +72 -0
- package/dist/api/index.js +6 -4
- package/dist/api/sonamu.d.ts +59 -20
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +250 -106
- package/dist/api/websocket-helpers.d.ts +7 -5
- package/dist/api/websocket-helpers.d.ts.map +1 -1
- package/dist/api/websocket-helpers.js +6 -6
- package/dist/auth/audit-log/builders.d.ts.map +1 -1
- package/dist/auth/audit-log/builders.js +1 -1
- package/dist/auth/audit-log/client-ip.d.ts +1 -1
- package/dist/auth/audit-log/client-ip.d.ts.map +1 -1
- package/dist/auth/audit-log/client-ip.js +4 -2
- package/dist/auth/audit-log/events.d.ts +5 -1
- package/dist/auth/audit-log/events.d.ts.map +1 -1
- package/dist/auth/audit-log/events.js +1 -1
- package/dist/auth/audit-log/plugin.d.ts +0 -8
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +48 -52
- package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
- package/dist/auth/audit-log-ingestor.js +16 -12
- package/dist/auth/auth-generator.d.ts.map +1 -1
- package/dist/auth/auth-generator.js +1 -1
- package/dist/auth/better-auth-request.d.ts.map +1 -1
- package/dist/auth/better-auth-request.js +6 -5
- package/dist/auth/knex-adapter.js +1 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts +13 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/index.js +1 -1
- package/dist/auth/plugins/wrappers/admin.d.ts +1 -1
- package/dist/bin/build-config.d.ts +25 -0
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +105 -2
- package/dist/bin/cli.js +131 -27
- package/dist/bin/compiler-policy.d.ts +3 -0
- package/dist/bin/compiler-policy.d.ts.map +1 -0
- package/dist/bin/compiler-policy.js +24 -0
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +5 -3
- package/dist/bin/test-command.d.ts +22 -1
- package/dist/bin/test-command.d.ts.map +1 -1
- package/dist/bin/test-command.js +18 -10
- package/dist/bin/ts-loader-registration.d.ts +7 -1
- package/dist/bin/ts-loader-registration.d.ts.map +1 -1
- package/dist/bin/ts-loader-registration.js +13 -4
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/decorator.js +11 -4
- package/dist/compress/compress.d.ts.map +1 -1
- package/dist/compress/compress.js +1 -1
- package/dist/cone/cone-generator.d.ts +14 -1
- package/dist/cone/cone-generator.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +13 -9
- package/dist/database/_batch_update.js +1 -1
- package/dist/database/base-model.d.ts +22 -10
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +26 -16
- package/dist/database/base-model.types.d.ts +15 -3
- package/dist/database/base-model.types.d.ts.map +1 -1
- package/dist/database/db.d.ts +12 -2
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +10 -7
- package/dist/database/knex.d.ts.map +1 -1
- package/dist/database/knex.js +17 -14
- package/dist/database/puri.d.ts +11 -9
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +93 -79
- package/dist/database/puri.types.d.ts +21 -21
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +1 -1
- package/dist/database/upsert-builder.d.ts +12 -10
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +20 -12
- package/dist/dict/sd.d.ts.map +1 -1
- package/dist/dict/sd.js +1 -1
- package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.js +1 -1
- package/dist/dict/utils.d.ts.map +1 -1
- package/dist/dict/utils.js +7 -2
- package/dist/entity/entity-manager.d.ts +13 -4
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +19 -11
- package/dist/entity/entity-template-cone.d.ts +73 -5
- package/dist/entity/entity-template-cone.d.ts.map +1 -1
- package/dist/entity/entity-template-cone.js +4 -2
- package/dist/entity/entity.d.ts +6 -2
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +30 -28
- package/dist/env.d.ts +3 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -1
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +7 -2
- package/dist/exceptions/so-exceptions.d.ts +24 -20
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.js +4 -2
- package/dist/filter/utils.d.ts +7 -2
- package/dist/filter/utils.d.ts.map +1 -1
- package/dist/filter/utils.js +8 -6
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -6
- package/dist/logger/configure.d.ts.map +1 -1
- package/dist/logger/configure.js +10 -10
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +50 -46
- package/dist/migration/index-where-predicate.d.ts.map +1 -1
- package/dist/migration/index-where-predicate.js +22 -8
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +1 -1
- package/dist/migration/migrator.d.ts +3 -2
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +27 -21
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/postgresql-schema-reader.js +51 -36
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +1 -1
- package/dist/naite/naite-reporter.js +2 -2
- package/dist/naite/naite.d.ts +74 -15
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +5 -19
- package/dist/runtime-type.d.ts +6 -0
- package/dist/runtime-type.d.ts.map +1 -0
- package/dist/runtime-type.js +26 -0
- package/dist/ssr/hmr-opt-out.d.ts +26 -0
- package/dist/ssr/hmr-opt-out.d.ts.map +1 -0
- package/dist/ssr/hmr-opt-out.js +59 -0
- package/dist/ssr/renderer.d.ts.map +1 -1
- package/dist/ssr/renderer.js +4 -1
- package/dist/storage/base-file.js +14 -14
- package/dist/storage/buffered-file.d.ts +2 -2
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.js +12 -12
- package/dist/storage/s3-driver.d.ts.map +1 -1
- package/dist/storage/s3-driver.js +1 -1
- package/dist/storage/uploaded-file.d.ts +2 -2
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/storage/uploaded-file.js +8 -8
- package/dist/stream/sse.js +11 -11
- package/dist/stream/ws-core.d.ts +1 -1
- package/dist/stream/ws-core.d.ts.map +1 -1
- package/dist/stream/ws-delivery.d.ts +1 -1
- package/dist/stream/ws-delivery.d.ts.map +1 -1
- package/dist/stream/ws-delivery.js +6 -4
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
- package/dist/stream/ws-local-connection-store.js +4 -2
- package/dist/stream/ws-presence-store.js +1 -1
- package/dist/stream/ws-registry.d.ts +4 -4
- package/dist/stream/ws-registry.d.ts.map +1 -1
- package/dist/stream/ws-registry.js +4 -2
- package/dist/stream/ws-telemetry.d.ts +16 -12
- package/dist/stream/ws-telemetry.d.ts.map +1 -1
- package/dist/stream/ws-telemetry.js +22 -18
- package/dist/stream/ws.d.ts +18 -12
- package/dist/stream/ws.d.ts.map +1 -1
- package/dist/stream/ws.js +26 -22
- package/dist/syncer/api-parser.js +1 -1
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +7 -8
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +13 -14
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +5 -6
- package/dist/syncer/file-copy.d.ts +5 -0
- package/dist/syncer/file-copy.d.ts.map +1 -0
- package/dist/syncer/file-copy.js +36 -0
- package/dist/syncer/file-patterns.d.ts +1 -0
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +5 -2
- package/dist/syncer/file-tracking.d.ts.map +1 -1
- package/dist/syncer/file-tracking.js +5 -4
- package/dist/syncer/filesystem-dependencies.d.ts +15 -0
- package/dist/syncer/filesystem-dependencies.d.ts.map +1 -0
- package/dist/syncer/filesystem-dependencies.js +53 -0
- package/dist/syncer/module-loader.d.ts +1 -1
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +6 -4
- package/dist/syncer/syncer-actions.d.ts +4 -0
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +34 -17
- package/dist/syncer/syncer.d.ts +17 -6
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +71 -29
- package/dist/syncer/watcher.d.ts.map +1 -1
- package/dist/syncer/watcher.js +3 -3
- package/dist/tasks/decorator.d.ts +6 -6
- package/dist/tasks/decorator.d.ts.map +1 -1
- package/dist/tasks/decorator.js +4 -4
- package/dist/tasks/step-wrapper.d.ts +6 -4
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.js +5 -5
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +13 -7
- package/dist/template/entity-converter.d.ts +1 -1
- package/dist/template/entity-converter.d.ts.map +1 -1
- package/dist/template/entity-converter.js +2 -2
- package/dist/template/helpers.d.ts +8 -6
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +1 -1
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +4 -4
- package/dist/template/implementations/generated_http.template.d.ts +7 -4
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +21 -21
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +6 -3
- package/dist/template/implementations/http_validators.template.d.ts +18 -0
- package/dist/template/implementations/http_validators.template.d.ts.map +1 -0
- package/dist/template/implementations/http_validators.template.js +127 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +1 -1
- package/dist/template/implementations/queries.template.js +1 -1
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +79 -39
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +6 -4
- package/dist/template/implementations/view_form.template.d.ts +6 -1
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +23 -15
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +11 -6
- package/dist/template/template-manager.d.ts.map +1 -1
- package/dist/template/template-manager.js +9 -7
- package/dist/template/template-types.d.ts +12 -5
- package/dist/template/template-types.d.ts.map +1 -1
- package/dist/template/template-types.js +1 -1
- package/dist/template/template.d.ts +2 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +6 -4
- package/dist/template/zod-converter.d.ts +0 -19
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +100 -84
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/_relation-graph.js +2 -1
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +9 -6
- package/dist/testing/data-explorer.d.ts +32 -7
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +77 -31
- package/dist/testing/dev-test-routes.d.ts +8 -1
- package/dist/testing/dev-test-routes.d.ts.map +1 -1
- package/dist/testing/dev-test-routes.js +125 -108
- package/dist/testing/dev-vitest-manager.d.ts +54 -8
- package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
- package/dist/testing/dev-vitest-manager.js +24 -9
- package/dist/testing/faker-mappings.d.ts +412 -1
- package/dist/testing/faker-mappings.d.ts.map +1 -1
- package/dist/testing/faker-mappings.js +1 -1
- package/dist/testing/filesystem.d.ts +2 -0
- package/dist/testing/filesystem.d.ts.map +1 -0
- package/dist/testing/filesystem.js +7 -0
- package/dist/testing/fixture-generator.d.ts +25 -8
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +132 -73
- package/dist/testing/fixture-loader.d.ts +3 -1
- package/dist/testing/fixture-loader.d.ts.map +1 -1
- package/dist/testing/fixture-loader.js +1 -20
- package/dist/testing/fixture-manager.d.ts +8 -7
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +91 -59
- package/dist/testing/global-setup.d.ts.map +1 -1
- package/dist/testing/global-setup.js +5 -2
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +6 -3
- package/dist/types/types.d.ts +101 -99
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +234 -225
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +1 -1
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +28 -18
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +135 -128
- package/dist/ui/async-route.d.ts +3 -0
- package/dist/ui/async-route.d.ts.map +1 -0
- package/dist/ui/async-route.js +12 -0
- package/dist/ui/cdd-service.d.ts +9 -7
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +7 -5
- package/dist/ui/migrations-api.d.ts.map +1 -1
- package/dist/ui/migrations-api.js +17 -15
- package/dist/ui-web/assets/index-DV1AAq6W.js +178 -0
- package/dist/ui-web/index.html +1 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +7 -5
- package/dist/utils/fs-utils.d.ts +3 -3
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +6 -6
- package/dist/utils/model.d.ts +3 -5
- package/dist/utils/model.d.ts.map +1 -1
- package/dist/utils/model.js +1 -1
- package/dist/utils/object-utils.d.ts +1 -1
- package/dist/utils/object-utils.d.ts.map +1 -1
- package/dist/utils/object-utils.js +17 -16
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +4 -2
- package/dist/utils/runtime-value.d.ts +13 -0
- package/dist/utils/runtime-value.d.ts.map +1 -0
- package/dist/utils/runtime-value.js +40 -0
- package/dist/utils/sql-parser.d.ts +8 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +6 -3
- package/dist/utils/type-utils.d.ts.map +1 -1
- package/dist/utils/type-utils.js +10 -8
- package/dist/utils/utils.d.ts +2 -2
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +11 -8
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +7 -4
- package/dist/vector/chunking.d.ts.map +1 -1
- package/dist/vector/chunking.js +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/dist/vector/embedding.js +1 -1
- package/dist/vector/types.d.ts +3 -2
- package/dist/vector/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/ai/agents/agent.ts +5 -5
- package/src/ai/agents/types.ts +1 -1
- package/src/ai/providers/rtzr/__tests__/model.test.ts +2 -2
- package/src/ai/providers/rtzr/error.ts +5 -3
- package/src/ai/providers/rtzr/model.ts +3 -2
- package/src/ai/providers/rtzr/options.ts +10 -5
- package/src/ai/providers/rtzr/provider.ts +10 -10
- package/src/ai/providers/rtzr/utils.ts +3 -1
- package/src/api/__tests__/config.test.ts +11 -21
- package/src/api/__tests__/sonamu.http-validator.test.ts +512 -0
- package/src/api/__tests__/sonamu.websocket.test.ts +51 -41
- package/src/api/__tests__/zod-compiler-policy.test.ts +95 -0
- package/src/api/caster.ts +6 -8
- package/src/api/code-converters.ts +136 -36
- package/src/api/config.ts +62 -4
- package/src/api/context.ts +3 -3
- package/src/api/decorators.ts +28 -17
- package/src/api/http-validator.ts +149 -0
- package/src/api/sonamu.ts +459 -152
- package/src/api/websocket-helpers.ts +24 -17
- package/src/auth/audit-log/builders.ts +3 -2
- package/src/auth/audit-log/client-ip.ts +4 -2
- package/src/auth/audit-log/events.ts +15 -1
- package/src/auth/audit-log/plugin.ts +129 -200
- package/src/auth/audit-log-ingestor.ts +19 -15
- package/src/auth/auth-generator.ts +10 -5
- package/src/auth/better-auth-request.ts +4 -3
- package/src/auth/knex-adapter.ts +8 -2
- package/src/auth/plugins/entity-definitions/index.ts +6 -5
- package/src/bin/__tests__/http-validator-benchmark.test.ts +94 -0
- package/src/bin/__tests__/test-command.test.ts +9 -15
- package/src/bin/__tests__/ts-loader-register.test.ts +15 -17
- package/src/bin/__tests__/zod-compiler-build.test.ts +307 -0
- package/src/bin/build-config.ts +167 -0
- package/src/bin/cli.ts +153 -36
- package/src/bin/compiler-policy.ts +35 -0
- package/src/bin/fixture.ts +14 -3
- package/src/bin/test-command.ts +74 -29
- package/src/bin/ts-loader-registration.ts +22 -4
- package/src/cache/decorator.ts +10 -3
- package/src/compress/compress.ts +17 -4
- package/src/cone/cone-generator.ts +34 -6
- package/src/database/__tests__/db.test.ts +1 -0
- package/src/database/__tests__/puri.test.ts +16 -15
- package/src/database/__tests__/transaction-scope.test.ts +5 -0
- package/src/database/_batch_update.ts +1 -0
- package/src/database/base-model.ts +81 -50
- package/src/database/base-model.types.ts +6 -6
- package/src/database/db.ts +29 -19
- package/src/database/knex.ts +30 -17
- package/src/database/puri-subset.test-d.ts +17 -0
- package/src/database/puri.ts +181 -143
- package/src/database/puri.types.test-d.ts +31 -1
- package/src/database/puri.types.ts +23 -21
- package/src/database/upsert-builder.ts +75 -53
- package/src/dict/sd.ts +15 -5
- package/src/dict/sonamu-dictionary.ts +6 -6
- package/src/dict/utils.ts +9 -1
- package/src/entity/entity-manager.ts +26 -9
- package/src/entity/entity-template-cone.ts +5 -10
- package/src/entity/entity.ts +50 -34
- package/src/env.ts +7 -3
- package/src/exceptions/error-handler.ts +17 -2
- package/src/exceptions/so-exceptions.ts +26 -20
- package/src/filter/utils.ts +21 -11
- package/src/index.ts +3 -0
- package/src/logger/configure.ts +26 -18
- package/src/migration/__tests__/migrator.test.ts +50 -57
- package/src/migration/code-generation.ts +132 -104
- package/src/migration/index-where-predicate.ts +51 -24
- package/src/migration/migration-set.ts +11 -5
- package/src/migration/migrator.ts +68 -41
- package/src/migration/postgresql-schema-reader.ts +52 -47
- package/src/migration/slack-confirm.ts +17 -15
- package/src/naite/naite-reporter.ts +1 -1
- package/src/naite/naite.ts +97 -24
- package/src/runtime-type.ts +34 -0
- package/src/ssr/hmr-opt-out.ts +78 -0
- package/src/ssr/renderer.ts +6 -0
- package/src/storage/base-file.ts +13 -13
- package/src/storage/buffered-file.ts +11 -11
- package/src/storage/s3-driver.ts +4 -1
- package/src/storage/uploaded-file.ts +8 -8
- package/src/stream/__tests__/ws-contracts.test.ts +4 -2
- package/src/stream/__tests__/ws-telemetry.test.ts +1 -1
- package/src/stream/__tests__/ws.test.ts +30 -6
- package/src/stream/sse.ts +12 -11
- package/src/stream/ws-core.ts +1 -1
- package/src/stream/ws-delivery.ts +16 -7
- package/src/stream/ws-local-connection-store.ts +2 -3
- package/src/stream/ws-presence-store.ts +6 -1
- package/src/stream/ws-registry.ts +16 -7
- package/src/stream/ws-telemetry.ts +66 -43
- package/src/stream/ws.ts +73 -39
- package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +3 -2
- package/src/syncer/__tests__/http-validator-registry.test.ts +137 -0
- package/src/syncer/api-parser.ts +67 -27
- package/src/syncer/checksum.ts +17 -11
- package/src/syncer/code-generator.ts +25 -17
- package/src/syncer/entity-operations.ts +3 -5
- package/src/syncer/file-copy.ts +46 -0
- package/src/syncer/file-patterns.ts +11 -8
- package/src/syncer/file-tracking.ts +3 -4
- package/src/syncer/filesystem-dependencies.ts +73 -0
- package/src/syncer/module-loader.ts +8 -4
- package/src/syncer/syncer-actions.ts +56 -18
- package/src/syncer/syncer.ts +116 -43
- package/src/syncer/watcher.ts +8 -4
- package/src/tasks/decorator.ts +20 -12
- package/src/tasks/step-wrapper.ts +19 -9
- package/src/tasks/workflow-manager.ts +15 -9
- package/src/template/__tests__/http_validators.template.test.ts +160 -0
- package/src/template/__tests__/services.template.mutation.test.ts +24 -23
- package/src/template/__tests__/services.template.websocket.test.ts +21 -25
- package/src/template/entity-converter.ts +5 -2
- package/src/template/helpers.ts +8 -9
- package/src/template/implementations/generated.template.ts +5 -4
- package/src/template/implementations/generated_http.template.ts +61 -15
- package/src/template/implementations/generated_sso.template.ts +15 -4
- package/src/template/implementations/http_validators.template.ts +175 -0
- package/src/template/implementations/model.template.ts +3 -1
- package/src/template/implementations/sd.template.ts +81 -41
- package/src/template/implementations/services.template.ts +2 -2
- package/src/template/implementations/view_form.template.ts +56 -39
- package/src/template/implementations/view_list.template.ts +31 -23
- package/src/template/template-manager.ts +15 -13
- package/src/template/template-types.ts +13 -5
- package/src/template/template.ts +4 -3
- package/src/template/zod-converter.ts +206 -91
- package/src/testing/__tests__/dev-test-routes.test.ts +85 -25
- package/src/testing/__tests__/dev-vitest-manager.test.ts +15 -15
- package/src/testing/_relation-graph.ts +4 -1
- package/src/testing/bootstrap.ts +12 -5
- package/src/testing/data-explorer.ts +102 -53
- package/src/testing/dev-test-routes.ts +87 -50
- package/src/testing/dev-vitest-manager.ts +88 -32
- package/src/testing/faker-mappings.ts +2 -2
- package/src/testing/filesystem.ts +1 -0
- package/src/testing/fixture-generator.ts +191 -131
- package/src/testing/fixture-loader.ts +5 -1
- package/src/testing/fixture-manager.ts +129 -90
- package/src/testing/global-setup.ts +7 -3
- package/src/testing/index.ts +5 -0
- package/src/types/__tests__/entity-json-schema-search-text.test.ts +9 -3
- package/src/types/types.ts +184 -158
- package/src/ui/ai-api.ts +9 -7
- package/src/ui/ai-client.ts +61 -56
- package/src/ui/api.ts +727 -616
- package/src/ui/async-route.ts +4 -0
- package/src/ui/cdd-service.ts +35 -12
- package/src/ui/migrations-api.ts +63 -51
- package/src/utils/formatter.ts +7 -3
- package/src/utils/fs-utils.ts +5 -5
- package/src/utils/model.ts +4 -5
- package/src/utils/object-utils.ts +32 -22
- package/src/utils/process-utils.ts +4 -1
- package/src/utils/runtime-value.ts +43 -0
- package/src/utils/sql-parser.ts +13 -6
- package/src/utils/type-utils.ts +9 -7
- package/src/utils/utils.ts +19 -21
- package/src/utils/zod-error.ts +4 -2
- package/src/vector/chunking.ts +6 -1
- package/src/vector/embedding.ts +2 -1
- package/src/vector/types.ts +4 -2
- package/tsdown.api.config.ts +5 -2
- package/dist/ui-web/assets/index-C0m1pk6K.js +0 -177
|
@@ -236,4 +236,4 @@ var init_api_parser = __esmMin((() => {
|
|
|
236
236
|
init_api_parser();
|
|
237
237
|
export { init_api_parser, readApisFromFile };
|
|
238
238
|
|
|
239
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXBhcnNlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2FwaS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuXG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmltcG9ydCB7IHJlZ2lzdGVyZWRBcGlzIH0gZnJvbSBcIi4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIEV4dGVuZGVkQXBpIH0gZnJvbSBcIi4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgdmFsaWRhdGVNZXRob2ROYW1lIH0gZnJvbSBcIi4uL2FwaS92YWxpZGF0b3JcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbnR5cGUgV2ViU29ja2V0VHlwZVJlZnMgPSBQaWNrPFxuICBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMsXG4gIFwib3V0RXZlbnRzVHlwZVJlZlwiIHwgXCJpbkV2ZW50c1R5cGVSZWZcIlxuPjtcbnR5cGUgUGFyc2VkTWV0aG9kID0ge1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG4gIHdlYnNvY2tldFR5cGVSZWZzOiBXZWJTb2NrZXRUeXBlUmVmcztcbn07XG5cbi8qKlxuICogVHlwZVNjcmlwdCDtjIzsnbzsnYQg7YyM7Iux7ZWY7JesIEFQSSDrqZTshozrk5wg7KCV67O066W8IOy2lOy2nO2VqeuLiOuLpC5cbiAqIEBhcGkg642w7L2U66CI7J207YSw6rCAIOu2meydgCDrqZTshozrk5zrk6TsnZgg7YOA7J6FIOygleuztOulvCDrtoTshJ3tlanri4jri6QuXG4gKiBAcGFyYW0gZmlsZVBhdGggLSDtjIzsi7HtlaAgVHlwZVNjcmlwdCDtjIzsnbzsnZgg7KCI64yAIOqyveuhnFxuICogQHJldHVybnMgQVBJIOuplOyGjOuTnCDsoJXrs7Qg67Cw7Je0ICjtg4DsnoUg7YyM652866+47YSwLCDtjIzrnbzrr7jthLAsIOumrO2EtCDtg4DsnoUg65OxKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEFwaXNGcm9tRmlsZShmaWxlUGF0aDogQWJzb2x1dGVQYXRoKTogUHJvbWlzZTxFeHRlbmRlZEFwaVtdPiB7XG4gIGlmICghZmlsZVBhdGguZW5kc1dpdGgoXCIudHNcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtmaWxlUGF0aH0gZG9lcyBub3Qgc2VlbSB0byBiZSBhIFR5cGVTY3JpcHQgZmlsZS4gUGxlYXNlIGNoZWNrIHRoZSBmaWxlIHBhdGguIFdlIG9ubHkgc3VwcG9ydCBwYXJzaW5nIFR5cGVTY3JpcHQgZmlsZXMuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgZmlsZVBhdGgsXG4gICAgKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoKSkudG9TdHJpbmcoKSxcbiAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICApO1xuXG4gIGNvbnN0IG1ldGhvZHM6IFBhcnNlZE1ldGhvZFtdID0gW107XG4gIGxldCBtb2RlbE5hbWU6IHN0cmluZyA9IFwiVW5rbm93bk1vZGVsXCI7XG4gIGxldCBtZXRob2ROYW1lOiBzdHJpbmcgPSBcInVua25vd25NZXRob2RcIjtcbiAgY29uc3QgdmlzaXRvciA9IChub2RlOiB0cy5Ob2RlKSA9PiB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgaWYgKG5vZGUubmFtZSAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgICAgICBtb2RlbE5hbWUgPSBub2RlLm5hbWUuZXNjYXBlZFRleHQudG9TdHJpbmcoKS5yZXBsYWNlKC9DbGFzcyQvLCBcIlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRzLmlzTWV0aG9kRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgICAgICBtZXRob2ROYW1lID0gbm9kZS5uYW1lLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCk7XG4gICAgICAgIHZhbGlkYXRlTWV0aG9kTmFtZShtZXRob2ROYW1lKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnM6IEFwaVBhcmFtVHlwZS5UeXBlUGFyYW1bXSA9IChub2RlLnR5cGVQYXJhbWV0ZXJzID8/IFtdKS5tYXAoXG4gICAgICAgICh0eXBlUGFyYW0pID0+IHtcbiAgICAgICAgICBjb25zdCB0cCA9IHR5cGVQYXJhbTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0OiBcInR5cGUtcGFyYW1cIixcbiAgICAgICAgICAgIGlkOiB0cC5uYW1lLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBjb25zdHJhaW50OiB0cC5jb25zdHJhaW50ID8gcmVzb2x2ZVR5cGVOb2RlKHRwLmNvbnN0cmFpbnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY29uc3QgcGFyYW1ldGVyczogQXBpUGFyYW1bXSA9IG5vZGUucGFyYW1ldGVycy5tYXAoKHBhcmFtRGVjLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0RGVmID0gcHJpbnROb2RlKHBhcmFtRGVjLmluaXRpYWxpemVyLCBzb3VyY2VGaWxlKTtcblxuICAgICAgICAvLyDquLDrs7jqsJLsnbQg7J6I64qUIOqyveyasCBwYXJhbURlYy50eXBl6rCAIHVuZGVmaW5lZOuhnCDrgpjsmLRcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZVBhcmFtRGVjKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtRGVjLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiBwYXJhbURlYy50eXBlIGFzIHRzLlR5cGVOb2RlLFxuICAgICAgICAgICAgb3B0aW9uYWw6IHBhcmFtRGVjLnF1ZXN0aW9uVG9rZW4gIT09IHVuZGVmaW5lZCB8fCBwYXJhbURlYy5pbml0aWFsaXplciAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVmYXVsdERlZixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAobm9kZS50eXBlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGDrpqzthLQg7YOA7J6F7J20IOq4sOyerOuQmOyngCDslYrsnYAg66mU7IaM65OcICR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCByZXR1cm5UeXBlID0gcmVzb2x2ZVR5cGVOb2RlKG5vZGUudHlwZSk7XG4gICAgICBjb25zdCB3ZWJzb2NrZXRUeXBlUmVmcyA9IHJlYWRXZWJTb2NrZXRUeXBlUmVmcyhub2RlKTtcblxuICAgICAgbWV0aG9kcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICB0eXBlUGFyYW1ldGVycyxcbiAgICAgICAgcGFyYW1ldGVycyxcbiAgICAgICAgcmV0dXJuVHlwZSxcbiAgICAgICAgd2Vic29ja2V0VHlwZVJlZnMsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIHZpc2l0b3IpO1xuICB9O1xuICB2aXNpdG9yKHNvdXJjZUZpbGUpO1xuXG4gIGlmIChtZXRob2RzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIO2YhOyerCDtjIzsnbzsnZgg65Ox66Gd65CcIEFQSSDtlYTthLBcbiAgY29uc3QgY3VycmVudE1vZGVsQXBpcyA9IHJlZ2lzdGVyZWRBcGlzLmZpbHRlcigoYXBpKSA9PiB7XG4gICAgcmV0dXJuIG1ldGhvZHMuZmluZChcbiAgICAgIChtZXRob2QpID0+IG1ldGhvZC5tb2RlbE5hbWUgPT09IGFwaS5tb2RlbE5hbWUgJiYgbWV0aG9kLm1ldGhvZE5hbWUgPT09IGFwaS5tZXRob2ROYW1lLFxuICAgICk7XG4gIH0pO1xuICBpZiAoY3VycmVudE1vZGVsQXBpcy5sZW5ndGggPT09IDApIHtcbiAgICAvLyBjb25zdCBwID0gcGF0aC5qb2luKHRtcGRpcigpLCBcInNvbmFtdS1zeW5jZXItZXJyb3IuanNvblwiKTtcbiAgICAvLyB3cml0ZUZpbGVTeW5jKHAsIEpTT04uc3RyaW5naWZ5KHJlZ2lzdGVyZWRBcGlzLCBudWxsLCAyKSk7XG4gICAgLy8gZXhlY1N5bmMoYG9wZW4gJHtwfWApO1xuICAgIC8vIHRocm93IG5ldyBFcnJvcihg7ZiE7J6sIO2MjOydvOyXkCDsgqzsoIQg65Ox66Gd65CcIEFQSeqwgCDsl4bsirXri4jri6QuICR7ZmlsZVBhdGh9YCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8g65Ox66Gd65CcIEFQSeyXkCDtmITsnqwg66mU7IaM65OcIO2DgOyehSDsoJXrs7Qg7ZmV7J6lXG4gIGNvbnN0IGV4dGVuZGVkQXBpcyA9IGN1cnJlbnRNb2RlbEFwaXMubWFwKChhcGkpID0+IHtcbiAgICBjb25zdCBmb3VuZE1ldGhvZCA9IG1ldGhvZHMuZmluZChcbiAgICAgIChtZXRob2QpID0+IG1ldGhvZC5tb2RlbE5hbWUgPT09IGFwaS5tb2RlbE5hbWUgJiYgbWV0aG9kLm1ldGhvZE5hbWUgPT09IGFwaS5tZXRob2ROYW1lLFxuICAgICk7XG4gICAgaWYgKCFmb3VuZE1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBBUEkgJHthcGkubW9kZWxOYW1lfS4ke2FwaS5tZXRob2ROYW1lfSBub3QgZm91bmQgaW4gJHtmaWxlUGF0aH1gKTtcbiAgICB9XG4gICAgY29uc3Qgd2Vic29ja2V0T3B0aW9ucyA9IGFwaS53ZWJzb2NrZXRPcHRpb25zXG4gICAgICA/IHtcbiAgICAgICAgICAuLi5hcGkud2Vic29ja2V0T3B0aW9ucyxcbiAgICAgICAgICAuLi5mb3VuZE1ldGhvZC53ZWJzb2NrZXRUeXBlUmVmcyxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYXBpLFxuICAgICAgd2Vic29ja2V0T3B0aW9ucyxcbiAgICAgIHR5cGVQYXJhbWV0ZXJzOiBmb3VuZE1ldGhvZD8udHlwZVBhcmFtZXRlcnMsXG4gICAgICBwYXJhbWV0ZXJzOiBmb3VuZE1ldGhvZD8ucGFyYW1ldGVycyxcbiAgICAgIHJldHVyblR5cGU6IGZvdW5kTWV0aG9kPy5yZXR1cm5UeXBlLFxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gZXh0ZW5kZWRBcGlzO1xufVxuXG5mdW5jdGlvbiByZWFkV2ViU29ja2V0VHlwZVJlZnMobm9kZTogdHMuTWV0aG9kRGVjbGFyYXRpb24pOiBXZWJTb2NrZXRUeXBlUmVmcyB7XG4gIGNvbnN0IG9wdGlvbnNMaXRlcmFsID0gZ2V0RGVjb3JhdG9yT3B0aW9uc09iamVjdExpdGVyYWwobm9kZSwgXCJ3ZWJzb2NrZXRcIik7XG4gIGlmICghb3B0aW9uc0xpdGVyYWwpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCByZWZzOiBXZWJTb2NrZXRUeXBlUmVmcyA9IHt9O1xuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIG9wdGlvbnNMaXRlcmFsLnByb3BlcnRpZXMpIHtcbiAgICBpZiAoIXRzLmlzUHJvcGVydHlBc3NpZ25tZW50KHByb3BlcnR5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcGVydHlOYW1lID0gZ2V0UHJvcGVydHlOYW1lVGV4dChwcm9wZXJ0eS5uYW1lKTtcbiAgICBpZiAocHJvcGVydHlOYW1lICE9PSBcIm91dEV2ZW50c1wiICYmIHByb3BlcnR5TmFtZSAhPT0gXCJpbkV2ZW50c1wiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlUmVmID0gcmVzb2x2ZURlY29yYXRvclR5cGVSZWYocHJvcGVydHkuaW5pdGlhbGl6ZXIpO1xuICAgIGlmICghdHlwZVJlZikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PT0gXCJvdXRFdmVudHNcIikge1xuICAgICAgcmVmcy5vdXRFdmVudHNUeXBlUmVmID0gdHlwZVJlZjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVmcy5pbkV2ZW50c1R5cGVSZWYgPSB0eXBlUmVmO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWZzO1xufVxuXG5mdW5jdGlvbiBnZXREZWNvcmF0b3JPcHRpb25zT2JqZWN0TGl0ZXJhbChcbiAgbm9kZTogdHMuTWV0aG9kRGVjbGFyYXRpb24sXG4gIGRlY29yYXRvck5hbWU6IHN0cmluZyxcbik6IHRzLk9iamVjdExpdGVyYWxFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBtb2RpZmllciBvZiBub2RlLm1vZGlmaWVycyA/PyBbXSkge1xuICAgIGlmICghdHMuaXNEZWNvcmF0b3IobW9kaWZpZXIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHByZXNzaW9uID0gbW9kaWZpZXIuZXhwcmVzc2lvbjtcbiAgICBpZiAoIXRzLmlzQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKGV4cHJlc3Npb24uZXhwcmVzc2lvbikgfHwgZXhwcmVzc2lvbi5leHByZXNzaW9uLnRleHQgIT09IGRlY29yYXRvck5hbWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IFtmaXJzdEFyZ10gPSBleHByZXNzaW9uLmFyZ3VtZW50cztcbiAgICBpZiAoZmlyc3RBcmcgJiYgdHMuaXNPYmplY3RMaXRlcmFsRXhwcmVzc2lvbihmaXJzdEFyZykpIHtcbiAgICAgIHJldHVybiBmaXJzdEFyZztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWVUZXh0KG5hbWU6IHRzLlByb3BlcnR5TmFtZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIobmFtZSkgfHwgdHMuaXNTdHJpbmdMaXRlcmFsKG5hbWUpIHx8IHRzLmlzTnVtZXJpY0xpdGVyYWwobmFtZSkpIHtcbiAgICByZXR1cm4gbmFtZS50ZXh0O1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURlY29yYXRvclR5cGVSZWYoZXhwcmVzc2lvbjogdHMuRXhwcmVzc2lvbik6IEFwaVBhcmFtVHlwZS5SZWYgfCB1bmRlZmluZWQge1xuICBpZiAodHMuaXNJZGVudGlmaWVyKGV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHQ6IFwicmVmXCIsXG4gICAgICBpZDogZXhwcmVzc2lvbi50ZXh0LFxuICAgIH07XG4gIH1cblxuICBpZiAoXG4gICAgdHMuaXNBc0V4cHJlc3Npb24oZXhwcmVzc2lvbikgfHxcbiAgICB0cy5pc1BhcmVudGhlc2l6ZWRFeHByZXNzaW9uKGV4cHJlc3Npb24pIHx8XG4gICAgdHMuaXNOb25OdWxsRXhwcmVzc2lvbihleHByZXNzaW9uKSB8fFxuICAgIHRzLmlzVHlwZUFzc2VydGlvbkV4cHJlc3Npb24oZXhwcmVzc2lvbilcbiAgKSB7XG4gICAgcmV0dXJuIHJlc29sdmVEZWNvcmF0b3JUeXBlUmVmKGV4cHJlc3Npb24uZXhwcmVzc2lvbik7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlVHlwZU5vZGUodHlwZU5vZGU6IHRzLlR5cGVOb2RlKTogQXBpUGFyYW1UeXBlIHtcbiAgc3dpdGNoICh0eXBlTm9kZT8ua2luZCkge1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5BbnlLZXl3b3JkOlxuICAgICAgcmV0dXJuIFwiYW55XCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlVua25vd25LZXl3b3JkOlxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5TdHJpbmdLZXl3b3JkOlxuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLk51bWJlcktleXdvcmQ6XG4gICAgICByZXR1cm4gXCJudW1iZXJcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuQm9vbGVhbktleXdvcmQ6XG4gICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlVuZGVmaW5lZEtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVsbEtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlZvaWRLZXl3b3JkOlxuICAgICAgcmV0dXJuIFwidm9pZFwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5MaXRlcmFsVHlwZToge1xuICAgICAgY29uc3QgbGl0ZXJhbCA9ICh0eXBlTm9kZSBhcyB0cy5MaXRlcmFsVHlwZU5vZGUpLmxpdGVyYWw7XG4gICAgICBpZiAodHMuaXNTdHJpbmdMaXRlcmFsKGxpdGVyYWwpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdDogXCJzdHJpbmctbGl0ZXJhbFwiLFxuICAgICAgICAgIHZhbHVlOiBsaXRlcmFsLnRleHQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKHRzLmlzTnVtZXJpY0xpdGVyYWwobGl0ZXJhbCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0OiBcIm51bWVyaWMtbGl0ZXJhbFwiLFxuICAgICAgICAgIHZhbHVlOiBOdW1iZXIobGl0ZXJhbC50ZXh0KSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuTnVsbEtleXdvcmQpIHtcbiAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgIH0gZWxzZSBpZiAobGl0ZXJhbC5raW5kID09PSB0cy5TeW50YXhLaW5kLlVuZGVmaW5lZEtleXdvcmQpIHtcbiAgICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIjtcbiAgICAgICAgfSBlbHNlIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVHJ1ZUtleXdvcmQpIHtcbiAgICAgICAgICByZXR1cm4gXCJ0cnVlXCI7XG4gICAgICAgIH0gZWxzZSBpZiAobGl0ZXJhbC5raW5kID09PSB0cy5TeW50YXhLaW5kLkZhbHNlS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcImZhbHNlXCI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwi7JWMIOyImCDsl4bripQg66as7YSw65+0XCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuQXJyYXlUeXBlOiB7XG4gICAgICBjb25zdCBhcnJOb2RlID0gdHlwZU5vZGUgYXMgdHMuQXJyYXlUeXBlTm9kZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwiYXJyYXlcIixcbiAgICAgICAgZWxlbWVudHNUeXBlOiByZXNvbHZlVHlwZU5vZGUoYXJyTm9kZS5lbGVtZW50VHlwZSksXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVHlwZUxpdGVyYWw6IHtcbiAgICAgIGNvbnN0IGxpdGVyYWxOb2RlID0gdHlwZU5vZGUgYXMgdHMuVHlwZUxpdGVyYWxOb2RlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJvYmplY3RcIixcbiAgICAgICAgcHJvcHM6IGxpdGVyYWxOb2RlLm1lbWJlcnMubWFwKChtZW1iZXIpID0+IHtcbiAgICAgICAgICBpZiAodHMuaXNJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG1lbWJlcikpIHtcbiAgICAgICAgICAgIGFzc2VydChtZW1iZXIucGFyYW1ldGVyc1swXSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSByZXNvbHZlUGFyYW1EZWMoe1xuICAgICAgICAgICAgICBuYW1lOiBtZW1iZXIucGFyYW1ldGVyc1swXS5uYW1lIGFzIHRzLklkZW50aWZpZXIsXG4gICAgICAgICAgICAgIHR5cGU6IG1lbWJlci5wYXJhbWV0ZXJzWzBdLnR5cGUgYXMgdHMuVHlwZU5vZGUsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVQYXJhbURlYyh7XG4gICAgICAgICAgICAgIG5hbWU6IHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkVGV4dDogYFske3Jlcy5uYW1lfSR7cmVzLm9wdGlvbmFsID8gXCI/XCIgOiBcIlwifTogJHtyZXMudHlwZX1dYCxcbiAgICAgICAgICAgICAgfSBhcyB0cy5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICB0eXBlOiBtZW1iZXIudHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVBhcmFtRGVjKHtcbiAgICAgICAgICAgICAgbmFtZTogKG1lbWJlciBhcyB0cy5Qcm9wZXJ0eVNpZ25hdHVyZSkubmFtZSBhcyB0cy5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICB0eXBlOiAobWVtYmVyIGFzIHRzLlByb3BlcnR5U2lnbmF0dXJlKS50eXBlIGFzIHRzLlR5cGVOb2RlLFxuICAgICAgICAgICAgICBvcHRpb25hbDogKG1lbWJlciBhcyB0cy5Qcm9wZXJ0eVNpZ25hdHVyZSkucXVlc3Rpb25Ub2tlbiAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5UeXBlUmVmZXJlbmNlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJyZWZcIixcbiAgICAgICAgaWQ6ICgodHlwZU5vZGUgYXMgdHMuVHlwZVJlZmVyZW5jZU5vZGUpLnR5cGVOYW1lIGFzIHRzLklkZW50aWZpZXIpLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCksXG4gICAgICAgIGFyZ3M6ICh0eXBlTm9kZSBhcyB0cy5UeXBlUmVmZXJlbmNlTm9kZSkudHlwZUFyZ3VtZW50cz8ubWFwKCh0eXBlQXJnKSA9PlxuICAgICAgICAgIHJlc29sdmVUeXBlTm9kZSh0eXBlQXJnKSxcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlVuaW9uVHlwZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwidW5pb25cIixcbiAgICAgICAgdHlwZXM6ICh0eXBlTm9kZSBhcyB0cy5VbmlvblR5cGVOb2RlKS50eXBlcy5tYXAoKHR5cGUpID0+IHJlc29sdmVUeXBlTm9kZSh0eXBlKSksXG4gICAgICB9O1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5JbnRlcnNlY3Rpb25UeXBlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJpbnRlcnNlY3Rpb25cIixcbiAgICAgICAgdHlwZXM6ICh0eXBlTm9kZSBhcyB0cy5JbnRlcnNlY3Rpb25UeXBlTm9kZSkudHlwZXMubWFwKCh0eXBlKSA9PiByZXNvbHZlVHlwZU5vZGUodHlwZSkpLFxuICAgICAgfTtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuSW5kZXhlZEFjY2Vzc1R5cGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcImluZGV4ZWQtYWNjZXNzXCIsXG4gICAgICAgIG9iamVjdDogcmVzb2x2ZVR5cGVOb2RlKCh0eXBlTm9kZSBhcyB0cy5JbmRleGVkQWNjZXNzVHlwZU5vZGUpLm9iamVjdFR5cGUpLFxuICAgICAgICBpbmRleDogcmVzb2x2ZVR5cGVOb2RlKCh0eXBlTm9kZSBhcyB0cy5JbmRleGVkQWNjZXNzVHlwZU5vZGUpLmluZGV4VHlwZSksXG4gICAgICB9O1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5UdXBsZVR5cGU6XG4gICAgICBpZiAodHMuaXNUdXBsZVR5cGVOb2RlKHR5cGVOb2RlKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHQ6IFwidHVwbGUtdHlwZVwiLFxuICAgICAgICAgIGVsZW1lbnRzOiB0eXBlTm9kZS5lbGVtZW50cy5tYXAoKGVsZW0pID0+IHJlc29sdmVUeXBlTm9kZShlbGVtKSksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuUGFyZW50aGVzaXplZFR5cGU6XG4gICAgICAvLyDqtITtmLjroZwg66y27J24IO2DgOyehSAo7JiIOiAoQSAmIEIpW10g7JeQ7IScIChBICYgQikpXG4gICAgICAvLyDrgrTrtoAg7YOA7J6F7J2EIOyerOq3gOyggeycvOuhnCByZXNvbHZlXG4gICAgICByZXR1cm4gcmVzb2x2ZVR5cGVOb2RlKCh0eXBlTm9kZSBhcyB0cy5QYXJlbnRoZXNpemVkVHlwZU5vZGUpLnR5cGUpO1xuXG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkZ1bmN0aW9uVHlwZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwiZnVuY3Rpb25cIixcbiAgICAgICAgcGFyYW1ldGVyczogKHR5cGVOb2RlIGFzIHRzLkZ1bmN0aW9uVHlwZU5vZGUpLnBhcmFtZXRlcnMubWFwKChwYXJhbSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBwYXJhbS5uYW1lLmdldFRleHQoKSxcbiAgICAgICAgICB0eXBlOiBwYXJhbS50eXBlID8gcmVzb2x2ZVR5cGVOb2RlKHBhcmFtLnR5cGUpIDogXCJ1bmtub3duXCIsXG4gICAgICAgICAgb3B0aW9uYWw6IHBhcmFtLnF1ZXN0aW9uVG9rZW4gIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICBkZWZhdWx0RGVmOiB1bmRlZmluZWQsXG4gICAgICAgIH0pKSxcbiAgICAgICAgcmV0dXJuVHlwZTogcmVzb2x2ZVR5cGVOb2RlKCh0eXBlTm9kZSBhcyB0cy5GdW5jdGlvblR5cGVOb2RlKS50eXBlKSxcbiAgICAgIH07XG4gICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHR5cGVOb2RlIHVuZGVmaW5lZGApO1xuICB9XG5cbiAgY29uc29sZS5kZWJ1Zyh0eXBlTm9kZSk7XG4gIHRocm93IG5ldyBFcnJvcihg7JWMIOyImCDsl4bripQgU3ludGF4S2luZCAke3R5cGVOb2RlLmtpbmR9YCk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQYXJhbURlYyhcbiAgcGFyYW1EZWM6IHtcbiAgICBuYW1lOiB0cy5CaW5kaW5nTmFtZTtcbiAgICB0eXBlOiB0cy5UeXBlTm9kZTtcbiAgICBvcHRpb25hbD86IGJvb2xlYW47XG4gICAgZGVmYXVsdERlZj86IHN0cmluZztcbiAgfSxcbiAgaW5kZXg6IG51bWJlciA9IDAsXG4pOiBBcGlQYXJhbSB7XG4gIGNvbnN0IG5hbWUgPSBwYXJhbURlYy5uYW1lIGFzIHRzLklkZW50aWZpZXI7XG4gIGNvbnN0IHR5cGUgPSByZXNvbHZlVHlwZU5vZGUocGFyYW1EZWMudHlwZSk7XG5cbiAgaWYgKG5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnNvbGUuZGVidWcoeyBuYW1lLCB0eXBlLCBwYXJhbURlYyB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogQXBpUGFyYW0gPSB7XG4gICAgbmFtZTogbmFtZS5lc2NhcGVkVGV4dCA/IG5hbWUuZXNjYXBlZFRleHQudG9TdHJpbmcoKSA6IGBub25hbWVBdCR7aW5kZXh9YCxcbiAgICB0eXBlLFxuICAgIG9wdGlvbmFsOiBwYXJhbURlYy5vcHRpb25hbCA9PT0gdHJ1ZSxcbiAgICBkZWZhdWx0RGVmOiBwYXJhbURlYz8uZGVmYXVsdERlZixcbiAgfTtcblxuICAvLyDqtazsobDrtoTtlbTtlaDri7nsnZgg6rK97JqwIO2DgOyeheydtOumhCDsgqzsmqlcbiAgaWYgKFxuICAgIHRzLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4obmFtZSkgJiZcbiAgICB0cy5pc1R5cGVSZWZlcmVuY2VOb2RlKHBhcmFtRGVjLnR5cGUpICYmXG4gICAgdHMuaXNJZGVudGlmaWVyKHBhcmFtRGVjLnR5cGUudHlwZU5hbWUpXG4gICkge1xuICAgIHJlc3VsdC5uYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShwYXJhbURlYy50eXBlLnR5cGVOYW1lLnRleHQsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcHJpbnROb2RlKG5vZGU6IHRzLk5vZGUgfCB1bmRlZmluZWQsIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKHsgbmV3TGluZTogdHMuTmV3TGluZUtpbmQuTGluZUZlZWQgfSk7XG4gIHJldHVybiBwcmludGVyLnByaW50Tm9kZSh0cy5FbWl0SGludC5VbnNwZWNpZmllZCwgbm9kZSwgc291cmNlRmlsZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBZ0NBLGVBQXNCLGlCQUFpQixVQUFnRDtDQUNyRixJQUFJLENBQUMsU0FBUyxTQUFTLEtBQUssR0FDMUIsTUFBTSxJQUFJLE1BQ1IsR0FB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
|
|
239
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXBhcnNlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2FwaS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJmcy9wcm9taXNlc1wiO1xuXG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmltcG9ydCB7IHJlZ2lzdGVyZWRBcGlzIH0gZnJvbSBcIi4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIEV4dGVuZGVkQXBpIH0gZnJvbSBcIi4uL2FwaS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyB0eXBlIFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyB9IGZyb20gXCIuLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgdmFsaWRhdGVNZXRob2ROYW1lIH0gZnJvbSBcIi4uL2FwaS92YWxpZGF0b3JcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbnR5cGUgV2ViU29ja2V0VHlwZVJlZnMgPSBQaWNrPFxuICBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMsXG4gIFwib3V0RXZlbnRzVHlwZVJlZlwiIHwgXCJpbkV2ZW50c1R5cGVSZWZcIlxuPjtcbnR5cGUgUGFyc2VkTWV0aG9kID0ge1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG4gIHdlYnNvY2tldFR5cGVSZWZzOiBXZWJTb2NrZXRUeXBlUmVmcztcbn07XG5cbi8qKlxuICogVHlwZVNjcmlwdCDtjIzsnbzsnYQg7YyM7Iux7ZWY7JesIEFQSSDrqZTshozrk5wg7KCV67O066W8IOy2lOy2nO2VqeuLiOuLpC5cbiAqIEBhcGkg642w7L2U66CI7J207YSw6rCAIOu2meydgCDrqZTshozrk5zrk6TsnZgg7YOA7J6FIOygleuztOulvCDrtoTshJ3tlanri4jri6QuXG4gKiBAcGFyYW0gZmlsZVBhdGggLSDtjIzsi7HtlaAgVHlwZVNjcmlwdCDtjIzsnbzsnZgg7KCI64yAIOqyveuhnFxuICogQHJldHVybnMgQVBJIOuplOyGjOuTnCDsoJXrs7Qg67Cw7Je0ICjtg4DsnoUg7YyM652866+47YSwLCDtjIzrnbzrr7jthLAsIOumrO2EtCDtg4DsnoUg65OxKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEFwaXNGcm9tRmlsZShmaWxlUGF0aDogQWJzb2x1dGVQYXRoKTogUHJvbWlzZTxFeHRlbmRlZEFwaVtdPiB7XG4gIGlmICghZmlsZVBhdGguZW5kc1dpdGgoXCIudHNcIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtmaWxlUGF0aH0gZG9lcyBub3Qgc2VlbSB0byBiZSBhIFR5cGVTY3JpcHQgZmlsZS4gUGxlYXNlIGNoZWNrIHRoZSBmaWxlIHBhdGguIFdlIG9ubHkgc3VwcG9ydCBwYXJzaW5nIFR5cGVTY3JpcHQgZmlsZXMuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgZmlsZVBhdGgsXG4gICAgKGF3YWl0IHJlYWRGaWxlKGZpbGVQYXRoKSkudG9TdHJpbmcoKSxcbiAgICB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LFxuICApO1xuXG4gIGNvbnN0IG1ldGhvZHM6IFBhcnNlZE1ldGhvZFtdID0gW107XG4gIGxldCBtb2RlbE5hbWU6IHN0cmluZyA9IFwiVW5rbm93bk1vZGVsXCI7XG4gIGxldCBtZXRob2ROYW1lOiBzdHJpbmcgPSBcInVua25vd25NZXRob2RcIjtcbiAgY29uc3QgdmlzaXRvciA9IChub2RlOiB0cy5Ob2RlKSA9PiB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgaWYgKG5vZGUubmFtZSAmJiB0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgICAgICBtb2RlbE5hbWUgPSBub2RlLm5hbWUuZXNjYXBlZFRleHQudG9TdHJpbmcoKS5yZXBsYWNlKC9DbGFzcyQvLCBcIlwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRzLmlzTWV0aG9kRGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIGlmICh0cy5pc0lkZW50aWZpZXIobm9kZS5uYW1lKSkge1xuICAgICAgICBtZXRob2ROYW1lID0gbm9kZS5uYW1lLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCk7XG4gICAgICAgIHZhbGlkYXRlTWV0aG9kTmFtZShtZXRob2ROYW1lKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnM6IEFwaVBhcmFtVHlwZS5UeXBlUGFyYW1bXSA9IChub2RlLnR5cGVQYXJhbWV0ZXJzID8/IFtdKS5tYXAoXG4gICAgICAgICh0eXBlUGFyYW0pID0+IHtcbiAgICAgICAgICBjb25zdCB0cCA9IHR5cGVQYXJhbTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0OiBcInR5cGUtcGFyYW1cIixcbiAgICAgICAgICAgIGlkOiB0cC5uYW1lLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCksXG4gICAgICAgICAgICBjb25zdHJhaW50OiB0cC5jb25zdHJhaW50ID8gcmVzb2x2ZVR5cGVOb2RlKHRwLmNvbnN0cmFpbnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgICAgY29uc3QgcGFyYW1ldGVyczogQXBpUGFyYW1bXSA9IG5vZGUucGFyYW1ldGVycy5tYXAoKHBhcmFtRGVjLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0RGVmID0gcHJpbnROb2RlKHBhcmFtRGVjLmluaXRpYWxpemVyLCBzb3VyY2VGaWxlKTtcblxuICAgICAgICAvLyDquLDrs7jqsJLsnbQg7J6I64qUIOqyveyasCBwYXJhbURlYy50eXBl6rCAIHVuZGVmaW5lZOuhnCDrgpjsmLRcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZVBhcmFtRGVjKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtRGVjLm5hbWUsXG4gICAgICAgICAgICB0eXBlOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHBhcmFtRGVjLnR5cGUgYXMgdHMuVHlwZU5vZGUsXG4gICAgICAgICAgICBvcHRpb25hbDogcGFyYW1EZWMucXVlc3Rpb25Ub2tlbiAhPT0gdW5kZWZpbmVkIHx8IHBhcmFtRGVjLmluaXRpYWxpemVyICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICBkZWZhdWx0RGVmLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGlmIChub2RlLnR5cGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYOumrO2EtCDtg4DsnoXsnbQg6riw7J6s65CY7KeAIOyViuydgCDrqZTshozrk5wgJHttb2RlbE5hbWV9LiR7bWV0aG9kTmFtZX1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJldHVyblR5cGUgPSByZXNvbHZlVHlwZU5vZGUobm9kZS50eXBlKTtcbiAgICAgIGNvbnN0IHdlYnNvY2tldFR5cGVSZWZzID0gcmVhZFdlYlNvY2tldFR5cGVSZWZzKG5vZGUpO1xuXG4gICAgICBtZXRob2RzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHR5cGVQYXJhbWV0ZXJzLFxuICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgICByZXR1cm5UeXBlLFxuICAgICAgICB3ZWJzb2NrZXRUeXBlUmVmcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgdmlzaXRvcik7XG4gIH07XG4gIHZpc2l0b3Ioc291cmNlRmlsZSk7XG5cbiAgaWYgKG1ldGhvZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8g7ZiE7J6sIO2MjOydvOydmCDrk7HroZ3rkJwgQVBJIO2VhO2EsFxuICBjb25zdCBjdXJyZW50TW9kZWxBcGlzID0gcmVnaXN0ZXJlZEFwaXMuZmlsdGVyKChhcGkpID0+IHtcbiAgICByZXR1cm4gbWV0aG9kcy5maW5kKFxuICAgICAgKG1ldGhvZCkgPT4gbWV0aG9kLm1vZGVsTmFtZSA9PT0gYXBpLm1vZGVsTmFtZSAmJiBtZXRob2QubWV0aG9kTmFtZSA9PT0gYXBpLm1ldGhvZE5hbWUsXG4gICAgKTtcbiAgfSk7XG4gIGlmIChjdXJyZW50TW9kZWxBcGlzLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIGNvbnN0IHAgPSBwYXRoLmpvaW4odG1wZGlyKCksIFwic29uYW11LXN5bmNlci1lcnJvci5qc29uXCIpO1xuICAgIC8vIHdyaXRlRmlsZVN5bmMocCwgSlNPTi5zdHJpbmdpZnkocmVnaXN0ZXJlZEFwaXMsIG51bGwsIDIpKTtcbiAgICAvLyBleGVjU3luYyhgb3BlbiAke3B9YCk7XG4gICAgLy8gdGhyb3cgbmV3IEVycm9yKGDtmITsnqwg7YyM7J287JeQIOyCrOyghCDrk7HroZ3rkJwgQVBJ6rCAIOyXhuyKteuLiOuLpC4gJHtmaWxlUGF0aH1gKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyDrk7HroZ3rkJwgQVBJ7JeQIO2YhOyerCDrqZTshozrk5wg7YOA7J6FIOygleuztCDtmZXsnqVcbiAgY29uc3QgZXh0ZW5kZWRBcGlzID0gY3VycmVudE1vZGVsQXBpcy5tYXAoKGFwaSkgPT4ge1xuICAgIGNvbnN0IGZvdW5kTWV0aG9kID0gbWV0aG9kcy5maW5kKFxuICAgICAgKG1ldGhvZCkgPT4gbWV0aG9kLm1vZGVsTmFtZSA9PT0gYXBpLm1vZGVsTmFtZSAmJiBtZXRob2QubWV0aG9kTmFtZSA9PT0gYXBpLm1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoIWZvdW5kTWV0aG9kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFQSSAke2FwaS5tb2RlbE5hbWV9LiR7YXBpLm1ldGhvZE5hbWV9IG5vdCBmb3VuZCBpbiAke2ZpbGVQYXRofWApO1xuICAgIH1cbiAgICBjb25zdCB3ZWJzb2NrZXRPcHRpb25zID0gYXBpLndlYnNvY2tldE9wdGlvbnNcbiAgICAgID8ge1xuICAgICAgICAgIC4uLmFwaS53ZWJzb2NrZXRPcHRpb25zLFxuICAgICAgICAgIC4uLmZvdW5kTWV0aG9kLndlYnNvY2tldFR5cGVSZWZzLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hcGksXG4gICAgICB3ZWJzb2NrZXRPcHRpb25zLFxuICAgICAgdHlwZVBhcmFtZXRlcnM6IGZvdW5kTWV0aG9kPy50eXBlUGFyYW1ldGVycyxcbiAgICAgIHBhcmFtZXRlcnM6IGZvdW5kTWV0aG9kPy5wYXJhbWV0ZXJzLFxuICAgICAgcmV0dXJuVHlwZTogZm91bmRNZXRob2Q/LnJldHVyblR5cGUsXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiBleHRlbmRlZEFwaXM7XG59XG5cbmZ1bmN0aW9uIHJlYWRXZWJTb2NrZXRUeXBlUmVmcyhub2RlOiB0cy5NZXRob2REZWNsYXJhdGlvbik6IFdlYlNvY2tldFR5cGVSZWZzIHtcbiAgY29uc3Qgb3B0aW9uc0xpdGVyYWwgPSBnZXREZWNvcmF0b3JPcHRpb25zT2JqZWN0TGl0ZXJhbChub2RlLCBcIndlYnNvY2tldFwiKTtcbiAgaWYgKCFvcHRpb25zTGl0ZXJhbCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlZnM6IFdlYlNvY2tldFR5cGVSZWZzID0ge307XG4gIGZvciAoY29uc3QgcHJvcGVydHkgb2Ygb3B0aW9uc0xpdGVyYWwucHJvcGVydGllcykge1xuICAgIGlmICghdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocHJvcGVydHkpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWVUZXh0KHByb3BlcnR5Lm5hbWUpO1xuICAgIGlmIChwcm9wZXJ0eU5hbWUgIT09IFwib3V0RXZlbnRzXCIgJiYgcHJvcGVydHlOYW1lICE9PSBcImluRXZlbnRzXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHR5cGVSZWYgPSByZXNvbHZlRGVjb3JhdG9yVHlwZVJlZihwcm9wZXJ0eS5pbml0aWFsaXplcik7XG4gICAgaWYgKCF0eXBlUmVmKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocHJvcGVydHlOYW1lID09PSBcIm91dEV2ZW50c1wiKSB7XG4gICAgICByZWZzLm91dEV2ZW50c1R5cGVSZWYgPSB0eXBlUmVmO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWZzLmluRXZlbnRzVHlwZVJlZiA9IHR5cGVSZWY7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlZnM7XG59XG5cbmZ1bmN0aW9uIGdldERlY29yYXRvck9wdGlvbnNPYmplY3RMaXRlcmFsKFxuICBub2RlOiB0cy5NZXRob2REZWNsYXJhdGlvbixcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuKTogdHMuT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IG1vZGlmaWVyIG9mIG5vZGUubW9kaWZpZXJzID8/IFtdKSB7XG4gICAgaWYgKCF0cy5pc0RlY29yYXRvcihtb2RpZmllcikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cHJlc3Npb24gPSBtb2RpZmllci5leHByZXNzaW9uO1xuICAgIGlmICghdHMuaXNDYWxsRXhwcmVzc2lvbihleHByZXNzaW9uKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbi5leHByZXNzaW9uKSB8fCBleHByZXNzaW9uLmV4cHJlc3Npb24udGV4dCAhPT0gZGVjb3JhdG9yTmFtZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZpcnN0QXJnXSA9IGV4cHJlc3Npb24uYXJndW1lbnRzO1xuICAgIGlmIChmaXJzdEFyZyAmJiB0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGZpcnN0QXJnKSkge1xuICAgICAgcmV0dXJuIGZpcnN0QXJnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZVRleHQobmFtZTogdHMuUHJvcGVydHlOYW1lKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHRzLmlzSWRlbnRpZmllcihuYW1lKSB8fCB0cy5pc1N0cmluZ0xpdGVyYWwobmFtZSkgfHwgdHMuaXNOdW1lcmljTGl0ZXJhbChuYW1lKSkge1xuICAgIHJldHVybiBuYW1lLnRleHQ7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRGVjb3JhdG9yVHlwZVJlZihleHByZXNzaW9uOiB0cy5FeHByZXNzaW9uKTogQXBpUGFyYW1UeXBlLlJlZiB8IHVuZGVmaW5lZCB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIoZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdDogXCJyZWZcIixcbiAgICAgIGlkOiBleHByZXNzaW9uLnRleHQsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChcbiAgICB0cy5pc0FzRXhwcmVzc2lvbihleHByZXNzaW9uKSB8fFxuICAgIHRzLmlzUGFyZW50aGVzaXplZEV4cHJlc3Npb24oZXhwcmVzc2lvbikgfHxcbiAgICB0cy5pc05vbk51bGxFeHByZXNzaW9uKGV4cHJlc3Npb24pIHx8XG4gICAgdHMuaXNUeXBlQXNzZXJ0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uKVxuICApIHtcbiAgICByZXR1cm4gcmVzb2x2ZURlY29yYXRvclR5cGVSZWYoZXhwcmVzc2lvbi5leHByZXNzaW9uKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVUeXBlTm9kZSh0eXBlTm9kZTogdHMuVHlwZU5vZGUpOiBBcGlQYXJhbVR5cGUge1xuICBzd2l0Y2ggKHR5cGVOb2RlPy5raW5kKSB7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkFueUtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJhbnlcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVW5rbm93bktleXdvcmQ6XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlN0cmluZ0tleXdvcmQ6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuTnVtYmVyS2V5d29yZDpcbiAgICAgIHJldHVybiBcIm51bWJlclwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5Cb29sZWFuS2V5d29yZDpcbiAgICAgIHJldHVybiBcImJvb2xlYW5cIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVW5kZWZpbmVkS2V5d29yZDpcbiAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZDpcbiAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVm9pZEtleXdvcmQ6XG4gICAgICByZXR1cm4gXCJ2b2lkXCI7XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkxpdGVyYWxUeXBlOiB7XG4gICAgICBjb25zdCBsaXRlcmFsID1cbiAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdHlwZU5vZGUgYXMgdHMuTGl0ZXJhbFR5cGVOb2RlXG4gICAgICAgICkubGl0ZXJhbDtcbiAgICAgIGlmICh0cy5pc1N0cmluZ0xpdGVyYWwobGl0ZXJhbCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0OiBcInN0cmluZy1saXRlcmFsXCIsXG4gICAgICAgICAgdmFsdWU6IGxpdGVyYWwudGV4dCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAodHMuaXNOdW1lcmljTGl0ZXJhbChsaXRlcmFsKSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHQ6IFwibnVtZXJpYy1saXRlcmFsXCIsXG4gICAgICAgICAgdmFsdWU6IE51bWJlcihsaXRlcmFsLnRleHQpLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxpdGVyYWwua2luZCA9PT0gdHMuU3ludGF4S2luZC5OdWxsS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICAgICAgfSBlbHNlIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuVW5kZWZpbmVkS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICAgICAgICB9IGVsc2UgaWYgKGxpdGVyYWwua2luZCA9PT0gdHMuU3ludGF4S2luZC5UcnVlS2V5d29yZCkge1xuICAgICAgICAgIHJldHVybiBcInRydWVcIjtcbiAgICAgICAgfSBlbHNlIGlmIChsaXRlcmFsLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuRmFsc2VLZXl3b3JkKSB7XG4gICAgICAgICAgcmV0dXJuIFwiZmFsc2VcIjtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCLslYwg7IiYIOyXhuuKlCDrpqzthLDrn7RcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGNhc2UgdHMuU3ludGF4S2luZC5BcnJheVR5cGU6IHtcbiAgICAgIGNvbnN0IGFyck5vZGUgPVxuICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHR5cGVOb2RlIGFzIHRzLkFycmF5VHlwZU5vZGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcImFycmF5XCIsXG4gICAgICAgIGVsZW1lbnRzVHlwZTogcmVzb2x2ZVR5cGVOb2RlKGFyck5vZGUuZWxlbWVudFR5cGUpLFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlR5cGVMaXRlcmFsOiB7XG4gICAgICBjb25zdCBsaXRlcmFsTm9kZSA9XG4gICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gdHlwZU5vZGUgYXMgdHMuVHlwZUxpdGVyYWxOb2RlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJvYmplY3RcIixcbiAgICAgICAgcHJvcHM6IGxpdGVyYWxOb2RlLm1lbWJlcnMubWFwKChtZW1iZXIpID0+IHtcbiAgICAgICAgICBpZiAodHMuaXNJbmRleFNpZ25hdHVyZURlY2xhcmF0aW9uKG1lbWJlcikpIHtcbiAgICAgICAgICAgIGFzc2VydChtZW1iZXIucGFyYW1ldGVyc1swXSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSByZXNvbHZlUGFyYW1EZWMoe1xuICAgICAgICAgICAgICBuYW1lOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIG1lbWJlclxuICAgICAgICAgICAgICAgIC5wYXJhbWV0ZXJzWzBdLm5hbWUgYXMgdHMuSWRlbnRpZmllcixcbiAgICAgICAgICAgICAgdHlwZTogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBtZW1iZXJcbiAgICAgICAgICAgICAgICAucGFyYW1ldGVyc1swXS50eXBlIGFzIHRzLlR5cGVOb2RlLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlUGFyYW1EZWMoe1xuICAgICAgICAgICAgICBuYW1lOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHtcbiAgICAgICAgICAgICAgICBlc2NhcGVkVGV4dDogYFske3Jlcy5uYW1lfSR7cmVzLm9wdGlvbmFsID8gXCI/XCIgOiBcIlwifTogJHtyZXMudHlwZX1dYCxcbiAgICAgICAgICAgICAgfSBhcyB0cy5JZGVudGlmaWVyLFxuICAgICAgICAgICAgICB0eXBlOiBtZW1iZXIudHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVBhcmFtRGVjKHtcbiAgICAgICAgICAgICAgbmFtZTogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAgICAgICBtZW1iZXIgYXMgdHMuUHJvcGVydHlTaWduYXR1cmVcbiAgICAgICAgICAgICAgKS5uYW1lIGFzIHRzLklkZW50aWZpZXIsXG4gICAgICAgICAgICAgIHR5cGU6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICAgICAgbWVtYmVyIGFzIHRzLlByb3BlcnR5U2lnbmF0dXJlXG4gICAgICAgICAgICAgICkudHlwZSBhcyB0cy5UeXBlTm9kZSxcbiAgICAgICAgICAgICAgb3B0aW9uYWw6XG4gICAgICAgICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICAgICAgICBtZW1iZXIgYXMgdHMuUHJvcGVydHlTaWduYXR1cmVcbiAgICAgICAgICAgICAgICApLnF1ZXN0aW9uVG9rZW4gIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVHlwZVJlZmVyZW5jZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwicmVmXCIsXG4gICAgICAgIGlkOiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgICh0eXBlTm9kZSBhcyB0cy5UeXBlUmVmZXJlbmNlTm9kZSkudHlwZU5hbWUgYXMgdHMuSWRlbnRpZmllclxuICAgICAgICApLmVzY2FwZWRUZXh0LnRvU3RyaW5nKCksXG4gICAgICAgIGFyZ3M6IC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLlR5cGVSZWZlcmVuY2VOb2RlXG4gICAgICAgICkudHlwZUFyZ3VtZW50cz8ubWFwKCh0eXBlQXJnKSA9PiByZXNvbHZlVHlwZU5vZGUodHlwZUFyZykpLFxuICAgICAgfTtcbiAgICBjYXNlIHRzLlN5bnRheEtpbmQuVW5pb25UeXBlOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdDogXCJ1bmlvblwiLFxuICAgICAgICB0eXBlczogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdHlwZU5vZGUgYXMgdHMuVW5pb25UeXBlTm9kZVxuICAgICAgICApLnR5cGVzLm1hcCgodHlwZSkgPT4gcmVzb2x2ZVR5cGVOb2RlKHR5cGUpKSxcbiAgICAgIH07XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkludGVyc2VjdGlvblR5cGU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0OiBcImludGVyc2VjdGlvblwiLFxuICAgICAgICB0eXBlczogLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdHlwZU5vZGUgYXMgdHMuSW50ZXJzZWN0aW9uVHlwZU5vZGVcbiAgICAgICAgKS50eXBlcy5tYXAoKHR5cGUpID0+IHJlc29sdmVUeXBlTm9kZSh0eXBlKSksXG4gICAgICB9O1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5JbmRleGVkQWNjZXNzVHlwZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwiaW5kZXhlZC1hY2Nlc3NcIixcbiAgICAgICAgb2JqZWN0OiByZXNvbHZlVHlwZU5vZGUoXG4gICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5JbmRleGVkQWNjZXNzVHlwZU5vZGVcbiAgICAgICAgICApLm9iamVjdFR5cGUsXG4gICAgICAgICksXG4gICAgICAgIGluZGV4OiByZXNvbHZlVHlwZU5vZGUoXG4gICAgICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgICB0eXBlTm9kZSBhcyB0cy5JbmRleGVkQWNjZXNzVHlwZU5vZGVcbiAgICAgICAgICApLmluZGV4VHlwZSxcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLlR1cGxlVHlwZTpcbiAgICAgIGlmICh0cy5pc1R1cGxlVHlwZU5vZGUodHlwZU5vZGUpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdDogXCJ0dXBsZS10eXBlXCIsXG4gICAgICAgICAgZWxlbWVudHM6IHR5cGVOb2RlLmVsZW1lbnRzLm1hcCgoZWxlbSkgPT4gcmVzb2x2ZVR5cGVOb2RlKGVsZW0pKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgdHMuU3ludGF4S2luZC5QYXJlbnRoZXNpemVkVHlwZTpcbiAgICAgIC8vIOq0hO2YuOuhnCDrrLbsnbgg7YOA7J6FICjsmIg6IChBICYgQilbXSDsl5DshJwgKEEgJiBCKSlcbiAgICAgIC8vIOuCtOu2gCDtg4DsnoXsnYQg7J6s6reA7KCB7Jy866GcIHJlc29sdmVcbiAgICAgIHJldHVybiByZXNvbHZlVHlwZU5vZGUoXG4gICAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKFxuICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLlBhcmVudGhlc2l6ZWRUeXBlTm9kZVxuICAgICAgICApLnR5cGUsXG4gICAgICApO1xuXG4gICAgY2FzZSB0cy5TeW50YXhLaW5kLkZ1bmN0aW9uVHlwZTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHQ6IFwiZnVuY3Rpb25cIixcbiAgICAgICAgcGFyYW1ldGVyczpcbiAgICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLkZ1bmN0aW9uVHlwZU5vZGVcbiAgICAgICAgICApLnBhcmFtZXRlcnMubWFwKChwYXJhbSkgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtLm5hbWUuZ2V0VGV4dCgpLFxuICAgICAgICAgICAgdHlwZTogcGFyYW0udHlwZSA/IHJlc29sdmVUeXBlTm9kZShwYXJhbS50eXBlKSA6IFwidW5rbm93blwiLFxuICAgICAgICAgICAgb3B0aW9uYWw6IHBhcmFtLnF1ZXN0aW9uVG9rZW4gIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlZmF1bHREZWY6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9KSksXG4gICAgICAgIHJldHVyblR5cGU6IHJlc29sdmVUeXBlTm9kZShcbiAgICAgICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIChcbiAgICAgICAgICAgIHR5cGVOb2RlIGFzIHRzLkZ1bmN0aW9uVHlwZU5vZGVcbiAgICAgICAgICApLnR5cGUsXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGB0eXBlTm9kZSB1bmRlZmluZWRgKTtcbiAgfVxuXG4gIGNvbnNvbGUuZGVidWcodHlwZU5vZGUpO1xuICB0aHJvdyBuZXcgRXJyb3IoYOyVjCDsiJgg7JeG64qUIFN5bnRheEtpbmQgJHt0eXBlTm9kZS5raW5kfWApO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlUGFyYW1EZWMoXG4gIHBhcmFtRGVjOiB7XG4gICAgbmFtZTogdHMuQmluZGluZ05hbWU7XG4gICAgdHlwZTogdHMuVHlwZU5vZGU7XG4gICAgb3B0aW9uYWw/OiBib29sZWFuO1xuICAgIGRlZmF1bHREZWY/OiBzdHJpbmc7XG4gIH0sXG4gIGluZGV4OiBudW1iZXIgPSAwLFxuKTogQXBpUGFyYW0ge1xuICBjb25zdCBuYW1lID1cbiAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHBhcmFtRGVjLm5hbWUgYXMgdHMuSWRlbnRpZmllcjtcbiAgY29uc3QgdHlwZSA9IHJlc29sdmVUeXBlTm9kZShwYXJhbURlYy50eXBlKTtcblxuICBpZiAobmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS5kZWJ1Zyh7IG5hbWUsIHR5cGUsIHBhcmFtRGVjIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBBcGlQYXJhbSA9IHtcbiAgICBuYW1lOiBuYW1lLmVzY2FwZWRUZXh0ID8gbmFtZS5lc2NhcGVkVGV4dC50b1N0cmluZygpIDogYG5vbmFtZUF0JHtpbmRleH1gLFxuICAgIHR5cGUsXG4gICAgb3B0aW9uYWw6IHBhcmFtRGVjLm9wdGlvbmFsID09PSB0cnVlLFxuICAgIGRlZmF1bHREZWY6IHBhcmFtRGVjPy5kZWZhdWx0RGVmLFxuICB9O1xuXG4gIC8vIOq1rOyhsOu2hO2VtO2VoOuLueydmCDqsr3smrAg7YOA7J6F7J2066aEIOyCrOyaqVxuICBpZiAoXG4gICAgdHMuaXNPYmplY3RCaW5kaW5nUGF0dGVybihuYW1lKSAmJlxuICAgIHRzLmlzVHlwZVJlZmVyZW5jZU5vZGUocGFyYW1EZWMudHlwZSkgJiZcbiAgICB0cy5pc0lkZW50aWZpZXIocGFyYW1EZWMudHlwZS50eXBlTmFtZSlcbiAgKSB7XG4gICAgcmVzdWx0Lm5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHBhcmFtRGVjLnR5cGUudHlwZU5hbWUudGV4dCwgdHJ1ZSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwcmludE5vZGUobm9kZTogdHMuTm9kZSB8IHVuZGVmaW5lZCwgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoeyBuZXdMaW5lOiB0cy5OZXdMaW5lS2luZC5MaW5lRmVlZCB9KTtcbiAgcmV0dXJuIHByaW50ZXIucHJpbnROb2RlKHRzLkVtaXRIaW50LlVuc3BlY2lm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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/syncer/checksum.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../../src/syncer/checksum.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,YAAY,EAAwB,MAAM,qBAAqB,CAAC;AAU9E;;;GAGG;AACH,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAU9E;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAUpD"}
|
package/dist/syncer/checksum.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { differenceWith, init_utils } from "../utils/utils.js";
|
|
3
3
|
import { globAsync, init_async_utils } from "../utils/async-utils.js";
|
|
4
|
-
import { exists, init_fs_utils } from "../utils/fs-utils.js";
|
|
5
4
|
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
6
5
|
import { GLOB_EXCLUDE, getChecksumPatternGroupInAbsolutePath, init_file_patterns } from "./file-patterns.js";
|
|
6
|
+
import { init_filesystem_dependencies, syncerFileExists, syncerFilesystem } from "./filesystem-dependencies.js";
|
|
7
7
|
import { isEqual } from "radashi";
|
|
8
8
|
import { createReadStream } from "fs";
|
|
9
9
|
import path from "path";
|
|
10
|
-
import { readFile, writeFile } from "fs/promises";
|
|
11
10
|
import crypto from "crypto";
|
|
12
11
|
import equal from "fast-deep-equal";
|
|
13
12
|
//#region src/syncer/checksum.ts
|
|
@@ -44,9 +43,9 @@ async function getCurrentChecksums() {
|
|
|
44
43
|
}
|
|
45
44
|
async function getPreviousChecksums() {
|
|
46
45
|
const checksumFilePath = getChecksumFilePath();
|
|
47
|
-
if (!await
|
|
46
|
+
if (!await syncerFileExists(checksumFilePath)) return [];
|
|
48
47
|
try {
|
|
49
|
-
return JSON.parse(await readFile(checksumFilePath, "utf-8")).map((r) => ({
|
|
48
|
+
return JSON.parse(await syncerFilesystem.readFile(checksumFilePath, "utf-8")).map((r) => ({
|
|
50
49
|
path: path.join(Sonamu.appRootPath, r.path),
|
|
51
50
|
checksum: r.checksum
|
|
52
51
|
}));
|
|
@@ -63,8 +62,8 @@ async function saveChecksums(checksums) {
|
|
|
63
62
|
const serialized = checksums.map((r) => ({
|
|
64
63
|
path: path.relative(Sonamu.appRootPath, r.path),
|
|
65
64
|
checksum: r.checksum
|
|
66
|
-
})).
|
|
67
|
-
await writeFile(checksumFilePath, JSON.stringify(serialized, null, 2), "utf-8");
|
|
65
|
+
})).toSorted((a, b) => a.path.localeCompare(b.path));
|
|
66
|
+
await syncerFilesystem.writeFile(checksumFilePath, JSON.stringify(serialized, null, 2), "utf-8");
|
|
68
67
|
}
|
|
69
68
|
async function getChecksumOfFile(filePath) {
|
|
70
69
|
const hash = crypto.createHash("sha1");
|
|
@@ -75,12 +74,12 @@ async function getChecksumOfFile(filePath) {
|
|
|
75
74
|
var init_checksum = __esmMin((() => {
|
|
76
75
|
init_sonamu();
|
|
77
76
|
init_async_utils();
|
|
78
|
-
init_fs_utils();
|
|
79
77
|
init_utils();
|
|
80
78
|
init_file_patterns();
|
|
79
|
+
init_filesystem_dependencies();
|
|
81
80
|
}));
|
|
82
81
|
//#endregion
|
|
83
82
|
init_checksum();
|
|
84
83
|
export { findChangedFilesUsingChecksums, init_checksum, renewChecksums };
|
|
85
84
|
|
|
86
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzdW0uanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9jaGVja3N1bS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIHR5cGUgUGF0aExpa2UgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBlcXVhbCBmcm9tIFwiZmFzdC1kZWVwLWVxdWFsXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi91dGlscy9hc3luYy11dGlsc1wiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGgsIHR5cGUgQXBwUmVsYXRpdmVQYXRoIH0gZnJvbSBcIi4uL3V0aWxzL3BhdGgtdXRpbHNcIjtcbmltcG9ydCB7IGRpZmZlcmVuY2VXaXRoIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cEluQWJzb2x1dGVQYXRoLCBHTE9CX0VYQ0xVREUgfSBmcm9tIFwiLi9maWxlLXBhdHRlcm5zXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxudHlwZSBQYXRoQW5kQ2hlY2tzdW0gPSB7XG4gIHBhdGg6IEFic29sdXRlUGF0aDtcbiAgY2hlY2tzdW06IHN0cmluZztcbn07XG5cbi8qKlxuICog7LK07YGs7ISsIO2MjOydvOyXkCDsoIDsnqXrkJwg64K07Jqp6rO8IO2YhOyerCDsi6TsoJwg7YyM7J287J2YIOyytO2BrOyErOydhCDruYTqtZDtlZjsl6wg67OA6rK965CcIO2MjOydvOydhCDssL7sirXri4jri6QuXG4gKiBAcmV0dXJucyDrs4Dqsr3rkJwg7YyM7J28IOqyveuhnCDrsLDsl7QuIO2UhOuhnOygne2KuCDro6jtirjrtoDthLAg7Iqs656Y7Iuc66GcIOyLnOyeke2VqeuLiOuLpC4g7JiI7IucOiBcIi9zcmMvYXBwbGljYXRpb24vdXNlci91c2VyLm1vZGVsLnRzXCJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbmRDaGFuZ2VkRmlsZXNVc2luZ0NoZWNrc3VtcygpOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIGNvbnN0IGNhbGN1bGF0ZWRDaGVja3N1bXMgPSBhd2FpdCBnZXRDdXJyZW50Q2hlY2tzdW1zKCk7XG4gIGNvbnN0IHNhdmVkQ2hlY2tzdW1zID0gYXdhaXQgZ2V0UHJldmlvdXNDaGVja3N1bXMoKTtcblxuICBjb25zdCBpc1NhbWUgPSBlcXVhbChjYWxjdWxhdGVkQ2hlY2tzdW1zLCBzYXZlZENoZWNrc3Vtcyk7XG4gIGlmIChpc1NhbWUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gZGlmZmVyZW5jZVdpdGgoY2FsY3VsYXRlZENoZWNrc3Vtcywgc2F2ZWRDaGVja3N1bXMsIGlzRXF1YWwpLm1hcCgocikgPT4gci5wYXRoKTtcbn1cblxuLyoqXG4gKiDssrTtgazshKzsnYQg6rCx7Iug7ZWp64uI64ukLlxuICog7ZiE7J6sIO2MjOydvOuTpOydmCDssrTtgazshKzsnYQg6rOE7IKw7ZW07IScIOq1rO2VnCDri6TsnYwsIOyytO2BrOyErCDtjIzsnbzsl5Ag7KCA7J6l65CcIOuCtOyaqeqzvCDri6TrpbTrqbQg7LK07YGs7ISsIO2MjOydvOydhCDqsLHsi6Dtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZW5ld0NoZWNrc3VtcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgY2FsY3VsYXRlZENoZWNrc3VtcyA9IGF3YWl0IGdldEN1cnJlbnRDaGVja3N1bXMoKTtcbiAgY29uc3Qgc2F2ZWRDaGVja3N1bXMgPSBhd2FpdCBnZXRQcmV2aW91c0NoZWNrc3VtcygpO1xuXG4gIGNvbnN0IGlzU2FtZSA9IGVxdWFsKGNhbGN1bGF0ZWRDaGVja3N1bXMsIHNhdmVkQ2hlY2tzdW1zKTtcbiAgaWYgKGlzU2FtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IHNhdmVDaGVja3N1bXMoY2FsY3VsYXRlZENoZWNrc3Vtcyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRDaGVja3N1bXMoKTogUHJvbWlzZTxQYXRoQW5kQ2hlY2tzdW1bXT4ge1xuICBjb25zdCBhbGxQYXRocyA9IChcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIE9iamVjdC5lbnRyaWVzKGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKSkubWFwKChbX2ZpbGVUeXBlLCBwYXR0ZXJuXSkgPT4ge1xuICAgICAgICByZXR1cm4gZ2xvYkFzeW5jKHBhdHRlcm4sIHsgZXhjbHVkZTogR0xPQl9FWENMVURFIH0pO1xuICAgICAgfSksXG4gICAgKVxuICApLmZsYXQoKTtcblxuICAvLyDrj5nsnbwg7YyM7J287J20IOyXrOufrCDtjKjthLTsl5Ag66ek7LmY65CgIOyImCDsnojsnLzrr4DroZwo7JiIOiBzZC5nZW5lcmF0ZWQudHPripQgZ2VuZXJhdGVk7JmAIHNkR2VuZXJhdGVk7JeQIOuqqOuRkCDrp6TsuZgpXG4gIC8vIOykkeuztSDsoJzqsbAg7ZuEIOyViOyglSDsoJXroKwuXG4gIGNvbnN0IGZpbGVQYXRocyA9XG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChhbGxQYXRocyksXG4gICAgKS50b1NvcnRlZCgpIGFzIEFic29sdXRlUGF0aFtdO1xuXG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlUGF0aHMubWFwKGFzeW5jIChmaWxlUGF0aCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogZmlsZVBhdGgsXG4gICAgICAgIGNoZWNrc3VtOiBhd2FpdCBnZXRDaGVja3N1bU9mRmlsZShmaWxlUGF0aCksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRQcmV2aW91c0NoZWNrc3VtcygpOiBQcm9taXNlPFBhdGhBbmRDaGVja3N1bVtdPiB7XG4gIGNvbnN0IGNoZWNrc3VtRmlsZVBhdGggPSBnZXRDaGVja3N1bUZpbGVQYXRoKCk7XG4gIGlmICghKGF3YWl0IHN5bmNlckZpbGVFeGlzdHMoY2hlY2tzdW1GaWxlUGF0aCkpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrc3VtcyA9XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIEpTT04ucGFyc2UoXG4gICAgICAgIGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ucmVhZEZpbGUoY2hlY2tzdW1GaWxlUGF0aCwgXCJ1dGYtOFwiKSxcbiAgICAgICkubWFwKChyOiB7IHBhdGg6IEFwcFJlbGF0aXZlUGF0aDsgY2hlY2tzdW06IHN0cmluZyB9KSA9PiAoe1xuICAgICAgICBwYXRoOiBwYXRoLmpvaW4oU29uYW11LmFwcFJvb3RQYXRoLCByLnBhdGgpLCAvLyDssrTtgazshKwg7YyM7J287JeQ7IScIOydveydhCDrlYw6IGFwcFJvb3Qg7IOB64yAIOqyveuhnCDihpIg7KCI64yAIOqyveuhnFxuICAgICAgICBjaGVja3N1bTogci5jaGVja3N1bSxcbiAgICAgIH0pKSBhcyBQYXRoQW5kQ2hlY2tzdW1bXTtcbiAgICByZXR1cm4gcHJldmlvdXNDaGVja3N1bXM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyDssrTtgazshKwg7YyM7J287J20IOyGkOyDgeuQnCDqsr3smrAg67mIIOuwsOyXtCDrsJjtmZggKOyghOyytCDsnqzrj5nquLDtmZQg7Jyg64+EKVxuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGDssrTtgazshKwg7YyM7J28KCR7Y2hlY2tzdW1GaWxlUGF0aH0p7J2EIO2MjOyLse2VmOuKlCDrjbAg7Iuk7Yyo7ZaI7Iq164uI64ukLiDsoITssrQg7J6s64+Z6riw7ZmU66W8IOynhO2Wie2VqeuLiOuLpC5gLFxuICAgICAgZSxcbiAgICApO1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRDaGVja3N1bUZpbGVQYXRoKCk6IEFic29sdXRlUGF0aCB7XG4gIHJldHVybiAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHBhdGguam9pbihcbiAgICBTb25hbXUuYXBpUm9vdFBhdGgsXG4gICAgXCJzb25hbXUubG9ja1wiLFxuICApIGFzIEFic29sdXRlUGF0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2F2ZUNoZWNrc3VtcyhjaGVja3N1bXM6IFBhdGhBbmRDaGVja3N1bVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGNoZWNrc3VtRmlsZVBhdGggPSBnZXRDaGVja3N1bUZpbGVQYXRoKCk7XG4gIC8vIGFwcFJvb3Qg7IOB64yAIOqyveuhnOuhnCDsp4HroKztmZQgKyDslYztjIzrsrMg7JWI7KCVIOygleugrCAoUFIgZGlmZiDquajrgZftlZjqsowg7Jyg7KeAKVxuICBjb25zdCBzZXJpYWxpemVkID0gY2hlY2tzdW1zXG4gICAgLm1hcCgocikgPT4gKHtcbiAgICAgIHBhdGg6IHBhdGgucmVsYXRpdmUoU29uYW11LmFwcFJvb3RQYXRoLCByLnBhdGgpLCAvLyDssrTtgazshKwg7YyM7J287JeQIOyggOyepe2VoCDrlYw6IOygiOuMgCDqsr3roZwg4oaSIGFwcFJvb3Qg7IOB64yAIOqyveuhnFxuICAgICAgY2hlY2tzdW06IHIuY2hlY2tzdW0sXG4gICAgfSkpXG4gICAgLnRvU29ydGVkKChhLCBiKSA9PiBhLnBhdGgubG9jYWxlQ29tcGFyZShiLnBhdGgpKTtcbiAgYXdhaXQgc3luY2VyRmlsZXN5c3RlbS53cml0ZUZpbGUoY2hlY2tzdW1GaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoc2VyaWFsaXplZCwgbnVsbCwgMiksIFwidXRmLThcIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENoZWNrc3VtT2ZGaWxlKGZpbGVQYXRoOiBQYXRoTGlrZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGhhc2ggPSBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTFcIik7XG4gIGNvbnN0IGlucHV0ID0gY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCk7XG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgaW5wdXQpIHtcbiAgICBoYXNoLnVwZGF0ZShjaHVuayk7XG4gIH1cbiAgcmV0dXJuIGhhc2guZGlnZXN0KFwiaGV4XCIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBLGVBQXNCLGlDQUEwRDtDQUM5RSxNQUFNLHNCQUFzQixNQUFNLG9CQUFvQjtDQUN0RCxNQUFNLGlCQUFpQixNQUFNLHFCQUFxQjtDQUdsRCxJQURlLE1BQU0scUJBQXFCLGNBQ3RDLEdBQ0YsT0FBTyxDQUFDO0NBR1YsT0FBTyxlQUFlLHFCQUFxQixnQkFBZ0IsT0FBTyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUUsSUFBSTtBQUN2Rjs7Ozs7QUFNQSxlQUFzQixpQkFBZ0M7Q0FDcEQsTUFBTSxzQkFBc0IsTUFBTSxvQkFBb0I7Q0FJdEQsSUFEZSxNQUFNLHFCQUFxQixNQUZiLHFCQUFxQixDQUc5QyxHQUNGO0NBR0YsTUFBTSxjQUFjLG1CQUFtQjtBQUN6QztBQUVBLGVBQWUsc0JBQWtEO0NBQy9ELE1BQU0sWUFDSixNQUFNLFFBQVEsSUFDWixPQUFPLFFBQVEsc0NBQXNDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLGFBQWE7RUFDcEYsT0FBTyxVQUFVLFNBQVMsRUFBRSxTQUFTLGFBQWEsQ0FBQztDQUNyRCxDQUFDLENBQ0gsRUFBQSxDQUNBLEtBQUs7Q0FJUCxNQUFNLFlBQ3VELE1BQU0sS0FDL0QsSUFBSSxJQUFJLFFBQVEsQ0FDbEIsQ0FBQyxDQUFDLFNBQVM7Q0FFYixPQUFPLE1BQU0sUUFBUSxJQUNuQixVQUFVLElBQUksT0FBTyxhQUFhO0VBQ2hDLE9BQU87R0FDTCxNQUFNO0dBQ04sVUFBVSxNQUFNLGtCQUFrQixRQUFRO0VBQzVDO0NBQ0YsQ0FBQyxDQUNIO0FBQ0Y7QUFFQSxlQUFlLHVCQUFtRDtDQUNoRSxNQUFNLG1CQUFtQixvQkFBb0I7Q0FDN0MsSUFBSSxDQUFFLE1BQU0saUJBQWlCLGdCQUFnQixHQUMzQyxPQUFPLENBQUM7Q0FHVixJQUFJO0VBUUYsT0FONkQsS0FBSyxNQUM5RCxNQUFNLGlCQUFpQixTQUFTLGtCQUFrQixPQUFPLENBQzNELENBQUMsQ0FBQyxLQUFLLE9BQW9EO0dBQ3pELE1BQU0sS0FBSyxLQUFLLE9BQU8sYUFBYSxFQUFFLElBQUk7R0FDMUMsVUFBVSxFQUFFO0VBQ2QsRUFDSztDQUNULFNBQVMsR0FBRztFQUVWLFFBQVEsS0FDTixVQUFVLGlCQUFpQixvQ0FDM0IsQ0FDRjtFQUNBLE9BQU8sQ0FBQztDQUNWO0FBQ0Y7QUFFQSxTQUFTLHNCQUFvQztDQUMzQyxPQUFrRSxLQUFLLEtBQ3JFLE9BQU8sYUFDUCxhQUNGO0FBQ0Y7QUFFQSxlQUFlLGNBQWMsV0FBNkM7Q0FDeEUsTUFBTSxtQkFBbUIsb0JBQW9CO0NBRTdDLE1BQU0sYUFBYSxVQUNoQixLQUFLLE9BQU87RUFDWCxNQUFNLEtBQUssU0FBUyxPQUFPLGFBQWEsRUFBRSxJQUFJO0VBQzlDLFVBQVUsRUFBRTtDQUNkLEVBQUUsQ0FBQyxDQUNGLFVBQVUsR0FBRyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQUUsSUFBSSxDQUFDO0NBQ2xELE1BQU0saUJBQWlCLFVBQVUsa0JBQWtCLEtBQUssVUFBVSxZQUFZLE1BQU0sQ0FBQyxHQUFHLE9BQU87QUFDakc7QUFFQSxlQUFlLGtCQUFrQixVQUFxQztDQUNwRSxNQUFNLE9BQU8sT0FBTyxXQUFXLE1BQU07Q0FDckMsTUFBTSxRQUFRLGlCQUFpQixRQUFRO0NBQ3ZDLFdBQVcsTUFBTSxTQUFTLE9BQ3hCLEtBQUssT0FBTyxLQUFLO0NBRW5CLE9BQU8sS0FBSyxPQUFPLEtBQUs7QUFDMUI7O2FBekhzQztrQkFDVTtZQUVEO29CQUNzQzs4QkFDUCJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/syncer/code-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"code-generator.d.ts","sourceRoot":"","sources":["../../src/syncer/code-generator.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,WAAW,EAC1D,GAAG,EAAE,CAAC,EACN,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,EACnC,gBAAgB,CAAC,EAAE,eAAe,GACjC,OAAO,CAAC,YAAY,EAAE,CAAC,CA4CzB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,eAAe,EAClE,GAAG,EAAE,CAAC,EACN,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBxB"}
|
|
@@ -4,18 +4,17 @@ import { AlreadyProcessedException, init_so_exceptions } from "../exceptions/so-
|
|
|
4
4
|
import { init_controller, isTest } from "../utils/controller.js";
|
|
5
5
|
import { everyAsync, filterAsync, init_async_utils } from "../utils/async-utils.js";
|
|
6
6
|
import { formatCode, init_formatter } from "../utils/formatter.js";
|
|
7
|
-
import { exists, init_fs_utils } from "../utils/fs-utils.js";
|
|
8
7
|
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
9
8
|
import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
|
|
10
9
|
import { Naite, init_naite } from "../naite/naite.js";
|
|
11
10
|
import { TemplateManager, init_template_manager } from "../template/template-manager.js";
|
|
11
|
+
import { init_filesystem_dependencies, syncerFileExists, syncerFilesystem } from "./filesystem-dependencies.js";
|
|
12
12
|
import { BUILT_IN_TYPES, init_zod_converter } from "../template/zod-converter.js";
|
|
13
13
|
import { init_lodash_able, wrapIf } from "../utils/lodash-able.js";
|
|
14
14
|
import { init_file_tracking, trackWritten } from "./file-tracking.js";
|
|
15
15
|
import { unique } from "radashi";
|
|
16
16
|
import path from "path";
|
|
17
17
|
import chalk from "chalk";
|
|
18
|
-
import { mkdir, writeFile } from "fs/promises";
|
|
19
18
|
//#region src/syncer/code-generator.ts
|
|
20
19
|
/**
|
|
21
20
|
* 템플릿을 렌더링하고 파일로 생성합니다.
|
|
@@ -36,15 +35,15 @@ async function generateTemplate(key, templateOptions, _generateOptions) {
|
|
|
36
35
|
generateOptions
|
|
37
36
|
});
|
|
38
37
|
const keys = [key];
|
|
39
|
-
const pathAndCodes = (await Promise.all(keys.map(async (
|
|
40
|
-
return await renderTemplate(
|
|
38
|
+
const pathAndCodes = (await Promise.all(keys.map(async (templateKey) => {
|
|
39
|
+
return await renderTemplate(templateKey, templateOptions);
|
|
41
40
|
}))).flat();
|
|
42
41
|
const filteredPathAndCodes = await (async () => {
|
|
43
42
|
if (generateOptions.overwrite) return pathAndCodes;
|
|
44
43
|
else return await filterAsync(pathAndCodes, async (pathAndCode) => {
|
|
45
44
|
const { targets } = Sonamu.config.sync;
|
|
46
45
|
const filePath = `${Sonamu.appRootPath}/${pathAndCode.path}`;
|
|
47
|
-
return await everyAsync(targets.map((target) => filePath.replace("/:target/", `/${target}/`)), async (dstPath) => !await
|
|
46
|
+
return await everyAsync(targets.map((target) => filePath.replace("/:target/", `/${target}/`)), async (dstPath) => !await syncerFileExists(dstPath));
|
|
48
47
|
});
|
|
49
48
|
})();
|
|
50
49
|
if (filteredPathAndCodes.length === 0) throw new AlreadyProcessedException(SD("sonamu.error.allFilesExist"));
|
|
@@ -65,8 +64,8 @@ async function renderTemplate(key, options) {
|
|
|
65
64
|
const rendered = await TemplateManager.get(key).render(options);
|
|
66
65
|
const resolved = await resolveRenderedTemplate(key, rendered);
|
|
67
66
|
let preTemplateResolved = [];
|
|
68
|
-
if (rendered.preTemplates) preTemplateResolved = (await Promise.all(rendered.preTemplates.map(({ key, options }) => {
|
|
69
|
-
return renderTemplate(
|
|
67
|
+
if (rendered.preTemplates) preTemplateResolved = (await Promise.all(rendered.preTemplates.map(({ key: preTemplateKey, options: preTemplateOptions }) => {
|
|
68
|
+
return renderTemplate(preTemplateKey, preTemplateOptions);
|
|
70
69
|
}))).flat();
|
|
71
70
|
return [resolved, ...preTemplateResolved];
|
|
72
71
|
}
|
|
@@ -103,9 +102,9 @@ async function resolveRenderedTemplate(key, result) {
|
|
|
103
102
|
header,
|
|
104
103
|
body
|
|
105
104
|
});
|
|
106
|
-
const
|
|
107
|
-
Naite.t(`resolveRenderedTemplate:formatted:${key}`,
|
|
108
|
-
return
|
|
105
|
+
const formattedCode = await formatCode([header, body].join("\n\n"), `${Sonamu.appRootPath}/${filePath}`);
|
|
106
|
+
Naite.t(`resolveRenderedTemplate:formatted:${key}`, formattedCode);
|
|
107
|
+
return formattedCode;
|
|
109
108
|
}
|
|
110
109
|
})();
|
|
111
110
|
return {
|
|
@@ -120,8 +119,8 @@ async function writeCodeToPathEachTarget(pathAndCode) {
|
|
|
120
119
|
const dstFilePaths = unique(targets.map((target) => filePath.replace("/:target/", `/${target}/`)));
|
|
121
120
|
return await Promise.all(dstFilePaths.map(async (dstFilePath) => {
|
|
122
121
|
const dir = path.dirname(dstFilePath);
|
|
123
|
-
if (!await
|
|
124
|
-
await writeFile(dstFilePath, pathAndCode.code);
|
|
122
|
+
if (!await syncerFileExists(dir)) await syncerFilesystem.mkdir(dir, { recursive: true });
|
|
123
|
+
await syncerFilesystem.writeFile(dstFilePath, pathAndCode.code);
|
|
125
124
|
await trackWritten(dstFilePath);
|
|
126
125
|
!isTest() && console.log(chalk.bold("Generated: ") + chalk.blue(`${dstFilePath.replace(`${appRootPath}/`, "")}`));
|
|
127
126
|
return dstFilePath;
|
|
@@ -138,12 +137,12 @@ var init_code_generator = __esmMin((() => {
|
|
|
138
137
|
init_async_utils();
|
|
139
138
|
init_controller();
|
|
140
139
|
init_formatter();
|
|
141
|
-
init_fs_utils();
|
|
142
140
|
init_lodash_able();
|
|
143
141
|
init_file_tracking();
|
|
142
|
+
init_filesystem_dependencies();
|
|
144
143
|
}));
|
|
145
144
|
//#endregion
|
|
146
145
|
init_code_generator();
|
|
147
146
|
export { generateTemplate, init_code_generator, renderTemplate };
|
|
148
147
|
|
|
149
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1nZW5lcmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9jb2RlLWdlbmVyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2Rpciwgd3JpdGVGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vZGljdC9zZFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24gfSBmcm9tIFwiLi4vZXhjZXB0aW9ucy9zby1leGNlcHRpb25zXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBSZW5kZXJlZFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZU1hbmFnZXIgfSBmcm9tIFwiLi4vdGVtcGxhdGUvdGVtcGxhdGUtbWFuYWdlclwiO1xuaW1wb3J0IHsgQlVJTFRfSU5fVFlQRVMgfSBmcm9tIFwiLi4vdGVtcGxhdGUvem9kLWNvbnZlcnRlclwiO1xuaW1wb3J0IHtcbiAgdHlwZSBHZW5lcmF0ZU9wdGlvbnMsXG4gIHR5cGUgUGF0aEFuZENvZGUsXG4gIHR5cGUgVGVtcGxhdGVLZXksXG4gIHR5cGUgVGVtcGxhdGVPcHRpb25zLFxufSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGV2ZXJ5QXN5bmMsIGZpbHRlckFzeW5jIH0gZnJvbSBcIi4uL3V0aWxzL2FzeW5jLXV0aWxzXCI7XG5pbXBvcnQgeyBpc1Rlc3QgfSBmcm9tIFwiLi4vdXRpbHMvY29udHJvbGxlclwiO1xuaW1wb3J0IHsgZm9ybWF0Q29kZSB9IGZyb20gXCIuLi91dGlscy9mb3JtYXR0ZXJcIjtcbmltcG9ydCB7IGV4aXN0cyB9IGZyb20gXCIuLi91dGlscy9mcy11dGlsc1wiO1xuaW1wb3J0IHsgd3JhcElmIH0gZnJvbSBcIi4uL3V0aWxzL2xvZGFzaC1hYmxlXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyB0cmFja1dyaXR0ZW4gfSBmcm9tIFwiLi9maWxlLXRyYWNraW5nXCI7XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOqzoCDtjIzsnbzroZwg7IOd7ISx7ZWp64uI64ukLlxuICogb3ZlcndyaXRlIOyYteyFmOydtCBmYWxzZeyduCDqsr3smrAsIOydtOuvuCDsobTsnqztlZjripQg7YyM7J287J2AIOqxtOuEiOucgeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkICjsmIg6IFwiZW50aXR5XCIsIFwibW9kZWxcIiwgXCJzZXJ2aWNlXCIg65OxKVxuICogQHBhcmFtIHRlbXBsYXRlT3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Hsl5Ag7ZWE7JqU7ZWcIOyYteyFmFxuICogQHBhcmFtIF9nZW5lcmF0ZU9wdGlvbnMgLSDsg53shLEg7Ji17IWYIChvdmVyd3JpdGUg7Jes67aAKVxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZUtleT4oXG4gIGtleTogVCxcbiAgdGVtcGxhdGVPcHRpb25zOiBUZW1wbGF0ZU9wdGlvbnNbVF0sXG4gIF9nZW5lcmF0ZU9wdGlvbnM/OiBHZW5lcmF0ZU9wdGlvbnMsXG4pOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIGNvbnN0IGdlbmVyYXRlT3B0aW9ucyA9IHtcbiAgICBvdmVyd3JpdGU6IGZhbHNlLFxuICAgIC4uLl9nZW5lcmF0ZU9wdGlvbnMsXG4gIH07XG4gIE5haXRlLnQoXCJnZW5lcmF0ZVRlbXBsYXRlXCIsIHsga2V5LCB0ZW1wbGF0ZU9wdGlvbnMsIGdlbmVyYXRlT3B0aW9ucyB9KTtcblxuICAvLyDtgqQgY2hpbGRyZW5cbiAgY29uc3Qga2V5czogVGVtcGxhdGVLZXlbXSA9IFtrZXldO1xuXG4gIC8vIO2FnO2UjOumvyDroIzrjZRcbiAgY29uc3QgcGF0aEFuZENvZGVzID0gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAga2V5cy5tYXAoYXN5bmMgKGtleSkgPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVuZGVyVGVtcGxhdGUoa2V5LCB0ZW1wbGF0ZU9wdGlvbnMpO1xuICAgICAgfSksXG4gICAgKVxuICApLmZsYXQoKTtcblxuICBjb25zdCBmaWx0ZXJlZFBhdGhBbmRDb2RlczogUGF0aEFuZENvZGVbXSA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgaWYgKGdlbmVyYXRlT3B0aW9ucy5vdmVyd3JpdGUpIHtcbiAgICAgIHJldHVybiBwYXRoQW5kQ29kZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhd2FpdCBmaWx0ZXJBc3luYyhwYXRoQW5kQ29kZXMsIGFzeW5jIChwYXRoQW5kQ29kZSkgPT4ge1xuICAgICAgICBjb25zdCB7IHRhcmdldHMgfSA9IFNvbmFtdS5jb25maWcuc3luYztcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7cGF0aEFuZENvZGUucGF0aH1gO1xuICAgICAgICBjb25zdCBkc3RGaWxlUGF0aHMgPSB0YXJnZXRzLm1hcCgodGFyZ2V0KSA9PiBmaWxlUGF0aC5yZXBsYWNlKFwiLzp0YXJnZXQvXCIsIGAvJHt0YXJnZXR9L2ApKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IGV2ZXJ5QXN5bmMoZHN0RmlsZVBhdGhzLCBhc3luYyAoZHN0UGF0aCkgPT4gIShhd2FpdCBleGlzdHMoZHN0UGF0aCkpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSkoKTtcblxuICBpZiAoZmlsdGVyZWRQYXRoQW5kQ29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24oU0QoXCJzb25hbXUuZXJyb3IuYWxsRmlsZXNFeGlzdFwiKSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZmlsdGVyZWRQYXRoQW5kQ29kZXMubWFwKChwYXRoQW5kQ29kZSkgPT4gd3JpdGVDb2RlVG9QYXRoRWFjaFRhcmdldChwYXRoQW5kQ29kZSkpLFxuICAgIClcbiAgKS5mbGF0KCk7XG59XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOyXrCBQYXRoQW5kQ29kZSDqsJ3ssrTrpbwg67CY7ZmY7ZWp64uI64ukLlxuICog7YyM7J2866GcIOyTsOyngCDslYrqs6Ag66mU66qo66as7IOB7JeQ7ISc66eMIOugjOuNlOunge2VqeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkXG4gKiBAcGFyYW0gb3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Eg7Ji17IWYXG4gKiBAcmV0dXJucyDqsr3roZzsmYAg7L2U65OcIOyMjeydmCDrsLDsl7RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclRlbXBsYXRlPFQgZXh0ZW5kcyBrZXlvZiBUZW1wbGF0ZU9wdGlvbnM+KFxuICBrZXk6IFQsXG4gIG9wdGlvbnM6IFRlbXBsYXRlT3B0aW9uc1tUXSxcbik6IFByb21pc2U8UGF0aEFuZENvZGVbXT4ge1xuICBOYWl0ZS50KFwicmVuZGVyVGVtcGxhdGVcIiwgeyBrZXksIG9wdGlvbnMgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZU1hbmFnZXIuZ2V0KGtleSk7XG5cbiAgY29uc3QgcmVuZGVyZWQgPSBhd2FpdCB0ZW1wbGF0ZS5yZW5kZXIob3B0aW9ucyk7XG4gIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUoa2V5LCByZW5kZXJlZCk7XG5cbiAgbGV0IHByZVRlbXBsYXRlUmVzb2x2ZWQ6IFBhdGhBbmRDb2RlW10gPSBbXTtcbiAgaWYgKHJlbmRlcmVkLnByZVRlbXBsYXRlcykge1xuICAgIHByZVRlbXBsYXRlUmVzb2x2ZWQgPSAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcmVuZGVyZWQucHJlVGVtcGxhdGVzLm1hcCgoeyBrZXksIG9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZW5kZXJUZW1wbGF0ZShrZXksIG9wdGlvbnMpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICApLmZsYXQoKTtcbiAgfVxuXG4gIHJldHVybiBbcmVzb2x2ZWQsIC4uLnByZVRlbXBsYXRlUmVzb2x2ZWRdO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZShcbiAga2V5OiBUZW1wbGF0ZUtleSxcbiAgcmVzdWx0OiBSZW5kZXJlZFRlbXBsYXRlLFxuKTogUHJvbWlzZTxQYXRoQW5kQ29kZT4ge1xuICBOYWl0ZS50KGByZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZSR7a2V5fWAsIHsga2V5LCByZXN1bHQgfSk7XG5cbiAgY29uc3QgeyB0YXJnZXQsIHBhdGg6IGZpbGVQYXRoLCBib2R5LCBpbXBvcnRLZXlzLCBjdXN0b21IZWFkZXJzIH0gPSByZXN1bHQ7XG5cbiAgLy8gaW1wb3J0IO2VoCDrjIDsg4HsnZgg64yA7IOBIHBhdGgg7LaU7LacXG4gIGNvbnN0IGJ1aWx0SW5TY2hlbWFOYW1lcyA9IE9iamVjdC52YWx1ZXMoQlVJTFRfSU5fVFlQRVMpLm1hcCgoaW5mbykgPT4gaW5mby5zY2hlbWFOYW1lIGFzIHN0cmluZyk7XG4gIGNvbnN0IGltcG9ydERlZnMgPSBpbXBvcnRLZXlzXG4gICAgLy8g64K07J6lIO2DgOyehSDsiqTtgqTrp4jripQg7J2066+4IHNvbmFtdeyXkOyEnCBpbXBvcnTrkJjrr4DroZwg7KCc7Jm4XG4gICAgLmZpbHRlcigoaW1wb3J0S2V5KSA9PiAhYnVpbHRJblNjaGVtYU5hbWVzLmluY2x1ZGVzKGltcG9ydEtleSkpXG4gICAgLnJlZHVjZShcbiAgICAgIChyLCBpbXBvcnRLZXkpID0+IHtcbiAgICAgICAgbGV0IG1vZHVsZVBhdGggPSBpbXBvcnRLZXk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbW9kdWxlUGF0aCA9IEVudGl0eU1hbmFnZXIuZ2V0TW9kdWxlUGF0aChpbXBvcnRLZXkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGU6JHtrZXl9XSAke2ltcG9ydEtleX0g66qo65OIIOqyveuhnCDssL7quLAg7Iuk7YyoOiAke2Vycm9yfWAsXG4gICAgICAgICAgICB7IGNhdXNlOiBlcnJvciB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGltcG9ydFBhdGggPSBtb2R1bGVQYXRoO1xuICAgICAgICBpZiAobW9kdWxlUGF0aC5pbmNsdWRlcyhcIi9cIikgfHwgbW9kdWxlUGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICAgICAgICBpbXBvcnRQYXRoID0gd3JhcElmKHBhdGgucmVsYXRpdmUocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSwgbW9kdWxlUGF0aCksIChwKSA9PiBbXG4gICAgICAgICAgICAhcC5zdGFydHNXaXRoKFwiLlwiKSxcbiAgICAgICAgICAgIGAuLyR7cH1gLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6rCZ7J2AIO2MjOydvOyXkOyEnCBpbXBvcnQg7ZWY64qUIOqyveyasCBrZXlzIOuhnCDrgpjsl7Qg7LKY66asXG4gICAgICAgIGNvbnN0IGV4aXN0c09uZSA9IHIuZmluZCgoaW1wb3J0RGVmKSA9PiBpbXBvcnREZWYuZnJvbSA9PT0gaW1wb3J0UGF0aCk7XG4gICAgICAgIGlmIChleGlzdHNPbmUpIHtcbiAgICAgICAgICBleGlzdHNPbmUua2V5cyA9IHVuaXF1ZShleGlzdHNPbmUua2V5cy5jb25jYXQoaW1wb3J0S2V5KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgci5wdXNoKHtcbiAgICAgICAgICAgIGtleXM6IFtpbXBvcnRLZXldLFxuICAgICAgICAgICAgZnJvbTogaW1wb3J0UGF0aCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICBbXSBhcyB7XG4gICAgICAgIGtleXM6IHN0cmluZ1tdO1xuICAgICAgICBmcm9tOiBzdHJpbmc7XG4gICAgICB9W10sXG4gICAgKVxuICAgIC8vIOyFgO2UhCDssLjsobAg67Cp7KeAXG4gICAgLmZpbHRlcigoaW1wb3J0RGVmKSA9PiAhZmlsZVBhdGguZW5kc1dpdGgoYCR7aW1wb3J0RGVmLmZyb20ucmVwbGFjZShcIi4vXCIsIFwiXCIpfS50c2ApKTtcblxuICAvLyDsu6TsiqTthYAg7Zek642UIO2PrO2VqO2VmOyXrCDtl6TrjZQg7IOd7ISxXG4gIGNvbnN0IGhlYWRlciA9IFtcbiAgICAuLi4oY3VzdG9tSGVhZGVycyA/PyBbXSksXG4gICAgLi4uaW1wb3J0RGVmcy5tYXAoXG4gICAgICAoaW1wb3J0RGVmKSA9PiBgaW1wb3J0IHsgJHtpbXBvcnREZWYua2V5cy5qb2luKFwiLCBcIil9IH0gZnJvbSAnJHtpbXBvcnREZWYuZnJvbX0nYCxcbiAgICApLFxuICBdLmpvaW4oXCJcXG5cIik7XG5cbiAgY29uc3QgZm9ybWF0dGVkID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICBpZiAoa2V5ID09PSBcImdlbmVyYXRlZF9odHRwXCIpIHtcbiAgICAgIHJldHVybiBbaGVhZGVyLCBib2R5XS5qb2luKFwiXFxuXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBOYWl0ZS50KFwicmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGU6YmVmb3JlRm9ybWF0XCIsIHsga2V5LCBoZWFkZXIsIGJvZHkgfSk7XG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSBhd2FpdCBmb3JtYXRDb2RlKFxuICAgICAgICBbaGVhZGVyLCBib2R5XS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7ZmlsZVBhdGh9YCxcbiAgICAgICk7XG4gICAgICBOYWl0ZS50KGByZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZTpmb3JtYXR0ZWQ6JHtrZXl9YCwgZm9ybWF0dGVkKTtcbiAgICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gICAgfVxuICB9KSgpO1xuXG4gIHJldHVybiB7XG4gICAgcGF0aDogYCR7dGFyZ2V0fS8ke2ZpbGVQYXRofWAsXG4gICAgY29kZTogZm9ybWF0dGVkLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUNvZGVUb1BhdGhFYWNoVGFyZ2V0KHBhdGhBbmRDb2RlOiBQYXRoQW5kQ29kZSk6IFByb21pc2U8QWJzb2x1dGVQYXRoW10+IHtcbiAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG4gIGNvbnN0IHsgYXBwUm9vdFBhdGggfSA9IFNvbmFtdTtcbiAgY29uc3QgZmlsZVBhdGggPSBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7cGF0aEFuZENvZGUucGF0aH1gIGFzIEFic29sdXRlUGF0aDtcblxuICBjb25zdCBkc3RGaWxlUGF0aHMgPSB1bmlxdWUoXG4gICAgdGFyZ2V0cy5tYXAoKHRhcmdldCkgPT4gZmlsZVBhdGgucmVwbGFjZShcIi86dGFyZ2V0L1wiLCBgLyR7dGFyZ2V0fS9gKSkgYXMgQWJzb2x1dGVQYXRoW10sXG4gICk7XG4gIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBkc3RGaWxlUGF0aHMubWFwKGFzeW5jIChkc3RGaWxlUGF0aCkgPT4ge1xuICAgICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKGRzdEZpbGVQYXRoKTtcbiAgICAgIGlmICghKGF3YWl0IGV4aXN0cyhkaXIpKSkge1xuICAgICAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgfVxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGRzdEZpbGVQYXRoLCBwYXRoQW5kQ29kZS5jb2RlKTtcbiAgICAgIC8vIOuwqeq4iCDsmrDrpqzqsIAg7JO0IHBhdGjrpbwg65Ox66GdIOKGkiBkZXYgd2F0Y2hlcuydmCDtm4Tsho0gY2hhbmdlIOydtOuypO2KuOqwgFxuICAgICAgLy8g7Jm467aAIOuzgOqyveycvOuhnCDsmKTsnbjrkJjsp4Ag7JWK64+E66GdIOqxsOumhCDqsIDrk5wg7J6Q66OMIOygnOqztS5cbiAgICAgIGF3YWl0IHRyYWNrV3JpdHRlbihkc3RGaWxlUGF0aCk7XG4gICAgICAhaXNUZXN0KCkgJiZcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgY2hhbGsuYm9sZChcIkdlbmVyYXRlZDogXCIpICsgY2hhbGsuYmx1ZShgJHtkc3RGaWxlUGF0aC5yZXBsYWNlKGAke2FwcFJvb3RQYXRofS9gLCBcIlwiKX1gKSxcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiBkc3RGaWxlUGF0aDtcbiAgICB9KSxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0NBLGVBQXNCLGlCQUNwQixLQUNBLGlCQUNBLGtCQUN5QjtDQUN6QixNQUFNLGtCQUFrQjtFQUN0QixXQUFXO0VBQ1gsR0FBRztDQUNMO0NBQ0EsTUFBTSxFQUFFLG9CQUFvQjtFQUFFO0VBQUs7RUFBaUI7Q0FBZ0IsQ0FBQztDQUdyRSxNQUFNLE9BQXNCLENBQUMsR0FBRztDQUdoQyxNQUFNLGdCQUNKLE1BQU0sUUFBUSxJQUNaLEtBQUssSUFBSSxPQUFPLFFBQVE7RUFDdEIsT0FBTyxNQUFNLGVBQWUsS0FBSyxlQUFlO0NBQ2xE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
|
|
148
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1nZW5lcmF0b3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9jb2RlLWdlbmVyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vZGljdC9zZFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24gfSBmcm9tIFwiLi4vZXhjZXB0aW9ucy9zby1leGNlcHRpb25zXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBSZW5kZXJlZFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZU1hbmFnZXIgfSBmcm9tIFwiLi4vdGVtcGxhdGUvdGVtcGxhdGUtbWFuYWdlclwiO1xuaW1wb3J0IHsgQlVJTFRfSU5fVFlQRVMgfSBmcm9tIFwiLi4vdGVtcGxhdGUvem9kLWNvbnZlcnRlclwiO1xuaW1wb3J0IHtcbiAgdHlwZSBHZW5lcmF0ZU9wdGlvbnMsXG4gIHR5cGUgUGF0aEFuZENvZGUsXG4gIHR5cGUgVGVtcGxhdGVLZXksXG4gIHR5cGUgVGVtcGxhdGVPcHRpb25zLFxufSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGV2ZXJ5QXN5bmMsIGZpbHRlckFzeW5jIH0gZnJvbSBcIi4uL3V0aWxzL2FzeW5jLXV0aWxzXCI7XG5pbXBvcnQgeyBpc1Rlc3QgfSBmcm9tIFwiLi4vdXRpbHMvY29udHJvbGxlclwiO1xuaW1wb3J0IHsgZm9ybWF0Q29kZSB9IGZyb20gXCIuLi91dGlscy9mb3JtYXR0ZXJcIjtcbmltcG9ydCB7IHdyYXBJZiB9IGZyb20gXCIuLi91dGlscy9sb2Rhc2gtYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBBYnNvbHV0ZVBhdGggfSBmcm9tIFwiLi4vdXRpbHMvcGF0aC11dGlsc1wiO1xuaW1wb3J0IHsgdHJhY2tXcml0dGVuIH0gZnJvbSBcIi4vZmlsZS10cmFja2luZ1wiO1xuaW1wb3J0IHsgc3luY2VyRmlsZUV4aXN0cywgc3luY2VyRmlsZXN5c3RlbSB9IGZyb20gXCIuL2ZpbGVzeXN0ZW0tZGVwZW5kZW5jaWVzXCI7XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOqzoCDtjIzsnbzroZwg7IOd7ISx7ZWp64uI64ukLlxuICogb3ZlcndyaXRlIOyYteyFmOydtCBmYWxzZeyduCDqsr3smrAsIOydtOuvuCDsobTsnqztlZjripQg7YyM7J287J2AIOqxtOuEiOucgeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkICjsmIg6IFwiZW50aXR5XCIsIFwibW9kZWxcIiwgXCJzZXJ2aWNlXCIg65OxKVxuICogQHBhcmFtIHRlbXBsYXRlT3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Hsl5Ag7ZWE7JqU7ZWcIOyYteyFmFxuICogQHBhcmFtIF9nZW5lcmF0ZU9wdGlvbnMgLSDsg53shLEg7Ji17IWYIChvdmVyd3JpdGUg7Jes67aAKVxuICogQHJldHVybnMg7IOd7ISx65CcIO2MjOydvCDqsr3roZwg67Cw7Je0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRlbXBsYXRlPFQgZXh0ZW5kcyBUZW1wbGF0ZUtleT4oXG4gIGtleTogVCxcbiAgdGVtcGxhdGVPcHRpb25zOiBUZW1wbGF0ZU9wdGlvbnNbVF0sXG4gIF9nZW5lcmF0ZU9wdGlvbnM/OiBHZW5lcmF0ZU9wdGlvbnMsXG4pOiBQcm9taXNlPEFic29sdXRlUGF0aFtdPiB7XG4gIGNvbnN0IGdlbmVyYXRlT3B0aW9ucyA9IHtcbiAgICBvdmVyd3JpdGU6IGZhbHNlLFxuICAgIC4uLl9nZW5lcmF0ZU9wdGlvbnMsXG4gIH07XG4gIE5haXRlLnQoXCJnZW5lcmF0ZVRlbXBsYXRlXCIsIHsga2V5LCB0ZW1wbGF0ZU9wdGlvbnMsIGdlbmVyYXRlT3B0aW9ucyB9KTtcblxuICAvLyDtgqQgY2hpbGRyZW5cbiAgY29uc3Qga2V5czogVGVtcGxhdGVLZXlbXSA9IFtrZXldO1xuXG4gIC8vIO2FnO2UjOumvyDroIzrjZRcbiAgY29uc3QgcGF0aEFuZENvZGVzID0gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAga2V5cy5tYXAoYXN5bmMgKHRlbXBsYXRlS2V5KSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZW5kZXJUZW1wbGF0ZSh0ZW1wbGF0ZUtleSwgdGVtcGxhdGVPcHRpb25zKTtcbiAgICAgIH0pLFxuICAgIClcbiAgKS5mbGF0KCk7XG5cbiAgY29uc3QgZmlsdGVyZWRQYXRoQW5kQ29kZXM6IFBhdGhBbmRDb2RlW10gPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChnZW5lcmF0ZU9wdGlvbnMub3ZlcndyaXRlKSB7XG4gICAgICByZXR1cm4gcGF0aEFuZENvZGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXdhaXQgZmlsdGVyQXN5bmMocGF0aEFuZENvZGVzLCBhc3luYyAocGF0aEFuZENvZGUpID0+IHtcbiAgICAgICAgY29uc3QgeyB0YXJnZXRzIH0gPSBTb25hbXUuY29uZmlnLnN5bmM7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7U29uYW11LmFwcFJvb3RQYXRofS8ke3BhdGhBbmRDb2RlLnBhdGh9YDtcbiAgICAgICAgY29uc3QgZHN0RmlsZVBhdGhzID0gdGFyZ2V0cy5tYXAoKHRhcmdldCkgPT4gZmlsZVBhdGgucmVwbGFjZShcIi86dGFyZ2V0L1wiLCBgLyR7dGFyZ2V0fS9gKSk7XG4gICAgICAgIHJldHVybiBhd2FpdCBldmVyeUFzeW5jKFxuICAgICAgICAgIGRzdEZpbGVQYXRocyxcbiAgICAgICAgICBhc3luYyAoZHN0UGF0aCkgPT4gIShhd2FpdCBzeW5jZXJGaWxlRXhpc3RzKGRzdFBhdGgpKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSkoKTtcblxuICBpZiAoZmlsdGVyZWRQYXRoQW5kQ29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEFscmVhZHlQcm9jZXNzZWRFeGNlcHRpb24oU0QoXCJzb25hbXUuZXJyb3IuYWxsRmlsZXNFeGlzdFwiKSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZmlsdGVyZWRQYXRoQW5kQ29kZXMubWFwKChwYXRoQW5kQ29kZSkgPT4gd3JpdGVDb2RlVG9QYXRoRWFjaFRhcmdldChwYXRoQW5kQ29kZSkpLFxuICAgIClcbiAgKS5mbGF0KCk7XG59XG5cbi8qKlxuICog7YWc7ZSM66a/7J2EIOugjOuNlOunge2VmOyXrCBQYXRoQW5kQ29kZSDqsJ3ssrTrpbwg67CY7ZmY7ZWp64uI64ukLlxuICog7YyM7J2866GcIOyTsOyngCDslYrqs6Ag66mU66qo66as7IOB7JeQ7ISc66eMIOugjOuNlOunge2VqeuLiOuLpC5cbiAqIEBwYXJhbSBrZXkgLSDthZztlIzrpr8g7YKkXG4gKiBAcGFyYW0gb3B0aW9ucyAtIO2FnO2UjOumvyDroIzrjZTrp4Eg7Ji17IWYXG4gKiBAcmV0dXJucyDqsr3roZzsmYAg7L2U65OcIOyMjeydmCDrsLDsl7RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlclRlbXBsYXRlPFQgZXh0ZW5kcyBrZXlvZiBUZW1wbGF0ZU9wdGlvbnM+KFxuICBrZXk6IFQsXG4gIG9wdGlvbnM6IFRlbXBsYXRlT3B0aW9uc1tUXSxcbik6IFByb21pc2U8UGF0aEFuZENvZGVbXT4ge1xuICBOYWl0ZS50KFwicmVuZGVyVGVtcGxhdGVcIiwgeyBrZXksIG9wdGlvbnMgfSk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZU1hbmFnZXIuZ2V0KGtleSk7XG5cbiAgY29uc3QgcmVuZGVyZWQgPSBhd2FpdCB0ZW1wbGF0ZS5yZW5kZXIob3B0aW9ucyk7XG4gIGNvbnN0IHJlc29sdmVkID0gYXdhaXQgcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUoa2V5LCByZW5kZXJlZCk7XG5cbiAgbGV0IHByZVRlbXBsYXRlUmVzb2x2ZWQ6IFBhdGhBbmRDb2RlW10gPSBbXTtcbiAgaWYgKHJlbmRlcmVkLnByZVRlbXBsYXRlcykge1xuICAgIHByZVRlbXBsYXRlUmVzb2x2ZWQgPSAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcmVuZGVyZWQucHJlVGVtcGxhdGVzLm1hcCgoeyBrZXk6IHByZVRlbXBsYXRlS2V5LCBvcHRpb25zOiBwcmVUZW1wbGF0ZU9wdGlvbnMgfSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZW5kZXJUZW1wbGF0ZShwcmVUZW1wbGF0ZUtleSwgcHJlVGVtcGxhdGVPcHRpb25zKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgKS5mbGF0KCk7XG4gIH1cblxuICByZXR1cm4gW3Jlc29sdmVkLCAuLi5wcmVUZW1wbGF0ZVJlc29sdmVkXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUoXG4gIGtleTogVGVtcGxhdGVLZXksXG4gIHJlc3VsdDogUmVuZGVyZWRUZW1wbGF0ZSxcbik6IFByb21pc2U8UGF0aEFuZENvZGU+IHtcbiAgTmFpdGUudChgcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGUke2tleX1gLCB7IGtleSwgcmVzdWx0IH0pO1xuXG4gIGNvbnN0IHsgdGFyZ2V0LCBwYXRoOiBmaWxlUGF0aCwgYm9keSwgaW1wb3J0S2V5cywgY3VzdG9tSGVhZGVycyB9ID0gcmVzdWx0O1xuXG4gIC8vIGltcG9ydCDtlaAg64yA7IOB7J2YIOuMgOyDgSBwYXRoIOy2lOy2nFxuICBjb25zdCBidWlsdEluU2NoZW1hTmFtZXMgPSBPYmplY3QudmFsdWVzKEJVSUxUX0lOX1RZUEVTKS5tYXAoXG4gICAgKGluZm8pID0+XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIGluZm8uc2NoZW1hTmFtZSBhcyBzdHJpbmcsXG4gICk7XG4gIGNvbnN0IGltcG9ydERlZnMgPSBpbXBvcnRLZXlzXG4gICAgLy8g64K07J6lIO2DgOyehSDsiqTtgqTrp4jripQg7J2066+4IHNvbmFtdeyXkOyEnCBpbXBvcnTrkJjrr4DroZwg7KCc7Jm4XG4gICAgLmZpbHRlcigoaW1wb3J0S2V5KSA9PiAhYnVpbHRJblNjaGVtYU5hbWVzLmluY2x1ZGVzKGltcG9ydEtleSkpXG4gICAgLnJlZHVjZShcbiAgICAgIChyLCBpbXBvcnRLZXkpID0+IHtcbiAgICAgICAgbGV0IG1vZHVsZVBhdGggPSBpbXBvcnRLZXk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbW9kdWxlUGF0aCA9IEVudGl0eU1hbmFnZXIuZ2V0TW9kdWxlUGF0aChpbXBvcnRLZXkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbcmVzb2x2ZVJlbmRlcmVkVGVtcGxhdGU6JHtrZXl9XSAke2ltcG9ydEtleX0g66qo65OIIOqyveuhnCDssL7quLAg7Iuk7YyoOiAke2Vycm9yfWAsXG4gICAgICAgICAgICB7IGNhdXNlOiBlcnJvciB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGltcG9ydFBhdGggPSBtb2R1bGVQYXRoO1xuICAgICAgICBpZiAobW9kdWxlUGF0aC5pbmNsdWRlcyhcIi9cIikgfHwgbW9kdWxlUGF0aC5pbmNsdWRlcyhcIi5cIikpIHtcbiAgICAgICAgICBpbXBvcnRQYXRoID0gd3JhcElmKHBhdGgucmVsYXRpdmUocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSwgbW9kdWxlUGF0aCksIChwKSA9PiBbXG4gICAgICAgICAgICAhcC5zdGFydHNXaXRoKFwiLlwiKSxcbiAgICAgICAgICAgIGAuLyR7cH1gLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8g6rCZ7J2AIO2MjOydvOyXkOyEnCBpbXBvcnQg7ZWY64qUIOqyveyasCBrZXlzIOuhnCDrgpjsl7Qg7LKY66asXG4gICAgICAgIGNvbnN0IGV4aXN0c09uZSA9IHIuZmluZCgoaW1wb3J0RGVmKSA9PiBpbXBvcnREZWYuZnJvbSA9PT0gaW1wb3J0UGF0aCk7XG4gICAgICAgIGlmIChleGlzdHNPbmUpIHtcbiAgICAgICAgICBleGlzdHNPbmUua2V5cyA9IHVuaXF1ZShleGlzdHNPbmUua2V5cy5jb25jYXQoaW1wb3J0S2V5KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgci5wdXNoKHtcbiAgICAgICAgICAgIGtleXM6IFtpbXBvcnRLZXldLFxuICAgICAgICAgICAgZnJvbTogaW1wb3J0UGF0aCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFtdIGFzIHtcbiAgICAgICAga2V5czogc3RyaW5nW107XG4gICAgICAgIGZyb206IHN0cmluZztcbiAgICAgIH1bXSxcbiAgICApXG4gICAgLy8g7IWA7ZSEIOywuOyhsCDrsKnsp4BcbiAgICAuZmlsdGVyKChpbXBvcnREZWYpID0+ICFmaWxlUGF0aC5lbmRzV2l0aChgJHtpbXBvcnREZWYuZnJvbS5yZXBsYWNlKFwiLi9cIiwgXCJcIil9LnRzYCkpO1xuXG4gIC8vIOy7pOyKpO2FgCDtl6TrjZQg7Y+s7ZWo7ZWY7JesIO2XpOuNlCDsg53shLFcbiAgY29uc3QgaGVhZGVyID0gW1xuICAgIC4uLihjdXN0b21IZWFkZXJzID8/IFtdKSxcbiAgICAuLi5pbXBvcnREZWZzLm1hcChcbiAgICAgIChpbXBvcnREZWYpID0+IGBpbXBvcnQgeyAke2ltcG9ydERlZi5rZXlzLmpvaW4oXCIsIFwiKX0gfSBmcm9tICcke2ltcG9ydERlZi5mcm9tfSdgLFxuICAgICksXG4gIF0uam9pbihcIlxcblwiKTtcblxuICBjb25zdCBmb3JtYXR0ZWQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgIGlmIChrZXkgPT09IFwiZ2VuZXJhdGVkX2h0dHBcIikge1xuICAgICAgcmV0dXJuIFtoZWFkZXIsIGJvZHldLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIE5haXRlLnQoXCJyZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZTpiZWZvcmVGb3JtYXRcIiwgeyBrZXksIGhlYWRlciwgYm9keSB9KTtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZENvZGUgPSBhd2FpdCBmb3JtYXRDb2RlKFxuICAgICAgICBbaGVhZGVyLCBib2R5XS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7ZmlsZVBhdGh9YCxcbiAgICAgICk7XG4gICAgICBOYWl0ZS50KGByZXNvbHZlUmVuZGVyZWRUZW1wbGF0ZTpmb3JtYXR0ZWQ6JHtrZXl9YCwgZm9ybWF0dGVkQ29kZSk7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkQ29kZTtcbiAgICB9XG4gIH0pKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoOiBgJHt0YXJnZXR9LyR7ZmlsZVBhdGh9YCxcbiAgICBjb2RlOiBmb3JtYXR0ZWQsXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29kZVRvUGF0aEVhY2hUYXJnZXQocGF0aEFuZENvZGU6IFBhdGhBbmRDb2RlKTogUHJvbWlzZTxBYnNvbHV0ZVBhdGhbXT4ge1xuICBjb25zdCB7IHRhcmdldHMgfSA9IFNvbmFtdS5jb25maWcuc3luYztcbiAgY29uc3QgeyBhcHBSb290UGF0aCB9ID0gU29uYW11O1xuICBjb25zdCBmaWxlUGF0aCA9XG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBgJHtTb25hbXUuYXBwUm9vdFBhdGh9LyR7cGF0aEFuZENvZGUucGF0aH1gIGFzIEFic29sdXRlUGF0aDtcblxuICBjb25zdCBkc3RGaWxlUGF0aHMgPSB1bmlxdWUoXG4gICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyB0YXJnZXRzLm1hcChcbiAgICAgICh0YXJnZXQpID0+IGZpbGVQYXRoLnJlcGxhY2UoXCIvOnRhcmdldC9cIiwgYC8ke3RhcmdldH0vYCksXG4gICAgKSBhcyBBYnNvbHV0ZVBhdGhbXSxcbiAgKTtcbiAgcmV0dXJuIGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGRzdEZpbGVQYXRocy5tYXAoYXN5bmMgKGRzdEZpbGVQYXRoKSA9PiB7XG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZHN0RmlsZVBhdGgpO1xuICAgICAgaWYgKCEoYXdhaXQgc3luY2VyRmlsZUV4aXN0cyhkaXIpKSkge1xuICAgICAgICBhd2FpdCBzeW5jZXJGaWxlc3lzdGVtLm1rZGlyKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICB9XG4gICAgICBhd2FpdCBzeW5jZXJGaWxlc3lzdGVtLndyaXRlRmlsZShkc3RGaWxlUGF0aCwgcGF0aEFuZENvZGUuY29kZSk7XG4gICAgICAvLyDrsKnquIgg7Jqw66as6rCAIOyTtCBwYXRo66W8IOuTseuhnSDihpIgZGV2IHdhdGNoZXLsnZgg7ZuE7IaNIGNoYW5nZSDsnbTrsqTtirjqsIBcbiAgICAgIC8vIOyZuOu2gCDrs4Dqsr3snLzroZwg7Jik7J2465CY7KeAIOyViuuPhOuhnSDqsbDrpoQg6rCA65OcIOyekOujjCDsoJzqs7UuXG4gICAgICBhd2FpdCB0cmFja1dyaXR0ZW4oZHN0RmlsZVBhdGgpO1xuICAgICAgIWlzVGVzdCgpICYmXG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGNoYWxrLmJvbGQoXCJHZW5lcmF0ZWQ6IFwiKSArIGNoYWxrLmJsdWUoYCR7ZHN0RmlsZVBhdGgucmVwbGFjZShgJHthcHBSb290UGF0aH0vYCwgXCJcIil9YCksXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gZHN0RmlsZVBhdGg7XG4gICAgfSksXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUNBLGVBQXNCLGlCQUNwQixLQUNBLGlCQUNBLGtCQUN5QjtDQUN6QixNQUFNLGtCQUFrQjtFQUN0QixXQUFXO0VBQ1gsR0FBRztDQUNMO0NBQ0EsTUFBTSxFQUFFLG9CQUFvQjtFQUFFO0VBQUs7RUFBaUI7Q0FBZ0IsQ0FBQztDQUdyRSxNQUFNLE9BQXNCLENBQUMsR0FBRztDQUdoQyxNQUFNLGdCQUNKLE1BQU0sUUFBUSxJQUNaLEtBQUssSUFBSSxPQUFPLGdCQUFnQjtFQUM5QixPQUFPLE1BQU0sZUFBZSxhQUFhLGVBQWU7Q0FDMUQsQ0FBQyxDQUNILEVBQUEsQ0FDQSxLQUFLO0NBRVAsTUFBTSx1QkFBc0MsT0FBTyxZQUFZO0VBQzdELElBQUksZ0JBQWdCLFdBQ2xCLE9BQU87T0FFUCxPQUFPLE1BQU0sWUFBWSxjQUFjLE9BQU8sZ0JBQWdCO0dBQzVELE1BQU0sRUFBRSxZQUFZLE9BQU8sT0FBTztHQUNsQyxNQUFNLFdBQVcsR0FBRyxPQUFPLFlBQVksR0FBRyxZQUFZO0dBRXRELE9BQU8sTUFBTSxXQURRLFFBQVEsS0FBSyxXQUFXLFNBQVMsUUFBUSxhQUFhLElBQUksT0FBTyxFQUFFLENBRXRGLEdBQ0EsT0FBTyxZQUFZLENBQUUsTUFBTSxpQkFBaUIsT0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-operations.d.ts","sourceRoot":"","sources":["../../src/syncer/entity-operations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity-operations.d.ts","sourceRoot":"","sources":["../../src/syncer/entity-operations.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,iBAUnE;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgCjF"}
|
|
@@ -2,12 +2,11 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
|
2
2
|
import { SD, init_sd } from "../dict/sd.js";
|
|
3
3
|
import { BadRequestException, init_so_exceptions } from "../exceptions/so-exceptions.js";
|
|
4
4
|
import { init_controller, isTest } from "../utils/controller.js";
|
|
5
|
-
import { exists, init_fs_utils } from "../utils/fs-utils.js";
|
|
6
5
|
import { Sonamu, init_sonamu } from "../api/sonamu.js";
|
|
7
6
|
import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
|
|
7
|
+
import { init_filesystem_dependencies, syncerFileExists, syncerFilesystem } from "./filesystem-dependencies.js";
|
|
8
8
|
import { generateTemplate, init_code_generator } from "./code-generator.js";
|
|
9
9
|
import chalk from "chalk";
|
|
10
|
-
import { rm } from "fs/promises";
|
|
11
10
|
//#region src/syncer/entity-operations.ts
|
|
12
11
|
/**
|
|
13
12
|
* 새로운 엔티티를 생성합니다.
|
|
@@ -33,9 +32,9 @@ async function delEntity(entityId) {
|
|
|
33
32
|
...Sonamu.config.sync.targets.flatMap((target) => [`${Sonamu.appRootPath}/${target}/src/services/${entity.names.fs}`])
|
|
34
33
|
];
|
|
35
34
|
})();
|
|
36
|
-
for (const delPath of delPaths) if (await
|
|
35
|
+
for (const delPath of delPaths) if (await syncerFileExists(delPath)) {
|
|
37
36
|
!isTest() && console.log(chalk.red(`DELETE ${delPath}`));
|
|
38
|
-
await rm(delPath, {
|
|
37
|
+
await syncerFilesystem.rm(delPath, {
|
|
39
38
|
recursive: true,
|
|
40
39
|
force: true
|
|
41
40
|
});
|
|
@@ -49,11 +48,11 @@ var init_entity_operations = __esmMin((() => {
|
|
|
49
48
|
init_entity_manager();
|
|
50
49
|
init_so_exceptions();
|
|
51
50
|
init_controller();
|
|
52
|
-
init_fs_utils();
|
|
53
51
|
init_code_generator();
|
|
52
|
+
init_filesystem_dependencies();
|
|
54
53
|
}));
|
|
55
54
|
//#endregion
|
|
56
55
|
init_entity_operations();
|
|
57
56
|
export { createEntity, delEntity, init_entity_operations };
|
|
58
57
|
|
|
59
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW9wZXJhdGlvbnMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNlci9lbnRpdHktb3BlcmF0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi9kaWN0L3NkXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgQmFkUmVxdWVzdEV4Y2VwdGlvbiB9IGZyb20gXCIuLi9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBpc1Rlc3QgfSBmcm9tIFwiLi4vdXRpbHMvY29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGVUZW1wbGF0ZSB9IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxuLyoqXG4gKiDsg4jroZzsmrQg7JeU7Yuw7Yuw66W8IOyDneyEse2VqeuLiOuLpC5cbiAqIGVudGl0eUlk64qUIOuwmOuTnOyLnCBDYW1lbENhc2Ug7ZiV7Iud7J207Ja07JW8IO2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUVudGl0eShcbiAgZm9ybTogT21pdDxUZW1wbGF0ZU9wdGlvbnNbXCJlbnRpdHlcIl0sIFwidGl0bGVcIj4gJiB7IHRpdGxlOiBzdHJpbmcgfSxcbikge1xuICBpZiAoIS9eW0EtWl1bYS16QS1aMC05XSokLy50ZXN0KGZvcm0uZW50aXR5SWQpKSB7XG4gICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oU0QoXCJzb25hbXUuZXJyb3IuZW50aXR5SWRDYW1lbENhc2VcIikpO1xuICB9XG5cbiAgYXdhaXQgZ2VuZXJhdGVUZW1wbGF0ZShcImVudGl0eVwiLCBmb3JtKTtcblxuICAvLyByZWxvYWQgZW50aXRpZXNcbiAgYXdhaXQgRW50aXR5TWFuYWdlci5yZWxvYWQoKTtcbn1cblxuLyoqXG4gKiDsl5Tti7Dti7Drpbwg7IKt7KCc7ZWp64uI64ukLlxuICogcGFyZW50SWTqsIAg7J6I64qUIOyEnOu4jCDsl5Tti7Dti7DsnZgg6rK97JqwIGVudGl0eS5qc29u66eMIOyCreygnO2VmOqzoCxcbiAqIOujqO2KuCDsl5Tti7Dti7DsnZgg6rK97JqwIOuUlOugie2GoOumrCDsoITssrTsmYAg7YOA6rKfIOuUlOugie2GoOumrOulvCDsgq3soJztlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZWxFbnRpdHkoZW50aXR5SWQ6IHN0cmluZyk6IFByb21pc2U8eyBkZWxQYXRoczogc3RyaW5nW10gfT4ge1xuICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgY29uc3QgZGVsUGF0aHMgPSAoKCkgPT4ge1xuICAgIGlmIChlbnRpdHkucGFyZW50SWQpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGAke1NvbmFtdS5hcGlSb290UGF0aH0vc3JjL2FwcGxpY2F0aW9uLyR7ZW50aXR5Lm5hbWVzLnBhcmVudEZzfS8ke2VudGl0eS5uYW1lcy5mc30uZW50aXR5Lmpzb25gLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgYCR7U29uYW11LmFwaVJvb3RQYXRofS9zcmMvYXBwbGljYXRpb24vJHtlbnRpdHkubmFtZXMuZnN9YCxcbiAgICAgICAgYCR7U29uYW11LmFwaVJvb3RQYXRofS9kaXN0L2FwcGxpY2F0aW9uLyR7ZW50aXR5Lm5hbWVzLmZzfWAsXG4gICAgICAgIC4uLlNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzLmZsYXRNYXAoKHRhcmdldCkgPT4gW1xuICAgICAgICAgIGAke1NvbmFtdS5hcHBSb290UGF0aH0vJHt0YXJnZXR9L3NyYy9zZXJ2aWNlcy8ke2VudGl0eS5uYW1lcy5mc31gLFxuICAgICAgICBdKSxcbiAgICAgIF07XG4gICAgfVxuICB9KSgpOyAvLyBpaWZlXG5cbiAgZm9yIChjb25zdCBkZWxQYXRoIG9mIGRlbFBhdGhzKSB7XG4gICAgaWYgKGF3YWl0IHN5bmNlckZpbGVFeGlzdHMoZGVsUGF0aCkpIHtcbiAgICAgICFpc1Rlc3QoKSAmJiBjb25zb2xlLmxvZyhjaGFsay5yZWQoYERFTEVURSAke2RlbFBhdGh9YCkpO1xuICAgICAgYXdhaXQgc3luY2VyRmlsZXN5c3RlbS5ybShkZWxQYXRoLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICFpc1Rlc3QoKSAmJiBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYE5PVF9FWElTVFMgJHtkZWxQYXRofWApKTtcbiAgICB9XG4gIH1cblxuICAvLyByZWxvYWQgZW50aXRpZXNcbiAgYXdhaXQgRW50aXR5TWFuYWdlci5yZWxvYWQoKTtcblxuICByZXR1cm4geyBkZWxQYXRocyB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQWVBLGVBQXNCLGFBQ3BCLE1BQ0E7Q0FDQSxJQUFJLENBQUMsc0JBQXNCLEtBQUssS0FBSyxRQUFRLEdBQzNDLE1BQU0sSUFBSSxvQkFBb0IsR0FBRyxnQ0FBZ0MsQ0FBQztDQUdwRSxNQUFNLGlCQUFpQixVQUFVLElBQUk7Q0FHckMsTUFBTSxjQUFjLE9BQU87QUFDN0I7Ozs7OztBQU9BLGVBQXNCLFVBQVUsVUFBbUQ7Q0FDakYsTUFBTSxTQUFTLGNBQWMsSUFBSSxRQUFRO0NBRXpDLE1BQU0sa0JBQWtCO0VBQ3RCLElBQUksT0FBTyxVQUNULE9BQU8sQ0FDTCxHQUFHLE9BQU8sWUFBWSxtQkFBbUIsT0FBTyxNQUFNLFNBQVMsR0FBRyxPQUFPLE1BQU0sR0FBRyxhQUNwRjtPQUVBLE9BQU87R0FDTCxHQUFHLE9BQU8sWUFBWSxtQkFBbUIsT0FBTyxNQUFNO0dBQ3RELEdBQUcsT0FBTyxZQUFZLG9CQUFvQixPQUFPLE1BQU07R0FDdkQsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLFNBQVMsV0FBVyxDQUNoRCxHQUFHLE9BQU8sWUFBWSxHQUFHLE9BQU8sZ0JBQWdCLE9BQU8sTUFBTSxJQUMvRCxDQUFDO0VBQ0g7Q0FFSixFQUFBLENBQUc7Q0FFSCxLQUFLLE1BQU0sV0FBVyxVQUNwQixJQUFJLE1BQU0saUJBQWlCLE9BQU8sR0FBRztFQUNuQyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLFVBQVUsU0FBUyxDQUFDO0VBQ3ZELE1BQU0saUJBQWlCLEdBQUcsU0FBUztHQUFFLFdBQVc7R0FBTSxPQUFPO0VBQUssQ0FBQztDQUNyRSxPQUNFLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSSxNQUFNLE9BQU8sY0FBYyxTQUFTLENBQUM7Q0FLbEUsTUFBTSxjQUFjLE9BQU87Q0FFM0IsT0FBTyxFQUFFLFNBQVM7QUFDcEI7O2FBL0RzQztTQUNQO3FCQUN5QjtvQkFDUztpQkFFckI7cUJBQ087OEJBQzJCIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-copy.d.ts","sourceRoot":"","sources":["../../src/syncer/file-copy.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAqBlB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { formatCode, init_formatter } from "../utils/formatter.js";
|
|
3
|
+
import { init_filesystem_dependencies, syncerFileExists, syncerFilesystem } from "./filesystem-dependencies.js";
|
|
4
|
+
import path, { dirname } from "node:path";
|
|
5
|
+
//#region src/syncer/file-copy.ts
|
|
6
|
+
/**
|
|
7
|
+
* Syncer 파일시스템 경계를 통해 파일을 복사하고 클라이언트용 import 경로를 변환합니다.
|
|
8
|
+
*/
|
|
9
|
+
async function copyFileWithReplaceCoreToShared(fromPath, toPath, syncHeader) {
|
|
10
|
+
if (!await syncerFileExists(fromPath)) return false;
|
|
11
|
+
let newFileContent = replaceCoreImport(await syncerFilesystem.readFile(fromPath, "utf-8"), toPath);
|
|
12
|
+
if (syncHeader) {
|
|
13
|
+
const generatedBlockRegex = /\/\*\*\r?\n \* @generated\r?\n[\s\S]*?\*\/\r?\n(\r?\n)*/;
|
|
14
|
+
newFileContent = generatedBlockRegex.test(newFileContent) ? newFileContent.replace(generatedBlockRegex, `${syncHeader}\n\n`) : `${syncHeader}\n\n${newFileContent}`;
|
|
15
|
+
}
|
|
16
|
+
if (toPath.endsWith(".ts") || toPath.endsWith(".tsx")) newFileContent = await formatCode(newFileContent, toPath);
|
|
17
|
+
await syncerFilesystem.writeFile(toPath, newFileContent);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
function replaceCoreImport(source, toPath) {
|
|
21
|
+
const srcMatch = toPath.match(/^(.+\/src)\//);
|
|
22
|
+
if (!srcMatch) return source;
|
|
23
|
+
const servicesDir = path.join(srcMatch[1], "services");
|
|
24
|
+
const relativePath = path.relative(dirname(toPath), servicesDir);
|
|
25
|
+
const sharedPath = relativePath === "" ? "./sonamu.shared" : `${relativePath}/sonamu.shared`;
|
|
26
|
+
return source.replace(/from "sonamu(\/dict)?"/g, `from "${sharedPath}"`);
|
|
27
|
+
}
|
|
28
|
+
var init_file_copy = __esmMin((() => {
|
|
29
|
+
init_formatter();
|
|
30
|
+
init_filesystem_dependencies();
|
|
31
|
+
}));
|
|
32
|
+
//#endregion
|
|
33
|
+
init_file_copy();
|
|
34
|
+
export { copyFileWithReplaceCoreToShared, init_file_copy };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1jb3B5LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zeW5jZXIvZmlsZS1jb3B5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoLCB7IGRpcm5hbWUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5cbmltcG9ydCB7IGZvcm1hdENvZGUgfSBmcm9tIFwiLi4vdXRpbHMvZm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBzeW5jZXJGaWxlRXhpc3RzLCBzeW5jZXJGaWxlc3lzdGVtIH0gZnJvbSBcIi4vZmlsZXN5c3RlbS1kZXBlbmRlbmNpZXNcIjtcblxuLyoqXG4gKiBTeW5jZXIg7YyM7J287Iuc7Iqk7YWcIOqyveqzhOulvCDthrXtlbQg7YyM7J287J2EIOuzteyCrO2VmOqzoCDtgbTrnbzsnbTslrjtirjsmqkgaW1wb3J0IOqyveuhnOulvCDrs4DtmZjtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5RmlsZVdpdGhSZXBsYWNlQ29yZVRvU2hhcmVkKFxuICBmcm9tUGF0aDogc3RyaW5nLFxuICB0b1BhdGg6IHN0cmluZyxcbiAgc3luY0hlYWRlcj86IHN0cmluZyxcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBpZiAoIShhd2FpdCBzeW5jZXJGaWxlRXhpc3RzKGZyb21QYXRoKSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvbGRGaWxlQ29udGVudCA9IGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ucmVhZEZpbGUoZnJvbVBhdGgsIFwidXRmLThcIik7XG4gIGxldCBuZXdGaWxlQ29udGVudCA9IHJlcGxhY2VDb3JlSW1wb3J0KG9sZEZpbGVDb250ZW50LCB0b1BhdGgpO1xuXG4gIGlmIChzeW5jSGVhZGVyKSB7XG4gICAgY29uc3QgZ2VuZXJhdGVkQmxvY2tSZWdleCA9IC9cXC9cXCpcXCpcXHI/XFxuIFxcKiBAZ2VuZXJhdGVkXFxyP1xcbltcXHNcXFNdKj9cXCpcXC9cXHI/XFxuKFxccj9cXG4pKi87XG4gICAgbmV3RmlsZUNvbnRlbnQgPSBnZW5lcmF0ZWRCbG9ja1JlZ2V4LnRlc3QobmV3RmlsZUNvbnRlbnQpXG4gICAgICA/IG5ld0ZpbGVDb250ZW50LnJlcGxhY2UoZ2VuZXJhdGVkQmxvY2tSZWdleCwgYCR7c3luY0hlYWRlcn1cXG5cXG5gKVxuICAgICAgOiBgJHtzeW5jSGVhZGVyfVxcblxcbiR7bmV3RmlsZUNvbnRlbnR9YDtcbiAgfVxuXG4gIGlmICh0b1BhdGguZW5kc1dpdGgoXCIudHNcIikgfHwgdG9QYXRoLmVuZHNXaXRoKFwiLnRzeFwiKSkge1xuICAgIG5ld0ZpbGVDb250ZW50ID0gYXdhaXQgZm9ybWF0Q29kZShuZXdGaWxlQ29udGVudCwgdG9QYXRoKTtcbiAgfVxuXG4gIGF3YWl0IHN5bmNlckZpbGVzeXN0ZW0ud3JpdGVGaWxlKHRvUGF0aCwgbmV3RmlsZUNvbnRlbnQpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNvcmVJbXBvcnQoc291cmNlOiBzdHJpbmcsIHRvUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc3JjTWF0Y2ggPSB0b1BhdGgubWF0Y2goL14oLitcXC9zcmMpXFwvLyk7XG4gIGlmICghc3JjTWF0Y2gpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG5cbiAgY29uc3Qgc2VydmljZXNEaXIgPSBwYXRoLmpvaW4oc3JjTWF0Y2hbMV0sIFwic2VydmljZXNcIik7XG4gIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoZGlybmFtZSh0b1BhdGgpLCBzZXJ2aWNlc0Rpcik7XG4gIGNvbnN0IHNoYXJlZFBhdGggPSByZWxhdGl2ZVBhdGggPT09IFwiXCIgPyBcIi4vc29uYW11LnNoYXJlZFwiIDogYCR7cmVsYXRpdmVQYXRofS9zb25hbXUuc2hhcmVkYDtcbiAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKC9mcm9tIFwic29uYW11KFxcL2RpY3QpP1wiL2csIGBmcm9tIFwiJHtzaGFyZWRQYXRofVwiYCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsZUFBc0IsZ0NBQ3BCLFVBQ0EsUUFDQSxZQUNrQjtDQUNsQixJQUFJLENBQUUsTUFBTSxpQkFBaUIsUUFBUSxHQUNuQyxPQUFPO0NBSVQsSUFBSSxpQkFBaUIsa0JBQWtCLE1BRFYsaUJBQWlCLFNBQVMsVUFBVSxPQUFPLEdBQ2pCLE1BQU07Q0FFN0QsSUFBSSxZQUFZO0VBQ2QsTUFBTSxzQkFBc0I7RUFDNUIsaUJBQWlCLG9CQUFvQixLQUFLLGNBQWMsSUFDcEQsZUFBZSxRQUFRLHFCQUFxQixHQUFHLFdBQVcsS0FBSyxJQUMvRCxHQUFHLFdBQVcsTUFBTTtDQUMxQjtDQUVBLElBQUksT0FBTyxTQUFTLEtBQUssS0FBSyxPQUFPLFNBQVMsTUFBTSxHQUNsRCxpQkFBaUIsTUFBTSxXQUFXLGdCQUFnQixNQUFNO0NBRzFELE1BQU0saUJBQWlCLFVBQVUsUUFBUSxjQUFjO0NBQ3ZELE9BQU87QUFDVDtBQUVBLFNBQVMsa0JBQWtCLFFBQWdCLFFBQXdCO0NBQ2pFLE1BQU0sV0FBVyxPQUFPLE1BQU0sY0FBYztDQUM1QyxJQUFJLENBQUMsVUFDSCxPQUFPO0NBR1QsTUFBTSxjQUFjLEtBQUssS0FBSyxTQUFTLElBQUksVUFBVTtDQUNyRCxNQUFNLGVBQWUsS0FBSyxTQUFTLFFBQVEsTUFBTSxHQUFHLFdBQVc7Q0FDL0QsTUFBTSxhQUFhLGlCQUFpQixLQUFLLG9CQUFvQixHQUFHLGFBQWE7Q0FDN0UsT0FBTyxPQUFPLFFBQVEsMkJBQTJCLFNBQVMsV0FBVyxFQUFFO0FBQ3pFOztnQkEzQytDOzhCQUMrQiJ9
|
|
@@ -32,6 +32,7 @@ export declare function getChecksumPatternGroup(): {
|
|
|
32
32
|
types: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
33
33
|
workflow: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
34
34
|
i18n: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
35
|
+
httpValidatorsGenerated: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
35
36
|
generated: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
36
37
|
generatedCopied: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
37
38
|
httpGenerated: `${string}/src/${string}` | `${string}/dist/${string}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-patterns.d.ts","sourceRoot":"","sources":["../../src/syncer/file-patterns.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB
|
|
1
|
+
{"version":3,"file":"file-patterns.d.ts","sourceRoot":"","sources":["../../src/syncer/file-patterns.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;EAuCtC;AA2BD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,eAAe,GAAG,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,YAAY,UAAsE,CAAC;AAEhG;;;;GAIG;AACH,wBAAgB,qCAAqC,IAAI,WAAW,CAAC,YAAY,CAAC,CAQjF"}
|
|
@@ -37,6 +37,7 @@ function getChecksumPatternGroup() {
|
|
|
37
37
|
types: api("src/application/**/*.types.ts"),
|
|
38
38
|
workflow: api("src/application/**/*.workflow.ts"),
|
|
39
39
|
i18n: api("src/i18n/**/!(sd.generated).ts"),
|
|
40
|
+
httpValidatorsGenerated: api("src/application/**/sonamu.validators.generated.ts"),
|
|
40
41
|
generated: api("src/application/**/*.generated.{ts,tsx,sso.ts}"),
|
|
41
42
|
generatedCopied: targets("src/services/**/sonamu.generated.{ts,tsx}"),
|
|
42
43
|
httpGenerated: api("src/application/**/*.generated.http"),
|
|
@@ -47,6 +48,9 @@ function getChecksumPatternGroup() {
|
|
|
47
48
|
i18nCopied: targets("src/i18n/**/!(sd.generated).ts")
|
|
48
49
|
};
|
|
49
50
|
}
|
|
51
|
+
function braceJoin(dirs) {
|
|
52
|
+
return dirs.length === 1 ? dirs[0] : `{${dirs.join(",")}}`;
|
|
53
|
+
}
|
|
50
54
|
/**
|
|
51
55
|
* 위치 카테고리별 글롭 빌더를 만들어 반환합니다.
|
|
52
56
|
* - api(rest): api 디렉토리에 한정
|
|
@@ -56,7 +60,6 @@ function getChecksumPatternGroup() {
|
|
|
56
60
|
function globBuilders() {
|
|
57
61
|
const apiDir = Sonamu.config.api.dir;
|
|
58
62
|
const targetDirs = Sonamu.config.sync.targets;
|
|
59
|
-
const braceJoin = (dirs) => dirs.length === 1 ? dirs[0] : `{${dirs.join(",")}}`;
|
|
60
63
|
return {
|
|
61
64
|
api: (pathFromApi) => `${apiDir}/${pathFromApi}`,
|
|
62
65
|
targets: (pathFromTarget) => `${braceJoin(targetDirs)}/${pathFromTarget}`,
|
|
@@ -86,4 +89,4 @@ var init_file_patterns = __esmMin((() => {
|
|
|
86
89
|
init_file_patterns();
|
|
87
90
|
export { GLOB_EXCLUDE, getChecksumPatternGroup, getChecksumPatternGroupInAbsolutePath, init_file_patterns };
|
|
88
91
|
|
|
89
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwcFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiDqsr3roZwg7ZiV7IudOiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICh0YXJnZXQg65SU66CJ7Yag66as66GcIOyLnOyekSwg7JiIOiBcImFwaS9zcmMvLi4uXCIsIFwid2ViL3NyYy8uLi5cIilcbiAqIOyCrOyaqTogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICpcbiAqIOuRkCDqsIDsp4Ag7J2Y66+47KCBIOyYgeyXrTpcbiAqIC0g7J6F66ClICjsgqzsmqnsnpAg7J6R7ISxKTogYXBpIOuUlOugie2GoOumrOyXkOunjCDsnITsuZguIOyCrOyaqeyekOqwgCDsp4HsoJEg7Y647KeRLlxuICogLSDstpzroKUgKHNvbmFtdSDsg53shLEv67O17IKsKTogYXBpIOuYkOuKlCB0YXJnZXQg65SU66CJ7Yag66as7JeQIHNvbmFtdeqwgCDrp4zrk6TslrTrgrTripQg7YyM7J28LlxuICpcbiAqIOy2lOyggSDrsJYg7J6Q7IKwICjrtoDtirjsiqTtirjrnqkgcGhhc2Xsl5DshJwg66ek67KIIOuztOyepSk6XG4gKiAtIHNvbmFtdS5zaGFyZWQudHM6IOyCrOyaqeyekOqwgCDsu6TsiqTthLDrp4jsnbTspojtlZjripQg7J6Q7IKwLiBJZk5vdEV4aXN0c+uhnCAx7ZqMIOyDneyEsSDtm4Qg7IaQ64yA7KeAIOyViuydjC5cbiAqIC0gZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3g6IOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5wuIOunpOuyiCBvdmVyd3JpdGUgZ2VuZXJhdGUuXG4gKlxuICog7JyEIOuRmOydgCBzeW5jKCnsnZgg67aA7Yq47Iqk7Yq4656pIHBoYXNl7JeQ7IScIOuzgOqyvSDqsoDstpwg7IKs7J207YG06rO8IOustOq0gO2VmOqyjCDrs7TsnqXrkKnri4jri6QuXG4gKiDstpTsoIEg7IKs7J207YG0IOyViOyXkOyEnCDtlaAg7JWh7IWY7J20IOyXhuuKlCDsnpDsgrDsnbTrnbwg7Yyo7YS0IOq3uOujueyXkCDtj6ztlajrkJjsp4Ag7JWK7Iq164uI64ukLlxuICpcbiAqIOychOy5mCDsubTthYzqs6DrpqzripQgYXBpL3RhcmdldHMvYW55d2hlcmUg7Zes7Y2866GcIOuqheyLnOyggeycvOuhnCDtkZztmITtlanri4jri6QuXG4gKlxuICogRmlsZVR5cGXsnYAg7J20IO2VqOyImOydmCDrsJjtmZgg7YOA7J6F7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuIO2CpCDstpTqsIAg7IucIOuzhOuPhCBlbnVtL+uwsOyXtOydhFxuICog64+Z6riw7ZmU7ZWgIO2VhOyalCDsl4bsnbQg7Jes6riwIO2VnCDqtbDrjbDrp4wg7IiY7KCV7ZWY66m0IOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCkge1xuICAvLyDtl6ztjbwg7ZWo7IiY65OkIOunjOuTpOyWtOyEnCDqsIDsoLjsmLXri4jri6QuXG4gIGNvbnN0IHsgYXBpLCB0YXJnZXRzLCBhbnl3aGVyZSB9ID0gZ2xvYkJ1aWxkZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTb25hbXUg7J6F7J6l7JeQ7IScIHNvcnVjZeqwgCDrkJjripQg7YyM7J2865Ok7J6F64uI64ukLlxuICAgIC8vIOydtCDsuZzqtazrk6TsnbQg67OA6rK965CY66m0IOydtOuTpOuhnOu2gO2EsCDslaHshZjsnYQg7IiY7ZaJ7ZWY6rOgIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gICAgLy8g66qo64W466as7Y+s7JeQ7IScIOydtCBzb3VyY2Xrk6TsnYAgYXBpIO2UhOuhnOygne2KuOyXkCDtlZzsoJXrkJjrr4DroZwsIGFwaeyXkCDsnojripQg7Lmc6rWs65Ok66eMIOumrOyKpO2Mhe2VqeuLiOuLpC5cbiAgICBjb25maWc6IGFwaShcInNyYy9zb25hbXUuY29uZmlnLnRzXCIpLFxuICAgIGVudGl0eTogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIiksXG4gICAgZnJhbWU6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmZyYW1lLnRzXCIpLFxuICAgIGZ1bmN0aW9uczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIpLFxuICAgIG1vZGVsOiBhcGkoXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiKSxcbiAgICB0eXBlczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIiksXG4gICAgd29ya2Zsb3c6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLndvcmtmbG93LnRzXCIpLFxuICAgIGkxOG46IGFwaShcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcblxuICAgIC8vIFNvbmFtdeqwgCDstpzroKXtlZjripQg7IOd7ISxIO2MjOydvOuTpOyeheuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok64+EIOygle2VqeyEsSDqsoDspp0g7LCo7JuQ7JeQ7IScIHNvbmFtdS5sb2Nr7JeQIOq4sOuhne2VtOyVvCDtlZjqs6AsXG4gICAgLy8g65iQ7ZWcIOuzgOqyveyLnCDqt7gg7IKs7Iuk7J2EIHN5bmNlcuqwgCDslYzquLDripQg7ZW07JW8IO2VqeuLiOuLpCjruYTroZ0g67OE64uk66W4IOyymOumrOqwgCDsl4bripQg6rK97Jqw64+EIOyeiOyngOunjCkuXG4gICAgLy9cbiAgICAvLyDsnpDsgrAg67O47ISx7JeQIOuUsOudvCDsnITsuZgg7Lm07YWM6rOg66as6rCAIOuLpOultOq4sCDrlYzrrLjsl5AsIOuzuOyEseuzhOuhnCDrtoTrpqztlbTshJwg7ZGc6riw7ZWp64uI64ukLlxuICAgIC8vIC0g7JaR7Kq9Le2VhOyalCDsnpDsgrA6IGFwaeyXkCDsoJXrs7jsnbQg66eM65Ok7Ja07KeEIOuSpCB0YXJnZXTsl5Ag67O17IKs65CoIChzb25hbXUuZ2VuZXJhdGVkLnt0cyx0c3h9KS5cbiAgICAvLyAtIGFwaSDsoITsmqkg7J6Q7IKwOiBhcGnsl5Drp4wg66eM65Ok7Ja07KeQIChzb25hbXUuZ2VuZXJhdGVkLmh0dHAsIHF1ZXJpZXMuZ2VuZXJhdGVkLnRzKS5cbiAgICAvLyAtIHRhcmdldCDsoITsmqkg7J6Q7IKwOiB0YXJnZXTsl5Drp4wg66eM65Ok7Ja07KeQIChzZXJ2aWNlcy5nZW5lcmF0ZWQudHPripQgc2VydmljZXMudGVtcGxhdGXsnZggOnRhcmdldCDrtoTrsLApLlxuICAgIC8vXG4gICAgLy8g7Jes6riw7JeQ64qUIFNvbmFtdeydmCDrqqjrk6Agc3luYyDsgrDstpzrrLzsnbQg7J6I64qUIOqyg+ydgCDslYTri5nri4jri6QuXG4gICAgLy8gc29uYW11LnNoYXJlZC50c+yZgCBlbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeOyZgCDqsJnsnYBcbiAgICAvLyBzeW5jIOy0iOuwmCAx7ZqM7ISxIOu2gO2KuOyKpO2KuOueqSDtjIzsnbzrk6TsnYAg6rSA66asIOyViCDtlZjquLAg65WM66y47JeQIOyXrOq4sOyXkCDrpqzsiqTtjIXrj4Qg7JWIIO2VqeuLiOuLpC5cbiAgICBnZW5lcmF0ZWQ6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmdlbmVyYXRlZC57dHMsdHN4LHNzby50c31cIiksXG4gICAgZ2VuZXJhdGVkQ29waWVkOiB0YXJnZXRzKFwic3JjL3NlcnZpY2VzLyoqL3NvbmFtdS5nZW5lcmF0ZWQue3RzLHRzeH1cIiksXG4gICAgaHR0cEdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLmh0dHBcIiksXG4gICAgc2VydmljZXNHZW5lcmF0ZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvc2VydmljZXMuZ2VuZXJhdGVkLnRzXCIpLFxuICAgIHNkR2VuZXJhdGVkOiBhbnl3aGVyZShcInNyYy9pMThuLyoqL3NkLmdlbmVyYXRlZC50c1wiKSxcbiAgICB0eXBlc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLnR5cGVzLnRzXCIpLFxuICAgIGZ1bmN0aW9uc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLmZ1bmN0aW9ucy50c1wiKSxcbiAgICBpMThuQ29waWVkOiB0YXJnZXRzKFwic3JjL2kxOG4vKiovIShzZC5nZW5lcmF0ZWQpLnRzXCIpLFxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBBcHBSZWxhdGl2ZVBhdGg+O1xufVxuXG4vKipcbiAqIOychOy5mCDsubTthYzqs6Drpqzrs4Qg6riA66GtIOu5jOuNlOulvCDrp4zrk6TslrQg67CY7ZmY7ZWp64uI64ukLlxuICogLSBhcGkocmVzdCk6IGFwaSDrlJTroInthqDrpqzsl5Ag7ZWc7KCVXG4gKiAtIHRhcmdldHMocmVzdCk6IHRhcmdldCDrlJTroInthqDrpqzrk6Tsl5Ag7ZWc7KCVICh3ZWIsIGFwcCDrk7EpXG4gKiAtIGFueXdoZXJlKHJlc3QpOiBhcGnsmYAgdGFyZ2V0IOuqqOuRkFxuICovXG5mdW5jdGlvbiBnbG9iQnVpbGRlcnMoKSB7XG4gIGNvbnN0IGFwaURpciA9IFNvbmFtdS5jb25maWcuYXBpLmRpcjtcbiAgY29uc3QgdGFyZ2V0RGlycyA9IFNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzO1xuXG4gIC8vIE5vZGUg64K07J6lIGZzLmdsb2LsnZggYnJhY2UgZXhwYW5zaW9u7J2AIOuLqOydvCDrqaTrsoQge3h966W8IO2SgOyngCDslYrsnLzrr4DroZwsIOuppOuyhOqwgCAx6rCc7J28IOuVjOuKlCBhbHRlcm5hdGlvbiDsl4bsnbQg7KeB7KCRIOqysO2Vqe2VqeuLiOuLpC5cbiAgY29uc3QgYnJhY2VKb2luID0gKGRpcnM6IHJlYWRvbmx5IHN0cmluZ1tdKSA9PlxuICAgIGRpcnMubGVuZ3RoID09PSAxID8gZGlyc1swXSA6IGB7JHtkaXJzLmpvaW4oXCIsXCIpfX1gO1xuXG4gIHJldHVybiB7XG4gICAgYXBpOiAocGF0aEZyb21BcGk6IHN0cmluZykgPT4gYCR7YXBpRGlyfS8ke3BhdGhGcm9tQXBpfWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICAgIHRhcmdldHM6IChwYXRoRnJvbVRhcmdldDogc3RyaW5nKSA9PlxuICAgICAgYCR7YnJhY2VKb2luKHRhcmdldERpcnMpfS8ke3BhdGhGcm9tVGFyZ2V0fWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICAgIGFueXdoZXJlOiAocGF0aEZyb21Bbnl3aGVyZTogc3RyaW5nKSA9PlxuICAgICAgYCR7YnJhY2VKb2luKFthcGlEaXIsIC4uLnRhcmdldERpcnNdKX0vJHtwYXRoRnJvbUFueXdoZXJlfWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICB9O1xufVxuXG4vKipcbiAqIEZpbGVUeXBl7J2AIGdldENoZWNrc3VtUGF0dGVybkdyb3Vw7J2YIOuwmO2ZmCDqsJ3ssrQg7YKk7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuXG4gKiDrs4Trj4Qg67Cw7Je0L2VudW0g64+Z6riw7ZmUIOu2iO2VhOyalCDigJQg7Yyo7YS0IOq3uOujuSDtlajsiJjqsIAg7KeE7Iuk7J2YIOuLqOydvCDsm5DsspwuXG4gKi9cbmV4cG9ydCB0eXBlIEZpbGVUeXBlID0ga2V5b2YgUmV0dXJuVHlwZTx0eXBlb2YgZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXA+O1xuZXhwb3J0IHR5cGUgR2xvYlBhdHRlcm48VCBleHRlbmRzIEFwcFJlbGF0aXZlUGF0aCB8IEFic29sdXRlUGF0aD4gPSBSZWNvcmQ8RmlsZVR5cGUsIFQ+O1xuXG4vKipcbiAqIOu5jOuTnCDsgrDstpzrrLwg65SU66CJ7Yag66as64qUIGFsdGVybmF0aW9uIOq4gOuhreydtCDsnZjrj4TsuZgg7JWK6rKMIO2cmOunkOumtCDsiJgg7J6I7Jy866+A66GcIOyViOyghOunneycvOuhnCDsoJzsmbguXG4gKiBOb2RlIOuCtOyepSBmcy5nbG9i7J2YIGV4Y2x1ZGUg7Ji17IWY6rO8IO2VqOq7mCDsgqzsmqntlanri4jri6QuXG4gKi9cbmV4cG9ydCBjb25zdCBHTE9CX0VYQ0xVREUgPSBbXCIqKi9ub2RlX21vZHVsZXMvKipcIiwgXCIqKi9kaXN0LyoqXCIsIFwiKiovYnVpbGQvKipcIiwgXCIqKi8udHVyYm8vKipcIl07XG5cbi8qKlxuICogYXBwUm9vdCDquLDspIAg7IOB64yAIOqyveuhnCDtjKjthLTsnYQg7KCI64yAIOqyveuhnCDtjKjthLTsnLzroZwg67OA7ZmY7ZWp64uI64ukLlxuICpcbiAqIEByZXR1cm5zIOygiOuMgCDqsr3roZwg6riw67CYIEdsb2Ig7Yyo7YS0IOuntVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgpOiBHbG9iUGF0dGVybjxBYnNvbHV0ZVBhdGg+IHtcbiAgY29uc3QgZ3JvdXAgPSBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cCgpO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuICAgICAga2V5LFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdmFsdWUpLCAvLyBhcHBSb290IOyDgeuMgCDqsr3roZwg4oaSIOygiOuMgCDqsr3roZxcbiAgICBdKSxcbiAgKSBhcyBHbG9iUGF0dGVybjxBYnNvbHV0ZVBhdGg+O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLFNBQWdCLDBCQUEwQjtDQUV4QyxNQUFNLEVBQUUsS0FBSyxTQUFTLGFBQWEsYUFBYTtDQUVoRCxPQUFPO0VBSUwsUUFBUSxJQUFJLHNCQUFzQjtFQUNsQyxRQUFRLElBQUksa0NBQWtDO0VBQzlDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsV0FBVyxJQUFJLG1DQUFtQztFQUNsRCxPQUFPLElBQUksK0JBQStCO0VBQzFDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsVUFBVSxJQUFJLGtDQUFrQztFQUNoRCxNQUFNLElBQUksZ0NBQWdDO0VBYzFDLFdBQVcsSUFBSSxnREFBZ0Q7RUFDL0QsaUJBQWlCLFFBQVEsMkNBQTJDO0VBQ3BFLGVBQWUsSUFBSSxxQ0FBcUM7RUFDeEQsbUJBQW1CLFFBQVEsb0NBQW9DO0VBQy9ELGFBQWEsU0FBUyw2QkFBNkI7RUFDbkQsYUFBYSxRQUFRLDRCQUE0QjtFQUNqRCxpQkFBaUIsUUFBUSxnQ0FBZ0M7RUFDekQsWUFBWSxRQUFRLGdDQUFnQztDQUN0RDtBQUNGOzs7Ozs7O0FBUUEsU0FBUyxlQUFlO0NBQ3RCLE1BQU0sU0FBUyxPQUFPLE9BQU8sSUFBSTtDQUNqQyxNQUFNLGFBQWEsT0FBTyxPQUFPLEtBQUs7Q0FHdEMsTUFBTSxhQUFhLFNBQ2pCLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7Q0FFbkQsT0FBTztFQUNMLE1BQU0sZ0JBQXdCLEdBQUcsT0FBTyxHQUFHO0VBQzNDLFVBQVUsbUJBQ1IsR0FBRyxVQUFVLFVBQVUsRUFBRSxHQUFHO0VBQzlCLFdBQVcscUJBQ1QsR0FBRyxVQUFVLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEdBQUc7Q0FDN0M7QUFDRjs7Ozs7O0FBb0JBLFNBQWdCLHdDQUFtRTtDQUNqRixNQUFNLFFBQVEsd0JBQXdCO0NBQ3RDLE9BQU8sT0FBTyxZQUNaLE9BQU8sUUFBUSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLENBQzFDLEtBQ0EsS0FBSyxLQUFLLE9BQU8sYUFBYSxLQUFLLENBQ3JDLENBQUMsQ0FDSDtBQUNGOzs7YUFwSHNDO0NBcUd6QixlQUFlO0VBQUM7RUFBc0I7RUFBYztFQUFlO0NBQWMifQ==
|
|
92
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYXR0ZXJucy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3luY2VyL2ZpbGUtcGF0dGVybnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IHR5cGUgQWJzb2x1dGVQYXRoLCB0eXBlIEFwcFJlbGF0aXZlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5cbi8qKlxuICogU3luY2Vy6rCAIOq0gOyLrCDqsIDsp4Dqs6Ag7KeA7Lyc67O064qUIO2MjOydvOuTpOyeheuLiOuLpC5cbiAqIOydtCDtjIzsnbzrk6Tsl5Ag67OA6rK97J20IOyDneq4sOuptCDstpTqsIDsoIHsnbgg7J6R7JeFKOydtO2VmCBcIuyLse2BrFwiIOuYkOuKlCBcIuyLse2BrCDslaHshZhcIinsnYQg7IiY7ZaJ7ZWp64uI64ukLlxuICog7J20IOyekeyXheydtOudvCDtlajsnYAg7YyM7J28IOuzteyCrCDrmJDripQg7YWc7ZSM66a/IOugjOuNlOungeydhCDthrXtlZwgY29kZSBnZW5lcmF0aW9u7J2EIOydmOuvuO2VqeuLiOuLpC5cbiAqXG4gKiDqsr3roZwg7ZiV7IudOiBhcHBSb290IOq4sOykgCDsg4HrjIAg6rK966GcICh0YXJnZXQg65SU66CJ7Yag66as66GcIOyLnOyekSwg7JiIOiBcImFwaS9zcmMvLi4uXCIsIFwid2ViL3NyYy8uLi5cIilcbiAqIOyCrOyaqTogZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXBJbkFic29sdXRlUGF0aCgp66GcIOygiOuMgCDqsr3roZwg67OA7ZmYIO2bhCBnbG9iIOyCrOyaqVxuICpcbiAqIOuRkCDqsIDsp4Ag7J2Y66+47KCBIOyYgeyXrTpcbiAqIC0g7J6F66ClICjsgqzsmqnsnpAg7J6R7ISxKTogYXBpIOuUlOugie2GoOumrOyXkOunjCDsnITsuZguIOyCrOyaqeyekOqwgCDsp4HsoJEg7Y647KeRLlxuICogLSDstpzroKUgKHNvbmFtdSDsg53shLEv67O17IKsKTogYXBpIOuYkOuKlCB0YXJnZXQg65SU66CJ7Yag66as7JeQIHNvbmFtdeqwgCDrp4zrk6TslrTrgrTripQg7YyM7J28LlxuICpcbiAqIOy2lOyggSDrsJYg7J6Q7IKwICjrtoDtirjsiqTtirjrnqkgcGhhc2Xsl5DshJwg66ek67KIIOuztOyepSk6XG4gKiAtIHNvbmFtdS5zaGFyZWQudHM6IOyCrOyaqeyekOqwgCDsu6TsiqTthLDrp4jsnbTspojtlZjripQg7J6Q7IKwLiBJZk5vdEV4aXN0c+uhnCAx7ZqMIOyDneyEsSDtm4Qg7IaQ64yA7KeAIOyViuydjC5cbiAqIC0gZW50cnktc2VydmVyLmdlbmVyYXRlZC50c3g6IOyeheugpSDsnZjsobQg7JeG64qUIOygleyggSDsvZTrk5wuIOunpOuyiCBvdmVyd3JpdGUgZ2VuZXJhdGUuXG4gKlxuICog7JyEIOuRmOydgCBzeW5jKCnsnZgg67aA7Yq47Iqk7Yq4656pIHBoYXNl7JeQ7IScIOuzgOqyvSDqsoDstpwg7IKs7J207YG06rO8IOustOq0gO2VmOqyjCDrs7TsnqXrkKnri4jri6QuXG4gKiDstpTsoIEg7IKs7J207YG0IOyViOyXkOyEnCDtlaAg7JWh7IWY7J20IOyXhuuKlCDsnpDsgrDsnbTrnbwg7Yyo7YS0IOq3uOujueyXkCDtj6ztlajrkJjsp4Ag7JWK7Iq164uI64ukLlxuICpcbiAqIOychOy5mCDsubTthYzqs6DrpqzripQgYXBpL3RhcmdldHMvYW55d2hlcmUg7Zes7Y2866GcIOuqheyLnOyggeycvOuhnCDtkZztmITtlanri4jri6QuXG4gKlxuICogRmlsZVR5cGXsnYAg7J20IO2VqOyImOydmCDrsJjtmZgg7YOA7J6F7JeQ7IScIOyekOuPmSDstpTroaDrkKnri4jri6QuIO2CpCDstpTqsIAg7IucIOuzhOuPhCBlbnVtL+uwsOyXtOydhFxuICog64+Z6riw7ZmU7ZWgIO2VhOyalCDsl4bsnbQg7Jes6riwIO2VnCDqtbDrjbDrp4wg7IiY7KCV7ZWY66m0IOuQqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwKCkge1xuICAvLyDtl6ztjbwg7ZWo7IiY65OkIOunjOuTpOyWtOyEnCDqsIDsoLjsmLXri4jri6QuXG4gIGNvbnN0IHsgYXBpLCB0YXJnZXRzLCBhbnl3aGVyZSB9ID0gZ2xvYkJ1aWxkZXJzKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBTb25hbXUg7J6F7J6l7JeQ7IScIHNvcnVjZeqwgCDrkJjripQg7YyM7J2865Ok7J6F64uI64ukLlxuICAgIC8vIOydtCDsuZzqtazrk6TsnbQg67OA6rK965CY66m0IOydtOuTpOuhnOu2gO2EsCDslaHshZjsnYQg7IiY7ZaJ7ZWY6rOgIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gICAgLy8g66qo64W466as7Y+s7JeQ7IScIOydtCBzb3VyY2Xrk6TsnYAgYXBpIO2UhOuhnOygne2KuOyXkCDtlZzsoJXrkJjrr4DroZwsIGFwaeyXkCDsnojripQg7Lmc6rWs65Ok66eMIOumrOyKpO2Mhe2VqeuLiOuLpC5cbiAgICBjb25maWc6IGFwaShcInNyYy9zb25hbXUuY29uZmlnLnRzXCIpLFxuICAgIGVudGl0eTogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIiksXG4gICAgZnJhbWU6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmZyYW1lLnRzXCIpLFxuICAgIGZ1bmN0aW9uczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZnVuY3Rpb25zLnRzXCIpLFxuICAgIG1vZGVsOiBhcGkoXCJzcmMvYXBwbGljYXRpb24vKiovKi5tb2RlbC50c1wiKSxcbiAgICB0eXBlczogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyoudHlwZXMudHNcIiksXG4gICAgd29ya2Zsb3c6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLndvcmtmbG93LnRzXCIpLFxuICAgIGkxOG46IGFwaShcInNyYy9pMThuLyoqLyEoc2QuZ2VuZXJhdGVkKS50c1wiKSxcblxuICAgIC8vIFNvbmFtdeqwgCDstpzroKXtlZjripQg7IOd7ISxIO2MjOydvOuTpOyeheuLiOuLpC5cbiAgICAvLyDsnbQg7Lmc6rWs65Ok64+EIOygle2VqeyEsSDqsoDspp0g7LCo7JuQ7JeQ7IScIHNvbmFtdS5sb2Nr7JeQIOq4sOuhne2VtOyVvCDtlZjqs6AsXG4gICAgLy8g65iQ7ZWcIOuzgOqyveyLnCDqt7gg7IKs7Iuk7J2EIHN5bmNlcuqwgCDslYzquLDripQg7ZW07JW8IO2VqeuLiOuLpCjruYTroZ0g67OE64uk66W4IOyymOumrOqwgCDsl4bripQg6rK97Jqw64+EIOyeiOyngOunjCkuXG4gICAgLy9cbiAgICAvLyDsnpDsgrAg67O47ISx7JeQIOuUsOudvCDsnITsuZgg7Lm07YWM6rOg66as6rCAIOuLpOultOq4sCDrlYzrrLjsl5AsIOuzuOyEseuzhOuhnCDrtoTrpqztlbTshJwg7ZGc6riw7ZWp64uI64ukLlxuICAgIC8vIC0g7JaR7Kq9Le2VhOyalCDsnpDsgrA6IGFwaeyXkCDsoJXrs7jsnbQg66eM65Ok7Ja07KeEIOuSpCB0YXJnZXTsl5Ag67O17IKs65CoIChzb25hbXUuZ2VuZXJhdGVkLnt0cyx0c3h9KS5cbiAgICAvLyAtIGFwaSDsoITsmqkg7J6Q7IKwOiBhcGnsl5Drp4wg66eM65Ok7Ja07KeQIChzb25hbXUuZ2VuZXJhdGVkLmh0dHAsIHF1ZXJpZXMuZ2VuZXJhdGVkLnRzKS5cbiAgICAvLyAtIHRhcmdldCDsoITsmqkg7J6Q7IKwOiB0YXJnZXTsl5Drp4wg66eM65Ok7Ja07KeQIChzZXJ2aWNlcy5nZW5lcmF0ZWQudHPripQgc2VydmljZXMudGVtcGxhdGXsnZggOnRhcmdldCDrtoTrsLApLlxuICAgIC8vXG4gICAgLy8g7Jes6riw7JeQ64qUIFNvbmFtdeydmCDrqqjrk6Agc3luYyDsgrDstpzrrLzsnbQg7J6I64qUIOqyg+ydgCDslYTri5nri4jri6QuXG4gICAgLy8gc29uYW11LnNoYXJlZC50c+yZgCBlbnRyeS1zZXJ2ZXIuZ2VuZXJhdGVkLnRzeOyZgCDqsJnsnYBcbiAgICAvLyBzeW5jIOy0iOuwmCAx7ZqM7ISxIOu2gO2KuOyKpO2KuOueqSDtjIzsnbzrk6TsnYAg6rSA66asIOyViCDtlZjquLAg65WM66y47JeQIOyXrOq4sOyXkCDrpqzsiqTtjIXrj4Qg7JWIIO2VqeuLiOuLpC5cbiAgICBodHRwVmFsaWRhdG9yc0dlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqL3NvbmFtdS52YWxpZGF0b3JzLmdlbmVyYXRlZC50c1wiKSxcbiAgICBnZW5lcmF0ZWQ6IGFwaShcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmdlbmVyYXRlZC57dHMsdHN4LHNzby50c31cIiksXG4gICAgZ2VuZXJhdGVkQ29waWVkOiB0YXJnZXRzKFwic3JjL3NlcnZpY2VzLyoqL3NvbmFtdS5nZW5lcmF0ZWQue3RzLHRzeH1cIiksXG4gICAgaHR0cEdlbmVyYXRlZDogYXBpKFwic3JjL2FwcGxpY2F0aW9uLyoqLyouZ2VuZXJhdGVkLmh0dHBcIiksXG4gICAgc2VydmljZXNHZW5lcmF0ZWQ6IHRhcmdldHMoXCJzcmMvc2VydmljZXMvc2VydmljZXMuZ2VuZXJhdGVkLnRzXCIpLFxuICAgIHNkR2VuZXJhdGVkOiBhbnl3aGVyZShcInNyYy9pMThuLyoqL3NkLmdlbmVyYXRlZC50c1wiKSxcbiAgICB0eXBlc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLnR5cGVzLnRzXCIpLFxuICAgIGZ1bmN0aW9uc0NvcGllZDogdGFyZ2V0cyhcInNyYy9zZXJ2aWNlcy8qKi8qLmZ1bmN0aW9ucy50c1wiKSxcbiAgICBpMThuQ29waWVkOiB0YXJnZXRzKFwic3JjL2kxOG4vKiovIShzZC5nZW5lcmF0ZWQpLnRzXCIpLFxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBBcHBSZWxhdGl2ZVBhdGg+O1xufVxuXG4vLyBOb2RlIOuCtOyepSBmcy5nbG9i7J2YIGJyYWNlIGV4cGFuc2lvbuydgCDri6jsnbwg66mk67KEIHt4feulvCDtkoDsp4Ag7JWK7Jy866+A66GcLCDrqaTrsoTqsIAgMeqwnOydvCDrlYzripQgYWx0ZXJuYXRpb24g7JeG7J20IOyngeygkSDqsrDtlantlanri4jri6QuXG5mdW5jdGlvbiBicmFjZUpvaW4oZGlyczogcmVhZG9ubHkgc3RyaW5nW10pIHtcbiAgcmV0dXJuIGRpcnMubGVuZ3RoID09PSAxID8gZGlyc1swXSA6IGB7JHtkaXJzLmpvaW4oXCIsXCIpfX1gO1xufVxuXG4vKipcbiAqIOychOy5mCDsubTthYzqs6Drpqzrs4Qg6riA66GtIOu5jOuNlOulvCDrp4zrk6TslrQg67CY7ZmY7ZWp64uI64ukLlxuICogLSBhcGkocmVzdCk6IGFwaSDrlJTroInthqDrpqzsl5Ag7ZWc7KCVXG4gKiAtIHRhcmdldHMocmVzdCk6IHRhcmdldCDrlJTroInthqDrpqzrk6Tsl5Ag7ZWc7KCVICh3ZWIsIGFwcCDrk7EpXG4gKiAtIGFueXdoZXJlKHJlc3QpOiBhcGnsmYAgdGFyZ2V0IOuqqOuRkFxuICovXG5mdW5jdGlvbiBnbG9iQnVpbGRlcnMoKSB7XG4gIGNvbnN0IGFwaURpciA9IFNvbmFtdS5jb25maWcuYXBpLmRpcjtcbiAgY29uc3QgdGFyZ2V0RGlycyA9IFNvbmFtdS5jb25maWcuc3luYy50YXJnZXRzO1xuXG4gIHJldHVybiB7XG4gICAgYXBpOiAocGF0aEZyb21BcGk6IHN0cmluZykgPT5cbiAgICAgIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gYCR7YXBpRGlyfS8ke3BhdGhGcm9tQXBpfWAgYXMgQXBwUmVsYXRpdmVQYXRoLFxuICAgIHRhcmdldHM6IChwYXRoRnJvbVRhcmdldDogc3RyaW5nKSA9PlxuICAgICAgLyogU0FGRVRZOiBUeXBlU2NyaXB0IEFTVCDtjIzsi7Hqs7wg64+Z6riw7ZmUIOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBgJHticmFjZUpvaW4odGFyZ2V0RGlycyl9LyR7cGF0aEZyb21UYXJnZXR9YCBhcyBBcHBSZWxhdGl2ZVBhdGgsXG4gICAgYW55d2hlcmU6IChwYXRoRnJvbUFueXdoZXJlOiBzdHJpbmcpID0+XG4gICAgICAvKiBTQUZFVFk6IFR5cGVTY3JpcHQgQVNUIO2MjOyLseqzvCDrj5nquLDtmZQg7J6F66ClIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIGAke2JyYWNlSm9pbihbYXBpRGlyLCAuLi50YXJnZXREaXJzXSl9LyR7cGF0aEZyb21Bbnl3aGVyZX1gIGFzIEFwcFJlbGF0aXZlUGF0aCxcbiAgfTtcbn1cblxuLyoqXG4gKiBGaWxlVHlwZeydgCBnZXRDaGVja3N1bVBhdHRlcm5Hcm91cOydmCDrsJjtmZgg6rCd7LK0IO2CpOyXkOyEnCDsnpDrj5kg7LaU66Gg65Cp64uI64ukLlxuICog67OE64+EIOuwsOyXtC9lbnVtIOuPmeq4sO2ZlCDrtojtlYTsmpQg4oCUIO2MqO2EtCDqt7jro7kg7ZWo7IiY6rCAIOynhOyLpOydmCDri6jsnbwg7JuQ7LKcLlxuICovXG5leHBvcnQgdHlwZSBGaWxlVHlwZSA9IGtleW9mIFJldHVyblR5cGU8dHlwZW9mIGdldENoZWNrc3VtUGF0dGVybkdyb3VwPjtcbmV4cG9ydCB0eXBlIEdsb2JQYXR0ZXJuPFQgZXh0ZW5kcyBBcHBSZWxhdGl2ZVBhdGggfCBBYnNvbHV0ZVBhdGg+ID0gUmVjb3JkPEZpbGVUeXBlLCBUPjtcblxuLyoqXG4gKiDruYzrk5wg7IKw7Lac66y8IOuUlOugie2GoOumrOuKlCBhbHRlcm5hdGlvbiDquIDroa3snbQg7J2Y64+E7LmYIOyViuqyjCDtnJjrp5DrprQg7IiYIOyeiOycvOuvgOuhnCDslYjsoITrp53snLzroZwg7KCc7Jm4LlxuICogTm9kZSDrgrTsnqUgZnMuZ2xvYuydmCBleGNsdWRlIOyYteyFmOqzvCDtlajqu5gg7IKs7Jqp7ZWp64uI64ukLlxuICovXG5leHBvcnQgY29uc3QgR0xPQl9FWENMVURFID0gW1wiKiovbm9kZV9tb2R1bGVzLyoqXCIsIFwiKiovZGlzdC8qKlwiLCBcIioqL2J1aWxkLyoqXCIsIFwiKiovLnR1cmJvLyoqXCJdO1xuXG4vKipcbiAqIGFwcFJvb3Qg6riw7KSAIOyDgeuMgCDqsr3roZwg7Yyo7YS07J2EIOygiOuMgCDqsr3roZwg7Yyo7YS07Jy866GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAcmV0dXJucyDsoIjrjIAg6rK966GcIOq4sOuwmCBHbG9iIO2MqO2EtCDrp7VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrc3VtUGF0dGVybkdyb3VwSW5BYnNvbHV0ZVBhdGgoKTogR2xvYlBhdHRlcm48QWJzb2x1dGVQYXRoPiB7XG4gIGNvbnN0IGdyb3VwID0gZ2V0Q2hlY2tzdW1QYXR0ZXJuR3JvdXAoKTtcbiAgcmV0dXJuIC8qIFNBRkVUWTogVHlwZVNjcmlwdCBBU1Qg7YyM7Iux6rO8IOuPmeq4sO2ZlCDsnoXroKUg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGdyb3VwKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuICAgICAga2V5LFxuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcHBSb290UGF0aCwgdmFsdWUpLCAvLyBhcHBSb290IOyDgeuMgCDqsr3roZwg4oaSIOygiOuMgCDqsr3roZxcbiAgICBdKSxcbiAgKSBhcyBHbG9iUGF0dGVybjxBYnNvbHV0ZVBhdGg+O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkJBLFNBQWdCLDBCQUEwQjtDQUV4QyxNQUFNLEVBQUUsS0FBSyxTQUFTLGFBQWEsYUFBYTtDQUVoRCxPQUFPO0VBSUwsUUFBUSxJQUFJLHNCQUFzQjtFQUNsQyxRQUFRLElBQUksa0NBQWtDO0VBQzlDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsV0FBVyxJQUFJLG1DQUFtQztFQUNsRCxPQUFPLElBQUksK0JBQStCO0VBQzFDLE9BQU8sSUFBSSwrQkFBK0I7RUFDMUMsVUFBVSxJQUFJLGtDQUFrQztFQUNoRCxNQUFNLElBQUksZ0NBQWdDO0VBYzFDLHlCQUF5QixJQUFJLG1EQUFtRDtFQUNoRixXQUFXLElBQUksZ0RBQWdEO0VBQy9ELGlCQUFpQixRQUFRLDJDQUEyQztFQUNwRSxlQUFlLElBQUkscUNBQXFDO0VBQ3hELG1CQUFtQixRQUFRLG9DQUFvQztFQUMvRCxhQUFhLFNBQVMsNkJBQTZCO0VBQ25ELGFBQWEsUUFBUSw0QkFBNEI7RUFDakQsaUJBQWlCLFFBQVEsZ0NBQWdDO0VBQ3pELFlBQVksUUFBUSxnQ0FBZ0M7Q0FDdEQ7QUFDRjtBQUdBLFNBQVMsVUFBVSxNQUF5QjtDQUMxQyxPQUFPLEtBQUssV0FBVyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssS0FBSyxHQUFHLEVBQUU7QUFDMUQ7Ozs7Ozs7QUFRQSxTQUFTLGVBQWU7Q0FDdEIsTUFBTSxTQUFTLE9BQU8sT0FBTyxJQUFJO0NBQ2pDLE1BQU0sYUFBYSxPQUFPLE9BQU8sS0FBSztDQUV0QyxPQUFPO0VBQ0wsTUFBTSxnQkFDdUQsR0FBRyxPQUFPLEdBQUc7RUFDMUUsVUFBVSxtQkFDbUQsR0FBRyxVQUFVLFVBQVUsRUFBRSxHQUFHO0VBQ3pGLFdBQVcscUJBQ2tELEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsRUFBRSxHQUFHO0NBQ3hHO0FBQ0Y7Ozs7OztBQW9CQSxTQUFnQix3Q0FBbUU7Q0FDakYsTUFBTSxRQUFRLHdCQUF3QjtDQUN0QyxPQUFrRSxPQUFPLFlBQ3ZFLE9BQU8sUUFBUSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxXQUFXLENBQzFDLEtBQ0EsS0FBSyxLQUFLLE9BQU8sYUFBYSxLQUFLLENBQ3JDLENBQUMsQ0FDSDtBQUNGOzs7YUF2SHNDO0NBd0d6QixlQUFlO0VBQUM7RUFBc0I7RUFBYztFQUFlO0NBQWMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-tracking.d.ts","sourceRoot":"","sources":["../../src/syncer/file-tracking.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-tracking.d.ts","sourceRoot":"","sources":["../../src/syncer/file-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,eAAO,MAAM,aAAa,2BAAkC,CAAC;AAE7D;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhF"}
|