velocious 1.0.449 → 1.0.451
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/README.md +1 -1
- package/build/application.js +4 -4
- package/build/authorization/ability.js +8 -8
- package/build/authorization/base-resource.js +4 -4
- package/build/background-jobs/cron-expression.js +1 -1
- package/build/background-jobs/forked-runner-child.js +1 -1
- package/build/background-jobs/job-registry.js +1 -1
- package/build/background-jobs/job-runner.js +1 -1
- package/build/background-jobs/job.js +1 -1
- package/build/background-jobs/json-socket.js +4 -4
- package/build/background-jobs/main.js +21 -21
- package/build/background-jobs/scheduler.js +7 -7
- package/build/background-jobs/store.js +7 -7
- package/build/background-jobs/web/controller.js +2 -2
- package/build/background-jobs/worker.js +12 -12
- package/build/beacon/client.js +11 -8
- package/build/beacon/in-process-broker.js +2 -2
- package/build/beacon/in-process-client.js +2 -2
- package/build/beacon/server.js +3 -3
- package/build/cli/browser-cli.js +1 -1
- package/build/cli/commands/db/base-command.js +2 -2
- package/build/cli/index.js +2 -2
- package/build/cli/tenant-database-command-helper.js +3 -3
- package/build/cli/use-browser-cli.js +1 -1
- package/build/configuration-types.js +3 -1
- package/build/configuration.js +38 -38
- package/build/controller.js +8 -8
- package/build/current-configuration.js +1 -1
- package/build/database/annotations-async-hooks.js +2 -2
- package/build/database/annotations.js +3 -3
- package/build/database/drivers/base-column.js +1 -1
- package/build/database/drivers/base-foreign-key.js +1 -1
- package/build/database/drivers/base-table.js +1 -1
- package/build/database/drivers/base.js +10 -10
- package/build/database/drivers/mssql/index.js +1 -1
- package/build/database/drivers/mssql/table.js +1 -1
- package/build/database/drivers/mysql/index.js +3 -3
- package/build/database/drivers/mysql/query.js +1 -1
- package/build/database/drivers/mysql/table.js +1 -1
- package/build/database/drivers/pgsql/index.js +2 -2
- package/build/database/drivers/sqlite/base.js +16 -16
- package/build/database/drivers/sqlite/index.js +11 -11
- package/build/database/drivers/sqlite/index.native.js +1 -1
- package/build/database/drivers/sqlite/index.web.js +3 -3
- package/build/database/drivers/sqlite/query.js +1 -1
- package/build/database/drivers/sqlite/query.web.js +1 -1
- package/build/database/drivers/sqlite/sql/alter-table.js +2 -2
- package/build/database/drivers/sqlite/table.js +1 -1
- package/build/database/migrator/files-finder.js +1 -1
- package/build/database/migrator.js +6 -6
- package/build/database/pool/async-tracked-multi-connection.js +27 -27
- package/build/database/pool/base-methods-forward.js +4 -4
- package/build/database/pool/base.js +8 -8
- package/build/database/query/from-base.js +1 -1
- package/build/database/query/index.js +10 -10
- package/build/database/query/join-object.js +3 -3
- package/build/database/query/model-class-query.js +39 -39
- package/build/database/query/preloader/belongs-to.js +22 -22
- package/build/database/query/preloader/has-many.js +20 -20
- package/build/database/query/preloader/has-one.js +8 -8
- package/build/database/query/preloader/selection.js +3 -3
- package/build/database/query/preloader.js +8 -8
- package/build/database/query/query-data.js +9 -9
- package/build/database/query/where-model-class-hash.js +7 -7
- package/build/database/query/with-count.js +9 -9
- package/build/database/record/acts-as-list.js +15 -15
- package/build/database/record/attachments/handle.js +2 -2
- package/build/database/record/attachments/normalize-input.js +12 -12
- package/build/database/record/attachments/storage-drivers/s3.js +6 -6
- package/build/database/record/attachments/store.js +13 -13
- package/build/database/record/index.js +115 -121
- package/build/database/record/instance-relationships/base.js +11 -11
- package/build/database/record/instance-relationships/belongs-to.js +3 -3
- package/build/database/record/instance-relationships/has-many.js +8 -8
- package/build/database/record/instance-relationships/has-one.js +7 -7
- package/build/database/record/relationships/base.js +2 -2
- package/build/database/record/state-machine.js +7 -7
- package/build/database/record/validators/presence.js +1 -1
- package/build/database/record/validators/uniqueness.js +5 -5
- package/build/database/table-data/index.js +4 -4
- package/build/environment-handlers/base.js +2 -2
- package/build/environment-handlers/browser.js +7 -7
- package/build/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
- package/build/environment-handlers/node/cli/commands/console.js +4 -4
- package/build/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
- package/build/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
- package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
- package/build/environment-handlers/node.js +6 -6
- package/build/frontend-model-controller.js +81 -82
- package/build/frontend-model-resource/base-resource.js +78 -115
- package/build/frontend-models/base.js +162 -149
- package/build/frontend-models/clear-pending-debounced-callback.js +1 -1
- package/build/frontend-models/event-hook-models.js +2 -2
- package/build/frontend-models/outgoing-event-buffer.js +2 -2
- package/build/frontend-models/preloader.js +5 -5
- package/build/frontend-models/query.js +43 -38
- package/build/frontend-models/resource-definition.js +6 -6
- package/build/frontend-models/transport-serialization.js +11 -11
- package/build/frontend-models/use-destroyed-event.js +10 -10
- package/build/frontend-models/use-model-class-event.js +11 -11
- package/build/frontend-models/use-updated-event.js +11 -11
- package/build/frontend-models/websocket-channel.js +26 -17
- package/build/frontend-models/websocket-publishers.js +9 -9
- package/build/http-client/response.js +2 -2
- package/build/http-server/client/index.js +8 -8
- package/build/http-server/client/params-to-object.js +10 -10
- package/build/http-server/client/request-buffer/form-data-part.js +2 -2
- package/build/http-server/client/request-buffer/index.js +8 -8
- package/build/http-server/client/request-parser.js +3 -3
- package/build/http-server/client/request-runner.js +6 -6
- package/build/http-server/client/request-timing.js +5 -5
- package/build/http-server/client/request.js +1 -1
- package/build/http-server/client/response.js +5 -5
- package/build/http-server/client/websocket-request.js +4 -4
- package/build/http-server/client/websocket-session.js +18 -18
- package/build/http-server/development-reloader.js +5 -5
- package/build/http-server/index.js +12 -12
- package/build/http-server/remote-address.js +4 -4
- package/build/http-server/server-client.js +3 -3
- package/build/http-server/server-lock.js +4 -4
- package/build/http-server/websocket-channel-subscribers.js +3 -3
- package/build/http-server/websocket-channel.js +1 -1
- package/build/http-server/websocket-connection.js +1 -1
- package/build/http-server/websocket-event-log-store.js +6 -6
- package/build/http-server/websocket-events-host.js +2 -2
- package/build/http-server/worker-handler/in-process.js +7 -7
- package/build/http-server/worker-handler/index.js +4 -4
- package/build/http-server/worker-handler/worker-thread.js +3 -3
- package/build/logger/outputs/array-output.js +3 -3
- package/build/logger/outputs/console-output.js +1 -1
- package/build/logger/outputs/file-output.js +4 -4
- package/build/logger/outputs/stdout-output.js +1 -1
- package/build/logger.js +10 -10
- package/build/mailer/backends/smtp.js +3 -3
- package/build/mailer/base.js +8 -8
- package/build/mailer/delivery.js +4 -4
- package/build/plugins/sqljs-wasm-route-controller.js +1 -1
- package/build/routes/base-route.js +6 -6
- package/build/routes/basic-route.js +1 -1
- package/build/routes/hooks/frontend-model-command-route-hook.js +1 -1
- package/build/routes/index.js +1 -1
- package/build/routes/plugin-routes.js +1 -1
- package/build/routes/resolver.js +11 -11
- package/build/routes/resource-route.js +1 -1
- package/build/src/application.d.ts +3 -3
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +5 -5
- package/build/src/authorization/ability.d.ts +7 -7
- package/build/src/authorization/ability.d.ts.map +1 -1
- package/build/src/authorization/ability.js +9 -9
- package/build/src/authorization/base-resource.d.ts +1 -1
- package/build/src/authorization/base-resource.d.ts.map +1 -1
- package/build/src/authorization/base-resource.js +5 -5
- package/build/src/background-jobs/cron-expression.js +2 -2
- package/build/src/background-jobs/forked-runner-child.js +2 -2
- package/build/src/background-jobs/job-registry.d.ts +1 -1
- package/build/src/background-jobs/job-registry.d.ts.map +1 -1
- package/build/src/background-jobs/job-registry.js +2 -2
- package/build/src/background-jobs/job-runner.js +2 -2
- package/build/src/background-jobs/job.js +2 -2
- package/build/src/background-jobs/json-socket.d.ts +4 -4
- package/build/src/background-jobs/json-socket.d.ts.map +1 -1
- package/build/src/background-jobs/json-socket.js +5 -5
- package/build/src/background-jobs/main.d.ts +18 -18
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +22 -22
- package/build/src/background-jobs/scheduler.d.ts +5 -5
- package/build/src/background-jobs/scheduler.d.ts.map +1 -1
- package/build/src/background-jobs/scheduler.js +8 -8
- package/build/src/background-jobs/store.js +8 -8
- package/build/src/background-jobs/web/controller.js +3 -3
- package/build/src/background-jobs/worker.d.ts +6 -6
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +13 -13
- package/build/src/beacon/client.d.ts +4 -4
- package/build/src/beacon/client.d.ts.map +1 -1
- package/build/src/beacon/client.js +12 -9
- package/build/src/beacon/in-process-broker.d.ts.map +1 -1
- package/build/src/beacon/in-process-broker.js +3 -3
- package/build/src/beacon/in-process-client.d.ts +1 -1
- package/build/src/beacon/in-process-client.d.ts.map +1 -1
- package/build/src/beacon/in-process-client.js +3 -3
- package/build/src/beacon/server.d.ts +2 -2
- package/build/src/beacon/server.d.ts.map +1 -1
- package/build/src/beacon/server.js +4 -4
- package/build/src/cli/browser-cli.js +2 -2
- package/build/src/cli/commands/db/base-command.d.ts +2 -2
- package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
- package/build/src/cli/commands/db/base-command.js +3 -3
- package/build/src/cli/index.js +3 -3
- package/build/src/cli/tenant-database-command-helper.d.ts +1 -1
- package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
- package/build/src/cli/tenant-database-command-helper.js +4 -4
- package/build/src/cli/use-browser-cli.js +2 -2
- package/build/src/configuration-types.d.ts +12 -2
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +4 -2
- package/build/src/configuration.d.ts +14 -14
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +39 -39
- package/build/src/controller.js +10 -10
- package/build/src/current-configuration.js +2 -2
- package/build/src/database/annotations-async-hooks.js +3 -3
- package/build/src/database/annotations.d.ts.map +1 -1
- package/build/src/database/annotations.js +4 -4
- package/build/src/database/drivers/base-column.d.ts +1 -1
- package/build/src/database/drivers/base-column.d.ts.map +1 -1
- package/build/src/database/drivers/base-column.js +2 -2
- package/build/src/database/drivers/base-foreign-key.d.ts +1 -1
- package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
- package/build/src/database/drivers/base-foreign-key.js +2 -2
- package/build/src/database/drivers/base-table.d.ts +1 -1
- package/build/src/database/drivers/base-table.d.ts.map +1 -1
- package/build/src/database/drivers/base-table.js +2 -2
- package/build/src/database/drivers/base.d.ts +6 -6
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +11 -11
- package/build/src/database/drivers/mssql/index.js +2 -2
- package/build/src/database/drivers/mssql/table.js +2 -2
- package/build/src/database/drivers/mysql/index.js +4 -4
- package/build/src/database/drivers/mysql/query.js +2 -2
- package/build/src/database/drivers/mysql/table.js +2 -2
- package/build/src/database/drivers/pgsql/index.js +3 -3
- package/build/src/database/drivers/sqlite/base.d.ts +3 -3
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +17 -17
- package/build/src/database/drivers/sqlite/index.d.ts +4 -4
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +12 -12
- package/build/src/database/drivers/sqlite/index.native.js +2 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts +2 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +4 -4
- package/build/src/database/drivers/sqlite/query.js +2 -2
- package/build/src/database/drivers/sqlite/query.web.js +2 -2
- package/build/src/database/drivers/sqlite/sql/alter-table.js +3 -3
- package/build/src/database/drivers/sqlite/table.js +2 -2
- package/build/src/database/migrator/files-finder.js +2 -2
- package/build/src/database/migrator.d.ts +1 -1
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +7 -7
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +9 -9
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +28 -28
- package/build/src/database/pool/base-methods-forward.js +7 -7
- package/build/src/database/pool/base.d.ts +1 -1
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +9 -9
- package/build/src/database/query/from-base.d.ts +1 -1
- package/build/src/database/query/from-base.d.ts.map +1 -1
- package/build/src/database/query/from-base.js +2 -2
- package/build/src/database/query/index.d.ts +4 -4
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +11 -11
- package/build/src/database/query/join-object.js +4 -4
- package/build/src/database/query/model-class-query.d.ts +4 -4
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +40 -40
- package/build/src/database/query/preloader/belongs-to.js +23 -23
- package/build/src/database/query/preloader/has-many.js +21 -21
- package/build/src/database/query/preloader/has-one.js +9 -9
- package/build/src/database/query/preloader/selection.js +4 -4
- package/build/src/database/query/preloader.js +9 -9
- package/build/src/database/query/query-data.js +10 -10
- package/build/src/database/query/where-model-class-hash.js +8 -8
- package/build/src/database/query/with-count.js +10 -10
- package/build/src/database/record/acts-as-list.js +20 -20
- package/build/src/database/record/attachments/handle.d.ts +1 -1
- package/build/src/database/record/attachments/handle.d.ts.map +1 -1
- package/build/src/database/record/attachments/handle.js +3 -3
- package/build/src/database/record/attachments/normalize-input.js +15 -15
- package/build/src/database/record/attachments/storage-drivers/s3.js +7 -7
- package/build/src/database/record/attachments/store.d.ts +2 -2
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +14 -14
- package/build/src/database/record/index.d.ts +18 -25
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +135 -141
- package/build/src/database/record/instance-relationships/base.d.ts +3 -3
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +13 -13
- package/build/src/database/record/instance-relationships/belongs-to.js +4 -4
- package/build/src/database/record/instance-relationships/has-many.js +9 -9
- package/build/src/database/record/instance-relationships/has-one.d.ts +1 -1
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +8 -8
- package/build/src/database/record/relationships/base.js +4 -4
- package/build/src/database/record/state-machine.js +8 -8
- package/build/src/database/record/validators/presence.js +2 -2
- package/build/src/database/record/validators/uniqueness.js +6 -6
- package/build/src/database/table-data/index.d.ts +4 -4
- package/build/src/database/table-data/index.d.ts.map +1 -1
- package/build/src/database/table-data/index.js +5 -5
- package/build/src/environment-handlers/base.js +3 -3
- package/build/src/environment-handlers/browser.d.ts +3 -3
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +8 -8
- package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/console.js +5 -5
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +4 -4
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +285 -12
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +712 -61
- package/build/src/environment-handlers/node.d.ts +2 -2
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +7 -7
- package/build/src/frontend-model-controller.d.ts +5 -6
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +88 -89
- package/build/src/frontend-model-resource/base-resource.d.ts +36 -27
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +67 -120
- package/build/src/frontend-models/base.d.ts +67 -59
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +171 -158
- package/build/src/frontend-models/clear-pending-debounced-callback.js +2 -2
- package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
- package/build/src/frontend-models/event-hook-models.js +3 -3
- package/build/src/frontend-models/outgoing-event-buffer.d.ts +1 -1
- package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
- package/build/src/frontend-models/outgoing-event-buffer.js +3 -3
- package/build/src/frontend-models/preloader.js +6 -6
- package/build/src/frontend-models/query.d.ts +16 -8
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +43 -39
- package/build/src/frontend-models/resource-definition.js +7 -7
- package/build/src/frontend-models/transport-serialization.js +12 -12
- package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-destroyed-event.js +11 -11
- package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-model-class-event.js +12 -12
- package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-updated-event.js +12 -12
- package/build/src/frontend-models/websocket-channel.d.ts +6 -1
- package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-channel.js +26 -18
- package/build/src/frontend-models/websocket-publishers.js +11 -11
- package/build/src/http-client/response.d.ts +2 -2
- package/build/src/http-client/response.d.ts.map +1 -1
- package/build/src/http-client/response.js +3 -3
- package/build/src/http-server/client/index.d.ts +1 -1
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +9 -9
- package/build/src/http-server/client/params-to-object.js +11 -11
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts +2 -2
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/form-data-part.js +3 -3
- package/build/src/http-server/client/request-buffer/index.d.ts +4 -4
- package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/index.js +9 -9
- package/build/src/http-server/client/request-parser.d.ts +1 -1
- package/build/src/http-server/client/request-parser.d.ts.map +1 -1
- package/build/src/http-server/client/request-parser.js +4 -4
- package/build/src/http-server/client/request-runner.js +7 -7
- package/build/src/http-server/client/request-timing.d.ts +5 -5
- package/build/src/http-server/client/request-timing.d.ts.map +1 -1
- package/build/src/http-server/client/request-timing.js +6 -6
- package/build/src/http-server/client/request.js +2 -2
- package/build/src/http-server/client/response.d.ts +3 -3
- package/build/src/http-server/client/response.d.ts.map +1 -1
- package/build/src/http-server/client/response.js +6 -6
- package/build/src/http-server/client/websocket-request.d.ts +3 -3
- package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-request.js +5 -5
- package/build/src/http-server/client/websocket-session.d.ts +6 -6
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +19 -19
- package/build/src/http-server/development-reloader.d.ts +3 -3
- package/build/src/http-server/development-reloader.d.ts.map +1 -1
- package/build/src/http-server/development-reloader.js +6 -6
- package/build/src/http-server/index.d.ts +7 -7
- package/build/src/http-server/index.d.ts.map +1 -1
- package/build/src/http-server/index.js +13 -13
- package/build/src/http-server/remote-address.js +6 -6
- package/build/src/http-server/server-client.js +4 -4
- package/build/src/http-server/server-lock.js +5 -5
- package/build/src/http-server/websocket-channel-subscribers.d.ts +1 -1
- package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel-subscribers.js +4 -4
- package/build/src/http-server/websocket-channel.d.ts +1 -1
- package/build/src/http-server/websocket-channel.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel.js +2 -2
- package/build/src/http-server/websocket-connection.d.ts +1 -1
- package/build/src/http-server/websocket-connection.d.ts.map +1 -1
- package/build/src/http-server/websocket-connection.js +2 -2
- package/build/src/http-server/websocket-event-log-store.d.ts +1 -1
- package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
- package/build/src/http-server/websocket-event-log-store.js +7 -7
- package/build/src/http-server/websocket-events-host.d.ts +1 -1
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +3 -3
- package/build/src/http-server/worker-handler/in-process.d.ts +3 -3
- package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/in-process.js +9 -9
- package/build/src/http-server/worker-handler/index.d.ts +4 -4
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +5 -5
- package/build/src/http-server/worker-handler/worker-thread.d.ts +2 -2
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +4 -4
- package/build/src/logger/outputs/array-output.d.ts +3 -3
- package/build/src/logger/outputs/array-output.d.ts.map +1 -1
- package/build/src/logger/outputs/array-output.js +4 -4
- package/build/src/logger/outputs/console-output.d.ts +1 -1
- package/build/src/logger/outputs/console-output.d.ts.map +1 -1
- package/build/src/logger/outputs/console-output.js +2 -2
- package/build/src/logger/outputs/file-output.d.ts +4 -4
- package/build/src/logger/outputs/file-output.d.ts.map +1 -1
- package/build/src/logger/outputs/file-output.js +5 -5
- package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
- package/build/src/logger/outputs/stdout-output.js +2 -2
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/logger.js +11 -11
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +5 -5
- package/build/src/mailer/base.js +11 -11
- package/build/src/mailer/delivery.d.ts +3 -3
- package/build/src/mailer/delivery.d.ts.map +1 -1
- package/build/src/mailer/delivery.js +5 -5
- package/build/src/plugins/sqljs-wasm-route-controller.js +2 -2
- package/build/src/routes/base-route.d.ts +6 -6
- package/build/src/routes/base-route.d.ts.map +1 -1
- package/build/src/routes/base-route.js +7 -7
- package/build/src/routes/basic-route.js +2 -2
- package/build/src/routes/hooks/frontend-model-command-route-hook.js +2 -2
- package/build/src/routes/index.js +2 -2
- package/build/src/routes/plugin-routes.js +2 -2
- package/build/src/routes/resolver.d.ts +1 -1
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +13 -13
- package/build/src/routes/resource-route.d.ts +1 -1
- package/build/src/routes/resource-route.d.ts.map +1 -1
- package/build/src/routes/resource-route.js +2 -2
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +8 -8
- package/build/src/testing/expect-utils.js +13 -13
- package/build/src/testing/expect.d.ts +1 -1
- package/build/src/testing/expect.d.ts.map +1 -1
- package/build/src/testing/expect.js +9 -9
- package/build/src/testing/test-files-finder.d.ts +8 -8
- package/build/src/testing/test-files-finder.d.ts.map +1 -1
- package/build/src/testing/test-files-finder.js +9 -9
- package/build/src/testing/test-filter-parser.js +3 -3
- package/build/src/testing/test-runner.d.ts +2 -2
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +17 -17
- package/build/src/testing/test-suite-splitter.js +2 -2
- package/build/src/testing/test.d.ts +2 -2
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +16 -16
- package/build/src/utils/backtrace-cleaner.d.ts +1 -1
- package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
- package/build/src/utils/backtrace-cleaner.js +2 -2
- package/build/src/utils/format-value.js +2 -2
- package/build/src/utils/model-scope.js +2 -2
- package/build/src/utils/ransack.js +27 -27
- package/build/src/utils/with-tracked-stack-async-hooks.js +8 -8
- package/build/src/utils/with-tracked-stack.js +4 -4
- package/build/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
- package/build/testing/expect-utils.js +11 -11
- package/build/testing/expect.js +7 -7
- package/build/testing/test-files-finder.js +8 -8
- package/build/testing/test-filter-parser.js +2 -2
- package/build/testing/test-runner.js +16 -16
- package/build/testing/test-suite-splitter.js +1 -1
- package/build/testing/test.js +15 -15
- package/build/utils/backtrace-cleaner.js +1 -1
- package/build/utils/format-value.js +1 -1
- package/build/utils/model-scope.js +1 -1
- package/build/utils/ransack.js +26 -26
- package/build/utils/with-tracked-stack-async-hooks.js +7 -7
- package/build/utils/with-tracked-stack.js +3 -3
- package/package.json +2 -1
- package/src/application.js +4 -4
- package/src/authorization/ability.js +8 -8
- package/src/authorization/base-resource.js +4 -4
- package/src/background-jobs/cron-expression.js +1 -1
- package/src/background-jobs/forked-runner-child.js +1 -1
- package/src/background-jobs/job-registry.js +1 -1
- package/src/background-jobs/job-runner.js +1 -1
- package/src/background-jobs/job.js +1 -1
- package/src/background-jobs/json-socket.js +4 -4
- package/src/background-jobs/main.js +21 -21
- package/src/background-jobs/scheduler.js +7 -7
- package/src/background-jobs/store.js +7 -7
- package/src/background-jobs/web/controller.js +2 -2
- package/src/background-jobs/worker.js +12 -12
- package/src/beacon/client.js +11 -8
- package/src/beacon/in-process-broker.js +2 -2
- package/src/beacon/in-process-client.js +2 -2
- package/src/beacon/server.js +3 -3
- package/src/cli/browser-cli.js +1 -1
- package/src/cli/commands/db/base-command.js +2 -2
- package/src/cli/index.js +2 -2
- package/src/cli/tenant-database-command-helper.js +3 -3
- package/src/cli/use-browser-cli.js +1 -1
- package/src/configuration-types.js +3 -1
- package/src/configuration.js +38 -38
- package/src/controller.js +8 -8
- package/src/current-configuration.js +1 -1
- package/src/database/annotations-async-hooks.js +2 -2
- package/src/database/annotations.js +3 -3
- package/src/database/drivers/base-column.js +1 -1
- package/src/database/drivers/base-foreign-key.js +1 -1
- package/src/database/drivers/base-table.js +1 -1
- package/src/database/drivers/base.js +10 -10
- package/src/database/drivers/mssql/index.js +1 -1
- package/src/database/drivers/mssql/table.js +1 -1
- package/src/database/drivers/mysql/index.js +3 -3
- package/src/database/drivers/mysql/query.js +1 -1
- package/src/database/drivers/mysql/table.js +1 -1
- package/src/database/drivers/pgsql/index.js +2 -2
- package/src/database/drivers/sqlite/base.js +16 -16
- package/src/database/drivers/sqlite/index.js +11 -11
- package/src/database/drivers/sqlite/index.native.js +1 -1
- package/src/database/drivers/sqlite/index.web.js +3 -3
- package/src/database/drivers/sqlite/query.js +1 -1
- package/src/database/drivers/sqlite/query.web.js +1 -1
- package/src/database/drivers/sqlite/sql/alter-table.js +2 -2
- package/src/database/drivers/sqlite/table.js +1 -1
- package/src/database/migrator/files-finder.js +1 -1
- package/src/database/migrator.js +6 -6
- package/src/database/pool/async-tracked-multi-connection.js +27 -27
- package/src/database/pool/base-methods-forward.js +4 -4
- package/src/database/pool/base.js +8 -8
- package/src/database/query/from-base.js +1 -1
- package/src/database/query/index.js +10 -10
- package/src/database/query/join-object.js +3 -3
- package/src/database/query/model-class-query.js +39 -39
- package/src/database/query/preloader/belongs-to.js +22 -22
- package/src/database/query/preloader/has-many.js +20 -20
- package/src/database/query/preloader/has-one.js +8 -8
- package/src/database/query/preloader/selection.js +3 -3
- package/src/database/query/preloader.js +8 -8
- package/src/database/query/query-data.js +9 -9
- package/src/database/query/where-model-class-hash.js +7 -7
- package/src/database/query/with-count.js +9 -9
- package/src/database/record/acts-as-list.js +15 -15
- package/src/database/record/attachments/handle.js +2 -2
- package/src/database/record/attachments/normalize-input.js +12 -12
- package/src/database/record/attachments/storage-drivers/s3.js +6 -6
- package/src/database/record/attachments/store.js +13 -13
- package/src/database/record/index.js +115 -121
- package/src/database/record/instance-relationships/base.js +11 -11
- package/src/database/record/instance-relationships/belongs-to.js +3 -3
- package/src/database/record/instance-relationships/has-many.js +8 -8
- package/src/database/record/instance-relationships/has-one.js +7 -7
- package/src/database/record/relationships/base.js +2 -2
- package/src/database/record/state-machine.js +7 -7
- package/src/database/record/validators/presence.js +1 -1
- package/src/database/record/validators/uniqueness.js +5 -5
- package/src/database/table-data/index.js +4 -4
- package/src/environment-handlers/base.js +2 -2
- package/src/environment-handlers/browser.js +7 -7
- package/src/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
- package/src/environment-handlers/node/cli/commands/console.js +4 -4
- package/src/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
- package/src/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
- package/src/environment-handlers/node.js +6 -6
- package/src/frontend-model-controller.js +81 -82
- package/src/frontend-model-resource/base-resource.js +78 -115
- package/src/frontend-models/base.js +162 -149
- package/src/frontend-models/clear-pending-debounced-callback.js +1 -1
- package/src/frontend-models/event-hook-models.js +2 -2
- package/src/frontend-models/outgoing-event-buffer.js +2 -2
- package/src/frontend-models/preloader.js +5 -5
- package/src/frontend-models/query.js +43 -38
- package/src/frontend-models/resource-definition.js +6 -6
- package/src/frontend-models/transport-serialization.js +11 -11
- package/src/frontend-models/use-destroyed-event.js +10 -10
- package/src/frontend-models/use-model-class-event.js +11 -11
- package/src/frontend-models/use-updated-event.js +11 -11
- package/src/frontend-models/websocket-channel.js +26 -17
- package/src/frontend-models/websocket-publishers.js +9 -9
- package/src/http-client/response.js +2 -2
- package/src/http-server/client/index.js +8 -8
- package/src/http-server/client/params-to-object.js +10 -10
- package/src/http-server/client/request-buffer/form-data-part.js +2 -2
- package/src/http-server/client/request-buffer/index.js +8 -8
- package/src/http-server/client/request-parser.js +3 -3
- package/src/http-server/client/request-runner.js +6 -6
- package/src/http-server/client/request-timing.js +5 -5
- package/src/http-server/client/request.js +1 -1
- package/src/http-server/client/response.js +5 -5
- package/src/http-server/client/websocket-request.js +4 -4
- package/src/http-server/client/websocket-session.js +18 -18
- package/src/http-server/development-reloader.js +5 -5
- package/src/http-server/index.js +12 -12
- package/src/http-server/remote-address.js +4 -4
- package/src/http-server/server-client.js +3 -3
- package/src/http-server/server-lock.js +4 -4
- package/src/http-server/websocket-channel-subscribers.js +3 -3
- package/src/http-server/websocket-channel.js +1 -1
- package/src/http-server/websocket-connection.js +1 -1
- package/src/http-server/websocket-event-log-store.js +6 -6
- package/src/http-server/websocket-events-host.js +2 -2
- package/src/http-server/worker-handler/in-process.js +7 -7
- package/src/http-server/worker-handler/index.js +4 -4
- package/src/http-server/worker-handler/worker-thread.js +3 -3
- package/src/logger/outputs/array-output.js +3 -3
- package/src/logger/outputs/console-output.js +1 -1
- package/src/logger/outputs/file-output.js +4 -4
- package/src/logger/outputs/stdout-output.js +1 -1
- package/src/logger.js +10 -10
- package/src/mailer/backends/smtp.js +3 -3
- package/src/mailer/base.js +8 -8
- package/src/mailer/delivery.js +4 -4
- package/src/plugins/sqljs-wasm-route-controller.js +1 -1
- package/src/routes/base-route.js +6 -6
- package/src/routes/basic-route.js +1 -1
- package/src/routes/hooks/frontend-model-command-route-hook.js +1 -1
- package/src/routes/index.js +1 -1
- package/src/routes/plugin-routes.js +1 -1
- package/src/routes/resolver.js +11 -11
- package/src/routes/resource-route.js +1 -1
- package/src/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
- package/src/testing/expect-utils.js +11 -11
- package/src/testing/expect.js +7 -7
- package/src/testing/test-files-finder.js +8 -8
- package/src/testing/test-filter-parser.js +2 -2
- package/src/testing/test-runner.js +16 -16
- package/src/testing/test-suite-splitter.js +1 -1
- package/src/testing/test.js +15 -15
- package/src/utils/backtrace-cleaner.js +1 -1
- package/src/utils/format-value.js +1 -1
- package/src/utils/model-scope.js +1 -1
- package/src/utils/ransack.js +26 -26
- package/src/utils/with-tracked-stack-async-hooks.js +7 -7
- package/src/utils/with-tracked-stack.js +3 -3
|
@@ -12,11 +12,11 @@ import fileExists from "../../../utils/file-exists.js";
|
|
|
12
12
|
export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
13
13
|
/**
|
|
14
14
|
* Connection.
|
|
15
|
-
|
|
15
|
+
* @type {import("sqlite3").Database | undefined} */
|
|
16
16
|
connection = undefined;
|
|
17
17
|
/**
|
|
18
18
|
* Advisory lock directory.
|
|
19
|
-
|
|
19
|
+
* @type {string | undefined} */
|
|
20
20
|
_advisoryLockDirectory = undefined;
|
|
21
21
|
async connect() {
|
|
22
22
|
const args = this.getArgs();
|
|
@@ -31,7 +31,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
31
31
|
this._advisoryLockDirectory = path.join(databaseDir, `${this.localStorageName()}.velocious-advisory-locks`);
|
|
32
32
|
try {
|
|
33
33
|
// @ts-expect-error
|
|
34
|
-
this.connection = /**
|
|
34
|
+
this.connection = /** @type {import("sqlite3").Database} */ (await open({
|
|
35
35
|
filename: databasePath,
|
|
36
36
|
driver: sqlite3.Database
|
|
37
37
|
}));
|
|
@@ -153,7 +153,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
153
153
|
}
|
|
154
154
|
/**
|
|
155
155
|
* Runs resolve advisory lock directory.
|
|
156
|
-
|
|
156
|
+
* @returns {string} */
|
|
157
157
|
_resolveAdvisoryLockDirectory() {
|
|
158
158
|
if (!this._advisoryLockDirectory) {
|
|
159
159
|
// Fall back to deriving the directory for callers that invoked
|
|
@@ -175,7 +175,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
175
175
|
}
|
|
176
176
|
/**
|
|
177
177
|
* Runs ensure advisory lock directory.
|
|
178
|
-
|
|
178
|
+
* @returns {Promise<void>} */
|
|
179
179
|
async _ensureAdvisoryLockDirectory() {
|
|
180
180
|
await fs.mkdir(this._resolveAdvisoryLockDirectory(), { recursive: true });
|
|
181
181
|
}
|
|
@@ -216,7 +216,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
216
216
|
catch (error) {
|
|
217
217
|
if ( /**
|
|
218
218
|
* Narrows the runtime value to the documented type.
|
|
219
|
-
|
|
219
|
+
* @type {NodeJS.ErrnoException} */(error)?.code !== "EEXIST")
|
|
220
220
|
throw error;
|
|
221
221
|
if (await this._isAdvisoryLockStale(lockPath)) {
|
|
222
222
|
await fs.rm(lockPath, { recursive: true, force: true });
|
|
@@ -250,7 +250,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
250
250
|
catch (error) {
|
|
251
251
|
if ( /**
|
|
252
252
|
* Narrows the runtime value to the documented type.
|
|
253
|
-
|
|
253
|
+
* @type {NodeJS.ErrnoException} */(error)?.code !== "EEXIST")
|
|
254
254
|
throw error;
|
|
255
255
|
if (await this._isAdvisoryLockStale(lockPath)) {
|
|
256
256
|
await fs.rm(lockPath, { recursive: true, force: true });
|
|
@@ -262,7 +262,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
262
262
|
catch (retryError) {
|
|
263
263
|
if ( /**
|
|
264
264
|
* Narrows the runtime value to the documented type.
|
|
265
|
-
|
|
265
|
+
* @type {NodeJS.ErrnoException} */(retryError)?.code === "EEXIST")
|
|
266
266
|
return false;
|
|
267
267
|
throw retryError;
|
|
268
268
|
}
|
|
@@ -313,7 +313,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
313
313
|
async _isAdvisoryLockStale(lockPath) {
|
|
314
314
|
/**
|
|
315
315
|
* Defines rawOwner.
|
|
316
|
-
|
|
316
|
+
* @type {string} */
|
|
317
317
|
let rawOwner;
|
|
318
318
|
try {
|
|
319
319
|
rawOwner = await fs.readFile(path.join(lockPath, "owner.json"), "utf8");
|
|
@@ -324,7 +324,7 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
324
324
|
}
|
|
325
325
|
/**
|
|
326
326
|
* Defines owner.
|
|
327
|
-
|
|
327
|
+
* @type {{pid?: number, hostname?: string}} */
|
|
328
328
|
let owner;
|
|
329
329
|
try {
|
|
330
330
|
owner = JSON.parse(rawOwner);
|
|
@@ -344,8 +344,8 @@ export default class VelociousDatabaseDriversSqliteNode extends Base {
|
|
|
344
344
|
return false;
|
|
345
345
|
}
|
|
346
346
|
catch (error) {
|
|
347
|
-
return /**
|
|
347
|
+
return /** @type {NodeJS.ErrnoException} */ (error)?.code === "ESRCH";
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDdEMsT0FBTyxJQUFJLE1BQU0sd0JBQXdCLENBQUE7QUFDekMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFBO0FBRTNCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV0RCxNQUFNLENBQUMsT0FBTyxPQUFPLGtDQUFtQyxTQUFRLElBQUk7SUFDbEU7O3VEQUVtRDtJQUNuRCxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBRXRCOzttQ0FFK0I7SUFDL0Isc0JBQXNCLEdBQUcsU0FBUyxDQUFBO0lBRWxDLEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQTtRQUNsRSxNQUFNLFlBQVksR0FBRyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFBO1FBRXZFLElBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVB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SSxDQUFBO1FBQ2IsQ0FBQztRQUVEOztzREFFOEM7UUFDOUMsSUFBSSxLQUFLLENBQUE7UUFFVCxJQUFJLENBQUM7WUFDSCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBQ3hELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUVwRSxJQUFJLENBQUM7WUFDSCxnRUFBZ0U7WUFDaEUsK0RBQStEO1lBQy9ELG1EQUFtRDtZQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFFMUIsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sc0ZBQXNGLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEtBQUssT0FBTyxDQUFBO1FBQ3pILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHdhaXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3dhaXQuanNcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5pbXBvcnQgb3MgZnJvbSBcIm5vZGU6b3NcIlxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgcXVlcnkgZnJvbSBcIi4vcXVlcnkuanNcIlxuaW1wb3J0IHNxbGl0ZTMgZnJvbSBcInNxbGl0ZTNcIlxuaW1wb3J0IHtvcGVufSBmcm9tIFwic3FsaXRlXCJcblxuaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5pbXBvcnQgZmlsZUV4aXN0cyBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZmlsZS1leGlzdHMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVOb2RlIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBDb25uZWN0aW9uLlxuICAgIEB0eXBlIHtpbXBvcnQoXCJzcWxpdGUzXCIpLkRhdGFiYXNlIHwgdW5kZWZpbmVkfSAqL1xuICBjb25uZWN0aW9uID0gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIEFkdmlzb3J5IGxvY2sgZGlyZWN0b3J5LlxuICAgIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIF9hZHZpc29yeUxvY2tEaXJlY3RvcnkgPSB1bmRlZmluZWRcblxuICBhc3luYyBjb25uZWN0KCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuICAgIGNvbnN0IGRhdGFiYXNlRGlyID0gYCR7dGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGlyZWN0b3J5KCl9L2RiYFxuICAgIGNvbnN0IGRhdGFiYXNlUGF0aCA9IGAke2RhdGFiYXNlRGlyfS8ke3RoaXMubG9jYWxTdG9yYWdlTmFtZSgpfS5zcWxpdGVgXG5cbiAgICBpZiAoIWF3YWl0IGZpbGVFeGlzdHMoZGF0YWJhc2VEaXIpKSB7XG4gICAgICBhd2FpdCBmcy5ta2RpcihkYXRhYmFzZURpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pXG4gICAgfVxuXG4gICAgaWYgKGFyZ3MucmVzZXQpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhkYXRhYmFzZVBhdGgpXG4gICAgfVxuXG4gICAgdGhpcy5fYWR2aXNvcnlMb2NrRGlyZWN0b3J5ID0gcGF0aC5qb2luKGRhdGFiYXNlRGlyLCBgJHt0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKX0udmVsb2Npb3VzLWFkdmlzb3J5LWxvY2tzYClcblxuICAgIHRyeSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICB0aGlzLmNvbm5lY3Rpb24gPSAvKiogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLiBAdHlwZSB7aW1wb3J0KFwic3FsaXRlM1wiKS5EYXRhYmFzZX0gKi8gKGF3YWl0IG9wZW4oe1xuICAgICAgICBmaWxlbmFtZTogZGF0YWJhc2VQYXRoLFxuICAgICAgICBkcml2ZXI6IHNxbGl0ZTMuRGF0YWJhc2VcbiAgICAgIH0pKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IG9wZW4gZGF0YWJhc2UgJHtkYXRhYmFzZVBhdGh9IGJlY2F1c2Ugb2YgJHtlcnJvci5jb25zdHJ1Y3Rvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAsIHtjYXVzZTogZXJyb3J9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBvcGVuIGRhdGFiYXNlICR7ZGF0YWJhc2VQYXRofSBiZWNhdXNlIG9mICR7dHlwZW9mIGVycm9yfTogJHtlcnJvcn1gLCB7Y2F1c2U6IGVycm9yfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyVmVyc2lvbigpXG4gIH1cblxuICBsb2NhbFN0b3JhZ2VOYW1lKCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuXG4gICAgaWYgKCFhcmdzLm5hbWUpIHRocm93IG5ldyBFcnJvcihcIk5vIG5hbWUgZ2l2ZW4gZm9yIFNRTGl0ZSBOb2RlXCIpXG5cbiAgICByZXR1cm4gYFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZS0tLSR7YXJncy5uYW1lfWBcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbj8uY2xvc2UoKVxuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVlcnkgYWN0dWFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8UmVjb3JkPHN0cmluZywgPz5bXT59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgcXVlcnkgYWN0dWFsLlxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb25uZWN0aW9uXCIpXG5cbiAgICByZXR1cm4gYXdhaXQgcXVlcnkodGhpcy5jb25uZWN0aW9uLCBzcWwpXG4gIH1cblxuICAvKipcbiAgICogTGF5ZXJzIGEgZmlsZXN5c3RlbSBsb2NrIGRpcmVjdG9yeSBvbiB0b3Agb2YgdGhlIGluLXByb2Nlc3Mgd2FpdGVyXG4gICAqIHF1ZXVlIHNvIFNRTGl0ZSBkZXBsb3ltZW50cyB3aXRoIG11bHRpcGxlIE5vZGUgcHJvY2Vzc2VzIHdyaXRpbmcgdG9cbiAgICogdGhlIHNhbWUgZGF0YWJhc2UgZmlsZSBzZWUgY29uc2lzdGVudCBhZHZpc29yeS1sb2NrIG11dHVhbCBleGNsdXNpb25cbiAgICogYWNyb3NzIHByb2Nlc3Nlcywgbm90IGp1c3Qgd2l0aGluIGEgc2luZ2xlIHByb2Nlc3MuXG4gICAqXG4gICAqIFRoZSBpbi1wcm9jZXNzIHF1ZXVlIGZyb20gdGhlIHNoYXJlZCBTUUxpdGUgYmFzZSBjbGFzcyBpcyBzdGlsbCB1c2VkXG4gICAqIGZvciB0aGUgZmFzdCBpbnRyYS1wcm9jZXNzIHBhdGggKG5vIHBvbGxpbmcsIHdhaXRlcnMgd2FrZSBlYWNoIG90aGVyXG4gICAqIHRocm91Z2ggdGhlIGBTZXQ8c3RyaW5nPmAgKyB3YWl0ZXIgcXVldWUpOyB0aGUgZmlsZXN5c3RlbSBsb2NrIGlzXG4gICAqIG9ubHkgY2hlY2tlZCBvbmNlIHRoZSBpbi1wcm9jZXNzIHF1ZXVlIGhhcyBncmFudGVkIHRoZSBjYWxsZXIsIHNvXG4gICAqIHR5cGljYWwgc2luZ2xlLXByb2Nlc3MgdHJhZmZpYyBwYXlzIGF0IG1vc3QgdHdvIGBmcy5ta2RpcmAgY2FsbHNcbiAgICogKGNyZWF0ZSBhbmQgcmVtb3ZlKSBwZXIgY3JpdGljYWwgc2VjdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEBwYXJhbSB7e3RpbWVvdXRNcz86IG51bWJlciB8IG51bGx9fSBbYXJnc10gLSBPcHRpb25hbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kczsgYG51bGxgLCBgdW5kZWZpbmVkYCwgb3IgbmVnYXRpdmUgYmxvY2tzIGZvcmV2ZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgYWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lLCB7dGltZW91dE1zfSA9IHt9KSB7XG4gICAgY29uc3QgZGVhZGxpbmUgPSB0eXBlb2YgdGltZW91dE1zID09PSBcIm51bWJlclwiICYmIHRpbWVvdXRNcyA+PSAwID8gRGF0ZS5ub3coKSArIHRpbWVvdXRNcyA6IG51bGxcbiAgICBjb25zdCByZW1haW5pbmdGb3JJblByb2Nlc3MgPSBkZWFkbGluZSAhPT0gbnVsbCA/IE1hdGgubWF4KDAsIGRlYWRsaW5lIC0gRGF0ZS5ub3coKSkgOiBudWxsXG4gICAgY29uc3QgaW5Qcm9jZXNzQWNxdWlyZWQgPSBhd2FpdCBzdXBlci5hY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUsIHt0aW1lb3V0TXM6IHJlbWFpbmluZ0ZvckluUHJvY2Vzc30pXG5cbiAgICBpZiAoIWluUHJvY2Vzc0FjcXVpcmVkKSByZXR1cm4gZmFsc2VcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZW1haW5pbmdGb3JGaWxlID0gZGVhZGxpbmUgIT09IG51bGwgPyBNYXRoLm1heCgwLCBkZWFkbGluZSAtIERhdGUubm93KCkpIDogbnVsbFxuICAgICAgY29uc3QgZmlsZUFjcXVpcmVkID0gYXdhaXQgdGhpcy5fYWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSwge3RpbWVvdXRNczogcmVtYWluaW5nRm9yRmlsZX0pXG5cbiAgICAgIGlmICghZmlsZUFjcXVpcmVkKSB7XG4gICAgICAgIGF3YWl0IHN1cGVyLnJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGF3YWl0IHN1cGVyLnJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSlcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRyeSBhY3F1aXJlIGFkdmlzb3J5IGxvY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIHRyeUFjcXVpcmVBZHZpc29yeUxvY2sobmFtZSkge1xuICAgIGNvbnN0IGluUHJvY2Vzc0FjcXVpcmVkID0gYXdhaXQgc3VwZXIudHJ5QWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lKVxuXG4gICAgaWYgKCFpblByb2Nlc3NBY3F1aXJlZCkgcmV0dXJuIGZhbHNlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZUFjcXVpcmVkID0gYXdhaXQgdGhpcy5fdHJ5QWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSlcblxuICAgICAgaWYgKCFmaWxlQWNxdWlyZWQpIHtcbiAgICAgICAgYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIHRoZSBsb2NrIG9ubHkgaWYgKip0aGlzKiogZHJpdmVyIGluc3RhbmNlIGFjcXVpcmVkIGl0LCBib3RoXG4gICAqIGluIHRoZSBzaGFyZWQgaW4tcHJvY2VzcyBvd25lciB0YWJsZSBhbmQgaW4gdGhlIG9uLWRpc2sgbG9ja1xuICAgKiBkaXJlY3RvcnkuIEEgY2FsbGVyIHRoYXQgdHJpZXMgdG8gcmVsZWFzZSBhIGxvY2sgaXQgbmV2ZXIgYWNxdWlyZWRcbiAgICogKG9yIHRoYXQgd2FzIGFscmVhZHkgcmVsZWFzZWQgYnkgYW5vdGhlciBkcml2ZXIpIGdldHMgYGZhbHNlYCBiYWNrXG4gICAqIGFuZCB0aGUgZmlsZXN5c3RlbSBzdGF0ZSBpcyBsZWZ0IGFsb25lIHNvIHdlIG5ldmVyIGRlbGV0ZSBzb21lYm9keVxuICAgKiBlbHNlJ3MgbG9jayBkaXJlY3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIHJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSkge1xuICAgIGNvbnN0IGluUHJvY2Vzc1JlbGVhc2VkID0gYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuXG4gICAgaWYgKGluUHJvY2Vzc1JlbGVhc2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWxlYXNlQWR2aXNvcnlMb2NrRmlsZShuYW1lKVxuICAgIH1cblxuICAgIHJldHVybiBpblByb2Nlc3NSZWxlYXNlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaXMgYWR2aXNvcnkgbG9jayBoZWxkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBpc0Fkdmlzb3J5TG9ja0hlbGQobmFtZSkge1xuICAgIGlmIChhd2FpdCBzdXBlci5pc0Fkdmlzb3J5TG9ja0hlbGQobmFtZSkpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5faXNBZHZpc29yeUxvY2tGaWxlSGVsZChuYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVzb2x2ZSBhZHZpc29yeSBsb2NrIGRpcmVjdG9yeS5cbiAgICBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBfcmVzb2x2ZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpIHtcbiAgICBpZiAoIXRoaXMuX2Fkdmlzb3J5TG9ja0RpcmVjdG9yeSkge1xuICAgICAgLy8gRmFsbCBiYWNrIHRvIGRlcml2aW5nIHRoZSBkaXJlY3RvcnkgZm9yIGNhbGxlcnMgdGhhdCBpbnZva2VkXG4gICAgICAvLyBhZHZpc29yeSBsb2NrIG1ldGhvZHMgYmVmb3JlIGBjb25uZWN0KClgIHdpcmVkIHRoZSBmaWVsZCBpbi5cbiAgICAgIGNvbnN0IGRhdGFiYXNlRGlyID0gYCR7dGhpcy5nZXRDb25maWd1cmF0aW9uKCkuZ2V0RGlyZWN0b3J5KCl9L2RiYFxuXG4gICAgICB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnkgPSBwYXRoLmpvaW4oZGF0YWJhc2VEaXIsIGAke3RoaXMubG9jYWxTdG9yYWdlTmFtZSgpfS52ZWxvY2lvdXMtYWR2aXNvcnktbG9ja3NgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFkdmlzb3J5IGxvY2sgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBfYWR2aXNvcnlMb2NrUGF0aChuYW1lKSB7XG4gICAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKG5hbWUpLmRpZ2VzdChcImhleFwiKS5zbGljZSgwLCAxNilcbiAgICBjb25zdCBzYWZlTmFtZSA9IG5hbWUucmVwbGFjZSgvW15hLXpBLVowLTkuXy1dL2csIFwiX1wiKS5zbGljZSgwLCA2NClcblxuICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5fcmVzb2x2ZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpLCBgJHtzYWZlTmFtZX0tJHtoYXNofS5sb2NrYClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGVuc3VyZSBhZHZpc29yeSBsb2NrIGRpcmVjdG9yeS5cbiAgICBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gKi9cbiAgYXN5bmMgX2Vuc3VyZUFkdmlzb3J5TG9ja0RpcmVjdG9yeSgpIHtcbiAgICBhd2FpdCBmcy5ta2Rpcih0aGlzLl9yZXNvbHZlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KCksIHtyZWN1cnNpdmU6IHRydWV9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgd3JpdGUgYWR2aXNvcnkgbG9jayBtZXRhZGF0YS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2tEaXJQYXRoIC0gQWJzb2x1dGUgcGF0aCBvZiB0aGUgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgX3dyaXRlQWR2aXNvcnlMb2NrTWV0YWRhdGEobG9ja0RpclBhdGgpIHtcbiAgICBjb25zdCBvd25lclBhdGggPSBwYXRoLmpvaW4obG9ja0RpclBhdGgsIFwib3duZXIuanNvblwiKVxuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBwaWQ6IHByb2Nlc3MucGlkLFxuICAgICAgaG9zdG5hbWU6IG9zLmhvc3RuYW1lKCksXG4gICAgICBhY3F1aXJlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKClcbiAgICB9KVxuXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKG93bmVyUGF0aCwgcGF5bG9hZClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFjcXVpcmUgYWR2aXNvcnkgbG9jayBmaWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHBhcmFtIHt7dGltZW91dE1zPzogbnVtYmVyIHwgbnVsbH19IGFyZ3MgLSBUaW1lb3V0IGFyZ3MuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX2FjcXVpcmVBZHZpc29yeUxvY2tGaWxlKG5hbWUsIHt0aW1lb3V0TXN9KSB7XG4gICAgYXdhaXQgdGhpcy5fZW5zdXJlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KClcblxuICAgIGNvbnN0IGxvY2tQYXRoID0gdGhpcy5fYWR2aXNvcnlMb2NrUGF0aChuYW1lKVxuICAgIGNvbnN0IGRlYWRsaW5lID0gdHlwZW9mIHRpbWVvdXRNcyA9PT0gXCJudW1iZXJcIiAmJiB0aW1lb3V0TXMgPj0gMCA/IERhdGUubm93KCkgKyB0aW1lb3V0TXMgOiBudWxsXG4gICAgY29uc3QgcG9sbEludGVydmFsTXMgPSA1MFxuXG4gICAgLy8gSW50ZW50aW9uYWxseSBsb29waW5nIHdpdGhvdXQgYSBmaXhlZCBpdGVyYXRpb24gY2FwIOKAlCBlaXRoZXIgdGhlXG4gICAgLy8gbWtkaXIgc3VjY2VlZHMsIHRoZSBkZWFkbGluZSBlbGFwc2VzLCBvciBhbiB1bmV4cGVjdGVkIGVycm9yIGlzXG4gICAgLy8gcmUtdGhyb3duLlxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBmcy5ta2Rpcihsb2NrUGF0aClcbiAgICAgICAgYXdhaXQgdGhpcy5fd3JpdGVBZHZpc29yeUxvY2tNZXRhZGF0YShsb2NrUGF0aClcblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKC8qKlxuICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyb3IpPy5jb2RlICE9PSBcIkVFWElTVFwiKSB0aHJvdyBlcnJvclxuXG4gICAgICAgIGlmIChhd2FpdCB0aGlzLl9pc0Fkdmlzb3J5TG9ja1N0YWxlKGxvY2tQYXRoKSkge1xuICAgICAgICAgIGF3YWl0IGZzLnJtKGxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gRGF0ZS5ub3coKVxuXG4gICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgICAgIGF3YWl0IHdhaXQoTWF0aC5taW4ocG9sbEludGVydmFsTXMsIHJlbWFpbmluZykpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgd2FpdChwb2xsSW50ZXJ2YWxNcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRyeSBhY3F1aXJlIGFkdmlzb3J5IGxvY2sgZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX3RyeUFjcXVpcmVBZHZpc29yeUxvY2tGaWxlKG5hbWUpIHtcbiAgICBhd2FpdCB0aGlzLl9lbnN1cmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKVxuXG4gICAgY29uc3QgbG9ja1BhdGggPSB0aGlzLl9hZHZpc29yeUxvY2tQYXRoKG5hbWUpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMubWtkaXIobG9ja1BhdGgpXG4gICAgICBhd2FpdCB0aGlzLl93cml0ZUFkdmlzb3J5TG9ja01ldGFkYXRhKGxvY2tQYXRoKVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoLyoqXG4gICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8gKGVycm9yKT8uY29kZSAhPT0gXCJFRVhJU1RcIikgdGhyb3cgZXJyb3JcblxuICAgICAgaWYgKGF3YWl0IHRoaXMuX2lzQWR2aXNvcnlMb2NrU3RhbGUobG9ja1BhdGgpKSB7XG4gICAgICAgIGF3YWl0IGZzLnJtKGxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmcy5ta2Rpcihsb2NrUGF0aClcbiAgICAgICAgICBhd2FpdCB0aGlzLl93cml0ZUFkdmlzb3J5TG9ja01ldGFkYXRhKGxvY2tQYXRoKVxuXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSBjYXRjaCAocmV0cnlFcnJvcikge1xuICAgICAgICAgIGlmICgvKipcbiAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovIChyZXRyeUVycm9yKT8uY29kZSA9PT0gXCJFRVhJU1RcIikgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgICB0aHJvdyByZXRyeUVycm9yXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVsZWFzZSBhZHZpc29yeSBsb2NrIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIF9yZWxlYXNlQWR2aXNvcnlMb2NrRmlsZShuYW1lKSB7XG4gICAgY29uc3QgbG9ja1BhdGggPSB0aGlzLl9hZHZpc29yeUxvY2tQYXRoKG5hbWUpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMucm0obG9ja1BhdGgsIHtyZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlfSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEJlc3QtZWZmb3J0IHJlbGVhc2U7IGluLXByb2Nlc3Mgc3RhdGUgaXMgc3RpbGwgYXV0aG9yaXRhdGl2ZSBhbmRcbiAgICAgIC8vIHN0YWxlLWxvY2sgY2xlYW51cCBvbiB0aGUgbmV4dCBhY3F1aXJlIHdpbGwgcmVtb3ZlIHRoZSBkaXJlY3RvcnlcbiAgICAgIC8vIGlmIGl0IHJlYWxseSBpcyBzdGlsbCBsaW5nZXJpbmcuXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaXMgYWR2aXNvcnkgbG9jayBmaWxlIGhlbGQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIF9pc0Fkdmlzb3J5TG9ja0ZpbGVIZWxkKG5hbWUpIHtcbiAgICBjb25zdCBsb2NrUGF0aCA9IHRoaXMuX2Fkdmlzb3J5TG9ja1BhdGgobmFtZSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5zdGF0KGxvY2tQYXRoKVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuICFhd2FpdCB0aGlzLl9pc0Fkdmlzb3J5TG9ja1N0YWxlKGxvY2tQYXRoKVxuICB9XG5cbiAgLyoqXG4gICAqIEEgbG9jayBkaXJlY3RvcnkgaXMgY29uc2lkZXJlZCBzdGFsZSB3aGVuIGl0cyBvd25lciBtZXRhZGF0YSBuYW1lcyBhXG4gICAqIFBJRCBvbiB0aGlzIGhvc3QgdGhhdCBpcyBubyBsb25nZXIgcnVubmluZy4gQ3Jvc3MtaG9zdCBvd25lcnNoaXAgKGFcbiAgICogZGlmZmVyZW50IGBob3N0bmFtZWApIGlzIHRyZWF0ZWQgYXMgbGl2ZSBiZWNhdXNlIHdlIGNhbm5vdCByZWxpYWJseVxuICAgKiBwcm9iZSBhIFBJRCBvbiBhbm90aGVyIG1hY2hpbmU7IG9wZXJhdG9ycyBpbiB0aGF0IHNpdHVhdGlvbiBzaG91bGRcbiAgICogcmVtb3ZlIHN0YWxlIGxvY2sgZGlyZWN0b3JpZXMgYnkgaGFuZCBpZiB0aGV5IGxpbmdlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2tQYXRoIC0gQWJzb2x1dGUgcGF0aCBvZiB0aGUgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX2lzQWR2aXNvcnlMb2NrU3RhbGUobG9ja1BhdGgpIHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHJhd093bmVyLlxuICAgICAgQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgcmF3T3duZXJcblxuICAgIHRyeSB7XG4gICAgICByYXdPd25lciA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbihsb2NrUGF0aCwgXCJvd25lci5qc29uXCIpLCBcInV0ZjhcIilcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE1pc3Npbmcgb3IgdW5yZWFkYWJsZSBtZXRhZGF0YSDigJQgdHJlYXQgYXMgc3RhbGUgc28gd2UgY2FuIHJlY2xhaW0uXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgb3duZXIuXG4gICAgICBAdHlwZSB7e3BpZD86IG51bWJlciwgaG9zdG5hbWU/OiBzdHJpbmd9fSAqL1xuICAgIGxldCBvd25lclxuXG4gICAgdHJ5IHtcbiAgICAgIG93bmVyID0gSlNPTi5wYXJzZShyYXdPd25lcilcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaWYgKCFvd25lciB8fCB0eXBlb2Ygb3duZXIucGlkICE9PSBcIm51bWJlclwiKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChvd25lci5ob3N0bmFtZSAmJiBvd25lci5ob3N0bmFtZSAhPT0gb3MuaG9zdG5hbWUoKSkgcmV0dXJuIGZhbHNlXG5cbiAgICB0cnkge1xuICAgICAgLy8gYGtpbGwocGlkLCAwKWAgaXMgYSBuby1vcCBzaWduYWwgdGhhdCBmYWlscyB3aXRoIEVTUkNIIGlmIHRoZVxuICAgICAgLy8gcHJvY2VzcyBpcyBub3QgcnVubmluZzsgcGVybWlzc2lvbiBlcnJvcnMgc3RpbGwgaW5kaWNhdGUgdGhlXG4gICAgICAvLyBwcm9jZXNzIGV4aXN0cyBzbyB3ZSB0cmVhdCB0aG9zZSBhcyBcIm5vdCBzdGFsZVwiLlxuICAgICAgcHJvY2Vzcy5raWxsKG93bmVyLnBpZCwgMClcblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiAvKiogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyb3IpPy5jb2RlID09PSBcIkVTUkNIXCJcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxhQUFhLENBQUE7QUFDdEMsT0FBTyxJQUFJLE1BQU0sd0JBQXdCLENBQUE7QUFDekMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUN4QixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFBO0FBQzlCLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFBO0FBRTNCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLFVBQVUsTUFBTSwrQkFBK0IsQ0FBQTtBQUV0RCxNQUFNLENBQUMsT0FBTyxPQUFPLGtDQUFtQyxTQUFRLElBQUk7SUFDbEU7O3dEQUVvRDtJQUNwRCxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBRXRCOztvQ0FFZ0M7SUFDaEMsc0JBQXNCLEdBQUcsU0FBUyxDQUFBO0lBRWxDLEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCLE1BQU0sV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQTtRQUNsRSxNQUFNLFlBQVksR0FBRyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFBO1FBRXZFLElBQUksQ0FBQyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVB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SSxDQUFBO1FBQ2IsQ0FBQztRQUVEOzt1REFFK0M7UUFDL0MsSUFBSSxLQUFLLENBQUE7UUFFVCxJQUFJLENBQUM7WUFDSCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBQ3hELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUVwRSxJQUFJLENBQUM7WUFDSCxnRUFBZ0U7WUFDaEUsK0RBQStEO1lBQy9ELG1EQUFtRDtZQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFFMUIsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sb0NBQW9DLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEtBQUssT0FBTyxDQUFBO1FBQ3ZFLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHtjcmVhdGVIYXNofSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuaW1wb3J0IHdhaXQgZnJvbSBcImF3YWl0ZXJ5L2J1aWxkL3dhaXQuanNcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5pbXBvcnQgb3MgZnJvbSBcIm5vZGU6b3NcIlxuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiXG5pbXBvcnQgcXVlcnkgZnJvbSBcIi4vcXVlcnkuanNcIlxuaW1wb3J0IHNxbGl0ZTMgZnJvbSBcInNxbGl0ZTNcIlxuaW1wb3J0IHtvcGVufSBmcm9tIFwic3FsaXRlXCJcblxuaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5pbXBvcnQgZmlsZUV4aXN0cyBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvZmlsZS1leGlzdHMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVOb2RlIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBDb25uZWN0aW9uLlxuICAgKiBAdHlwZSB7aW1wb3J0KFwic3FsaXRlM1wiKS5EYXRhYmFzZSB8IHVuZGVmaW5lZH0gKi9cbiAgY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBBZHZpc29yeSBsb2NrIGRpcmVjdG9yeS5cbiAgICogQHR5cGUge3N0cmluZyB8IHVuZGVmaW5lZH0gKi9cbiAgX2Fkdmlzb3J5TG9ja0RpcmVjdG9yeSA9IHVuZGVmaW5lZFxuXG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuZ2V0QXJncygpXG4gICAgY29uc3QgZGF0YWJhc2VEaXIgPSBgJHt0aGlzLmdldENvbmZpZ3VyYXRpb24oKS5nZXREaXJlY3RvcnkoKX0vZGJgXG4gICAgY29uc3QgZGF0YWJhc2VQYXRoID0gYCR7ZGF0YWJhc2VEaXJ9LyR7dGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCl9LnNxbGl0ZWBcblxuICAgIGlmICghYXdhaXQgZmlsZUV4aXN0cyhkYXRhYmFzZURpcikpIHtcbiAgICAgIGF3YWl0IGZzLm1rZGlyKGRhdGFiYXNlRGlyLCB7cmVjdXJzaXZlOiB0cnVlfSlcbiAgICB9XG5cbiAgICBpZiAoYXJncy5yZXNldCkge1xuICAgICAgYXdhaXQgZnMudW5saW5rKGRhdGFiYXNlUGF0aClcbiAgICB9XG5cbiAgICB0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnkgPSBwYXRoLmpvaW4oZGF0YWJhc2VEaXIsIGAke3RoaXMubG9jYWxTdG9yYWdlTmFtZSgpfS52ZWxvY2lvdXMtYWR2aXNvcnktbG9ja3NgKVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHRoaXMuY29ubmVjdGlvbiA9IC8qKiBAdHlwZSB7aW1wb3J0KFwic3FsaXRlM1wiKS5EYXRhYmFzZX0gKi8gKGF3YWl0IG9wZW4oe1xuICAgICAgICBmaWxlbmFtZTogZGF0YWJhc2VQYXRoLFxuICAgICAgICBkcml2ZXI6IHNxbGl0ZTMuRGF0YWJhc2VcbiAgICAgIH0pKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IG9wZW4gZGF0YWJhc2UgJHtkYXRhYmFzZVBhdGh9IGJlY2F1c2Ugb2YgJHtlcnJvci5jb25zdHJ1Y3Rvci5uYW1lfTogJHtlcnJvci5tZXNzYWdlfWAsIHtjYXVzZTogZXJyb3J9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBvcGVuIGRhdGFiYXNlICR7ZGF0YWJhc2VQYXRofSBiZWNhdXNlIG9mICR7dHlwZW9mIGVycm9yfTogJHtlcnJvcn1gLCB7Y2F1c2U6IGVycm9yfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyVmVyc2lvbigpXG4gIH1cblxuICBsb2NhbFN0b3JhZ2VOYW1lKCkge1xuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmdldEFyZ3MoKVxuXG4gICAgaWYgKCFhcmdzLm5hbWUpIHRocm93IG5ldyBFcnJvcihcIk5vIG5hbWUgZ2l2ZW4gZm9yIFNRTGl0ZSBOb2RlXCIpXG5cbiAgICByZXR1cm4gYFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZS0tLSR7YXJncy5uYW1lfWBcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKCkge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbj8uY2xvc2UoKVxuICAgIHRoaXMuY29ubmVjdGlvbiA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcXVlcnkgYWN0dWFsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge1Byb21pc2U8UmVjb3JkPHN0cmluZywgPz5bXT59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgcXVlcnkgYWN0dWFsLlxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb25uZWN0aW9uXCIpXG5cbiAgICByZXR1cm4gYXdhaXQgcXVlcnkodGhpcy5jb25uZWN0aW9uLCBzcWwpXG4gIH1cblxuICAvKipcbiAgICogTGF5ZXJzIGEgZmlsZXN5c3RlbSBsb2NrIGRpcmVjdG9yeSBvbiB0b3Agb2YgdGhlIGluLXByb2Nlc3Mgd2FpdGVyXG4gICAqIHF1ZXVlIHNvIFNRTGl0ZSBkZXBsb3ltZW50cyB3aXRoIG11bHRpcGxlIE5vZGUgcHJvY2Vzc2VzIHdyaXRpbmcgdG9cbiAgICogdGhlIHNhbWUgZGF0YWJhc2UgZmlsZSBzZWUgY29uc2lzdGVudCBhZHZpc29yeS1sb2NrIG11dHVhbCBleGNsdXNpb25cbiAgICogYWNyb3NzIHByb2Nlc3Nlcywgbm90IGp1c3Qgd2l0aGluIGEgc2luZ2xlIHByb2Nlc3MuXG4gICAqXG4gICAqIFRoZSBpbi1wcm9jZXNzIHF1ZXVlIGZyb20gdGhlIHNoYXJlZCBTUUxpdGUgYmFzZSBjbGFzcyBpcyBzdGlsbCB1c2VkXG4gICAqIGZvciB0aGUgZmFzdCBpbnRyYS1wcm9jZXNzIHBhdGggKG5vIHBvbGxpbmcsIHdhaXRlcnMgd2FrZSBlYWNoIG90aGVyXG4gICAqIHRocm91Z2ggdGhlIGBTZXQ8c3RyaW5nPmAgKyB3YWl0ZXIgcXVldWUpOyB0aGUgZmlsZXN5c3RlbSBsb2NrIGlzXG4gICAqIG9ubHkgY2hlY2tlZCBvbmNlIHRoZSBpbi1wcm9jZXNzIHF1ZXVlIGhhcyBncmFudGVkIHRoZSBjYWxsZXIsIHNvXG4gICAqIHR5cGljYWwgc2luZ2xlLXByb2Nlc3MgdHJhZmZpYyBwYXlzIGF0IG1vc3QgdHdvIGBmcy5ta2RpcmAgY2FsbHNcbiAgICogKGNyZWF0ZSBhbmQgcmVtb3ZlKSBwZXIgY3JpdGljYWwgc2VjdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEBwYXJhbSB7e3RpbWVvdXRNcz86IG51bWJlciB8IG51bGx9fSBbYXJnc10gLSBPcHRpb25hbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kczsgYG51bGxgLCBgdW5kZWZpbmVkYCwgb3IgbmVnYXRpdmUgYmxvY2tzIGZvcmV2ZXIuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgYWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lLCB7dGltZW91dE1zfSA9IHt9KSB7XG4gICAgY29uc3QgZGVhZGxpbmUgPSB0eXBlb2YgdGltZW91dE1zID09PSBcIm51bWJlclwiICYmIHRpbWVvdXRNcyA+PSAwID8gRGF0ZS5ub3coKSArIHRpbWVvdXRNcyA6IG51bGxcbiAgICBjb25zdCByZW1haW5pbmdGb3JJblByb2Nlc3MgPSBkZWFkbGluZSAhPT0gbnVsbCA/IE1hdGgubWF4KDAsIGRlYWRsaW5lIC0gRGF0ZS5ub3coKSkgOiBudWxsXG4gICAgY29uc3QgaW5Qcm9jZXNzQWNxdWlyZWQgPSBhd2FpdCBzdXBlci5hY3F1aXJlQWR2aXNvcnlMb2NrKG5hbWUsIHt0aW1lb3V0TXM6IHJlbWFpbmluZ0ZvckluUHJvY2Vzc30pXG5cbiAgICBpZiAoIWluUHJvY2Vzc0FjcXVpcmVkKSByZXR1cm4gZmFsc2VcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZW1haW5pbmdGb3JGaWxlID0gZGVhZGxpbmUgIT09IG51bGwgPyBNYXRoLm1heCgwLCBkZWFkbGluZSAtIERhdGUubm93KCkpIDogbnVsbFxuICAgICAgY29uc3QgZmlsZUFjcXVpcmVkID0gYXdhaXQgdGhpcy5fYWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSwge3RpbWVvdXRNczogcmVtYWluaW5nRm9yRmlsZX0pXG5cbiAgICAgIGlmICghZmlsZUFjcXVpcmVkKSB7XG4gICAgICAgIGF3YWl0IHN1cGVyLnJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGF3YWl0IHN1cGVyLnJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSlcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRyeSBhY3F1aXJlIGFkdmlzb3J5IGxvY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIHRyeUFjcXVpcmVBZHZpc29yeUxvY2sobmFtZSkge1xuICAgIGNvbnN0IGluUHJvY2Vzc0FjcXVpcmVkID0gYXdhaXQgc3VwZXIudHJ5QWNxdWlyZUFkdmlzb3J5TG9jayhuYW1lKVxuXG4gICAgaWYgKCFpblByb2Nlc3NBY3F1aXJlZCkgcmV0dXJuIGZhbHNlXG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZUFjcXVpcmVkID0gYXdhaXQgdGhpcy5fdHJ5QWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSlcblxuICAgICAgaWYgKCFmaWxlQWNxdWlyZWQpIHtcbiAgICAgICAgYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIHRoZSBsb2NrIG9ubHkgaWYgKip0aGlzKiogZHJpdmVyIGluc3RhbmNlIGFjcXVpcmVkIGl0LCBib3RoXG4gICAqIGluIHRoZSBzaGFyZWQgaW4tcHJvY2VzcyBvd25lciB0YWJsZSBhbmQgaW4gdGhlIG9uLWRpc2sgbG9ja1xuICAgKiBkaXJlY3RvcnkuIEEgY2FsbGVyIHRoYXQgdHJpZXMgdG8gcmVsZWFzZSBhIGxvY2sgaXQgbmV2ZXIgYWNxdWlyZWRcbiAgICogKG9yIHRoYXQgd2FzIGFscmVhZHkgcmVsZWFzZWQgYnkgYW5vdGhlciBkcml2ZXIpIGdldHMgYGZhbHNlYCBiYWNrXG4gICAqIGFuZCB0aGUgZmlsZXN5c3RlbSBzdGF0ZSBpcyBsZWZ0IGFsb25lIHNvIHdlIG5ldmVyIGRlbGV0ZSBzb21lYm9keVxuICAgKiBlbHNlJ3MgbG9jayBkaXJlY3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIHJlbGVhc2VBZHZpc29yeUxvY2sobmFtZSkge1xuICAgIGNvbnN0IGluUHJvY2Vzc1JlbGVhc2VkID0gYXdhaXQgc3VwZXIucmVsZWFzZUFkdmlzb3J5TG9jayhuYW1lKVxuXG4gICAgaWYgKGluUHJvY2Vzc1JlbGVhc2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLl9yZWxlYXNlQWR2aXNvcnlMb2NrRmlsZShuYW1lKVxuICAgIH1cblxuICAgIHJldHVybiBpblByb2Nlc3NSZWxlYXNlZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaXMgYWR2aXNvcnkgbG9jayBoZWxkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIExvY2sgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBpc0Fkdmlzb3J5TG9ja0hlbGQobmFtZSkge1xuICAgIGlmIChhd2FpdCBzdXBlci5pc0Fkdmlzb3J5TG9ja0hlbGQobmFtZSkpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5faXNBZHZpc29yeUxvY2tGaWxlSGVsZChuYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmVzb2x2ZSBhZHZpc29yeSBsb2NrIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge3N0cmluZ30gKi9cbiAgX3Jlc29sdmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKSB7XG4gICAgaWYgKCF0aGlzLl9hZHZpc29yeUxvY2tEaXJlY3RvcnkpIHtcbiAgICAgIC8vIEZhbGwgYmFjayB0byBkZXJpdmluZyB0aGUgZGlyZWN0b3J5IGZvciBjYWxsZXJzIHRoYXQgaW52b2tlZFxuICAgICAgLy8gYWR2aXNvcnkgbG9jayBtZXRob2RzIGJlZm9yZSBgY29ubmVjdCgpYCB3aXJlZCB0aGUgZmllbGQgaW4uXG4gICAgICBjb25zdCBkYXRhYmFzZURpciA9IGAke3RoaXMuZ2V0Q29uZmlndXJhdGlvbigpLmdldERpcmVjdG9yeSgpfS9kYmBcblxuICAgICAgdGhpcy5fYWR2aXNvcnlMb2NrRGlyZWN0b3J5ID0gcGF0aC5qb2luKGRhdGFiYXNlRGlyLCBgJHt0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKX0udmVsb2Npb3VzLWFkdmlzb3J5LWxvY2tzYClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fYWR2aXNvcnlMb2NrRGlyZWN0b3J5XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhZHZpc29yeSBsb2NrIHBhdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgX2Fkdmlzb3J5TG9ja1BhdGgobmFtZSkge1xuICAgIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShuYW1lKS5kaWdlc3QoXCJoZXhcIikuc2xpY2UoMCwgMTYpXG4gICAgY29uc3Qgc2FmZU5hbWUgPSBuYW1lLnJlcGxhY2UoL1teYS16QS1aMC05Ll8tXS9nLCBcIl9cIikuc2xpY2UoMCwgNjQpXG5cbiAgICByZXR1cm4gcGF0aC5qb2luKHRoaXMuX3Jlc29sdmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKSwgYCR7c2FmZU5hbWV9LSR7aGFzaH0ubG9ja2ApXG4gIH1cblxuICAvKipcbiAgICogUnVucyBlbnN1cmUgYWR2aXNvcnkgbG9jayBkaXJlY3RvcnkuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAqL1xuICBhc3luYyBfZW5zdXJlQWR2aXNvcnlMb2NrRGlyZWN0b3J5KCkge1xuICAgIGF3YWl0IGZzLm1rZGlyKHRoaXMuX3Jlc29sdmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKSwge3JlY3Vyc2l2ZTogdHJ1ZX0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyB3cml0ZSBhZHZpc29yeSBsb2NrIG1ldGFkYXRhLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9ja0RpclBhdGggLSBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBsb2NrIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBfd3JpdGVBZHZpc29yeUxvY2tNZXRhZGF0YShsb2NrRGlyUGF0aCkge1xuICAgIGNvbnN0IG93bmVyUGF0aCA9IHBhdGguam9pbihsb2NrRGlyUGF0aCwgXCJvd25lci5qc29uXCIpXG4gICAgY29uc3QgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHBpZDogcHJvY2Vzcy5waWQsXG4gICAgICBob3N0bmFtZTogb3MuaG9zdG5hbWUoKSxcbiAgICAgIGFjcXVpcmVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKVxuICAgIH0pXG5cbiAgICBhd2FpdCBmcy53cml0ZUZpbGUob3duZXJQYXRoLCBwYXlsb2FkKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWNxdWlyZSBhZHZpc29yeSBsb2NrIGZpbGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTG9jayBuYW1lLlxuICAgKiBAcGFyYW0ge3t0aW1lb3V0TXM/OiBudW1iZXIgfCBudWxsfX0gYXJncyAtIFRpbWVvdXQgYXJncy5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBfYWNxdWlyZUFkdmlzb3J5TG9ja0ZpbGUobmFtZSwge3RpbWVvdXRNc30pIHtcbiAgICBhd2FpdCB0aGlzLl9lbnN1cmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKVxuXG4gICAgY29uc3QgbG9ja1BhdGggPSB0aGlzLl9hZHZpc29yeUxvY2tQYXRoKG5hbWUpXG4gICAgY29uc3QgZGVhZGxpbmUgPSB0eXBlb2YgdGltZW91dE1zID09PSBcIm51bWJlclwiICYmIHRpbWVvdXRNcyA+PSAwID8gRGF0ZS5ub3coKSArIHRpbWVvdXRNcyA6IG51bGxcbiAgICBjb25zdCBwb2xsSW50ZXJ2YWxNcyA9IDUwXG5cbiAgICAvLyBJbnRlbnRpb25hbGx5IGxvb3Bpbmcgd2l0aG91dCBhIGZpeGVkIGl0ZXJhdGlvbiBjYXAg4oCUIGVpdGhlciB0aGVcbiAgICAvLyBta2RpciBzdWNjZWVkcywgdGhlIGRlYWRsaW5lIGVsYXBzZXMsIG9yIGFuIHVuZXhwZWN0ZWQgZXJyb3IgaXNcbiAgICAvLyByZS10aHJvd24uXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZzLm1rZGlyKGxvY2tQYXRoKVxuICAgICAgICBhd2FpdCB0aGlzLl93cml0ZUFkdmlzb3J5TG9ja01ldGFkYXRhKGxvY2tQYXRoKVxuXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoLyoqXG4gICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyAoZXJyb3IpPy5jb2RlICE9PSBcIkVFWElTVFwiKSB0aHJvdyBlcnJvclxuXG4gICAgICAgIGlmIChhd2FpdCB0aGlzLl9pc0Fkdmlzb3J5TG9ja1N0YWxlKGxvY2tQYXRoKSkge1xuICAgICAgICAgIGF3YWl0IGZzLnJtKGxvY2tQYXRoLCB7cmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZX0pXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZWFkbGluZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gRGF0ZS5ub3coKVxuXG4gICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSByZXR1cm4gZmFsc2VcblxuICAgICAgICAgIGF3YWl0IHdhaXQoTWF0aC5taW4ocG9sbEludGVydmFsTXMsIHJlbWFpbmluZykpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgd2FpdChwb2xsSW50ZXJ2YWxNcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRyeSBhY3F1aXJlIGFkdmlzb3J5IGxvY2sgZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX3RyeUFjcXVpcmVBZHZpc29yeUxvY2tGaWxlKG5hbWUpIHtcbiAgICBhd2FpdCB0aGlzLl9lbnN1cmVBZHZpc29yeUxvY2tEaXJlY3RvcnkoKVxuXG4gICAgY29uc3QgbG9ja1BhdGggPSB0aGlzLl9hZHZpc29yeUxvY2tQYXRoKG5hbWUpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMubWtkaXIobG9ja1BhdGgpXG4gICAgICBhd2FpdCB0aGlzLl93cml0ZUFkdmlzb3J5TG9ja01ldGFkYXRhKGxvY2tQYXRoKVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoLyoqXG4gICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovIChlcnJvcik/LmNvZGUgIT09IFwiRUVYSVNUXCIpIHRocm93IGVycm9yXG5cbiAgICAgIGlmIChhd2FpdCB0aGlzLl9pc0Fkdmlzb3J5TG9ja1N0YWxlKGxvY2tQYXRoKSkge1xuICAgICAgICBhd2FpdCBmcy5ybShsb2NrUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWV9KVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgZnMubWtkaXIobG9ja1BhdGgpXG4gICAgICAgICAgYXdhaXQgdGhpcy5fd3JpdGVBZHZpc29yeUxvY2tNZXRhZGF0YShsb2NrUGF0aClcblxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH0gY2F0Y2ggKHJldHJ5RXJyb3IpIHtcbiAgICAgICAgICBpZiAoLyoqXG4gICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8gKHJldHJ5RXJyb3IpPy5jb2RlID09PSBcIkVFWElTVFwiKSByZXR1cm4gZmFsc2VcblxuICAgICAgICAgIHRocm93IHJldHJ5RXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyByZWxlYXNlIGFkdmlzb3J5IGxvY2sgZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgX3JlbGVhc2VBZHZpc29yeUxvY2tGaWxlKG5hbWUpIHtcbiAgICBjb25zdCBsb2NrUGF0aCA9IHRoaXMuX2Fkdmlzb3J5TG9ja1BhdGgobmFtZSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5ybShsb2NrUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWV9KVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQmVzdC1lZmZvcnQgcmVsZWFzZTsgaW4tcHJvY2VzcyBzdGF0ZSBpcyBzdGlsbCBhdXRob3JpdGF0aXZlIGFuZFxuICAgICAgLy8gc3RhbGUtbG9jayBjbGVhbnVwIG9uIHRoZSBuZXh0IGFjcXVpcmUgd2lsbCByZW1vdmUgdGhlIGRpcmVjdG9yeVxuICAgICAgLy8gaWYgaXQgcmVhbGx5IGlzIHN0aWxsIGxpbmdlcmluZy5cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBpcyBhZHZpc29yeSBsb2NrIGZpbGUgaGVsZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBMb2NrIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgX2lzQWR2aXNvcnlMb2NrRmlsZUhlbGQobmFtZSkge1xuICAgIGNvbnN0IGxvY2tQYXRoID0gdGhpcy5fYWR2aXNvcnlMb2NrUGF0aChuYW1lKVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzLnN0YXQobG9ja1BhdGgpXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gIWF3YWl0IHRoaXMuX2lzQWR2aXNvcnlMb2NrU3RhbGUobG9ja1BhdGgpXG4gIH1cblxuICAvKipcbiAgICogQSBsb2NrIGRpcmVjdG9yeSBpcyBjb25zaWRlcmVkIHN0YWxlIHdoZW4gaXRzIG93bmVyIG1ldGFkYXRhIG5hbWVzIGFcbiAgICogUElEIG9uIHRoaXMgaG9zdCB0aGF0IGlzIG5vIGxvbmdlciBydW5uaW5nLiBDcm9zcy1ob3N0IG93bmVyc2hpcCAoYVxuICAgKiBkaWZmZXJlbnQgYGhvc3RuYW1lYCkgaXMgdHJlYXRlZCBhcyBsaXZlIGJlY2F1c2Ugd2UgY2Fubm90IHJlbGlhYmx5XG4gICAqIHByb2JlIGEgUElEIG9uIGFub3RoZXIgbWFjaGluZTsgb3BlcmF0b3JzIGluIHRoYXQgc2l0dWF0aW9uIHNob3VsZFxuICAgKiByZW1vdmUgc3RhbGUgbG9jayBkaXJlY3RvcmllcyBieSBoYW5kIGlmIHRoZXkgbGluZ2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9ja1BhdGggLSBBYnNvbHV0ZSBwYXRoIG9mIHRoZSBsb2NrIGRpcmVjdG9yeS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBhc3luYyBfaXNBZHZpc29yeUxvY2tTdGFsZShsb2NrUGF0aCkge1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgcmF3T3duZXIuXG4gICAgICogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgcmF3T3duZXJcblxuICAgIHRyeSB7XG4gICAgICByYXdPd25lciA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbihsb2NrUGF0aCwgXCJvd25lci5qc29uXCIpLCBcInV0ZjhcIilcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIE1pc3Npbmcgb3IgdW5yZWFkYWJsZSBtZXRhZGF0YSDigJQgdHJlYXQgYXMgc3RhbGUgc28gd2UgY2FuIHJlY2xhaW0uXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgb3duZXIuXG4gICAgICogQHR5cGUge3twaWQ/OiBudW1iZXIsIGhvc3RuYW1lPzogc3RyaW5nfX0gKi9cbiAgICBsZXQgb3duZXJcblxuICAgIHRyeSB7XG4gICAgICBvd25lciA9IEpTT04ucGFyc2UocmF3T3duZXIpXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmICghb3duZXIgfHwgdHlwZW9mIG93bmVyLnBpZCAhPT0gXCJudW1iZXJcIikgcmV0dXJuIHRydWVcbiAgICBpZiAob3duZXIuaG9zdG5hbWUgJiYgb3duZXIuaG9zdG5hbWUgIT09IG9zLmhvc3RuYW1lKCkpIHJldHVybiBmYWxzZVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIGBraWxsKHBpZCwgMClgIGlzIGEgbm8tb3Agc2lnbmFsIHRoYXQgZmFpbHMgd2l0aCBFU1JDSCBpZiB0aGVcbiAgICAgIC8vIHByb2Nlc3MgaXMgbm90IHJ1bm5pbmc7IHBlcm1pc3Npb24gZXJyb3JzIHN0aWxsIGluZGljYXRlIHRoZVxuICAgICAgLy8gcHJvY2VzcyBleGlzdHMgc28gd2UgdHJlYXQgdGhvc2UgYXMgXCJub3Qgc3RhbGVcIi5cbiAgICAgIHByb2Nlc3Mua2lsbChvd25lci5waWQsIDApXG5cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovIChlcnJvcik/LmNvZGUgPT09IFwiRVNSQ0hcIlxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -34,7 +34,7 @@ export default class VelociousDatabaseDriversSqliteNative extends Base {
|
|
|
34
34
|
const args = this.getArgs();
|
|
35
35
|
/**
|
|
36
36
|
* Connect args.
|
|
37
|
-
|
|
37
|
+
* @type {Record<string, ?>} */
|
|
38
38
|
const connectArgs = {};
|
|
39
39
|
const forward = ["database", "host", "password"];
|
|
40
40
|
for (const forwardValue of forward) {
|
|
@@ -60,4 +60,4 @@ export default class VelociousDatabaseDriversSqliteNative extends Base {
|
|
|
60
60
|
return await query(this.connection, sql);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgubmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvc3FsaXRlL2luZGV4Lm5hdGl2ZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sUUFBUSxNQUFNLGtDQUFrQyxDQUFBO0FBRXZELG1CQUFtQjtBQUNuQixPQUFPLEtBQUssTUFBTSxTQUFTLENBQUE7QUFFM0IsbUJBQW1CO0FBQ25CLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBRXJDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUU1QixNQUFNLENBQUMsT0FBTyxPQUFPLG9DQUFxQyxTQUFRLElBQUk7SUFDcEUsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLEVBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQTtRQUVsRCxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBRWhKLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFFbEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUU5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUNoRCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLEtBQUssWUFBWSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDO29CQUMvRSxtQkFBbUI7Z0JBQ3JCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixNQUFNLEtBQUssQ0FBQTtnQkFDYixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQzlELE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzNCOzt1Q0FFK0I7UUFDL0IsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFBO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUVoRCxLQUFLLE1BQU0sWUFBWSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksWUFBWSxJQUFJLElBQUk7Z0JBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFDaEYsQ0FBQztRQUVELElBQUksVUFBVSxJQUFJLElBQUk7WUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRTlELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFFMUQsT0FBTyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgZW52U2Vuc2UgZnJvbSBcImVudi1zZW5zZS9idWlsZC91c2UtZW52LXNlbnNlLmpzXCJcblxuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHF1ZXJ5IGZyb20gXCIuL3F1ZXJ5XCJcblxuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0ICogYXMgU1FMaXRlIGZyb20gXCJleHBvLXNxbGl0ZVwiXG5cbmltcG9ydCBCYXNlIGZyb20gXCIuL2Jhc2UuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVOYXRpdmUgZXh0ZW5kcyBCYXNlIHtcbiAgYXN5bmMgY29ubmVjdCgpIHtcbiAgICBjb25zdCB7aXNCcm93c2VyLCBpc05hdGl2ZSwgaXNTZXJ2ZXJ9ID0gZW52U2Vuc2UoKVxuXG4gICAgaWYgKCFpc05hdGl2ZSkgdGhyb3cgbmV3IEVycm9yKGBTUUxpdGUgbmF0aXZlIGRyaXZlciBydW5uaW5nIGluc2lkZSBub24tbmF0aXZlIGVudmlyb25tZW50OiAke0pTT04uc3RyaW5naWZ5KHtpc0Jyb3dzZXIsIGlzTmF0aXZlLCBpc1NlcnZlcn0pfWApXG5cbiAgICBjb25zdCBhcmdzID0gdGhpcy5nZXRBcmdzKClcblxuICAgIGlmICghYXJncy5uYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBuYW1lIGdpdmVuIGZvciBTUUxpdGUgTmF0aXZlXCIpXG5cbiAgICBjb25zdCBkYXRhYmFzZU5hbWUgPSBhcmdzLm5hbWVcblxuICAgIGlmIChhcmdzLnJlc2V0KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBTUUxpdGUuZGVsZXRlRGF0YWJhc2VBc3luYyhkYXRhYmFzZU5hbWUpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnJvci5tZXNzYWdlLm1hdGNoKC9EYXRhYmFzZSAnKC4rKScgbm90IGZvdW5kLykpIHtcbiAgICAgICAgICAvLyBJZ25vcmUgbm90IGZvdW5kXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbiA9IGF3YWl0IFNRTGl0ZS5vcGVuRGF0YWJhc2VBc3luYyhkYXRhYmFzZU5hbWUpXG4gICAgYXdhaXQgdGhpcy5yZWdpc3RlclZlcnNpb24oKVxuICB9XG5cbiAgY29ubmVjdEFyZ3MoKSB7XG4gICAgY29uc3QgYXJncyA9IHRoaXMuZ2V0QXJncygpXG4gICAgLyoqXG4gICAgICogQ29ubmVjdCBhcmdzLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gKi9cbiAgICBjb25zdCBjb25uZWN0QXJncyA9IHt9XG4gICAgY29uc3QgZm9yd2FyZCA9IFtcImRhdGFiYXNlXCIsIFwiaG9zdFwiLCBcInBhc3N3b3JkXCJdXG5cbiAgICBmb3IgKGNvbnN0IGZvcndhcmRWYWx1ZSBvZiBmb3J3YXJkKSB7XG4gICAgICBpZiAoZm9yd2FyZFZhbHVlIGluIGFyZ3MpIGNvbm5lY3RBcmdzW2ZvcndhcmRWYWx1ZV0gPSBkaWdnKGFyZ3MsIGZvcndhcmRWYWx1ZSlcbiAgICB9XG5cbiAgICBpZiAoXCJ1c2VybmFtZVwiIGluIGFyZ3MpIGNvbm5lY3RBcmdzW1widXNlclwiXSA9IGFyZ3NbXCJ1c2VybmFtZVwiXVxuXG4gICAgcmV0dXJuIGNvbm5lY3RBcmdzXG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb24uY2xvc2VBc3luYygpXG4gICAgdGhpcy5jb25uZWN0aW9uID0gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogUnVucyBxdWVyeSBhY3R1YWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBTUUwgc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCA/PltdPn0gLSBRdWVyeSByZXN1bHQgcm93cy5cbiAgICovXG4gIGFzeW5jIF9xdWVyeUFjdHVhbChzcWwpIHtcbiAgICBpZiAoIXRoaXMuY29ubmVjdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiTm90IGNvbm5lY3RlZCB5ZXRcIilcblxuICAgIHJldHVybiBhd2FpdCBxdWVyeSh0aGlzLmNvbm5lY3Rpb24sIHNxbClcbiAgfVxufVxuIl19
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
export default class VelociousDatabaseDriversSqliteWeb extends Base {
|
|
6
6
|
/**
|
|
7
7
|
* Better local storage.
|
|
8
|
-
|
|
8
|
+
* @type {BetterLocalStorage | undefined} */
|
|
9
9
|
betterLocalStorage: BetterLocalStorage | undefined;
|
|
10
10
|
/**
|
|
11
11
|
* Connection.
|
|
12
|
-
|
|
12
|
+
* @type {ConnectionSqlJs | undefined} */
|
|
13
13
|
_connection: ConnectionSqlJs | undefined;
|
|
14
14
|
/**
|
|
15
15
|
* Runs sql js locate file.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.web.js"],"names":[],"mappings":"AAQA;;;GAGG;AAEH;IACE
|
|
1
|
+
{"version":3,"file":"index.web.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/sqlite/index.web.js"],"names":[],"mappings":"AAQA;;;GAGG;AAEH;IACE;;gDAE4C;IAC5C,oBADU,kBAAkB,GAAG,SAAS,CACV;IAC9B;;6CAEyC;IACzC,aADU,eAAe,GAAG,SAAS,CACd;IAEvB;;;OAGG;IACH,mBAFa,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAUpC;IAGC,sFAA0B;IAsB5B;;;OAGG;IACH,iBAFa,eAAe,GAAG,mBAAmB,CASjD;IAED,2BAMC;CAmBF;;;;kCAxFY;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC;iBAJ9E,WAAW;+BAJG,qBAAqB;4BACxB,wBAAwB"}
|
|
@@ -10,11 +10,11 @@ import Base from "./base.js";
|
|
|
10
10
|
export default class VelociousDatabaseDriversSqliteWeb extends Base {
|
|
11
11
|
/**
|
|
12
12
|
* Better local storage.
|
|
13
|
-
|
|
13
|
+
* @type {BetterLocalStorage | undefined} */
|
|
14
14
|
betterLocalStorage = undefined;
|
|
15
15
|
/**
|
|
16
16
|
* Connection.
|
|
17
|
-
|
|
17
|
+
* @type {ConnectionSqlJs | undefined} */
|
|
18
18
|
_connection = undefined;
|
|
19
19
|
/**
|
|
20
20
|
* Runs sql js locate file.
|
|
@@ -49,7 +49,7 @@ export default class VelociousDatabaseDriversSqliteWeb extends Base {
|
|
|
49
49
|
*/
|
|
50
50
|
getConnection() {
|
|
51
51
|
if (this.args?.getConnection) {
|
|
52
|
-
return /**
|
|
52
|
+
return /** @type {SqliteWebConnection} */ (this.args.getConnection());
|
|
53
53
|
}
|
|
54
54
|
else {
|
|
55
55
|
if (!this._connection)
|
|
@@ -78,4 +78,4 @@ export default class VelociousDatabaseDriversSqliteWeb extends Base {
|
|
|
78
78
|
return result;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgud2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvc3FsaXRlL2luZGV4LndlYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxrQkFBa0IsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLGVBQWUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNwRCxPQUFPLFNBQVMsTUFBTSxRQUFRLENBQUE7QUFFOUIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRTVCOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxPQUFPLE9BQU8saUNBQWtDLFNBQVEsSUFBSTtJQUNqRTs7Z0RBRTRDO0lBQzVDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQTtJQUM5Qjs7NkNBRXlDO0lBQ3pDLFdBQVcsR0FBRyxTQUFTLENBQUE7SUFFdkI7OztPQUdHO0lBQ0gsZUFBZTtRQUNiLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUE7UUFFNUMsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxPQUFPLFVBQVUsQ0FBQTtRQUNuQixDQUFDO1FBRUQsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsMkJBQTJCLElBQUksRUFBRSxDQUFBO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRTFCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLGtCQUFrQixFQUFFLENBQUE7WUFFcEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtZQUMvRCxDQUFDO1lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxTQUFTLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFDLENBQUMsQ0FBQTtZQUVqRSxNQUFNLGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtZQUNsRixNQUFNLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUE7WUFFcEYsSUFBSSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUE7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDO1lBQzdCLE9BQU8sa0NBQWtDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFDdkUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFBO1lBQ3hGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQTtRQUN2RSxDQUFDO1FBRUQsT0FBTyx1Q0FBdUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNqRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRztRQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFFcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDdkMsTUFBTSxjQUFjLEdBQUcsVUFBVSxFQUFFLFdBQVcsRUFBRSxJQUFJLElBQUksbUJBQW1CLENBQUE7WUFFM0UsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsY0FBYyxpQ0FBaUMsT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQzFHLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmV0dGVyTG9jYWxTdG9yYWdlIGZyb20gXCJiZXR0ZXItbG9jYWxzdG9yYWdlXCJcbmltcG9ydCBDb25uZWN0aW9uU3FsSnMgZnJvbSBcIi4vY29ubmVjdGlvbi1zcWwtanMuanNcIlxuaW1wb3J0IGluaXRTcWxKcyBmcm9tIFwic3FsLmpzXCJcblxuaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5cbi8qKlxuICogVmVsb2Npb3VzRGF0YWJhc2VEcml2ZXJzU3FsaXRlV2ViIGNsYXNzLlxuICogQHR5cGVkZWYge3txdWVyeTogKHNxbDogc3RyaW5nKSA9PiBQcm9taXNlPFJlY29yZDxzdHJpbmcsID8+W10+LCBjbG9zZTogKCkgPT4gUHJvbWlzZTx2b2lkPn19IFNxbGl0ZVdlYkNvbm5lY3Rpb25cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVXZWIgZXh0ZW5kcyBCYXNlIHtcbiAgLyoqXG4gICAqIEJldHRlciBsb2NhbCBzdG9yYWdlLlxuICAgKiBAdHlwZSB7QmV0dGVyTG9jYWxTdG9yYWdlIHwgdW5kZWZpbmVkfSAqL1xuICBiZXR0ZXJMb2NhbFN0b3JhZ2UgPSB1bmRlZmluZWRcbiAgLyoqXG4gICAqIENvbm5lY3Rpb24uXG4gICAqIEB0eXBlIHtDb25uZWN0aW9uU3FsSnMgfCB1bmRlZmluZWR9ICovXG4gIF9jb25uZWN0aW9uID0gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIFJ1bnMgc3FsIGpzIGxvY2F0ZSBmaWxlLlxuICAgKiBAcmV0dXJucyB7KGZpbGU6IHN0cmluZykgPT4gc3RyaW5nfSAtIGxvY2F0ZUZpbGUgY2FsbGJhY2sgZm9yIHNxbC5qcy5cbiAgICovXG4gIHNxbEpzTG9jYXRlRmlsZSgpIHtcbiAgICBjb25zdCBsb2NhdGVGaWxlID0gdGhpcy5nZXRBcmdzKCkubG9jYXRlRmlsZVxuXG4gICAgaWYgKHR5cGVvZiBsb2NhdGVGaWxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBsb2NhdGVGaWxlXG4gICAgfVxuXG4gICAgcmV0dXJuIChmaWxlKSA9PiBgaHR0cHM6Ly9zcWwuanMub3JnL2Rpc3QvJHtmaWxlfWBcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgdGhpcy5hcmdzID0gdGhpcy5nZXRBcmdzKClcblxuICAgIGlmICghdGhpcy5hcmdzLmdldENvbm5lY3Rpb24pIHtcbiAgICAgIHRoaXMuYmV0dGVyTG9jYWxTdG9yYWdlIHx8PSBuZXcgQmV0dGVyTG9jYWxTdG9yYWdlKClcblxuICAgICAgaWYgKHRoaXMuYXJncy5yZXNldCkge1xuICAgICAgICBhd2FpdCB0aGlzLmJldHRlckxvY2FsU3RvcmFnZS5kZWxldGUodGhpcy5sb2NhbFN0b3JhZ2VOYW1lKCkpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFNRTCA9IGF3YWl0IGluaXRTcWxKcyh7bG9jYXRlRmlsZTogdGhpcy5zcWxKc0xvY2F0ZUZpbGUoKX0pXG5cbiAgICAgIGNvbnN0IGRhdGFiYXNlQ29udGVudCA9IGF3YWl0IHRoaXMuYmV0dGVyTG9jYWxTdG9yYWdlLmdldCh0aGlzLmxvY2FsU3RvcmFnZU5hbWUoKSlcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25TcWxKcyA9IG5ldyBDb25uZWN0aW9uU3FsSnModGhpcywgbmV3IFNRTC5EYXRhYmFzZShkYXRhYmFzZUNvbnRlbnQpKVxuXG4gICAgICB0aGlzLl9jb25uZWN0aW9uID0gY29ubmVjdGlvblNxbEpzXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2xvc2UoKSB7XG4gICAgYXdhaXQgdGhpcy5nZXRDb25uZWN0aW9uKCkuY2xvc2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGNvbm5lY3Rpb24uXG4gICAqIEByZXR1cm5zIHtDb25uZWN0aW9uU3FsSnMgfCBTcWxpdGVXZWJDb25uZWN0aW9ufSAtIFRoZSBjb25uZWN0aW9uLlxuICAgKi9cbiAgZ2V0Q29ubmVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5hcmdzPy5nZXRDb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm4gLyoqIEB0eXBlIHtTcWxpdGVXZWJDb25uZWN0aW9ufSAqLyAodGhpcy5hcmdzLmdldENvbm5lY3Rpb24oKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLl9jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJTUUxpdGUgd2ViIGNvbm5lY3Rpb24gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkXCIpXG4gICAgICByZXR1cm4gdGhpcy5fY29ubmVjdGlvblxuICAgIH1cbiAgfVxuXG4gIGxvY2FsU3RvcmFnZU5hbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFyZ3M/Lm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5hbWUgZ2l2ZW4gaW4gYXJndW1lbnRzIGZvciBTUUxpdGUgV2ViIGRhdGFiYXNlXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIGBWZWxvY2lvdXNEYXRhYmFzZURyaXZlcnNTcWxpdGVXZWItLS0ke3RoaXMuYXJncz8ubmFtZX1gXG4gIH1cblxuICAvKipcbiAgICogUnVucyBxdWVyeSBhY3R1YWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBTUUwgc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCA/PltdPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBxdWVyeSBhY3R1YWwuXG4gICAqL1xuICBhc3luYyBfcXVlcnlBY3R1YWwoc3FsKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRDb25uZWN0aW9uKCkucXVlcnkoc3FsKVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmdldENvbm5lY3Rpb24oKVxuICAgICAgY29uc3QgY29ubmVjdGlvbk5hbWUgPSBjb25uZWN0aW9uPy5jb25zdHJ1Y3Rvcj8ubmFtZSB8fCBcIlVua25vd25Db25uZWN0aW9uXCJcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTcWxpdGUgd2ViIGNvbm5lY3Rpb24gJHtjb25uZWN0aW9uTmFtZX0gcmV0dXJuZWQgYSBub24tYXJyYXkgcmVzdWx0OiAke3R5cGVvZiByZXN1bHR9YClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cbiJdfQ==
|
|
@@ -9,7 +9,7 @@ export default async function query(connection, sql) {
|
|
|
9
9
|
try {
|
|
10
10
|
/**
|
|
11
11
|
* Defines result.
|
|
12
|
-
|
|
12
|
+
* @type {Record<string, ?>[]} */
|
|
13
13
|
let result;
|
|
14
14
|
// @ts-expect-error
|
|
15
15
|
result = await connection.all(sql);
|
|
@@ -29,4 +29,4 @@ export default async function query(connection, sql) {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvcXVlcnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHO0lBQ2pELElBQUksQ0FBQztRQUNIOzt5Q0FFaUM7UUFDakMsSUFBSSxNQUFNLENBQUE7UUFFVixtQkFBbUI7UUFDbkIsTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUVsQyxPQUFPLE1BQU0sQ0FBQTtJQUNmLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxpQkFBaUIsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBRWhDLElBQUksaUJBQWlCLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JDLGlCQUFpQixHQUFHLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ2xFLENBQUM7UUFFRCxJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsT0FBTyxJQUFJLE9BQU8saUJBQWlCLEVBQUUsQ0FBQTtZQUUzQyxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLEtBQUssT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1FBQzFFLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIFJ1bnMgcXVlcnkuXG4gKiBAcGFyYW0ge2ltcG9ydChcInNxbGl0ZTNcIikuRGF0YWJhc2V9IGNvbm5lY3Rpb24gLSBDb25uZWN0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHNxbCAtIFNRTCBzdHJpbmcuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCA/PltdPn0gLSBSZXNvbHZlcyB3aXRoIHN0cmluZyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcXVlcnkoY29ubmVjdGlvbiwgc3FsKSB7XG4gIHRyeSB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyByZXN1bHQuXG4gICAgICogQHR5cGUge1JlY29yZDxzdHJpbmcsID8+W119ICovXG4gICAgbGV0IHJlc3VsdFxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHJlc3VsdCA9IGF3YWl0IGNvbm5lY3Rpb24uYWxsKHNxbClcblxuICAgIHJldHVybiByZXN1bHRcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBsZXQgc3FsSW5FcnJvck1lc3NhZ2UgPSBgJHtzcWx9YFxuXG4gICAgaWYgKHNxbEluRXJyb3JNZXNzYWdlLmxlbmd0aCA+PSA0MDk2KSB7XG4gICAgICBzcWxJbkVycm9yTWVzc2FnZSA9IGAke3NxbEluRXJyb3JNZXNzYWdlLnN1YnN0cmluZygwLCA0MDk2KX0uLi5gXG4gICAgfVxuXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGVycm9yLm1lc3NhZ2UgKz0gYFxcblxcbiR7c3FsSW5FcnJvck1lc3NhZ2V9YFxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IubWVzc2FnZSwge2NhdXNlOiBlcnJvcn0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQ6ICR7ZXJyb3J9XFxuXFxuJHtzcWx9YCwge2NhdXNlOiBlcnJvcn0pXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -29,7 +29,7 @@ export default async function query(connection, sql) {
|
|
|
29
29
|
for (const rowValues of result[0].values) {
|
|
30
30
|
/**
|
|
31
31
|
* Row.
|
|
32
|
-
|
|
32
|
+
* @type {Record<string, ?>} */
|
|
33
33
|
const row = {};
|
|
34
34
|
for (const columnIndex in columns) {
|
|
35
35
|
row[columns[columnIndex]] = rowValues[columnIndex];
|
|
@@ -39,4 +39,4 @@ export default async function query(connection, sql) {
|
|
|
39
39
|
}
|
|
40
40
|
return rows;
|
|
41
41
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkud2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvc3FsaXRlL3F1ZXJ5LndlYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUc7SUFDakQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQ2YsSUFBSSxNQUFNLENBQUE7SUFFVixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksaUJBQWlCLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQTtRQUVoQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQyxpQkFBaUIsR0FBRyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUNsRSxDQUFDO1FBRUQsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFLENBQUM7WUFDM0IsS0FBSyxDQUFDLE9BQU8sSUFBSSxPQUFPLGlCQUFpQixFQUFFLENBQUE7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixLQUFLLEtBQUssT0FBTyxLQUFLLFFBQVEsaUJBQWlCLEVBQUUsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFBO1FBQzFHLENBQUM7UUFFRCxNQUFNLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtRQUVqQyxLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6Qzs7MkNBRStCO1lBQy9CLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQTtZQUVkLEtBQUssTUFBTSxXQUFXLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ2xDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDcEQsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBSdW5zIHF1ZXJ5LlxuICogQHBhcmFtIHtpbXBvcnQoXCJzcWwuanNcIikuRGF0YWJhc2V9IGNvbm5lY3Rpb24gLSBDb25uZWN0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IHNxbCAtIFNRTCBzdHJpbmcuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCA/PltdPn0gLSBSZXNvbHZlcyB3aXRoIHN0cmluZyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcXVlcnkoY29ubmVjdGlvbiwgc3FsKSB7XG4gIGNvbnN0IHJvd3MgPSBbXVxuICBsZXQgcmVzdWx0XG5cbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBjb25uZWN0aW9uLmV4ZWMoc3FsKVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGxldCBzcWxJbkVycm9yTWVzc2FnZSA9IGAke3NxbH1gXG5cbiAgICBpZiAoc3FsSW5FcnJvck1lc3NhZ2UubGVuZ3RoID49IDQwOTYpIHtcbiAgICAgIHNxbEluRXJyb3JNZXNzYWdlID0gYCR7c3FsSW5FcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIDQwOTYpfS4uLmBcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZXJyb3IubWVzc2FnZSArPSBgXFxuXFxuJHtzcWxJbkVycm9yTWVzc2FnZX1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQ6ICR7ZXJyb3J9IFske3R5cGVvZiBlcnJvcn1dXFxuXFxuJHtzcWxJbkVycm9yTWVzc2FnZX1gLCB7Y2F1c2U6IGVycm9yfSlcbiAgICB9XG5cbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgaWYgKHJlc3VsdFswXSkge1xuICAgIGNvbnN0IGNvbHVtbnMgPSByZXN1bHRbMF0uY29sdW1uc1xuXG4gICAgZm9yIChjb25zdCByb3dWYWx1ZXMgb2YgcmVzdWx0WzBdLnZhbHVlcykge1xuICAgICAgLyoqXG4gICAgICAgKiBSb3cuXG4gICAgICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgPz59ICovXG4gICAgICBjb25zdCByb3cgPSB7fVxuXG4gICAgICBmb3IgKGNvbnN0IGNvbHVtbkluZGV4IGluIGNvbHVtbnMpIHtcbiAgICAgICAgcm93W2NvbHVtbnNbY29sdW1uSW5kZXhdXSA9IHJvd1ZhbHVlc1tjb2x1bW5JbmRleF1cbiAgICAgIH1cblxuICAgICAgcm93cy5wdXNoKHJvdylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcm93c1xufVxuIl19
|
|
@@ -67,13 +67,13 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
|
|
|
67
67
|
const targetTableData = new TableData(currentTableData.getName());
|
|
68
68
|
/**
|
|
69
69
|
* Column pairs.
|
|
70
|
-
|
|
70
|
+
* @type {Array<[string, string]>} */
|
|
71
71
|
const columnPairs = [];
|
|
72
72
|
const alterColumns = alterTableData.getColumns();
|
|
73
73
|
const existingNames = new Set(currentTableData.getColumns().map((column) => column.getName()));
|
|
74
74
|
/**
|
|
75
75
|
* Column renames.
|
|
76
|
-
|
|
76
|
+
* @type {Map<string, string>} */
|
|
77
77
|
const columnRenames = new Map();
|
|
78
78
|
for (const alterColumn of alterColumns) {
|
|
79
79
|
if (alterColumn.isNewColumn())
|
|
@@ -164,4 +164,4 @@ export default class VelociousDatabaseConnectionDriversSqliteSqlAlterTable exten
|
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvc3FsL2FsdGVyLXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMvRCxPQUFPLE1BQU0sTUFBTSx1QkFBdUIsQ0FBQTtBQUMxQyxPQUFPLGFBQWEsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRCxPQUFPLGVBQWUsTUFBTSwwQ0FBMEMsQ0FBQTtBQUN0RSxPQUFPLFVBQVUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRCxPQUFPLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRCxNQUFNLENBQUMsT0FBTyxPQUFPLHFEQUFzRCxTQUFRLGNBQWM7SUFDL0Y7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMvQixNQUFNLEVBQUMsU0FBUyxFQUFFLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQTtR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WUFBWSxFQUFFO1NBQ3JDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQWx0ZXJUYWJsZUJhc2UgZnJvbSBcIi4uLy4uLy4uL3F1ZXJ5L2FsdGVyLXRhYmxlLWJhc2UuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiXG5pbXBvcnQgVGFibGVGb3JlaWduS2V5IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCJcbmltcG9ydCBUYWJsZUluZGV4IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWluZGV4LmpzXCJcbmltcG9ydCBUYWJsZVJlYnVpbGRlciBmcm9tIFwiLi4vdGFibGUtcmVidWlsZGVyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VDb25uZWN0aW9uRHJpdmVyc1NxbGl0ZVNxbEFsdGVyVGFibGUgZXh0ZW5kcyBBbHRlclRhYmxlQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCB0YWJsZURhdGEsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyLCB0YWJsZURhdGF9KVxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMudGFibGVEYXRhID0gdGFibGVEYXRhXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0byBzcWxzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHRvU1FMcygpIHtcbiAgICBjb25zdCBkcml2ZXIgPSB0aGlzLmdldERyaXZlcigpXG4gICAgY29uc3Qge3RhYmxlRGF0YTogYWx0ZXJUYWJsZURhdGF9ID0gdGhpc1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IGFsdGVyVGFibGVEYXRhLmdldE5hbWUoKVxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgZHJpdmVyLmdldFRhYmxlQnlOYW1lKHRhYmxlTmFtZSlcblxuICAgIGlmICghdGFibGUpIHRocm93IG5ldyBFcnJvcihgVGFibGUgJHt0YWJsZU5hbWV9IGRvZXMgbm90IGV4aXN0YClcblxuICAgIGNvbnN0IGN1cnJlbnRUYWJsZURhdGEgPSBhd2FpdCB0YWJsZS5nZXRUYWJsZURhdGEoKVxuICAgIGNvbnN0IHt0YXJnZXRUYWJsZURhdGEsIGNvbHVtblBhaXJzfSA9IHRoaXMuX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKVxuXG4gICAgY29uc3QgcmVidWlsZGVyID0gbmV3IFRhYmxlUmVidWlsZGVyKHtcbiAgICAgIGNvbHVtblBhaXJzLFxuICAgICAgZHJpdmVyLFxuICAgICAgb3JpZ2luYWxUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICAgIHRhcmdldFRhYmxlRGF0YVxuICAgIH0pXG5cbiAgICBjb25zdCByZWJ1aWxkU1FMcyA9IGF3YWl0IHJlYnVpbGRlci50b1NRTHMoKVxuICAgIGNvbnN0IHNxbHMgPSBbXVxuXG4gICAgLy8gUFJBR01BIGZvcmVpZ25fa2V5cyBjYW4gb25seSBiZSB0b2dnbGVkIG91dHNpZGUgYW4gYWN0aXZlIHRyYW5zYWN0aW9uOyB3aGVuIHRoZVxuICAgIC8vIGNhbGxlciBpcyBhbHJlYWR5IGluc2lkZSBvbmUgdGhlc2UgYmVjb21lIG5vLW9wcyAobWF0Y2hpbmcgcHJpb3IgYmVoYXZpb3IpLiBPdXRzaWRlXG4gICAgLy8gYSB0cmFuc2FjdGlvbiB0aGV5IHByb3RlY3QgdGhlIHJlYnVpbGQgZnJvbSBjcm9zcy10YWJsZSBGSyBlbmZvcmNlbWVudCBkdXJpbmcgdGhlXG4gICAgLy8gRFJPUC9SRU5BTUUgc3dhcC4gQ2FwdHVyZSB0aGUgcHJpb3Igc3RhdGUgc28gd2UgcmVzdG9yZSBpdCBpbnN0ZWFkIG9mIHVuY29uZGl0aW9uYWxseVxuICAgIC8vIGZvcmNpbmcgT04g4oCUIGNhbGxlcnMgdGhhdCBkZWxpYmVyYXRlbHkgZGlzYWJsZWQgRksgZW5mb3JjZW1lbnQgKGUuZy4gYnVsayBkYXRhIGZpeGVzKVxuICAgIC8vIHNob3VsZG4ndCBiZSBzaWxlbnRseSBmbGlwcGVkIGJhY2sgb24gYnkgYSBtaWdyYXRpb24uXG4gICAgY29uc3QgcHJpb3JTdGF0ZSA9IGF3YWl0IGRyaXZlci5xdWVyeShcIlBSQUdNQSBmb3JlaWduX2tleXNcIilcbiAgICBjb25zdCB3YXNFbmFibGVkID0gcHJpb3JTdGF0ZVswXT8uZm9yZWlnbl9rZXlzID09IDFcblxuICAgIHNxbHMucHVzaChcIlBSQUdNQSBmb3JlaWduX2tleXMgPSBPRkZcIilcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHJlYnVpbGRTUUxzKSBzcWxzLnB1c2goc3FsKVxuXG4gICAgc3Fscy5wdXNoKGBQUkFHTUEgZm9yZWlnbl9rZXlzID0gJHt3YXNFbmFibGVkID8gXCJPTlwiIDogXCJPRkZcIn1gKVxuXG4gICAgcmV0dXJuIHNxbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgdGhlIGN1cnJlbnQgc2NoZW1hIHdpdGggdGhlIGFsdGVyIHJlcXVlc3QgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBmaW5hbCBzY2hlbWFcbiAgICogYW5kIHRoZSBjb2x1bW4gY29weSBwbGFuLlxuICAgKiBAcGFyYW0ge1RhYmxlRGF0YX0gY3VycmVudFRhYmxlRGF0YSAtIEN1cnJlbnQgc2NoZW1hIGFzIGludHJvc3BlY3RlZCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHtUYWJsZURhdGF9IGFsdGVyVGFibGVEYXRhIC0gQWx0ZXIgcmVxdWVzdDogbmV3IGNvbHVtbnMgKGBpc05ld0NvbHVtbmApLCByZW5hbWVzIChgbmV3TmFtZWApLCBkcm9wcyAoYGRyb3BDb2x1bW5gKSwgbW9kaWZpZXMsIGFuZCBuZXcgZm9yZWlnbiBrZXlzLlxuICAgKiBAcmV0dXJucyB7e3RhcmdldFRhYmxlRGF0YTogVGFibGVEYXRhLCBjb2x1bW5QYWlyczogQXJyYXk8W3N0cmluZywgc3RyaW5nXT59fSAtIFRoZSBtZXJnZWQgdGFyZ2V0IHNjaGVtYSBhbmQgdGhlIFtvbGROYW1lLCBuZXdOYW1lXSBwYWlycyBmb3IgSU5TRVJULi4uU0VMRUNULlxuICAgKi9cbiAgX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKSB7XG4gICAgY29uc3QgdGFyZ2V0VGFibGVEYXRhID0gbmV3IFRhYmxlRGF0YShjdXJyZW50VGFibGVEYXRhLmdldE5hbWUoKSlcbiAgICAvKipcbiAgICAgKiBDb2x1bW4gcGFpcnMuXG4gICAgICBAdHlwZSB7QXJyYXk8W3N0cmluZywgc3RyaW5nXT59ICovXG4gICAgY29uc3QgY29sdW1uUGFpcnMgPSBbXVxuICAgIGNvbnN0IGFsdGVyQ29sdW1ucyA9IGFsdGVyVGFibGVEYXRhLmdldENvbHVtbnMoKVxuICAgIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSBuZXcgU2V0KGN1cnJlbnRUYWJsZURhdGEuZ2V0Q29sdW1ucygpLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4uZ2V0TmFtZSgpKSlcbiAgICAvKipcbiAgICAgKiBDb2x1bW4gcmVuYW1lcy5cbiAgICAgIEB0eXBlIHtNYXA8c3RyaW5nLCBzdHJpbmc+fSAqL1xuICAgIGNvbnN0IGNvbHVtblJlbmFtZXMgPSBuZXcgTWFwKClcblxuICAgIGZvciAoY29uc3QgYWx0ZXJDb2x1bW4gb2YgYWx0ZXJDb2x1bW5zKSB7XG4gICAgICBpZiAoYWx0ZXJDb2x1bW4uaXNOZXdDb2x1bW4oKSkgY29udGludWVcblxuICAgICAgY29uc3QgbmV3TmFtZSA9IGFsdGVyQ29sdW1uLmdldE5ld05hbWUoKVxuXG4gICAgICBpZiAobmV3TmFtZSkgY29sdW1uUmVuYW1lcy5zZXQoYWx0ZXJDb2x1bW4uZ2V0TmFtZSgpLCBuZXdOYW1lKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY3VycmVudENvbHVtbiBvZiBjdXJyZW50VGFibGVEYXRhLmdldENvbHVtbnMoKSkge1xuICAgICAgY29uc3QgYWx0ZXJDb2x1bW4gPSBhbHRlckNvbHVtbnMuZmluZCgoY29sdW1uKSA9PiBjb2x1bW4uZ2V0TmFtZSgpID09IGN1cnJlbnRDb2x1bW4uZ2V0TmFtZSgpICYmICFjb2x1bW4uaXNOZXdDb2x1bW4oKSlcblxuICAgICAgaWYgKGFsdGVyQ29sdW1uPy5nZXREcm9wQ29sdW1uKCkpIGNvbnRpbnVlXG5cbiAgICAgIGxldCB0YXJnZXRDb2x1bW5cblxuICAgICAgaWYgKGFsdGVyQ29sdW1uKSB7XG4gICAgICAgIC8vIFRoZSBhbHRlciByZXF1ZXN0IHN1cHBsaWVzIGEgcGFydGlhbCBjb2x1bW4gc3BlYyAoZS5nLiBqdXN0IGEgcmVuYW1lIG9yIGEgdHlwZSBjaGFuZ2UpO1xuICAgICAgICAvLyBpbmhlcml0IHVuc2V0IHByb3BlcnRpZXMgZnJvbSB0aGUgY3VycmVudCBjb2x1bW4gc28gd2UgZG9uJ3QgbG9zZSBleGlzdGluZyBkZWZpbml0aW9ucy5cbiAgICAgICAgYWx0ZXJDb2x1bW4uc2V0QXV0b0luY3JlbWVudChhbHRlckNvbHVtbi5nZXRBdXRvSW5jcmVtZW50KCkgfHwgY3VycmVudENvbHVtbi5nZXRBdXRvSW5jcmVtZW50KCkpXG4gICAgICAgIGlmIChhbHRlckNvbHVtbi5nZXREZWZhdWx0KCkgPT09IHVuZGVmaW5lZCkgYWx0ZXJDb2x1bW4uc2V0RGVmYXVsdChjdXJyZW50Q29sdW1uLmdldERlZmF1bHQoKSlcbiAgICAgICAgaWYgKCFhbHRlckNvbHVtbi5nZXRJbmRleCgpKSBhbHRlckNvbHVtbi5zZXRJbmRleChjdXJyZW50Q29sdW1uLmdldEluZGV4KCkpXG4gICAgICAgIGlmICghYWx0ZXJDb2x1bW4uZ2V0Rm9yZWlnbktleSgpKSBhbHRlckNvbHVtbi5zZXRGb3JlaWduS2V5KGN1cnJlbnRDb2x1bW4uZ2V0Rm9yZWlnbktleSgpKVxuICAgICAgICBpZiAoYWx0ZXJDb2x1bW4uZ2V0TWF4TGVuZ3RoKCkgPT09IHVuZGVmaW5lZCkgYWx0ZXJDb2x1bW4uc2V0TWF4TGVuZ3RoKGN1cnJlbnRDb2x1bW4uZ2V0TWF4TGVuZ3RoKCkpXG4gICAgICAgIGFsdGVyQ29sdW1uLnNldFByaW1hcnlLZXkoYWx0ZXJDb2x1bW4uZ2V0UHJpbWFyeUtleSgpIHx8IGN1cnJlbnRDb2x1bW4uZ2V0UHJpbWFyeUtleSgpKVxuICAgICAgICBpZiAoIWFsdGVyQ29sdW1uLmdldFR5cGUoKSkgYWx0ZXJDb2x1bW4uc2V0VHlwZShjdXJyZW50Q29sdW1uLmdldFR5cGUoKSlcblxuICAgICAgICB0YXJnZXRDb2x1bW4gPSBhbHRlckNvbHVtblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0Q29sdW1uID0gY3VycmVudENvbHVtblxuICAgICAgfVxuXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkQ29sdW1uKHRhcmdldENvbHVtbilcbiAgICAgIGNvbHVtblBhaXJzLnB1c2goW2N1cnJlbnRDb2x1bW4uZ2V0TmFtZSgpLCB0YXJnZXRDb2x1bW4uZ2V0TmV3TmFtZSgpIHx8IHRhcmdldENvbHVtbi5nZXROYW1lKCldKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWx0ZXJDb2x1bW4gb2YgYWx0ZXJDb2x1bW5zKSB7XG4gICAgICBpZiAoIWFsdGVyQ29sdW1uLmlzTmV3Q29sdW1uKCkpIGNvbnRpbnVlXG4gICAgICBpZiAoZXhpc3RpbmdOYW1lcy5oYXMoYWx0ZXJDb2x1bW4uZ2V0TmFtZSgpKSkgY29udGludWVcblxuICAgICAgdGFyZ2V0VGFibGVEYXRhLmFkZENvbHVtbihhbHRlckNvbHVtbilcbiAgICB9XG5cbiAgICBjb25zdCBzZWVuRm9yZWlnbktleU5hbWVzID0gbmV3IFNldCgpXG5cbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRGb3JlaWduS2V5IG9mIGN1cnJlbnRUYWJsZURhdGEuZ2V0Rm9yZWlnbktleXMoKSkge1xuICAgICAgY29uc3QgYWx0ZXJGb3JlaWduS2V5ID0gYWx0ZXJUYWJsZURhdGEuZ2V0Rm9yZWlnbktleXMoKS5maW5kKChmb3JlaWduS2V5KSA9PiBmb3JlaWduS2V5LmdldE5hbWUoKSA9PSBjdXJyZW50Rm9yZWlnbktleS5nZXROYW1lKCkpXG4gICAgICBjb25zdCBmaW5hbEZvcmVpZ25LZXkgPSB0aGlzLl9yZW5hbWVGb3JlaWduS2V5Q29sdW1uKGFsdGVyRm9yZWlnbktleSB8fCBjdXJyZW50Rm9yZWlnbktleSwgY29sdW1uUmVuYW1lcylcblxuICAgICAgc2VlbkZvcmVpZ25LZXlOYW1lcy5hZGQoZmluYWxGb3JlaWduS2V5LmdldE5hbWUoKSlcbiAgICAgIHRhcmdldFRhYmxlRGF0YS5hZGRGb3JlaWduS2V5KGZpbmFsRm9yZWlnbktleSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGFsdGVyRm9yZWlnbktleSBvZiBhbHRlclRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpKSB7XG4gICAgICBpZiAoc2VlbkZvcmVpZ25LZXlOYW1lcy5oYXMoYWx0ZXJGb3JlaWduS2V5LmdldE5hbWUoKSkpIGNvbnRpbnVlXG5cbiAgICAgIHRhcmdldFRhYmxlRGF0YS5hZGRGb3JlaWduS2V5KHRoaXMuX3JlbmFtZUZvcmVpZ25LZXlDb2x1bW4oYWx0ZXJGb3JlaWduS2V5LCBjb2x1bW5SZW5hbWVzKSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRJbmRleCBvZiBjdXJyZW50VGFibGVEYXRhLmdldEluZGV4ZXMoKSkge1xuICAgICAgY29uc3QgcmVuYW1lZENvbHVtbnMgPSBjdXJyZW50SW5kZXguZ2V0Q29sdW1ucygpLm1hcCgoY29sdW1uTmFtZSkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGNvbHVtbk5hbWUgIT0gXCJzdHJpbmdcIikgcmV0dXJuIGNvbHVtbk5hbWVcblxuICAgICAgICByZXR1cm4gY29sdW1uUmVuYW1lcy5nZXQoY29sdW1uTmFtZSkgfHwgY29sdW1uTmFtZVxuICAgICAgfSlcblxuICAgICAgdGFyZ2V0VGFibGVEYXRhLmFkZEluZGV4KG5ldyBUYWJsZUluZGV4KHJlbmFtZWRDb2x1bW5zLCB7XG4gICAgICAgIG5hbWU6IGN1cnJlbnRJbmRleC5nZXROYW1lKCksXG4gICAgICAgIHVuaXF1ZTogY3VycmVudEluZGV4LmdldFVuaXF1ZSgpXG4gICAgICB9KSlcbiAgICB9XG5cbiAgICByZXR1cm4ge3RhcmdldFRhYmxlRGF0YSwgY29sdW1uUGFpcnN9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZm9yZWlnbiBrZXkgd2l0aCBpdHMgY29sdW1uIG5hbWUgdXBkYXRlZCB3aGVuIHRoZSBjb2x1bW4gd2FzIHJlbmFtZWQgaW4gdGhlXG4gICAqIGFsdGVyIHJlcXVlc3QuIFNRTGl0ZSByZS1jcmVhdGVzIHRoZSBjb25zdHJhaW50IGluc2lkZSB0aGUgcmVidWlsdCBDUkVBVEUgVEFCTEUsIHNvIGFcbiAgICogc3RhbGUgY29sdW1uIG5hbWUgdGhlcmUgd291bGQgcmVmZXJlbmNlIGEgY29sdW1uIHRoYXQgbm8gbG9uZ2VyIGV4aXN0cy5cbiAgICogQHBhcmFtIHtUYWJsZUZvcmVpZ25LZXl9IGZvcmVpZ25LZXkgLSBGb3JlaWduIGtleSB0byBldmFsdWF0ZS5cbiAgICogQHBhcmFtIHtNYXA8c3RyaW5nLCBzdHJpbmc+fSBjb2x1bW5SZW5hbWVzIC0gTWFwIG9mIG9sZCDihpIgbmV3IGNvbHVtbiBuYW1lcyBmcm9tIHRoZSBhbHRlciByZXF1ZXN0LlxuICAgKiBAcmV0dXJucyB7VGFibGVGb3JlaWduS2V5fSAtIFRoZSBvcmlnaW5hbCBmb3JlaWduIGtleSwgb3IgYSBmcmVzaCBpbnN0YW5jZSB3aXRoIHRoZSByZW5hbWVkIGNvbHVtbi5cbiAgICovXG4gIF9yZW5hbWVGb3JlaWduS2V5Q29sdW1uKGZvcmVpZ25LZXksIGNvbHVtblJlbmFtZXMpIHtcbiAgICBjb25zdCByZW5hbWVkID0gY29sdW1uUmVuYW1lcy5nZXQoZm9yZWlnbktleS5nZXRDb2x1bW5OYW1lKCkpXG5cbiAgICBpZiAoIXJlbmFtZWQpIHJldHVybiBmb3JlaWduS2V5XG5cbiAgICByZXR1cm4gbmV3IFRhYmxlRm9yZWlnbktleSh7XG4gICAgICBjb2x1bW5OYW1lOiByZW5hbWVkLFxuICAgICAgaXNOZXdGb3JlaWduS2V5OiBmb3JlaWduS2V5LmdldElzTmV3Rm9yZWlnbktleSgpLFxuICAgICAgbmFtZTogZm9yZWlnbktleS5nZXROYW1lKCksXG4gICAgICByZWZlcmVuY2VkQ29sdW1uTmFtZTogZm9yZWlnbktleS5nZXRSZWZlcmVuY2VkQ29sdW1uTmFtZSgpLFxuICAgICAgcmVmZXJlbmNlZFRhYmxlTmFtZTogZm9yZWlnbktleS5nZXRSZWZlcmVuY2VkVGFibGVOYW1lKCksXG4gICAgICB0YWJsZU5hbWU6IGZvcmVpZ25LZXkuZ2V0VGFibGVOYW1lKClcbiAgICB9KVxuICB9XG59XG4iXX0=
|
|
167
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWx0ZXItdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvc3FsL2FsdGVyLXRhYmxlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGNBQWMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMvRCxPQUFPLE1BQU0sTUFBTSx1QkFBdUIsQ0FBQTtBQUMxQyxPQUFPLGFBQWEsTUFBTSxzQ0FBc0MsQ0FBQTtBQUNoRSxPQUFPLFNBQVMsTUFBTSw4QkFBOEIsQ0FBQTtBQUNwRCxPQUFPLGVBQWUsTUFBTSwwQ0FBMEMsQ0FBQTtBQUN0RSxPQUFPLFVBQVUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRCxPQUFPLGNBQWMsTUFBTSx1QkFBdUIsQ0FBQTtBQUVsRCxNQUFNLENBQUMsT0FBTyxPQUFPLHFEQUFzRCxTQUFRLGNBQWM7SUFDL0Y7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUMxQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUV0RixLQUFLLENBQUMsRUFBQyxNQUFNLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUMvQixNQUFNLEVBQUMsU0FBUyxFQUFFLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQTtR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WUFBWSxFQUFFO1NBQ3JDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQWx0ZXJUYWJsZUJhc2UgZnJvbSBcIi4uLy4uLy4uL3F1ZXJ5L2FsdGVyLXRhYmxlLWJhc2UuanNcIlxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi4vLi4vLi4vLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuaW1wb3J0IFRhYmxlRGF0YSBmcm9tIFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiXG5pbXBvcnQgVGFibGVGb3JlaWduS2V5IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWZvcmVpZ24ta2V5LmpzXCJcbmltcG9ydCBUYWJsZUluZGV4IGZyb20gXCIuLi8uLi8uLi90YWJsZS1kYXRhL3RhYmxlLWluZGV4LmpzXCJcbmltcG9ydCBUYWJsZVJlYnVpbGRlciBmcm9tIFwiLi4vdGFibGUtcmVidWlsZGVyLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VDb25uZWN0aW9uRHJpdmVyc1NxbGl0ZVNxbEFsdGVyVGFibGUgZXh0ZW5kcyBBbHRlclRhYmxlQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL2Jhc2UuanNcIikuZGVmYXVsdH0gYXJncy5kcml2ZXIgLSBEYXRhYmFzZSBkcml2ZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLnRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZHJpdmVyLCB0YWJsZURhdGEsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBpZiAoISh0YWJsZURhdGEgaW5zdGFuY2VvZiBUYWJsZURhdGEpKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhYmxlIGRhdGEgd2FzIGdpdmVuXCIpXG5cbiAgICBzdXBlcih7ZHJpdmVyLCB0YWJsZURhdGF9KVxuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcih0aGlzKVxuICAgIHRoaXMudGFibGVEYXRhID0gdGFibGVEYXRhXG4gIH1cblxuICAvKipcbiAgICogUnVucyB0byBzcWxzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIHRvU1FMcygpIHtcbiAgICBjb25zdCBkcml2ZXIgPSB0aGlzLmdldERyaXZlcigpXG4gICAgY29uc3Qge3RhYmxlRGF0YTogYWx0ZXJUYWJsZURhdGF9ID0gdGhpc1xuICAgIGNvbnN0IHRhYmxlTmFtZSA9IGFsdGVyVGFibGVEYXRhLmdldE5hbWUoKVxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgZHJpdmVyLmdldFRhYmxlQnlOYW1lKHRhYmxlTmFtZSlcblxuICAgIGlmICghdGFibGUpIHRocm93IG5ldyBFcnJvcihgVGFibGUgJHt0YWJsZU5hbWV9IGRvZXMgbm90IGV4aXN0YClcblxuICAgIGNvbnN0IGN1cnJlbnRUYWJsZURhdGEgPSBhd2FpdCB0YWJsZS5nZXRUYWJsZURhdGEoKVxuICAgIGNvbnN0IHt0YXJnZXRUYWJsZURhdGEsIGNvbHVtblBhaXJzfSA9IHRoaXMuX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKVxuXG4gICAgY29uc3QgcmVidWlsZGVyID0gbmV3IFRhYmxlUmVidWlsZGVyKHtcbiAgICAgIGNvbHVtblBhaXJzLFxuICAgICAgZHJpdmVyLFxuICAgICAgb3JpZ2luYWxUYWJsZU5hbWU6IHRhYmxlTmFtZSxcbiAgICAgIHRhcmdldFRhYmxlRGF0YVxuICAgIH0pXG5cbiAgICBjb25zdCByZWJ1aWxkU1FMcyA9IGF3YWl0IHJlYnVpbGRlci50b1NRTHMoKVxuICAgIGNvbnN0IHNxbHMgPSBbXVxuXG4gICAgLy8gUFJBR01BIGZvcmVpZ25fa2V5cyBjYW4gb25seSBiZSB0b2dnbGVkIG91dHNpZGUgYW4gYWN0aXZlIHRyYW5zYWN0aW9uOyB3aGVuIHRoZVxuICAgIC8vIGNhbGxlciBpcyBhbHJlYWR5IGluc2lkZSBvbmUgdGhlc2UgYmVjb21lIG5vLW9wcyAobWF0Y2hpbmcgcHJpb3IgYmVoYXZpb3IpLiBPdXRzaWRlXG4gICAgLy8gYSB0cmFuc2FjdGlvbiB0aGV5IHByb3RlY3QgdGhlIHJlYnVpbGQgZnJvbSBjcm9zcy10YWJsZSBGSyBlbmZvcmNlbWVudCBkdXJpbmcgdGhlXG4gICAgLy8gRFJPUC9SRU5BTUUgc3dhcC4gQ2FwdHVyZSB0aGUgcHJpb3Igc3RhdGUgc28gd2UgcmVzdG9yZSBpdCBpbnN0ZWFkIG9mIHVuY29uZGl0aW9uYWxseVxuICAgIC8vIGZvcmNpbmcgT04g4oCUIGNhbGxlcnMgdGhhdCBkZWxpYmVyYXRlbHkgZGlzYWJsZWQgRksgZW5mb3JjZW1lbnQgKGUuZy4gYnVsayBkYXRhIGZpeGVzKVxuICAgIC8vIHNob3VsZG4ndCBiZSBzaWxlbnRseSBmbGlwcGVkIGJhY2sgb24gYnkgYSBtaWdyYXRpb24uXG4gICAgY29uc3QgcHJpb3JTdGF0ZSA9IGF3YWl0IGRyaXZlci5xdWVyeShcIlBSQUdNQSBmb3JlaWduX2tleXNcIilcbiAgICBjb25zdCB3YXNFbmFibGVkID0gcHJpb3JTdGF0ZVswXT8uZm9yZWlnbl9rZXlzID09IDFcblxuICAgIHNxbHMucHVzaChcIlBSQUdNQSBmb3JlaWduX2tleXMgPSBPRkZcIilcblxuICAgIGZvciAoY29uc3Qgc3FsIG9mIHJlYnVpbGRTUUxzKSBzcWxzLnB1c2goc3FsKVxuXG4gICAgc3Fscy5wdXNoKGBQUkFHTUEgZm9yZWlnbl9rZXlzID0gJHt3YXNFbmFibGVkID8gXCJPTlwiIDogXCJPRkZcIn1gKVxuXG4gICAgcmV0dXJuIHNxbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZXMgdGhlIGN1cnJlbnQgc2NoZW1hIHdpdGggdGhlIGFsdGVyIHJlcXVlc3QgdG8gcHJvZHVjZSB0aGUgZGVzaXJlZCBmaW5hbCBzY2hlbWFcbiAgICogYW5kIHRoZSBjb2x1bW4gY29weSBwbGFuLlxuICAgKiBAcGFyYW0ge1RhYmxlRGF0YX0gY3VycmVudFRhYmxlRGF0YSAtIEN1cnJlbnQgc2NoZW1hIGFzIGludHJvc3BlY3RlZCBmcm9tIHRoZSBkYXRhYmFzZS5cbiAgICogQHBhcmFtIHtUYWJsZURhdGF9IGFsdGVyVGFibGVEYXRhIC0gQWx0ZXIgcmVxdWVzdDogbmV3IGNvbHVtbnMgKGBpc05ld0NvbHVtbmApLCByZW5hbWVzIChgbmV3TmFtZWApLCBkcm9wcyAoYGRyb3BDb2x1bW5gKSwgbW9kaWZpZXMsIGFuZCBuZXcgZm9yZWlnbiBrZXlzLlxuICAgKiBAcmV0dXJucyB7e3RhcmdldFRhYmxlRGF0YTogVGFibGVEYXRhLCBjb2x1bW5QYWlyczogQXJyYXk8W3N0cmluZywgc3RyaW5nXT59fSAtIFRoZSBtZXJnZWQgdGFyZ2V0IHNjaGVtYSBhbmQgdGhlIFtvbGROYW1lLCBuZXdOYW1lXSBwYWlycyBmb3IgSU5TRVJULi4uU0VMRUNULlxuICAgKi9cbiAgX2J1aWxkVGFyZ2V0U2NoZW1hKGN1cnJlbnRUYWJsZURhdGEsIGFsdGVyVGFibGVEYXRhKSB7XG4gICAgY29uc3QgdGFyZ2V0VGFibGVEYXRhID0gbmV3IFRhYmxlRGF0YShjdXJyZW50VGFibGVEYXRhLmdldE5hbWUoKSlcbiAgICAvKipcbiAgICAgKiBDb2x1bW4gcGFpcnMuXG4gICAgICogQHR5cGUge0FycmF5PFtzdHJpbmcsIHN0cmluZ10+fSAqL1xuICAgIGNvbnN0IGNvbHVtblBhaXJzID0gW11cbiAgICBjb25zdCBhbHRlckNvbHVtbnMgPSBhbHRlclRhYmxlRGF0YS5nZXRDb2x1bW5zKClcbiAgICBjb25zdCBleGlzdGluZ05hbWVzID0gbmV3IFNldChjdXJyZW50VGFibGVEYXRhLmdldENvbHVtbnMoKS5tYXAoKGNvbHVtbikgPT4gY29sdW1uLmdldE5hbWUoKSkpXG4gICAgLyoqXG4gICAgICogQ29sdW1uIHJlbmFtZXMuXG4gICAgICogQHR5cGUge01hcDxzdHJpbmcsIHN0cmluZz59ICovXG4gICAgY29uc3QgY29sdW1uUmVuYW1lcyA9IG5ldyBNYXAoKVxuXG4gICAgZm9yIChjb25zdCBhbHRlckNvbHVtbiBvZiBhbHRlckNvbHVtbnMpIHtcbiAgICAgIGlmIChhbHRlckNvbHVtbi5pc05ld0NvbHVtbigpKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBuZXdOYW1lID0gYWx0ZXJDb2x1bW4uZ2V0TmV3TmFtZSgpXG5cbiAgICAgIGlmIChuZXdOYW1lKSBjb2x1bW5SZW5hbWVzLnNldChhbHRlckNvbHVtbi5nZXROYW1lKCksIG5ld05hbWUpXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjdXJyZW50Q29sdW1uIG9mIGN1cnJlbnRUYWJsZURhdGEuZ2V0Q29sdW1ucygpKSB7XG4gICAgICBjb25zdCBhbHRlckNvbHVtbiA9IGFsdGVyQ29sdW1ucy5maW5kKChjb2x1bW4pID0+IGNvbHVtbi5nZXROYW1lKCkgPT0gY3VycmVudENvbHVtbi5nZXROYW1lKCkgJiYgIWNvbHVtbi5pc05ld0NvbHVtbigpKVxuXG4gICAgICBpZiAoYWx0ZXJDb2x1bW4/LmdldERyb3BDb2x1bW4oKSkgY29udGludWVcblxuICAgICAgbGV0IHRhcmdldENvbHVtblxuXG4gICAgICBpZiAoYWx0ZXJDb2x1bW4pIHtcbiAgICAgICAgLy8gVGhlIGFsdGVyIHJlcXVlc3Qgc3VwcGxpZXMgYSBwYXJ0aWFsIGNvbHVtbiBzcGVjIChlLmcuIGp1c3QgYSByZW5hbWUgb3IgYSB0eXBlIGNoYW5nZSk7XG4gICAgICAgIC8vIGluaGVyaXQgdW5zZXQgcHJvcGVydGllcyBmcm9tIHRoZSBjdXJyZW50IGNvbHVtbiBzbyB3ZSBkb24ndCBsb3NlIGV4aXN0aW5nIGRlZmluaXRpb25zLlxuICAgICAgICBhbHRlckNvbHVtbi5zZXRBdXRvSW5jcmVtZW50KGFsdGVyQ29sdW1uLmdldEF1dG9JbmNyZW1lbnQoKSB8fCBjdXJyZW50Q29sdW1uLmdldEF1dG9JbmNyZW1lbnQoKSlcbiAgICAgICAgaWYgKGFsdGVyQ29sdW1uLmdldERlZmF1bHQoKSA9PT0gdW5kZWZpbmVkKSBhbHRlckNvbHVtbi5zZXREZWZhdWx0KGN1cnJlbnRDb2x1bW4uZ2V0RGVmYXVsdCgpKVxuICAgICAgICBpZiAoIWFsdGVyQ29sdW1uLmdldEluZGV4KCkpIGFsdGVyQ29sdW1uLnNldEluZGV4KGN1cnJlbnRDb2x1bW4uZ2V0SW5kZXgoKSlcbiAgICAgICAgaWYgKCFhbHRlckNvbHVtbi5nZXRGb3JlaWduS2V5KCkpIGFsdGVyQ29sdW1uLnNldEZvcmVpZ25LZXkoY3VycmVudENvbHVtbi5nZXRGb3JlaWduS2V5KCkpXG4gICAgICAgIGlmIChhbHRlckNvbHVtbi5nZXRNYXhMZW5ndGgoKSA9PT0gdW5kZWZpbmVkKSBhbHRlckNvbHVtbi5zZXRNYXhMZW5ndGgoY3VycmVudENvbHVtbi5nZXRNYXhMZW5ndGgoKSlcbiAgICAgICAgYWx0ZXJDb2x1bW4uc2V0UHJpbWFyeUtleShhbHRlckNvbHVtbi5nZXRQcmltYXJ5S2V5KCkgfHwgY3VycmVudENvbHVtbi5nZXRQcmltYXJ5S2V5KCkpXG4gICAgICAgIGlmICghYWx0ZXJDb2x1bW4uZ2V0VHlwZSgpKSBhbHRlckNvbHVtbi5zZXRUeXBlKGN1cnJlbnRDb2x1bW4uZ2V0VHlwZSgpKVxuXG4gICAgICAgIHRhcmdldENvbHVtbiA9IGFsdGVyQ29sdW1uXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXRDb2x1bW4gPSBjdXJyZW50Q29sdW1uXG4gICAgICB9XG5cbiAgICAgIHRhcmdldFRhYmxlRGF0YS5hZGRDb2x1bW4odGFyZ2V0Q29sdW1uKVxuICAgICAgY29sdW1uUGFpcnMucHVzaChbY3VycmVudENvbHVtbi5nZXROYW1lKCksIHRhcmdldENvbHVtbi5nZXROZXdOYW1lKCkgfHwgdGFyZ2V0Q29sdW1uLmdldE5hbWUoKV0pXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBhbHRlckNvbHVtbiBvZiBhbHRlckNvbHVtbnMpIHtcbiAgICAgIGlmICghYWx0ZXJDb2x1bW4uaXNOZXdDb2x1bW4oKSkgY29udGludWVcbiAgICAgIGlmIChleGlzdGluZ05hbWVzLmhhcyhhbHRlckNvbHVtbi5nZXROYW1lKCkpKSBjb250aW51ZVxuXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkQ29sdW1uKGFsdGVyQ29sdW1uKVxuICAgIH1cblxuICAgIGNvbnN0IHNlZW5Gb3JlaWduS2V5TmFtZXMgPSBuZXcgU2V0KClcblxuICAgIGZvciAoY29uc3QgY3VycmVudEZvcmVpZ25LZXkgb2YgY3VycmVudFRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpKSB7XG4gICAgICBjb25zdCBhbHRlckZvcmVpZ25LZXkgPSBhbHRlclRhYmxlRGF0YS5nZXRGb3JlaWduS2V5cygpLmZpbmQoKGZvcmVpZ25LZXkpID0+IGZvcmVpZ25LZXkuZ2V0TmFtZSgpID09IGN1cnJlbnRGb3JlaWduS2V5LmdldE5hbWUoKSlcbiAgICAgIGNvbnN0IGZpbmFsRm9yZWlnbktleSA9IHRoaXMuX3JlbmFtZUZvcmVpZ25LZXlDb2x1bW4oYWx0ZXJGb3JlaWduS2V5IHx8IGN1cnJlbnRGb3JlaWduS2V5LCBjb2x1bW5SZW5hbWVzKVxuXG4gICAgICBzZWVuRm9yZWlnbktleU5hbWVzLmFkZChmaW5hbEZvcmVpZ25LZXkuZ2V0TmFtZSgpKVxuICAgICAgdGFyZ2V0VGFibGVEYXRhLmFkZEZvcmVpZ25LZXkoZmluYWxGb3JlaWduS2V5KVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWx0ZXJGb3JlaWduS2V5IG9mIGFsdGVyVGFibGVEYXRhLmdldEZvcmVpZ25LZXlzKCkpIHtcbiAgICAgIGlmIChzZWVuRm9yZWlnbktleU5hbWVzLmhhcyhhbHRlckZvcmVpZ25LZXkuZ2V0TmFtZSgpKSkgY29udGludWVcblxuICAgICAgdGFyZ2V0VGFibGVEYXRhLmFkZEZvcmVpZ25LZXkodGhpcy5fcmVuYW1lRm9yZWlnbktleUNvbHVtbihhbHRlckZvcmVpZ25LZXksIGNvbHVtblJlbmFtZXMpKVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgY3VycmVudEluZGV4IG9mIGN1cnJlbnRUYWJsZURhdGEuZ2V0SW5kZXhlcygpKSB7XG4gICAgICBjb25zdCByZW5hbWVkQ29sdW1ucyA9IGN1cnJlbnRJbmRleC5nZXRDb2x1bW5zKCkubWFwKChjb2x1bW5OYW1lKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29sdW1uTmFtZSAhPSBcInN0cmluZ1wiKSByZXR1cm4gY29sdW1uTmFtZVxuXG4gICAgICAgIHJldHVybiBjb2x1bW5SZW5hbWVzLmdldChjb2x1bW5OYW1lKSB8fCBjb2x1bW5OYW1lXG4gICAgICB9KVxuXG4gICAgICB0YXJnZXRUYWJsZURhdGEuYWRkSW5kZXgobmV3IFRhYmxlSW5kZXgocmVuYW1lZENvbHVtbnMsIHtcbiAgICAgICAgbmFtZTogY3VycmVudEluZGV4LmdldE5hbWUoKSxcbiAgICAgICAgdW5pcXVlOiBjdXJyZW50SW5kZXguZ2V0VW5pcXVlKClcbiAgICAgIH0pKVxuICAgIH1cblxuICAgIHJldHVybiB7dGFyZ2V0VGFibGVEYXRhLCBjb2x1bW5QYWlyc31cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBmb3JlaWduIGtleSB3aXRoIGl0cyBjb2x1bW4gbmFtZSB1cGRhdGVkIHdoZW4gdGhlIGNvbHVtbiB3YXMgcmVuYW1lZCBpbiB0aGVcbiAgICogYWx0ZXIgcmVxdWVzdC4gU1FMaXRlIHJlLWNyZWF0ZXMgdGhlIGNvbnN0cmFpbnQgaW5zaWRlIHRoZSByZWJ1aWx0IENSRUFURSBUQUJMRSwgc28gYVxuICAgKiBzdGFsZSBjb2x1bW4gbmFtZSB0aGVyZSB3b3VsZCByZWZlcmVuY2UgYSBjb2x1bW4gdGhhdCBubyBsb25nZXIgZXhpc3RzLlxuICAgKiBAcGFyYW0ge1RhYmxlRm9yZWlnbktleX0gZm9yZWlnbktleSAtIEZvcmVpZ24ga2V5IHRvIGV2YWx1YXRlLlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIHN0cmluZz59IGNvbHVtblJlbmFtZXMgLSBNYXAgb2Ygb2xkIOKGkiBuZXcgY29sdW1uIG5hbWVzIGZyb20gdGhlIGFsdGVyIHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtUYWJsZUZvcmVpZ25LZXl9IC0gVGhlIG9yaWdpbmFsIGZvcmVpZ24ga2V5LCBvciBhIGZyZXNoIGluc3RhbmNlIHdpdGggdGhlIHJlbmFtZWQgY29sdW1uLlxuICAgKi9cbiAgX3JlbmFtZUZvcmVpZ25LZXlDb2x1bW4oZm9yZWlnbktleSwgY29sdW1uUmVuYW1lcykge1xuICAgIGNvbnN0IHJlbmFtZWQgPSBjb2x1bW5SZW5hbWVzLmdldChmb3JlaWduS2V5LmdldENvbHVtbk5hbWUoKSlcblxuICAgIGlmICghcmVuYW1lZCkgcmV0dXJuIGZvcmVpZ25LZXlcblxuICAgIHJldHVybiBuZXcgVGFibGVGb3JlaWduS2V5KHtcbiAgICAgIGNvbHVtbk5hbWU6IHJlbmFtZWQsXG4gICAgICBpc05ld0ZvcmVpZ25LZXk6IGZvcmVpZ25LZXkuZ2V0SXNOZXdGb3JlaWduS2V5KCksXG4gICAgICBuYW1lOiBmb3JlaWduS2V5LmdldE5hbWUoKSxcbiAgICAgIHJlZmVyZW5jZWRDb2x1bW5OYW1lOiBmb3JlaWduS2V5LmdldFJlZmVyZW5jZWRDb2x1bW5OYW1lKCksXG4gICAgICByZWZlcmVuY2VkVGFibGVOYW1lOiBmb3JlaWduS2V5LmdldFJlZmVyZW5jZWRUYWJsZU5hbWUoKSxcbiAgICAgIHRhYmxlTmFtZTogZm9yZWlnbktleS5nZXRUYWJsZU5hbWUoKVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|
|
@@ -58,7 +58,7 @@ export default class VelociousDatabaseDriversSqliteTable extends BaseTable {
|
|
|
58
58
|
throw new Error(`Could not find SQL for index ${columnsIndex.getName()}`);
|
|
59
59
|
const indexData = /**
|
|
60
60
|
* Narrows the runtime value to the documented type.
|
|
61
|
-
|
|
61
|
+
* @type {typeof columnsIndex.data & {columnNames?: string[]}} */ (columnsIndex.data);
|
|
62
62
|
indexData.columnNames = this._parseColumnsFromSQL(String(sql));
|
|
63
63
|
indexes.push(columnsIndex);
|
|
64
64
|
}
|
|
@@ -105,4 +105,4 @@ export default class VelociousDatabaseDriversSqliteTable extends BaseTable {
|
|
|
105
105
|
return String(this.row.name);
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvdGFibGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sU0FBUyxNQUFNLGtCQUFrQixDQUFBO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsT0FBTyxPQUFPLG1DQUFvQyxTQUFRLFNBQVM7SUFDeEU7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQztRQUN2QixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtZQUVsQixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7Z0JB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QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZVRhYmxlIGZyb20gXCIuLi9iYXNlLXRhYmxlLmpzXCJcbmltcG9ydCBDb2x1bW4gZnJvbSBcIi4vY29sdW1uLmpzXCJcbmltcG9ydCBDb2x1bW5zSW5kZXggZnJvbSBcIi4vY29sdW1ucy1pbmRleC5qc1wiXG5pbXBvcnQgRm9yZWlnbktleSBmcm9tIFwiLi9mb3JlaWduLWtleS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZVRhYmxlIGV4dGVuZHMgQmFzZVRhYmxlIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRyaXZlciAtIERhdGFiYXNlIGRyaXZlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBudWxsPn0gYXJncy5yb3cgLSBSb3cgZGF0YS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkcml2ZXIsIHJvd30pIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5kcml2ZXIgPSBkcml2ZXJcbiAgICB0aGlzLnJvdyA9IHJvd1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGNvbHVtbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGltcG9ydChcIi4uL2Jhc2UtY29sdW1uLmpzXCIpLmRlZmF1bHQ+Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBjb2x1bW5zLlxuICAgKi9cbiAgYXN5bmMgZ2V0Q29sdW1ucygpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5fY2FjaGVkVGFibGVTY2hlbWFNZXRhZGF0YSh0aGlzLmdldE5hbWUoKSwgXCJjb2x1bW5zXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZHJpdmVyLnF1ZXJ5KGBQUkFHTUEgdGFibGVfaW5mbygnJHt0aGlzLmdldE5hbWUoKX0nKWApXG4gICAgICBjb25zdCBjb2x1bW5zID0gW11cblxuICAgICAgZm9yIChjb25zdCBjb2x1bW5EYXRhIG9mIHJlc3VsdCkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uKHtjb2x1bW46IGNvbHVtbkRhdGEsIGRyaXZlcjogdGhpcy5kcml2ZXIsIHRhYmxlOiB0aGlzfSlcblxuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29sdW1uc1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRGb3JlaWduS2V5cygpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5fY2FjaGVkVGFibGVTY2hlbWFNZXRhZGF0YSh0aGlzLmdldE5hbWUoKSwgXCJmb3JlaWduS2V5c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5c0RhdGEgPSBhd2FpdCB0aGlzLmRyaXZlci5xdWVyeShgU0VMRUNUICogRlJPTSBwcmFnbWFfZm9yZWlnbl9rZXlfbGlzdCgke3RoaXMuZHJpdmVyLnF1b3RlKHRoaXMuZ2V0TmFtZSgpKX0pYClcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlzID0gW11cblxuICAgICAgZm9yIChjb25zdCBmb3JlaWduS2V5RGF0YSBvZiBmb3JlaWduS2V5c0RhdGEpIHtcbiAgICAgICAgY29uc3QgZm9yZWlnbktleSA9IG5ldyBGb3JlaWduS2V5KGZvcmVpZ25LZXlEYXRhLCB7dGFibGVOYW1lOiB0aGlzLmdldE5hbWUoKX0pXG5cbiAgICAgICAgZm9yZWlnbktleXMucHVzaChmb3JlaWduS2V5KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yZWlnbktleXNcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0SW5kZXhlcygpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5fY2FjaGVkVGFibGVTY2hlbWFNZXRhZGF0YSh0aGlzLmdldE5hbWUoKSwgXCJpbmRleGVzXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KGBQUkFHTUEgaW5kZXhfbGlzdCgke3RoaXMuZ2V0T3B0aW9ucygpLnF1b3RlVGFibGVOYW1lKHRoaXMuZ2V0TmFtZSgpKX0pYClcbiAgICAgIGNvbnN0IGluZGV4ZXMgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICAgIGNvbnN0IGluZGV4TmFtZSA9IHJvdy5uYW1lXG5cbiAgICAgICAgaWYgKHR5cGVvZiBpbmRleE5hbWUgPT0gXCJzdHJpbmdcIiAmJiBpbmRleE5hbWUuc3RhcnRzV2l0aChcInNxbGl0ZV9hdXRvaW5kZXhfXCIpKSB7XG4gICAgICAgICAgLy8gU2tpcCBTUUxpdGUgaW50ZXJuYWwgYXV0byBpbmRleGVzIChlLmcuIHByaW1hcnkga2V5IC8gdW5pcXVlIGNvbnN0cmFpbnRzKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2x1bW5zSW5kZXggPSBuZXcgQ29sdW1uc0luZGV4KHRoaXMsIHJvdylcbiAgICAgICAgY29uc3QgaW5kZXhNYXN0ZXJEYXRhID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5xdWVyeShgU0VMRUNUICogRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAnaW5kZXgnIEFORCBuYW1lID0gJHt0aGlzLmdldE9wdGlvbnMoKS5xdW90ZShjb2x1bW5zSW5kZXguZ2V0TmFtZSgpKX1gKVxuICAgICAgICBjb25zdCBzcWwgPSBpbmRleE1hc3RlckRhdGFbMF0/LnNxbFxuXG4gICAgICAgIGlmICghc3FsKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIFNRTCBmb3IgaW5kZXggJHtjb2x1bW5zSW5kZXguZ2V0TmFtZSgpfWApXG5cbiAgICAgICAgY29uc3QgaW5kZXhEYXRhID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7dHlwZW9mIGNvbHVtbnNJbmRleC5kYXRhICYge2NvbHVtbk5hbWVzPzogc3RyaW5nW119fSAqLyAoY29sdW1uc0luZGV4LmRhdGEpXG5cbiAgICAgICAgaW5kZXhEYXRhLmNvbHVtbk5hbWVzID0gdGhpcy5fcGFyc2VDb2x1bW5zRnJvbVNRTChTdHJpbmcoc3FsKSlcblxuICAgICAgICBpbmRleGVzLnB1c2goY29sdW1uc0luZGV4KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlc1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBwYXJzZSBjb2x1bW5zIGZyb20gc3FsLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHJldHVybnMge3N0cmluZ1tdfSAtIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgX3BhcnNlQ29sdW1uc0Zyb21TUUwoc3FsKSB7XG4gICAgaWYgKCFzcWwpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBTUUwgZ2l2ZW4gKCR7dHlwZW9mIHNxbH0pOiAke3NxbH1gKVxuXG4gICAgY29uc3QgY29sdW1uc1NRTE1hdGNoID0gc3FsLm1hdGNoKC9cXCgoLis/KVxcKS8pXG5cbiAgICBpZiAoIWNvbHVtbnNTUUxNYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgbWF0Y2ggY29sdW1ucyBmcm9tIFNRTDogJHtzcWx9YClcbiAgICB9XG5cbiAgICBjb25zdCBjb2x1bW5zU1FMID0gY29sdW1uc1NRTE1hdGNoWzFdLnNwbGl0KFwiLFwiKVxuICAgIGNvbnN0IGNvbHVtbk5hbWVzID0gW11cblxuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnNTUUwpIHtcbiAgICAgIGNvbnN0IG1hdGNoVGlja3MgPSBjb2x1bW4ubWF0Y2goL2AoLispYC8pXG4gICAgICBjb25zdCBtYXRjaFF1b3RlcyA9IGNvbHVtbi5tYXRjaCgvXCIoLispXCIvKVxuXG4gICAgICBpZiAobWF0Y2hUaWNrcykge1xuICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKG1hdGNoVGlja3NbMV0pXG4gICAgICB9IGVsc2UgaWYgKG1hdGNoUXVvdGVzKSB7XG4gICAgICAgIGNvbHVtbk5hbWVzLnB1c2gobWF0Y2hRdW90ZXNbMV0pXG4gICAgICB9IGVsc2V7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgcGFyc2UgY29sdW1uIHBhcnQ6ICR7Y29sdW1ufWApXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbHVtbk5hbWVzXG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgbmFtZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgdGFibGUgbmFtZS5cbiAgICovXG4gIGdldE5hbWUoKSB7XG4gICAgaWYgKCF0aGlzLnJvdy5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBuYW1lIGdpdmVuIGZvciBTUUxpdGUgdGFibGVcIilcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHRoaXMucm93Lm5hbWUpXG4gIH1cbn1cbiJdfQ==
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9zcWxpdGUvdGFibGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sU0FBUyxNQUFNLGtCQUFrQixDQUFBO0FBQ3hDLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsT0FBTyxPQUFPLG1DQUFvQyxTQUFRLFNBQVM7SUFDeEU7Ozs7O09BS0c7SUFDSCxZQUFZLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFBQztRQUN2QixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3RixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtZQUVsQixLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7Z0JB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QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzlCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZVRhYmxlIGZyb20gXCIuLi9iYXNlLXRhYmxlLmpzXCJcbmltcG9ydCBDb2x1bW4gZnJvbSBcIi4vY29sdW1uLmpzXCJcbmltcG9ydCBDb2x1bW5zSW5kZXggZnJvbSBcIi4vY29sdW1ucy1pbmRleC5qc1wiXG5pbXBvcnQgRm9yZWlnbktleSBmcm9tIFwiLi9mb3JlaWduLWtleS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc1NxbGl0ZVRhYmxlIGV4dGVuZHMgQmFzZVRhYmxlIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRyaXZlciAtIERhdGFiYXNlIGRyaXZlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBudWxsPn0gYXJncy5yb3cgLSBSb3cgZGF0YS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkcml2ZXIsIHJvd30pIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5kcml2ZXIgPSBkcml2ZXJcbiAgICB0aGlzLnJvdyA9IHJvd1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGNvbHVtbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGltcG9ydChcIi4uL2Jhc2UtY29sdW1uLmpzXCIpLmRlZmF1bHQ+Pn0gLSBSZXNvbHZlcyB3aXRoIHRoZSBjb2x1bW5zLlxuICAgKi9cbiAgYXN5bmMgZ2V0Q29sdW1ucygpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5fY2FjaGVkVGFibGVTY2hlbWFNZXRhZGF0YSh0aGlzLmdldE5hbWUoKSwgXCJjb2x1bW5zXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZHJpdmVyLnF1ZXJ5KGBQUkFHTUEgdGFibGVfaW5mbygnJHt0aGlzLmdldE5hbWUoKX0nKWApXG4gICAgICBjb25zdCBjb2x1bW5zID0gW11cblxuICAgICAgZm9yIChjb25zdCBjb2x1bW5EYXRhIG9mIHJlc3VsdCkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uKHtjb2x1bW46IGNvbHVtbkRhdGEsIGRyaXZlcjogdGhpcy5kcml2ZXIsIHRhYmxlOiB0aGlzfSlcblxuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29sdW1uc1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBnZXRGb3JlaWduS2V5cygpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5fY2FjaGVkVGFibGVTY2hlbWFNZXRhZGF0YSh0aGlzLmdldE5hbWUoKSwgXCJmb3JlaWduS2V5c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmb3JlaWduS2V5c0RhdGEgPSBhd2FpdCB0aGlzLmRyaXZlci5xdWVyeShgU0VMRUNUICogRlJPTSBwcmFnbWFfZm9yZWlnbl9rZXlfbGlzdCgke3RoaXMuZHJpdmVyLnF1b3RlKHRoaXMuZ2V0TmFtZSgpKX0pYClcbiAgICAgIGNvbnN0IGZvcmVpZ25LZXlzID0gW11cblxuICAgICAgZm9yIChjb25zdCBmb3JlaWduS2V5RGF0YSBvZiBmb3JlaWduS2V5c0RhdGEpIHtcbiAgICAgICAgY29uc3QgZm9yZWlnbktleSA9IG5ldyBGb3JlaWduS2V5KGZvcmVpZ25LZXlEYXRhLCB7dGFibGVOYW1lOiB0aGlzLmdldE5hbWUoKX0pXG5cbiAgICAgICAgZm9yZWlnbktleXMucHVzaChmb3JlaWduS2V5KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9yZWlnbktleXNcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZ2V0SW5kZXhlcygpIHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5fY2FjaGVkVGFibGVTY2hlbWFNZXRhZGF0YSh0aGlzLmdldE5hbWUoKSwgXCJpbmRleGVzXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJvd3MgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KGBQUkFHTUEgaW5kZXhfbGlzdCgke3RoaXMuZ2V0T3B0aW9ucygpLnF1b3RlVGFibGVOYW1lKHRoaXMuZ2V0TmFtZSgpKX0pYClcbiAgICAgIGNvbnN0IGluZGV4ZXMgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICAgIGNvbnN0IGluZGV4TmFtZSA9IHJvdy5uYW1lXG5cbiAgICAgICAgaWYgKHR5cGVvZiBpbmRleE5hbWUgPT0gXCJzdHJpbmdcIiAmJiBpbmRleE5hbWUuc3RhcnRzV2l0aChcInNxbGl0ZV9hdXRvaW5kZXhfXCIpKSB7XG4gICAgICAgICAgLy8gU2tpcCBTUUxpdGUgaW50ZXJuYWwgYXV0byBpbmRleGVzIChlLmcuIHByaW1hcnkga2V5IC8gdW5pcXVlIGNvbnN0cmFpbnRzKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2x1bW5zSW5kZXggPSBuZXcgQ29sdW1uc0luZGV4KHRoaXMsIHJvdylcbiAgICAgICAgY29uc3QgaW5kZXhNYXN0ZXJEYXRhID0gYXdhaXQgdGhpcy5nZXREcml2ZXIoKS5xdWVyeShgU0VMRUNUICogRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGUgPSAnaW5kZXgnIEFORCBuYW1lID0gJHt0aGlzLmdldE9wdGlvbnMoKS5xdW90ZShjb2x1bW5zSW5kZXguZ2V0TmFtZSgpKX1gKVxuICAgICAgICBjb25zdCBzcWwgPSBpbmRleE1hc3RlckRhdGFbMF0/LnNxbFxuXG4gICAgICAgIGlmICghc3FsKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIFNRTCBmb3IgaW5kZXggJHtjb2x1bW5zSW5kZXguZ2V0TmFtZSgpfWApXG5cbiAgICAgICAgY29uc3QgaW5kZXhEYXRhID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICogQHR5cGUge3R5cGVvZiBjb2x1bW5zSW5kZXguZGF0YSAmIHtjb2x1bW5OYW1lcz86IHN0cmluZ1tdfX0gKi8gKGNvbHVtbnNJbmRleC5kYXRhKVxuXG4gICAgICAgIGluZGV4RGF0YS5jb2x1bW5OYW1lcyA9IHRoaXMuX3BhcnNlQ29sdW1uc0Zyb21TUUwoU3RyaW5nKHNxbCkpXG5cbiAgICAgICAgaW5kZXhlcy5wdXNoKGNvbHVtbnNJbmRleClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluZGV4ZXNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcGFyc2UgY29sdW1ucyBmcm9tIHNxbC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNxbCAtIFNRTCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIF9wYXJzZUNvbHVtbnNGcm9tU1FMKHNxbCkge1xuICAgIGlmICghc3FsKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgU1FMIGdpdmVuICgke3R5cGVvZiBzcWx9KTogJHtzcWx9YClcblxuICAgIGNvbnN0IGNvbHVtbnNTUUxNYXRjaCA9IHNxbC5tYXRjaCgvXFwoKC4rPylcXCkvKVxuXG4gICAgaWYgKCFjb2x1bW5zU1FMTWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IG1hdGNoIGNvbHVtbnMgZnJvbSBTUUw6ICR7c3FsfWApXG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1uc1NRTCA9IGNvbHVtbnNTUUxNYXRjaFsxXS5zcGxpdChcIixcIilcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zU1FMKSB7XG4gICAgICBjb25zdCBtYXRjaFRpY2tzID0gY29sdW1uLm1hdGNoKC9gKC4rKWAvKVxuICAgICAgY29uc3QgbWF0Y2hRdW90ZXMgPSBjb2x1bW4ubWF0Y2goL1wiKC4rKVwiLylcblxuICAgICAgaWYgKG1hdGNoVGlja3MpIHtcbiAgICAgICAgY29sdW1uTmFtZXMucHVzaChtYXRjaFRpY2tzWzFdKVxuICAgICAgfSBlbHNlIGlmIChtYXRjaFF1b3Rlcykge1xuICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKG1hdGNoUXVvdGVzWzFdKVxuICAgICAgfSBlbHNle1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IHBhcnNlIGNvbHVtbiBwYXJ0OiAke2NvbHVtbn1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5OYW1lc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHRhYmxlIG5hbWUuXG4gICAqL1xuICBnZXROYW1lKCkge1xuICAgIGlmICghdGhpcy5yb3cubmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbmFtZSBnaXZlbiBmb3IgU1FMaXRlIHRhYmxlXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLnJvdy5uYW1lKVxuICB9XG59XG4iXX0=
|
|
@@ -22,7 +22,7 @@ export default class VelociousDatabaseMigratorFilesFinder {
|
|
|
22
22
|
let files = await fs.readdir(this.path);
|
|
23
23
|
/**
|
|
24
24
|
* Result.
|
|
25
|
-
|
|
25
|
+
* @type {import("./types.js").MigrationObjectType[]} */
|
|
26
26
|
let result = [];
|
|
27
27
|
for (const file of files) {
|
|
28
28
|
const match = file.match(/^(\d{14})-(.+)\.js$/);
|
|
@@ -42,4 +42,4 @@ export default class VelociousDatabaseMigratorFilesFinder {
|
|
|
42
42
|
return result;
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZmluZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL21pZ3JhdG9yL2ZpbGVzLWZpbmRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE9BQU8sYUFBYSxNQUFNLGdDQUFnQyxDQUFBO0FBRTFELE1BQU0sQ0FBQyxPQUFPLE9BQU8sb0NBQW9DO0lBQ3ZEOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQzdCLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFM0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxTQUFTO1FBQ2IsSUFBSSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUV2Qzs7Z0VBRXdEO1FBQ3hELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVmLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBRS9DLElBQUksQ0FBQyxLQUFLO2dCQUFFLFNBQVE7WUFFcEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9CLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5QixNQUFNLGtCQUFrQixHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUVsRixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNWLElBQUk7Z0JBQ0osUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7Z0JBQ2hDLElBQUk7Z0JBQ0osa0JBQWtCO2FBQ25CLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRW5GLE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi8uLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZU1pZ3JhdG9yRmlsZXNGaW5kZXIge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MucGF0aCAtIFBhdGguXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7cGF0aCwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIGlmICghcGF0aCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gcGF0aCBnaXZlblwiKVxuXG4gICAgdGhpcy5wYXRoID0gcGF0aFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZmluZCBmaWxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8QXJyYXk8aW1wb3J0KFwiLi90eXBlcy5qc1wiKS5NaWdyYXRpb25PYmplY3RUeXBlPj59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgZmlsZXMuXG4gICAqL1xuICBhc3luYyBmaW5kRmlsZXMoKSB7XG4gICAgbGV0IGZpbGVzID0gYXdhaXQgZnMucmVhZGRpcih0aGlzLnBhdGgpXG5cbiAgICAvKipcbiAgICAgKiBSZXN1bHQuXG4gICAgICogQHR5cGUge2ltcG9ydChcIi4vdHlwZXMuanNcIikuTWlncmF0aW9uT2JqZWN0VHlwZVtdfSAqL1xuICAgIGxldCByZXN1bHQgPSBbXVxuXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBtYXRjaCA9IGZpbGUubWF0Y2goL14oXFxkezE0fSktKC4rKVxcLmpzJC8pXG5cbiAgICAgIGlmICghbWF0Y2gpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IGRhdGUgPSBwYXJzZUludChtYXRjaFsxXSlcbiAgICAgIGNvbnN0IG1pZ3JhdGlvbk5hbWUgPSBtYXRjaFsyXVxuICAgICAgY29uc3QgbWlncmF0aW9uQ2xhc3NOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtaWdyYXRpb25OYW1lLnJlcGxhY2VBbGwoXCItXCIsIFwiX1wiKSlcblxuICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICBmaWxlLFxuICAgICAgICBmdWxsUGF0aDogYCR7dGhpcy5wYXRofS8ke2ZpbGV9YCxcbiAgICAgICAgZGF0ZSxcbiAgICAgICAgbWlncmF0aW9uQ2xhc3NOYW1lXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJlc3VsdCA9IHJlc3VsdC5zb3J0KChtaWdyYXRpb24xLCBtaWdyYXRpb24yKSA9PiBtaWdyYXRpb24xLmRhdGUgLSBtaWdyYXRpb24yLmRhdGUpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cbiJdfQ==
|
|
@@ -11,7 +11,7 @@ export default class VelociousDatabaseMigrator {
|
|
|
11
11
|
});
|
|
12
12
|
/**
|
|
13
13
|
* Migrations versions.
|
|
14
|
-
|
|
14
|
+
* @type {Record<string, Record<string, boolean>>} */
|
|
15
15
|
migrationsVersions: Record<string, Record<string, boolean>>;
|
|
16
16
|
configuration: import("../configuration.js").default;
|
|
17
17
|
databaseIdentifiers: string[] | undefined;
|