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,24 +1,28 @@
|
|
|
1
1
|
export default class Cookie {
|
|
2
2
|
/**
|
|
3
|
+
* Runs parse header.
|
|
3
4
|
* @param {string | undefined | null} headerValue - Cookie header.
|
|
4
5
|
* @param {string | undefined} secret - Encryption secret.
|
|
5
6
|
* @returns {Cookie[]} - Cookie list.
|
|
6
7
|
*/
|
|
7
8
|
static parseHeader(headerValue: string | undefined | null, secret: string | undefined): Cookie[];
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
+
* Runs encrypt value.
|
|
11
|
+
* @param {?} value - Value to encrypt.
|
|
10
12
|
* @param {string} secret - Encryption secret.
|
|
11
13
|
* @returns {string} - Encrypted value.
|
|
12
14
|
*/
|
|
13
15
|
static encryptValue(value: unknown, secret: string): string;
|
|
14
16
|
/**
|
|
17
|
+
* Runs decrypt value.
|
|
15
18
|
* @param {string} value - Encrypted value.
|
|
16
19
|
* @param {string} secret - Encryption secret.
|
|
17
20
|
* @returns {string} - Decrypted value.
|
|
18
21
|
*/
|
|
19
22
|
static decryptValue(value: string, secret: string): string;
|
|
20
23
|
/**
|
|
21
|
-
*
|
|
24
|
+
* Runs serialize encrypted value.
|
|
25
|
+
* @param {?} value - Value to serialize.
|
|
22
26
|
* @returns {{payload: string, type: string}} - Serialized payload.
|
|
23
27
|
*/
|
|
24
28
|
static _serializeEncryptedValue(value: unknown): {
|
|
@@ -26,27 +30,32 @@ export default class Cookie {
|
|
|
26
30
|
type: string;
|
|
27
31
|
};
|
|
28
32
|
/**
|
|
33
|
+
* Runs deserialize encrypted value.
|
|
29
34
|
* @param {string} type - Serialized type.
|
|
30
35
|
* @param {string} payload - Payload.
|
|
31
36
|
* @returns {string} - Deserialized value.
|
|
32
37
|
*/
|
|
33
38
|
static _deserializeEncryptedValue(type: string, payload: string): string;
|
|
34
39
|
/**
|
|
40
|
+
* Runs derive key.
|
|
35
41
|
* @param {string} secret - Secret.
|
|
36
42
|
* @returns {Buffer} - Key.
|
|
37
43
|
*/
|
|
38
44
|
static _deriveKey(secret: string): Buffer;
|
|
39
45
|
/**
|
|
46
|
+
* Runs to base64 url.
|
|
40
47
|
* @param {Buffer} buffer - Buffer.
|
|
41
48
|
* @returns {string} - Base64 URL encoded string.
|
|
42
49
|
*/
|
|
43
50
|
static _toBase64Url(buffer: Buffer): string;
|
|
44
51
|
/**
|
|
52
|
+
* Runs from base64 url.
|
|
45
53
|
* @param {string} value - Base64 URL encoded string.
|
|
46
54
|
* @returns {Buffer} - Buffer.
|
|
47
55
|
*/
|
|
48
56
|
static _fromBase64Url(value: string): Buffer;
|
|
49
57
|
/**
|
|
58
|
+
* CookieOptions type.
|
|
50
59
|
* @typedef {object} CookieOptions
|
|
51
60
|
* @property {string} [domain] - Domain.
|
|
52
61
|
* @property {Date} [expires] - Expires date.
|
|
@@ -57,6 +66,7 @@ export default class Cookie {
|
|
|
57
66
|
* @property {"Lax" | "Strict" | "None"} [sameSite] - SameSite value.
|
|
58
67
|
*/
|
|
59
68
|
/**
|
|
69
|
+
* Runs constructor.
|
|
60
70
|
* @param {object} args - Options object.
|
|
61
71
|
* @param {string} args.name - Cookie name.
|
|
62
72
|
* @param {string | undefined | null} args.value - Cookie value.
|
|
@@ -137,17 +147,35 @@ export default class Cookie {
|
|
|
137
147
|
};
|
|
138
148
|
_encrypted: boolean;
|
|
139
149
|
_error: Error | undefined;
|
|
140
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Runs name.
|
|
152
|
+
* @returns {string} - Cookie name.
|
|
153
|
+
*/
|
|
141
154
|
name(): string;
|
|
142
|
-
/**
|
|
155
|
+
/**
|
|
156
|
+
* Runs value.
|
|
157
|
+
* @returns {string} - Cookie value (decrypted when available).
|
|
158
|
+
*/
|
|
143
159
|
value(): string;
|
|
144
|
-
/**
|
|
160
|
+
/**
|
|
161
|
+
* Runs raw value.
|
|
162
|
+
* @returns {string} - Raw cookie value.
|
|
163
|
+
*/
|
|
145
164
|
rawValue(): string;
|
|
146
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* Runs is encrypted.
|
|
167
|
+
* @returns {boolean} - Whether cookie is encrypted.
|
|
168
|
+
*/
|
|
147
169
|
isEncrypted(): boolean;
|
|
148
|
-
/**
|
|
170
|
+
/**
|
|
171
|
+
* Runs error.
|
|
172
|
+
* @returns {Error | undefined} - Decryption error.
|
|
173
|
+
*/
|
|
149
174
|
error(): Error | undefined;
|
|
150
|
-
/**
|
|
175
|
+
/**
|
|
176
|
+
* Runs to header.
|
|
177
|
+
* @returns {string} - Set-Cookie header value.
|
|
178
|
+
*/
|
|
151
179
|
toHeader(): string;
|
|
152
180
|
}
|
|
153
181
|
//# sourceMappingURL=cookie.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../../src/http-server/cookie.js"],"names":[],"mappings":"AAIA;
|
|
1
|
+
{"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../../src/http-server/cookie.js"],"names":[],"mappings":"AAIA;IAmFE;;;;;OAKG;IACH,gCAJW,MAAM,GAAG,SAAS,GAAG,IAAI,UACzB,MAAM,GAAG,SAAS,GAChB,MAAM,EAAE,CAgCpB;IAED;;;;;OAKG;IACH,2BAJW,OAAC,UACD,MAAM,GACJ,MAAM,CAalB;IAED;;;;;OAKG;IACH,2BAJW,MAAM,UACN,MAAM,GACJ,MAAM,CAwBlB;IAED;;;;OAIG;IACH,uCAHW,OAAC,GACC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAiB3C;IAED;;;;;OAKG;IACH,wCAJW,MAAM,WACN,MAAM,GACJ,MAAM,CAalB;IAED;;;;OAIG;IACH,0BAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,6BAHW,MAAM,GACJ,MAAM,CAOlB;IA9OD;;;;;;;;;;OAUG;IAEH;;;;;;;;;OASG;IACH,kEAPG;QAAqB,IAAI,EAAjB,MAAM;QAC0B,KAAK,EAArC,MAAM,GAAG,SAAS,GAAG,IAAI;QACQ,QAAQ,GAAzC,MAAM,GAAG,SAAS,GAAG,IAAI;QACJ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QACb,SAAS;QACC,KAAK,GAA9B,KAAK,GAAG,SAAS;KAC3B,EAQA;IANC,cAAiB;IACjB,eAAyB;IACzB,kBAAwC;IACxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAA6B;IAC7B,oBAA2B;IAC3B,0BAAmB;IAGrB;;;OAGG;IACH,QAFa,MAAM,CAES;IAE5B;;;OAGG;IACH,SAFa,MAAM,CAEyB;IAE5C;;;OAGG;IACH,YAFa,MAAM,CAE+B;IAElD;;;OAGG;IACH,eAFa,OAAO,CAE6B;IAEjD;;;OAGG;IACH,SAFa,KAAK,GAAG,SAAS,CAEA;IAE9B;;;OAGG;IACH,YAFa,MAAM,CAiBlB;CA+JF"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import crypto from "crypto";
|
|
3
3
|
export default class Cookie {
|
|
4
4
|
/**
|
|
5
|
+
* CookieOptions type.
|
|
5
6
|
* @typedef {object} CookieOptions
|
|
6
7
|
* @property {string} [domain] - Domain.
|
|
7
8
|
* @property {Date} [expires] - Expires date.
|
|
@@ -12,6 +13,7 @@ export default class Cookie {
|
|
|
12
13
|
* @property {"Lax" | "Strict" | "None"} [sameSite] - SameSite value.
|
|
13
14
|
*/
|
|
14
15
|
/**
|
|
16
|
+
* Runs constructor.
|
|
15
17
|
* @param {object} args - Options object.
|
|
16
18
|
* @param {string} args.name - Cookie name.
|
|
17
19
|
* @param {string | undefined | null} args.value - Cookie value.
|
|
@@ -28,17 +30,35 @@ export default class Cookie {
|
|
|
28
30
|
this._encrypted = encrypted;
|
|
29
31
|
this._error = error;
|
|
30
32
|
}
|
|
31
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Runs name.
|
|
35
|
+
* @returns {string} - Cookie name.
|
|
36
|
+
*/
|
|
32
37
|
name() { return this._name; }
|
|
33
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Runs value.
|
|
40
|
+
* @returns {string} - Cookie value (decrypted when available).
|
|
41
|
+
*/
|
|
34
42
|
value() { return String(this._value ?? ""); }
|
|
35
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Runs raw value.
|
|
45
|
+
* @returns {string} - Raw cookie value.
|
|
46
|
+
*/
|
|
36
47
|
rawValue() { return String(this._rawValue ?? ""); }
|
|
37
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Runs is encrypted.
|
|
50
|
+
* @returns {boolean} - Whether cookie is encrypted.
|
|
51
|
+
*/
|
|
38
52
|
isEncrypted() { return Boolean(this._encrypted); }
|
|
39
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Runs error.
|
|
55
|
+
* @returns {Error | undefined} - Decryption error.
|
|
56
|
+
*/
|
|
40
57
|
error() { return this._error; }
|
|
41
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Runs to header.
|
|
60
|
+
* @returns {string} - Set-Cookie header value.
|
|
61
|
+
*/
|
|
42
62
|
toHeader() {
|
|
43
63
|
const parts = [];
|
|
44
64
|
const value = encodeURIComponent(this.rawValue());
|
|
@@ -60,6 +80,7 @@ export default class Cookie {
|
|
|
60
80
|
return parts.join("; ");
|
|
61
81
|
}
|
|
62
82
|
/**
|
|
83
|
+
* Runs parse header.
|
|
63
84
|
* @param {string | undefined | null} headerValue - Cookie header.
|
|
64
85
|
* @param {string | undefined} secret - Encryption secret.
|
|
65
86
|
* @returns {Cookie[]} - Cookie list.
|
|
@@ -94,7 +115,8 @@ export default class Cookie {
|
|
|
94
115
|
});
|
|
95
116
|
}
|
|
96
117
|
/**
|
|
97
|
-
*
|
|
118
|
+
* Runs encrypt value.
|
|
119
|
+
* @param {?} value - Value to encrypt.
|
|
98
120
|
* @param {string} secret - Encryption secret.
|
|
99
121
|
* @returns {string} - Encrypted value.
|
|
100
122
|
*/
|
|
@@ -110,6 +132,7 @@ export default class Cookie {
|
|
|
110
132
|
return `enc:v1:${type}.${this._toBase64Url(iv)}.${this._toBase64Url(authTag)}.${this._toBase64Url(encrypted)}`;
|
|
111
133
|
}
|
|
112
134
|
/**
|
|
135
|
+
* Runs decrypt value.
|
|
113
136
|
* @param {string} value - Encrypted value.
|
|
114
137
|
* @param {string} secret - Encryption secret.
|
|
115
138
|
* @returns {string} - Decrypted value.
|
|
@@ -134,7 +157,8 @@ export default class Cookie {
|
|
|
134
157
|
return this._deserializeEncryptedValue(type, decrypted);
|
|
135
158
|
}
|
|
136
159
|
/**
|
|
137
|
-
*
|
|
160
|
+
* Runs serialize encrypted value.
|
|
161
|
+
* @param {?} value - Value to serialize.
|
|
138
162
|
* @returns {{payload: string, type: string}} - Serialized payload.
|
|
139
163
|
*/
|
|
140
164
|
static _serializeEncryptedValue(value) {
|
|
@@ -154,6 +178,7 @@ export default class Cookie {
|
|
|
154
178
|
}
|
|
155
179
|
}
|
|
156
180
|
/**
|
|
181
|
+
* Runs deserialize encrypted value.
|
|
157
182
|
* @param {string} type - Serialized type.
|
|
158
183
|
* @param {string} payload - Payload.
|
|
159
184
|
* @returns {string} - Deserialized value.
|
|
@@ -171,6 +196,7 @@ export default class Cookie {
|
|
|
171
196
|
return payload;
|
|
172
197
|
}
|
|
173
198
|
/**
|
|
199
|
+
* Runs derive key.
|
|
174
200
|
* @param {string} secret - Secret.
|
|
175
201
|
* @returns {Buffer} - Key.
|
|
176
202
|
*/
|
|
@@ -178,6 +204,7 @@ export default class Cookie {
|
|
|
178
204
|
return crypto.createHash("sha256").update(secret).digest();
|
|
179
205
|
}
|
|
180
206
|
/**
|
|
207
|
+
* Runs to base64 url.
|
|
181
208
|
* @param {Buffer} buffer - Buffer.
|
|
182
209
|
* @returns {string} - Base64 URL encoded string.
|
|
183
210
|
*/
|
|
@@ -185,6 +212,7 @@ export default class Cookie {
|
|
|
185
212
|
return buffer.toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
186
213
|
}
|
|
187
214
|
/**
|
|
215
|
+
* Runs from base64 url.
|
|
188
216
|
* @param {string} value - Base64 URL encoded string.
|
|
189
217
|
* @returns {Buffer} - Buffer.
|
|
190
218
|
*/
|
|
@@ -194,4 +222,4 @@ export default class Cookie {
|
|
|
194
222
|
return Buffer.from(`${normalized}${padding}`, "base64");
|
|
195
223
|
}
|
|
196
224
|
}
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2h0dHAtc2VydmVyL2Nvb2tpZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBRTNCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sTUFBTTtJQUN6Qjs7Ozs7Ozs7O09BU0c7SUFFSDs7Ozs7Ozs7T0FRRztJQUNILFlBQVksRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxHQUFHLEtBQUssRUFBRSxLQUFLLEVBQUM7UUFDcEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLElBQUksRUFBRSxDQUFBO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFBO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO1FBQzNCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFBO0lBQ3JCLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUM7SUFFNUIsbUVBQW1FO0lBQ25FLEtBQUssS0FBSyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUU1Qyw0Q0FBNEM7SUFDNUMsUUFBUSxLQUFLLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRWxELHdEQUF3RDtJQUN4RCxXQUFXLEtBQUssT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVqRCx1REFBdUQ7SUFDdkQsS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUM7SUFFOUIsbURBQW1EO0lBQ25ELFFBQVE7UUFDTixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDaEIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFFakQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUVwQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ2hFLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLFlBQVksSUFBSTtZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdkcsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVE7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQzNGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBRTVFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE1BQU07UUFDcEMsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUUzQixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDcEYsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvQixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUE7WUFFcEIsSUFBSSxDQUFDO2dCQUNILEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN0QyxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLHFDQUFxQztZQUN2QyxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDWixPQUFPLElBQUksTUFBTSxDQUFDLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxFQUFDLENBQUMsQ0FBQTtnQkFDekgsQ0FBQztnQkFFRCxJQUFJLENBQUM7b0JBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7b0JBQ3ZELE9BQU8sSUFBSSxNQUFNLENBQUMsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFBO2dCQUNwRixDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtvQkFDOUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQTtnQkFDN0YsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUNuRCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUMvQixJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtRQUUzRCxNQUFNLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM1RCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzVELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ2pGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUVuQyxPQUFPLFVBQVUsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUE7SUFDaEgsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNO1FBQy9CLElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFBO1FBRTlDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzdDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXJFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFDcEQsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzdDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbkMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU1QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUUzRixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDekQsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLO1FBQ25DLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQTtRQUNqRSxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTyxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBQyxDQUFBO1FBRXhELElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7WUFFckMsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sRUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQTtZQUM1QyxDQUFDO1lBRUQsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFDLENBQUE7UUFDN0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sRUFBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsQ0FBQTtRQUM1QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLE9BQU87UUFDN0MsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQ2xDLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDckUsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxPQUFPLE9BQU8sQ0FBQTtZQUNoQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU07UUFDdEIsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNO1FBQ3hCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDOUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTFGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsR0FBRyxPQUFPLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUN6RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29va2llIHtcbiAgLyoqXG4gICAqIEB0eXBlZGVmIHtvYmplY3R9IENvb2tpZU9wdGlvbnNcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IFtkb21haW5dIC0gRG9tYWluLlxuICAgKiBAcHJvcGVydHkge0RhdGV9IFtleHBpcmVzXSAtIEV4cGlyZXMgZGF0ZS5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBbaHR0cE9ubHldIC0gSHR0cE9ubHkgZmxhZy5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhBZ2VdIC0gTWF4LUFnZSBpbiBzZWNvbmRzLlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gW3BhdGhdIC0gUGF0aC5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBbc2VjdXJlXSAtIFNlY3VyZSBmbGFnLlxuICAgKiBAcHJvcGVydHkge1wiTGF4XCIgfCBcIlN0cmljdFwiIHwgXCJOb25lXCJ9IFtzYW1lU2l0ZV0gLSBTYW1lU2l0ZSB2YWx1ZS5cbiAgICovXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm5hbWUgLSBDb29raWUgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsfSBhcmdzLnZhbHVlIC0gQ29va2llIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZCB8IG51bGx9IFthcmdzLnJhd1ZhbHVlXSAtIFJhdyBjb29raWUgdmFsdWUuXG4gICAqIEBwYXJhbSB7Q29va2llT3B0aW9uc30gW2FyZ3Mub3B0aW9uc10gLSBDb29raWUgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5lbmNyeXB0ZWRdIC0gV2hldGhlciBjb29raWUgaXMgZW5jcnlwdGVkLlxuICAgKiBAcGFyYW0ge0Vycm9yIHwgdW5kZWZpbmVkfSBbYXJncy5lcnJvcl0gLSBEZWNyeXB0aW9uIGVycm9yLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe25hbWUsIHZhbHVlLCByYXdWYWx1ZSwgb3B0aW9ucywgZW5jcnlwdGVkID0gZmFsc2UsIGVycm9yfSkge1xuICAgIHRoaXMuX25hbWUgPSBuYW1lXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZSA/PyBcIlwiXG4gICAgdGhpcy5fcmF3VmFsdWUgPSByYXdWYWx1ZSA/PyB0aGlzLl92YWx1ZVxuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gICAgdGhpcy5fZW5jcnlwdGVkID0gZW5jcnlwdGVkXG4gICAgdGhpcy5fZXJyb3IgPSBlcnJvclxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9IC0gQ29va2llIG5hbWUuICovXG4gIG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gLSBDb29raWUgdmFsdWUgKGRlY3J5cHRlZCB3aGVuIGF2YWlsYWJsZSkuICovXG4gIHZhbHVlKCkgeyByZXR1cm4gU3RyaW5nKHRoaXMuX3ZhbHVlID8/IFwiXCIpIH1cblxuICAvKiogQHJldHVybnMge3N0cmluZ30gLSBSYXcgY29va2llIHZhbHVlLiAqL1xuICByYXdWYWx1ZSgpIHsgcmV0dXJuIFN0cmluZyh0aGlzLl9yYXdWYWx1ZSA/PyBcIlwiKSB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgY29va2llIGlzIGVuY3J5cHRlZC4gKi9cbiAgaXNFbmNyeXB0ZWQoKSB7IHJldHVybiBCb29sZWFuKHRoaXMuX2VuY3J5cHRlZCkgfVxuXG4gIC8qKiBAcmV0dXJucyB7RXJyb3IgfCB1bmRlZmluZWR9IC0gRGVjcnlwdGlvbiBlcnJvci4gKi9cbiAgZXJyb3IoKSB7IHJldHVybiB0aGlzLl9lcnJvciB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmd9IC0gU2V0LUNvb2tpZSBoZWFkZXIgdmFsdWUuICovXG4gIHRvSGVhZGVyKCkge1xuICAgIGNvbnN0IHBhcnRzID0gW11cbiAgICBjb25zdCB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnJhd1ZhbHVlKCkpXG5cbiAgICBwYXJ0cy5wdXNoKGAke3RoaXMuX25hbWV9PSR7dmFsdWV9YClcblxuICAgIGlmICh0aGlzLl9vcHRpb25zLmRvbWFpbikgcGFydHMucHVzaChgRG9tYWluPSR7dGhpcy5fb3B0aW9ucy5kb21haW59YClcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5wYXRoKSBwYXJ0cy5wdXNoKGBQYXRoPSR7dGhpcy5fb3B0aW9ucy5wYXRofWApXG4gICAgaWYgKHRoaXMuX29wdGlvbnMuZXhwaXJlcyBpbnN0YW5jZW9mIERhdGUpIHBhcnRzLnB1c2goYEV4cGlyZXM9JHt0aGlzLl9vcHRpb25zLmV4cGlyZXMudG9VVENTdHJpbmcoKX1gKVxuICAgIGlmICh0eXBlb2YgdGhpcy5fb3B0aW9ucy5tYXhBZ2UgPT09IFwibnVtYmVyXCIpIHBhcnRzLnB1c2goYE1heC1BZ2U9JHt0aGlzLl9vcHRpb25zLm1heEFnZX1gKVxuICAgIGlmICh0aGlzLl9vcHRpb25zLmh0dHBPbmx5KSBwYXJ0cy5wdXNoKFwiSHR0cE9ubHlcIilcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5zZWN1cmUpIHBhcnRzLnB1c2goXCJTZWN1cmVcIilcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5zYW1lU2l0ZSkgcGFydHMucHVzaChgU2FtZVNpdGU9JHt0aGlzLl9vcHRpb25zLnNhbWVTaXRlfWApXG5cbiAgICByZXR1cm4gcGFydHMuam9pbihcIjsgXCIpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsfSBoZWFkZXJWYWx1ZSAtIENvb2tpZSBoZWFkZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBzZWNyZXQgLSBFbmNyeXB0aW9uIHNlY3JldC5cbiAgICogQHJldHVybnMge0Nvb2tpZVtdfSAtIENvb2tpZSBsaXN0LlxuICAgKi9cbiAgc3RhdGljIHBhcnNlSGVhZGVyKGhlYWRlclZhbHVlLCBzZWNyZXQpIHtcbiAgICBpZiAoIWhlYWRlclZhbHVlKSByZXR1cm4gW11cblxuICAgIHJldHVybiBoZWFkZXJWYWx1ZS5zcGxpdChcIjtcIikubWFwKChwYWlyKSA9PiBwYWlyLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pLm1hcCgocGFpcikgPT4ge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gcGFpci5zcGxpdChcIj1cIilcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzdC5qb2luKFwiPVwiKVxuICAgICAgbGV0IHZhbHVlID0gcmF3VmFsdWVcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQocmF3VmFsdWUpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gVXNlIHJhdyB2YWx1ZSB3aGVuIGRlY29kaW5nIGZhaWxzLlxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChcImVuYzp2MTpcIikpIHtcbiAgICAgICAgaWYgKCFzZWNyZXQpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IENvb2tpZSh7bmFtZSwgdmFsdWU6IFwiXCIsIHJhd1ZhbHVlOiB2YWx1ZSwgZW5jcnlwdGVkOiB0cnVlLCBlcnJvcjogbmV3IEVycm9yKFwiTm8gY29va2llIHNlY3JldCBjb25maWd1cmVkXCIpfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGVjcnlwdGVkVmFsdWUgPSB0aGlzLmRlY3J5cHRWYWx1ZSh2YWx1ZSwgc2VjcmV0KVxuICAgICAgICAgIHJldHVybiBuZXcgQ29va2llKHtuYW1lLCB2YWx1ZTogZGVjcnlwdGVkVmFsdWUsIHJhd1ZhbHVlOiB2YWx1ZSwgZW5jcnlwdGVkOiB0cnVlfSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBlbnN1cmVkRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSlcbiAgICAgICAgICByZXR1cm4gbmV3IENvb2tpZSh7bmFtZSwgdmFsdWU6IFwiXCIsIHJhd1ZhbHVlOiB2YWx1ZSwgZW5jcnlwdGVkOiB0cnVlLCBlcnJvcjogZW5zdXJlZEVycm9yfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IENvb2tpZSh7bmFtZSwgdmFsdWUsIHJhd1ZhbHVlOiB2YWx1ZX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVmFsdWUgdG8gZW5jcnlwdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3JldCAtIEVuY3J5cHRpb24gc2VjcmV0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIEVuY3J5cHRlZCB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyBlbmNyeXB0VmFsdWUodmFsdWUsIHNlY3JldCkge1xuICAgIGlmICghc2VjcmV0KSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb29raWUgc2VjcmV0IGNvbmZpZ3VyZWRcIilcblxuICAgIGNvbnN0IHtwYXlsb2FkLCB0eXBlfSA9IHRoaXMuX3NlcmlhbGl6ZUVuY3J5cHRlZFZhbHVlKHZhbHVlKVxuICAgIGNvbnN0IGl2ID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDEyKVxuICAgIGNvbnN0IGtleSA9IHRoaXMuX2Rlcml2ZUtleShzZWNyZXQpXG4gICAgY29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KFwiYWVzLTI1Ni1nY21cIiwga2V5LCBpdilcbiAgICBjb25zdCBlbmNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtjaXBoZXIudXBkYXRlKHBheWxvYWQsIFwidXRmOFwiKSwgY2lwaGVyLmZpbmFsKCldKVxuICAgIGNvbnN0IGF1dGhUYWcgPSBjaXBoZXIuZ2V0QXV0aFRhZygpXG5cbiAgICByZXR1cm4gYGVuYzp2MToke3R5cGV9LiR7dGhpcy5fdG9CYXNlNjRVcmwoaXYpfS4ke3RoaXMuX3RvQmFzZTY0VXJsKGF1dGhUYWcpfS4ke3RoaXMuX3RvQmFzZTY0VXJsKGVuY3J5cHRlZCl9YFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIEVuY3J5cHRlZCB2YWx1ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3JldCAtIEVuY3J5cHRpb24gc2VjcmV0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIERlY3J5cHRlZCB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyBkZWNyeXB0VmFsdWUodmFsdWUsIHNlY3JldCkge1xuICAgIGlmICghc2VjcmV0KSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb29raWUgc2VjcmV0IGNvbmZpZ3VyZWRcIilcbiAgICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoXCJlbmM6djE6XCIpKSByZXR1cm4gdmFsdWVcblxuICAgIGNvbnN0IHBheWxvYWQgPSB2YWx1ZS5zbGljZShcImVuYzp2MTpcIi5sZW5ndGgpXG4gICAgY29uc3QgW3R5cGUsIGl2RW5jb2RlZCwgdGFnRW5jb2RlZCwgZGF0YUVuY29kZWRdID0gcGF5bG9hZC5zcGxpdChcIi5cIilcblxuICAgIGlmICghdHlwZSB8fCAhaXZFbmNvZGVkIHx8ICF0YWdFbmNvZGVkIHx8ICFkYXRhRW5jb2RlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBlbmNyeXB0ZWQgY29va2llIGZvcm1hdFwiKVxuICAgIH1cblxuICAgIGNvbnN0IGl2ID0gdGhpcy5fZnJvbUJhc2U2NFVybChpdkVuY29kZWQpXG4gICAgY29uc3QgYXV0aFRhZyA9IHRoaXMuX2Zyb21CYXNlNjRVcmwodGFnRW5jb2RlZClcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZnJvbUJhc2U2NFVybChkYXRhRW5jb2RlZClcbiAgICBjb25zdCBrZXkgPSB0aGlzLl9kZXJpdmVLZXkoc2VjcmV0KVxuICAgIGNvbnN0IGRlY2lwaGVyID0gY3J5cHRvLmNyZWF0ZURlY2lwaGVyaXYoXCJhZXMtMjU2LWdjbVwiLCBrZXksIGl2KVxuXG4gICAgZGVjaXBoZXIuc2V0QXV0aFRhZyhhdXRoVGFnKVxuXG4gICAgY29uc3QgZGVjcnlwdGVkID0gQnVmZmVyLmNvbmNhdChbZGVjaXBoZXIudXBkYXRlKGRhdGEpLCBkZWNpcGhlci5maW5hbCgpXSkudG9TdHJpbmcoXCJ1dGY4XCIpXG5cbiAgICByZXR1cm4gdGhpcy5fZGVzZXJpYWxpemVFbmNyeXB0ZWRWYWx1ZSh0eXBlLCBkZWNyeXB0ZWQpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZSAtIFZhbHVlIHRvIHNlcmlhbGl6ZS5cbiAgICogQHJldHVybnMge3twYXlsb2FkOiBzdHJpbmcsIHR5cGU6IHN0cmluZ319IC0gU2VyaWFsaXplZCBwYXlsb2FkLlxuICAgKi9cbiAgc3RhdGljIF9zZXJpYWxpemVFbmNyeXB0ZWRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHJldHVybiB7cGF5bG9hZDogdmFsdWUsIHR5cGU6IFwic1wifVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4ge3BheWxvYWQ6IFwiXCIsIHR5cGU6IFwic1wifVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcblxuICAgICAgaWYgKHBheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge3BheWxvYWQ6IFN0cmluZyh2YWx1ZSksIHR5cGU6IFwic1wifVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge3BheWxvYWQsIHR5cGU6IFwialwifVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHtwYXlsb2FkOiBTdHJpbmcodmFsdWUpLCB0eXBlOiBcInNcIn1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgLSBTZXJpYWxpemVkIHR5cGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXlsb2FkIC0gUGF5bG9hZC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBEZXNlcmlhbGl6ZWQgdmFsdWUuXG4gICAqL1xuICBzdGF0aWMgX2Rlc2VyaWFsaXplRW5jcnlwdGVkVmFsdWUodHlwZSwgcGF5bG9hZCkge1xuICAgIGlmICh0eXBlID09PSBcImpcIikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZShwYXlsb2FkKVxuICAgICAgICByZXR1cm4gdHlwZW9mIHBhcnNlZCA9PT0gXCJzdHJpbmdcIiA/IHBhcnNlZCA6IEpTT04uc3RyaW5naWZ5KHBhcnNlZClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gcGF5bG9hZFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3JldCAtIFNlY3JldC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBLZXkuXG4gICAqL1xuICBzdGF0aWMgX2Rlcml2ZUtleShzZWNyZXQpIHtcbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHNlY3JldCkuZGlnZXN0KClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIC0gQnVmZmVyLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIEJhc2U2NCBVUkwgZW5jb2RlZCBzdHJpbmcuXG4gICAqL1xuICBzdGF0aWMgX3RvQmFzZTY0VXJsKGJ1ZmZlcikge1xuICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoXCJiYXNlNjRcIikucmVwbGFjZSgvXFwrL2csIFwiLVwiKS5yZXBsYWNlKC9cXC8vZywgXCJfXCIpLnJlcGxhY2UoLz0rJC9nLCBcIlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIEJhc2U2NCBVUkwgZW5jb2RlZCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gQnVmZmVyLlxuICAgKi9cbiAgc3RhdGljIF9mcm9tQmFzZTY0VXJsKHZhbHVlKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnJlcGxhY2UoLy0vZywgXCIrXCIpLnJlcGxhY2UoL18vZywgXCIvXCIpXG4gICAgY29uc3QgcGFkZGluZyA9IG5vcm1hbGl6ZWQubGVuZ3RoICUgNCA9PT0gMCA/IFwiXCIgOiBcIj1cIi5yZXBlYXQoNCAtIChub3JtYWxpemVkLmxlbmd0aCAlIDQpKVxuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGAke25vcm1hbGl6ZWR9JHtwYWRkaW5nfWAsIFwiYmFzZTY0XCIpXG4gIH1cbn1cbiJdfQ==
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2h0dHAtc2VydmVyL2Nvb2tpZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBRTNCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sTUFBTTtJQUN6Qjs7Ozs7Ozs7OztPQVVHO0lBRUg7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFBWSxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBQztRQUNwRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUE7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUE7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBRTVCOzs7T0FHRztJQUNILEtBQUssS0FBSyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUU1Qzs7O09BR0c7SUFDSCxRQUFRLEtBQUssT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFFbEQ7OztPQUdHO0lBQ0gsV0FBVyxLQUFLLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFF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LENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUM5RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSztRQUN6QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzlELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUUxRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLEdBQUcsT0FBTyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDekQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvb2tpZSB7XG4gIC8qKlxuICAgKiBDb29raWVPcHRpb25zIHR5cGUuXG4gICAqIEB0eXBlZGVmIHtvYmplY3R9IENvb2tpZU9wdGlvbnNcbiAgICogQHByb3BlcnR5IHtzdHJpbmd9IFtkb21haW5dIC0gRG9tYWluLlxuICAgKiBAcHJvcGVydHkge0RhdGV9IFtleHBpcmVzXSAtIEV4cGlyZXMgZGF0ZS5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBbaHR0cE9ubHldIC0gSHR0cE9ubHkgZmxhZy5cbiAgICogQHByb3BlcnR5IHtudW1iZXJ9IFttYXhBZ2VdIC0gTWF4LUFnZSBpbiBzZWNvbmRzLlxuICAgKiBAcHJvcGVydHkge3N0cmluZ30gW3BhdGhdIC0gUGF0aC5cbiAgICogQHByb3BlcnR5IHtib29sZWFufSBbc2VjdXJlXSAtIFNlY3VyZSBmbGFnLlxuICAgKiBAcHJvcGVydHkge1wiTGF4XCIgfCBcIlN0cmljdFwiIHwgXCJOb25lXCJ9IFtzYW1lU2l0ZV0gLSBTYW1lU2l0ZSB2YWx1ZS5cbiAgICovXG5cbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm5hbWUgLSBDb29raWUgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsfSBhcmdzLnZhbHVlIC0gQ29va2llIHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZCB8IG51bGx9IFthcmdzLnJhd1ZhbHVlXSAtIFJhdyBjb29raWUgdmFsdWUuXG4gICAqIEBwYXJhbSB7Q29va2llT3B0aW9uc30gW2FyZ3Mub3B0aW9uc10gLSBDb29raWUgb3B0aW9ucy5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5lbmNyeXB0ZWRdIC0gV2hldGhlciBjb29raWUgaXMgZW5jcnlwdGVkLlxuICAgKiBAcGFyYW0ge0Vycm9yIHwgdW5kZWZpbmVkfSBbYXJncy5lcnJvcl0gLSBEZWNyeXB0aW9uIGVycm9yLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe25hbWUsIHZhbHVlLCByYXdWYWx1ZSwgb3B0aW9ucywgZW5jcnlwdGVkID0gZmFsc2UsIGVycm9yfSkge1xuICAgIHRoaXMuX25hbWUgPSBuYW1lXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZSA/PyBcIlwiXG4gICAgdGhpcy5fcmF3VmFsdWUgPSByYXdWYWx1ZSA/PyB0aGlzLl92YWx1ZVxuICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gICAgdGhpcy5fZW5jcnlwdGVkID0gZW5jcnlwdGVkXG4gICAgdGhpcy5fZXJyb3IgPSBlcnJvclxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbmFtZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBDb29raWUgbmFtZS5cbiAgICovXG4gIG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lIH1cblxuICAvKipcbiAgICogUnVucyB2YWx1ZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBDb29raWUgdmFsdWUgKGRlY3J5cHRlZCB3aGVuIGF2YWlsYWJsZSkuXG4gICAqL1xuICB2YWx1ZSgpIHsgcmV0dXJuIFN0cmluZyh0aGlzLl92YWx1ZSA/PyBcIlwiKSB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcmF3IHZhbHVlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFJhdyBjb29raWUgdmFsdWUuXG4gICAqL1xuICByYXdWYWx1ZSgpIHsgcmV0dXJuIFN0cmluZyh0aGlzLl9yYXdWYWx1ZSA/PyBcIlwiKSB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgaXMgZW5jcnlwdGVkLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIGNvb2tpZSBpcyBlbmNyeXB0ZWQuXG4gICAqL1xuICBpc0VuY3J5cHRlZCgpIHsgcmV0dXJuIEJvb2xlYW4odGhpcy5fZW5jcnlwdGVkKSB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZXJyb3IuXG4gICAqIEByZXR1cm5zIHtFcnJvciB8IHVuZGVmaW5lZH0gLSBEZWNyeXB0aW9uIGVycm9yLlxuICAgKi9cbiAgZXJyb3IoKSB7IHJldHVybiB0aGlzLl9lcnJvciB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgdG8gaGVhZGVyLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNldC1Db29raWUgaGVhZGVyIHZhbHVlLlxuICAgKi9cbiAgdG9IZWFkZXIoKSB7XG4gICAgY29uc3QgcGFydHMgPSBbXVxuICAgIGNvbnN0IHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucmF3VmFsdWUoKSlcblxuICAgIHBhcnRzLnB1c2goYCR7dGhpcy5fbmFtZX09JHt2YWx1ZX1gKVxuXG4gICAgaWYgKHRoaXMuX29wdGlvbnMuZG9tYWluKSBwYXJ0cy5wdXNoKGBEb21haW49JHt0aGlzLl9vcHRpb25zLmRvbWFpbn1gKVxuICAgIGlmICh0aGlzLl9vcHRpb25zLnBhdGgpIHBhcnRzLnB1c2goYFBhdGg9JHt0aGlzLl9vcHRpb25zLnBhdGh9YClcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5leHBpcmVzIGluc3RhbmNlb2YgRGF0ZSkgcGFydHMucHVzaChgRXhwaXJlcz0ke3RoaXMuX29wdGlvbnMuZXhwaXJlcy50b1VUQ1N0cmluZygpfWApXG4gICAgaWYgKHR5cGVvZiB0aGlzLl9vcHRpb25zLm1heEFnZSA9PT0gXCJudW1iZXJcIikgcGFydHMucHVzaChgTWF4LUFnZT0ke3RoaXMuX29wdGlvbnMubWF4QWdlfWApXG4gICAgaWYgKHRoaXMuX29wdGlvbnMuaHR0cE9ubHkpIHBhcnRzLnB1c2goXCJIdHRwT25seVwiKVxuICAgIGlmICh0aGlzLl9vcHRpb25zLnNlY3VyZSkgcGFydHMucHVzaChcIlNlY3VyZVwiKVxuICAgIGlmICh0aGlzLl9vcHRpb25zLnNhbWVTaXRlKSBwYXJ0cy5wdXNoKGBTYW1lU2l0ZT0ke3RoaXMuX29wdGlvbnMuc2FtZVNpdGV9YClcblxuICAgIHJldHVybiBwYXJ0cy5qb2luKFwiOyBcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBhcnNlIGhlYWRlci5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsfSBoZWFkZXJWYWx1ZSAtIENvb2tpZSBoZWFkZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBzZWNyZXQgLSBFbmNyeXB0aW9uIHNlY3JldC5cbiAgICogQHJldHVybnMge0Nvb2tpZVtdfSAtIENvb2tpZSBsaXN0LlxuICAgKi9cbiAgc3RhdGljIHBhcnNlSGVhZGVyKGhlYWRlclZhbHVlLCBzZWNyZXQpIHtcbiAgICBpZiAoIWhlYWRlclZhbHVlKSByZXR1cm4gW11cblxuICAgIHJldHVybiBoZWFkZXJWYWx1ZS5zcGxpdChcIjtcIikubWFwKChwYWlyKSA9PiBwYWlyLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pLm1hcCgocGFpcikgPT4ge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gcGFpci5zcGxpdChcIj1cIilcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gcmVzdC5qb2luKFwiPVwiKVxuICAgICAgbGV0IHZhbHVlID0gcmF3VmFsdWVcblxuICAgICAgdHJ5IHtcbiAgICAgICAgdmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQocmF3VmFsdWUpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gVXNlIHJhdyB2YWx1ZSB3aGVuIGRlY29kaW5nIGZhaWxzLlxuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChcImVuYzp2MTpcIikpIHtcbiAgICAgICAgaWYgKCFzZWNyZXQpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IENvb2tpZSh7bmFtZSwgdmFsdWU6IFwiXCIsIHJhd1ZhbHVlOiB2YWx1ZSwgZW5jcnlwdGVkOiB0cnVlLCBlcnJvcjogbmV3IEVycm9yKFwiTm8gY29va2llIHNlY3JldCBjb25maWd1cmVkXCIpfSlcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGVjcnlwdGVkVmFsdWUgPSB0aGlzLmRlY3J5cHRWYWx1ZSh2YWx1ZSwgc2VjcmV0KVxuICAgICAgICAgIHJldHVybiBuZXcgQ29va2llKHtuYW1lLCB2YWx1ZTogZGVjcnlwdGVkVmFsdWUsIHJhd1ZhbHVlOiB2YWx1ZSwgZW5jcnlwdGVkOiB0cnVlfSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zdCBlbnN1cmVkRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSlcbiAgICAgICAgICByZXR1cm4gbmV3IENvb2tpZSh7bmFtZSwgdmFsdWU6IFwiXCIsIHJhd1ZhbHVlOiB2YWx1ZSwgZW5jcnlwdGVkOiB0cnVlLCBlcnJvcjogZW5zdXJlZEVycm9yfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IENvb2tpZSh7bmFtZSwgdmFsdWUsIHJhd1ZhbHVlOiB2YWx1ZX0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGVuY3J5cHQgdmFsdWUuXG4gICAqIEBwYXJhbSB7P30gdmFsdWUgLSBWYWx1ZSB0byBlbmNyeXB0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VjcmV0IC0gRW5jcnlwdGlvbiBzZWNyZXQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRW5jcnlwdGVkIHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIGVuY3J5cHRWYWx1ZSh2YWx1ZSwgc2VjcmV0KSB7XG4gICAgaWYgKCFzZWNyZXQpIHRocm93IG5ldyBFcnJvcihcIk5vIGNvb2tpZSBzZWNyZXQgY29uZmlndXJlZFwiKVxuXG4gICAgY29uc3Qge3BheWxvYWQsIHR5cGV9ID0gdGhpcy5fc2VyaWFsaXplRW5jcnlwdGVkVmFsdWUodmFsdWUpXG4gICAgY29uc3QgaXYgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTIpXG4gICAgY29uc3Qga2V5ID0gdGhpcy5fZGVyaXZlS2V5KHNlY3JldClcbiAgICBjb25zdCBjaXBoZXIgPSBjcnlwdG8uY3JlYXRlQ2lwaGVyaXYoXCJhZXMtMjU2LWdjbVwiLCBrZXksIGl2KVxuICAgIGNvbnN0IGVuY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2NpcGhlci51cGRhdGUocGF5bG9hZCwgXCJ1dGY4XCIpLCBjaXBoZXIuZmluYWwoKV0pXG4gICAgY29uc3QgYXV0aFRhZyA9IGNpcGhlci5nZXRBdXRoVGFnKClcblxuICAgIHJldHVybiBgZW5jOnYxOiR7dHlwZX0uJHt0aGlzLl90b0Jhc2U2NFVybChpdil9LiR7dGhpcy5fdG9CYXNlNjRVcmwoYXV0aFRhZyl9LiR7dGhpcy5fdG9CYXNlNjRVcmwoZW5jcnlwdGVkKX1gXG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZWNyeXB0IHZhbHVlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBFbmNyeXB0ZWQgdmFsdWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWNyZXQgLSBFbmNyeXB0aW9uIHNlY3JldC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBEZWNyeXB0ZWQgdmFsdWUuXG4gICAqL1xuICBzdGF0aWMgZGVjcnlwdFZhbHVlKHZhbHVlLCBzZWNyZXQpIHtcbiAgICBpZiAoIXNlY3JldCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gY29va2llIHNlY3JldCBjb25maWd1cmVkXCIpXG4gICAgaWYgKCF2YWx1ZS5zdGFydHNXaXRoKFwiZW5jOnYxOlwiKSkgcmV0dXJuIHZhbHVlXG5cbiAgICBjb25zdCBwYXlsb2FkID0gdmFsdWUuc2xpY2UoXCJlbmM6djE6XCIubGVuZ3RoKVxuICAgIGNvbnN0IFt0eXBlLCBpdkVuY29kZWQsIHRhZ0VuY29kZWQsIGRhdGFFbmNvZGVkXSA9IHBheWxvYWQuc3BsaXQoXCIuXCIpXG5cbiAgICBpZiAoIXR5cGUgfHwgIWl2RW5jb2RlZCB8fCAhdGFnRW5jb2RlZCB8fCAhZGF0YUVuY29kZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZW5jcnlwdGVkIGNvb2tpZSBmb3JtYXRcIilcbiAgICB9XG5cbiAgICBjb25zdCBpdiA9IHRoaXMuX2Zyb21CYXNlNjRVcmwoaXZFbmNvZGVkKVxuICAgIGNvbnN0IGF1dGhUYWcgPSB0aGlzLl9mcm9tQmFzZTY0VXJsKHRhZ0VuY29kZWQpXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2Zyb21CYXNlNjRVcmwoZGF0YUVuY29kZWQpXG4gICAgY29uc3Qga2V5ID0gdGhpcy5fZGVyaXZlS2V5KHNlY3JldClcbiAgICBjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KFwiYWVzLTI1Ni1nY21cIiwga2V5LCBpdilcblxuICAgIGRlY2lwaGVyLnNldEF1dGhUYWcoYXV0aFRhZylcblxuICAgIGNvbnN0IGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShkYXRhKSwgZGVjaXBoZXIuZmluYWwoKV0pLnRvU3RyaW5nKFwidXRmOFwiKVxuXG4gICAgcmV0dXJuIHRoaXMuX2Rlc2VyaWFsaXplRW5jcnlwdGVkVmFsdWUodHlwZSwgZGVjcnlwdGVkKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc2VyaWFsaXplIGVuY3J5cHRlZCB2YWx1ZS5cbiAgICogQHBhcmFtIHs/fSB2YWx1ZSAtIFZhbHVlIHRvIHNlcmlhbGl6ZS5cbiAgICogQHJldHVybnMge3twYXlsb2FkOiBzdHJpbmcsIHR5cGU6IHN0cmluZ319IC0gU2VyaWFsaXplZCBwYXlsb2FkLlxuICAgKi9cbiAgc3RhdGljIF9zZXJpYWxpemVFbmNyeXB0ZWRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHJldHVybiB7cGF5bG9hZDogdmFsdWUsIHR5cGU6IFwic1wifVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4ge3BheWxvYWQ6IFwiXCIsIHR5cGU6IFwic1wifVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSlcblxuICAgICAgaWYgKHBheWxvYWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge3BheWxvYWQ6IFN0cmluZyh2YWx1ZSksIHR5cGU6IFwic1wifVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge3BheWxvYWQsIHR5cGU6IFwialwifVxuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIHtwYXlsb2FkOiBTdHJpbmcodmFsdWUpLCB0eXBlOiBcInNcIn1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBkZXNlcmlhbGl6ZSBlbmNyeXB0ZWQgdmFsdWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIC0gU2VyaWFsaXplZCB0eXBlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF5bG9hZCAtIFBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gRGVzZXJpYWxpemVkIHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIF9kZXNlcmlhbGl6ZUVuY3J5cHRlZFZhbHVlKHR5cGUsIHBheWxvYWQpIHtcbiAgICBpZiAodHlwZSA9PT0gXCJqXCIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocGF5bG9hZClcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBwYXJzZWQgPT09IFwic3RyaW5nXCIgPyBwYXJzZWQgOiBKU09OLnN0cmluZ2lmeShwYXJzZWQpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHBheWxvYWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcGF5bG9hZFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZGVyaXZlIGtleS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlY3JldCAtIFNlY3JldC5cbiAgICogQHJldHVybnMge0J1ZmZlcn0gLSBLZXkuXG4gICAqL1xuICBzdGF0aWMgX2Rlcml2ZUtleShzZWNyZXQpIHtcbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKHNlY3JldCkuZGlnZXN0KClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHRvIGJhc2U2NCB1cmwuXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgLSBCdWZmZXIuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gQmFzZTY0IFVSTCBlbmNvZGVkIHN0cmluZy5cbiAgICovXG4gIHN0YXRpYyBfdG9CYXNlNjRVcmwoYnVmZmVyKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZyhcImJhc2U2NFwiKS5yZXBsYWNlKC9cXCsvZywgXCItXCIpLnJlcGxhY2UoL1xcLy9nLCBcIl9cIikucmVwbGFjZSgvPSskL2csIFwiXCIpXG4gIH1cblxuICAvKipcbiAgICogUnVucyBmcm9tIGJhc2U2NCB1cmwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIEJhc2U2NCBVUkwgZW5jb2RlZCBzdHJpbmcuXG4gICAqIEByZXR1cm5zIHtCdWZmZXJ9IC0gQnVmZmVyLlxuICAgKi9cbiAgc3RhdGljIF9mcm9tQmFzZTY0VXJsKHZhbHVlKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnJlcGxhY2UoLy0vZywgXCIrXCIpLnJlcGxhY2UoL18vZywgXCIvXCIpXG4gICAgY29uc3QgcGFkZGluZyA9IG5vcm1hbGl6ZWQubGVuZ3RoICUgNCA9PT0gMCA/IFwiXCIgOiBcIj1cIi5yZXBlYXQoNCAtIChub3JtYWxpemVkLmxlbmd0aCAlIDQpKVxuXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGAke25vcm1hbGl6ZWR9JHtwYWRkaW5nfWAsIFwiYmFzZTY0XCIpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export default class VelociousHttpServerDevelopmentReloader {
|
|
6
6
|
/**
|
|
7
|
+
* Runs constructor.
|
|
7
8
|
* @param {object} args - Options object.
|
|
8
9
|
* @param {import("../configuration.js").default} args.configuration - Configuration instance.
|
|
9
10
|
* @param {function({changedPath: string}) : Promise<void>} args.onReload - Reload callback.
|
|
@@ -31,22 +32,36 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
31
32
|
readdir: typeof fs.readdir;
|
|
32
33
|
stat: typeof fs.stat;
|
|
33
34
|
watchFactory: typeof fsWatch;
|
|
34
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Narrows the runtime value to the documented type.
|
|
37
|
+
@type {ReturnType<typeof setTimeout> | undefined} */
|
|
35
38
|
reloadTimer: ReturnType<typeof setTimeout> | undefined;
|
|
36
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Narrows the runtime value to the documented type.
|
|
41
|
+
@type {string | undefined} */
|
|
37
42
|
pendingChangedPath: string | undefined;
|
|
38
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Narrows the runtime value to the documented type.
|
|
45
|
+
@type {Map<string, import("fs").FSWatcher>} */
|
|
39
46
|
watchers: Map<string, import("fs").FSWatcher>;
|
|
40
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Runs start.
|
|
49
|
+
* @returns {Promise<void>} - Resolves when watching has started.
|
|
50
|
+
*/
|
|
41
51
|
start(): Promise<void>;
|
|
42
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Runs watch root paths.
|
|
54
|
+
* @returns {string[]} - Source directories to watch.
|
|
55
|
+
*/
|
|
43
56
|
watchRootPaths(): string[];
|
|
44
57
|
/**
|
|
58
|
+
* Runs watch directory recursive.
|
|
45
59
|
* @param {string} directoryPath - Directory path.
|
|
46
60
|
* @returns {Promise<void>} - Resolves when child directories are watched.
|
|
47
61
|
*/
|
|
48
62
|
watchDirectoryRecursive(directoryPath: string): Promise<void>;
|
|
49
63
|
/**
|
|
64
|
+
* Runs on watcher event.
|
|
50
65
|
* @param {object} args - Options object.
|
|
51
66
|
* @param {string} args.directoryPath - Watched directory path.
|
|
52
67
|
* @param {string} args.eventType - Watch event type.
|
|
@@ -59,6 +74,7 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
59
74
|
fileName: string | Buffer | null;
|
|
60
75
|
}): Promise<void>;
|
|
61
76
|
/**
|
|
77
|
+
* Runs should reload path.
|
|
62
78
|
* @param {object} args - Options object.
|
|
63
79
|
* @param {string} args.changedPath - Changed path.
|
|
64
80
|
* @param {string | Buffer | null} args.fileName - Raw filename from fs.watch.
|
|
@@ -69,23 +85,32 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
69
85
|
fileName: string | Buffer | null;
|
|
70
86
|
}): boolean;
|
|
71
87
|
/**
|
|
88
|
+
* Runs watch potential directory.
|
|
72
89
|
* @param {string} changedPath - Candidate directory path.
|
|
73
90
|
* @returns {Promise<void>} - Resolves when any new directory watchers are added.
|
|
74
91
|
*/
|
|
75
92
|
watchPotentialDirectory(changedPath: string): Promise<void>;
|
|
76
93
|
/**
|
|
94
|
+
* Runs schedule reload.
|
|
77
95
|
* @param {string} changedPath - Changed path.
|
|
78
96
|
* @returns {void} - No return value.
|
|
79
97
|
*/
|
|
80
98
|
scheduleReload(changedPath: string): void;
|
|
81
|
-
/**
|
|
99
|
+
/**
|
|
100
|
+
* Runs flush reload.
|
|
101
|
+
* @returns {Promise<void>} - Resolves when the queued reload is handled.
|
|
102
|
+
*/
|
|
82
103
|
flushReload(): Promise<void>;
|
|
83
104
|
/**
|
|
105
|
+
* On watcher error.
|
|
84
106
|
* @param {Error} error - Watcher error.
|
|
85
107
|
* @returns {void} - No return value.
|
|
86
108
|
*/
|
|
87
109
|
onWatcherError: (error: Error) => void;
|
|
88
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* Runs stop.
|
|
112
|
+
* @returns {Promise<void>} - Resolves when watchers are closed.
|
|
113
|
+
*/
|
|
89
114
|
stop(): Promise<void>;
|
|
90
115
|
}
|
|
91
116
|
import Logger from "../logger.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"development-reloader.d.ts","sourceRoot":"","sources":["../../../src/http-server/development-reloader.js"],"names":[],"mappings":"AAeA;;;GAGG;AACH;IACE
|
|
1
|
+
{"version":3,"file":"development-reloader.d.ts","sourceRoot":"","sources":["../../../src/http-server/development-reloader.js"],"names":[],"mappings":"AAeA;;;GAGG;AACH;IACE;;;;;;;;;OASG;IACH,kFAPG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;QACiB,QAAQ,EAA9D,CAAS,IAAqB,EAArB;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,KAAI,OAAO,CAAC,IAAI,CAAC;QACjC,UAAU;QACF,YAAY;QACT,OAAO;QACV,IAAI;KACpC,EAwBA;IAtBC,qDAAkC;IAClC,mBAA4B;IAC5B,eAAgE;IAChE,iBAVkB;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,KAAI,OAAO,CAAC,IAAI,CAAC,CAUhC;IACxB,2BAAsB;IACtB,qBAAgB;IAChB,6BAAgC;IAEhC;;0DAEsD;IACtD,aADS,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CACtB;IAE5B;;mCAE+B;IAC/B,oBADS,MAAM,GAAG,SAAS,CACQ;IAEnC;;oDAEgD;IAChD,UADS,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,SAAS,CAAC,CACnB;IAG3B;;;OAGG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED;;;OAGG;IACH,kBAFa,MAAM,EAAE,CAcpB;IAED;;;;OAIG;IACH,uCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAkCzB;IAED;;;;;;;OAOG;IACH,uDALG;QAAqB,aAAa,EAA1B,MAAM;QACO,SAAS,EAAtB,MAAM;QACuB,QAAQ,EAArC,MAAM,GAAG,MAAM,GAAG,IAAI;KAC9B,GAAU,OAAO,CAAC,IAAI,CAAC,CAczB;IAED;;;;;;OAMG;IACH,4CAJG;QAAqB,WAAW,EAAxB,MAAM;QACuB,QAAQ,EAArC,MAAM,GAAG,MAAM,GAAG,IAAI;KAC9B,GAAU,OAAO,CAQnB;IAED;;;;OAIG;IACH,qCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;;OAIG;IACH,4BAHW,MAAM,GACJ,IAAI,CAYhB;IAED;;;OAGG;IACH,eAFa,OAAO,CAAC,IAAI,CAAC,CAWzB;IAED;;;;OAIG;IACH,iBAAkB,OAHP,KAGY,KAFV,IAAI,CAIhB;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAezB;CACF;mBA3OkB,cAAc;eADlB,aAAa;iCADG,IAAI"}
|
|
@@ -16,6 +16,7 @@ const RELOADABLE_EXTENSIONS = new Set([
|
|
|
16
16
|
*/
|
|
17
17
|
export default class VelociousHttpServerDevelopmentReloader {
|
|
18
18
|
/**
|
|
19
|
+
* Runs constructor.
|
|
19
20
|
* @param {object} args - Options object.
|
|
20
21
|
* @param {import("../configuration.js").default} args.configuration - Configuration instance.
|
|
21
22
|
* @param {function({changedPath: string}) : Promise<void>} args.onReload - Reload callback.
|
|
@@ -32,20 +33,32 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
32
33
|
this.readdir = readdir;
|
|
33
34
|
this.stat = stat;
|
|
34
35
|
this.watchFactory = watchFactory;
|
|
35
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Narrows the runtime value to the documented type.
|
|
38
|
+
@type {ReturnType<typeof setTimeout> | undefined} */
|
|
36
39
|
this.reloadTimer = undefined;
|
|
37
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Narrows the runtime value to the documented type.
|
|
42
|
+
@type {string | undefined} */
|
|
38
43
|
this.pendingChangedPath = undefined;
|
|
39
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Narrows the runtime value to the documented type.
|
|
46
|
+
@type {Map<string, import("fs").FSWatcher>} */
|
|
40
47
|
this.watchers = new Map();
|
|
41
48
|
}
|
|
42
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Runs start.
|
|
51
|
+
* @returns {Promise<void>} - Resolves when watching has started.
|
|
52
|
+
*/
|
|
43
53
|
async start() {
|
|
44
54
|
for (const rootPath of this.watchRootPaths()) {
|
|
45
55
|
await this.watchDirectoryRecursive(rootPath);
|
|
46
56
|
}
|
|
47
57
|
}
|
|
48
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Runs watch root paths.
|
|
60
|
+
* @returns {string[]} - Source directories to watch.
|
|
61
|
+
*/
|
|
49
62
|
watchRootPaths() {
|
|
50
63
|
const rootPaths = new Set();
|
|
51
64
|
const configurationDirectory = this.configuration.getDirectory();
|
|
@@ -58,6 +71,7 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
58
71
|
return Array.from(rootPaths);
|
|
59
72
|
}
|
|
60
73
|
/**
|
|
74
|
+
* Runs watch directory recursive.
|
|
61
75
|
* @param {string} directoryPath - Directory path.
|
|
62
76
|
* @returns {Promise<void>} - Resolves when child directories are watched.
|
|
63
77
|
*/
|
|
@@ -70,7 +84,9 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
70
84
|
entries = await this.readdir(resolvedDirectoryPath, { withFileTypes: true });
|
|
71
85
|
}
|
|
72
86
|
catch (error) {
|
|
73
|
-
if ( /**
|
|
87
|
+
if ( /**
|
|
88
|
+
* Narrows the runtime value to the documented type.
|
|
89
|
+
@type {{code?: string}} */(error)?.code === "ENOENT")
|
|
74
90
|
return;
|
|
75
91
|
throw error;
|
|
76
92
|
}
|
|
@@ -90,6 +106,7 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
90
106
|
}
|
|
91
107
|
}
|
|
92
108
|
/**
|
|
109
|
+
* Runs on watcher event.
|
|
93
110
|
* @param {object} args - Options object.
|
|
94
111
|
* @param {string} args.directoryPath - Watched directory path.
|
|
95
112
|
* @param {string} args.eventType - Watch event type.
|
|
@@ -107,6 +124,7 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
107
124
|
await this.logger.debug(() => ["Queued development hot reload", { changedPath, eventType }]);
|
|
108
125
|
}
|
|
109
126
|
/**
|
|
127
|
+
* Runs should reload path.
|
|
110
128
|
* @param {object} args - Options object.
|
|
111
129
|
* @param {string} args.changedPath - Changed path.
|
|
112
130
|
* @param {string | Buffer | null} args.fileName - Raw filename from fs.watch.
|
|
@@ -119,6 +137,7 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
119
137
|
return RELOADABLE_EXTENSIONS.has(extension);
|
|
120
138
|
}
|
|
121
139
|
/**
|
|
140
|
+
* Runs watch potential directory.
|
|
122
141
|
* @param {string} changedPath - Candidate directory path.
|
|
123
142
|
* @returns {Promise<void>} - Resolves when any new directory watchers are added.
|
|
124
143
|
*/
|
|
@@ -130,12 +149,15 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
130
149
|
}
|
|
131
150
|
}
|
|
132
151
|
catch (error) {
|
|
133
|
-
if ( /**
|
|
152
|
+
if ( /**
|
|
153
|
+
* Narrows the runtime value to the documented type.
|
|
154
|
+
@type {{code?: string}} */(error)?.code !== "ENOENT") {
|
|
134
155
|
throw error;
|
|
135
156
|
}
|
|
136
157
|
}
|
|
137
158
|
}
|
|
138
159
|
/**
|
|
160
|
+
* Runs schedule reload.
|
|
139
161
|
* @param {string} changedPath - Changed path.
|
|
140
162
|
* @returns {void} - No return value.
|
|
141
163
|
*/
|
|
@@ -148,7 +170,10 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
148
170
|
void this.flushReload();
|
|
149
171
|
}, this.debounceMs);
|
|
150
172
|
}
|
|
151
|
-
/**
|
|
173
|
+
/**
|
|
174
|
+
* Runs flush reload.
|
|
175
|
+
* @returns {Promise<void>} - Resolves when the queued reload is handled.
|
|
176
|
+
*/
|
|
152
177
|
async flushReload() {
|
|
153
178
|
this.reloadTimer = undefined;
|
|
154
179
|
const changedPath = this.pendingChangedPath;
|
|
@@ -158,13 +183,17 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
158
183
|
await this.onReload({ changedPath });
|
|
159
184
|
}
|
|
160
185
|
/**
|
|
186
|
+
* On watcher error.
|
|
161
187
|
* @param {Error} error - Watcher error.
|
|
162
188
|
* @returns {void} - No return value.
|
|
163
189
|
*/
|
|
164
190
|
onWatcherError = (error) => {
|
|
165
191
|
void this.logger.warn("Development hot reload watcher error", error);
|
|
166
192
|
};
|
|
167
|
-
/**
|
|
193
|
+
/**
|
|
194
|
+
* Runs stop.
|
|
195
|
+
* @returns {Promise<void>} - Resolves when watchers are closed.
|
|
196
|
+
*/
|
|
168
197
|
async stop() {
|
|
169
198
|
if (this.reloadTimer) {
|
|
170
199
|
clearTimeout(this.reloadTimer);
|
|
@@ -177,4 +206,4 @@ export default class VelociousHttpServerDevelopmentReloader {
|
|
|
177
206
|
this.watchers.clear();
|
|
178
207
|
}
|
|
179
208
|
}
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2ZWxvcG1lbnQtcmVsb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvZGV2ZWxvcG1lbnQtcmVsb2FkZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxLQUFLLElBQUksT0FBTyxFQUFDLE1BQU0sSUFBSSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1QixPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRXZCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDcEMsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsT0FBTztJQUNQLE1BQU07Q0FDUCxDQUFDLENBQUE7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHNDQUFzQztJQUN6RDs7Ozs7Ozs7T0FRRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLFVBQVUsR0FBRyxFQUFFLEVBQUUsWUFBWSxHQUFHLE9BQU8sRUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBQztRQUNsSCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtRQUM1QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQTtRQUNoRSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtRQUVo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Q0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFBO1FBQzlCLENBQUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFBO1FBRW5DLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNqQixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHt3YXRjaCBhcyBmc1dhdGNofSBmcm9tIFwiZnNcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9sb2dnZXIuanNcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5jb25zdCBSRUxPQURBQkxFX0VYVEVOU0lPTlMgPSBuZXcgU2V0KFtcbiAgXCIuY2pzXCIsXG4gIFwiLmVqc1wiLFxuICBcIi5qc1wiLFxuICBcIi5qc29uXCIsXG4gIFwiLm1qc1wiXG5dKVxuXG4vKipcbiAqIERldmVsb3BtZW50LW9ubHkgZmlsZSB3YXRjaGVyIHRoYXQgYXNrcyB0aGUgSFRUUCBzZXJ2ZXIgdG8gcmVjeWNsZSB3b3JrZXJzXG4gKiB3aGVuIGFwcGxpY2F0aW9uIHNvdXJjZSBmaWxlcyBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0h0dHBTZXJ2ZXJEZXZlbG9wbWVudFJlbG9hZGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi5qc1wiKS5kZWZhdWx0fSBhcmdzLmNvbmZpZ3VyYXRpb24gLSBDb25maWd1cmF0aW9uIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHtjaGFuZ2VkUGF0aDogc3RyaW5nfSkgOiBQcm9taXNlPHZvaWQ+fSBhcmdzLm9uUmVsb2FkIC0gUmVsb2FkIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MuZGVib3VuY2VNc10gLSBEZWJvdW5jZSB3aW5kb3cgZm9yIGdyb3VwZWQgY2hhbmdlcy5cbiAgICogQHBhcmFtIHt0eXBlb2YgZnNXYXRjaH0gW2FyZ3Mud2F0Y2hGYWN0b3J5XSAtIEZpbGUgd2F0Y2ggZmFjdG9yeS5cbiAgICogQHBhcmFtIHt0eXBlb2YgZnMucmVhZGRpcn0gW2FyZ3MucmVhZGRpcl0gLSBEaXJlY3RvcnkgcmVhZGVyLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBmcy5zdGF0fSBbYXJncy5zdGF0XSAtIFN0YXQgcmVhZGVyLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbmZpZ3VyYXRpb24sIG9uUmVsb2FkLCBkZWJvdW5jZU1zID0gNzUsIHdhdGNoRmFjdG9yeSA9IGZzV2F0Y2gsIHJlYWRkaXIgPSBmcy5yZWFkZGlyLCBzdGF0ID0gZnMuc3RhdH0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgdGhpcy5kZWJvdW5jZU1zID0gZGVib3VuY2VNc1xuICAgIHRoaXMubG9nZ2VyID0gbmV3IExvZ2dlcihcIkRldmVsb3BtZW50UmVsb2FkZXJcIiwge2NvbmZpZ3VyYXRpb259KVxuICAgIHRoaXMub25SZWxvYWQgPSBvblJlbG9hZFxuICAgIHRoaXMucmVhZGRpciA9IHJlYWRkaXJcbiAgICB0aGlzLnN0YXQgPSBzdGF0XG4gICAgdGhpcy53YXRjaEZhY3RvcnkgPSB3YXRjaEZhY3RvcnlcblxuICAgIC8qKiBAdHlwZSB7UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWR9ICovXG4gICAgdGhpcy5yZWxvYWRUaW1lciA9IHVuZGVmaW5lZFxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlZFBhdGggPSB1bmRlZmluZWRcblxuICAgIC8qKiBAdHlwZSB7TWFwPHN0cmluZywgaW1wb3J0KFwiZnNcIikuRlNXYXRjaGVyPn0gKi9cbiAgICB0aGlzLndhdGNoZXJzID0gbmV3IE1hcCgpXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiB3YXRjaGluZyBoYXMgc3RhcnRlZC4gKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgZm9yIChjb25zdCByb290UGF0aCBvZiB0aGlzLndhdGNoUm9vdFBhdGhzKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMud2F0Y2hEaXJlY3RvcnlSZWN1cnNpdmUocm9vdFBhdGgpXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTb3VyY2UgZGlyZWN0b3JpZXMgdG8gd2F0Y2guICovXG4gIHdhdGNoUm9vdFBhdGhzKCkge1xuICAgIGNvbnN0IHJvb3RQYXRocyA9IG5ldyBTZXQoKVxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KClcblxuICAgIHJvb3RQYXRocy5hZGQocGF0aC5qb2luKGNvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFwic3JjXCIpKVxuXG4gICAgZm9yIChjb25zdCBiYWNrZW5kUHJvamVjdCBvZiB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0QmFja2VuZFByb2plY3RzKCkpIHtcbiAgICAgIGlmICghYmFja2VuZFByb2plY3Q/LnBhdGgpIGNvbnRpbnVlXG4gICAgICByb290UGF0aHMuYWRkKHBhdGguam9pbihiYWNrZW5kUHJvamVjdC5wYXRoLCBcInNyY1wiKSlcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShyb290UGF0aHMpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdG9yeVBhdGggLSBEaXJlY3RvcnkgcGF0aC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjaGlsZCBkaXJlY3RvcmllcyBhcmUgd2F0Y2hlZC5cbiAgICovXG4gIGFzeW5jIHdhdGNoRGlyZWN0b3J5UmVjdXJzaXZlKGRpcmVjdG9yeVBhdGgpIHtcbiAgICBjb25zdCByZXNvbHZlZERpcmVjdG9yeVBhdGggPSBwYXRoLnJlc29sdmUoZGlyZWN0b3J5UGF0aClcblxuICAgIGlmICh0aGlzLndhdGNoZXJzLmhhcyhyZXNvbHZlZERpcmVjdG9yeVBhdGgpKSByZXR1cm5cblxuICAgIGxldCBlbnRyaWVzXG5cbiAgICB0cnkge1xuICAgICAgZW50cmllcyA9IGF3YWl0IHRoaXMucmVhZGRpcihyZXNvbHZlZERpcmVjdG9yeVBhdGgsIHt3aXRoRmlsZVR5cGVzOiB0cnVlfSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKC8qKiBAdHlwZSB7e2NvZGU/OiBzdHJpbmd9fSAqLyAoZXJyb3IpPy5jb2RlID09PSBcIkVOT0VOVFwiKSByZXR1cm5cbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgY29uc3Qgd2F0Y2hlciA9IHRoaXMud2F0Y2hGYWN0b3J5KHJlc29sdmVkRGlyZWN0b3J5UGF0aCwgKGV2ZW50VHlwZSwgZmlsZU5hbWUpID0+IHtcbiAgICAgIHZvaWQgdGhpcy5vbldhdGNoZXJFdmVudCh7XG4gICAgICAgIGRpcmVjdG9yeVBhdGg6IHJlc29sdmVkRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgZXZlbnRUeXBlLFxuICAgICAgICBmaWxlTmFtZVxuICAgICAgfSlcbiAgICB9KVxuXG4gICAgd2F0Y2hlci5vbihcImVycm9yXCIsIHRoaXMub25XYXRjaGVyRXJyb3IpXG4gICAgdGhpcy53YXRjaGVycy5zZXQocmVzb2x2ZWREaXJlY3RvcnlQYXRoLCB3YXRjaGVyKVxuXG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICBpZiAoIWVudHJ5LmlzRGlyZWN0b3J5KCkpIGNvbnRpbnVlXG5cbiAgICAgIGF3YWl0IHRoaXMud2F0Y2hEaXJlY3RvcnlSZWN1cnNpdmUocGF0aC5qb2luKHJlc29sdmVkRGlyZWN0b3J5UGF0aCwgZW50cnkubmFtZSkpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmRpcmVjdG9yeVBhdGggLSBXYXRjaGVkIGRpcmVjdG9yeSBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5ldmVudFR5cGUgLSBXYXRjaCBldmVudCB0eXBlLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlciB8IG51bGx9IGFyZ3MuZmlsZU5hbWUgLSBSZWxhdGl2ZSBjaGFuZ2VkIGZpbGVuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgb25XYXRjaGVyRXZlbnQoe2RpcmVjdG9yeVBhdGgsIGV2ZW50VHlwZSwgZmlsZU5hbWV9KSB7XG4gICAgY29uc3QgY2hhbmdlZFBhdGggPSBmaWxlTmFtZVxuICAgICAgPyBwYXRoLmpvaW4oZGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUudG9TdHJpbmcoKSlcbiAgICAgIDogZGlyZWN0b3J5UGF0aFxuXG4gICAgYXdhaXQgdGhpcy53YXRjaFBvdGVudGlhbERpcmVjdG9yeShjaGFuZ2VkUGF0aClcblxuICAgIGlmICghdGhpcy5zaG91bGRSZWxvYWRQYXRoKHtjaGFuZ2VkUGF0aCwgZmlsZU5hbWV9KSkgcmV0dXJuXG5cbiAgICB0aGlzLnNjaGVkdWxlUmVsb2FkKGNoYW5nZWRQYXRoKVxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wiUXVldWVkIGRldmVsb3BtZW50IGhvdCByZWxvYWRcIiwge2NoYW5nZWRQYXRoLCBldmVudFR5cGV9XSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5jaGFuZ2VkUGF0aCAtIENoYW5nZWQgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBCdWZmZXIgfCBudWxsfSBhcmdzLmZpbGVOYW1lIC0gUmF3IGZpbGVuYW1lIGZyb20gZnMud2F0Y2guXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgdGhlIHBhdGggc2hvdWxkIHRyaWdnZXIgcmVsb2FkLlxuICAgKi9cbiAgc2hvdWxkUmVsb2FkUGF0aCh7Y2hhbmdlZFBhdGgsIGZpbGVOYW1lfSkge1xuICAgIGlmICghZmlsZU5hbWUpIHJldHVybiB0cnVlXG5cbiAgICBjb25zdCBleHRlbnNpb24gPSBwYXRoLmV4dG5hbWUoY2hhbmdlZFBhdGgpLnRvTG93ZXJDYXNlKClcblxuICAgIHJldHVybiBSRUxPQURBQkxFX0VYVEVOU0lPTlMuaGFzKGV4dGVuc2lvbilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbmdlZFBhdGggLSBDYW5kaWRhdGUgZGlyZWN0b3J5IHBhdGguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gYW55IG5ldyBkaXJlY3Rvcnkgd2F0Y2hlcnMgYXJlIGFkZGVkLlxuICAgKi9cbiAgYXN5bmMgd2F0Y2hQb3RlbnRpYWxEaXJlY3RvcnkoY2hhbmdlZFBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IHRoaXMuc3RhdChjaGFuZ2VkUGF0aClcblxuICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBhd2FpdCB0aGlzLndhdGNoRGlyZWN0b3J5UmVjdXJzaXZlKGNoYW5nZWRQYXRoKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoLyoqIEB0eXBlIHt7Y29kZT86IHN0cmluZ319ICovIChlcnJvcik/LmNvZGUgIT09IFwiRU5PRU5UXCIpIHtcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5nZWRQYXRoIC0gQ2hhbmdlZCBwYXRoLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBzY2hlZHVsZVJlbG9hZChjaGFuZ2VkUGF0aCkge1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZWRQYXRoID0gY2hhbmdlZFBhdGhcblxuICAgIGlmICh0aGlzLnJlbG9hZFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWxvYWRUaW1lcilcbiAgICB9XG5cbiAgICB0aGlzLnJlbG9hZFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB2b2lkIHRoaXMuZmx1c2hSZWxvYWQoKVxuICAgIH0sIHRoaXMuZGVib3VuY2VNcylcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHRoZSBxdWV1ZWQgcmVsb2FkIGlzIGhhbmRsZWQuICovXG4gIGFzeW5jIGZsdXNoUmVsb2FkKCkge1xuICAgIHRoaXMucmVsb2FkVGltZXIgPSB1bmRlZmluZWRcblxuICAgIGNvbnN0IGNoYW5nZWRQYXRoID0gdGhpcy5wZW5kaW5nQ2hhbmdlZFBhdGhcblxuICAgIGlmICghY2hhbmdlZFBhdGgpIHJldHVyblxuXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlZFBhdGggPSB1bmRlZmluZWRcbiAgICBhd2FpdCB0aGlzLm9uUmVsb2FkKHtjaGFuZ2VkUGF0aH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSBXYXRjaGVyIGVycm9yLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBvbldhdGNoZXJFcnJvciA9IChlcnJvcikgPT4ge1xuICAgIHZvaWQgdGhpcy5sb2dnZXIud2FybihcIkRldmVsb3BtZW50IGhvdCByZWxvYWQgd2F0Y2hlciBlcnJvclwiLCBlcnJvcilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHdhdGNoZXJzIGFyZSBjbG9zZWQuICovXG4gIGFzeW5jIHN0b3AoKSB7XG4gICAgaWYgKHRoaXMucmVsb2FkVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlbG9hZFRpbWVyKVxuICAgICAgdGhpcy5yZWxvYWRUaW1lciA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NoYW5nZWRQYXRoID0gdW5kZWZpbmVkXG5cbiAgICBmb3IgKGNvbnN0IHdhdGNoZXIgb2YgdGhpcy53YXRjaGVycy52YWx1ZXMoKSkge1xuICAgICAgd2F0Y2hlci5jbG9zZSgpXG4gICAgfVxuXG4gICAgdGhpcy53YXRjaGVycy5jbGVhcigpXG4gIH1cbn1cbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2ZWxvcG1lbnQtcmVsb2FkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC1zZXJ2ZXIvZGV2ZWxvcG1lbnQtcmVsb2FkZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBQyxLQUFLLElBQUksT0FBTyxFQUFDLE1BQU0sSUFBSSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1QixPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRXZCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDcEMsTUFBTTtJQUNOLE1BQU07SUFDTixLQUFLO0lBQ0wsT0FBTztJQUNQLE1BQU07Q0FDUCxDQUFDLENBQUE7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsT0FBTyxPQUFPLHNDQUFzQztJQUN6RDs7Ozs7Ozs7O09BU0c7SUFDSCxZQUFZLEVBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLEdBQUcsRUFBRSxFQUFFLFlBQVksR0FBRyxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUM7UUFDbEgsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUE7UUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7UUFFaEM7OzhEQUVzRDtRQUN0RCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQTtRQUU1Qjs7dUNBRStCO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUE7UUFFbkM7O3dEQUVnRDtRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWM7UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO1FBQzNCLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUVoRSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUV2RCxLQUFLLE1BQU0sY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSTtnQkFBRSxTQUFRO1lBQ25DLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDdEQsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhO1FBQ3pDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUV6RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDO1lBQUUsT0FBTTtRQUVwRCxJQUFJLE9BQU8sQ0FBQTtRQUVYLElBQUksQ0FBQztZQUNILE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQTtRQUM1RSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLEtBQUk7OzRDQUU2QixDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksS0FBSyxRQUFRO2dCQUFFLE9BQU07WUFDbkUsTUFBTSxLQUFLLENBQUE7UUFDYixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMvRSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZCLGFBQWEsRUFBRSxxQkFBcUI7Z0JBQ3BDLFNBQVM7Z0JBQ1QsUUFBUTthQUNULENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO1FBRUYsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBRWpELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7Z0JBQUUsU0FBUTtZQUVsQyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2xGLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBQztRQUN2RCxNQUFNLFdBQVcsR0FBRyxRQUFRO1lBQzFCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0MsQ0FBQyxDQUFDLGFBQWEsQ0FBQTtRQUVqQixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUUvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUMsV0FBVyxFQUFFLFFBQVEsRUFBQyxDQUFDO1lBQUUsT0FBTTtRQUUzRCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRWhDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQywrQkFBK0IsRUFBRSxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUE7SUFDNUYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLEVBQUMsV0FBVyxFQUFFLFFBQVEsRUFBQztRQUN0QyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRTFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7UUFFekQsT0FBTyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsdUJBQXVCLENBQUMsV0FBVztRQUN2QyxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFFekMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDakQsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsS0FBSTs7NENBRTZCLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1RCxNQUFNLEtBQUssQ0FBQTtZQUNiLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsV0FBVztRQUN4QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFBO1FBRXJDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN6QixDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsV0FBVztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFBO1FBRTVCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtRQUUzQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU07UUFFeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQTtRQUNuQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDekIsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0RSxDQUFDLENBQUE7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUE7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUE7UUFFbkMsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDN0MsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ2pCLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge3dhdGNoIGFzIGZzV2F0Y2h9IGZyb20gXCJmc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmNvbnN0IFJFTE9BREFCTEVfRVhURU5TSU9OUyA9IG5ldyBTZXQoW1xuICBcIi5janNcIixcbiAgXCIuZWpzXCIsXG4gIFwiLmpzXCIsXG4gIFwiLmpzb25cIixcbiAgXCIubWpzXCJcbl0pXG5cbi8qKlxuICogRGV2ZWxvcG1lbnQtb25seSBmaWxlIHdhdGNoZXIgdGhhdCBhc2tzIHRoZSBIVFRQIHNlcnZlciB0byByZWN5Y2xlIHdvcmtlcnNcbiAqIHdoZW4gYXBwbGljYXRpb24gc291cmNlIGZpbGVzIGNoYW5nZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzSHR0cFNlcnZlckRldmVsb3BtZW50UmVsb2FkZXIge1xuICAvKipcbiAgICogUnVucyBjb25zdHJ1Y3Rvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oe2NoYW5nZWRQYXRoOiBzdHJpbmd9KSA6IFByb21pc2U8dm9pZD59IGFyZ3Mub25SZWxvYWQgLSBSZWxvYWQgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5kZWJvdW5jZU1zXSAtIERlYm91bmNlIHdpbmRvdyBmb3IgZ3JvdXBlZCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBmc1dhdGNofSBbYXJncy53YXRjaEZhY3RvcnldIC0gRmlsZSB3YXRjaCBmYWN0b3J5LlxuICAgKiBAcGFyYW0ge3R5cGVvZiBmcy5yZWFkZGlyfSBbYXJncy5yZWFkZGlyXSAtIERpcmVjdG9yeSByZWFkZXIuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGZzLnN0YXR9IFthcmdzLnN0YXRdIC0gU3RhdCByZWFkZXIuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbiwgb25SZWxvYWQsIGRlYm91bmNlTXMgPSA3NSwgd2F0Y2hGYWN0b3J5ID0gZnNXYXRjaCwgcmVhZGRpciA9IGZzLnJlYWRkaXIsIHN0YXQgPSBmcy5zdGF0fSkge1xuICAgIHRoaXMuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLmRlYm91bmNlTXMgPSBkZWJvdW5jZU1zXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKFwiRGV2ZWxvcG1lbnRSZWxvYWRlclwiLCB7Y29uZmlndXJhdGlvbn0pXG4gICAgdGhpcy5vblJlbG9hZCA9IG9uUmVsb2FkXG4gICAgdGhpcy5yZWFkZGlyID0gcmVhZGRpclxuICAgIHRoaXMuc3RhdCA9IHN0YXRcbiAgICB0aGlzLndhdGNoRmFjdG9yeSA9IHdhdGNoRmFjdG9yeVxuXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgQHR5cGUge1JldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkfSAqL1xuICAgIHRoaXMucmVsb2FkVGltZXIgPSB1bmRlZmluZWRcblxuICAgIC8qKlxuICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlZFBhdGggPSB1bmRlZmluZWRcblxuICAgIC8qKlxuICAgICAqIE5hcnJvd3MgdGhlIHJ1bnRpbWUgdmFsdWUgdG8gdGhlIGRvY3VtZW50ZWQgdHlwZS5cbiAgICAgIEB0eXBlIHtNYXA8c3RyaW5nLCBpbXBvcnQoXCJmc1wiKS5GU1dhdGNoZXI+fSAqL1xuICAgIHRoaXMud2F0Y2hlcnMgPSBuZXcgTWFwKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHN0YXJ0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHdhdGNoaW5nIGhhcyBzdGFydGVkLlxuICAgKi9cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgZm9yIChjb25zdCByb290UGF0aCBvZiB0aGlzLndhdGNoUm9vdFBhdGhzKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMud2F0Y2hEaXJlY3RvcnlSZWN1cnNpdmUocm9vdFBhdGgpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgd2F0Y2ggcm9vdCBwYXRocy5cbiAgICogQHJldHVybnMge3N0cmluZ1tdfSAtIFNvdXJjZSBkaXJlY3RvcmllcyB0byB3YXRjaC5cbiAgICovXG4gIHdhdGNoUm9vdFBhdGhzKCkge1xuICAgIGNvbnN0IHJvb3RQYXRocyA9IG5ldyBTZXQoKVxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb25EaXJlY3RvcnkgPSB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0RGlyZWN0b3J5KClcblxuICAgIHJvb3RQYXRocy5hZGQocGF0aC5qb2luKGNvbmZpZ3VyYXRpb25EaXJlY3RvcnksIFwic3JjXCIpKVxuXG4gICAgZm9yIChjb25zdCBiYWNrZW5kUHJvamVjdCBvZiB0aGlzLmNvbmZpZ3VyYXRpb24uZ2V0QmFja2VuZFByb2plY3RzKCkpIHtcbiAgICAgIGlmICghYmFja2VuZFByb2plY3Q/LnBhdGgpIGNvbnRpbnVlXG4gICAgICByb290UGF0aHMuYWRkKHBhdGguam9pbihiYWNrZW5kUHJvamVjdC5wYXRoLCBcInNyY1wiKSlcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShyb290UGF0aHMpXG4gIH1cblxuICAvKipcbiAgICogUnVucyB3YXRjaCBkaXJlY3RvcnkgcmVjdXJzaXZlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0b3J5UGF0aCAtIERpcmVjdG9yeSBwYXRoLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNoaWxkIGRpcmVjdG9yaWVzIGFyZSB3YXRjaGVkLlxuICAgKi9cbiAgYXN5bmMgd2F0Y2hEaXJlY3RvcnlSZWN1cnNpdmUoZGlyZWN0b3J5UGF0aCkge1xuICAgIGNvbnN0IHJlc29sdmVkRGlyZWN0b3J5UGF0aCA9IHBhdGgucmVzb2x2ZShkaXJlY3RvcnlQYXRoKVxuXG4gICAgaWYgKHRoaXMud2F0Y2hlcnMuaGFzKHJlc29sdmVkRGlyZWN0b3J5UGF0aCkpIHJldHVyblxuXG4gICAgbGV0IGVudHJpZXNcblxuICAgIHRyeSB7XG4gICAgICBlbnRyaWVzID0gYXdhaXQgdGhpcy5yZWFkZGlyKHJlc29sdmVkRGlyZWN0b3J5UGF0aCwge3dpdGhGaWxlVHlwZXM6IHRydWV9KVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoLyoqXG4gICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgQHR5cGUge3tjb2RlPzogc3RyaW5nfX0gKi8gKGVycm9yKT8uY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIGNvbnN0IHdhdGNoZXIgPSB0aGlzLndhdGNoRmFjdG9yeShyZXNvbHZlZERpcmVjdG9yeVBhdGgsIChldmVudFR5cGUsIGZpbGVOYW1lKSA9PiB7XG4gICAgICB2b2lkIHRoaXMub25XYXRjaGVyRXZlbnQoe1xuICAgICAgICBkaXJlY3RvcnlQYXRoOiByZXNvbHZlZERpcmVjdG9yeVBhdGgsXG4gICAgICAgIGV2ZW50VHlwZSxcbiAgICAgICAgZmlsZU5hbWVcbiAgICAgIH0pXG4gICAgfSlcblxuICAgIHdhdGNoZXIub24oXCJlcnJvclwiLCB0aGlzLm9uV2F0Y2hlckVycm9yKVxuICAgIHRoaXMud2F0Y2hlcnMuc2V0KHJlc29sdmVkRGlyZWN0b3J5UGF0aCwgd2F0Y2hlcilcblxuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgaWYgKCFlbnRyeS5pc0RpcmVjdG9yeSgpKSBjb250aW51ZVxuXG4gICAgICBhd2FpdCB0aGlzLndhdGNoRGlyZWN0b3J5UmVjdXJzaXZlKHBhdGguam9pbihyZXNvbHZlZERpcmVjdG9yeVBhdGgsIGVudHJ5Lm5hbWUpKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG9uIHdhdGNoZXIgZXZlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmRpcmVjdG9yeVBhdGggLSBXYXRjaGVkIGRpcmVjdG9yeSBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5ldmVudFR5cGUgLSBXYXRjaCBldmVudCB0eXBlLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEJ1ZmZlciB8IG51bGx9IGFyZ3MuZmlsZU5hbWUgLSBSZWxhdGl2ZSBjaGFuZ2VkIGZpbGVuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgb25XYXRjaGVyRXZlbnQoe2RpcmVjdG9yeVBhdGgsIGV2ZW50VHlwZSwgZmlsZU5hbWV9KSB7XG4gICAgY29uc3QgY2hhbmdlZFBhdGggPSBmaWxlTmFtZVxuICAgICAgPyBwYXRoLmpvaW4oZGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUudG9TdHJpbmcoKSlcbiAgICAgIDogZGlyZWN0b3J5UGF0aFxuXG4gICAgYXdhaXQgdGhpcy53YXRjaFBvdGVudGlhbERpcmVjdG9yeShjaGFuZ2VkUGF0aClcblxuICAgIGlmICghdGhpcy5zaG91bGRSZWxvYWRQYXRoKHtjaGFuZ2VkUGF0aCwgZmlsZU5hbWV9KSkgcmV0dXJuXG5cbiAgICB0aGlzLnNjaGVkdWxlUmVsb2FkKGNoYW5nZWRQYXRoKVxuXG4gICAgYXdhaXQgdGhpcy5sb2dnZXIuZGVidWcoKCkgPT4gW1wiUXVldWVkIGRldmVsb3BtZW50IGhvdCByZWxvYWRcIiwge2NoYW5nZWRQYXRoLCBldmVudFR5cGV9XSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNob3VsZCByZWxvYWQgcGF0aC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuY2hhbmdlZFBhdGggLSBDaGFuZ2VkIHBhdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyIHwgbnVsbH0gYXJncy5maWxlTmFtZSAtIFJhdyBmaWxlbmFtZSBmcm9tIGZzLndhdGNoLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIHRoZSBwYXRoIHNob3VsZCB0cmlnZ2VyIHJlbG9hZC5cbiAgICovXG4gIHNob3VsZFJlbG9hZFBhdGgoe2NoYW5nZWRQYXRoLCBmaWxlTmFtZX0pIHtcbiAgICBpZiAoIWZpbGVOYW1lKSByZXR1cm4gdHJ1ZVxuXG4gICAgY29uc3QgZXh0ZW5zaW9uID0gcGF0aC5leHRuYW1lKGNoYW5nZWRQYXRoKS50b0xvd2VyQ2FzZSgpXG5cbiAgICByZXR1cm4gUkVMT0FEQUJMRV9FWFRFTlNJT05TLmhhcyhleHRlbnNpb24pXG4gIH1cblxuICAvKipcbiAgICogUnVucyB3YXRjaCBwb3RlbnRpYWwgZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbmdlZFBhdGggLSBDYW5kaWRhdGUgZGlyZWN0b3J5IHBhdGguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gYW55IG5ldyBkaXJlY3Rvcnkgd2F0Y2hlcnMgYXJlIGFkZGVkLlxuICAgKi9cbiAgYXN5bmMgd2F0Y2hQb3RlbnRpYWxEaXJlY3RvcnkoY2hhbmdlZFBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdCA9IGF3YWl0IHRoaXMuc3RhdChjaGFuZ2VkUGF0aClcblxuICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBhd2FpdCB0aGlzLndhdGNoRGlyZWN0b3J5UmVjdXJzaXZlKGNoYW5nZWRQYXRoKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoLyoqXG4gICAgICAgICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgICAgICAgQHR5cGUge3tjb2RlPzogc3RyaW5nfX0gKi8gKGVycm9yKT8uY29kZSAhPT0gXCJFTk9FTlRcIikge1xuICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHNjaGVkdWxlIHJlbG9hZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5nZWRQYXRoIC0gQ2hhbmdlZCBwYXRoLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBzY2hlZHVsZVJlbG9hZChjaGFuZ2VkUGF0aCkge1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZWRQYXRoID0gY2hhbmdlZFBhdGhcblxuICAgIGlmICh0aGlzLnJlbG9hZFRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZWxvYWRUaW1lcilcbiAgICB9XG5cbiAgICB0aGlzLnJlbG9hZFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB2b2lkIHRoaXMuZmx1c2hSZWxvYWQoKVxuICAgIH0sIHRoaXMuZGVib3VuY2VNcylcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGZsdXNoIHJlbG9hZC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiB0aGUgcXVldWVkIHJlbG9hZCBpcyBoYW5kbGVkLlxuICAgKi9cbiAgYXN5bmMgZmx1c2hSZWxvYWQoKSB7XG4gICAgdGhpcy5yZWxvYWRUaW1lciA9IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgY2hhbmdlZFBhdGggPSB0aGlzLnBlbmRpbmdDaGFuZ2VkUGF0aFxuXG4gICAgaWYgKCFjaGFuZ2VkUGF0aCkgcmV0dXJuXG5cbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VkUGF0aCA9IHVuZGVmaW5lZFxuICAgIGF3YWl0IHRoaXMub25SZWxvYWQoe2NoYW5nZWRQYXRofSlcbiAgfVxuXG4gIC8qKlxuICAgKiBPbiB3YXRjaGVyIGVycm9yLlxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnJvciAtIFdhdGNoZXIgZXJyb3IuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIG9uV2F0Y2hlckVycm9yID0gKGVycm9yKSA9PiB7XG4gICAgdm9pZCB0aGlzLmxvZ2dlci53YXJuKFwiRGV2ZWxvcG1lbnQgaG90IHJlbG9hZCB3YXRjaGVyIGVycm9yXCIsIGVycm9yKVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgc3RvcC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiB3YXRjaGVycyBhcmUgY2xvc2VkLlxuICAgKi9cbiAgYXN5bmMgc3RvcCgpIHtcbiAgICBpZiAodGhpcy5yZWxvYWRUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVsb2FkVGltZXIpXG4gICAgICB0aGlzLnJlbG9hZFRpbWVyID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlZFBhdGggPSB1bmRlZmluZWRcblxuICAgIGZvciAoY29uc3Qgd2F0Y2hlciBvZiB0aGlzLndhdGNoZXJzLnZhbHVlcygpKSB7XG4gICAgICB3YXRjaGVyLmNsb3NlKClcbiAgICB9XG5cbiAgICB0aGlzLndhdGNoZXJzLmNsZWFyKClcbiAgfVxufVxuIl19
|