velocious 1.0.263 → 1.0.265
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 +14 -0
- package/build/bin/velocious.js +7 -2
- package/build/src/application.d.ts +6 -6
- package/build/src/application.d.ts.map +1 -1
- package/build/src/authorization/ability.d.ts +4 -4
- package/build/src/authorization/ability.d.ts.map +1 -1
- package/build/src/authorization/base-resource.d.ts +4 -4
- package/build/src/authorization/base-resource.d.ts.map +1 -1
- package/build/src/background-jobs/client.d.ts +2 -2
- package/build/src/background-jobs/client.d.ts.map +1 -1
- package/build/src/background-jobs/job-runner.d.ts +2 -2
- package/build/src/background-jobs/job-runner.d.ts.map +1 -1
- package/build/src/background-jobs/job-runner.js +5 -3
- package/build/src/background-jobs/job.d.ts +1 -1
- package/build/src/background-jobs/job.d.ts.map +1 -1
- package/build/src/background-jobs/json-socket.d.ts +1 -1
- package/build/src/background-jobs/json-socket.d.ts.map +1 -1
- package/build/src/background-jobs/main.d.ts +34 -12
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +36 -6
- package/build/src/background-jobs/scheduler.d.ts +21 -0
- package/build/src/background-jobs/scheduler.d.ts.map +1 -1
- package/build/src/background-jobs/scheduler.js +3 -2
- package/build/src/background-jobs/status-reporter.d.ts +14 -10
- package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
- package/build/src/background-jobs/status-reporter.js +11 -6
- package/build/src/background-jobs/store.d.ts +73 -117
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +62 -24
- package/build/src/background-jobs/types.d.ts +175 -2
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +44 -1
- package/build/src/background-jobs/worker.d.ts +21 -17
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +30 -9
- package/build/src/cli/base-command.d.ts +5 -5
- package/build/src/cli/base-command.d.ts.map +1 -1
- package/build/src/cli/commands/db/create.d.ts.map +1 -1
- package/build/src/cli/commands/db/create.js +11 -3
- package/build/src/cli/commands/db/schema/load.d.ts +7 -0
- package/build/src/cli/commands/db/schema/load.d.ts.map +1 -0
- package/build/src/cli/commands/db/schema/load.js +9 -0
- package/build/src/cli/index.d.ts +25 -13
- package/build/src/cli/index.d.ts.map +1 -1
- package/build/src/cli/index.js +62 -4
- package/build/src/cli/use-browser-cli.d.ts +2 -2
- package/build/src/cli/use-browser-cli.d.ts.map +1 -1
- package/build/src/cli/use-browser-cli.js +4 -4
- package/build/src/configuration-types.d.ts +160 -136
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration.d.ts +32 -31
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +6 -5
- package/build/src/controller.d.ts +14 -14
- package/build/src/controller.d.ts.map +1 -1
- package/build/src/controller.js +19 -8
- package/build/src/database/drivers/base-columns-index.d.ts +1 -1
- package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
- package/build/src/database/drivers/base.d.ts +15 -14
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +6 -3
- package/build/src/database/drivers/mssql/column.d.ts +1 -0
- package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/connect-connection.d.ts +1 -1
- package/build/src/database/drivers/mssql/connect-connection.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.d.ts +4 -3
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +8 -12
- package/build/src/database/drivers/mssql/table.d.ts +1 -0
- package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/column.d.ts +1 -0
- package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.d.ts +3 -2
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +3 -1
- package/build/src/database/drivers/mysql/query.d.ts +1 -1
- package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/query.js +7 -5
- package/build/src/database/drivers/mysql/table.d.ts +1 -0
- package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/column.d.ts +1 -0
- package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.d.ts +3 -2
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +3 -1
- package/build/src/database/drivers/pgsql/table.d.ts +1 -0
- package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.d.ts +9 -6
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +22 -6
- package/build/src/database/drivers/sqlite/column.d.ts +1 -0
- package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +2 -2
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.native.d.ts +1 -2
- package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.native.js +8 -3
- package/build/src/database/drivers/sqlite/index.web.d.ts +3 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +5 -1
- package/build/src/database/drivers/sqlite/query.web.d.ts +1 -1
- package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/table.d.ts +2 -1
- package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/table.js +3 -2
- package/build/src/database/migration/index.d.ts +10 -10
- package/build/src/database/migration/index.d.ts.map +1 -1
- package/build/src/database/migrator/types.d.ts +1 -1
- package/build/src/database/migrator/types.d.ts.map +1 -1
- package/build/src/database/migrator.d.ts +1 -1
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +1 -0
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +12 -8
- package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
- package/build/src/database/pool/base-methods-forward.js +6 -4
- package/build/src/database/pool/base.d.ts +2 -1
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +6 -4
- package/build/src/database/pool/single-multi-use.d.ts +1 -1
- package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
- package/build/src/database/query/alter-table-base.d.ts.map +1 -1
- package/build/src/database/query/alter-table-base.js +8 -4
- package/build/src/database/query/base.d.ts +1 -1
- package/build/src/database/query/base.d.ts.map +1 -1
- package/build/src/database/query/create-database-base.d.ts +2 -2
- package/build/src/database/query/create-database-base.d.ts.map +1 -1
- package/build/src/database/query/create-index-base.d.ts +6 -6
- package/build/src/database/query/create-index-base.d.ts.map +1 -1
- package/build/src/database/query/create-table-base.d.ts +3 -3
- package/build/src/database/query/create-table-base.d.ts.map +1 -1
- package/build/src/database/query/create-table-base.js +8 -4
- package/build/src/database/query/drop-table-base.d.ts +4 -4
- package/build/src/database/query/drop-table-base.d.ts.map +1 -1
- package/build/src/database/query/index.d.ts +16 -16
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +4 -4
- package/build/src/database/query/insert-base.d.ts +10 -10
- package/build/src/database/query/insert-base.d.ts.map +1 -1
- package/build/src/database/query/join-base.d.ts +1 -1
- package/build/src/database/query/join-base.d.ts.map +1 -1
- package/build/src/database/query/join-object.d.ts +1 -1
- package/build/src/database/query/join-object.d.ts.map +1 -1
- package/build/src/database/query/join-object.js +4 -1
- package/build/src/database/query/model-class-query.d.ts +11 -11
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +29 -18
- package/build/src/database/query/select-base.d.ts +1 -1
- package/build/src/database/query/select-base.d.ts.map +1 -1
- package/build/src/database/query/where-base.d.ts +1 -1
- package/build/src/database/query/where-base.d.ts.map +1 -1
- package/build/src/database/query/where-hash.d.ts +1 -0
- package/build/src/database/query/where-hash.d.ts.map +1 -1
- package/build/src/database/query/where-model-class-hash.d.ts +2 -1
- package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
- package/build/src/database/query/where-model-class-hash.js +15 -7
- package/build/src/database/query/where-not.d.ts +1 -0
- package/build/src/database/query/where-not.d.ts.map +1 -1
- package/build/src/database/query/where-plain.d.ts +1 -0
- package/build/src/database/query/where-plain.d.ts.map +1 -1
- package/build/src/database/query-parser/base-query-parser.d.ts +1 -1
- package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
- package/build/src/database/record/attachments/download.d.ts +3 -3
- package/build/src/database/record/attachments/download.d.ts.map +1 -1
- package/build/src/database/record/attachments/handle.d.ts +2 -1
- package/build/src/database/record/attachments/handle.d.ts.map +1 -1
- package/build/src/database/record/attachments/handle.js +3 -2
- package/build/src/database/record/attachments/normalize-input.d.ts +4 -4
- package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +1 -1
- package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/native.d.ts +3 -3
- package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/s3.d.ts +2 -2
- package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/s3.js +11 -3
- package/build/src/database/record/attachments/store.d.ts +3 -3
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +3 -2
- package/build/src/database/record/index.d.ts +19 -19
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +53 -35
- package/build/src/database/record/instance-relationships/base.d.ts +10 -8
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +9 -5
- package/build/src/database/record/instance-relationships/belongs-to.d.ts +4 -4
- package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/belongs-to.js +9 -2
- package/build/src/database/record/instance-relationships/has-many.d.ts +4 -9
- package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-many.js +12 -8
- package/build/src/database/record/instance-relationships/has-one.d.ts +7 -14
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +11 -5
- package/build/src/database/record/relationships/base.d.ts +18 -18
- package/build/src/database/record/relationships/base.d.ts.map +1 -1
- package/build/src/database/record/relationships/base.js +3 -3
- package/build/src/database/record/relationships/belongs-to.d.ts +1 -1
- package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/relationships/has-many.d.ts +1 -1
- package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/relationships/has-one.d.ts +1 -1
- package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
- package/build/src/database/table-data/index.d.ts +1 -1
- package/build/src/database/table-data/index.d.ts.map +1 -1
- package/build/src/database/table-data/table-column.d.ts +12 -12
- package/build/src/database/table-data/table-column.d.ts.map +1 -1
- package/build/src/database/table-data/table-foreign-key.d.ts +4 -4
- package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
- package/build/src/database/table-data/table-foreign-key.js +2 -2
- package/build/src/database/table-data/table-index.d.ts +3 -3
- package/build/src/database/table-data/table-index.d.ts.map +1 -1
- package/build/src/database/table-data/table-reference.d.ts +1 -1
- package/build/src/database/table-data/table-reference.d.ts.map +1 -1
- package/build/src/environment-handlers/base.d.ts +10 -5
- package/build/src/environment-handlers/base.d.ts.map +1 -1
- package/build/src/environment-handlers/base.js +10 -2
- package/build/src/environment-handlers/browser.d.ts +5 -26
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +14 -4
- package/build/src/environment-handlers/node/cli/commands/console.js +3 -3
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +24 -0
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -0
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +57 -0
- package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/seed.js +4 -2
- package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +4 -2
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +9 -4
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +1 -1
- 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 +9 -4
- package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/migration.js +4 -2
- package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/model.js +4 -2
- package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/routes.js +3 -1
- package/build/src/environment-handlers/node/cli/commands/run-script.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/run-script.js +5 -3
- package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/runner.js +5 -3
- package/build/src/environment-handlers/node/cli/commands/server.d.ts +3 -3
- package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/server.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/test.js +2 -2
- package/build/src/environment-handlers/node.d.ts +9 -1
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +10 -2
- package/build/src/error-logger.d.ts.map +1 -1
- package/build/src/error-logger.js +1 -5
- package/build/src/frontend-model-controller.d.ts +17 -17
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +31 -12
- package/build/src/frontend-model-resource/base-resource.d.ts +14 -12
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +16 -4
- package/build/src/frontend-models/base.d.ts +27 -20
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +31 -12
- package/build/src/frontend-models/query.d.ts +29 -8
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +18 -4
- package/build/src/http-client/index.d.ts +11 -11
- package/build/src/http-client/index.d.ts.map +1 -1
- package/build/src/http-client/request.d.ts +2 -2
- package/build/src/http-client/request.d.ts.map +1 -1
- package/build/src/http-client/response.d.ts +1 -1
- package/build/src/http-client/response.d.ts.map +1 -1
- package/build/src/http-client/websocket-client.d.ts +26 -12
- package/build/src/http-client/websocket-client.d.ts.map +1 -1
- package/build/src/http-client/websocket-client.js +26 -12
- package/build/src/http-server/client/index.d.ts +4 -4
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +17 -11
- package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
- package/build/src/http-server/client/params-to-object.js +14 -11
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts +15 -7
- 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 +9 -1
- package/build/src/http-server/client/request-buffer/index.d.ts +15 -14
- package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/index.js +19 -7
- 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 +2 -2
- package/build/src/http-server/client/request-runner.d.ts.map +1 -1
- package/build/src/http-server/client/request-runner.js +4 -2
- package/build/src/http-server/client/request.d.ts +3 -3
- package/build/src/http-server/client/request.d.ts.map +1 -1
- package/build/src/http-server/client/response.d.ts +4 -4
- package/build/src/http-server/client/response.d.ts.map +1 -1
- package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +2 -2
- package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-request.d.ts +22 -16
- package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-request.js +13 -5
- package/build/src/http-server/client/websocket-session.d.ts +52 -17
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +59 -10
- package/build/src/http-server/cookie.d.ts +17 -17
- package/build/src/http-server/cookie.d.ts.map +1 -1
- package/build/src/http-server/index.d.ts +4 -4
- package/build/src/http-server/index.d.ts.map +1 -1
- package/build/src/http-server/index.js +4 -4
- package/build/src/http-server/server-client.d.ts +3 -3
- package/build/src/http-server/server-client.d.ts.map +1 -1
- package/build/src/http-server/server-client.js +4 -4
- package/build/src/http-server/websocket-channel.d.ts +3 -3
- package/build/src/http-server/websocket-channel.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +6 -3
- package/build/src/http-server/websocket-events.d.ts +2 -2
- package/build/src/http-server/websocket-events.d.ts.map +1 -1
- package/build/src/http-server/websocket-events.js +3 -1
- package/build/src/http-server/worker-handler/index.d.ts +7 -7
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +16 -7
- package/build/src/http-server/worker-handler/worker-thread.d.ts +9 -9
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +23 -13
- package/build/src/logger/console-logger.d.ts +2 -2
- package/build/src/logger/console-logger.d.ts.map +1 -1
- package/build/src/logger/file-logger.d.ts +2 -2
- package/build/src/logger/file-logger.d.ts.map +1 -1
- package/build/src/logger/outputs/array-output.d.ts +1 -1
- package/build/src/logger/outputs/array-output.d.ts.map +1 -1
- package/build/src/logger/outputs/file-output.d.ts +8 -5
- package/build/src/logger/outputs/file-output.d.ts.map +1 -1
- package/build/src/logger/outputs/file-output.js +4 -1
- package/build/src/logger.d.ts +7 -7
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.d.ts +3 -3
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +3 -3
- package/build/src/mailer/base.d.ts +7 -7
- package/build/src/mailer/base.d.ts.map +1 -1
- package/build/src/mailer/base.js +3 -3
- package/build/src/plugins/sqljs-wasm-route.d.ts +2 -2
- package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
- package/build/src/routes/base-route.d.ts +2 -2
- package/build/src/routes/base-route.d.ts.map +1 -1
- package/build/src/routes/base-route.js +2 -2
- package/build/src/routes/get-route.d.ts +5 -0
- package/build/src/routes/get-route.d.ts.map +1 -1
- package/build/src/routes/namespace-route.d.ts +1 -1
- package/build/src/routes/plugin-routes.d.ts +2 -2
- package/build/src/routes/plugin-routes.d.ts.map +1 -1
- package/build/src/routes/post-route.d.ts +5 -0
- package/build/src/routes/post-route.d.ts.map +1 -1
- package/build/src/routes/resolver.d.ts +4 -2
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +7 -3
- package/build/src/routes/resource-route.d.ts +5 -0
- package/build/src/routes/resource-route.d.ts.map +1 -1
- package/build/src/routes/root-route.d.ts +5 -0
- package/build/src/routes/root-route.d.ts.map +1 -1
- package/build/src/testing/expect-to-change.d.ts +3 -3
- package/build/src/testing/expect-to-change.d.ts.map +1 -1
- package/build/src/testing/expect-utils.d.ts.map +1 -1
- package/build/src/testing/expect-utils.js +7 -5
- package/build/src/testing/expect.d.ts +1 -1
- package/build/src/testing/expect.d.ts.map +1 -1
- package/build/src/testing/request-client.d.ts +1 -1
- package/build/src/testing/request-client.d.ts.map +1 -1
- package/build/src/testing/test-files-finder.d.ts +1 -1
- package/build/src/testing/test-files-finder.d.ts.map +1 -1
- package/build/src/testing/test-runner.d.ts +57 -37
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +14 -3
- package/build/src/testing/test-suite-splitter.d.ts +1 -1
- package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
- package/build/src/testing/test.d.ts +14 -6
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +14 -5
- package/build/src/utils/backtrace-cleaner.d.ts +2 -2
- package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
- package/build/src/utils/split-sql-statements.d.ts +7 -0
- package/build/src/utils/split-sql-statements.d.ts.map +1 -0
- package/build/src/utils/split-sql-statements.js +77 -0
- package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack-async-hooks.js +5 -3
- package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack.js +5 -3
- package/build/src/velocious-error.d.ts +4 -4
- package/build/src/velocious-error.d.ts.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -2
|
@@ -124,7 +124,7 @@ export default class VelociousDatabaseQuery {
|
|
|
124
124
|
this._selects = selects;
|
|
125
125
|
/** @type {import("./where-base.js").default[]} */
|
|
126
126
|
this._wheres = wheres;
|
|
127
|
-
const boundWhere = this.where.bind(this);
|
|
127
|
+
const boundWhere = /** @type {any} */ (this.where.bind(this));
|
|
128
128
|
boundWhere.not = this.whereNot.bind(this);
|
|
129
129
|
this.where = boundWhere;
|
|
130
130
|
}
|
|
@@ -324,7 +324,7 @@ export default class VelociousDatabaseQuery {
|
|
|
324
324
|
this._wheres.push(new WherePlain(this, where));
|
|
325
325
|
}
|
|
326
326
|
else if (typeof where == "object" && (where.constructor.name == "object" || where.constructor.name == "Object")) {
|
|
327
|
-
this._wheres.push(new WhereHash(this, where));
|
|
327
|
+
this._wheres.push(new WhereHash(this, /** @type {import("./where-hash.js").WhereHash} */ (where)));
|
|
328
328
|
}
|
|
329
329
|
else {
|
|
330
330
|
throw new Error(`Invalid type of where: ${typeof where} (${where.constructor.name})`);
|
|
@@ -340,7 +340,7 @@ export default class VelociousDatabaseQuery {
|
|
|
340
340
|
this._wheres.push(new WhereNot(new WherePlain(this, where)));
|
|
341
341
|
}
|
|
342
342
|
else if (typeof where == "object" && (where.constructor.name == "object" || where.constructor.name == "Object")) {
|
|
343
|
-
this._wheres.push(new WhereNot(new WhereHash(this, where)));
|
|
343
|
+
this._wheres.push(new WhereNot(new WhereHash(this, /** @type {import("./where-hash.js").WhereHash} */ (where))));
|
|
344
344
|
}
|
|
345
345
|
else {
|
|
346
346
|
throw new Error(`Invalid type of where: ${typeof where} (${where.constructor.name})`);
|
|
@@ -355,4 +355,4 @@ export default class VelociousDatabaseQuery {
|
|
|
355
355
|
return this._driverFn();
|
|
356
356
|
}
|
|
357
357
|
}
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUM3QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUNwQyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyQyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV6Qzs7OztHQUlHO0FBRUg7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUFJO0lBQy9CLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFFcEIsSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPLEVBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQTtJQUN2QixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsb0RBQW9EO1FBQ3BELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVqQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sUUFBUSxHQUFH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RUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDN0QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixPQUFPLEtBQUssS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7UUFDdkYsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgRnJvbVBsYWluIGZyb20gXCIuL2Zyb20tcGxhaW4uanNcIlxuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tIFwiaXMtcGxhaW4tb2JqZWN0XCJcbmltcG9ydCBKb2luT2JqZWN0IGZyb20gXCIuL2pvaW4tb2JqZWN0LmpzXCJcbmltcG9ydCBKb2luUGxhaW4gZnJvbSBcIi4vam9pbi1wbGFpbi5qc1wiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi8uLi9sb2dnZXIuanNcIlxuaW1wb3J0IE9yZGVyUGxhaW4gZnJvbSBcIi4vb3JkZXItcGxhaW4uanNcIlxuaW1wb3J0IFNlbGVjdEJhc2UgZnJvbSBcIi4vc2VsZWN0LWJhc2UuanNcIlxuaW1wb3J0IFNlbGVjdFBsYWluIGZyb20gXCIuL3NlbGVjdC1wbGFpbi5qc1wiXG5pbXBvcnQgV2hlcmVIYXNoIGZyb20gXCIuL3doZXJlLWhhc2guanNcIlxuaW1wb3J0IFdoZXJlTm90IGZyb20gXCIuL3doZXJlLW5vdC5qc1wiXG5pbXBvcnQgV2hlcmVQbGFpbiBmcm9tIFwiLi93aGVyZS1wbGFpbi5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge3tba2V5OiBzdHJpbmddOiBib29sZWFuIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBOZXN0ZWRQcmVsb2FkUmVjb3JkIH19IE5lc3RlZFByZWxvYWRSZWNvcmRcbiAqIEB0eXBlZGVmIHtzdHJpbmcgfCBzdHJpbmdbXSB8IGltcG9ydChcIi4vc2VsZWN0LWJhc2UuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vc2VsZWN0LWJhc2UuanNcIikuZGVmYXVsdFtdfSBTZWxlY3RBcmd1bWVudFR5cGVcbiAqIEB0eXBlZGVmIHtvYmplY3QgfCBzdHJpbmd9IFdoZXJlQXJndW1lbnRUeXBlXG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdElucHV0IHwgc3RyaW5nIHwgc3RyaW5nW119IGpvaW4gLSBKb2luIGRhdGEgaW4gc2hvcnRoYW5kIG9yIG5lc3RlZCBmb3JtLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdH0gLSBOb3JtYWxpemVkIGpvaW4gcmVjb3JkLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVKb2luT2JqZWN0KGpvaW4pIHtcbiAgaWYgKCFqb2luKSByZXR1cm4ge31cblxuICBpZiAodHlwZW9mIGpvaW4gPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB7W2pvaW5dOiB0cnVlfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoam9pbikpIHtcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdH0gKi9cbiAgICBjb25zdCByZXN1bHQgPSB7fVxuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBqb2luKSB7XG4gICAgICBpZiAodHlwZW9mIGVudHJ5ID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSByZXN1bHRbZW50cnldXG4gICAgICAgIHJlc3VsdFtlbnRyeV0gPSBtZXJnZUpvaW5WYWx1ZShleGlzdGluZywgdHJ1ZSlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVKb2luT2JqZWN0KGVudHJ5KVxuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5vcm1hbGl6ZWQpKSB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSByZXN1bHRba2V5XVxuICAgICAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2VKb2luVmFsdWUoZXhpc3RpbmcsIHZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBqb2luIGVudHJ5IHR5cGU6ICR7dHlwZW9mIGVudHJ5fWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKCFpc1BsYWluT2JqZWN0KGpvaW4pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpvaW4gdHlwZTogJHt0eXBlb2Ygam9pbn1gKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2pvaW4tb2JqZWN0LmpzXCIpLkpvaW5PYmplY3R9ICovXG4gIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoam9pbikpIHtcbiAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHJlc3VsdFtrZXldXG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlSm9pblZhbHVlKGV4aXN0aW5nLCB2YWx1ZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHJlc3VsdFtrZXldXG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlSm9pblZhbHVlKGV4aXN0aW5nLCBub3JtYWxpemVKb2luT2JqZWN0KHZhbHVlKSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpvaW4gdmFsdWUgZm9yICR7a2V5fTogJHt0eXBlb2YgdmFsdWV9YClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdFtzdHJpbmddIHwgdW5kZWZpbmVkfSBleGlzdGluZyAtIEV4aXN0aW5nIG5vcm1hbGl6ZWQgam9pbiB2YWx1ZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9qb2luLW9iamVjdC5qc1wiKS5Kb2luT2JqZWN0W3N0cmluZ119IGluY29taW5nIC0gSW5jb21pbmcgbm9ybWFsaXplZCBqb2luIHZhbHVlLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdFtzdHJpbmddfSAtIE1lcmdlZCBqb2luIHZhbHVlLlxuICovXG5mdW5jdGlvbiBtZXJnZUpvaW5WYWx1ZShleGlzdGluZywgaW5jb21pbmcpIHtcbiAgaWYgKCFleGlzdGluZykgcmV0dXJuIGluY29taW5nXG4gIGlmIChleGlzdGluZyA9PT0gdHJ1ZSB8fCBpbmNvbWluZyA9PT0gdHJ1ZSkgcmV0dXJuIHRydWVcblxuICBpZiAodHlwZW9mIGV4aXN0aW5nID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGluY29taW5nID09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gey4uLmV4aXN0aW5nLCAuLi5pbmNvbWluZ31cbiAgfVxuXG4gIHJldHVybiBpbmNvbWluZ1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFF1ZXJ5QXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHQgfCAoKCkgPT4gaW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHQpfSBkcml2ZXIgLSBEcml2ZXIgaW5zdGFuY2Ugb3IgZmFjdG9yeSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuICogQHByb3BlcnR5IHtBcnJheTxpbXBvcnQoXCIuL2Zyb20tYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW2Zyb21zXSAtIEZST00gY2xhdXNlcyBmb3IgdGhlIHF1ZXJ5LlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2dyb3Vwc10gLSBHUk9VUCBCWSBjb2x1bW5zLlxuICogQHByb3BlcnR5IHtBcnJheTxpbXBvcnQoXCIuL2pvaW4tYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW2pvaW5zXSAtIEpPSU4gY2xhdXNlcyBmb3IgdGhlIHF1ZXJ5LlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9oYW5kbGVyLmpzXCIpLmRlZmF1bHR9IGhhbmRsZXIgLSBIYW5kbGVyIHVzZWQgZm9yIGV4ZWN1dGluZyBhbmQgdHJhbnNmb3JtaW5nIHJlc3VsdHMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IFtsaW1pdF0gLSBMSU1JVCBjbGF1c2UgdmFsdWUuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IFtvZmZzZXRdIC0gT0ZGU0VUIGNsYXVzZSB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8aW1wb3J0KFwiLi9vcmRlci1iYXNlLmpzXCIpLmRlZmF1bHQ+fSBbb3JkZXJzXSAtIE9SREVSIEJZIGNsYXVzZXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IFtwYWdlXSAtIFBhZ2UgbnVtYmVyIGZvciBwYWdpbmF0aW9uLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwZXJQYWdlXSAtIFJlY29yZHMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24uXG4gKiBAcHJvcGVydHkge05lc3RlZFByZWxvYWRSZWNvcmR9IFtwcmVsb2FkXSAtIFByZWxvYWQgZ3JhcGggZm9yIHJlbGF0ZWQgcmVjb3Jkcy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8aW1wb3J0KFwiLi9zZWxlY3QtYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW3NlbGVjdHNdIC0gU0VMRUNUIGNsYXVzZXMgZm9yIHRoZSBxdWVyeS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2Rpc3RpbmN0XSAtIFdoZXRoZXIgdGhlIHF1ZXJ5IHNob3VsZCB1c2UgRElTVElOQ1QuXG4gKiBAcHJvcGVydHkge0FycmF5PGltcG9ydChcIi4vd2hlcmUtYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW3doZXJlc10gLSBXSEVSRSBjb25kaXRpb25zIGZvciB0aGUgcXVlcnkuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge1F1ZXJ5QXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBkcml2ZXIsXG4gICAgZnJvbXMgPSBbXSxcbiAgICBncm91cHMgPSBbXSxcbiAgICBqb2lucyA9IFtdLFxuICAgIGhhbmRsZXIsXG4gICAgbGltaXQgPSBudWxsLFxuICAgIG9mZnNldCA9IG51bGwsXG4gICAgb3JkZXJzID0gW10sXG4gICAgcGFnZSA9IG51bGwsXG4gICAgcGVyUGFnZSxcbiAgICBwcmVsb2FkID0ge30sXG4gICAgZGlzdGluY3QgPSBmYWxzZSxcbiAgICBzZWxlY3RzID0gW10sXG4gICAgd2hlcmVzID0gW11cbiAgfSkge1xuICAgIGlmICghZHJpdmVyKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBkcml2ZXIgZ2l2ZW4gdG8gcXVlcnlcIilcbiAgICBpZiAoIWhhbmRsZXIpIHRocm93IG5ldyBFcnJvcihcIk5vIGhhbmRsZXIgZ2l2ZW4gdG8gcXVlcnlcIilcblxuICAgIC8qKiBAdHlwZSB7KCkgPT4gaW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9ICovXG4gICAgdGhpcy5fZHJpdmVyRm4gPSB0eXBlb2YgZHJpdmVyID09PSBcImZ1bmN0aW9uXCIgPyBkcml2ZXIgOiAoKSA9PiBkcml2ZXJcbiAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy5fZnJvbXMgPSBmcm9tc1xuICAgIHRoaXMuX2dyb3VwcyA9IGdyb3Vwc1xuICAgIHRoaXMuX2pvaW5zID0gam9pbnNcbiAgICB0aGlzLl9saW1pdCA9IGxpbWl0XG4gICAgdGhpcy5fb2Zmc2V0ID0gb2Zmc2V0XG4gICAgdGhpcy5fb3JkZXJzID0gb3JkZXJzXG4gICAgdGhpcy5fcGFnZSA9IHBhZ2VcbiAgICB0aGlzLl9wZXJQYWdlID0gcGVyUGFnZVxuICAgIHRoaXMuX3ByZWxvYWQgPSBwcmVsb2FkXG4gICAgdGhpcy5fZGlzdGluY3QgPSBkaXN0aW5jdFxuICAgIHRoaXMuX3NlbGVjdHMgPSBzZWxlY3RzXG5cbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vd2hlcmUtYmFzZS5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgdGhpcy5fd2hlcmVzID0gd2hlcmVzXG5cbiAgICBjb25zdCBib3VuZFdoZXJlID0gdGhpcy53aGVyZS5iaW5kKHRoaXMpXG4gICAgYm91bmRXaGVyZS5ub3QgPSB0aGlzLndoZXJlTm90LmJpbmQodGhpcylcbiAgICB0aGlzLndoZXJlID0gYm91bmRXaGVyZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBjbG9uZS4gICovXG4gIGNsb25lKCkge1xuICAgIGNvbnN0IFF1ZXJ5Q2xhc3MgPSAvKiogQHR5cGUge25ldyAoYXJnczogUXVlcnlBcmdzVHlwZSkgPT4gdGhpc30gKi8gKHRoaXMuY29uc3RydWN0b3IpXG4gICAgY29uc3QgbmV3UXVlcnkgPSBuZXcgUXVlcnlDbGFzcyh7XG4gICAgICBkcml2ZXI6IHRoaXMuX2RyaXZlckZuLFxuICAgICAgZnJvbXM6IFsuLi50aGlzLl9mcm9tc10sXG4gICAgICBoYW5kbGVyOiB0aGlzLmhhbmRsZXIuY2xvbmUoKSxcbiAgICAgIGdyb3VwczogWy4uLnRoaXMuX2dyb3Vwc10sXG4gICAgICBqb2luczogWy4uLnRoaXMuX2pvaW5zXSxcbiAgICAgIGxpbWl0OiB0aGlzLl9saW1pdCxcbiAgICAgIG9mZnNldDogdGhpcy5fb2Zmc2V0LFxuICAgICAgb3JkZXJzOiBbLi4udGhpcy5fb3JkZXJzXSxcbiAgICAgIHBhZ2U6IHRoaXMuX3BhZ2UsXG4gICAgICBwZXJQYWdlOiB0aGlzLl9wZXJQYWdlLFxuICAgICAgcHJlbG9hZDogey4uLnRoaXMuX3ByZWxvYWR9LFxuICAgICAgZGlzdGluY3Q6IHRoaXMuX2Rpc3RpbmN0LFxuICAgICAgc2VsZWN0czogWy4uLnRoaXMuX3NlbGVjdHNdLFxuICAgICAgd2hlcmVzOiBbLi4udGhpcy5fd2hlcmVzXVxuICAgIH0pXG5cbiAgICByZXR1cm4gbmV3UXVlcnlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9mcm9tLWJhc2UuanNcIikuZGVmYXVsdFtdfSAtIFRoZSBmcm9tcy4gICovXG4gIGdldEZyb21zKCkge1xuICAgIHJldHVybiB0aGlzLl9mcm9tc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBUaGUgZ3JvdXBzLiAgKi9cbiAgZ2V0R3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLl9ncm91cHNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vcXVlcnktcGFyc2VyL29wdGlvbnMuanNcIikuZGVmYXVsdH0gLSBUaGUgb3B0aW9ucyBvcHRpb25zLiAgKi9cbiAgZ2V0T3B0aW9ucygpIHsgcmV0dXJuIHRoaXMuZHJpdmVyLm9wdGlvbnMoKSB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcnJheTxpbXBvcnQoXCIuL3NlbGVjdC1iYXNlLmpzXCIpLmRlZmF1bHQ+fSAtIFRoZSBzZWxlY3RzLiAgKi9cbiAgZ2V0U2VsZWN0cygpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdHMgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xpbXBvcnQoXCIuL2Zyb20tYmFzZS5qc1wiKS5kZWZhdWx0fSBmcm9tIC0gRnJvbS5cbiAgICogQHJldHVybnMge3RoaXN9IC0gVGhlIGZyb20uXG4gICAqL1xuICBmcm9tKGZyb20pIHtcbiAgICBpZiAodHlwZW9mIGZyb20gPT0gXCJzdHJpbmdcIikgZnJvbSA9IG5ldyBGcm9tUGxhaW4oZnJvbSlcblxuICAgIHRoaXMuX2Zyb21zLnB1c2goZnJvbSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cCAtIEdyb3VwLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgZ3JvdXAuXG4gICAqL1xuICBncm91cChncm91cCkge1xuICAgIHRoaXMuX2dyb3Vwcy5wdXNoKGdyb3VwKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXSB8IGltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdElucHV0fSBqb2luIC0gSm9pbiBjbGF1c2Ugb3Igam9pbiBkZXNjcmlwdG9yLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgam9pbnMuXG4gICAqL1xuICBqb2lucyhqb2luKSB7XG4gICAgaWYgKHR5cGVvZiBqb2luID09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuX2pvaW5zLnB1c2gobmV3IEpvaW5QbGFpbihqb2luKSlcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoam9pbikpIHtcbiAgICAgIHRoaXMuX2pvaW5zLnB1c2gobmV3IEpvaW5PYmplY3Qobm9ybWFsaXplSm9pbk9iamVjdChqb2luKSkpXG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGpvaW4pKSB7XG4gICAgICB0aGlzLl9qb2lucy5wdXNoKG5ldyBKb2luT2JqZWN0KG5vcm1hbGl6ZUpvaW5PYmplY3Qoam9pbikpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSBvZiBqb2luOiAke3R5cGVvZiBqb2lufWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBsaW1pdC5cbiAgICovXG4gIGxpbWl0KHZhbHVlKSB7XG4gICAgdGhpcy5fbGltaXQgPSB2YWx1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgb2Zmc2V0LlxuICAgKi9cbiAgb2Zmc2V0KHZhbHVlKSB7XG4gICAgdGhpcy5fb2Zmc2V0ID0gdmFsdWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBvcmRlciAtIE9yZGVyLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgb3JkZXIuXG4gICAqL1xuICBvcmRlcihvcmRlcikge1xuICAgIGlmICh0eXBlb2Ygb3JkZXIgPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy5fb3JkZXJzLnB1c2gobmV3IE9yZGVyUGxhaW4odGhpcywgb3JkZXIpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9yZGVyID09IFwibnVtYmVyXCIpIHtcbiAgICAgIHRoaXMuX29yZGVycy5wdXNoKG5ldyBPcmRlclBsYWluKHRoaXMsIGAke29yZGVyfWApKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gb3JkZXIgdHlwZTogJHt0eXBlb2Ygb3JkZXJ9YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlTnVtYmVyIC0gUGFnZSBudW1iZXIuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBwYWdlLlxuICAgKi9cbiAgcGFnZShwYWdlTnVtYmVyKSB7XG4gICAgY29uc3QgcGVyUGFnZSA9IHRoaXMuX3BlclBhZ2UgfHwgMzBcbiAgICBjb25zdCBvZmZzZXQgPSAocGFnZU51bWJlciAtIDEpICogcGVyUGFnZVxuICAgIGNvbnN0IGxpbWl0ID0gcGVyUGFnZVxuXG4gICAgdGhpcy5fcGFnZSA9IHBhZ2VOdW1iZXJcbiAgICB0aGlzLmxpbWl0KGxpbWl0KVxuICAgIHRoaXMub2Zmc2V0KG9mZnNldClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwZXJQYWdlIC0gUGFnZSBzaXplLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgcGVyIHBhZ2UuXG4gICAqL1xuICBwZXJQYWdlKHBlclBhZ2UpIHtcbiAgICB0aGlzLl9wZXJQYWdlID0gcGVyUGFnZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG9yZGVyIC0gT3JkZXIuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSByZW9yZGVyLlxuICAgKi9cbiAgcmVvcmRlcihvcmRlcikge1xuICAgIHRoaXMuX29yZGVycyA9IFtdXG4gICAgdGhpcy5vcmRlcihvcmRlcilcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSByZXZlcnNlIG9yZGVyLiAgKi9cbiAgcmV2ZXJzZU9yZGVyKCkge1xuICAgIGZvciAoY29uc3Qgb3JkZXIgb2YgdGhpcy5fb3JkZXJzKSB7XG4gICAgICBvcmRlci5zZXRSZXZlcnNlT3JkZXIodHJ1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ZhbHVlXSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHJldHVybnMge3RoaXN9IC0gVGhlIGRpc3RpbmN0LlxuICAgKi9cbiAgZGlzdGluY3QodmFsdWUgPSB0cnVlKSB7XG4gICAgdGhpcy5fZGlzdGluY3QgPSB2YWx1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtTZWxlY3RBcmd1bWVudFR5cGV9IHNlbGVjdCAtIFNlbGVjdC5cbiAgICogQHJldHVybnMge3RoaXN9IC0gVGhlIHNlbGVjdC5cbiAgICovXG4gIHNlbGVjdChzZWxlY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3QpKSB7XG4gICAgICBmb3IgKGNvbnN0IHNlbGVjdEluQXJyYXkgb2Ygc2VsZWN0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0KHNlbGVjdEluQXJyYXkpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3QgPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy5fc2VsZWN0cy5wdXNoKG5ldyBTZWxlY3RQbGFpbihzZWxlY3QpKVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0IGluc3RhbmNlb2YgU2VsZWN0QmFzZSkge1xuICAgICAgdGhpcy5fc2VsZWN0cy5wdXNoKHNlbGVjdClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbGVjdCB0eXBlOiAke3R5cGVvZiBzZWxlY3R9YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PG9iamVjdD4+fSBBcnJheSBvZiByZXN1bHRzIGZyb20gdGhlIGRhdGFiYXNlXG4gICAqL1xuICBhc3luYyBfZXhlY3V0ZVF1ZXJ5KCkge1xuICAgIGNvbnN0IHNxbCA9IHRoaXMudG9TcWwoKVxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmRyaXZlci5xdWVyeShzcWwpXG5cbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJTUUw6XCIsIHNxbF0pXG5cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PG9iamVjdD4+fSBBcnJheSBvZiByZXN1bHRzIGZyb20gdGhlIGRhdGFiYXNlICovXG4gIGFzeW5jIHJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2V4ZWN1dGVRdWVyeSgpXG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIFNRTCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgcXVlcnlcbiAgICogQHJldHVybnMge3N0cmluZ30gU1FMIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBxdWVyeVxuICAgKi9cbiAgdG9TcWwoKSB7IHJldHVybiB0aGlzLmRyaXZlci5xdWVyeVRvU3FsKHRoaXMpIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtXaGVyZUFyZ3VtZW50VHlwZX0gd2hlcmUgLSBXaGVyZS5cbiAgICogQHJldHVybnMge3RoaXN9IFRoaXMgcXVlcnkgaW5zdGFuY2VcbiAgICovXG4gIHdoZXJlKHdoZXJlKSB7XG4gICAgaWYgKHR5cGVvZiB3aGVyZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aGlzLl93aGVyZXMucHVzaChuZXcgV2hlcmVQbGFpbih0aGlzLCB3aGVyZSkpXG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygd2hlcmUgPT0gXCJvYmplY3RcIiAmJiAod2hlcmUuY29uc3RydWN0b3IubmFtZSA9PSBcIm9iamVjdFwiIHx8IHdoZXJlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJPYmplY3RcIikpIHtcbiAgICAgIHRoaXMuX3doZXJlcy5wdXNoKG5ldyBXaGVyZUhhc2godGhpcywgd2hlcmUpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBvZiB3aGVyZTogJHt0eXBlb2Ygd2hlcmV9ICgke3doZXJlLmNvbnN0cnVjdG9yLm5hbWV9KWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1doZXJlQXJndW1lbnRUeXBlfSB3aGVyZSAtIFdoZXJlLlxuICAgKiBAcmV0dXJucyB7dGhpc30gVGhpcyBxdWVyeSBpbnN0YW5jZVxuICAgKi9cbiAgd2hlcmVOb3Qod2hlcmUpIHtcbiAgICBpZiAodHlwZW9mIHdoZXJlID09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuX3doZXJlcy5wdXNoKG5ldyBXaGVyZU5vdChuZXcgV2hlcmVQbGFpbih0aGlzLCB3aGVyZSkpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHdoZXJlID09IFwib2JqZWN0XCIgJiYgKHdoZXJlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJvYmplY3RcIiB8fCB3aGVyZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiT2JqZWN0XCIpKSB7XG4gICAgICB0aGlzLl93aGVyZXMucHVzaChuZXcgV2hlcmVOb3QobmV3IFdoZXJlSGFzaCh0aGlzLCB3aGVyZSkpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZSBvZiB3aGVyZTogJHt0eXBlb2Ygd2hlcmV9ICgke3doZXJlLmNvbnN0cnVjdG9yLm5hbWV9KWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgY3VycmVudCBkcml2ZXIgbGF6aWx5LlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9IC0gQSB2YWx1ZS5cbiAgICovXG4gIGdldCBkcml2ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RyaXZlckZuKClcbiAgfVxufVxuIl19
|
|
358
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQTtBQUM3QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUNwQyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLFNBQVMsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLFFBQVEsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNyQyxPQUFPLFVBQVUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV6Qzs7OztHQUlHO0FBRUg7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUFJO0lBQy9CLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFFcEIsSUFBSSxPQUFPLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM1QixPQUFPLEVBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUMsQ0FBQTtJQUN2QixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsb0RBQW9EO1FBQ3BELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVqQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksT0FBTyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sUUFBUSxHQUFH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QUFJLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLGtEQUFrRCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEgsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixPQUFPLEtBQUssS0FBSyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUE7UUFDdkYsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgRnJvbVBsYWluIGZyb20gXCIuL2Zyb20tcGxhaW4uanNcIlxuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tIFwiaXMtcGxhaW4tb2JqZWN0XCJcbmltcG9ydCBKb2luT2JqZWN0IGZyb20gXCIuL2pvaW4tb2JqZWN0LmpzXCJcbmltcG9ydCBKb2luUGxhaW4gZnJvbSBcIi4vam9pbi1wbGFpbi5qc1wiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi8uLi9sb2dnZXIuanNcIlxuaW1wb3J0IE9yZGVyUGxhaW4gZnJvbSBcIi4vb3JkZXItcGxhaW4uanNcIlxuaW1wb3J0IFNlbGVjdEJhc2UgZnJvbSBcIi4vc2VsZWN0LWJhc2UuanNcIlxuaW1wb3J0IFNlbGVjdFBsYWluIGZyb20gXCIuL3NlbGVjdC1wbGFpbi5qc1wiXG5pbXBvcnQgV2hlcmVIYXNoIGZyb20gXCIuL3doZXJlLWhhc2guanNcIlxuaW1wb3J0IFdoZXJlTm90IGZyb20gXCIuL3doZXJlLW5vdC5qc1wiXG5pbXBvcnQgV2hlcmVQbGFpbiBmcm9tIFwiLi93aGVyZS1wbGFpbi5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge3tba2V5OiBzdHJpbmddOiBib29sZWFuIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBOZXN0ZWRQcmVsb2FkUmVjb3JkIH19IE5lc3RlZFByZWxvYWRSZWNvcmRcbiAqIEB0eXBlZGVmIHtzdHJpbmcgfCBzdHJpbmdbXSB8IGltcG9ydChcIi4vc2VsZWN0LWJhc2UuanNcIikuZGVmYXVsdCB8IGltcG9ydChcIi4vc2VsZWN0LWJhc2UuanNcIikuZGVmYXVsdFtdfSBTZWxlY3RBcmd1bWVudFR5cGVcbiAqIEB0eXBlZGVmIHtvYmplY3QgfCBzdHJpbmd9IFdoZXJlQXJndW1lbnRUeXBlXG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdElucHV0IHwgc3RyaW5nIHwgc3RyaW5nW119IGpvaW4gLSBKb2luIGRhdGEgaW4gc2hvcnRoYW5kIG9yIG5lc3RlZCBmb3JtLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdH0gLSBOb3JtYWxpemVkIGpvaW4gcmVjb3JkLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVKb2luT2JqZWN0KGpvaW4pIHtcbiAgaWYgKCFqb2luKSByZXR1cm4ge31cblxuICBpZiAodHlwZW9mIGpvaW4gPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB7W2pvaW5dOiB0cnVlfVxuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoam9pbikpIHtcbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdH0gKi9cbiAgICBjb25zdCByZXN1bHQgPSB7fVxuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBqb2luKSB7XG4gICAgICBpZiAodHlwZW9mIGVudHJ5ID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSByZXN1bHRbZW50cnldXG4gICAgICAgIHJlc3VsdFtlbnRyeV0gPSBtZXJnZUpvaW5WYWx1ZShleGlzdGluZywgdHJ1ZSlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGlzUGxhaW5PYmplY3QoZW50cnkpKSB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVKb2luT2JqZWN0KGVudHJ5KVxuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5vcm1hbGl6ZWQpKSB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSByZXN1bHRba2V5XVxuICAgICAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2VKb2luVmFsdWUoZXhpc3RpbmcsIHZhbHVlKVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBqb2luIGVudHJ5IHR5cGU6ICR7dHlwZW9mIGVudHJ5fWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgaWYgKCFpc1BsYWluT2JqZWN0KGpvaW4pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpvaW4gdHlwZTogJHt0eXBlb2Ygam9pbn1gKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2pvaW4tb2JqZWN0LmpzXCIpLkpvaW5PYmplY3R9ICovXG4gIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoam9pbikpIHtcbiAgICBpZiAodmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHJlc3VsdFtrZXldXG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlSm9pblZhbHVlKGV4aXN0aW5nLCB2YWx1ZSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiIHx8IEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHJlc3VsdFtrZXldXG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlSm9pblZhbHVlKGV4aXN0aW5nLCBub3JtYWxpemVKb2luT2JqZWN0KHZhbHVlKSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGpvaW4gdmFsdWUgZm9yICR7a2V5fTogJHt0eXBlb2YgdmFsdWV9YClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdFtzdHJpbmddIHwgdW5kZWZpbmVkfSBleGlzdGluZyAtIEV4aXN0aW5nIG5vcm1hbGl6ZWQgam9pbiB2YWx1ZS5cbiAqIEBwYXJhbSB7aW1wb3J0KFwiLi9qb2luLW9iamVjdC5qc1wiKS5Kb2luT2JqZWN0W3N0cmluZ119IGluY29taW5nIC0gSW5jb21pbmcgbm9ybWFsaXplZCBqb2luIHZhbHVlLlxuICogQHJldHVybnMge2ltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdFtzdHJpbmddfSAtIE1lcmdlZCBqb2luIHZhbHVlLlxuICovXG5mdW5jdGlvbiBtZXJnZUpvaW5WYWx1ZShleGlzdGluZywgaW5jb21pbmcpIHtcbiAgaWYgKCFleGlzdGluZykgcmV0dXJuIGluY29taW5nXG4gIGlmIChleGlzdGluZyA9PT0gdHJ1ZSB8fCBpbmNvbWluZyA9PT0gdHJ1ZSkgcmV0dXJuIHRydWVcblxuICBpZiAodHlwZW9mIGV4aXN0aW5nID09IFwib2JqZWN0XCIgJiYgdHlwZW9mIGluY29taW5nID09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gey4uLmV4aXN0aW5nLCAuLi5pbmNvbWluZ31cbiAgfVxuXG4gIHJldHVybiBpbmNvbWluZ1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFF1ZXJ5QXJnc1R5cGVcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHQgfCAoKCkgPT4gaW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHQpfSBkcml2ZXIgLSBEcml2ZXIgaW5zdGFuY2Ugb3IgZmFjdG9yeSBmb3IgcXVlcnkgZXhlY3V0aW9uLlxuICogQHByb3BlcnR5IHtBcnJheTxpbXBvcnQoXCIuL2Zyb20tYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW2Zyb21zXSAtIEZST00gY2xhdXNlcyBmb3IgdGhlIHF1ZXJ5LlxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2dyb3Vwc10gLSBHUk9VUCBCWSBjb2x1bW5zLlxuICogQHByb3BlcnR5IHtBcnJheTxpbXBvcnQoXCIuL2pvaW4tYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW2pvaW5zXSAtIEpPSU4gY2xhdXNlcyBmb3IgdGhlIHF1ZXJ5LlxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuLi9oYW5kbGVyLmpzXCIpLmRlZmF1bHR9IGhhbmRsZXIgLSBIYW5kbGVyIHVzZWQgZm9yIGV4ZWN1dGluZyBhbmQgdHJhbnNmb3JtaW5nIHJlc3VsdHMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IFtsaW1pdF0gLSBMSU1JVCBjbGF1c2UgdmFsdWUuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IFtvZmZzZXRdIC0gT0ZGU0VUIGNsYXVzZSB2YWx1ZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8aW1wb3J0KFwiLi9vcmRlci1iYXNlLmpzXCIpLmRlZmF1bHQ+fSBbb3JkZXJzXSAtIE9SREVSIEJZIGNsYXVzZXMuXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IFtwYWdlXSAtIFBhZ2UgbnVtYmVyIGZvciBwYWdpbmF0aW9uLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtwZXJQYWdlXSAtIFJlY29yZHMgcGVyIHBhZ2UgZm9yIHBhZ2luYXRpb24uXG4gKiBAcHJvcGVydHkge05lc3RlZFByZWxvYWRSZWNvcmR9IFtwcmVsb2FkXSAtIFByZWxvYWQgZ3JhcGggZm9yIHJlbGF0ZWQgcmVjb3Jkcy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8aW1wb3J0KFwiLi9zZWxlY3QtYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW3NlbGVjdHNdIC0gU0VMRUNUIGNsYXVzZXMgZm9yIHRoZSBxdWVyeS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2Rpc3RpbmN0XSAtIFdoZXRoZXIgdGhlIHF1ZXJ5IHNob3VsZCB1c2UgRElTVElOQ1QuXG4gKiBAcHJvcGVydHkge0FycmF5PGltcG9ydChcIi4vd2hlcmUtYmFzZS5qc1wiKS5kZWZhdWx0Pn0gW3doZXJlc10gLSBXSEVSRSBjb25kaXRpb25zIGZvciB0aGUgcXVlcnkuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge1F1ZXJ5QXJnc1R5cGV9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBkcml2ZXIsXG4gICAgZnJvbXMgPSBbXSxcbiAgICBncm91cHMgPSBbXSxcbiAgICBqb2lucyA9IFtdLFxuICAgIGhhbmRsZXIsXG4gICAgbGltaXQgPSBudWxsLFxuICAgIG9mZnNldCA9IG51bGwsXG4gICAgb3JkZXJzID0gW10sXG4gICAgcGFnZSA9IG51bGwsXG4gICAgcGVyUGFnZSxcbiAgICBwcmVsb2FkID0ge30sXG4gICAgZGlzdGluY3QgPSBmYWxzZSxcbiAgICBzZWxlY3RzID0gW10sXG4gICAgd2hlcmVzID0gW11cbiAgfSkge1xuICAgIGlmICghZHJpdmVyKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBkcml2ZXIgZ2l2ZW4gdG8gcXVlcnlcIilcbiAgICBpZiAoIWhhbmRsZXIpIHRocm93IG5ldyBFcnJvcihcIk5vIGhhbmRsZXIgZ2l2ZW4gdG8gcXVlcnlcIilcblxuICAgIC8qKiBAdHlwZSB7KCkgPT4gaW1wb3J0KFwiLi4vZHJpdmVycy9iYXNlLmpzXCIpLmRlZmF1bHR9ICovXG4gICAgdGhpcy5fZHJpdmVyRm4gPSB0eXBlb2YgZHJpdmVyID09PSBcImZ1bmN0aW9uXCIgPyBkcml2ZXIgOiAoKSA9PiBkcml2ZXJcbiAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG4gICAgdGhpcy5fZnJvbXMgPSBmcm9tc1xuICAgIHRoaXMuX2dyb3VwcyA9IGdyb3Vwc1xuICAgIHRoaXMuX2pvaW5zID0gam9pbnNcbiAgICB0aGlzLl9saW1pdCA9IGxpbWl0XG4gICAgdGhpcy5fb2Zmc2V0ID0gb2Zmc2V0XG4gICAgdGhpcy5fb3JkZXJzID0gb3JkZXJzXG4gICAgdGhpcy5fcGFnZSA9IHBhZ2VcbiAgICB0aGlzLl9wZXJQYWdlID0gcGVyUGFnZVxuICAgIHRoaXMuX3ByZWxvYWQgPSBwcmVsb2FkXG4gICAgdGhpcy5fZGlzdGluY3QgPSBkaXN0aW5jdFxuICAgIHRoaXMuX3NlbGVjdHMgPSBzZWxlY3RzXG5cbiAgICAvKiogQHR5cGUge2ltcG9ydChcIi4vd2hlcmUtYmFzZS5qc1wiKS5kZWZhdWx0W119ICovXG4gICAgdGhpcy5fd2hlcmVzID0gd2hlcmVzXG5cbiAgICBjb25zdCBib3VuZFdoZXJlID0gLyoqIEB0eXBlIHthbnl9ICovICh0aGlzLndoZXJlLmJpbmQodGhpcykpXG4gICAgYm91bmRXaGVyZS5ub3QgPSB0aGlzLndoZXJlTm90LmJpbmQodGhpcylcbiAgICB0aGlzLndoZXJlID0gYm91bmRXaGVyZVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBjbG9uZS4gICovXG4gIGNsb25lKCkge1xuICAgIGNvbnN0IFF1ZXJ5Q2xhc3MgPSAvKiogQHR5cGUge25ldyAoYXJnczogUXVlcnlBcmdzVHlwZSkgPT4gdGhpc30gKi8gKHRoaXMuY29uc3RydWN0b3IpXG4gICAgY29uc3QgbmV3UXVlcnkgPSBuZXcgUXVlcnlDbGFzcyh7XG4gICAgICBkcml2ZXI6IHRoaXMuX2RyaXZlckZuLFxuICAgICAgZnJvbXM6IFsuLi50aGlzLl9mcm9tc10sXG4gICAgICBoYW5kbGVyOiB0aGlzLmhhbmRsZXIuY2xvbmUoKSxcbiAgICAgIGdyb3VwczogWy4uLnRoaXMuX2dyb3Vwc10sXG4gICAgICBqb2luczogWy4uLnRoaXMuX2pvaW5zXSxcbiAgICAgIGxpbWl0OiB0aGlzLl9saW1pdCxcbiAgICAgIG9mZnNldDogdGhpcy5fb2Zmc2V0LFxuICAgICAgb3JkZXJzOiBbLi4udGhpcy5fb3JkZXJzXSxcbiAgICAgIHBhZ2U6IHRoaXMuX3BhZ2UsXG4gICAgICBwZXJQYWdlOiB0aGlzLl9wZXJQYWdlLFxuICAgICAgcHJlbG9hZDogey4uLnRoaXMuX3ByZWxvYWR9LFxuICAgICAgZGlzdGluY3Q6IHRoaXMuX2Rpc3RpbmN0LFxuICAgICAgc2VsZWN0czogWy4uLnRoaXMuX3NlbGVjdHNdLFxuICAgICAgd2hlcmVzOiBbLi4udGhpcy5fd2hlcmVzXVxuICAgIH0pXG5cbiAgICByZXR1cm4gbmV3UXVlcnlcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi9mcm9tLWJhc2UuanNcIikuZGVmYXVsdFtdfSAtIFRoZSBmcm9tcy4gICovXG4gIGdldEZyb21zKCkge1xuICAgIHJldHVybiB0aGlzLl9mcm9tc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBUaGUgZ3JvdXBzLiAgKi9cbiAgZ2V0R3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLl9ncm91cHNcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vcXVlcnktcGFyc2VyL29wdGlvbnMuanNcIikuZGVmYXVsdH0gLSBUaGUgb3B0aW9ucyBvcHRpb25zLiAgKi9cbiAgZ2V0T3B0aW9ucygpIHsgcmV0dXJuIHRoaXMuZHJpdmVyLm9wdGlvbnMoKSB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcnJheTxpbXBvcnQoXCIuL3NlbGVjdC1iYXNlLmpzXCIpLmRlZmF1bHQ+fSAtIFRoZSBzZWxlY3RzLiAgKi9cbiAgZ2V0U2VsZWN0cygpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdHMgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xpbXBvcnQoXCIuL2Zyb20tYmFzZS5qc1wiKS5kZWZhdWx0fSBmcm9tIC0gRnJvbS5cbiAgICogQHJldHVybnMge3RoaXN9IC0gVGhlIGZyb20uXG4gICAqL1xuICBmcm9tKGZyb20pIHtcbiAgICBpZiAodHlwZW9mIGZyb20gPT0gXCJzdHJpbmdcIikgZnJvbSA9IG5ldyBGcm9tUGxhaW4oZnJvbSlcblxuICAgIHRoaXMuX2Zyb21zLnB1c2goZnJvbSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBncm91cCAtIEdyb3VwLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgZ3JvdXAuXG4gICAqL1xuICBncm91cChncm91cCkge1xuICAgIHRoaXMuX2dyb3Vwcy5wdXNoKGdyb3VwKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXSB8IGltcG9ydChcIi4vam9pbi1vYmplY3QuanNcIikuSm9pbk9iamVjdElucHV0fSBqb2luIC0gSm9pbiBjbGF1c2Ugb3Igam9pbiBkZXNjcmlwdG9yLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgam9pbnMuXG4gICAqL1xuICBqb2lucyhqb2luKSB7XG4gICAgaWYgKHR5cGVvZiBqb2luID09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuX2pvaW5zLnB1c2gobmV3IEpvaW5QbGFpbihqb2luKSlcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoam9pbikpIHtcbiAgICAgIHRoaXMuX2pvaW5zLnB1c2gobmV3IEpvaW5PYmplY3Qobm9ybWFsaXplSm9pbk9iamVjdChqb2luKSkpXG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KGpvaW4pKSB7XG4gICAgICB0aGlzLl9qb2lucy5wdXNoKG5ldyBKb2luT2JqZWN0KG5vcm1hbGl6ZUpvaW5PYmplY3Qoam9pbikpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSBvZiBqb2luOiAke3R5cGVvZiBqb2lufWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBsaW1pdC5cbiAgICovXG4gIGxpbWl0KHZhbHVlKSB7XG4gICAgdGhpcy5fbGltaXQgPSB2YWx1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgb2Zmc2V0LlxuICAgKi9cbiAgb2Zmc2V0KHZhbHVlKSB7XG4gICAgdGhpcy5fb2Zmc2V0ID0gdmFsdWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBvcmRlciAtIE9yZGVyLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgb3JkZXIuXG4gICAqL1xuICBvcmRlcihvcmRlcikge1xuICAgIGlmICh0eXBlb2Ygb3JkZXIgPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy5fb3JkZXJzLnB1c2gobmV3IE9yZGVyUGxhaW4odGhpcywgb3JkZXIpKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9yZGVyID09IFwibnVtYmVyXCIpIHtcbiAgICAgIHRoaXMuX29yZGVycy5wdXNoKG5ldyBPcmRlclBsYWluKHRoaXMsIGAke29yZGVyfWApKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gb3JkZXIgdHlwZTogJHt0eXBlb2Ygb3JkZXJ9YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlTnVtYmVyIC0gUGFnZSBudW1iZXIuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSBwYWdlLlxuICAgKi9cbiAgcGFnZShwYWdlTnVtYmVyKSB7XG4gICAgY29uc3QgcGVyUGFnZSA9IHRoaXMuX3BlclBhZ2UgfHwgMzBcbiAgICBjb25zdCBvZmZzZXQgPSAocGFnZU51bWJlciAtIDEpICogcGVyUGFnZVxuICAgIGNvbnN0IGxpbWl0ID0gcGVyUGFnZVxuXG4gICAgdGhpcy5fcGFnZSA9IHBhZ2VOdW1iZXJcbiAgICB0aGlzLmxpbWl0KGxpbWl0KVxuICAgIHRoaXMub2Zmc2V0KG9mZnNldClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwZXJQYWdlIC0gUGFnZSBzaXplLlxuICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgcGVyIHBhZ2UuXG4gICAqL1xuICBwZXJQYWdlKHBlclBhZ2UpIHtcbiAgICB0aGlzLl9wZXJQYWdlID0gcGVyUGFnZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG9yZGVyIC0gT3JkZXIuXG4gICAqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSByZW9yZGVyLlxuICAgKi9cbiAgcmVvcmRlcihvcmRlcikge1xuICAgIHRoaXMuX29yZGVycyA9IFtdXG4gICAgdGhpcy5vcmRlcihvcmRlcilcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHt0aGlzfSAtIFRoZSByZXZlcnNlIG9yZGVyLiAgKi9cbiAgcmV2ZXJzZU9yZGVyKCkge1xuICAgIGZvciAoY29uc3Qgb3JkZXIgb2YgdGhpcy5fb3JkZXJzKSB7XG4gICAgICBvcmRlci5zZXRSZXZlcnNlT3JkZXIodHJ1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3ZhbHVlXSAtIFZhbHVlIHRvIHVzZS5cbiAgICogQHJldHVybnMge3RoaXN9IC0gVGhlIGRpc3RpbmN0LlxuICAgKi9cbiAgZGlzdGluY3QodmFsdWUgPSB0cnVlKSB7XG4gICAgdGhpcy5fZGlzdGluY3QgPSB2YWx1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtTZWxlY3RBcmd1bWVudFR5cGV9IHNlbGVjdCAtIFNlbGVjdC5cbiAgICogQHJldHVybnMge3RoaXN9IC0gVGhlIHNlbGVjdC5cbiAgICovXG4gIHNlbGVjdChzZWxlY3QpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3QpKSB7XG4gICAgICBmb3IgKGNvbnN0IHNlbGVjdEluQXJyYXkgb2Ygc2VsZWN0KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0KHNlbGVjdEluQXJyYXkpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzZWxlY3QgPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy5fc2VsZWN0cy5wdXNoKG5ldyBTZWxlY3RQbGFpbihzZWxlY3QpKVxuICAgIH0gZWxzZSBpZiAoc2VsZWN0IGluc3RhbmNlb2YgU2VsZWN0QmFzZSkge1xuICAgICAgdGhpcy5fc2VsZWN0cy5wdXNoKHNlbGVjdClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbGVjdCB0eXBlOiAke3R5cGVvZiBzZWxlY3R9YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PG9iamVjdD4+fSBBcnJheSBvZiByZXN1bHRzIGZyb20gdGhlIGRhdGFiYXNlXG4gICAqL1xuICBhc3luYyBfZXhlY3V0ZVF1ZXJ5KCkge1xuICAgIGNvbnN0IHNxbCA9IHRoaXMudG9TcWwoKVxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLmRyaXZlci5xdWVyeShzcWwpXG5cbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygoKSA9PiBbXCJTUUw6XCIsIHNxbF0pXG5cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PG9iamVjdD4+fSBBcnJheSBvZiByZXN1bHRzIGZyb20gdGhlIGRhdGFiYXNlICovXG4gIGFzeW5jIHJlc3VsdHMoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX2V4ZWN1dGVRdWVyeSgpXG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIFNRTCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoaXMgcXVlcnlcbiAgICogQHJldHVybnMge3N0cmluZ30gU1FMIHN0cmluZyByZXByZXNlbnRpbmcgdGhpcyBxdWVyeVxuICAgKi9cbiAgdG9TcWwoKSB7IHJldHVybiB0aGlzLmRyaXZlci5xdWVyeVRvU3FsKHRoaXMpIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtXaGVyZUFyZ3VtZW50VHlwZX0gd2hlcmUgLSBXaGVyZS5cbiAgICogQHJldHVybnMge3RoaXN9IFRoaXMgcXVlcnkgaW5zdGFuY2VcbiAgICovXG4gIHdoZXJlKHdoZXJlKSB7XG4gICAgaWYgKHR5cGVvZiB3aGVyZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aGlzLl93aGVyZXMucHVzaChuZXcgV2hlcmVQbGFpbih0aGlzLCB3aGVyZSkpXG4gICAgfSBlbHNlIGlmICh0eXBlb2Ygd2hlcmUgPT0gXCJvYmplY3RcIiAmJiAod2hlcmUuY29uc3RydWN0b3IubmFtZSA9PSBcIm9iamVjdFwiIHx8IHdoZXJlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJPYmplY3RcIikpIHtcbiAgICAgIHRoaXMuX3doZXJlcy5wdXNoKG5ldyBXaGVyZUhhc2godGhpcywgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3doZXJlLWhhc2guanNcIikuV2hlcmVIYXNofSAqLyAod2hlcmUpKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHR5cGUgb2Ygd2hlcmU6ICR7dHlwZW9mIHdoZXJlfSAoJHt3aGVyZS5jb25zdHJ1Y3Rvci5uYW1lfSlgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtXaGVyZUFyZ3VtZW50VHlwZX0gd2hlcmUgLSBXaGVyZS5cbiAgICogQHJldHVybnMge3RoaXN9IFRoaXMgcXVlcnkgaW5zdGFuY2VcbiAgICovXG4gIHdoZXJlTm90KHdoZXJlKSB7XG4gICAgaWYgKHR5cGVvZiB3aGVyZSA9PSBcInN0cmluZ1wiKSB7XG4gICAgICB0aGlzLl93aGVyZXMucHVzaChuZXcgV2hlcmVOb3QobmV3IFdoZXJlUGxhaW4odGhpcywgd2hlcmUpKSlcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aGVyZSA9PSBcIm9iamVjdFwiICYmICh3aGVyZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwib2JqZWN0XCIgfHwgd2hlcmUuY29uc3RydWN0b3IubmFtZSA9PSBcIk9iamVjdFwiKSkge1xuICAgICAgdGhpcy5fd2hlcmVzLnB1c2gobmV3IFdoZXJlTm90KG5ldyBXaGVyZUhhc2godGhpcywgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL3doZXJlLWhhc2guanNcIikuV2hlcmVIYXNofSAqLyAod2hlcmUpKSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0eXBlIG9mIHdoZXJlOiAke3R5cGVvZiB3aGVyZX0gKCR7d2hlcmUuY29uc3RydWN0b3IubmFtZX0pYClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBjdXJyZW50IGRyaXZlciBsYXppbHkuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9kcml2ZXJzL2Jhc2UuanNcIikuZGVmYXVsdH0gLSBBIHZhbHVlLlxuICAgKi9cbiAgZ2V0IGRyaXZlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJpdmVyRm4oKVxuICB9XG59XG4iXX0=
|
|
@@ -10,20 +10,20 @@ export default class VelociousDatabaseQueryInsertBase {
|
|
|
10
10
|
* @param {Array<Array<unknown>>} [args.rows] - Rows to insert.
|
|
11
11
|
*/
|
|
12
12
|
constructor({ columns, data, driver, multiple, tableName, returnLastInsertedColumnNames, rows, ...restArgs }: {
|
|
13
|
-
data?: Record<string, any
|
|
13
|
+
data?: Record<string, any> | undefined;
|
|
14
14
|
driver: import("../drivers/base.js").default;
|
|
15
15
|
tableName: string;
|
|
16
|
-
columns?:
|
|
17
|
-
multiple?: boolean;
|
|
18
|
-
returnLastInsertedColumnNames?: string[];
|
|
19
|
-
rows?:
|
|
16
|
+
columns?: string[] | undefined;
|
|
17
|
+
multiple?: boolean | undefined;
|
|
18
|
+
returnLastInsertedColumnNames?: string[] | undefined;
|
|
19
|
+
rows?: unknown[][] | undefined;
|
|
20
20
|
});
|
|
21
|
-
columns: string[];
|
|
22
|
-
data: Record<string, any
|
|
21
|
+
columns: string[] | undefined;
|
|
22
|
+
data: Record<string, any> | undefined;
|
|
23
23
|
driver: import("../drivers/base.js").default;
|
|
24
|
-
multiple: boolean;
|
|
25
|
-
returnLastInsertedColumnNames: string[];
|
|
26
|
-
rows: unknown[][];
|
|
24
|
+
multiple: boolean | undefined;
|
|
25
|
+
returnLastInsertedColumnNames: string[] | undefined;
|
|
26
|
+
rows: unknown[][] | undefined;
|
|
27
27
|
tableName: string;
|
|
28
28
|
/**
|
|
29
29
|
* @returns {import("../query-parser/options.js").default} - The options options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/insert-base.js"],"names":[],"mappings":"AAIA;IACE;;;;;;;;;OASG;IACH,8GARG;QAAmC,IAAI
|
|
1
|
+
{"version":3,"file":"insert-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/insert-base.js"],"names":[],"mappings":"AAIA;IACE;;;;;;;;;OASG;IACH,8GARG;QAAmC,IAAI;QACY,MAAM,EAAjD,OAAO,oBAAoB,EAAE,OAAO;QACvB,SAAS,EAAtB,MAAM;QACe,OAAO;QACb,QAAQ;QACP,6BAA6B;QAChB,IAAI;KAC3C,EAcA;IAPC,8BAAsB;IACtB,sCAAgB;IAChB,6CAAoB;IACpB,8BAAwB;IACxB,oDAAkE;IAClE,8BAAgB;IAChB,kBAA0B;IAG5B;;OAEG;IACH,cAFa,OAAO,4BAA4B,EAAE,OAAO,CAIxD;IAED;;;OAGG;IACH,mBAHW,GAAG,GACD,MAAM,GAAG,MAAM,CAM3B;IAED;;OAEG;IACH,SAFa,MAAM,CAiGlB;IAED;;;OAGG;IACH,iBAHW,GAAG,EAAE,GACH,MAAM,CAgBlB;CACF"}
|
|
@@ -16,7 +16,7 @@ export default class VelociousDatabaseQueryJoinBase {
|
|
|
16
16
|
* @param {import("./index.js").default} query - Query instance.
|
|
17
17
|
*/
|
|
18
18
|
setQuery(query: import("./index.js").default): void;
|
|
19
|
-
query: import("./index.js").default;
|
|
19
|
+
query: import("./index.js").default | undefined;
|
|
20
20
|
toSql(): void;
|
|
21
21
|
}
|
|
22
22
|
//# sourceMappingURL=join-base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/join-base.js"],"names":[],"mappings":"AAEA;IACE,gBAAc;IAEd;;OAEG;IACH,cAFa,OAAO,4BAA4B,EAAE,OAAO,CAIxD;IAED;;OAEG;IACH,YAFa,OAAO,YAAY,EAAE,OAAO,CAMxC;IAED;;OAEG;IACH,iBAFW,OAAO,QAIjB;IAED;;OAEG;IACH,gBAFW,OAAO,YAAY,EAAE,OAAO,QAItC;IADC,
|
|
1
|
+
{"version":3,"file":"join-base.d.ts","sourceRoot":"","sources":["../../../../src/database/query/join-base.js"],"names":[],"mappings":"AAEA;IACE,gBAAc;IAEd;;OAEG;IACH,cAFa,OAAO,4BAA4B,EAAE,OAAO,CAIxD;IAED;;OAEG;IACH,YAFa,OAAO,YAAY,EAAE,OAAO,CAMxC;IAED;;OAEG;IACH,iBAFW,OAAO,QAIjB;IAED;;OAEG;IACH,gBAFW,OAAO,YAAY,EAAE,OAAO,QAItC;IADC,gDAAkB;IAGpB,cAEC;CACF"}
|
|
@@ -29,7 +29,7 @@ export default class VelociousDatabaseQueryJoinObject extends JoinBase {
|
|
|
29
29
|
*/
|
|
30
30
|
_scopeSql({ relationship, query, targetModelClass, joinPath, targetTableRef }: {
|
|
31
31
|
relationship: import("../record/relationships/base.js").default;
|
|
32
|
-
query: import("./model-class-query.js").default
|
|
32
|
+
query: import("./model-class-query.js").default;
|
|
33
33
|
targetModelClass: typeof import("../record/index.js").default;
|
|
34
34
|
joinPath: string[];
|
|
35
35
|
targetTableRef: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"join-object.d.ts","sourceRoot":"","sources":["../../../../src/database/query/join-object.js"],"names":[],"mappings":"AAMA;;;GAGG;AAEH;IACE;;OAEG;IACH,oBAFW,UAAU,EAKpB;IADC,mBAAoB;IAGtB,gBAaC;IAED;;;;;;;OAOG;IACH,iBAPW,UAAU,cACV,cAAc,oBAAoB,EAAE,OAAO,OAC3C,MAAM,cACN,MAAM,QACN,MAAM,EAAE,GACN,MAAM,
|
|
1
|
+
{"version":3,"file":"join-object.d.ts","sourceRoot":"","sources":["../../../../src/database/query/join-object.js"],"names":[],"mappings":"AAMA;;;GAGG;AAEH;IACE;;OAEG;IACH,oBAFW,UAAU,EAKpB;IADC,mBAAoB;IAGtB,gBAaC;IAED;;;;;;;OAOG;IACH,iBAPW,UAAU,cACV,cAAc,oBAAoB,EAAE,OAAO,OAC3C,MAAM,cACN,MAAM,QACN,MAAM,EAAE,GACN,MAAM,CAwDlB;IAED;;;;;;;;OAQG;IACH,+EAPG;QAAgE,YAAY,EAApE,OAAO,iCAAiC,EAAE,OAAO;QACF,KAAK,EAApD,OAAO,wBAAwB,EAAE,OAAO;QACU,gBAAgB,EAAlE,cAAc,oBAAoB,EAAE,OAAO;QAC5B,QAAQ,EAAvB,MAAM,EAAE;QACK,cAAc,EAA3B,MAAM;KACd,GAAU,MAAM,CAkBlB;IAED;;;;OAIG;IACH,yBAJW,OAAO,iBAAiB,EAAE,OAAO,kBACjC,MAAM,GACJ,MAAM,CAuBlB;CACF;8BAlJY;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,CAAA;CAAC;yBAC9D;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;CAAC;qBAN7B,gBAAgB"}
|
|
@@ -40,6 +40,9 @@ export default class VelociousDatabaseQueryJoinObject extends JoinBase {
|
|
|
40
40
|
const joinValue = join[joinKey];
|
|
41
41
|
const relationship = modelClass.getRelationshipByName(joinKey);
|
|
42
42
|
const targetModelClass = relationship.getTargetModelClass();
|
|
43
|
+
if (!targetModelClass) {
|
|
44
|
+
throw new Error(`Relationship ${modelClass.name}#${joinKey} has no target model class`);
|
|
45
|
+
}
|
|
43
46
|
const joinPath = path.concat([joinKey]);
|
|
44
47
|
const parentTableRef = query.getJoinTableReference(path);
|
|
45
48
|
const targetEntry = query._registerJoinPath(joinPath);
|
|
@@ -124,4 +127,4 @@ export default class VelociousDatabaseQueryJoinObject extends JoinBase {
|
|
|
124
127
|
return where.toSql();
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi1vYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvam9pbi1vYmplY3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBRXJDOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxPQUFPLE9BQU8sZ0NBQWlDLFNBQVEsUUFBUTtJQUNwRTs7T0FFRztJQUNILFlBQVksTUFBTTtRQUNoQixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRTdCLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksdUNBQXVDLEVBQUUsQ0FBQztZQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDMUYsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixNQUFNLFVBQVUsR0FBRywwREFBMEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUVoRyxNQUFNLFVBQVUsR0FBRyx1REFBdUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWxGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFBO0lBQ3RGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFF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OUQsT0FBTyxRQUFRLFFBQVEsR0FBRyxDQUFBO1FBQzVCLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEpvaW5CYXNlIGZyb20gXCIuL2pvaW4tYmFzZS5qc1wiXG5pbXBvcnQgV2hlcmVIYXNoIGZyb20gXCIuL3doZXJlLWhhc2guanNcIlxuaW1wb3J0IFdoZXJlTm90IGZyb20gXCIuL3doZXJlLW5vdC5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge3tba2V5OiBzdHJpbmddOiBib29sZWFuIHwgc3RyaW5nIHwgc3RyaW5nW10gfCBKb2luT2JqZWN0SW5wdXR9fSBKb2luT2JqZWN0SW5wdXRcbiAqIEB0eXBlZGVmIHt7W2tleTogc3RyaW5nXTogYm9vbGVhbiB8IEpvaW5PYmplY3R9fSBKb2luT2JqZWN0XG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeUpvaW5PYmplY3QgZXh0ZW5kcyBKb2luQmFzZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0pvaW5PYmplY3R9IG9iamVjdCAtIE9iamVjdC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKG9iamVjdCkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLm9iamVjdCA9IG9iamVjdFxuICB9XG5cbiAgdG9TcWwoKSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmdldFF1ZXJ5KClcblxuICAgIGlmIChxdWVyeS5jb25zdHJ1Y3Rvci5uYW1lICE9IFwiVmVsb2Npb3VzRGF0YWJhc2VRdWVyeU1vZGVsQ2xhc3NRdWVyeVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGhhcyB0byBiZSBhIE1vZGVsQ2xhc3NRdWVyeSBidXQgd2FzIGEgJHtxdWVyeS5jb25zdHJ1Y3Rvci5uYW1lfWApXG4gICAgfVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gKi8gKHF1ZXJ5Lm1vZGVsQ2xhc3MpXG5cbiAgICBjb25zdCBtb2RlbFF1ZXJ5ID0gLyoqIEB0eXBlIHtpbXBvcnQoXCIuL21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHR9ICovIChxdWVyeSlcblxuICAgIHJldHVybiB0aGlzLmpvaW5PYmplY3QodGhpcy5vYmplY3QsIE1vZGVsQ2xhc3MsIFwiXCIsIDAsIG1vZGVsUXVlcnkuZ2V0Sm9pbkJhc2VQYXRoKCkpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtKb2luT2JqZWN0fSBqb2luIC0gSm9pbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNxbCAtIFNRTCBzdHJpbmcuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBqb2luc0NvdW50IC0gSm9pbnMgY291bnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggLSBKb2luIHBhdGguXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGpvaW4gb2JqZWN0LlxuICAgKi9cbiAgam9pbk9iamVjdChqb2luLCBtb2RlbENsYXNzLCBzcWwsIGpvaW5zQ291bnQsIHBhdGgpIHtcbiAgICBjb25zdCBwcmV0dHkgPSB0aGlzLnByZXR0eVxuICAgIGNvbnN0IGNvbm4gPSB0aGlzLmdldFF1ZXJ5KCkuZHJpdmVyXG4gICAgY29uc3QgcXVlcnkgPSAvKiogQHR5cGUge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gKi8gKHRoaXMuZ2V0UXVlcnkoKSlcblxuICAgIGZvciAoY29uc3Qgam9pbktleSBpbiBqb2luKSB7XG4gICAgICBjb25zdCBqb2luVmFsdWUgPSBqb2luW2pvaW5LZXldXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSBtb2RlbENsYXNzLmdldFJlbGF0aW9uc2hpcEJ5TmFtZShqb2luS2V5KVxuICAgICAgY29uc3QgdGFyZ2V0TW9kZWxDbGFzcyA9IHJlbGF0aW9uc2hpcC5nZXRUYXJnZXRNb2RlbENsYXNzKClcbiAgICAgIGNvbnN0IGpvaW5QYXRoID0gcGF0aC5jb25jYXQoW2pvaW5LZXldKVxuICAgICAgY29uc3QgcGFyZW50VGFibGVSZWYgPSBxdWVyeS5nZXRKb2luVGFibGVSZWZlcmVuY2UocGF0aClcbiAgICAgIGNvbnN0IHRhcmdldEVudHJ5ID0gcXVlcnkuX3JlZ2lzdGVySm9pblBhdGgoam9pblBhdGgpXG4gICAgICBjb25zdCB0YXJnZXRUYWJsZVJlZiA9IHRhcmdldEVudHJ5LmFsaWFzIHx8IHRhcmdldEVudHJ5LnRhYmxlTmFtZVxuICAgICAgY29uc3Qgam9pblRhYmxlU3FsID0gdGFyZ2V0RW50cnkuYWxpYXNcbiAgICAgICAgPyBgJHtjb25uLnF1b3RlVGFibGUodGFyZ2V0RW50cnkudGFibGVOYW1lKX0gQVMgJHtjb25uLnF1b3RlVGFibGUodGFyZ2V0RW50cnkuYWxpYXMpfWBcbiAgICAgICAgOiBjb25uLnF1b3RlVGFibGUodGFyZ2V0RW50cnkudGFibGVOYW1lKVxuXG4gICAgICBpZiAoam9pbnNDb3VudCA+IDApIHtcbiAgICAgICAgaWYgKHByZXR0eSkge1xuICAgICAgICAgIHNxbCArPSBcIlxcblxcblwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3FsICs9IFwiIFwiXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3FsICs9IGBMRUZUIEpPSU4gJHtqb2luVGFibGVTcWx9IE9OIGBcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJiZWxvbmdzVG9cIikge1xuICAgICAgICBzcWwgKz0gYCR7Y29ubi5xdW90ZVRhYmxlKHRhcmdldFRhYmxlUmVmKX0uJHtjb25uLnF1b3RlQ29sdW1uKHJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KCkpfSA9IGBcbiAgICAgICAgc3FsICs9IGAke2Nvbm4ucXVvdGVUYWJsZShwYXJlbnRUYWJsZVJlZil9LiR7Y29ubi5xdW90ZUNvbHVtbihyZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpKX1gXG4gICAgICB9IGVsc2UgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJoYXNNYW55XCIgfHwgcmVsYXRpb25zaGlwLmdldFR5cGUoKSA9PSBcImhhc09uZVwiKSB7XG4gICAgICAgIHNxbCArPSBgJHtjb25uLnF1b3RlVGFibGUodGFyZ2V0VGFibGVSZWYpfS4ke2Nvbm4ucXVvdGVDb2x1bW4ocmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKSl9ID0gYFxuICAgICAgICBzcWwgKz0gYCR7Y29ubi5xdW90ZVRhYmxlKHBhcmVudFRhYmxlUmVmKX0uJHtjb25uLnF1b3RlQ29sdW1uKHJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KCkpfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biByZWxhdGlvbnNoaXAgdHlwZTogJHtyZWxhdGlvbnNoaXAuZ2V0VHlwZSgpfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNjb3BlU3FsID0gdGhpcy5fc2NvcGVTcWwoe3JlbGF0aW9uc2hpcCwgcXVlcnksIHRhcmdldE1vZGVsQ2xhc3MsIGpvaW5QYXRoLCB0YXJnZXRUYWJsZVJlZn0pXG5cbiAgICAgIGlmIChzY29wZVNxbCkge1xuICAgICAgICBzcWwgKz0gYCBBTkQgJHtzY29wZVNxbH1gXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygam9pblZhbHVlID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgc3FsID0gdGhpcy5qb2luT2JqZWN0KGpvaW5WYWx1ZSwgdGFyZ2V0TW9kZWxDbGFzcywgc3FsLCBqb2luc0NvdW50ICsgMSwgam9pblBhdGgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNxbFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcCBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gYXJncy5xdWVyeSAtIE1vZGVsIGNsYXNzIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy50YXJnZXRNb2RlbENsYXNzIC0gVGFyZ2V0IG1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzLmpvaW5QYXRoIC0gSm9pbiBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy50YXJnZXRUYWJsZVJlZiAtIFRhcmdldCB0YWJsZSByZWZlcmVuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU2NvcGUgU1FMLlxuICAgKi9cbiAgX3Njb3BlU3FsKHtyZWxhdGlvbnNoaXAsIHF1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBqb2luUGF0aCwgdGFyZ2V0VGFibGVSZWZ9KSB7XG4gICAgaWYgKCFyZWxhdGlvbnNoaXAuZ2V0U2NvcGUoKSkgcmV0dXJuIFwiXCJcblxuICAgIGNvbnN0IHNjb3BlZFF1ZXJ5ID0gcXVlcnkuYnVpbGRKb2luU2NvcGVRdWVyeSh0YXJnZXRNb2RlbENsYXNzLCBqb2luUGF0aClcbiAgICBjb25zdCBhcHBsaWVkUXVlcnkgPSByZWxhdGlvbnNoaXAuYXBwbHlTY29wZShzY29wZWRRdWVyeSkgfHwgc2NvcGVkUXVlcnlcbiAgICBjb25zdCB3aGVyZXMgPSBhcHBsaWVkUXVlcnkuX3doZXJlc1xuXG4gICAgaWYgKCF3aGVyZXMgfHwgd2hlcmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiXCJcblxuICAgIGNvbnN0IHBhcnRzID0gW11cblxuICAgIGZvciAoY29uc3Qgd2hlcmUgb2Ygd2hlcmVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKHRoaXMuX3Njb3BlU3FsRm9yV2hlcmUod2hlcmUsIHRhcmdldFRhYmxlUmVmKSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbihcIiBBTkQgXCIpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3doZXJlLWJhc2UuanNcIikuZGVmYXVsdH0gd2hlcmUgLSBXaGVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFRhYmxlUmVmIC0gVGFyZ2V0IHRhYmxlIHJlZmVyZW5jZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTY29wZSB3aGVyZSBTUUwuXG4gICAqL1xuICBfc2NvcGVTcWxGb3JXaGVyZSh3aGVyZSwgdGFyZ2V0VGFibGVSZWYpIHtcbiAgICBpZiAod2hlcmUgaW5zdGFuY2VvZiBXaGVyZUhhc2gpIHtcbiAgICAgIGNvbnN0IGhhc2ggPSB3aGVyZS5oYXNoXG4gICAgICBjb25zdCBoYXNOZXN0ZWQgPSBPYmplY3QudmFsdWVzKGhhc2gpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKVxuXG4gICAgICByZXR1cm4gaGFzTmVzdGVkXG4gICAgICAgID8gd2hlcmUudG9TcWwoKVxuICAgICAgICA6IGAoJHt3aGVyZS5fd2hlcmVTUUxGcm9tSGFzaChoYXNoLCB0YXJnZXRUYWJsZVJlZil9KWBcbiAgICB9XG5cbiAgICBpZiAod2hlcmUgaW5zdGFuY2VvZiBXaGVyZU5vdCAmJiB3aGVyZS53aGVyZSBpbnN0YW5jZW9mIFdoZXJlSGFzaCkge1xuICAgICAgY29uc3QgaGFzaCA9IHdoZXJlLndoZXJlLmhhc2hcbiAgICAgIGNvbnN0IGhhc05lc3RlZCA9IE9iamVjdC52YWx1ZXMoaGFzaCkuc29tZSgodmFsdWUpID0+IHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICBjb25zdCBpbm5lclNxbCA9IGhhc05lc3RlZFxuICAgICAgICA/IHdoZXJlLndoZXJlLnRvU3FsKClcbiAgICAgICAgOiBgKCR7d2hlcmUud2hlcmUuX3doZXJlU1FMRnJvbUhhc2goaGFzaCwgdGFyZ2V0VGFibGVSZWYpfSlgXG5cbiAgICAgIHJldHVybiBgTk9UICgke2lubmVyU3FsfSlgXG4gICAgfVxuXG4gICAgcmV0dXJuIHdoZXJlLnRvU3FsKClcbiAgfVxufVxuIl19
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi1vYmplY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvam9pbi1vYmplY3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JDLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFBO0FBRXJDOzs7R0FHRztBQUVILE1BQU0sQ0FBQyxPQUFPLE9BQU8sZ0NBQWlDLFNBQVEsUUFBUTtJQUNwRTs7T0FFRztJQUNILFlBQVksTUFBTTtRQUNoQixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxLQUFLO1FBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRTdCLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksdUNBQXVDLEVBQUUsQ0FBQztZQUN0RSxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDMUYsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixNQUFNLFVBQVUsR0FBRywwREFBMEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUVoRyxNQUFNLFVBQVUsR0FBRyx1REFBdUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWxGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFBO0lBQ3RGLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFF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QyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtnQkFDckIsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQTtZQUU5RCxPQUFPLFFBQVEsUUFBUSxHQUFHLENBQUE7UUFDNUIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgSm9pbkJhc2UgZnJvbSBcIi4vam9pbi1iYXNlLmpzXCJcbmltcG9ydCBXaGVyZUhhc2ggZnJvbSBcIi4vd2hlcmUtaGFzaC5qc1wiXG5pbXBvcnQgV2hlcmVOb3QgZnJvbSBcIi4vd2hlcmUtbm90LmpzXCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7e1trZXk6IHN0cmluZ106IGJvb2xlYW4gfCBzdHJpbmcgfCBzdHJpbmdbXSB8IEpvaW5PYmplY3RJbnB1dH19IEpvaW5PYmplY3RJbnB1dFxuICogQHR5cGVkZWYge3tba2V5OiBzdHJpbmddOiBib29sZWFuIHwgSm9pbk9iamVjdH19IEpvaW5PYmplY3RcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5Sm9pbk9iamVjdCBleHRlbmRzIEpvaW5CYXNlIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Sm9pbk9iamVjdH0gb2JqZWN0IC0gT2JqZWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3Iob2JqZWN0KSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMub2JqZWN0ID0gb2JqZWN0XG4gIH1cblxuICB0b1NxbCgpIHtcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuZ2V0UXVlcnkoKVxuXG4gICAgaWYgKHF1ZXJ5LmNvbnN0cnVjdG9yLm5hbWUgIT0gXCJWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5TW9kZWxDbGFzc1F1ZXJ5XCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUXVlcnkgaGFzIHRvIGJlIGEgTW9kZWxDbGFzc1F1ZXJ5IGJ1dCB3YXMgYSAke3F1ZXJ5LmNvbnN0cnVjdG9yLm5hbWV9YClcbiAgICB9XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgY29uc3QgTW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAocXVlcnkubW9kZWxDbGFzcylcblxuICAgIGNvbnN0IG1vZGVsUXVlcnkgPSAvKiogQHR5cGUge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gKi8gKHF1ZXJ5KVxuXG4gICAgcmV0dXJuIHRoaXMuam9pbk9iamVjdCh0aGlzLm9iamVjdCwgTW9kZWxDbGFzcywgXCJcIiwgMCwgbW9kZWxRdWVyeS5nZXRKb2luQmFzZVBhdGgoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0pvaW5PYmplY3R9IGpvaW4gLSBKb2luLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3FsIC0gU1FMIHN0cmluZy5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGpvaW5zQ291bnQgLSBKb2lucyBjb3VudC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgam9pbiBvYmplY3QuXG4gICAqL1xuICBqb2luT2JqZWN0KGpvaW4sIG1vZGVsQ2xhc3MsIHNxbCwgam9pbnNDb3VudCwgcGF0aCkge1xuICAgIGNvbnN0IHByZXR0eSA9IHRoaXMucHJldHR5XG4gICAgY29uc3QgY29ubiA9IHRoaXMuZ2V0UXVlcnkoKS5kcml2ZXJcbiAgICBjb25zdCBxdWVyeSA9IC8qKiBAdHlwZSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSAqLyAodGhpcy5nZXRRdWVyeSgpKVxuXG4gICAgZm9yIChjb25zdCBqb2luS2V5IGluIGpvaW4pIHtcbiAgICAgIGNvbnN0IGpvaW5WYWx1ZSA9IGpvaW5bam9pbktleV1cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcCA9IG1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKGpvaW5LZXkpXG4gICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgICBpZiAoIXRhcmdldE1vZGVsQ2xhc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZWxhdGlvbnNoaXAgJHttb2RlbENsYXNzLm5hbWV9IyR7am9pbktleX0gaGFzIG5vIHRhcmdldCBtb2RlbCBjbGFzc2ApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGpvaW5QYXRoID0gcGF0aC5jb25jYXQoW2pvaW5LZXldKVxuICAgICAgY29uc3QgcGFyZW50VGFibGVSZWYgPSBxdWVyeS5nZXRKb2luVGFibGVSZWZlcmVuY2UocGF0aClcbiAgICAgIGNvbnN0IHRhcmdldEVudHJ5ID0gcXVlcnkuX3JlZ2lzdGVySm9pblBhdGgoam9pblBhdGgpXG4gICAgICBjb25zdCB0YXJnZXRUYWJsZVJlZiA9IHRhcmdldEVudHJ5LmFsaWFzIHx8IHRhcmdldEVudHJ5LnRhYmxlTmFtZVxuICAgICAgY29uc3Qgam9pblRhYmxlU3FsID0gdGFyZ2V0RW50cnkuYWxpYXNcbiAgICAgICAgPyBgJHtjb25uLnF1b3RlVGFibGUodGFyZ2V0RW50cnkudGFibGVOYW1lKX0gQVMgJHtjb25uLnF1b3RlVGFibGUodGFyZ2V0RW50cnkuYWxpYXMpfWBcbiAgICAgICAgOiBjb25uLnF1b3RlVGFibGUodGFyZ2V0RW50cnkudGFibGVOYW1lKVxuXG4gICAgICBpZiAoam9pbnNDb3VudCA+IDApIHtcbiAgICAgICAgaWYgKHByZXR0eSkge1xuICAgICAgICAgIHNxbCArPSBcIlxcblxcblwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3FsICs9IFwiIFwiXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3FsICs9IGBMRUZUIEpPSU4gJHtqb2luVGFibGVTcWx9IE9OIGBcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJiZWxvbmdzVG9cIikge1xuICAgICAgICBzcWwgKz0gYCR7Y29ubi5xdW90ZVRhYmxlKHRhcmdldFRhYmxlUmVmKX0uJHtjb25uLnF1b3RlQ29sdW1uKHJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KCkpfSA9IGBcbiAgICAgICAgc3FsICs9IGAke2Nvbm4ucXVvdGVUYWJsZShwYXJlbnRUYWJsZVJlZil9LiR7Y29ubi5xdW90ZUNvbHVtbihyZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpKX1gXG4gICAgICB9IGVsc2UgaWYgKHJlbGF0aW9uc2hpcC5nZXRUeXBlKCkgPT0gXCJoYXNNYW55XCIgfHwgcmVsYXRpb25zaGlwLmdldFR5cGUoKSA9PSBcImhhc09uZVwiKSB7XG4gICAgICAgIHNxbCArPSBgJHtjb25uLnF1b3RlVGFibGUodGFyZ2V0VGFibGVSZWYpfS4ke2Nvbm4ucXVvdGVDb2x1bW4ocmVsYXRpb25zaGlwLmdldEZvcmVpZ25LZXkoKSl9ID0gYFxuICAgICAgICBzcWwgKz0gYCR7Y29ubi5xdW90ZVRhYmxlKHBhcmVudFRhYmxlUmVmKX0uJHtjb25uLnF1b3RlQ29sdW1uKHJlbGF0aW9uc2hpcC5nZXRQcmltYXJ5S2V5KCkpfWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biByZWxhdGlvbnNoaXAgdHlwZTogJHtyZWxhdGlvbnNoaXAuZ2V0VHlwZSgpfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNjb3BlU3FsID0gdGhpcy5fc2NvcGVTcWwoe3JlbGF0aW9uc2hpcCwgcXVlcnksIHRhcmdldE1vZGVsQ2xhc3MsIGpvaW5QYXRoLCB0YXJnZXRUYWJsZVJlZn0pXG5cbiAgICAgIGlmIChzY29wZVNxbCkge1xuICAgICAgICBzcWwgKz0gYCBBTkQgJHtzY29wZVNxbH1gXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygam9pblZhbHVlID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgc3FsID0gdGhpcy5qb2luT2JqZWN0KGpvaW5WYWx1ZSwgdGFyZ2V0TW9kZWxDbGFzcywgc3FsLCBqb2luc0NvdW50ICsgMSwgam9pblBhdGgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNxbFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLnJlbGF0aW9uc2hpcCAtIFJlbGF0aW9uc2hpcCBkZWZpbml0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gYXJncy5xdWVyeSAtIE1vZGVsIGNsYXNzIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy50YXJnZXRNb2RlbENsYXNzIC0gVGFyZ2V0IG1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzLmpvaW5QYXRoIC0gSm9pbiBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy50YXJnZXRUYWJsZVJlZiAtIFRhcmdldCB0YWJsZSByZWZlcmVuY2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU2NvcGUgU1FMLlxuICAgKi9cbiAgX3Njb3BlU3FsKHtyZWxhdGlvbnNoaXAsIHF1ZXJ5LCB0YXJnZXRNb2RlbENsYXNzLCBqb2luUGF0aCwgdGFyZ2V0VGFibGVSZWZ9KSB7XG4gICAgaWYgKCFyZWxhdGlvbnNoaXAuZ2V0U2NvcGUoKSkgcmV0dXJuIFwiXCJcblxuICAgIGNvbnN0IHNjb3BlZFF1ZXJ5ID0gcXVlcnkuYnVpbGRKb2luU2NvcGVRdWVyeSh0YXJnZXRNb2RlbENsYXNzLCBqb2luUGF0aClcbiAgICBjb25zdCBhcHBsaWVkUXVlcnkgPSByZWxhdGlvbnNoaXAuYXBwbHlTY29wZShzY29wZWRRdWVyeSkgfHwgc2NvcGVkUXVlcnlcbiAgICBjb25zdCB3aGVyZXMgPSBhcHBsaWVkUXVlcnkuX3doZXJlc1xuXG4gICAgaWYgKCF3aGVyZXMgfHwgd2hlcmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFwiXCJcblxuICAgIGNvbnN0IHBhcnRzID0gW11cblxuICAgIGZvciAoY29uc3Qgd2hlcmUgb2Ygd2hlcmVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKHRoaXMuX3Njb3BlU3FsRm9yV2hlcmUod2hlcmUsIHRhcmdldFRhYmxlUmVmKSlcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbihcIiBBTkQgXCIpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3doZXJlLWJhc2UuanNcIikuZGVmYXVsdH0gd2hlcmUgLSBXaGVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFRhYmxlUmVmIC0gVGFyZ2V0IHRhYmxlIHJlZmVyZW5jZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTY29wZSB3aGVyZSBTUUwuXG4gICAqL1xuICBfc2NvcGVTcWxGb3JXaGVyZSh3aGVyZSwgdGFyZ2V0VGFibGVSZWYpIHtcbiAgICBpZiAod2hlcmUgaW5zdGFuY2VvZiBXaGVyZUhhc2gpIHtcbiAgICAgIGNvbnN0IGhhc2ggPSB3aGVyZS5oYXNoXG4gICAgICBjb25zdCBoYXNOZXN0ZWQgPSBPYmplY3QudmFsdWVzKGhhc2gpLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKVxuXG4gICAgICByZXR1cm4gaGFzTmVzdGVkXG4gICAgICAgID8gd2hlcmUudG9TcWwoKVxuICAgICAgICA6IGAoJHt3aGVyZS5fd2hlcmVTUUxGcm9tSGFzaChoYXNoLCB0YXJnZXRUYWJsZVJlZil9KWBcbiAgICB9XG5cbiAgICBpZiAod2hlcmUgaW5zdGFuY2VvZiBXaGVyZU5vdCAmJiB3aGVyZS53aGVyZSBpbnN0YW5jZW9mIFdoZXJlSGFzaCkge1xuICAgICAgY29uc3QgaGFzaCA9IHdoZXJlLndoZXJlLmhhc2hcbiAgICAgIGNvbnN0IGhhc05lc3RlZCA9IE9iamVjdC52YWx1ZXMoaGFzaCkuc29tZSgodmFsdWUpID0+IHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICBjb25zdCBpbm5lclNxbCA9IGhhc05lc3RlZFxuICAgICAgICA/IHdoZXJlLndoZXJlLnRvU3FsKClcbiAgICAgICAgOiBgKCR7d2hlcmUud2hlcmUuX3doZXJlU1FMRnJvbUhhc2goaGFzaCwgdGFyZ2V0VGFibGVSZWYpfSlgXG5cbiAgICAgIHJldHVybiBgTk9UICgke2lubmVyU3FsfSlgXG4gICAgfVxuXG4gICAgcmV0dXJuIHdoZXJlLnRvU3FsKClcbiAgfVxufVxuIl19
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @template {typeof import("../record/index.js").default} MC
|
|
2
|
+
* @template {typeof import("../record/index.js").default} [MC=typeof import("../record/index.js").default]
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
* @template {typeof import("../record/index.js").default} MC
|
|
5
|
+
* @template {typeof import("../record/index.js").default} [MC=typeof import("../record/index.js").default]
|
|
6
6
|
* @typedef {import("./index.js").QueryArgsType & {modelClass: MC, joinBasePath?: string[], joinTracker?: import("./join-tracker.js").default, forceQualifyBaseTable?: boolean}} ModelClassQueryArgsType
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
9
|
* A generic query over some model type.
|
|
10
|
-
* @template {typeof import("../record/index.js").default} MC
|
|
10
|
+
* @template {typeof import("../record/index.js").default} [MC=typeof import("../record/index.js").default]
|
|
11
11
|
*/
|
|
12
|
-
export default class VelociousDatabaseQueryModelClassQuery<MC extends typeof import("../record/index.js").default> extends DatabaseQuery {
|
|
12
|
+
export default class VelociousDatabaseQueryModelClassQuery<MC extends typeof import("../record/index.js").default = typeof import("../record/index.js").default> extends DatabaseQuery {
|
|
13
13
|
/** @param {ModelClassQueryArgsType<MC>} args - Query constructor arguments. */
|
|
14
14
|
constructor(args: ModelClassQueryArgsType<MC>);
|
|
15
15
|
/** @type {MC} */
|
|
@@ -113,15 +113,15 @@ export default class VelociousDatabaseQueryModelClassQuery<MC extends typeof imp
|
|
|
113
113
|
[key: string]: string | number;
|
|
114
114
|
}): Promise<InstanceType<MC>>;
|
|
115
115
|
/**
|
|
116
|
-
* @param {
|
|
116
|
+
* @param {Record<string, any>} conditions - Conditions.
|
|
117
117
|
* @param {function(InstanceType<MC>) : void} [callback] - Callback function.
|
|
118
118
|
* @returns {Promise<InstanceType<MC>>} - Resolves with the or initialize by.
|
|
119
119
|
*/
|
|
120
|
-
findOrInitializeBy(conditions:
|
|
121
|
-
/** @returns {Promise<InstanceType<MC> |
|
|
122
|
-
first(): Promise<InstanceType<MC> |
|
|
123
|
-
/** @returns {Promise<InstanceType<MC> |
|
|
124
|
-
last(): Promise<InstanceType<MC> |
|
|
120
|
+
findOrInitializeBy(conditions: Record<string, any>, callback?: (arg0: InstanceType<MC>) => void): Promise<InstanceType<MC>>;
|
|
121
|
+
/** @returns {Promise<InstanceType<MC> | null>} - Resolves with the first. */
|
|
122
|
+
first(): Promise<InstanceType<MC> | null>;
|
|
123
|
+
/** @returns {Promise<InstanceType<MC> | null>} - Resolves with the last. */
|
|
124
|
+
last(): Promise<InstanceType<MC> | null>;
|
|
125
125
|
/**
|
|
126
126
|
* @param {import("./index.js").NestedPreloadRecord} data - Data payload.
|
|
127
127
|
* @returns {this} - The preload.
|
|
@@ -154,7 +154,7 @@ export default class VelociousDatabaseQueryModelClassQuery<MC extends typeof imp
|
|
|
154
154
|
*/
|
|
155
155
|
whereNot(where: import("./index.js").WhereArgumentType): this;
|
|
156
156
|
}
|
|
157
|
-
export type ModelClassQueryArgsType<MC extends typeof import("../record/index.js").default> = import("./index.js").QueryArgsType & {
|
|
157
|
+
export type ModelClassQueryArgsType<MC extends typeof import("../record/index.js").default = typeof import("../record/index.js").default> = import("./index.js").QueryArgsType & {
|
|
158
158
|
modelClass: MC;
|
|
159
159
|
joinBasePath?: string[];
|
|
160
160
|
joinTracker?: import("./join-tracker.js").default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"AAwGA;;GAEG;AACH;;;GAGG;AAEH;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"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"}
|