velocious 1.0.428 → 1.0.430
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 +2 -0
- package/build/src/application.d.ts +96 -9
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +127 -28
- package/build/src/authorization/ability.d.ts +72 -31
- package/build/src/authorization/ability.d.ts.map +1 -1
- package/build/src/authorization/ability.js +59 -22
- package/build/src/authorization/base-resource.d.ts +47 -20
- package/build/src/authorization/base-resource.d.ts.map +1 -1
- package/build/src/authorization/base-resource.js +43 -14
- package/build/src/background-jobs/client.d.ts +4 -2
- package/build/src/background-jobs/client.d.ts.map +1 -1
- package/build/src/background-jobs/client.js +4 -2
- package/build/src/background-jobs/cron-expression.d.ts +9 -5
- package/build/src/background-jobs/cron-expression.d.ts.map +1 -1
- package/build/src/background-jobs/cron-expression.js +16 -6
- package/build/src/background-jobs/forked-runner-child.js +12 -5
- package/build/src/background-jobs/job-registry.d.ts +7 -1
- package/build/src/background-jobs/job-registry.d.ts.map +1 -1
- package/build/src/background-jobs/job-registry.js +8 -2
- package/build/src/background-jobs/job-runner.d.ts +1 -0
- package/build/src/background-jobs/job-runner.d.ts.map +1 -1
- package/build/src/background-jobs/job-runner.js +8 -3
- package/build/src/background-jobs/job.d.ts +12 -8
- package/build/src/background-jobs/job.d.ts.map +1 -1
- package/build/src/background-jobs/job.js +12 -6
- package/build/src/background-jobs/json-socket.d.ts +17 -5
- package/build/src/background-jobs/json-socket.d.ts.map +1 -1
- package/build/src/background-jobs/json-socket.js +18 -6
- package/build/src/background-jobs/main.d.ts +118 -32
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +123 -35
- package/build/src/background-jobs/normalize-error.d.ts +2 -1
- package/build/src/background-jobs/normalize-error.d.ts.map +1 -1
- package/build/src/background-jobs/normalize-error.js +5 -3
- package/build/src/background-jobs/scheduler.d.ts +31 -10
- package/build/src/background-jobs/scheduler.d.ts.map +1 -1
- package/build/src/background-jobs/scheduler.js +33 -11
- package/build/src/background-jobs/socket-request.d.ts +2 -0
- package/build/src/background-jobs/socket-request.d.ts.map +1 -1
- package/build/src/background-jobs/socket-request.js +11 -3
- package/build/src/background-jobs/status-reporter.d.ts +5 -2
- package/build/src/background-jobs/status-reporter.d.ts.map +1 -1
- package/build/src/background-jobs/status-reporter.js +6 -3
- package/build/src/background-jobs/store.d.ts +57 -19
- package/build/src/background-jobs/store.d.ts.map +1 -1
- package/build/src/background-jobs/store.js +70 -20
- package/build/src/background-jobs/types.d.ts +7 -7
- package/build/src/background-jobs/types.d.ts.map +1 -1
- package/build/src/background-jobs/types.js +6 -6
- package/build/src/background-jobs/web/authorization.d.ts.map +1 -1
- package/build/src/background-jobs/web/authorization.js +3 -1
- package/build/src/background-jobs/web/controller.d.ts +40 -14
- package/build/src/background-jobs/web/controller.d.ts.map +1 -1
- package/build/src/background-jobs/web/controller.js +46 -15
- package/build/src/background-jobs/web/registry.d.ts +5 -0
- package/build/src/background-jobs/web/registry.d.ts.map +1 -1
- package/build/src/background-jobs/web/registry.js +4 -1
- package/build/src/background-jobs/worker.d.ts +41 -8
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +64 -16
- package/build/src/beacon/client.d.ts +39 -12
- package/build/src/beacon/client.d.ts.map +1 -1
- package/build/src/beacon/client.js +45 -15
- package/build/src/beacon/in-process-broker.d.ts +4 -0
- package/build/src/beacon/in-process-broker.d.ts.map +1 -1
- package/build/src/beacon/in-process-broker.js +8 -3
- package/build/src/beacon/in-process-client.d.ts +28 -9
- package/build/src/beacon/in-process-client.d.ts.map +1 -1
- package/build/src/beacon/in-process-client.js +27 -9
- package/build/src/beacon/server.d.ts +13 -2
- package/build/src/beacon/server.d.ts.map +1 -1
- package/build/src/beacon/server.js +21 -5
- package/build/src/beacon/types.d.ts +3 -3
- package/build/src/beacon/types.d.ts.map +1 -1
- package/build/src/beacon/types.js +2 -2
- package/build/src/cli/base-command.d.ts +18 -4
- package/build/src/cli/base-command.d.ts.map +1 -1
- package/build/src/cli/base-command.js +15 -4
- package/build/src/cli/browser-cli.d.ts +3 -0
- package/build/src/cli/browser-cli.d.ts.map +1 -1
- package/build/src/cli/browser-cli.js +7 -2
- package/build/src/cli/commands/background-jobs-main.d.ts +0 -1
- package/build/src/cli/commands/background-jobs-main.d.ts.map +1 -1
- package/build/src/cli/commands/background-jobs-runner.d.ts +0 -1
- package/build/src/cli/commands/background-jobs-runner.d.ts.map +1 -1
- package/build/src/cli/commands/background-jobs-worker.d.ts +0 -1
- package/build/src/cli/commands/background-jobs-worker.d.ts.map +1 -1
- package/build/src/cli/commands/beacon.d.ts +0 -1
- package/build/src/cli/commands/beacon.d.ts.map +1 -1
- package/build/src/cli/commands/console.d.ts +0 -2
- package/build/src/cli/commands/console.d.ts.map +1 -1
- package/build/src/cli/commands/console.js +5 -2
- package/build/src/cli/commands/db/base-command.d.ts +11 -2
- package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
- package/build/src/cli/commands/db/base-command.js +12 -3
- package/build/src/cli/commands/db/create.d.ts +3 -0
- package/build/src/cli/commands/db/create.d.ts.map +1 -1
- package/build/src/cli/commands/db/create.js +4 -1
- package/build/src/cli/commands/db/drop.d.ts +3 -0
- package/build/src/cli/commands/db/drop.d.ts.map +1 -1
- package/build/src/cli/commands/db/drop.js +4 -1
- package/build/src/cli/commands/db/schema/dump.d.ts +0 -2
- package/build/src/cli/commands/db/schema/dump.d.ts.map +1 -1
- package/build/src/cli/commands/db/schema/dump.js +5 -2
- package/build/src/cli/commands/db/schema/load.d.ts +0 -2
- package/build/src/cli/commands/db/schema/load.d.ts.map +1 -1
- package/build/src/cli/commands/db/schema/load.js +5 -2
- package/build/src/cli/commands/db/seed.d.ts +0 -2
- package/build/src/cli/commands/db/seed.d.ts.map +1 -1
- package/build/src/cli/commands/db/seed.js +5 -2
- package/build/src/cli/commands/db/tenants/check.d.ts +4 -1
- package/build/src/cli/commands/db/tenants/check.d.ts.map +1 -1
- package/build/src/cli/commands/db/tenants/check.js +5 -2
- package/build/src/cli/commands/db/tenants/create.d.ts +4 -1
- package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
- package/build/src/cli/commands/db/tenants/create.js +5 -2
- package/build/src/cli/commands/db/tenants/migrate.d.ts +4 -1
- package/build/src/cli/commands/db/tenants/migrate.d.ts.map +1 -1
- package/build/src/cli/commands/db/tenants/migrate.js +5 -2
- package/build/src/cli/commands/destroy/migration.d.ts +0 -1
- package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
- package/build/src/cli/commands/generate/base-models.d.ts +0 -1
- package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
- package/build/src/cli/commands/generate/frontend-models.d.ts +0 -2
- package/build/src/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/cli/commands/generate/frontend-models.js +5 -2
- package/build/src/cli/commands/generate/migration.d.ts +0 -1
- package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
- package/build/src/cli/commands/generate/model.d.ts +0 -1
- package/build/src/cli/commands/generate/model.d.ts.map +1 -1
- package/build/src/cli/commands/init.d.ts +0 -1
- package/build/src/cli/commands/init.d.ts.map +1 -1
- package/build/src/cli/commands/routes.d.ts +0 -1
- package/build/src/cli/commands/routes.d.ts.map +1 -1
- package/build/src/cli/commands/run-script.d.ts +0 -2
- package/build/src/cli/commands/run-script.d.ts.map +1 -1
- package/build/src/cli/commands/run-script.js +5 -2
- package/build/src/cli/commands/runner.d.ts +0 -2
- package/build/src/cli/commands/runner.d.ts.map +1 -1
- package/build/src/cli/commands/runner.js +5 -2
- package/build/src/cli/commands/server.d.ts +0 -1
- package/build/src/cli/commands/server.d.ts.map +1 -1
- package/build/src/cli/commands/test.d.ts +0 -1
- package/build/src/cli/commands/test.d.ts.map +1 -1
- package/build/src/cli/index.d.ts +18 -5
- package/build/src/cli/index.d.ts.map +1 -1
- package/build/src/cli/index.js +25 -8
- package/build/src/cli/tenant-database-command-helper.d.ts +24 -9
- package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
- package/build/src/cli/tenant-database-command-helper.js +30 -11
- package/build/src/cli/use-browser-cli.d.ts +1 -0
- package/build/src/cli/use-browser-cli.d.ts.map +1 -1
- package/build/src/cli/use-browser-cli.js +5 -2
- package/build/src/configuration-resolver.d.ts +1 -0
- package/build/src/configuration-resolver.d.ts.map +1 -1
- package/build/src/configuration-resolver.js +2 -1
- package/build/src/configuration-types.d.ts +44 -44
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +27 -27
- package/build/src/configuration.d.ts +350 -114
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +416 -128
- package/build/src/controller.d.ts +67 -18
- package/build/src/controller.d.ts.map +1 -1
- package/build/src/controller.js +88 -23
- package/build/src/current-configuration.d.ts +2 -0
- package/build/src/current-configuration.d.ts.map +1 -1
- package/build/src/current-configuration.js +6 -2
- package/build/src/current.d.ts +16 -9
- package/build/src/current.d.ts.map +1 -1
- package/build/src/current.js +15 -8
- package/build/src/database/annotations-async-hooks.js +13 -6
- package/build/src/database/annotations.d.ts +7 -1
- package/build/src/database/annotations.d.ts.map +1 -1
- package/build/src/database/annotations.js +12 -5
- package/build/src/database/drivers/base-column.d.ts +21 -3
- package/build/src/database/drivers/base-column.d.ts.map +1 -1
- package/build/src/database/drivers/base-column.js +21 -3
- package/build/src/database/drivers/base-columns-index.d.ts +9 -0
- package/build/src/database/drivers/base-columns-index.d.ts.map +1 -1
- package/build/src/database/drivers/base-columns-index.js +10 -1
- package/build/src/database/drivers/base-foreign-key.d.ts +15 -3
- package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
- package/build/src/database/drivers/base-foreign-key.js +15 -3
- package/build/src/database/drivers/base-table.d.ts +16 -3
- package/build/src/database/drivers/base-table.d.ts.map +1 -1
- package/build/src/database/drivers/base-table.js +16 -3
- package/build/src/database/drivers/base.d.ts +174 -37
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +156 -40
- package/build/src/database/drivers/mssql/column.d.ts +3 -2
- package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/column.js +3 -2
- package/build/src/database/drivers/mssql/index.d.ts +5 -6
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +38 -7
- package/build/src/database/drivers/mssql/options.d.ts +1 -0
- package/build/src/database/drivers/mssql/options.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/options.js +8 -2
- package/build/src/database/drivers/mssql/sql/create-database.d.ts +1 -0
- package/build/src/database/drivers/mssql/sql/create-database.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/sql/create-database.js +2 -1
- package/build/src/database/drivers/mssql/sql/drop-database.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/sql/drop-database.js +2 -1
- package/build/src/database/drivers/mssql/structure-sql.d.ts +5 -2
- package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/structure-sql.js +5 -2
- 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/mssql/table.js +9 -4
- package/build/src/database/drivers/mysql/column.d.ts +3 -2
- package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/column.js +4 -3
- package/build/src/database/drivers/mysql/index.d.ts +11 -3
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +54 -10
- package/build/src/database/drivers/mysql/options.d.ts +1 -0
- package/build/src/database/drivers/mysql/options.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/options.js +4 -2
- package/build/src/database/drivers/mysql/query.d.ts +3 -2
- package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/query.js +6 -3
- package/build/src/database/drivers/mysql/sql/create-database.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/sql/create-database.js +3 -1
- package/build/src/database/drivers/mysql/structure-sql.d.ts +7 -2
- package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/structure-sql.js +7 -2
- 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/mysql/table.js +7 -3
- package/build/src/database/drivers/pgsql/column.d.ts +3 -2
- package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/column.js +3 -2
- package/build/src/database/drivers/pgsql/index.d.ts +1 -1
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +36 -11
- package/build/src/database/drivers/pgsql/options.d.ts +2 -0
- package/build/src/database/drivers/pgsql/options.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/options.js +3 -1
- package/build/src/database/drivers/pgsql/structure-sql.d.ts +5 -2
- package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/structure-sql.js +5 -2
- 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/pgsql/table.js +6 -2
- package/build/src/database/drivers/sqlite/base.d.ts +15 -5
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +79 -27
- package/build/src/database/drivers/sqlite/column.d.ts +3 -2
- package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/column.js +3 -2
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +4 -2
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/connection-sql-js.js +4 -2
- package/build/src/database/drivers/sqlite/foreign-key.d.ts +3 -2
- package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/foreign-key.js +3 -2
- package/build/src/database/drivers/sqlite/index.d.ts +18 -5
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +40 -16
- package/build/src/database/drivers/sqlite/index.native.d.ts +1 -1
- package/build/src/database/drivers/sqlite/index.native.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.native.js +6 -3
- package/build/src/database/drivers/sqlite/index.web.d.ts +16 -4
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +17 -7
- package/build/src/database/drivers/sqlite/options.d.ts +2 -0
- package/build/src/database/drivers/sqlite/options.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/options.js +3 -1
- package/build/src/database/drivers/sqlite/query.d.ts +3 -2
- package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/query.js +6 -3
- package/build/src/database/drivers/sqlite/query.native.d.ts +2 -2
- package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/query.native.js +3 -3
- package/build/src/database/drivers/sqlite/query.web.d.ts +3 -2
- package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/query.web.js +6 -3
- package/build/src/database/drivers/sqlite/sql/alter-table.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/sql/alter-table.js +9 -3
- package/build/src/database/drivers/sqlite/structure-sql.d.ts +2 -0
- package/build/src/database/drivers/sqlite/structure-sql.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/structure-sql.js +3 -1
- package/build/src/database/drivers/sqlite/table-rebuilder.d.ts +2 -0
- package/build/src/database/drivers/sqlite/table-rebuilder.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/table-rebuilder.js +3 -1
- package/build/src/database/drivers/sqlite/table.d.ts +2 -0
- package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/table.js +14 -4
- package/build/src/database/drivers/structure-sql/utils.d.ts +2 -0
- package/build/src/database/drivers/structure-sql/utils.d.ts.map +1 -1
- package/build/src/database/drivers/structure-sql/utils.js +3 -1
- package/build/src/database/handler.d.ts +1 -0
- package/build/src/database/handler.d.ts.map +1 -1
- package/build/src/database/handler.js +2 -1
- package/build/src/database/initializer-from-require-context.d.ts +8 -0
- package/build/src/database/initializer-from-require-context.d.ts.map +1 -1
- package/build/src/database/initializer-from-require-context.js +4 -1
- package/build/src/database/migration/index.d.ts +40 -5
- package/build/src/database/migration/index.d.ts.map +1 -1
- package/build/src/database/migration/index.js +34 -6
- package/build/src/database/migrator/files-finder.d.ts +2 -0
- package/build/src/database/migrator/files-finder.d.ts.map +1 -1
- package/build/src/database/migrator/files-finder.js +6 -2
- package/build/src/database/migrator.d.ts +29 -4
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +45 -10
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +125 -31
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +189 -52
- package/build/src/database/pool/base-methods-forward.d.ts +1 -0
- package/build/src/database/pool/base-methods-forward.d.ts.map +1 -1
- package/build/src/database/pool/base-methods-forward.js +12 -3
- package/build/src/database/pool/base.d.ts +39 -7
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +59 -18
- package/build/src/database/pool/single-multi-use.d.ts +1 -0
- package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
- package/build/src/database/pool/single-multi-use.js +16 -4
- package/build/src/database/query/alter-table-base.d.ts +1 -0
- package/build/src/database/query/alter-table-base.d.ts.map +1 -1
- package/build/src/database/query/alter-table-base.js +3 -1
- package/build/src/database/query/base.d.ts +3 -0
- package/build/src/database/query/base.d.ts.map +1 -1
- package/build/src/database/query/base.js +4 -1
- package/build/src/database/query/create-database-base.d.ts +5 -0
- package/build/src/database/query/create-database-base.d.ts.map +1 -1
- package/build/src/database/query/create-database-base.js +4 -1
- package/build/src/database/query/create-index-base.d.ts +5 -0
- package/build/src/database/query/create-index-base.d.ts.map +1 -1
- package/build/src/database/query/create-index-base.js +4 -1
- package/build/src/database/query/create-table-base.d.ts +2 -0
- package/build/src/database/query/create-table-base.d.ts.map +1 -1
- package/build/src/database/query/create-table-base.js +3 -1
- package/build/src/database/query/delete-base.d.ts +3 -2
- package/build/src/database/query/delete-base.d.ts.map +1 -1
- package/build/src/database/query/delete-base.js +3 -2
- package/build/src/database/query/drop-database-base.d.ts +5 -0
- package/build/src/database/query/drop-database-base.d.ts.map +1 -1
- package/build/src/database/query/drop-database-base.js +4 -1
- package/build/src/database/query/drop-table-base.d.ts +1 -0
- package/build/src/database/query/drop-table-base.d.ts.map +1 -1
- package/build/src/database/query/drop-table-base.js +3 -1
- package/build/src/database/query/from-base.d.ts +6 -1
- package/build/src/database/query/from-base.d.ts.map +1 -1
- package/build/src/database/query/from-base.js +7 -2
- package/build/src/database/query/from-plain.d.ts +1 -0
- package/build/src/database/query/from-plain.d.ts.map +1 -1
- package/build/src/database/query/from-plain.js +2 -1
- package/build/src/database/query/from-table.d.ts +1 -0
- package/build/src/database/query/from-table.d.ts.map +1 -1
- package/build/src/database/query/from-table.js +2 -1
- package/build/src/database/query/index.d.ts +72 -12
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +79 -19
- package/build/src/database/query/insert-base.d.ts +13 -8
- package/build/src/database/query/insert-base.d.ts.map +1 -1
- package/build/src/database/query/insert-base.js +10 -5
- package/build/src/database/query/join-base.d.ts +4 -0
- package/build/src/database/query/join-base.d.ts.map +1 -1
- package/build/src/database/query/join-base.js +5 -1
- package/build/src/database/query/join-object.d.ts +11 -0
- package/build/src/database/query/join-object.d.ts.map +1 -1
- package/build/src/database/query/join-object.js +15 -4
- package/build/src/database/query/join-plain.d.ts +1 -0
- package/build/src/database/query/join-plain.d.ts.map +1 -1
- package/build/src/database/query/join-plain.js +2 -1
- package/build/src/database/query/join-tracker.d.ts +7 -0
- package/build/src/database/query/join-tracker.d.ts.map +1 -1
- package/build/src/database/query/join-tracker.js +8 -1
- package/build/src/database/query/model-class-query.d.ts +92 -26
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +230 -76
- package/build/src/database/query/order-base.d.ts +3 -0
- package/build/src/database/query/order-base.d.ts.map +1 -1
- package/build/src/database/query/order-base.js +4 -1
- package/build/src/database/query/order-column.d.ts +9 -1
- package/build/src/database/query/order-column.d.ts.map +1 -1
- package/build/src/database/query/order-column.js +10 -2
- package/build/src/database/query/order-plain.d.ts +1 -0
- package/build/src/database/query/order-plain.d.ts.map +1 -1
- package/build/src/database/query/order-plain.js +2 -1
- package/build/src/database/query/preloader/belongs-to.d.ts +1 -0
- package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
- package/build/src/database/query/preloader/belongs-to.js +68 -23
- package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts +1 -0
- package/build/src/database/query/preloader/ensure-model-class-initialized.d.ts.map +1 -1
- package/build/src/database/query/preloader/ensure-model-class-initialized.js +2 -1
- package/build/src/database/query/preloader/has-many.d.ts +5 -3
- package/build/src/database/query/preloader/has-many.d.ts.map +1 -1
- package/build/src/database/query/preloader/has-many.js +66 -24
- package/build/src/database/query/preloader/has-one.d.ts +1 -0
- package/build/src/database/query/preloader/has-one.d.ts.map +1 -1
- package/build/src/database/query/preloader/has-one.js +26 -9
- package/build/src/database/query/preloader/selection.d.ts +7 -1
- package/build/src/database/query/preloader/selection.d.ts.map +1 -1
- package/build/src/database/query/preloader/selection.js +13 -5
- package/build/src/database/query/preloader.d.ts +1 -0
- package/build/src/database/query/preloader.d.ts.map +1 -1
- package/build/src/database/query/preloader.js +28 -9
- package/build/src/database/query/query-data.d.ts +21 -7
- package/build/src/database/query/query-data.d.ts.map +1 -1
- package/build/src/database/query/query-data.js +37 -18
- package/build/src/database/query/select-base.d.ts +3 -0
- package/build/src/database/query/select-base.d.ts.map +1 -1
- package/build/src/database/query/select-base.js +4 -1
- package/build/src/database/query/select-plain.d.ts +1 -0
- package/build/src/database/query/select-plain.d.ts.map +1 -1
- package/build/src/database/query/select-plain.js +2 -1
- package/build/src/database/query/select-table-and-column.d.ts +1 -0
- package/build/src/database/query/select-table-and-column.d.ts.map +1 -1
- package/build/src/database/query/select-table-and-column.js +2 -1
- package/build/src/database/query/update-base.d.ts +9 -6
- package/build/src/database/query/update-base.d.ts.map +1 -1
- package/build/src/database/query/update-base.js +7 -4
- package/build/src/database/query/upsert-base.d.ts +13 -4
- package/build/src/database/query/upsert-base.d.ts.map +1 -1
- package/build/src/database/query/upsert-base.js +12 -3
- package/build/src/database/query/where-base.d.ts +4 -0
- package/build/src/database/query/where-base.d.ts.map +1 -1
- package/build/src/database/query/where-base.js +5 -1
- package/build/src/database/query/where-combinator.d.ts +1 -0
- package/build/src/database/query/where-combinator.d.ts.map +1 -1
- package/build/src/database/query/where-combinator.js +6 -2
- package/build/src/database/query/where-hash.d.ts +6 -0
- package/build/src/database/query/where-hash.d.ts.map +1 -1
- package/build/src/database/query/where-hash.js +5 -1
- package/build/src/database/query/where-model-class-hash.d.ts +30 -16
- package/build/src/database/query/where-model-class-hash.d.ts.map +1 -1
- package/build/src/database/query/where-model-class-hash.js +55 -20
- 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-not.js +3 -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/where-plain.js +2 -1
- package/build/src/database/query/with-count.d.ts +11 -5
- package/build/src/database/query/with-count.d.ts.map +1 -1
- package/build/src/database/query/with-count.js +36 -15
- package/build/src/database/query-parser/base-query-parser.d.ts +1 -0
- package/build/src/database/query-parser/base-query-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/base-query-parser.js +2 -1
- package/build/src/database/query-parser/from-parser.d.ts +5 -1
- package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/from-parser.js +6 -2
- package/build/src/database/query-parser/group-parser.d.ts +2 -0
- package/build/src/database/query-parser/group-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/group-parser.js +3 -1
- package/build/src/database/query-parser/joins-parser.d.ts +1 -0
- package/build/src/database/query-parser/joins-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/joins-parser.js +2 -1
- package/build/src/database/query-parser/limit-parser.d.ts +1 -0
- package/build/src/database/query-parser/limit-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/limit-parser.js +2 -1
- package/build/src/database/query-parser/options.d.ts +15 -4
- package/build/src/database/query-parser/options.d.ts.map +1 -1
- package/build/src/database/query-parser/options.js +11 -3
- package/build/src/database/query-parser/order-parser.d.ts +1 -0
- package/build/src/database/query-parser/order-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/order-parser.js +2 -1
- package/build/src/database/query-parser/select-parser.d.ts +1 -0
- package/build/src/database/query-parser/select-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/select-parser.js +2 -1
- package/build/src/database/query-parser/where-parser.d.ts +1 -0
- package/build/src/database/query-parser/where-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/where-parser.js +2 -1
- package/build/src/database/record/acts-as-list.d.ts +0 -1
- package/build/src/database/record/acts-as-list.d.ts.map +1 -1
- package/build/src/database/record/acts-as-list.js +89 -45
- package/build/src/database/record/attachments/download.d.ts +34 -15
- package/build/src/database/record/attachments/download.d.ts.map +1 -1
- package/build/src/database/record/attachments/download.js +34 -22
- package/build/src/database/record/attachments/handle.d.ts +17 -5
- package/build/src/database/record/attachments/handle.d.ts.map +1 -1
- package/build/src/database/record/attachments/handle.js +25 -9
- package/build/src/database/record/attachments/normalize-input.d.ts +6 -1
- package/build/src/database/record/attachments/normalize-input.d.ts.map +1 -1
- package/build/src/database/record/attachments/normalize-input.js +54 -17
- package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts +7 -1
- package/build/src/database/record/attachments/storage-drivers/filesystem.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/filesystem.js +10 -2
- package/build/src/database/record/attachments/storage-drivers/native.d.ts +12 -7
- package/build/src/database/record/attachments/storage-drivers/native.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/native.js +13 -6
- package/build/src/database/record/attachments/storage-drivers/s3.d.ts +18 -9
- package/build/src/database/record/attachments/storage-drivers/s3.d.ts.map +1 -1
- package/build/src/database/record/attachments/storage-drivers/s3.js +38 -13
- package/build/src/database/record/attachments/store.d.ts +48 -25
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +63 -25
- package/build/src/database/record/index.d.ts +394 -146
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +697 -248
- package/build/src/database/record/instance-relationships/base.d.ts +78 -19
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +98 -26
- package/build/src/database/record/instance-relationships/belongs-to.d.ts +1 -0
- package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/belongs-to.js +13 -5
- package/build/src/database/record/instance-relationships/has-many.d.ts +27 -7
- package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-many.js +50 -16
- package/build/src/database/record/instance-relationships/has-one.d.ts +4 -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 +28 -10
- package/build/src/database/record/relationships/base.d.ts +61 -14
- package/build/src/database/record/relationships/base.d.ts.map +1 -1
- package/build/src/database/record/relationships/base.js +60 -15
- package/build/src/database/record/relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/relationships/belongs-to.js +9 -3
- package/build/src/database/record/relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/relationships/has-many.js +9 -3
- package/build/src/database/record/relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/relationships/has-one.js +9 -3
- package/build/src/database/record/state-machine.d.ts +9 -1
- package/build/src/database/record/state-machine.d.ts.map +1 -1
- package/build/src/database/record/state-machine.js +35 -14
- package/build/src/database/record/user-module.d.ts +2 -0
- package/build/src/database/record/user-module.d.ts.map +1 -1
- package/build/src/database/record/user-module.js +3 -1
- package/build/src/database/record/validators/base.d.ts +4 -2
- package/build/src/database/record/validators/base.d.ts.map +1 -1
- package/build/src/database/record/validators/base.js +4 -2
- package/build/src/database/record/validators/format.d.ts.map +1 -1
- package/build/src/database/record/validators/format.js +2 -1
- package/build/src/database/record/validators/presence.d.ts.map +1 -1
- package/build/src/database/record/validators/presence.js +5 -2
- package/build/src/database/record/validators/uniqueness.d.ts +0 -2
- package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
- package/build/src/database/record/validators/uniqueness.js +18 -8
- package/build/src/database/table-data/index.d.ts +40 -4
- package/build/src/database/table-data/index.d.ts.map +1 -1
- package/build/src/database/table-data/index.js +38 -5
- package/build/src/database/table-data/table-column.d.ts +43 -5
- package/build/src/database/table-data/table-column.d.ts.map +1 -1
- package/build/src/database/table-data/table-column.js +37 -4
- package/build/src/database/table-data/table-foreign-key.d.ts +8 -0
- package/build/src/database/table-data/table-foreign-key.d.ts.map +1 -1
- package/build/src/database/table-data/table-foreign-key.js +9 -1
- package/build/src/database/table-data/table-index.d.ts +8 -0
- package/build/src/database/table-data/table-index.d.ts.map +1 -1
- package/build/src/database/table-data/table-index.js +6 -1
- package/build/src/database/table-data/table-reference.d.ts +1 -0
- package/build/src/database/table-data/table-reference.d.ts.map +1 -1
- package/build/src/database/table-data/table-reference.js +2 -1
- package/build/src/database/use-database.d.ts +1 -0
- package/build/src/database/use-database.d.ts.map +1 -1
- package/build/src/database/use-database.js +2 -1
- package/build/src/environment-handlers/base.d.ts +94 -36
- package/build/src/environment-handlers/base.d.ts.map +1 -1
- package/build/src/environment-handlers/base.js +90 -36
- package/build/src/environment-handlers/browser.d.ts +33 -3
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +36 -9
- package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts +5 -0
- package/build/src/environment-handlers/node/cli/commands/cli-command-context.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +6 -2
- package/build/src/environment-handlers/node/cli/commands/console.d.ts +3 -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 +23 -9
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +4 -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 +5 -2
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +6 -2
- 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 +11 -5
- package/build/src/environment-handlers/node/cli/commands/db/seed.d.ts +15 -5
- 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 +20 -6
- package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +5 -0
- 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 +3 -1
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +2 -0
- 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 +6 -4
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +43 -29
- 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 +99 -40
- package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +5 -0
- 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 +3 -1
- package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +5 -0
- 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 +3 -1
- package/build/src/environment-handlers/node/cli/commands/init.d.ts +5 -0
- package/build/src/environment-handlers/node/cli/commands/init.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/init.js +3 -1
- package/build/src/environment-handlers/node/cli/commands/routes.d.ts +3 -0
- package/build/src/environment-handlers/node/cli/commands/routes.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/routes.js +4 -1
- package/build/src/environment-handlers/node/cli/commands/run-script.d.ts +15 -5
- 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 +20 -6
- package/build/src/environment-handlers/node/cli/commands/runner.d.ts +18 -6
- package/build/src/environment-handlers/node/cli/commands/runner.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/runner.js +20 -6
- package/build/src/environment-handlers/node/cli/commands/server.d.ts +13 -1
- package/build/src/environment-handlers/node/cli/commands/server.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/server.js +23 -6
- package/build/src/environment-handlers/node.d.ts +14 -2
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +107 -39
- package/build/src/error-logger.d.ts +4 -3
- package/build/src/error-logger.d.ts.map +1 -1
- package/build/src/error-logger.js +4 -3
- package/build/src/frontend-model-controller.d.ts +239 -90
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +577 -787
- package/build/src/frontend-model-resource/base-resource.d.ts +118 -66
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +205 -82
- package/build/src/frontend-models/base.d.ts +319 -163
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +717 -366
- package/build/src/frontend-models/clear-pending-debounced-callback.d.ts +2 -1
- package/build/src/frontend-models/clear-pending-debounced-callback.d.ts.map +1 -1
- package/build/src/frontend-models/clear-pending-debounced-callback.js +6 -3
- package/build/src/frontend-models/event-hook-models.d.ts +5 -0
- package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
- package/build/src/frontend-models/event-hook-models.js +10 -3
- package/build/src/frontend-models/model-registry.d.ts +5 -5
- package/build/src/frontend-models/model-registry.d.ts.map +1 -1
- package/build/src/frontend-models/model-registry.js +5 -5
- package/build/src/frontend-models/outgoing-event-buffer.d.ts +11 -3
- package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
- package/build/src/frontend-models/outgoing-event-buffer.js +13 -5
- package/build/src/frontend-models/preloader.d.ts +9 -6
- package/build/src/frontend-models/preloader.d.ts.map +1 -1
- package/build/src/frontend-models/preloader.js +21 -9
- package/build/src/frontend-models/query.d.ts +283 -73
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +331 -203
- package/build/src/frontend-models/resource-config-validation.d.ts +2 -0
- package/build/src/frontend-models/resource-config-validation.d.ts.map +1 -1
- package/build/src/frontend-models/resource-config-validation.js +3 -1
- package/build/src/frontend-models/resource-definition.d.ts +12 -5
- package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
- package/build/src/frontend-models/resource-definition.js +39 -13
- package/build/src/frontend-models/transport-serialization.d.ts +14 -11
- package/build/src/frontend-models/transport-serialization.d.ts.map +1 -1
- package/build/src/frontend-models/transport-serialization.js +80 -53
- package/build/src/frontend-models/use-destroyed-event.d.ts +21 -0
- package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-destroyed-event.js +34 -11
- package/build/src/frontend-models/use-model-class-event.d.ts +24 -0
- package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-model-class-event.js +39 -12
- package/build/src/frontend-models/use-updated-event.d.ts +21 -0
- package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-updated-event.js +37 -12
- package/build/src/frontend-models/websocket-channel.d.ts +51 -9
- package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-channel.js +96 -26
- package/build/src/frontend-models/websocket-publishers.d.ts +2 -0
- package/build/src/frontend-models/websocket-publishers.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-publishers.js +33 -11
- package/build/src/http-client/header.d.ts +1 -0
- package/build/src/http-client/header.d.ts.map +1 -1
- package/build/src/http-client/header.js +2 -1
- package/build/src/http-client/index.d.ts +4 -0
- package/build/src/http-client/index.d.ts.map +1 -1
- package/build/src/http-client/index.js +5 -1
- package/build/src/http-client/request.d.ts +5 -0
- package/build/src/http-client/request.d.ts.map +1 -1
- package/build/src/http-client/request.js +6 -1
- package/build/src/http-client/response.d.ts +14 -4
- package/build/src/http-client/response.d.ts.map +1 -1
- package/build/src/http-client/response.js +14 -4
- package/build/src/http-client/websocket-client.d.ts +1 -0
- package/build/src/http-client/websocket-client.d.ts.map +1 -1
- package/build/src/http-client/websocket-client.js +2 -1
- package/build/src/http-server/client/index.d.ts +16 -2
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +44 -13
- package/build/src/http-server/client/params-to-object.d.ts +16 -10
- package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
- package/build/src/http-server/client/params-to-object.js +46 -17
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts +10 -6
- 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 +11 -7
- package/build/src/http-server/client/request-buffer/header.d.ts +1 -0
- package/build/src/http-server/client/request-buffer/header.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/header.js +2 -1
- package/build/src/http-server/client/request-buffer/index.d.ts +29 -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 +43 -9
- package/build/src/http-server/client/request-parser.d.ts +52 -13
- package/build/src/http-server/client/request-parser.d.ts.map +1 -1
- package/build/src/http-server/client/request-parser.js +58 -15
- package/build/src/http-server/client/request-runner.d.ts +5 -1
- package/build/src/http-server/client/request-runner.d.ts.map +1 -1
- package/build/src/http-server/client/request-runner.js +32 -8
- package/build/src/http-server/client/request-timing.d.ts +37 -7
- package/build/src/http-server/client/request-timing.d.ts.map +1 -1
- package/build/src/http-server/client/request-timing.js +32 -8
- package/build/src/http-server/client/request.d.ts +15 -5
- package/build/src/http-server/client/request.d.ts.map +1 -1
- package/build/src/http-server/client/request.js +17 -5
- package/build/src/http-server/client/response.d.ts +22 -4
- package/build/src/http-server/client/response.d.ts.map +1 -1
- package/build/src/http-server/client/response.js +29 -7
- package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +1 -0
- package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts.map +1 -1
- package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +3 -1
- package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +1 -0
- package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts.map +1 -1
- package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +3 -1
- package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +2 -0
- package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts.map +1 -1
- package/build/src/http-server/client/uploaded-file/uploaded-file.js +3 -1
- package/build/src/http-server/client/websocket-request.d.ts +24 -12
- package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-request.js +24 -10
- package/build/src/http-server/client/websocket-session.d.ts +101 -62
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +118 -61
- package/build/src/http-server/cookie.d.ts +36 -8
- package/build/src/http-server/cookie.d.ts.map +1 -1
- package/build/src/http-server/cookie.js +37 -9
- package/build/src/http-server/development-reloader.d.ts +32 -7
- package/build/src/http-server/development-reloader.d.ts.map +1 -1
- package/build/src/http-server/development-reloader.js +39 -10
- package/build/src/http-server/index.d.ts +102 -25
- package/build/src/http-server/index.d.ts.map +1 -1
- package/build/src/http-server/index.js +117 -32
- package/build/src/http-server/remote-address.d.ts +1 -0
- package/build/src/http-server/remote-address.d.ts.map +1 -1
- package/build/src/http-server/remote-address.js +15 -4
- package/build/src/http-server/server-client.d.ts +37 -8
- package/build/src/http-server/server-client.d.ts.map +1 -1
- package/build/src/http-server/server-client.js +48 -12
- package/build/src/http-server/server-lock.d.ts +76 -0
- package/build/src/http-server/server-lock.d.ts.map +1 -0
- package/build/src/http-server/server-lock.js +164 -0
- package/build/src/http-server/websocket-channel-subscribers.d.ts +13 -8
- package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel-subscribers.js +16 -7
- package/build/src/http-server/websocket-channel.d.ts +13 -11
- package/build/src/http-server/websocket-channel.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel.js +8 -12
- package/build/src/http-server/websocket-connection.d.ts +10 -14
- package/build/src/http-server/websocket-connection.d.ts.map +1 -1
- package/build/src/http-server/websocket-connection.js +8 -12
- package/build/src/http-server/websocket-event-log-store.d.ts +48 -10
- package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
- package/build/src/http-server/websocket-event-log-store.js +76 -34
- package/build/src/http-server/websocket-events-host.d.ts +21 -15
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +20 -11
- package/build/src/http-server/websocket-events.d.ts +8 -7
- package/build/src/http-server/websocket-events.d.ts.map +1 -1
- package/build/src/http-server/websocket-events.js +6 -5
- package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts +3 -2
- package/build/src/http-server/worker-handler/channel-subscriber-dispatch.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/channel-subscriber-dispatch.js +3 -2
- package/build/src/http-server/worker-handler/in-process.d.ts +18 -18
- package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/in-process.js +28 -20
- package/build/src/http-server/worker-handler/index.d.ts +39 -20
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +34 -14
- package/build/src/http-server/worker-handler/worker-thread.d.ts +31 -15
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +31 -12
- package/build/src/initializer.d.ts +4 -0
- package/build/src/initializer.d.ts.map +1 -1
- package/build/src/initializer.js +5 -1
- package/build/src/jobs/mail-delivery.d.ts +1 -0
- package/build/src/jobs/mail-delivery.d.ts.map +1 -1
- package/build/src/jobs/mail-delivery.js +2 -1
- package/build/src/logger/base-logger.js +2 -2
- package/build/src/logger/console-logger.d.ts +2 -0
- package/build/src/logger/console-logger.d.ts.map +1 -1
- package/build/src/logger/console-logger.js +3 -1
- package/build/src/logger/file-logger.d.ts +2 -0
- package/build/src/logger/file-logger.d.ts.map +1 -1
- package/build/src/logger/file-logger.js +3 -1
- package/build/src/logger/outputs/array-output.d.ts +21 -5
- package/build/src/logger/outputs/array-output.d.ts.map +1 -1
- package/build/src/logger/outputs/array-output.js +19 -6
- package/build/src/logger/outputs/console-output.d.ts +10 -2
- package/build/src/logger/outputs/console-output.d.ts.map +1 -1
- package/build/src/logger/outputs/console-output.js +8 -3
- package/build/src/logger/outputs/file-output.d.ts +20 -5
- package/build/src/logger/outputs/file-output.d.ts.map +1 -1
- package/build/src/logger/outputs/file-output.js +18 -6
- package/build/src/logger/outputs/stdout-output.d.ts +7 -1
- package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
- package/build/src/logger/outputs/stdout-output.js +9 -3
- package/build/src/logger.d.ts +28 -13
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/logger.js +60 -23
- package/build/src/mailer/backends/smtp.d.ts +5 -0
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +17 -4
- package/build/src/mailer/base.d.ts +33 -17
- package/build/src/mailer/base.d.ts.map +1 -1
- package/build/src/mailer/base.js +54 -18
- package/build/src/mailer/delivery.d.ts +16 -5
- package/build/src/mailer/delivery.d.ts.map +1 -1
- package/build/src/mailer/delivery.js +18 -7
- package/build/src/mailer/index.d.ts +5 -5
- package/build/src/mailer/index.d.ts.map +1 -1
- package/build/src/mailer/index.js +2 -2
- package/build/src/mailer.d.ts +5 -5
- package/build/src/mailer.d.ts.map +1 -1
- package/build/src/mailer.js +2 -2
- package/build/src/plugins/sqljs-wasm-route-controller.d.ts +4 -1
- package/build/src/plugins/sqljs-wasm-route-controller.d.ts.map +1 -1
- package/build/src/plugins/sqljs-wasm-route-controller.js +11 -4
- package/build/src/plugins/sqljs-wasm-route.d.ts +6 -0
- package/build/src/plugins/sqljs-wasm-route.d.ts.map +1 -1
- package/build/src/plugins/sqljs-wasm-route.js +4 -1
- package/build/src/record-payload-values.d.ts +54 -0
- package/build/src/record-payload-values.d.ts.map +1 -0
- package/build/src/record-payload-values.js +80 -0
- package/build/src/routes/app-routes.d.ts +1 -0
- package/build/src/routes/app-routes.d.ts.map +1 -1
- package/build/src/routes/app-routes.js +2 -1
- package/build/src/routes/base-route.d.ts +52 -16
- package/build/src/routes/base-route.d.ts.map +1 -1
- package/build/src/routes/base-route.js +50 -14
- package/build/src/routes/basic-route.d.ts +1 -0
- package/build/src/routes/basic-route.d.ts.map +1 -1
- package/build/src/routes/basic-route.js +13 -4
- package/build/src/routes/built-in/debug/controller.d.ts +4 -1
- package/build/src/routes/built-in/debug/controller.d.ts.map +1 -1
- package/build/src/routes/built-in/debug/controller.js +5 -2
- package/build/src/routes/get-route.d.ts +1 -0
- package/build/src/routes/get-route.d.ts.map +1 -1
- package/build/src/routes/get-route.js +7 -4
- package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts +1 -0
- package/build/src/routes/hooks/frontend-model-command-route-hook.d.ts.map +1 -1
- package/build/src/routes/hooks/frontend-model-command-route-hook.js +6 -2
- package/build/src/routes/index.d.ts +3 -2
- package/build/src/routes/index.d.ts.map +1 -1
- package/build/src/routes/index.js +10 -4
- package/build/src/routes/namespace-route.d.ts +1 -0
- package/build/src/routes/namespace-route.d.ts.map +1 -1
- package/build/src/routes/namespace-route.js +5 -3
- package/build/src/routes/plugin-routes.d.ts +10 -1
- package/build/src/routes/plugin-routes.d.ts.map +1 -1
- package/build/src/routes/plugin-routes.js +11 -3
- package/build/src/routes/post-route.d.ts +1 -0
- package/build/src/routes/post-route.d.ts.map +1 -1
- package/build/src/routes/post-route.js +7 -4
- package/build/src/routes/resolver.d.ts +20 -5
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +47 -14
- package/build/src/routes/resource-route.d.ts +6 -1
- package/build/src/routes/resource-route.d.ts.map +1 -1
- package/build/src/routes/resource-route.js +10 -4
- package/build/src/testing/base-expect.d.ts +2 -0
- package/build/src/testing/base-expect.d.ts.map +1 -1
- package/build/src/testing/base-expect.js +3 -1
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts +33 -5
- 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 +95 -23
- package/build/src/testing/expect-to-change.d.ts +3 -0
- package/build/src/testing/expect-to-change.d.ts.map +1 -1
- package/build/src/testing/expect-to-change.js +4 -1
- package/build/src/testing/expect-utils.d.ts +22 -16
- package/build/src/testing/expect-utils.d.ts.map +1 -1
- package/build/src/testing/expect-utils.js +62 -30
- package/build/src/testing/expect.d.ts +50 -21
- package/build/src/testing/expect.d.ts.map +1 -1
- package/build/src/testing/expect.js +58 -17
- package/build/src/testing/request-client.d.ts +16 -3
- package/build/src/testing/request-client.d.ts.map +1 -1
- package/build/src/testing/request-client.js +17 -4
- package/build/src/testing/test-files-finder.d.ts +41 -9
- package/build/src/testing/test-files-finder.d.ts.map +1 -1
- package/build/src/testing/test-files-finder.js +42 -10
- package/build/src/testing/test-filter-parser.d.ts +6 -0
- package/build/src/testing/test-filter-parser.d.ts.map +1 -1
- package/build/src/testing/test-filter-parser.js +12 -3
- package/build/src/testing/test-runner.d.ts +102 -6
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +115 -23
- package/build/src/testing/test-suite-splitter.d.ts +7 -0
- package/build/src/testing/test-suite-splitter.d.ts.map +1 -1
- package/build/src/testing/test-suite-splitter.js +7 -2
- package/build/src/testing/test.d.ts +20 -4
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +67 -20
- package/build/src/utils/backtrace-cleaner-node.d.ts.map +1 -1
- package/build/src/utils/backtrace-cleaner-node.js +6 -1
- package/build/src/utils/backtrace-cleaner.d.ts +16 -1
- package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
- package/build/src/utils/backtrace-cleaner.js +20 -2
- package/build/src/utils/ensure-error.d.ts +3 -2
- package/build/src/utils/ensure-error.d.ts.map +1 -1
- package/build/src/utils/ensure-error.js +3 -2
- package/build/src/utils/event-emitter.d.ts.map +1 -1
- package/build/src/utils/event-emitter.js +2 -2
- package/build/src/utils/file-exists.d.ts +1 -0
- package/build/src/utils/file-exists.d.ts.map +1 -1
- package/build/src/utils/file-exists.js +2 -1
- package/build/src/utils/format-value.d.ts +5 -4
- package/build/src/utils/format-value.d.ts.map +1 -1
- package/build/src/utils/format-value.js +12 -7
- package/build/src/utils/model-scope.d.ts +18 -12
- package/build/src/utils/model-scope.d.ts.map +1 -1
- package/build/src/utils/model-scope.js +19 -11
- package/build/src/utils/nest-callbacks.d.ts +1 -0
- package/build/src/utils/nest-callbacks.d.ts.map +1 -1
- package/build/src/utils/nest-callbacks.js +2 -1
- package/build/src/utils/plain-object.d.ts +7 -0
- package/build/src/utils/plain-object.d.ts.map +1 -0
- package/build/src/utils/plain-object.js +13 -0
- package/build/src/utils/ransack.d.ts +29 -5
- package/build/src/utils/ransack.d.ts.map +1 -1
- package/build/src/utils/ransack.js +136 -49
- package/build/src/utils/rest-args-error.d.ts +1 -0
- package/build/src/utils/rest-args-error.d.ts.map +1 -1
- package/build/src/utils/rest-args-error.js +2 -1
- package/build/src/utils/singularize-model-name.d.ts +1 -0
- package/build/src/utils/singularize-model-name.d.ts.map +1 -1
- package/build/src/utils/singularize-model-name.js +2 -1
- package/build/src/utils/to-import-specifier.d.ts.map +1 -1
- package/build/src/utils/to-import-specifier.js +3 -1
- package/build/src/utils/with-tracked-stack-async-hooks.d.ts +8 -5
- package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack-async-hooks.js +32 -13
- package/build/src/utils/with-tracked-stack.d.ts +9 -5
- package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack.js +19 -8
- package/build/src/velocious-error.d.ts +4 -2
- package/build/src/velocious-error.d.ts.map +1 -1
- package/build/src/velocious-error.js +5 -3
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase {
|
|
2
2
|
/**
|
|
3
|
+
* Runs constructor.
|
|
3
4
|
* @param {object} args - Options object.
|
|
4
5
|
* @param {import("./index.js").default} args.query - Query instance.
|
|
5
6
|
* @param {WhereHash} args.hash - Hash.
|
|
@@ -17,73 +18,83 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
17
18
|
qualifyBaseTable: boolean;
|
|
18
19
|
query: import("./index.js").default;
|
|
19
20
|
/**
|
|
21
|
+
* Runs get model class.
|
|
20
22
|
* @returns {typeof import("../record/index.js").default} - The model class.
|
|
21
23
|
*/
|
|
22
24
|
getModelClass(): typeof import("../record/index.js").default;
|
|
23
25
|
/**
|
|
26
|
+
* Runs resolve column name.
|
|
24
27
|
* @param {typeof import("../record/index.js").default} modelClass - Model class.
|
|
25
28
|
* @param {string} key - Attribute or column name.
|
|
26
29
|
* @returns {string | undefined} - The resolved column name.
|
|
27
30
|
*/
|
|
28
31
|
_resolveColumnName(modelClass: typeof import("../record/index.js").default, key: string): string | undefined;
|
|
29
32
|
/**
|
|
33
|
+
* Runs get relationship.
|
|
30
34
|
* @param {typeof import("../record/index.js").default} modelClass - Model class.
|
|
31
35
|
* @param {string} relationshipName - Relationship name.
|
|
32
36
|
* @returns {import("../record/relationships/base.js").default | undefined} - The relationship.
|
|
33
37
|
*/
|
|
34
38
|
_getRelationship(modelClass: typeof import("../record/index.js").default, relationshipName: string): import("../record/relationships/base.js").default | undefined;
|
|
35
39
|
/**
|
|
36
|
-
*
|
|
40
|
+
* Runs is relationship where operator tuple.
|
|
41
|
+
* @param {?} tupleValue - Candidate tuple.
|
|
37
42
|
* @returns {boolean} - Whether this is a relationship where tuple.
|
|
38
43
|
*/
|
|
39
44
|
_isRelationshipWhereOperatorTuple(tupleValue: unknown): boolean;
|
|
40
45
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @
|
|
46
|
+
* Runs normalize relationship where operator tuples.
|
|
47
|
+
* @param {?} value - Candidate relationship where value.
|
|
48
|
+
* @returns {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>} - Normalized tuples.
|
|
43
49
|
*/
|
|
44
|
-
_normalizeRelationshipWhereOperatorTuples(value: unknown): Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like",
|
|
50
|
+
_normalizeRelationshipWhereOperatorTuples(value: unknown): Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>;
|
|
45
51
|
/**
|
|
46
|
-
*
|
|
52
|
+
* Runs is relationship where operator tuple container.
|
|
53
|
+
* @param {?} value - Candidate relationship where value.
|
|
47
54
|
* @returns {boolean} - Whether value can be normalized to relationship tuples.
|
|
48
55
|
*/
|
|
49
56
|
_isRelationshipWhereOperatorTupleContainer(value: unknown): boolean;
|
|
50
57
|
/**
|
|
58
|
+
* Runs where sqlfrom relationship where operator tuples.
|
|
51
59
|
* @param {object} args - Relationship where options.
|
|
52
60
|
* @param {typeof import("../record/index.js").default} args.modelClass - Relationship model class.
|
|
53
61
|
* @param {string} args.tableName - Relationship table reference name.
|
|
54
|
-
* @param {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like",
|
|
62
|
+
* @param {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>} args.tuples - Operator tuples.
|
|
55
63
|
* @returns {string} - SQL where fragment.
|
|
56
64
|
*/
|
|
57
65
|
_whereSQLFromRelationshipWhereOperatorTuples({ modelClass, tableName, tuples }: {
|
|
58
66
|
modelClass: typeof import("../record/index.js").default;
|
|
59
67
|
tableName: string;
|
|
60
|
-
tuples: Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like",
|
|
68
|
+
tuples: Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>;
|
|
61
69
|
}): string;
|
|
62
70
|
/**
|
|
71
|
+
* Runs normalize sqlite boolean value.
|
|
63
72
|
* @param {object} args - Options object.
|
|
64
73
|
* @param {typeof import("../record/index.js").default} args.modelClass - Model class.
|
|
65
74
|
* @param {string} args.columnName - Column name.
|
|
66
|
-
* @param {
|
|
67
|
-
* @returns {
|
|
75
|
+
* @param {?} args.value - Value to normalize.
|
|
76
|
+
* @returns {?} - Normalized value.
|
|
68
77
|
*/
|
|
69
78
|
_normalizeSqliteBooleanValue({ modelClass, columnName, value }: {
|
|
70
79
|
modelClass: typeof import("../record/index.js").default;
|
|
71
80
|
columnName: string;
|
|
72
|
-
value:
|
|
73
|
-
}):
|
|
81
|
+
value: unknown;
|
|
82
|
+
}): unknown;
|
|
74
83
|
/**
|
|
84
|
+
* Runs normalize value for column type.
|
|
75
85
|
* @param {object} args - Options object.
|
|
76
86
|
* @param {typeof import("../record/index.js").default} args.modelClass - Model class.
|
|
77
87
|
* @param {string} args.columnName - Column name.
|
|
78
|
-
* @param {
|
|
79
|
-
* @returns {
|
|
88
|
+
* @param {?} args.value - Value to normalize.
|
|
89
|
+
* @returns {?} - Normalized value.
|
|
80
90
|
*/
|
|
81
91
|
_normalizeValueForColumnType({ modelClass, columnName, value }: {
|
|
82
92
|
modelClass: typeof import("../record/index.js").default;
|
|
83
93
|
columnName: string;
|
|
84
|
-
value:
|
|
85
|
-
}):
|
|
94
|
+
value: unknown;
|
|
95
|
+
}): unknown;
|
|
86
96
|
/**
|
|
97
|
+
* Runs where sqlfrom hash.
|
|
87
98
|
* @param {WhereHash} hash - Hash.
|
|
88
99
|
* @param {typeof import("../record/index.js").default} modelClass - Model class.
|
|
89
100
|
* @param {string[]} path - Join path.
|
|
@@ -93,8 +104,11 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
93
104
|
*/
|
|
94
105
|
_whereSQLFromHash(hash: WhereHash, modelClass: typeof import("../record/index.js").default, path: string[], tableName?: string, index?: number): string;
|
|
95
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* No match.
|
|
109
|
+
*/
|
|
96
110
|
export type WhereHash = {
|
|
97
|
-
[key: string]: string | number | boolean | null | Array<string | number | boolean | null> | Record<string,
|
|
111
|
+
[key: string]: string | number | boolean | null | Array<string | number | boolean | null> | Record<string, unknown>;
|
|
98
112
|
};
|
|
99
113
|
import WhereBase from "./where-base.js";
|
|
100
114
|
//# sourceMappingURL=where-model-class-hash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-model-class-hash.d.ts","sourceRoot":"","sources":["../../../../src/database/query/where-model-class-hash.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"where-model-class-hash.d.ts","sourceRoot":"","sources":["../../../../src/database/query/where-model-class-hash.js"],"names":[],"mappings":"AAkCA;IACE;;;;;;;OAOG;IACH,2DALG;QAA2C,KAAK,EAAxC,OAAO,YAAY,EAAE,OAAO;QACZ,IAAI,EAApB,SAAS;QACyC,UAAU,EAA5D,cAAc,oBAAoB,EAAE,OAAO;QAC5B,gBAAgB;KACzC,EAOA;IAJC,gBAAgB;IAChB,wDAA4B;IAC5B,0BAAwC;IACxC,oCAAkB;IAGpB;;;OAGG;IACH,iBAFa,cAAc,oBAAoB,EAAE,OAAO,CAMvD;IAsBD;;;;;OAKG;IACH,+BAJW,cAAc,oBAAoB,EAAE,OAAO,OAC3C,MAAM,GACJ,MAAM,GAAG,SAAS,CAc9B;IAED;;;;;OAKG;IACH,6BAJW,cAAc,oBAAoB,EAAE,OAAO,oBAC3C,MAAM,GACJ,OAAO,iCAAiC,EAAE,OAAO,GAAG,SAAS,CAIzE;IAED;;;;OAIG;IACH,8CAHW,OAAC,GACC,OAAO,CAUnB;IAED;;;;OAIG;IACH,iDAHW,OAAC,GACC,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC,CAqD7F;IAED;;;;OAIG;IACH,kDAHW,OAAC,GACC,OAAO,CAUnB;IAED;;;;;;;OAOG;IACH,gFALG;QAA0D,UAAU,EAA5D,cAAc,oBAAoB,EAAE,OAAO;QAC9B,SAAS,EAAtB,MAAM;QACkF,MAAM,EAA9F,KAAK,CAAC,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;KACzF,GAAU,MAAM,CAkGlB;IAED;;;;;;;OAOG;IACH,gEALG;QAA0D,UAAU,EAA5D,cAAc,oBAAoB,EAAE,OAAO;QAC9B,UAAU,EAAvB,MAAM;QACE,KAAK,EAAb,OAAC;KACT,GAAU,OAAC,CAyBb;IAED;;;;;;;OAOG;IACH,gEALG;QAA0D,UAAU,EAA5D,cAAc,oBAAoB,EAAE,OAAO;QAC9B,UAAU,EAAvB,MAAM;QACE,KAAK,EAAb,OAAC;KACT,GAAU,OAAC,CAsCb;IAED;;;;;;;;OAQG;IACH,wBAPW,SAAS,cACT,cAAc,oBAAoB,EAAE,OAAO,QAC3C,MAAM,EAAE,cACR,MAAM,UACN,MAAM,GACJ,MAAM,CAgHlB;CACF;;;;wBAhfY;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAA;CAAC;sBAJtG,iBAAiB"}
|
|
@@ -3,11 +3,13 @@ import * as inflection from "inflection";
|
|
|
3
3
|
import { isPlainObject } from "is-plain-object";
|
|
4
4
|
import WhereBase from "./where-base.js";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* No match.
|
|
7
|
+
* @typedef {{[key: string]: string | number | boolean | null | Array<string | number | boolean | null> | Record<string, ?>}} WhereHash
|
|
7
8
|
*/
|
|
8
9
|
const NO_MATCH = Symbol("no-match");
|
|
9
10
|
const relationshipWhereOperators = new Set(["eq", "notEq", "gt", "gteq", "lt", "lteq", "like", ">", ">=", "<", "<="]);
|
|
10
11
|
/**
|
|
12
|
+
* Runs normalize relationship where operator.
|
|
11
13
|
* @param {string} operator - Raw relationship where operator.
|
|
12
14
|
* @returns {"eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like"} - Normalized operator.
|
|
13
15
|
*/
|
|
@@ -18,10 +20,13 @@ function normalizeRelationshipWhereOperator(operator) {
|
|
|
18
20
|
">": "gt",
|
|
19
21
|
">=": "gteq"
|
|
20
22
|
};
|
|
21
|
-
return /** @type {"eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like"} */ (operatorAliases[ /**
|
|
23
|
+
return /** Narrows the runtime value to the documented type. @type {"eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like"} */ (operatorAliases[ /**
|
|
24
|
+
* Narrows the runtime value to the documented type.
|
|
25
|
+
@type {"<" | "<=" | ">" | ">="} */(operator)] || operator);
|
|
22
26
|
}
|
|
23
27
|
export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase {
|
|
24
28
|
/**
|
|
29
|
+
* Runs constructor.
|
|
25
30
|
* @param {object} args - Options object.
|
|
26
31
|
* @param {import("./index.js").default} args.query - Query instance.
|
|
27
32
|
* @param {WhereHash} args.hash - Hash.
|
|
@@ -36,6 +41,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
36
41
|
this.query = query;
|
|
37
42
|
}
|
|
38
43
|
/**
|
|
44
|
+
* Runs get model class.
|
|
39
45
|
* @returns {typeof import("../record/index.js").default} - The model class.
|
|
40
46
|
*/
|
|
41
47
|
getModelClass() {
|
|
@@ -44,11 +50,14 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
44
50
|
return this.modelClass;
|
|
45
51
|
}
|
|
46
52
|
/**
|
|
53
|
+
* Runs to sql.
|
|
47
54
|
* @returns {string} - SQL string.
|
|
48
55
|
*/
|
|
49
56
|
toSql() {
|
|
50
57
|
let sql = "(";
|
|
51
|
-
const modelQuery = /**
|
|
58
|
+
const modelQuery = /**
|
|
59
|
+
* Narrows the runtime value to the documented type.
|
|
60
|
+
@type {import("./model-class-query.js").default} */ (this.query);
|
|
52
61
|
const baseTableName = this.qualifyBaseTable
|
|
53
62
|
? modelQuery.getTableReferenceForJoin()
|
|
54
63
|
: undefined;
|
|
@@ -57,6 +66,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
57
66
|
return sql;
|
|
58
67
|
}
|
|
59
68
|
/**
|
|
69
|
+
* Runs resolve column name.
|
|
60
70
|
* @param {typeof import("../record/index.js").default} modelClass - Model class.
|
|
61
71
|
* @param {string} key - Attribute or column name.
|
|
62
72
|
* @returns {string | undefined} - The resolved column name.
|
|
@@ -74,6 +84,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
74
84
|
return undefined;
|
|
75
85
|
}
|
|
76
86
|
/**
|
|
87
|
+
* Runs get relationship.
|
|
77
88
|
* @param {typeof import("../record/index.js").default} modelClass - Model class.
|
|
78
89
|
* @param {string} relationshipName - Relationship name.
|
|
79
90
|
* @returns {import("../record/relationships/base.js").default | undefined} - The relationship.
|
|
@@ -82,7 +93,8 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
82
93
|
return modelClass.getRelationshipsMap()[relationshipName];
|
|
83
94
|
}
|
|
84
95
|
/**
|
|
85
|
-
*
|
|
96
|
+
* Runs is relationship where operator tuple.
|
|
97
|
+
* @param {?} tupleValue - Candidate tuple.
|
|
86
98
|
* @returns {boolean} - Whether this is a relationship where tuple.
|
|
87
99
|
*/
|
|
88
100
|
_isRelationshipWhereOperatorTuple(tupleValue) {
|
|
@@ -94,19 +106,27 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
94
106
|
relationshipWhereOperators.has(tupleValue[1]);
|
|
95
107
|
}
|
|
96
108
|
/**
|
|
97
|
-
*
|
|
98
|
-
* @
|
|
109
|
+
* Runs normalize relationship where operator tuples.
|
|
110
|
+
* @param {?} value - Candidate relationship where value.
|
|
111
|
+
* @returns {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>} - Normalized tuples.
|
|
99
112
|
*/
|
|
100
113
|
_normalizeRelationshipWhereOperatorTuples(value) {
|
|
101
114
|
if (!Array.isArray(value)) {
|
|
102
115
|
throw new Error(`Invalid relationship where tuple container type: ${typeof value}`);
|
|
103
116
|
}
|
|
104
|
-
/**
|
|
117
|
+
/**
|
|
118
|
+
* Normalized.
|
|
119
|
+
@type {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>} */
|
|
105
120
|
const normalized = [];
|
|
106
|
-
/**
|
|
121
|
+
/**
|
|
122
|
+
* Add condition.
|
|
123
|
+
* @param {?} conditionValue - Candidate nested condition.
|
|
124
|
+
*/
|
|
107
125
|
const addCondition = (conditionValue) => {
|
|
108
126
|
if (this._isRelationshipWhereOperatorTuple(conditionValue)) {
|
|
109
|
-
const tuple = /**
|
|
127
|
+
const tuple = /**
|
|
128
|
+
* Narrows the runtime value to the documented type.
|
|
129
|
+
@type {[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like" | ">" | ">=" | "<" | "<=", unknown, ...Array<unknown>]} */ (conditionValue);
|
|
110
130
|
const normalizedOperator = normalizeRelationshipWhereOperator(tuple[1]);
|
|
111
131
|
normalized.push([
|
|
112
132
|
tuple[0],
|
|
@@ -134,7 +154,8 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
134
154
|
return normalized;
|
|
135
155
|
}
|
|
136
156
|
/**
|
|
137
|
-
*
|
|
157
|
+
* Runs is relationship where operator tuple container.
|
|
158
|
+
* @param {?} value - Candidate relationship where value.
|
|
138
159
|
* @returns {boolean} - Whether value can be normalized to relationship tuples.
|
|
139
160
|
*/
|
|
140
161
|
_isRelationshipWhereOperatorTupleContainer(value) {
|
|
@@ -147,10 +168,11 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
147
168
|
}
|
|
148
169
|
}
|
|
149
170
|
/**
|
|
171
|
+
* Runs where sqlfrom relationship where operator tuples.
|
|
150
172
|
* @param {object} args - Relationship where options.
|
|
151
173
|
* @param {typeof import("../record/index.js").default} args.modelClass - Relationship model class.
|
|
152
174
|
* @param {string} args.tableName - Relationship table reference name.
|
|
153
|
-
* @param {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like",
|
|
175
|
+
* @param {Array<[string, "eq" | "notEq" | "gt" | "gteq" | "lt" | "lteq" | "like", unknown]>} args.tuples - Operator tuples.
|
|
154
176
|
* @returns {string} - SQL where fragment.
|
|
155
177
|
*/
|
|
156
178
|
_whereSQLFromRelationshipWhereOperatorTuples({ modelClass, tableName, tuples }) {
|
|
@@ -244,11 +266,12 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
244
266
|
return sql;
|
|
245
267
|
}
|
|
246
268
|
/**
|
|
269
|
+
* Runs normalize sqlite boolean value.
|
|
247
270
|
* @param {object} args - Options object.
|
|
248
271
|
* @param {typeof import("../record/index.js").default} args.modelClass - Model class.
|
|
249
272
|
* @param {string} args.columnName - Column name.
|
|
250
|
-
* @param {
|
|
251
|
-
* @returns {
|
|
273
|
+
* @param {?} args.value - Value to normalize.
|
|
274
|
+
* @returns {?} - Normalized value.
|
|
252
275
|
*/
|
|
253
276
|
_normalizeSqliteBooleanValue({ modelClass, columnName, value }) {
|
|
254
277
|
if (modelClass.getDatabaseType() != "sqlite")
|
|
@@ -258,7 +281,10 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
258
281
|
return value;
|
|
259
282
|
if (columnType.toLowerCase() !== "boolean")
|
|
260
283
|
return value;
|
|
261
|
-
/**
|
|
284
|
+
/**
|
|
285
|
+
* Normalize.
|
|
286
|
+
* @param {?} entry - Value to normalize.
|
|
287
|
+
*/
|
|
262
288
|
const normalize = (entry) => {
|
|
263
289
|
if (entry === true)
|
|
264
290
|
return 1;
|
|
@@ -272,11 +298,12 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
272
298
|
return normalize(value);
|
|
273
299
|
}
|
|
274
300
|
/**
|
|
301
|
+
* Runs normalize value for column type.
|
|
275
302
|
* @param {object} args - Options object.
|
|
276
303
|
* @param {typeof import("../record/index.js").default} args.modelClass - Model class.
|
|
277
304
|
* @param {string} args.columnName - Column name.
|
|
278
|
-
* @param {
|
|
279
|
-
* @returns {
|
|
305
|
+
* @param {?} args.value - Value to normalize.
|
|
306
|
+
* @returns {?} - Normalized value.
|
|
280
307
|
*/
|
|
281
308
|
_normalizeValueForColumnType({ modelClass, columnName, value }) {
|
|
282
309
|
const columnType = modelClass.getColumnTypeByName(columnName);
|
|
@@ -288,7 +315,10 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
288
315
|
const shouldCoerceToString = normalizedType.includes("uuid") ||
|
|
289
316
|
normalizedType.includes("text") ||
|
|
290
317
|
stringTypes.has(normalizedType);
|
|
291
|
-
/**
|
|
318
|
+
/**
|
|
319
|
+
* Normalize.
|
|
320
|
+
* @param {?} entry - Value to normalize.
|
|
321
|
+
*/
|
|
292
322
|
const normalize = (entry) => {
|
|
293
323
|
if (isUuidType && typeof entry === "number")
|
|
294
324
|
return NO_MATCH;
|
|
@@ -308,6 +338,7 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
308
338
|
return normalized;
|
|
309
339
|
}
|
|
310
340
|
/**
|
|
341
|
+
* Runs where sqlfrom hash.
|
|
311
342
|
* @param {WhereHash} hash - Hash.
|
|
312
343
|
* @param {typeof import("../record/index.js").default} modelClass - Model class.
|
|
313
344
|
* @param {string[]} path - Join path.
|
|
@@ -317,7 +348,9 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
317
348
|
*/
|
|
318
349
|
_whereSQLFromHash(hash, modelClass, path, tableName, index = 0) {
|
|
319
350
|
const options = this.getOptions();
|
|
320
|
-
const modelQuery = /**
|
|
351
|
+
const modelQuery = /**
|
|
352
|
+
* Narrows the runtime value to the documented type.
|
|
353
|
+
@type {import("./model-class-query.js").default} */ (this.query);
|
|
321
354
|
let sql = "";
|
|
322
355
|
for (const whereKey in hash) {
|
|
323
356
|
const whereValue = hash[whereKey];
|
|
@@ -361,7 +394,9 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
361
394
|
const targetModelClass = relationship.getTargetModelClass();
|
|
362
395
|
if (!targetModelClass)
|
|
363
396
|
throw new Error(`Relationship "${whereKey}" for ${modelClass.name} has no target model class`);
|
|
364
|
-
const nestedHash = /**
|
|
397
|
+
const nestedHash = /**
|
|
398
|
+
* Narrows the runtime value to the documented type.
|
|
399
|
+
@type {WhereHash} */ (whereValue);
|
|
365
400
|
const nestedPath = path.concat([whereKey]);
|
|
366
401
|
const nestedTableName = modelQuery.getTableReferenceForJoin(...nestedPath);
|
|
367
402
|
sql += this._whereSQLFromHash(nestedHash, targetModelClass, nestedPath, nestedTableName, index);
|
|
@@ -412,4 +447,4 @@ export default class VelociousDatabaseQueryWhereModelClassHash extends WhereBase
|
|
|
412
447
|
return sql;
|
|
413
448
|
}
|
|
414
449
|
}
|
|
415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtbW9kZWwtY2xhc3MtaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS93aGVyZS1tb2RlbC1jbGFzcy1oYXNoLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUE7QUFFdkM7O0dBRUc7QUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDbkMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBRXJIOzs7R0FHRztBQUNILFNBQVMsa0NBQWtDLENBQUMsUUFBUTtJQUNsRCxNQUFNLGVBQWUsR0FBRztRQUN0QixHQUFHLEVBQUUsSUFBSTtRQUNULElBQUksRUFBRSxNQUFNO1FBQ1osR0FBRyxFQUFFLElBQUk7UUFDVCxJQUFJLEVBQUUsTUFBTTtLQUNiLENBQUE7SUFFRCxPQUFPLHNFQUFzRSxDQUFDLENBQzVFLGVBQWUsRUFBQyxzQ0FBdUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FDL0UsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsT0FBTyxPQUFPLHlDQUEwQyxTQUFRLFNBQVM7SUFDOUU7Ozs7OztPQU1HO0lBQ0gsWUFBWSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixHQUFHLEtBQUssRUFBQztRQUM3RCxLQUFLLEVBQUUsQ0FBQTtRQUNQLElB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QUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7b0JBQzlCLEdBQUcsSUFBSSxRQUFRLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQTtnQkFDOUUsQ0FBQztxQkFBTSxJQUFJLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztvQkFDL0IsR0FBRyxJQUFJLFVBQVUsQ0FBQTtnQkFDbkIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEdBQUcsSUFBSSxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQTtnQkFDMUMsQ0FBQztZQUNILENBQUM7WUFFRCxLQUFLLEVBQUUsQ0FBQTtRQUNULENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQTtJQUNaLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSBcImlzLXBsYWluLW9iamVjdFwiXG5pbXBvcnQgV2hlcmVCYXNlIGZyb20gXCIuL3doZXJlLWJhc2UuanNcIlxuXG4vKipcbiAqIEB0eXBlZGVmIHt7W2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCBBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbD4gfCBSZWNvcmQ8c3RyaW5nLCBhbnk+fX0gV2hlcmVIYXNoXG4gKi9cblxuY29uc3QgTk9fTUFUQ0ggPSBTeW1ib2woXCJuby1tYXRjaFwiKVxuY29uc3QgcmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvcnMgPSBuZXcgU2V0KFtcImVxXCIsIFwibm90RXFcIiwgXCJndFwiLCBcImd0ZXFcIiwgXCJsdFwiLCBcImx0ZXFcIiwgXCJsaWtlXCIsIFwiPlwiLCBcIj49XCIsIFwiPFwiLCBcIjw9XCJdKVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvciAtIFJhdyByZWxhdGlvbnNoaXAgd2hlcmUgb3BlcmF0b3IuXG4gKiBAcmV0dXJucyB7XCJlcVwiIHwgXCJub3RFcVwiIHwgXCJndFwiIHwgXCJndGVxXCIgfCBcImx0XCIgfCBcImx0ZXFcIiB8IFwibGlrZVwifSAtIE5vcm1hbGl6ZWQgb3BlcmF0b3IuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3Iob3BlcmF0b3IpIHtcbiAgY29uc3Qgb3BlcmF0b3JBbGlhc2VzID0ge1xuICAgIFwiPFwiOiBcImx0XCIsXG4gICAgXCI8PVwiOiBcImx0ZXFcIixcbiAgICBcIj5cIjogXCJndFwiLFxuICAgIFwiPj1cIjogXCJndGVxXCJcbiAgfVxuXG4gIHJldHVybiAvKiogQHR5cGUge1wiZXFcIiB8IFwibm90RXFcIiB8IFwiZ3RcIiB8IFwiZ3RlcVwiIHwgXCJsdFwiIHwgXCJsdGVxXCIgfCBcImxpa2VcIn0gKi8gKFxuICAgIG9wZXJhdG9yQWxpYXNlc1svKiogQHR5cGUge1wiPFwiIHwgXCI8PVwiIHwgXCI+XCIgfCBcIj49XCJ9ICovIChvcGVyYXRvcildIHx8IG9wZXJhdG9yXG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VRdWVyeVdoZXJlTW9kZWxDbGFzc0hhc2ggZXh0ZW5kcyBXaGVyZUJhc2Uge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MucXVlcnkgLSBRdWVyeSBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtXaGVyZUhhc2h9IGFyZ3MuaGFzaCAtIEhhc2guXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5xdWFsaWZ5QmFzZVRhYmxlXSAtIFdoZXRoZXIgdG8gcXVhbGlmeSBiYXNlIHRhYmxlIGNvbHVtbnMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7cXVlcnksIGhhc2gsIG1vZGVsQ2xhc3MsIHF1YWxpZnlCYXNlVGFibGUgPSBmYWxzZX0pIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5oYXNoID0gaGFzaFxuICAgIHRoaXMubW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcbiAgICB0aGlzLnF1YWxpZnlCYXNlVGFibGUgPSBxdWFsaWZ5QmFzZVRhYmxlXG4gICAgdGhpcy5xdWVyeSA9IHF1ZXJ5XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gLSBUaGUgbW9kZWwgY2xhc3MuXG4gICAqL1xuICBnZXRNb2RlbENsYXNzKCkge1xuICAgIGlmICghdGhpcy5tb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJtb2RlbENsYXNzIG5vdCBzZXRcIilcblxuICAgIHJldHVybiB0aGlzLm1vZGVsQ2xhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICB0b1NxbCgpIHtcbiAgICBsZXQgc3FsID0gXCIoXCJcblxuICAgIGNvbnN0IG1vZGVsUXVlcnkgPSAvKiogQHR5cGUge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gKi8gKHRoaXMucXVlcnkpXG4gICAgY29uc3QgYmFzZVRhYmxlTmFtZSA9IHRoaXMucXVhbGlmeUJhc2VUYWJsZVxuICAgICAgPyBtb2RlbFF1ZXJ5LmdldFRhYmxlUmVmZXJlbmNlRm9ySm9pbigpXG4gICAgICA6IHVuZGVmaW5lZFxuXG4gICAgc3FsICs9IHRoaXMuX3doZXJlU1FMRnJvbUhhc2godGhpcy5oYXNoLCB0aGlzLmdldE1vZGVsQ2xhc3MoKSwgW10sIGJhc2VUYWJsZU5hbWUpXG4gICAgc3FsICs9IFwiKVwiXG5cbiAgICByZXR1cm4gc3FsXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIEF0dHJpYnV0ZSBvciBjb2x1bW4gbmFtZS5cbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gLSBUaGUgcmVzb2x2ZWQgY29sdW1uIG5hbWUuXG4gICAqL1xuICBfcmVzb2x2ZUNvbHVtbk5hbWUobW9kZWxDbGFzcywga2V5KSB7XG4gICAgY29uc3QgYXR0cmlidXRlTWFwID0gbW9kZWxDbGFzcy5nZXRBdHRyaWJ1dGVOYW1lVG9Db2x1bW5OYW1lTWFwKClcblxuICAgIGlmIChhdHRyaWJ1dGVNYXBba2V5XSkgcmV0dXJuIGF0dHJpYnV0ZU1hcFtrZXldXG5cbiAgICBjb25zdCBjb2x1bW5NYXAgPSBtb2RlbENsYXNzLmdldENvbHVtbk5hbWVUb0F0dHJpYnV0ZU5hbWVNYXAoKVxuICAgIGNvbnN0IHVuZGVyc2NvcmVkID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGtleSlcblxuICAgIGlmIChjb2x1bW5NYXBba2V5XSkgcmV0dXJuIGtleVxuICAgIGlmIChjb2x1bW5NYXBbdW5kZXJzY29yZWRdKSByZXR1cm4gdW5kZXJzY29yZWRcblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpb25zaGlwTmFtZSAtIFJlbGF0aW9uc2hpcCBuYW1lLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmFzZS5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAtIFRoZSByZWxhdGlvbnNoaXAuXG4gICAqL1xuICBfZ2V0UmVsYXRpb25zaGlwKG1vZGVsQ2xhc3MsIHJlbGF0aW9uc2hpcE5hbWUpIHtcbiAgICByZXR1cm4gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzTWFwKClbcmVsYXRpb25zaGlwTmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3Vua25vd259IHR1cGxlVmFsdWUgLSBDYW5kaWRhdGUgdHVwbGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhpcyBpcyBhIHJlbGF0aW9uc2hpcCB3aGVyZSB0dXBsZS5cbiAgICovXG4gIF9pc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZSh0dXBsZVZhbHVlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR1cGxlVmFsdWUpIHx8IHR1cGxlVmFsdWUubGVuZ3RoIDwgMykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVvZiB0dXBsZVZhbHVlWzBdID09PSBcInN0cmluZ1wiICYmXG4gICAgICB0eXBlb2YgdHVwbGVWYWx1ZVsxXSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgcmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvcnMuaGFzKHR1cGxlVmFsdWVbMV0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIENhbmRpZGF0ZSByZWxhdGlvbnNoaXAgd2hlcmUgdmFsdWUuXG4gICAqIEByZXR1cm5zIHtBcnJheTxbc3RyaW5nLCBcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCIsIGFueV0+fSAtIE5vcm1hbGl6ZWQgdHVwbGVzLlxuICAgKi9cbiAgX25vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXModmFsdWUpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcmVsYXRpb25zaGlwIHdoZXJlIHR1cGxlIGNvbnRhaW5lciB0eXBlOiAke3R5cGVvZiB2YWx1ZX1gKVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7QXJyYXk8W3N0cmluZywgXCJlcVwiIHwgXCJub3RFcVwiIHwgXCJndFwiIHwgXCJndGVxXCIgfCBcImx0XCIgfCBcImx0ZXFcIiB8IFwibGlrZVwiLCBhbnldPn0gKi9cbiAgICBjb25zdCBub3JtYWxpemVkID0gW11cbiAgICAvKiogQHBhcmFtIHt1bmtub3dufSBjb25kaXRpb25WYWx1ZSAtIENhbmRpZGF0ZSBuZXN0ZWQgY29uZGl0aW9uLiAqL1xuICAgIGNvbnN0IGFkZENvbmRpdGlvbiA9IChjb25kaXRpb25WYWx1ZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlKGNvbmRpdGlvblZhbHVlKSkge1xuICAgICAgICBjb25zdCB0dXBsZSA9IC8qKiBAdHlwZSB7W3N0cmluZywgXCJlcVwiIHwgXCJub3RFcVwiIHwgXCJndFwiIHwgXCJndGVxXCIgfCBcImx0XCIgfCBcImx0ZXFcIiB8IFwibGlrZVwiIHwgXCI+XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPD1cIiwgYW55LCAuLi51bmtub3duW11dfSAqLyAoY29uZGl0aW9uVmFsdWUpXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPcGVyYXRvciA9IG5vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3IodHVwbGVbMV0pXG5cbiAgICAgICAgbm9ybWFsaXplZC5wdXNoKFtcbiAgICAgICAgICB0dXBsZVswXSxcbiAgICAgICAgICBub3JtYWxpemVkT3BlcmF0b3IsXG4gICAgICAgICAgdHVwbGVbMl1cbiAgICAgICAgXSlcblxuICAgICAgICBpZiAodHVwbGUubGVuZ3RoID4gMykge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMzsgaW5kZXggPCB0dXBsZS5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICAgIGFkZENvbmRpdGlvbih0dXBsZVtpbmRleF0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25kaXRpb25WYWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVsYXRpb25zaGlwIHdoZXJlIGNvbmRpdGlvbnMgbXVzdCBiZSB0dXBsZXNcIilcbiAgICAgIH1cblxuICAgICAgY29uZGl0aW9uVmFsdWUuZm9yRWFjaCgobmVzdGVkQ29uZGl0aW9uVmFsdWUpID0+IHtcbiAgICAgICAgYWRkQ29uZGl0aW9uKG5lc3RlZENvbmRpdGlvblZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBhZGRDb25kaXRpb24odmFsdWUpXG5cbiAgICBpZiAobm9ybWFsaXplZC5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWxhdGlvbnNoaXAgd2hlcmUgdHVwbGUgY29udGFpbmVyIGNhbm5vdCBiZSBlbXB0eVwiKVxuICAgIH1cblxuICAgIHJldHVybiBub3JtYWxpemVkXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIENhbmRpZGF0ZSByZWxhdGlvbnNoaXAgd2hlcmUgdmFsdWUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdmFsdWUgY2FuIGJlIG5vcm1hbGl6ZWQgdG8gcmVsYXRpb25zaGlwIHR1cGxlcy5cbiAgICovXG4gIF9pc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZUNvbnRhaW5lcih2YWx1ZSkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9ub3JtYWxpemVSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGVzKHZhbHVlKVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUmVsYXRpb25zaGlwIHdoZXJlIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBSZWxhdGlvbnNoaXAgbW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnRhYmxlTmFtZSAtIFJlbGF0aW9uc2hpcCB0YWJsZSByZWZlcmVuY2UgbmFtZS5cbiAgICogQHBhcmFtIHtBcnJheTxbc3RyaW5nLCBcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCIsIGFueV0+fSBhcmdzLnR1cGxlcyAtIE9wZXJhdG9yIHR1cGxlcy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgd2hlcmUgZnJhZ21lbnQuXG4gICAqL1xuICBfd2hlcmVTUUxGcm9tUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlcyh7bW9kZWxDbGFzcywgdGFibGVOYW1lLCB0dXBsZXN9KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgbGV0IHNxbCA9IFwiXCJcbiAgICBsZXQgaW5kZXggPSAwXG5cbiAgICB0dXBsZXMuZm9yRWFjaCgoW2F0dHJpYnV0ZU5hbWUsIG9wZXJhdG9yLCB3aGVyZVZhbHVlXSkgPT4ge1xuICAgICAgaWYgKGluZGV4ID4gMCkgc3FsICs9IFwiIEFORCBcIlxuXG4gICAgICBjb25zdCBjb2x1bW5OYW1lID0gdGhpcy5fcmVzb2x2ZUNvbHVtbk5hbWUobW9kZWxDbGFzcywgYXR0cmlidXRlTmFtZSlcblxuICAgICAgaWYgKCFjb2x1bW5OYW1lKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYXR0cmlidXRlIFwiJHthdHRyaWJ1dGVOYW1lfVwiIGZvciAke21vZGVsQ2xhc3MubmFtZX1gKVxuXG4gICAgICBjb25zdCBub3JtYWxpemVkVmFsdWUgPSB0aGlzLl9ub3JtYWxpemVTcWxpdGVCb29sZWFuVmFsdWUoe1xuICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICBtb2RlbENsYXNzLFxuICAgICAgICB2YWx1ZTogd2hlcmVWYWx1ZVxuICAgICAgfSlcbiAgICAgIGNvbnN0IHR5cGVkVmFsdWUgPSB0aGlzLl9ub3JtYWxpemVWYWx1ZUZvckNvbHVtblR5cGUoe1xuICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICBtb2RlbENsYXNzLFxuICAgICAgICB2YWx1ZTogbm9ybWFsaXplZFZhbHVlXG4gICAgICB9KVxuICAgICAgY29uc3QgY29sdW1uVHlwZSA9IG1vZGVsQ2xhc3MuZ2V0Q29sdW1uVHlwZUJ5TmFtZShjb2x1bW5OYW1lKVxuICAgICAgY29uc3QgZHJpdmVyVHlwZSA9IHRoaXMuZ2V0UXVlcnkoKS5kcml2ZXIuZ2V0VHlwZSgpXG5cbiAgICAgIGlmICh0eXBlZFZhbHVlID09PSBOT19NQVRDSCkge1xuICAgICAgICBpZiAob3BlcmF0b3IgPT09IFwibm90RXFcIikge1xuICAgICAgICAgIHNxbCArPSBcIjE9MVwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3FsICs9IFwiMT0wXCJcbiAgICAgICAgfVxuICAgICAgICBpbmRleCArPSAxXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgY29sdW1uU3FsID0gYCR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpfS4ke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbk5hbWUpfWBcblxuICAgICAgaWYgKGRyaXZlclR5cGUgPT0gXCJtc3NxbFwiICYmIHR5cGVvZiB3aGVyZVZhbHVlID09PSBcInN0cmluZ1wiICYmIGNvbHVtblR5cGU/LnRvTG93ZXJDYXNlKCkgPT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgY29sdW1uU3FsID0gYENBU1QoJHtjb2x1bW5TcWx9IEFTIE5WQVJDSEFSKE1BWCkpYFxuICAgICAgfVxuXG4gICAgICBpZiAob3BlcmF0b3IgPT09IFwiZXFcIikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlZFZhbHVlKSkge1xuICAgICAgICAgIGlmICh0eXBlZFZhbHVlLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgIHNxbCArPSBcIjE9MFwiXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNxbCArPSBgJHtjb2x1bW5TcWx9IElOICgke3R5cGVkVmFsdWUubWFwKCh2YWx1ZSkgPT4gb3B0aW9ucy5xdW90ZSh2YWx1ZSkpLmpvaW4oXCIsIFwiKX0pYFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0eXBlZFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgc3FsICs9IGAke2NvbHVtblNxbH0gSVMgTlVMTGBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcWwgKz0gYCR7Y29sdW1uU3FsfSA9ICR7b3B0aW9ucy5xdW90ZSh0eXBlZFZhbHVlKX1gXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCArPSAxXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAob3BlcmF0b3IgPT09IFwibm90RXFcIikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlZFZhbHVlKSkge1xuICAgICAgICAgIGlmICh0eXBlZFZhbHVlLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICAgIHNxbCArPSBcIjE9MVwiXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNxbCArPSBgJHtjb2x1bW5TcWx9IE5PVCBJTiAoJHt0eXBlZFZhbHVlLm1hcCgodmFsdWUpID0+IG9wdGlvbnMucXVvdGUodmFsdWUpKS5qb2luKFwiLCBcIil9KWBcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNxbCArPSBgJHtjb2x1bW5TcWx9IElTIE5PVCBOVUxMYFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNxbCArPSBgJHtjb2x1bW5TcWx9ICE9ICR7b3B0aW9ucy5xdW90ZSh0eXBlZFZhbHVlKX1gXG4gICAgICAgIH1cblxuICAgICAgICBpbmRleCArPSAxXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlZFZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZXJhdG9yIFwiJHtvcGVyYXRvcn1cIiBkb2VzIG5vdCBzdXBwb3J0IGFycmF5IHZhbHVlcyBmb3IgJHttb2RlbENsYXNzLm5hbWV9LiR7YXR0cmlidXRlTmFtZX1gKVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZXJhdG9yIFwiJHtvcGVyYXRvcn1cIiBkb2VzIG5vdCBzdXBwb3J0IG51bGwgdmFsdWVzIGZvciAke21vZGVsQ2xhc3MubmFtZX0uJHthdHRyaWJ1dGVOYW1lfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wZXJhdG9yTWFwID0ge1xuICAgICAgICBndDogXCI+XCIsXG4gICAgICAgIGd0ZXE6IFwiPj1cIixcbiAgICAgICAgbGlrZTogXCJMSUtFXCIsXG4gICAgICAgIGx0OiBcIjxcIixcbiAgICAgICAgbHRlcTogXCI8PVwiXG4gICAgICB9XG5cbiAgICAgIHNxbCArPSBgJHtjb2x1bW5TcWx9ICR7b3BlcmF0b3JNYXBbb3BlcmF0b3JdfSAke29wdGlvbnMucXVvdGUodHlwZWRWYWx1ZSl9YFxuICAgICAgaW5kZXggKz0gMVxuICAgIH0pXG5cbiAgICByZXR1cm4gc3FsXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jb2x1bW5OYW1lIC0gQ29sdW1uIG5hbWUuXG4gICAqIEBwYXJhbSB7YW55fSBhcmdzLnZhbHVlIC0gVmFsdWUgdG8gbm9ybWFsaXplLlxuICAgKiBAcmV0dXJucyB7YW55fSAtIE5vcm1hbGl6ZWQgdmFsdWUuXG4gICAqL1xuICBfbm9ybWFsaXplU3FsaXRlQm9vbGVhblZhbHVlKHttb2RlbENsYXNzLCBjb2x1bW5OYW1lLCB2YWx1ZX0pIHtcbiAgICBpZiAobW9kZWxDbGFzcy5nZXREYXRhYmFzZVR5cGUoKSAhPSBcInNxbGl0ZVwiKSByZXR1cm4gdmFsdWVcblxuICAgIGNvbnN0IGNvbHVtblR5cGUgPSBtb2RlbENsYXNzLmdldENvbHVtblR5cGVCeU5hbWUoY29sdW1uTmFtZSlcblxuICAgIGlmICghY29sdW1uVHlwZSkgcmV0dXJuIHZhbHVlXG4gICAgaWYgKGNvbHVtblR5cGUudG9Mb3dlckNhc2UoKSAhPT0gXCJib29sZWFuXCIpIHJldHVybiB2YWx1ZVxuXG4gICAgLyoqIEBwYXJhbSB7YW55fSBlbnRyeSAtIFZhbHVlIHRvIG5vcm1hbGl6ZS4gKi9cbiAgICBjb25zdCBub3JtYWxpemUgPSAoZW50cnkpID0+IHtcbiAgICAgIGlmIChlbnRyeSA9PT0gdHJ1ZSkgcmV0dXJuIDFcbiAgICAgIGlmIChlbnRyeSA9PT0gZmFsc2UpIHJldHVybiAwXG4gICAgICByZXR1cm4gZW50cnlcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5tYXAoKGVudHJ5KSA9PiBub3JtYWxpemUoZW50cnkpKVxuICAgIH1cblxuICAgIHJldHVybiBub3JtYWxpemUodmFsdWUpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jb2x1bW5OYW1lIC0gQ29sdW1uIG5hbWUuXG4gICAqIEBwYXJhbSB7YW55fSBhcmdzLnZhbHVlIC0gVmFsdWUgdG8gbm9ybWFsaXplLlxuICAgKiBAcmV0dXJucyB7YW55fSAtIE5vcm1hbGl6ZWQgdmFsdWUuXG4gICAqL1xuICBfbm9ybWFsaXplVmFsdWVGb3JDb2x1bW5UeXBlKHttb2RlbENsYXNzLCBjb2x1bW5OYW1lLCB2YWx1ZX0pIHtcbiAgICBjb25zdCBjb2x1bW5UeXBlID0gbW9kZWxDbGFzcy5nZXRDb2x1bW5UeXBlQnlOYW1lKGNvbHVtbk5hbWUpXG5cbiAgICBpZiAoIWNvbHVtblR5cGUpIHJldHVybiB2YWx1ZVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZFR5cGUgPSBjb2x1bW5UeXBlLnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBzdHJpbmdUeXBlcyA9IG5ldyBTZXQoW1wiY2hhclwiLCBcInZhcmNoYXJcIiwgXCJudmFyY2hhclwiLCBcInN0cmluZ1wiLCBcImVudW1cIiwgXCJqc29uXCIsIFwianNvbmJcIiwgXCJjaXRleHRcIiwgXCJiaW5hcnlcIiwgXCJ2YXJiaW5hcnlcIl0pXG4gICAgY29uc3QgaXNVdWlkVHlwZSA9IG5vcm1hbGl6ZWRUeXBlLmluY2x1ZGVzKFwidXVpZFwiKVxuICAgIGNvbnN0IHNob3VsZENvZXJjZVRvU3RyaW5nID0gbm9ybWFsaXplZFR5cGUuaW5jbHVkZXMoXCJ1dWlkXCIpIHx8XG4gICAgICBub3JtYWxpemVkVHlwZS5pbmNsdWRlcyhcInRleHRcIikgfHxcbiAgICAgIHN0cmluZ1R5cGVzLmhhcyhub3JtYWxpemVkVHlwZSlcblxuICAgIC8qKiBAcGFyYW0ge2FueX0gZW50cnkgLSBWYWx1ZSB0byBub3JtYWxpemUuICovXG4gICAgY29uc3Qgbm9ybWFsaXplID0gKGVudHJ5KSA9PiB7XG4gICAgICBpZiAoaXNVdWlkVHlwZSAmJiB0eXBlb2YgZW50cnkgPT09IFwibnVtYmVyXCIpIHJldHVybiBOT19NQVRDSFxuICAgICAgaWYgKCFzaG91bGRDb2VyY2VUb1N0cmluZyB8fCB0eXBlb2YgZW50cnkgIT09IFwibnVtYmVyXCIpIHJldHVybiBlbnRyeVxuXG4gICAgICByZXR1cm4gU3RyaW5nKGVudHJ5KVxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLm1hcCgoZW50cnkpID0+IG5vcm1hbGl6ZShlbnRyeSkpLmZpbHRlcigoZW50cnkpID0+IGVudHJ5ICE9PSBOT19NQVRDSClcblxuICAgICAgaWYgKGlzVXVpZFR5cGUgJiYgbm9ybWFsaXplZC5sZW5ndGggPT09IDApIHJldHVybiBOT19NQVRDSFxuXG4gICAgICByZXR1cm4gbm9ybWFsaXplZFxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemUodmFsdWUpXG5cbiAgICBpZiAobm9ybWFsaXplZCA9PT0gTk9fTUFUQ0gpIHJldHVybiBOT19NQVRDSFxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1doZXJlSGFzaH0gaGFzaCAtIEhhc2guXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggLSBKb2luIHBhdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdGFibGVOYW1lXSAtIFRhYmxlIG5hbWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIEluZGV4IHZhbHVlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICBfd2hlcmVTUUxGcm9tSGFzaChoYXNoLCBtb2RlbENsYXNzLCBwYXRoLCB0YWJsZU5hbWUsIGluZGV4ID0gMCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKVxuICAgIGNvbnN0IG1vZGVsUXVlcnkgPSAvKiogQHR5cGUge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gKi8gKHRoaXMucXVlcnkpXG4gICAgbGV0IHNxbCA9IFwiXCJcblxuICAgIGZvciAoY29uc3Qgd2hlcmVLZXkgaW4gaGFzaCkge1xuICAgICAgY29uc3Qgd2hlcmVWYWx1ZSA9IGhhc2hbd2hlcmVLZXldXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB0aGlzLl9nZXRSZWxhdGlvbnNoaXAobW9kZWxDbGFzcywgd2hlcmVLZXkpXG4gICAgICBjb25zdCB0dXBsZXMgPSB0aGlzLl9pc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZUNvbnRhaW5lcih3aGVyZVZhbHVlKVxuICAgICAgICA/IHRoaXMuX25vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXMod2hlcmVWYWx1ZSlcbiAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCByZXNvbHZlZENvbHVtbk5hbWUgPSB0aGlzLl9yZXNvbHZlQ29sdW1uTmFtZShtb2RlbENsYXNzLCB3aGVyZUtleSlcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcCAmJiB0dXBsZXMpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkgc3FsICs9IFwiIEFORCBcIlxuXG4gICAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYFJlbGF0aW9uc2hpcCBcIiR7d2hlcmVLZXl9XCIgZm9yICR7bW9kZWxDbGFzcy5uYW1lfSBoYXMgbm8gdGFyZ2V0IG1vZGVsIGNsYXNzYClcblxuICAgICAgICBjb25zdCBuZXN0ZWRQYXRoID0gcGF0aC5jb25jYXQoW3doZXJlS2V5XSlcbiAgICAgICAgY29uc3QgbmVzdGVkVGFibGVOYW1lID0gbW9kZWxRdWVyeS5nZXRUYWJsZVJlZmVyZW5jZUZvckpvaW4oLi4ubmVzdGVkUGF0aClcblxuICAgICAgICBzcWwgKz0gdGhpcy5fd2hlcmVTUUxGcm9tUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlcyh7XG4gICAgICAgICAgbW9kZWxDbGFzczogdGFyZ2V0TW9kZWxDbGFzcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5lc3RlZFRhYmxlTmFtZSxcbiAgICAgICAgICB0dXBsZXNcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZWRDb2x1bW5OYW1lICYmIHR1cGxlcykge1xuICAgICAgICBpZiAoaW5kZXggPiAwKSBzcWwgKz0gXCIgQU5EIFwiXG5cbiAgICAgICAgc3FsICs9IHRoaXMuX3doZXJlU1FMRnJvbVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXMoe1xuICAgICAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICAgICAgdGFibGVOYW1lOiB0YWJsZU5hbWUgfHwgbW9kZWxRdWVyeS5nZXRUYWJsZVJlZmVyZW5jZUZvckpvaW4oLi4ucGF0aCksXG4gICAgICAgICAgdHVwbGVzXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2hlcmVWYWx1ZSkgJiYgd2hlcmVWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkgc3FsICs9IFwiIEFORCBcIlxuICAgICAgICBzcWwgKz0gXCIxPTBcIlxuICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHdoZXJlVmFsdWUpKSB7XG4gICAgICAgIGlmICghcmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJlbGF0aW9uc2hpcCBcIiR7d2hlcmVLZXl9XCIgZm9yICR7bW9kZWxDbGFzcy5uYW1lfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBSZWxhdGlvbnNoaXAgXCIke3doZXJlS2V5fVwiIGZvciAke21vZGVsQ2xhc3MubmFtZX0gaGFzIG5vIHRhcmdldCBtb2RlbCBjbGFzc2ApXG5cbiAgICAgICAgY29uc3QgbmVzdGVkSGFzaCA9IC8qKiBAdHlwZSB7V2hlcmVIYXNofSAqLyAod2hlcmVWYWx1ZSlcbiAgICAgICAgY29uc3QgbmVzdGVkUGF0aCA9IHBhdGguY29uY2F0KFt3aGVyZUtleV0pXG4gICAgICAgIGNvbnN0IG5lc3RlZFRhYmxlTmFtZSA9IG1vZGVsUXVlcnkuZ2V0VGFibGVSZWZlcmVuY2VGb3JKb2luKC4uLm5lc3RlZFBhdGgpXG5cbiAgICAgICAgc3FsICs9IHRoaXMuX3doZXJlU1FMRnJvbUhhc2gobmVzdGVkSGFzaCwgdGFyZ2V0TW9kZWxDbGFzcywgbmVzdGVkUGF0aCwgbmVzdGVkVGFibGVOYW1lLCBpbmRleClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHNxbCArPSBcIiBBTkQgXCJcblxuICAgICAgICBjb25zdCBjb2x1bW5OYW1lID0gdGhpcy5fcmVzb2x2ZUNvbHVtbk5hbWUobW9kZWxDbGFzcywgd2hlcmVLZXkpXG5cbiAgICAgICAgaWYgKCFjb2x1bW5OYW1lKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYXR0cmlidXRlIFwiJHt3aGVyZUtleX1cIiBmb3IgJHttb2RlbENsYXNzLm5hbWV9YClcblxuICAgICAgICBjb25zdCBjb2x1bW5UeXBlID0gbW9kZWxDbGFzcy5nZXRDb2x1bW5UeXBlQnlOYW1lKGNvbHVtbk5hbWUpXG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5fbm9ybWFsaXplU3FsaXRlQm9vbGVhblZhbHVlKHtcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICAgICAgdmFsdWU6IHdoZXJlVmFsdWVcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgdHlwZWRWYWx1ZSA9IHRoaXMuX25vcm1hbGl6ZVZhbHVlRm9yQ29sdW1uVHlwZSh7XG4gICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICBtb2RlbENsYXNzLFxuICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVkVmFsdWVcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodHlwZWRWYWx1ZSA9PT0gTk9fTUFUQ0gpIHtcbiAgICAgICAgICBzcWwgKz0gXCIxPTBcIlxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbHVtblNxbCA9IGAke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbk5hbWUpfWBcblxuICAgICAgICBpZiAodGFibGVOYW1lKSB7XG4gICAgICAgICAgY29sdW1uU3FsID0gYCR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpfS4ke2NvbHVtblNxbH1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkcml2ZXJUeXBlID0gdGhpcy5nZXRRdWVyeSgpLmRyaXZlci5nZXRUeXBlKClcblxuICAgICAgICBpZiAoZHJpdmVyVHlwZSA9PSBcIm1zc3FsXCIgJiYgdHlwZW9mIHdoZXJlVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgY29sdW1uVHlwZT8udG9Mb3dlckNhc2UoKSA9PSBcInRleHRcIikge1xuICAgICAgICAgIGNvbHVtblNxbCA9IGBDQVNUKCR7Y29sdW1uU3FsfSBBUyBOVkFSQ0hBUihNQVgpKWBcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBjb2x1bW5TcWxcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlZFZhbHVlKSkge1xuICAgICAgICAgIHNxbCArPSBgIElOICgke3R5cGVkVmFsdWUubWFwKCh2YWx1ZSkgPT4gb3B0aW9ucy5xdW90ZSh2YWx1ZSkpLmpvaW4oXCIsIFwiKX0pYFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICBzcWwgKz0gXCIgSVMgTlVMTFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3FsICs9IGAgPSAke29wdGlvbnMucXVvdGUodHlwZWRWYWx1ZSl9YFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICByZXR1cm4gc3FsXG4gIH1cbn1cbiJdfQ==
|
|
450
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtbW9kZWwtY2xhc3MtaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9xdWVyeS93aGVyZS1tb2RlbC1jbGFzcy1oYXNoLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUE7QUFDN0MsT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUE7QUFFdkM7OztHQUdHO0FBRUgsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0FBQ25DLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUVySDs7OztHQUlHO0FBQ0gsU0FBUyxrQ0FBa0MsQ0FBQyxRQUFRO0lBQ2xELE1BQU0sZUFBZSxHQUFHO1FBQ3RCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsSUFBSSxFQUFFLE1BQU07UUFDWixHQUFHLEVBQUUsSUFBSTtRQUNULElBQUksRUFBRSxNQUFNO0tBQ2IsQ0FBQTtJQUVELE9BQU8sd0hBQXdILENBQUMsQ0FDOUgsZUFBZSxFQUFDOzt3REFFcUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FDN0UsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLENBQUMsT0FBTyxPQUFPLHlDQUEwQyxTQUFRLFNBQVM7SUFDOUU7Ozs7Ozs7T0FPRztJQUNILFlBQVksRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUM7UUFDN0QsS0FBSyxFQUFFLENBQUE7UUFD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QUFBO2dCQUVoQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztvQkFDOUIsR0FBRyxJQUFJLFFBQVEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFBO2dCQUM5RSxDQUFDO3FCQUFNLElBQUksVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUMvQixHQUFHLElBQUksVUFBVSxDQUFBO2dCQUNuQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sR0FBRyxJQUFJLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFBO2dCQUMxQyxDQUFDO1lBQ0gsQ0FBQztZQUVELEtBQUssRUFBRSxDQUFBO1FBQ1QsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IHtpc1BsYWluT2JqZWN0fSBmcm9tIFwiaXMtcGxhaW4tb2JqZWN0XCJcbmltcG9ydCBXaGVyZUJhc2UgZnJvbSBcIi4vd2hlcmUtYmFzZS5qc1wiXG5cbi8qKlxuICogTm8gbWF0Y2guXG4gKiBAdHlwZWRlZiB7e1trZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgQXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGw+IHwgUmVjb3JkPHN0cmluZywgPz59fSBXaGVyZUhhc2hcbiAqL1xuXG5jb25zdCBOT19NQVRDSCA9IFN5bWJvbChcIm5vLW1hdGNoXCIpXG5jb25zdCByZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9ycyA9IG5ldyBTZXQoW1wiZXFcIiwgXCJub3RFcVwiLCBcImd0XCIsIFwiZ3RlcVwiLCBcImx0XCIsIFwibHRlcVwiLCBcImxpa2VcIiwgXCI+XCIsIFwiPj1cIiwgXCI8XCIsIFwiPD1cIl0pXG5cbi8qKlxuICogUnVucyBub3JtYWxpemUgcmVsYXRpb25zaGlwIHdoZXJlIG9wZXJhdG9yLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yIC0gUmF3IHJlbGF0aW9uc2hpcCB3aGVyZSBvcGVyYXRvci5cbiAqIEByZXR1cm5zIHtcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCJ9IC0gTm9ybWFsaXplZCBvcGVyYXRvci5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvcihvcGVyYXRvcikge1xuICBjb25zdCBvcGVyYXRvckFsaWFzZXMgPSB7XG4gICAgXCI8XCI6IFwibHRcIixcbiAgICBcIjw9XCI6IFwibHRlcVwiLFxuICAgIFwiPlwiOiBcImd0XCIsXG4gICAgXCI+PVwiOiBcImd0ZXFcIlxuICB9XG5cbiAgcmV0dXJuIC8qKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuIEB0eXBlIHtcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCJ9ICovIChcbiAgICBvcGVyYXRvckFsaWFzZXNbLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7XCI8XCIgfCBcIjw9XCIgfCBcIj5cIiB8IFwiPj1cIn0gKi8gKG9wZXJhdG9yKV0gfHwgb3BlcmF0b3JcbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5V2hlcmVNb2RlbENsYXNzSGFzaCBleHRlbmRzIFdoZXJlQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5xdWVyeSAtIFF1ZXJ5IGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge1doZXJlSGFzaH0gYXJncy5oYXNoIC0gSGFzaC5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLnF1YWxpZnlCYXNlVGFibGVdIC0gV2hldGhlciB0byBxdWFsaWZ5IGJhc2UgdGFibGUgY29sdW1ucy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtxdWVyeSwgaGFzaCwgbW9kZWxDbGFzcywgcXVhbGlmeUJhc2VUYWJsZSA9IGZhbHNlfSkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmhhc2ggPSBoYXNoXG4gICAgdGhpcy5tb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuICAgIHRoaXMucXVhbGlmeUJhc2VUYWJsZSA9IHF1YWxpZnlCYXNlVGFibGVcbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBtb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gLSBUaGUgbW9kZWwgY2xhc3MuXG4gICAqL1xuICBnZXRNb2RlbENsYXNzKCkge1xuICAgIGlmICghdGhpcy5tb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJtb2RlbENsYXNzIG5vdCBzZXRcIilcblxuICAgIHJldHVybiB0aGlzLm1vZGVsQ2xhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRvIHNxbC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBTUUwgc3RyaW5nLlxuICAgKi9cbiAgdG9TcWwoKSB7XG4gICAgbGV0IHNxbCA9IFwiKFwiXG5cbiAgICBjb25zdCBtb2RlbFF1ZXJ5ID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7aW1wb3J0KFwiLi9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0fSAqLyAodGhpcy5xdWVyeSlcbiAgICBjb25zdCBiYXNlVGFibGVOYW1lID0gdGhpcy5xdWFsaWZ5QmFzZVRhYmxlXG4gICAgICA/IG1vZGVsUXVlcnkuZ2V0VGFibGVSZWZlcmVuY2VGb3JKb2luKClcbiAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBzcWwgKz0gdGhpcy5fd2hlcmVTUUxGcm9tSGFzaCh0aGlzLmhhc2gsIHRoaXMuZ2V0TW9kZWxDbGFzcygpLCBbXSwgYmFzZVRhYmxlTmFtZSlcbiAgICBzcWwgKz0gXCIpXCJcblxuICAgIHJldHVybiBzcWxcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlc29sdmUgY29sdW1uIG5hbWUuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBBdHRyaWJ1dGUgb3IgY29sdW1uIG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IC0gVGhlIHJlc29sdmVkIGNvbHVtbiBuYW1lLlxuICAgKi9cbiAgX3Jlc29sdmVDb2x1bW5OYW1lKG1vZGVsQ2xhc3MsIGtleSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZU1hcCA9IG1vZGVsQ2xhc3MuZ2V0QXR0cmlidXRlTmFtZVRvQ29sdW1uTmFtZU1hcCgpXG5cbiAgICBpZiAoYXR0cmlidXRlTWFwW2tleV0pIHJldHVybiBhdHRyaWJ1dGVNYXBba2V5XVxuXG4gICAgY29uc3QgY29sdW1uTWFwID0gbW9kZWxDbGFzcy5nZXRDb2x1bW5OYW1lVG9BdHRyaWJ1dGVOYW1lTWFwKClcbiAgICBjb25zdCB1bmRlcnNjb3JlZCA9IGluZmxlY3Rpb24udW5kZXJzY29yZShrZXkpXG5cbiAgICBpZiAoY29sdW1uTWFwW2tleV0pIHJldHVybiBrZXlcbiAgICBpZiAoY29sdW1uTWFwW3VuZGVyc2NvcmVkXSkgcmV0dXJuIHVuZGVyc2NvcmVkXG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgcmVsYXRpb25zaGlwLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpb25zaGlwTmFtZSAtIFJlbGF0aW9uc2hpcCBuYW1lLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vcmVjb3JkL3JlbGF0aW9uc2hpcHMvYmFzZS5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAtIFRoZSByZWxhdGlvbnNoaXAuXG4gICAqL1xuICBfZ2V0UmVsYXRpb25zaGlwKG1vZGVsQ2xhc3MsIHJlbGF0aW9uc2hpcE5hbWUpIHtcbiAgICByZXR1cm4gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzTWFwKClbcmVsYXRpb25zaGlwTmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGlzIHJlbGF0aW9uc2hpcCB3aGVyZSBvcGVyYXRvciB0dXBsZS5cbiAgICogQHBhcmFtIHs/fSB0dXBsZVZhbHVlIC0gQ2FuZGlkYXRlIHR1cGxlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoaXMgaXMgYSByZWxhdGlvbnNoaXAgd2hlcmUgdHVwbGUuXG4gICAqL1xuICBfaXNSZWxhdGlvbnNoaXBXaGVyZU9wZXJhdG9yVHVwbGUodHVwbGVWYWx1ZSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh0dXBsZVZhbHVlKSB8fCB0dXBsZVZhbHVlLmxlbmd0aCA8IDMpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgdHVwbGVWYWx1ZVswXSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgdHlwZW9mIHR1cGxlVmFsdWVbMV0gPT09IFwic3RyaW5nXCIgJiZcbiAgICAgIHJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JzLmhhcyh0dXBsZVZhbHVlWzFdKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbm9ybWFsaXplIHJlbGF0aW9uc2hpcCB3aGVyZSBvcGVyYXRvciB0dXBsZXMuXG4gICAqIEBwYXJhbSB7P30gdmFsdWUgLSBDYW5kaWRhdGUgcmVsYXRpb25zaGlwIHdoZXJlIHZhbHVlLlxuICAgKiBAcmV0dXJucyB7QXJyYXk8W3N0cmluZywgXCJlcVwiIHwgXCJub3RFcVwiIHwgXCJndFwiIHwgXCJndGVxXCIgfCBcImx0XCIgfCBcImx0ZXFcIiB8IFwibGlrZVwiLCB1bmtub3duXT59IC0gTm9ybWFsaXplZCB0dXBsZXMuXG4gICAqL1xuICBfbm9ybWFsaXplUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlcyh2YWx1ZSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCByZWxhdGlvbnNoaXAgd2hlcmUgdHVwbGUgY29udGFpbmVyIHR5cGU6ICR7dHlwZW9mIHZhbHVlfWApXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm9ybWFsaXplZC5cbiAgICAgIEB0eXBlIHtBcnJheTxbc3RyaW5nLCBcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCIsIHVua25vd25dPn0gKi9cbiAgICBjb25zdCBub3JtYWxpemVkID0gW11cbiAgICAvKipcbiAgICAgKiBBZGQgY29uZGl0aW9uLlxuICAgICAqIEBwYXJhbSB7P30gY29uZGl0aW9uVmFsdWUgLSBDYW5kaWRhdGUgbmVzdGVkIGNvbmRpdGlvbi5cbiAgICAgKi9cbiAgICBjb25zdCBhZGRDb25kaXRpb24gPSAoY29uZGl0aW9uVmFsdWUpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZShjb25kaXRpb25WYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgdHVwbGUgPSAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7W3N0cmluZywgXCJlcVwiIHwgXCJub3RFcVwiIHwgXCJndFwiIHwgXCJndGVxXCIgfCBcImx0XCIgfCBcImx0ZXFcIiB8IFwibGlrZVwiIHwgXCI+XCIgfCBcIj49XCIgfCBcIjxcIiB8IFwiPD1cIiwgdW5rbm93biwgLi4uQXJyYXk8dW5rbm93bj5dfSAqLyAoY29uZGl0aW9uVmFsdWUpXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRPcGVyYXRvciA9IG5vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3IodHVwbGVbMV0pXG5cbiAgICAgICAgbm9ybWFsaXplZC5wdXNoKFtcbiAgICAgICAgICB0dXBsZVswXSxcbiAgICAgICAgICBub3JtYWxpemVkT3BlcmF0b3IsXG4gICAgICAgICAgdHVwbGVbMl1cbiAgICAgICAgXSlcblxuICAgICAgICBpZiAodHVwbGUubGVuZ3RoID4gMykge1xuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMzsgaW5kZXggPCB0dXBsZS5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICAgIGFkZENvbmRpdGlvbih0dXBsZVtpbmRleF0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25kaXRpb25WYWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVsYXRpb25zaGlwIHdoZXJlIGNvbmRpdGlvbnMgbXVzdCBiZSB0dXBsZXNcIilcbiAgICAgIH1cblxuICAgICAgY29uZGl0aW9uVmFsdWUuZm9yRWFjaCgobmVzdGVkQ29uZGl0aW9uVmFsdWUpID0+IHtcbiAgICAgICAgYWRkQ29uZGl0aW9uKG5lc3RlZENvbmRpdGlvblZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBhZGRDb25kaXRpb24odmFsdWUpXG5cbiAgICBpZiAobm9ybWFsaXplZC5sZW5ndGggPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWxhdGlvbnNoaXAgd2hlcmUgdHVwbGUgY29udGFpbmVyIGNhbm5vdCBiZSBlbXB0eVwiKVxuICAgIH1cblxuICAgIHJldHVybiBub3JtYWxpemVkXG4gIH1cblxuICAvKipcbiAgICogUnVucyBpcyByZWxhdGlvbnNoaXAgd2hlcmUgb3BlcmF0b3IgdHVwbGUgY29udGFpbmVyLlxuICAgKiBAcGFyYW0gez99IHZhbHVlIC0gQ2FuZGlkYXRlIHJlbGF0aW9uc2hpcCB3aGVyZSB2YWx1ZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciB2YWx1ZSBjYW4gYmUgbm9ybWFsaXplZCB0byByZWxhdGlvbnNoaXAgdHVwbGVzLlxuICAgKi9cbiAgX2lzUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlQ29udGFpbmVyKHZhbHVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX25vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXModmFsdWUpXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyB3aGVyZSBzcWxmcm9tIHJlbGF0aW9uc2hpcCB3aGVyZSBvcGVyYXRvciB0dXBsZXMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUmVsYXRpb25zaGlwIHdoZXJlIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBSZWxhdGlvbnNoaXAgbW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnRhYmxlTmFtZSAtIFJlbGF0aW9uc2hpcCB0YWJsZSByZWZlcmVuY2UgbmFtZS5cbiAgICogQHBhcmFtIHtBcnJheTxbc3RyaW5nLCBcImVxXCIgfCBcIm5vdEVxXCIgfCBcImd0XCIgfCBcImd0ZXFcIiB8IFwibHRcIiB8IFwibHRlcVwiIHwgXCJsaWtlXCIsIHVua25vd25dPn0gYXJncy50dXBsZXMgLSBPcGVyYXRvciB0dXBsZXMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHdoZXJlIGZyYWdtZW50LlxuICAgKi9cbiAgX3doZXJlU1FMRnJvbVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXMoe21vZGVsQ2xhc3MsIHRhYmxlTmFtZSwgdHVwbGVzfSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmdldE9wdGlvbnMoKVxuICAgIGxldCBzcWwgPSBcIlwiXG4gICAgbGV0IGluZGV4ID0gMFxuXG4gICAgdHVwbGVzLmZvckVhY2goKFthdHRyaWJ1dGVOYW1lLCBvcGVyYXRvciwgd2hlcmVWYWx1ZV0pID0+IHtcbiAgICAgIGlmIChpbmRleCA+IDApIHNxbCArPSBcIiBBTkQgXCJcblxuICAgICAgY29uc3QgY29sdW1uTmFtZSA9IHRoaXMuX3Jlc29sdmVDb2x1bW5OYW1lKG1vZGVsQ2xhc3MsIGF0dHJpYnV0ZU5hbWUpXG5cbiAgICAgIGlmICghY29sdW1uTmFtZSkgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGF0dHJpYnV0ZSBcIiR7YXR0cmlidXRlTmFtZX1cIiBmb3IgJHttb2RlbENsYXNzLm5hbWV9YClcblxuICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5fbm9ybWFsaXplU3FsaXRlQm9vbGVhblZhbHVlKHtcbiAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgbW9kZWxDbGFzcyxcbiAgICAgICAgdmFsdWU6IHdoZXJlVmFsdWVcbiAgICAgIH0pXG4gICAgICBjb25zdCB0eXBlZFZhbHVlID0gdGhpcy5fbm9ybWFsaXplVmFsdWVGb3JDb2x1bW5UeXBlKHtcbiAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgbW9kZWxDbGFzcyxcbiAgICAgICAgdmFsdWU6IG5vcm1hbGl6ZWRWYWx1ZVxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNvbHVtblR5cGUgPSBtb2RlbENsYXNzLmdldENvbHVtblR5cGVCeU5hbWUoY29sdW1uTmFtZSlcbiAgICAgIGNvbnN0IGRyaXZlclR5cGUgPSB0aGlzLmdldFF1ZXJ5KCkuZHJpdmVyLmdldFR5cGUoKVxuXG4gICAgICBpZiAodHlwZWRWYWx1ZSA9PT0gTk9fTUFUQ0gpIHtcbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSBcIm5vdEVxXCIpIHtcbiAgICAgICAgICBzcWwgKz0gXCIxPTFcIlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNxbCArPSBcIjE9MFwiXG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggKz0gMVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbGV0IGNvbHVtblNxbCA9IGAke29wdGlvbnMucXVvdGVUYWJsZU5hbWUodGFibGVOYW1lKX0uJHtvcHRpb25zLnF1b3RlQ29sdW1uTmFtZShjb2x1bW5OYW1lKX1gXG5cbiAgICAgIGlmIChkcml2ZXJUeXBlID09IFwibXNzcWxcIiAmJiB0eXBlb2Ygd2hlcmVWYWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiBjb2x1bW5UeXBlPy50b0xvd2VyQ2FzZSgpID09IFwidGV4dFwiKSB7XG4gICAgICAgIGNvbHVtblNxbCA9IGBDQVNUKCR7Y29sdW1uU3FsfSBBUyBOVkFSQ0hBUihNQVgpKWBcbiAgICAgIH1cblxuICAgICAgaWYgKG9wZXJhdG9yID09PSBcImVxXCIpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZWRWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZWRWYWx1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICBzcWwgKz0gXCIxPTBcIlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcWwgKz0gYCR7Y29sdW1uU3FsfSBJTiAoJHt0eXBlZFZhbHVlLm1hcCgodmFsdWUpID0+IG9wdGlvbnMucXVvdGUodmFsdWUpKS5qb2luKFwiLCBcIil9KWBcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZWRWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHNxbCArPSBgJHtjb2x1bW5TcWx9IElTIE5VTExgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3FsICs9IGAke2NvbHVtblNxbH0gPSAke29wdGlvbnMucXVvdGUodHlwZWRWYWx1ZSl9YFxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXggKz0gMVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKG9wZXJhdG9yID09PSBcIm5vdEVxXCIpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZWRWYWx1ZSkpIHtcbiAgICAgICAgICBpZiAodHlwZWRWYWx1ZS5sZW5ndGggPCAxKSB7XG4gICAgICAgICAgICBzcWwgKz0gXCIxPTFcIlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcWwgKz0gYCR7Y29sdW1uU3FsfSBOT1QgSU4gKCR7dHlwZWRWYWx1ZS5tYXAoKHZhbHVlKSA9PiBvcHRpb25zLnF1b3RlKHZhbHVlKSkuam9pbihcIiwgXCIpfSlgXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICBzcWwgKz0gYCR7Y29sdW1uU3FsfSBJUyBOT1QgTlVMTGBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcWwgKz0gYCR7Y29sdW1uU3FsfSAhPSAke29wdGlvbnMucXVvdGUodHlwZWRWYWx1ZSl9YFxuICAgICAgICB9XG5cbiAgICAgICAgaW5kZXggKz0gMVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZWRWYWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcGVyYXRvciBcIiR7b3BlcmF0b3J9XCIgZG9lcyBub3Qgc3VwcG9ydCBhcnJheSB2YWx1ZXMgZm9yICR7bW9kZWxDbGFzcy5uYW1lfS4ke2F0dHJpYnV0ZU5hbWV9YClcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcGVyYXRvciBcIiR7b3BlcmF0b3J9XCIgZG9lcyBub3Qgc3VwcG9ydCBudWxsIHZhbHVlcyBmb3IgJHttb2RlbENsYXNzLm5hbWV9LiR7YXR0cmlidXRlTmFtZX1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvcGVyYXRvck1hcCA9IHtcbiAgICAgICAgZ3Q6IFwiPlwiLFxuICAgICAgICBndGVxOiBcIj49XCIsXG4gICAgICAgIGxpa2U6IFwiTElLRVwiLFxuICAgICAgICBsdDogXCI8XCIsXG4gICAgICAgIGx0ZXE6IFwiPD1cIlxuICAgICAgfVxuXG4gICAgICBzcWwgKz0gYCR7Y29sdW1uU3FsfSAke29wZXJhdG9yTWFwW29wZXJhdG9yXX0gJHtvcHRpb25zLnF1b3RlKHR5cGVkVmFsdWUpfWBcbiAgICAgIGluZGV4ICs9IDFcbiAgICB9KVxuXG4gICAgcmV0dXJuIHNxbFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbm9ybWFsaXplIHNxbGl0ZSBib29sZWFuIHZhbHVlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmNvbHVtbk5hbWUgLSBDb2x1bW4gbmFtZS5cbiAgICogQHBhcmFtIHs/fSBhcmdzLnZhbHVlIC0gVmFsdWUgdG8gbm9ybWFsaXplLlxuICAgKiBAcmV0dXJucyB7P30gLSBOb3JtYWxpemVkIHZhbHVlLlxuICAgKi9cbiAgX25vcm1hbGl6ZVNxbGl0ZUJvb2xlYW5WYWx1ZSh7bW9kZWxDbGFzcywgY29sdW1uTmFtZSwgdmFsdWV9KSB7XG4gICAgaWYgKG1vZGVsQ2xhc3MuZ2V0RGF0YWJhc2VUeXBlKCkgIT0gXCJzcWxpdGVcIikgcmV0dXJuIHZhbHVlXG5cbiAgICBjb25zdCBjb2x1bW5UeXBlID0gbW9kZWxDbGFzcy5nZXRDb2x1bW5UeXBlQnlOYW1lKGNvbHVtbk5hbWUpXG5cbiAgICBpZiAoIWNvbHVtblR5cGUpIHJldHVybiB2YWx1ZVxuICAgIGlmIChjb2x1bW5UeXBlLnRvTG93ZXJDYXNlKCkgIT09IFwiYm9vbGVhblwiKSByZXR1cm4gdmFsdWVcblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZS5cbiAgICAgKiBAcGFyYW0gez99IGVudHJ5IC0gVmFsdWUgdG8gbm9ybWFsaXplLlxuICAgICAqL1xuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChlbnRyeSkgPT4ge1xuICAgICAgaWYgKGVudHJ5ID09PSB0cnVlKSByZXR1cm4gMVxuICAgICAgaWYgKGVudHJ5ID09PSBmYWxzZSkgcmV0dXJuIDBcbiAgICAgIHJldHVybiBlbnRyeVxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlLm1hcCgoZW50cnkpID0+IG5vcm1hbGl6ZShlbnRyeSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2YWx1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG5vcm1hbGl6ZSB2YWx1ZSBmb3IgY29sdW1uIHR5cGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY29sdW1uTmFtZSAtIENvbHVtbiBuYW1lLlxuICAgKiBAcGFyYW0gez99IGFyZ3MudmFsdWUgLSBWYWx1ZSB0byBub3JtYWxpemUuXG4gICAqIEByZXR1cm5zIHs/fSAtIE5vcm1hbGl6ZWQgdmFsdWUuXG4gICAqL1xuICBfbm9ybWFsaXplVmFsdWVGb3JDb2x1bW5UeXBlKHttb2RlbENsYXNzLCBjb2x1bW5OYW1lLCB2YWx1ZX0pIHtcbiAgICBjb25zdCBjb2x1bW5UeXBlID0gbW9kZWxDbGFzcy5nZXRDb2x1bW5UeXBlQnlOYW1lKGNvbHVtbk5hbWUpXG5cbiAgICBpZiAoIWNvbHVtblR5cGUpIHJldHVybiB2YWx1ZVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZFR5cGUgPSBjb2x1bW5UeXBlLnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBzdHJpbmdUeXBlcyA9IG5ldyBTZXQoW1wiY2hhclwiLCBcInZhcmNoYXJcIiwgXCJudmFyY2hhclwiLCBcInN0cmluZ1wiLCBcImVudW1cIiwgXCJqc29uXCIsIFwianNvbmJcIiwgXCJjaXRleHRcIiwgXCJiaW5hcnlcIiwgXCJ2YXJiaW5hcnlcIl0pXG4gICAgY29uc3QgaXNVdWlkVHlwZSA9IG5vcm1hbGl6ZWRUeXBlLmluY2x1ZGVzKFwidXVpZFwiKVxuICAgIGNvbnN0IHNob3VsZENvZXJjZVRvU3RyaW5nID0gbm9ybWFsaXplZFR5cGUuaW5jbHVkZXMoXCJ1dWlkXCIpIHx8XG4gICAgICBub3JtYWxpemVkVHlwZS5pbmNsdWRlcyhcInRleHRcIikgfHxcbiAgICAgIHN0cmluZ1R5cGVzLmhhcyhub3JtYWxpemVkVHlwZSlcblxuICAgIC8qKlxuICAgICAqIE5vcm1hbGl6ZS5cbiAgICAgKiBAcGFyYW0gez99IGVudHJ5IC0gVmFsdWUgdG8gbm9ybWFsaXplLlxuICAgICAqL1xuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChlbnRyeSkgPT4ge1xuICAgICAgaWYgKGlzVXVpZFR5cGUgJiYgdHlwZW9mIGVudHJ5ID09PSBcIm51bWJlclwiKSByZXR1cm4gTk9fTUFUQ0hcbiAgICAgIGlmICghc2hvdWxkQ29lcmNlVG9TdHJpbmcgfHwgdHlwZW9mIGVudHJ5ICE9PSBcIm51bWJlclwiKSByZXR1cm4gZW50cnlcblxuICAgICAgcmV0dXJuIFN0cmluZyhlbnRyeSlcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB2YWx1ZS5tYXAoKGVudHJ5KSA9PiBub3JtYWxpemUoZW50cnkpKS5maWx0ZXIoKGVudHJ5KSA9PiBlbnRyeSAhPT0gTk9fTUFUQ0gpXG5cbiAgICAgIGlmIChpc1V1aWRUeXBlICYmIG5vcm1hbGl6ZWQubGVuZ3RoID09PSAwKSByZXR1cm4gTk9fTUFUQ0hcblxuICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplKHZhbHVlKVxuXG4gICAgaWYgKG5vcm1hbGl6ZWQgPT09IE5PX01BVENIKSByZXR1cm4gTk9fTUFUQ0hcblxuICAgIHJldHVybiBub3JtYWxpemVkXG4gIH1cblxuICAvKipcbiAgICogUnVucyB3aGVyZSBzcWxmcm9tIGhhc2guXG4gICAqIEBwYXJhbSB7V2hlcmVIYXNofSBoYXNoIC0gSGFzaC5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aCAtIEpvaW4gcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFt0YWJsZU5hbWVdIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gSW5kZXggdmFsdWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIF93aGVyZVNRTEZyb21IYXNoKGhhc2gsIG1vZGVsQ2xhc3MsIHBhdGgsIHRhYmxlTmFtZSwgaW5kZXggPSAwKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0T3B0aW9ucygpXG4gICAgY29uc3QgbW9kZWxRdWVyeSA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUge2ltcG9ydChcIi4vbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdH0gKi8gKHRoaXMucXVlcnkpXG4gICAgbGV0IHNxbCA9IFwiXCJcblxuICAgIGZvciAoY29uc3Qgd2hlcmVLZXkgaW4gaGFzaCkge1xuICAgICAgY29uc3Qgd2hlcmVWYWx1ZSA9IGhhc2hbd2hlcmVLZXldXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSB0aGlzLl9nZXRSZWxhdGlvbnNoaXAobW9kZWxDbGFzcywgd2hlcmVLZXkpXG4gICAgICBjb25zdCB0dXBsZXMgPSB0aGlzLl9pc1JlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZUNvbnRhaW5lcih3aGVyZVZhbHVlKVxuICAgICAgICA/IHRoaXMuX25vcm1hbGl6ZVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXMod2hlcmVWYWx1ZSlcbiAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCByZXNvbHZlZENvbHVtbk5hbWUgPSB0aGlzLl9yZXNvbHZlQ29sdW1uTmFtZShtb2RlbENsYXNzLCB3aGVyZUtleSlcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcCAmJiB0dXBsZXMpIHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkgc3FsICs9IFwiIEFORCBcIlxuXG4gICAgICAgIGNvbnN0IHRhcmdldE1vZGVsQ2xhc3MgPSByZWxhdGlvbnNoaXAuZ2V0VGFyZ2V0TW9kZWxDbGFzcygpXG5cbiAgICAgICAgaWYgKCF0YXJnZXRNb2RlbENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYFJlbGF0aW9uc2hpcCBcIiR7d2hlcmVLZXl9XCIgZm9yICR7bW9kZWxDbGFzcy5uYW1lfSBoYXMgbm8gdGFyZ2V0IG1vZGVsIGNsYXNzYClcblxuICAgICAgICBjb25zdCBuZXN0ZWRQYXRoID0gcGF0aC5jb25jYXQoW3doZXJlS2V5XSlcbiAgICAgICAgY29uc3QgbmVzdGVkVGFibGVOYW1lID0gbW9kZWxRdWVyeS5nZXRUYWJsZVJlZmVyZW5jZUZvckpvaW4oLi4ubmVzdGVkUGF0aClcblxuICAgICAgICBzcWwgKz0gdGhpcy5fd2hlcmVTUUxGcm9tUmVsYXRpb25zaGlwV2hlcmVPcGVyYXRvclR1cGxlcyh7XG4gICAgICAgICAgbW9kZWxDbGFzczogdGFyZ2V0TW9kZWxDbGFzcyxcbiAgICAgICAgICB0YWJsZU5hbWU6IG5lc3RlZFRhYmxlTmFtZSxcbiAgICAgICAgICB0dXBsZXNcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZWRDb2x1bW5OYW1lICYmIHR1cGxlcykge1xuICAgICAgICBpZiAoaW5kZXggPiAwKSBzcWwgKz0gXCIgQU5EIFwiXG5cbiAgICAgICAgc3FsICs9IHRoaXMuX3doZXJlU1FMRnJvbVJlbGF0aW9uc2hpcFdoZXJlT3BlcmF0b3JUdXBsZXMoe1xuICAgICAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICAgICAgdGFibGVOYW1lOiB0YWJsZU5hbWUgfHwgbW9kZWxRdWVyeS5nZXRUYWJsZVJlZmVyZW5jZUZvckpvaW4oLi4ucGF0aCksXG4gICAgICAgICAgdHVwbGVzXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2hlcmVWYWx1ZSkgJiYgd2hlcmVWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkgc3FsICs9IFwiIEFORCBcIlxuICAgICAgICBzcWwgKz0gXCIxPTBcIlxuICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHdoZXJlVmFsdWUpKSB7XG4gICAgICAgIGlmICghcmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHJlbGF0aW9uc2hpcCBcIiR7d2hlcmVLZXl9XCIgZm9yICR7bW9kZWxDbGFzcy5uYW1lfWApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXJnZXRNb2RlbENsYXNzID0gcmVsYXRpb25zaGlwLmdldFRhcmdldE1vZGVsQ2xhc3MoKVxuXG4gICAgICAgIGlmICghdGFyZ2V0TW9kZWxDbGFzcykgdGhyb3cgbmV3IEVycm9yKGBSZWxhdGlvbnNoaXAgXCIke3doZXJlS2V5fVwiIGZvciAke21vZGVsQ2xhc3MubmFtZX0gaGFzIG5vIHRhcmdldCBtb2RlbCBjbGFzc2ApXG5cbiAgICAgICAgY29uc3QgbmVzdGVkSGFzaCA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHlwZSB7V2hlcmVIYXNofSAqLyAod2hlcmVWYWx1ZSlcbiAgICAgICAgY29uc3QgbmVzdGVkUGF0aCA9IHBhdGguY29uY2F0KFt3aGVyZUtleV0pXG4gICAgICAgIGNvbnN0IG5lc3RlZFRhYmxlTmFtZSA9IG1vZGVsUXVlcnkuZ2V0VGFibGVSZWZlcmVuY2VGb3JKb2luKC4uLm5lc3RlZFBhdGgpXG5cbiAgICAgICAgc3FsICs9IHRoaXMuX3doZXJlU1FMRnJvbUhhc2gobmVzdGVkSGFzaCwgdGFyZ2V0TW9kZWxDbGFzcywgbmVzdGVkUGF0aCwgbmVzdGVkVGFibGVOYW1lLCBpbmRleClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHNxbCArPSBcIiBBTkQgXCJcblxuICAgICAgICBjb25zdCBjb2x1bW5OYW1lID0gdGhpcy5fcmVzb2x2ZUNvbHVtbk5hbWUobW9kZWxDbGFzcywgd2hlcmVLZXkpXG5cbiAgICAgICAgaWYgKCFjb2x1bW5OYW1lKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gYXR0cmlidXRlIFwiJHt3aGVyZUtleX1cIiBmb3IgJHttb2RlbENsYXNzLm5hbWV9YClcblxuICAgICAgICBjb25zdCBjb2x1bW5UeXBlID0gbW9kZWxDbGFzcy5nZXRDb2x1bW5UeXBlQnlOYW1lKGNvbHVtbk5hbWUpXG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdGhpcy5fbm9ybWFsaXplU3FsaXRlQm9vbGVhblZhbHVlKHtcbiAgICAgICAgICBjb2x1bW5OYW1lLFxuICAgICAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICAgICAgdmFsdWU6IHdoZXJlVmFsdWVcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgdHlwZWRWYWx1ZSA9IHRoaXMuX25vcm1hbGl6ZVZhbHVlRm9yQ29sdW1uVHlwZSh7XG4gICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICBtb2RlbENsYXNzLFxuICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVkVmFsdWVcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAodHlwZWRWYWx1ZSA9PT0gTk9fTUFUQ0gpIHtcbiAgICAgICAgICBzcWwgKz0gXCIxPTBcIlxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNvbHVtblNxbCA9IGAke29wdGlvbnMucXVvdGVDb2x1bW5OYW1lKGNvbHVtbk5hbWUpfWBcblxuICAgICAgICBpZiAodGFibGVOYW1lKSB7XG4gICAgICAgICAgY29sdW1uU3FsID0gYCR7b3B0aW9ucy5xdW90ZVRhYmxlTmFtZSh0YWJsZU5hbWUpfS4ke2NvbHVtblNxbH1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkcml2ZXJUeXBlID0gdGhpcy5nZXRRdWVyeSgpLmRyaXZlci5nZXRUeXBlKClcblxuICAgICAgICBpZiAoZHJpdmVyVHlwZSA9PSBcIm1zc3FsXCIgJiYgdHlwZW9mIHdoZXJlVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgY29sdW1uVHlwZT8udG9Mb3dlckNhc2UoKSA9PSBcInRleHRcIikge1xuICAgICAgICAgIGNvbHVtblNxbCA9IGBDQVNUKCR7Y29sdW1uU3FsfSBBUyBOVkFSQ0hBUihNQVgpKWBcbiAgICAgICAgfVxuXG4gICAgICAgIHNxbCArPSBjb2x1bW5TcWxcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlZFZhbHVlKSkge1xuICAgICAgICAgIHNxbCArPSBgIElOICgke3R5cGVkVmFsdWUubWFwKCh2YWx1ZSkgPT4gb3B0aW9ucy5xdW90ZSh2YWx1ZSkpLmpvaW4oXCIsIFwiKX0pYFxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVkVmFsdWUgPT09IG51bGwpIHtcbiAgICAgICAgICBzcWwgKz0gXCIgSVMgTlVMTFwiXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3FsICs9IGAgPSAke29wdGlvbnMucXVvdGUodHlwZWRWYWx1ZSl9YFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluZGV4KytcbiAgICB9XG5cbiAgICByZXR1cm4gc3FsXG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-not.d.ts","sourceRoot":"","sources":["../../../../src/database/query/where-not.js"],"names":[],"mappings":"AAIA;IACE
|
|
1
|
+
{"version":3,"file":"where-not.d.ts","sourceRoot":"","sources":["../../../../src/database/query/where-not.js"],"names":[],"mappings":"AAIA;IACE;;;OAGG;IACH,mBAFW,OAAO,iBAAiB,EAAE,OAAO,EAM3C;IAFC,iBAAkB;IAClB,oCAA6B;CAUhC;sBApBqB,iBAAiB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import WhereBase from "./where-base.js";
|
|
3
3
|
export default class VelociousDatabaseQueryWhereNot extends WhereBase {
|
|
4
4
|
/**
|
|
5
|
+
* Runs constructor.
|
|
5
6
|
* @param {import("./where-base.js").default} where - Where clause.
|
|
6
7
|
*/
|
|
7
8
|
constructor(where) {
|
|
@@ -10,10 +11,11 @@ export default class VelociousDatabaseQueryWhereNot extends WhereBase {
|
|
|
10
11
|
this.query = where.getQuery();
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
14
|
+
* Runs to sql.
|
|
13
15
|
* @returns {string} - SQL string.
|
|
14
16
|
*/
|
|
15
17
|
toSql() {
|
|
16
18
|
return `NOT (${this.where.toSql()})`;
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtbm90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3F1ZXJ5L3doZXJlLW5vdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxTQUFTLE1BQU0saUJBQWlCLENBQUE7QUFFdkMsTUFBTSxDQUFDLE9BQU8sT0FBTyw4QkFBK0IsU0FBUSxTQUFTO0lBQ25FOzs7T0FHRztJQUNILFlBQVksS0FBSztRQUNmLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUs7UUFDSCxPQUFPLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFBO0lBQ3RDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgV2hlcmVCYXNlIGZyb20gXCIuL3doZXJlLWJhc2UuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5V2hlcmVOb3QgZXh0ZW5kcyBXaGVyZUJhc2Uge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3doZXJlLWJhc2UuanNcIikuZGVmYXVsdH0gd2hlcmUgLSBXaGVyZSBjbGF1c2UuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih3aGVyZSkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLndoZXJlID0gd2hlcmVcbiAgICB0aGlzLnF1ZXJ5ID0gd2hlcmUuZ2V0UXVlcnkoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdG8gc3FsLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICB0b1NxbCgpIHtcbiAgICByZXR1cm4gYE5PVCAoJHt0aGlzLndoZXJlLnRvU3FsKCl9KWBcbiAgfVxufVxuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"where-plain.d.ts","sourceRoot":"","sources":["../../../../src/database/query/where-plain.js"],"names":[],"mappings":"AAIA;IACE
|
|
1
|
+
{"version":3,"file":"where-plain.d.ts","sourceRoot":"","sources":["../../../../src/database/query/where-plain.js"],"names":[],"mappings":"AAIA;IACE;;;;OAIG;IACH,mBAHW,OAAO,YAAY,EAAE,OAAO,SAC5B,MAAM,EAMhB;IAFC,cAAkB;IAClB,oCAAkB;CAMrB;sBAjBqB,iBAAiB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import WhereBase from "./where-base.js";
|
|
3
3
|
export default class VelociousDatabaseQueryWhereHash extends WhereBase {
|
|
4
4
|
/**
|
|
5
|
+
* Runs constructor.
|
|
5
6
|
* @param {import("./index.js").default} query - Query instance.
|
|
6
7
|
* @param {string} plain - Plain.
|
|
7
8
|
*/
|
|
@@ -14,4 +15,4 @@ export default class VelociousDatabaseQueryWhereHash extends WhereBase {
|
|
|
14
15
|
return this.plain;
|
|
15
16
|
}
|
|
16
17
|
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtcGxhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcXVlcnkvd2hlcmUtcGxhaW4uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sU0FBUyxNQUFNLGlCQUFpQixDQUFBO0FBRXZDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sK0JBQWdDLFNBQVEsU0FBUztJQUNwRTs7OztPQUlHO0lBQ0gsWUFBWSxLQUFLLEVBQUUsS0FBSztRQUN0QixLQUFLLEVBQUUsQ0FBQTtRQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ25CLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgV2hlcmVCYXNlIGZyb20gXCIuL3doZXJlLWJhc2UuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVF1ZXJ5V2hlcmVIYXNoIGV4dGVuZHMgV2hlcmVCYXNlIHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBxdWVyeSAtIFF1ZXJ5IGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGxhaW4gLSBQbGFpbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHF1ZXJ5LCBwbGFpbikge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLnBsYWluID0gcGxhaW5cbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnlcbiAgfVxuXG4gIHRvU3FsKCkge1xuICAgIHJldHVybiB0aGlzLnBsYWluXG4gIH1cbn1cbiJdfQ==
|