velocious 1.0.449 → 1.0.451
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/application.js +4 -4
- package/build/authorization/ability.js +8 -8
- package/build/authorization/base-resource.js +4 -4
- package/build/background-jobs/cron-expression.js +1 -1
- package/build/background-jobs/forked-runner-child.js +1 -1
- package/build/background-jobs/job-registry.js +1 -1
- package/build/background-jobs/job-runner.js +1 -1
- package/build/background-jobs/job.js +1 -1
- package/build/background-jobs/json-socket.js +4 -4
- package/build/background-jobs/main.js +21 -21
- package/build/background-jobs/scheduler.js +7 -7
- package/build/background-jobs/store.js +7 -7
- package/build/background-jobs/web/controller.js +2 -2
- package/build/background-jobs/worker.js +12 -12
- package/build/beacon/client.js +11 -8
- package/build/beacon/in-process-broker.js +2 -2
- package/build/beacon/in-process-client.js +2 -2
- package/build/beacon/server.js +3 -3
- package/build/cli/browser-cli.js +1 -1
- package/build/cli/commands/db/base-command.js +2 -2
- package/build/cli/index.js +2 -2
- package/build/cli/tenant-database-command-helper.js +3 -3
- package/build/cli/use-browser-cli.js +1 -1
- package/build/configuration-types.js +3 -1
- package/build/configuration.js +38 -38
- package/build/controller.js +8 -8
- package/build/current-configuration.js +1 -1
- package/build/database/annotations-async-hooks.js +2 -2
- package/build/database/annotations.js +3 -3
- package/build/database/drivers/base-column.js +1 -1
- package/build/database/drivers/base-foreign-key.js +1 -1
- package/build/database/drivers/base-table.js +1 -1
- package/build/database/drivers/base.js +10 -10
- package/build/database/drivers/mssql/index.js +1 -1
- package/build/database/drivers/mssql/table.js +1 -1
- package/build/database/drivers/mysql/index.js +3 -3
- package/build/database/drivers/mysql/query.js +1 -1
- package/build/database/drivers/mysql/table.js +1 -1
- package/build/database/drivers/pgsql/index.js +2 -2
- package/build/database/drivers/sqlite/base.js +16 -16
- package/build/database/drivers/sqlite/index.js +11 -11
- package/build/database/drivers/sqlite/index.native.js +1 -1
- package/build/database/drivers/sqlite/index.web.js +3 -3
- package/build/database/drivers/sqlite/query.js +1 -1
- package/build/database/drivers/sqlite/query.web.js +1 -1
- package/build/database/drivers/sqlite/sql/alter-table.js +2 -2
- package/build/database/drivers/sqlite/table.js +1 -1
- package/build/database/migrator/files-finder.js +1 -1
- package/build/database/migrator.js +6 -6
- package/build/database/pool/async-tracked-multi-connection.js +27 -27
- package/build/database/pool/base-methods-forward.js +4 -4
- package/build/database/pool/base.js +8 -8
- package/build/database/query/from-base.js +1 -1
- package/build/database/query/index.js +10 -10
- package/build/database/query/join-object.js +3 -3
- package/build/database/query/model-class-query.js +39 -39
- package/build/database/query/preloader/belongs-to.js +22 -22
- package/build/database/query/preloader/has-many.js +20 -20
- package/build/database/query/preloader/has-one.js +8 -8
- package/build/database/query/preloader/selection.js +3 -3
- package/build/database/query/preloader.js +8 -8
- package/build/database/query/query-data.js +9 -9
- package/build/database/query/where-model-class-hash.js +7 -7
- package/build/database/query/with-count.js +9 -9
- package/build/database/record/acts-as-list.js +15 -15
- package/build/database/record/attachments/handle.js +2 -2
- package/build/database/record/attachments/normalize-input.js +12 -12
- package/build/database/record/attachments/storage-drivers/s3.js +6 -6
- package/build/database/record/attachments/store.js +13 -13
- package/build/database/record/index.js +115 -121
- package/build/database/record/instance-relationships/base.js +11 -11
- package/build/database/record/instance-relationships/belongs-to.js +3 -3
- package/build/database/record/instance-relationships/has-many.js +8 -8
- package/build/database/record/instance-relationships/has-one.js +7 -7
- package/build/database/record/relationships/base.js +2 -2
- package/build/database/record/state-machine.js +7 -7
- package/build/database/record/validators/presence.js +1 -1
- package/build/database/record/validators/uniqueness.js +5 -5
- package/build/database/table-data/index.js +4 -4
- package/build/environment-handlers/base.js +2 -2
- package/build/environment-handlers/browser.js +7 -7
- package/build/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
- package/build/environment-handlers/node/cli/commands/console.js +4 -4
- package/build/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
- package/build/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
- package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
- package/build/environment-handlers/node.js +6 -6
- package/build/frontend-model-controller.js +81 -82
- package/build/frontend-model-resource/base-resource.js +78 -115
- package/build/frontend-models/base.js +162 -149
- package/build/frontend-models/clear-pending-debounced-callback.js +1 -1
- package/build/frontend-models/event-hook-models.js +2 -2
- package/build/frontend-models/outgoing-event-buffer.js +2 -2
- package/build/frontend-models/preloader.js +5 -5
- package/build/frontend-models/query.js +43 -38
- package/build/frontend-models/resource-definition.js +6 -6
- package/build/frontend-models/transport-serialization.js +11 -11
- package/build/frontend-models/use-destroyed-event.js +10 -10
- package/build/frontend-models/use-model-class-event.js +11 -11
- package/build/frontend-models/use-updated-event.js +11 -11
- package/build/frontend-models/websocket-channel.js +26 -17
- package/build/frontend-models/websocket-publishers.js +9 -9
- package/build/http-client/response.js +2 -2
- package/build/http-server/client/index.js +8 -8
- package/build/http-server/client/params-to-object.js +10 -10
- package/build/http-server/client/request-buffer/form-data-part.js +2 -2
- package/build/http-server/client/request-buffer/index.js +8 -8
- package/build/http-server/client/request-parser.js +3 -3
- package/build/http-server/client/request-runner.js +6 -6
- package/build/http-server/client/request-timing.js +5 -5
- package/build/http-server/client/request.js +1 -1
- package/build/http-server/client/response.js +5 -5
- package/build/http-server/client/websocket-request.js +4 -4
- package/build/http-server/client/websocket-session.js +18 -18
- package/build/http-server/development-reloader.js +5 -5
- package/build/http-server/index.js +12 -12
- package/build/http-server/remote-address.js +4 -4
- package/build/http-server/server-client.js +3 -3
- package/build/http-server/server-lock.js +4 -4
- package/build/http-server/websocket-channel-subscribers.js +3 -3
- package/build/http-server/websocket-channel.js +1 -1
- package/build/http-server/websocket-connection.js +1 -1
- package/build/http-server/websocket-event-log-store.js +6 -6
- package/build/http-server/websocket-events-host.js +2 -2
- package/build/http-server/worker-handler/in-process.js +7 -7
- package/build/http-server/worker-handler/index.js +4 -4
- package/build/http-server/worker-handler/worker-thread.js +3 -3
- package/build/logger/outputs/array-output.js +3 -3
- package/build/logger/outputs/console-output.js +1 -1
- package/build/logger/outputs/file-output.js +4 -4
- package/build/logger/outputs/stdout-output.js +1 -1
- package/build/logger.js +10 -10
- package/build/mailer/backends/smtp.js +3 -3
- package/build/mailer/base.js +8 -8
- package/build/mailer/delivery.js +4 -4
- package/build/plugins/sqljs-wasm-route-controller.js +1 -1
- package/build/routes/base-route.js +6 -6
- package/build/routes/basic-route.js +1 -1
- package/build/routes/hooks/frontend-model-command-route-hook.js +1 -1
- package/build/routes/index.js +1 -1
- package/build/routes/plugin-routes.js +1 -1
- package/build/routes/resolver.js +11 -11
- package/build/routes/resource-route.js +1 -1
- package/build/src/application.d.ts +3 -3
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +5 -5
- package/build/src/authorization/ability.d.ts +7 -7
- package/build/src/authorization/ability.d.ts.map +1 -1
- package/build/src/authorization/ability.js +9 -9
- package/build/src/authorization/base-resource.d.ts +1 -1
- package/build/src/authorization/base-resource.d.ts.map +1 -1
- package/build/src/authorization/base-resource.js +5 -5
- package/build/src/background-jobs/cron-expression.js +2 -2
- package/build/src/background-jobs/forked-runner-child.js +2 -2
- package/build/src/background-jobs/job-registry.d.ts +1 -1
- package/build/src/background-jobs/job-registry.d.ts.map +1 -1
- package/build/src/background-jobs/job-registry.js +2 -2
- package/build/src/background-jobs/job-runner.js +2 -2
- package/build/src/background-jobs/job.js +2 -2
- package/build/src/background-jobs/json-socket.d.ts +4 -4
- package/build/src/background-jobs/json-socket.d.ts.map +1 -1
- package/build/src/background-jobs/json-socket.js +5 -5
- package/build/src/background-jobs/main.d.ts +18 -18
- package/build/src/background-jobs/main.d.ts.map +1 -1
- package/build/src/background-jobs/main.js +22 -22
- package/build/src/background-jobs/scheduler.d.ts +5 -5
- package/build/src/background-jobs/scheduler.d.ts.map +1 -1
- package/build/src/background-jobs/scheduler.js +8 -8
- package/build/src/background-jobs/store.js +8 -8
- package/build/src/background-jobs/web/controller.js +3 -3
- package/build/src/background-jobs/worker.d.ts +6 -6
- package/build/src/background-jobs/worker.d.ts.map +1 -1
- package/build/src/background-jobs/worker.js +13 -13
- package/build/src/beacon/client.d.ts +4 -4
- package/build/src/beacon/client.d.ts.map +1 -1
- package/build/src/beacon/client.js +12 -9
- package/build/src/beacon/in-process-broker.d.ts.map +1 -1
- package/build/src/beacon/in-process-broker.js +3 -3
- package/build/src/beacon/in-process-client.d.ts +1 -1
- package/build/src/beacon/in-process-client.d.ts.map +1 -1
- package/build/src/beacon/in-process-client.js +3 -3
- package/build/src/beacon/server.d.ts +2 -2
- package/build/src/beacon/server.d.ts.map +1 -1
- package/build/src/beacon/server.js +4 -4
- package/build/src/cli/browser-cli.js +2 -2
- package/build/src/cli/commands/db/base-command.d.ts +2 -2
- package/build/src/cli/commands/db/base-command.d.ts.map +1 -1
- package/build/src/cli/commands/db/base-command.js +3 -3
- package/build/src/cli/index.js +3 -3
- package/build/src/cli/tenant-database-command-helper.d.ts +1 -1
- package/build/src/cli/tenant-database-command-helper.d.ts.map +1 -1
- package/build/src/cli/tenant-database-command-helper.js +4 -4
- package/build/src/cli/use-browser-cli.js +2 -2
- package/build/src/configuration-types.d.ts +12 -2
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +4 -2
- package/build/src/configuration.d.ts +14 -14
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +39 -39
- package/build/src/controller.js +10 -10
- package/build/src/current-configuration.js +2 -2
- package/build/src/database/annotations-async-hooks.js +3 -3
- package/build/src/database/annotations.d.ts.map +1 -1
- package/build/src/database/annotations.js +4 -4
- package/build/src/database/drivers/base-column.d.ts +1 -1
- package/build/src/database/drivers/base-column.d.ts.map +1 -1
- package/build/src/database/drivers/base-column.js +2 -2
- package/build/src/database/drivers/base-foreign-key.d.ts +1 -1
- package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
- package/build/src/database/drivers/base-foreign-key.js +2 -2
- package/build/src/database/drivers/base-table.d.ts +1 -1
- package/build/src/database/drivers/base-table.d.ts.map +1 -1
- package/build/src/database/drivers/base-table.js +2 -2
- package/build/src/database/drivers/base.d.ts +6 -6
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +11 -11
- package/build/src/database/drivers/mssql/index.js +2 -2
- package/build/src/database/drivers/mssql/table.js +2 -2
- package/build/src/database/drivers/mysql/index.js +4 -4
- package/build/src/database/drivers/mysql/query.js +2 -2
- package/build/src/database/drivers/mysql/table.js +2 -2
- package/build/src/database/drivers/pgsql/index.js +3 -3
- package/build/src/database/drivers/sqlite/base.d.ts +3 -3
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +17 -17
- package/build/src/database/drivers/sqlite/index.d.ts +4 -4
- package/build/src/database/drivers/sqlite/index.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.js +12 -12
- package/build/src/database/drivers/sqlite/index.native.js +2 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts +2 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +4 -4
- package/build/src/database/drivers/sqlite/query.js +2 -2
- package/build/src/database/drivers/sqlite/query.web.js +2 -2
- package/build/src/database/drivers/sqlite/sql/alter-table.js +3 -3
- package/build/src/database/drivers/sqlite/table.js +2 -2
- package/build/src/database/migrator/files-finder.js +2 -2
- package/build/src/database/migrator.d.ts +1 -1
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +7 -7
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +9 -9
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +28 -28
- package/build/src/database/pool/base-methods-forward.js +7 -7
- package/build/src/database/pool/base.d.ts +1 -1
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +9 -9
- package/build/src/database/query/from-base.d.ts +1 -1
- package/build/src/database/query/from-base.d.ts.map +1 -1
- package/build/src/database/query/from-base.js +2 -2
- package/build/src/database/query/index.d.ts +4 -4
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +11 -11
- package/build/src/database/query/join-object.js +4 -4
- package/build/src/database/query/model-class-query.d.ts +4 -4
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +40 -40
- package/build/src/database/query/preloader/belongs-to.js +23 -23
- package/build/src/database/query/preloader/has-many.js +21 -21
- package/build/src/database/query/preloader/has-one.js +9 -9
- package/build/src/database/query/preloader/selection.js +4 -4
- package/build/src/database/query/preloader.js +9 -9
- package/build/src/database/query/query-data.js +10 -10
- package/build/src/database/query/where-model-class-hash.js +8 -8
- package/build/src/database/query/with-count.js +10 -10
- package/build/src/database/record/acts-as-list.js +20 -20
- package/build/src/database/record/attachments/handle.d.ts +1 -1
- package/build/src/database/record/attachments/handle.d.ts.map +1 -1
- package/build/src/database/record/attachments/handle.js +3 -3
- package/build/src/database/record/attachments/normalize-input.js +15 -15
- package/build/src/database/record/attachments/storage-drivers/s3.js +7 -7
- package/build/src/database/record/attachments/store.d.ts +2 -2
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +14 -14
- package/build/src/database/record/index.d.ts +18 -25
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +135 -141
- package/build/src/database/record/instance-relationships/base.d.ts +3 -3
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +13 -13
- package/build/src/database/record/instance-relationships/belongs-to.js +4 -4
- package/build/src/database/record/instance-relationships/has-many.js +9 -9
- package/build/src/database/record/instance-relationships/has-one.d.ts +1 -1
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +8 -8
- package/build/src/database/record/relationships/base.js +4 -4
- package/build/src/database/record/state-machine.js +8 -8
- package/build/src/database/record/validators/presence.js +2 -2
- package/build/src/database/record/validators/uniqueness.js +6 -6
- package/build/src/database/table-data/index.d.ts +4 -4
- package/build/src/database/table-data/index.d.ts.map +1 -1
- package/build/src/database/table-data/index.js +5 -5
- package/build/src/environment-handlers/base.js +3 -3
- package/build/src/environment-handlers/browser.d.ts +3 -3
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +8 -8
- package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/console.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/console.js +5 -5
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +4 -4
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +285 -12
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +712 -61
- package/build/src/environment-handlers/node.d.ts +2 -2
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +7 -7
- package/build/src/frontend-model-controller.d.ts +5 -6
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +88 -89
- package/build/src/frontend-model-resource/base-resource.d.ts +36 -27
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +67 -120
- package/build/src/frontend-models/base.d.ts +67 -59
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +171 -158
- package/build/src/frontend-models/clear-pending-debounced-callback.js +2 -2
- package/build/src/frontend-models/event-hook-models.d.ts.map +1 -1
- package/build/src/frontend-models/event-hook-models.js +3 -3
- package/build/src/frontend-models/outgoing-event-buffer.d.ts +1 -1
- package/build/src/frontend-models/outgoing-event-buffer.d.ts.map +1 -1
- package/build/src/frontend-models/outgoing-event-buffer.js +3 -3
- package/build/src/frontend-models/preloader.js +6 -6
- package/build/src/frontend-models/query.d.ts +16 -8
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +43 -39
- package/build/src/frontend-models/resource-definition.js +7 -7
- package/build/src/frontend-models/transport-serialization.js +12 -12
- package/build/src/frontend-models/use-destroyed-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-destroyed-event.js +11 -11
- package/build/src/frontend-models/use-model-class-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-model-class-event.js +12 -12
- package/build/src/frontend-models/use-updated-event.d.ts.map +1 -1
- package/build/src/frontend-models/use-updated-event.js +12 -12
- package/build/src/frontend-models/websocket-channel.d.ts +6 -1
- package/build/src/frontend-models/websocket-channel.d.ts.map +1 -1
- package/build/src/frontend-models/websocket-channel.js +26 -18
- package/build/src/frontend-models/websocket-publishers.js +11 -11
- package/build/src/http-client/response.d.ts +2 -2
- package/build/src/http-client/response.d.ts.map +1 -1
- package/build/src/http-client/response.js +3 -3
- package/build/src/http-server/client/index.d.ts +1 -1
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +9 -9
- package/build/src/http-server/client/params-to-object.js +11 -11
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts +2 -2
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/form-data-part.js +3 -3
- package/build/src/http-server/client/request-buffer/index.d.ts +4 -4
- package/build/src/http-server/client/request-buffer/index.d.ts.map +1 -1
- package/build/src/http-server/client/request-buffer/index.js +9 -9
- package/build/src/http-server/client/request-parser.d.ts +1 -1
- package/build/src/http-server/client/request-parser.d.ts.map +1 -1
- package/build/src/http-server/client/request-parser.js +4 -4
- package/build/src/http-server/client/request-runner.js +7 -7
- package/build/src/http-server/client/request-timing.d.ts +5 -5
- package/build/src/http-server/client/request-timing.d.ts.map +1 -1
- package/build/src/http-server/client/request-timing.js +6 -6
- package/build/src/http-server/client/request.js +2 -2
- package/build/src/http-server/client/response.d.ts +3 -3
- package/build/src/http-server/client/response.d.ts.map +1 -1
- package/build/src/http-server/client/response.js +6 -6
- package/build/src/http-server/client/websocket-request.d.ts +3 -3
- package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-request.js +5 -5
- package/build/src/http-server/client/websocket-session.d.ts +6 -6
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +19 -19
- package/build/src/http-server/development-reloader.d.ts +3 -3
- package/build/src/http-server/development-reloader.d.ts.map +1 -1
- package/build/src/http-server/development-reloader.js +6 -6
- package/build/src/http-server/index.d.ts +7 -7
- package/build/src/http-server/index.d.ts.map +1 -1
- package/build/src/http-server/index.js +13 -13
- package/build/src/http-server/remote-address.js +6 -6
- package/build/src/http-server/server-client.js +4 -4
- package/build/src/http-server/server-lock.js +5 -5
- package/build/src/http-server/websocket-channel-subscribers.d.ts +1 -1
- package/build/src/http-server/websocket-channel-subscribers.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel-subscribers.js +4 -4
- package/build/src/http-server/websocket-channel.d.ts +1 -1
- package/build/src/http-server/websocket-channel.d.ts.map +1 -1
- package/build/src/http-server/websocket-channel.js +2 -2
- package/build/src/http-server/websocket-connection.d.ts +1 -1
- package/build/src/http-server/websocket-connection.d.ts.map +1 -1
- package/build/src/http-server/websocket-connection.js +2 -2
- package/build/src/http-server/websocket-event-log-store.d.ts +1 -1
- package/build/src/http-server/websocket-event-log-store.d.ts.map +1 -1
- package/build/src/http-server/websocket-event-log-store.js +7 -7
- package/build/src/http-server/websocket-events-host.d.ts +1 -1
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +3 -3
- package/build/src/http-server/worker-handler/in-process.d.ts +3 -3
- package/build/src/http-server/worker-handler/in-process.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/in-process.js +9 -9
- package/build/src/http-server/worker-handler/index.d.ts +4 -4
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +5 -5
- package/build/src/http-server/worker-handler/worker-thread.d.ts +2 -2
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +4 -4
- package/build/src/logger/outputs/array-output.d.ts +3 -3
- package/build/src/logger/outputs/array-output.d.ts.map +1 -1
- package/build/src/logger/outputs/array-output.js +4 -4
- package/build/src/logger/outputs/console-output.d.ts +1 -1
- package/build/src/logger/outputs/console-output.d.ts.map +1 -1
- package/build/src/logger/outputs/console-output.js +2 -2
- package/build/src/logger/outputs/file-output.d.ts +4 -4
- package/build/src/logger/outputs/file-output.d.ts.map +1 -1
- package/build/src/logger/outputs/file-output.js +5 -5
- package/build/src/logger/outputs/stdout-output.d.ts.map +1 -1
- package/build/src/logger/outputs/stdout-output.js +2 -2
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/logger.js +11 -11
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +5 -5
- package/build/src/mailer/base.js +11 -11
- package/build/src/mailer/delivery.d.ts +3 -3
- package/build/src/mailer/delivery.d.ts.map +1 -1
- package/build/src/mailer/delivery.js +5 -5
- package/build/src/plugins/sqljs-wasm-route-controller.js +2 -2
- package/build/src/routes/base-route.d.ts +6 -6
- package/build/src/routes/base-route.d.ts.map +1 -1
- package/build/src/routes/base-route.js +7 -7
- package/build/src/routes/basic-route.js +2 -2
- package/build/src/routes/hooks/frontend-model-command-route-hook.js +2 -2
- package/build/src/routes/index.js +2 -2
- package/build/src/routes/plugin-routes.js +2 -2
- package/build/src/routes/resolver.d.ts +1 -1
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +13 -13
- package/build/src/routes/resource-route.d.ts +1 -1
- package/build/src/routes/resource-route.d.ts.map +1 -1
- package/build/src/routes/resource-route.js +2 -2
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.d.ts.map +1 -1
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +8 -8
- package/build/src/testing/expect-utils.js +13 -13
- package/build/src/testing/expect.d.ts +1 -1
- package/build/src/testing/expect.d.ts.map +1 -1
- package/build/src/testing/expect.js +9 -9
- package/build/src/testing/test-files-finder.d.ts +8 -8
- package/build/src/testing/test-files-finder.d.ts.map +1 -1
- package/build/src/testing/test-files-finder.js +9 -9
- package/build/src/testing/test-filter-parser.js +3 -3
- package/build/src/testing/test-runner.d.ts +2 -2
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +17 -17
- package/build/src/testing/test-suite-splitter.js +2 -2
- package/build/src/testing/test.d.ts +2 -2
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +16 -16
- package/build/src/utils/backtrace-cleaner.d.ts +1 -1
- package/build/src/utils/backtrace-cleaner.d.ts.map +1 -1
- package/build/src/utils/backtrace-cleaner.js +2 -2
- package/build/src/utils/format-value.js +2 -2
- package/build/src/utils/model-scope.js +2 -2
- package/build/src/utils/ransack.js +27 -27
- package/build/src/utils/with-tracked-stack-async-hooks.js +8 -8
- package/build/src/utils/with-tracked-stack.js +4 -4
- package/build/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
- package/build/testing/expect-utils.js +11 -11
- package/build/testing/expect.js +7 -7
- package/build/testing/test-files-finder.js +8 -8
- package/build/testing/test-filter-parser.js +2 -2
- package/build/testing/test-runner.js +16 -16
- package/build/testing/test-suite-splitter.js +1 -1
- package/build/testing/test.js +15 -15
- package/build/utils/backtrace-cleaner.js +1 -1
- package/build/utils/format-value.js +1 -1
- package/build/utils/model-scope.js +1 -1
- package/build/utils/ransack.js +26 -26
- package/build/utils/with-tracked-stack-async-hooks.js +7 -7
- package/build/utils/with-tracked-stack.js +3 -3
- package/package.json +2 -1
- package/src/application.js +4 -4
- package/src/authorization/ability.js +8 -8
- package/src/authorization/base-resource.js +4 -4
- package/src/background-jobs/cron-expression.js +1 -1
- package/src/background-jobs/forked-runner-child.js +1 -1
- package/src/background-jobs/job-registry.js +1 -1
- package/src/background-jobs/job-runner.js +1 -1
- package/src/background-jobs/job.js +1 -1
- package/src/background-jobs/json-socket.js +4 -4
- package/src/background-jobs/main.js +21 -21
- package/src/background-jobs/scheduler.js +7 -7
- package/src/background-jobs/store.js +7 -7
- package/src/background-jobs/web/controller.js +2 -2
- package/src/background-jobs/worker.js +12 -12
- package/src/beacon/client.js +11 -8
- package/src/beacon/in-process-broker.js +2 -2
- package/src/beacon/in-process-client.js +2 -2
- package/src/beacon/server.js +3 -3
- package/src/cli/browser-cli.js +1 -1
- package/src/cli/commands/db/base-command.js +2 -2
- package/src/cli/index.js +2 -2
- package/src/cli/tenant-database-command-helper.js +3 -3
- package/src/cli/use-browser-cli.js +1 -1
- package/src/configuration-types.js +3 -1
- package/src/configuration.js +38 -38
- package/src/controller.js +8 -8
- package/src/current-configuration.js +1 -1
- package/src/database/annotations-async-hooks.js +2 -2
- package/src/database/annotations.js +3 -3
- package/src/database/drivers/base-column.js +1 -1
- package/src/database/drivers/base-foreign-key.js +1 -1
- package/src/database/drivers/base-table.js +1 -1
- package/src/database/drivers/base.js +10 -10
- package/src/database/drivers/mssql/index.js +1 -1
- package/src/database/drivers/mssql/table.js +1 -1
- package/src/database/drivers/mysql/index.js +3 -3
- package/src/database/drivers/mysql/query.js +1 -1
- package/src/database/drivers/mysql/table.js +1 -1
- package/src/database/drivers/pgsql/index.js +2 -2
- package/src/database/drivers/sqlite/base.js +16 -16
- package/src/database/drivers/sqlite/index.js +11 -11
- package/src/database/drivers/sqlite/index.native.js +1 -1
- package/src/database/drivers/sqlite/index.web.js +3 -3
- package/src/database/drivers/sqlite/query.js +1 -1
- package/src/database/drivers/sqlite/query.web.js +1 -1
- package/src/database/drivers/sqlite/sql/alter-table.js +2 -2
- package/src/database/drivers/sqlite/table.js +1 -1
- package/src/database/migrator/files-finder.js +1 -1
- package/src/database/migrator.js +6 -6
- package/src/database/pool/async-tracked-multi-connection.js +27 -27
- package/src/database/pool/base-methods-forward.js +4 -4
- package/src/database/pool/base.js +8 -8
- package/src/database/query/from-base.js +1 -1
- package/src/database/query/index.js +10 -10
- package/src/database/query/join-object.js +3 -3
- package/src/database/query/model-class-query.js +39 -39
- package/src/database/query/preloader/belongs-to.js +22 -22
- package/src/database/query/preloader/has-many.js +20 -20
- package/src/database/query/preloader/has-one.js +8 -8
- package/src/database/query/preloader/selection.js +3 -3
- package/src/database/query/preloader.js +8 -8
- package/src/database/query/query-data.js +9 -9
- package/src/database/query/where-model-class-hash.js +7 -7
- package/src/database/query/with-count.js +9 -9
- package/src/database/record/acts-as-list.js +15 -15
- package/src/database/record/attachments/handle.js +2 -2
- package/src/database/record/attachments/normalize-input.js +12 -12
- package/src/database/record/attachments/storage-drivers/s3.js +6 -6
- package/src/database/record/attachments/store.js +13 -13
- package/src/database/record/index.js +115 -121
- package/src/database/record/instance-relationships/base.js +11 -11
- package/src/database/record/instance-relationships/belongs-to.js +3 -3
- package/src/database/record/instance-relationships/has-many.js +8 -8
- package/src/database/record/instance-relationships/has-one.js +7 -7
- package/src/database/record/relationships/base.js +2 -2
- package/src/database/record/state-machine.js +7 -7
- package/src/database/record/validators/presence.js +1 -1
- package/src/database/record/validators/uniqueness.js +5 -5
- package/src/database/table-data/index.js +4 -4
- package/src/environment-handlers/base.js +2 -2
- package/src/environment-handlers/browser.js +7 -7
- package/src/environment-handlers/node/cli/commands/cli-command-context.js +1 -1
- package/src/environment-handlers/node/cli/commands/console.js +4 -4
- package/src/environment-handlers/node/cli/commands/db/schema/dump.js +1 -1
- package/src/environment-handlers/node/cli/commands/db/schema/load.js +3 -3
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +836 -60
- package/src/environment-handlers/node.js +6 -6
- package/src/frontend-model-controller.js +81 -82
- package/src/frontend-model-resource/base-resource.js +78 -115
- package/src/frontend-models/base.js +162 -149
- package/src/frontend-models/clear-pending-debounced-callback.js +1 -1
- package/src/frontend-models/event-hook-models.js +2 -2
- package/src/frontend-models/outgoing-event-buffer.js +2 -2
- package/src/frontend-models/preloader.js +5 -5
- package/src/frontend-models/query.js +43 -38
- package/src/frontend-models/resource-definition.js +6 -6
- package/src/frontend-models/transport-serialization.js +11 -11
- package/src/frontend-models/use-destroyed-event.js +10 -10
- package/src/frontend-models/use-model-class-event.js +11 -11
- package/src/frontend-models/use-updated-event.js +11 -11
- package/src/frontend-models/websocket-channel.js +26 -17
- package/src/frontend-models/websocket-publishers.js +9 -9
- package/src/http-client/response.js +2 -2
- package/src/http-server/client/index.js +8 -8
- package/src/http-server/client/params-to-object.js +10 -10
- package/src/http-server/client/request-buffer/form-data-part.js +2 -2
- package/src/http-server/client/request-buffer/index.js +8 -8
- package/src/http-server/client/request-parser.js +3 -3
- package/src/http-server/client/request-runner.js +6 -6
- package/src/http-server/client/request-timing.js +5 -5
- package/src/http-server/client/request.js +1 -1
- package/src/http-server/client/response.js +5 -5
- package/src/http-server/client/websocket-request.js +4 -4
- package/src/http-server/client/websocket-session.js +18 -18
- package/src/http-server/development-reloader.js +5 -5
- package/src/http-server/index.js +12 -12
- package/src/http-server/remote-address.js +4 -4
- package/src/http-server/server-client.js +3 -3
- package/src/http-server/server-lock.js +4 -4
- package/src/http-server/websocket-channel-subscribers.js +3 -3
- package/src/http-server/websocket-channel.js +1 -1
- package/src/http-server/websocket-connection.js +1 -1
- package/src/http-server/websocket-event-log-store.js +6 -6
- package/src/http-server/websocket-events-host.js +2 -2
- package/src/http-server/worker-handler/in-process.js +7 -7
- package/src/http-server/worker-handler/index.js +4 -4
- package/src/http-server/worker-handler/worker-thread.js +3 -3
- package/src/logger/outputs/array-output.js +3 -3
- package/src/logger/outputs/console-output.js +1 -1
- package/src/logger/outputs/file-output.js +4 -4
- package/src/logger/outputs/stdout-output.js +1 -1
- package/src/logger.js +10 -10
- package/src/mailer/backends/smtp.js +3 -3
- package/src/mailer/base.js +8 -8
- package/src/mailer/delivery.js +4 -4
- package/src/plugins/sqljs-wasm-route-controller.js +1 -1
- package/src/routes/base-route.js +6 -6
- package/src/routes/basic-route.js +1 -1
- package/src/routes/hooks/frontend-model-command-route-hook.js +1 -1
- package/src/routes/index.js +1 -1
- package/src/routes/plugin-routes.js +1 -1
- package/src/routes/resolver.js +11 -11
- package/src/routes/resource-route.js +1 -1
- package/src/testing/browser-frontend-model-event-hook-scenarios.js +7 -7
- package/src/testing/expect-utils.js +11 -11
- package/src/testing/expect.js +7 -7
- package/src/testing/test-files-finder.js +8 -8
- package/src/testing/test-filter-parser.js +2 -2
- package/src/testing/test-runner.js +16 -16
- package/src/testing/test-suite-splitter.js +1 -1
- package/src/testing/test.js +15 -15
- package/src/utils/backtrace-cleaner.js +1 -1
- package/src/utils/format-value.js +1 -1
- package/src/utils/model-scope.js +1 -1
- package/src/utils/ransack.js +26 -26
- package/src/utils/with-tracked-stack-async-hooks.js +7 -7
- package/src/utils/with-tracked-stack.js +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../../src/authorization/ability.js"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH;;;;;;;GAOG;AAEH,kEAAkE;AAClE;IACE;;
|
|
1
|
+
{"version":3,"file":"ability.d.ts","sourceRoot":"","sources":["../../../src/authorization/ability.js"],"names":[],"mappings":"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"}
|
|
@@ -16,23 +16,23 @@
|
|
|
16
16
|
export default class VelociousAuthorizationAbility {
|
|
17
17
|
/**
|
|
18
18
|
* Create.
|
|
19
|
-
|
|
19
|
+
* @type {string[]} */
|
|
20
20
|
static CREATE = ["create"];
|
|
21
21
|
/**
|
|
22
22
|
* Read.
|
|
23
|
-
|
|
23
|
+
* @type {string[]} */
|
|
24
24
|
static READ = ["read"];
|
|
25
25
|
/**
|
|
26
26
|
* Update.
|
|
27
|
-
|
|
27
|
+
* @type {string[]} */
|
|
28
28
|
static UPDATE = ["update"];
|
|
29
29
|
/**
|
|
30
30
|
* Destroy.
|
|
31
|
-
|
|
31
|
+
* @type {string[]} */
|
|
32
32
|
static DESTROY = ["destroy"];
|
|
33
33
|
/**
|
|
34
34
|
* Crud.
|
|
35
|
-
|
|
35
|
+
* @type {string[]} */
|
|
36
36
|
static CRUD = ["create", "read", "update", "destroy"];
|
|
37
37
|
/**
|
|
38
38
|
* Runs constructor.
|
|
@@ -47,11 +47,11 @@ export default class VelociousAuthorizationAbility {
|
|
|
47
47
|
this.resources = resources || this._resolveResourcesFromConfiguration();
|
|
48
48
|
/**
|
|
49
49
|
* Narrows the runtime value to the documented type.
|
|
50
|
-
|
|
50
|
+
* @type {AbilityRuleType[]} */
|
|
51
51
|
this.rules = [];
|
|
52
52
|
/**
|
|
53
53
|
* Narrows the runtime value to the documented type.
|
|
54
|
-
|
|
54
|
+
* @type {Record<string, boolean>} */
|
|
55
55
|
this.loadedModelClassAbilities = {};
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
@@ -65,7 +65,7 @@ export default class VelociousAuthorizationAbility {
|
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
67
|
* Resolved.
|
|
68
|
-
|
|
68
|
+
* @type {Array<typeof import("./base-resource.js").default>} */
|
|
69
69
|
const resolved = [];
|
|
70
70
|
const backendProjects = configuration.getBackendProjects();
|
|
71
71
|
for (const backendProject of backendProjects) {
|
|
@@ -279,4 +279,4 @@ export default class VelociousAuthorizationAbility {
|
|
|
279
279
|
query.where(conditions);
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2FiaWxpdHkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7O0dBSUc7QUFFSDs7Ozs7OztHQU9HO0FBRUgsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQTZCO0lBQ2hEOzt5QkFFcUI7SUFDckIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRTFCOzt5QkFFcUI7SUFDckIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRXRCOzt5QkFFcUI7SUFDckIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRTFCOzt5QkFFcUI7SUFDckIsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRTVCOzt5QkFFcUI7SUFDckIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRXJEOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFDLEdBQUcsRUFBRTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQTtRQUV2RTs7c0NBRThCO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBO1FBRWY7OzRDQUVvQztRQUNwQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQ0FBa0M7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QUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xCLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7UUFFMUYsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsa0JBQWtCLENBQUMsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUM7UUFDeEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3ZCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU07Z0JBQ04sVUFBVTthQUNYLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBEZWZpbmVzIHRoaXMgdHlwZWRlZi5cbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBbTUM9dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0XVxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsID8+IHwgc3RyaW5nIHwgKChxdWVyeTogaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxNQz4sIGFyZ3M6IHthYmlsaXR5OiBWZWxvY2lvdXNBdXRob3JpemF0aW9uQWJpbGl0eSwgYWN0aW9uOiBzdHJpbmcsIG1vZGVsQ2xhc3M6IE1DfSkgPT4gdm9pZCB8IGltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8TUM+KX0gQWJpbGl0eUNvbmRpdGlvbnNUeXBlXG4gKi9cblxuLyoqXG4gKiBBYmlsaXR5UnVsZVR5cGUgdHlwZS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IEFiaWxpdHlSdWxlVHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gYWN0aW9ucyAtIEFjdGlvbnMgY292ZXJlZCBieSBydWxlLlxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAqIEBwcm9wZXJ0eSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlIHwgdW5kZWZpbmVkfSBjb25kaXRpb25zIC0gQ29uZGl0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7XCJhbGxvd1wiIHwgXCJkZW55XCJ9IGVmZmVjdCAtIFJ1bGUgZWZmZWN0LlxuICovXG5cbi8qKiBDYW5DYW4tc3R5bGUgYWJpbGl0eSBvYmplY3QgZm9yIHF1ZXJ5LWxldmVsIGFjY2VzcyBjb250cm9sLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzQXV0aG9yaXphdGlvbkFiaWxpdHkge1xuICAvKipcbiAgICogQ3JlYXRlLlxuICAgIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgc3RhdGljIENSRUFURSA9IFtcImNyZWF0ZVwiXVxuXG4gIC8qKlxuICAgKiBSZWFkLlxuICAgIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgc3RhdGljIFJFQUQgPSBbXCJyZWFkXCJdXG5cbiAgLyoqXG4gICAqIFVwZGF0ZS5cbiAgICBAdHlwZSB7c3RyaW5nW119ICovXG4gIHN0YXRpYyBVUERBVEUgPSBbXCJ1cGRhdGVcIl1cblxuICAvKipcbiAgICogRGVzdHJveS5cbiAgICBAdHlwZSB7c3RyaW5nW119ICovXG4gIHN0YXRpYyBERVNUUk9ZID0gW1wiZGVzdHJveVwiXVxuXG4gIC8qKlxuICAgKiBDcnVkLlxuICAgIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgc3RhdGljIENSVUQgPSBbXCJjcmVhdGVcIiwgXCJyZWFkXCIsIFwidXBkYXRlXCIsIFwiZGVzdHJveVwiXVxuXG4gIC8qKlxuICAgKiBSdW5zIGNvbnN0cnVjdG9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIEFiaWxpdHkgYXJncy5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gW2FyZ3MuY29udGV4dF0gLSBBYmlsaXR5IGNvbnRleHQuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgPz59IFthcmdzLmxvY2Fsc10gLSBBYmlsaXR5IGxvY2Fscy5cbiAgICogQHBhcmFtIHtBcnJheTx0eXBlb2YgaW1wb3J0KFwiLi9iYXNlLXJlc291cmNlLmpzXCIpLmRlZmF1bHQ+fSBbYXJncy5yZXNvdXJjZXNdIC0gUmVzb3VyY2UgY2xhc3Nlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtjb250ZXh0ID0ge30sIGxvY2FscyA9IHt9LCByZXNvdXJjZXN9ID0ge30pIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gICAgdGhpcy5sb2NhbHMgPSBsb2NhbHNcbiAgICB0aGlzLnJlc291cmNlcyA9IHJlc291cmNlcyB8fCB0aGlzLl9yZXNvbHZlUmVzb3VyY2VzRnJvbUNvbmZpZ3VyYXRpb24oKVxuXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgQHR5cGUge0FiaWxpdHlSdWxlVHlwZVtdfSAqL1xuICAgIHRoaXMucnVsZXMgPSBbXVxuXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAgQHR5cGUge1JlY29yZDxzdHJpbmcsIGJvb2xlYW4+fSAqL1xuICAgIHRoaXMubG9hZGVkTW9kZWxDbGFzc0FiaWxpdGllcyA9IHt9XG4gIH1cblxuICAvKipcbiAgICogQXV0by1yZXNvbHZlcyByZXNvdXJjZSBjbGFzc2VzIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24ncyBiYWNrZW5kUHJvamVjdHMgd2hlbiBubyBleHBsaWNpdCByZXNvdXJjZXMgYXJlIHByb3ZpZGVkLlxuICAgKiBAcmV0dXJucyB7QXJyYXk8dHlwZW9mIGltcG9ydChcIi4vYmFzZS1yZXNvdXJjZS5qc1wiKS5kZWZhdWx0Pn0gUmVzb2x2ZWQgcmVzb3VyY2UgY2xhc3Nlcy5cbiAgICovXG4gIF9yZXNvbHZlUmVzb3VyY2VzRnJvbUNvbmZpZ3VyYXRpb24oKSB7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuY29udGV4dD8uY29uZmlndXJhdGlvblxuXG4gICAgaWYgKCFjb25maWd1cmF0aW9uIHx8IHR5cGVvZiBjb25maWd1cmF0aW9uLmdldEJhY2tlbmRQcm9qZWN0cyAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlZC5cbiAgICAgIEB0eXBlIHtBcnJheTx0eXBlb2YgaW1wb3J0KFwiLi9iYXNlLXJlc291cmNlLmpzXCIpLmRlZmF1bHQ+fSAqL1xuICAgIGNvbnN0IHJlc29sdmVkID0gW11cbiAgICBjb25zdCBiYWNrZW5kUHJvamVjdHMgPSBjb25maWd1cmF0aW9uLmdldEJhY2tlbmRQcm9qZWN0cygpXG5cbiAgICBmb3IgKGNvbnN0IGJhY2tlbmRQcm9qZWN0IG9mIGJhY2tlbmRQcm9qZWN0cykge1xuICAgICAgY29uc3QgZnJvbnRlbmRNb2RlbHMgPSBiYWNrZW5kUHJvamVjdC5mcm9udGVuZE1vZGVsc1xuXG4gICAgICBpZiAoIWZyb250ZW5kTW9kZWxzIHx8IHR5cGVvZiBmcm9udGVuZE1vZGVscyAhPT0gXCJvYmplY3RcIikgY29udGludWVcblxuICAgICAgZm9yIChjb25zdCByZXNvdXJjZURlZmluaXRpb24gb2YgT2JqZWN0LnZhbHVlcyhmcm9udGVuZE1vZGVscykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZURlZmluaXRpb24gPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgcmVzb3VyY2VEZWZpbml0aW9uLm1vZGVsQ2xhc3MgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHJlc29sdmVkLnB1c2gocmVzb3VyY2VEZWZpbml0aW9uKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc29sdmVkXG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgY29udGV4dC5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIENvbnRleHQuXG4gICAqL1xuICBnZXRDb250ZXh0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBsb2NhbHMuXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gLSBMb2NhbHMuXG4gICAqL1xuICBnZXRMb2NhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9jYWxzXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjdXJyZW50IHVzZXIuXG4gICAqIEByZXR1cm5zIHs/fSAtIEN1cnJlbnQgdXNlciBmcm9tIGNvbnRleHQuXG4gICAqL1xuICBjdXJyZW50VXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LmN1cnJlbnRVc2VyXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjYW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFjdGlvbnMgLSBBY3Rpb24ocykuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlfSBbY29uZGl0aW9uc10gLSBDb25kaXRpb25zLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBjYW4oYWN0aW9ucywgbW9kZWxDbGFzcywgY29uZGl0aW9ucykge1xuICAgIHRoaXMuYWRkUnVsZSh7YWN0aW9ucywgY29uZGl0aW9ucywgZWZmZWN0OiBcImFsbG93XCIsIG1vZGVsQ2xhc3N9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY2Fubm90LlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhY3Rpb25zIC0gQWN0aW9uKHMpLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlDb25kaXRpb25zVHlwZX0gW2NvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgY2Fubm90KGFjdGlvbnMsIG1vZGVsQ2xhc3MsIGNvbmRpdGlvbnMpIHtcbiAgICB0aGlzLmFkZFJ1bGUoe2FjdGlvbnMsIGNvbmRpdGlvbnMsIGVmZmVjdDogXCJkZW55XCIsIG1vZGVsQ2xhc3N9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWRkIHJ1bGUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUnVsZSBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdfSBhcmdzLmFjdGlvbnMgLSBBY3Rpb24ocykuXG4gICAqIEBwYXJhbSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlfSBbYXJncy5jb25kaXRpb25zXSAtIENvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSB7XCJhbGxvd1wiIHwgXCJkZW55XCJ9IGFyZ3MuZWZmZWN0IC0gRWZmZWN0LlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGFkZFJ1bGUoe2FjdGlvbnMsIGNvbmRpdGlvbnMsIGVmZmVjdCwgbW9kZWxDbGFzc30pIHtcbiAgICBjb25zdCBub3JtYWxpemVkQWN0aW9ucyA9IEFycmF5LmlzQXJyYXkoYWN0aW9ucykgPyBhY3Rpb25zIDogW2FjdGlvbnNdXG5cbiAgICB0aGlzLnJ1bGVzLnB1c2goe2FjdGlvbnM6IG5vcm1hbGl6ZWRBY3Rpb25zLCBjb25kaXRpb25zLCBlZmZlY3QsIG1vZGVsQ2xhc3N9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbG9hZCBhYmlsaXRpZXMgZm9yIG1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBsb2FkQWJpbGl0aWVzRm9yTW9kZWxDbGFzcyhtb2RlbENsYXNzKSB7XG4gICAgY29uc3Qga2V5ID0gbW9kZWxDbGFzcy5nZXRNb2RlbE5hbWUoKVxuXG4gICAgaWYgKHRoaXMubG9hZGVkTW9kZWxDbGFzc0FiaWxpdGllc1trZXldKSByZXR1cm5cblxuICAgIHRoaXMubG9hZGVkTW9kZWxDbGFzc0FiaWxpdGllc1trZXldID0gdHJ1ZVxuXG4gICAgZm9yIChjb25zdCBSZXNvdXJjZUNsYXNzIG9mIHRoaXMucmVzb3VyY2VzKSB7XG4gICAgICBjb25zdCByZXNvdXJjZU1vZGVsQ2xhc3MgPSBSZXNvdXJjZUNsYXNzLm1vZGVsQ2xhc3MoKVxuXG4gICAgICBpZiAoIXJlc291cmNlTW9kZWxDbGFzcykgY29udGludWVcbiAgICAgIGlmIChyZXNvdXJjZU1vZGVsQ2xhc3MgIT09IG1vZGVsQ2xhc3MpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IHJlc291cmNlSW5zdGFuY2UgPSBuZXcgUmVzb3VyY2VDbGFzcyh7XG4gICAgICAgIGFiaWxpdHk6IHRoaXMsXG4gICAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dCxcbiAgICAgICAgbG9jYWxzOiB0aGlzLmxvY2Fsc1xuICAgICAgfSlcblxuICAgICAgcmVzb3VyY2VJbnN0YW5jZS5hYmlsaXRpZXMoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFwcGx5IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFF1ZXJ5IGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbiAtIFJlcXVlc3RlZCBhY3Rpb24uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59IGFyZ3MucXVlcnkgLSBRdWVyeS5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gLSBBdXRob3JpemVkIHF1ZXJ5LlxuICAgKi9cbiAgYXBwbHlUb1F1ZXJ5KHthY3Rpb24sIG1vZGVsQ2xhc3MsIHF1ZXJ5fSkge1xuICAgIHRoaXMubG9hZEFiaWxpdGllc0Zvck1vZGVsQ2xhc3MobW9kZWxDbGFzcylcblxuICAgIGNvbnN0IGFwcGxpY2FibGVSdWxlcyA9IHRoaXMucnVsZXNGb3Ioe2FjdGlvbiwgbW9kZWxDbGFzc30pXG4gICAgY29uc3QgYWxsb3dSdWxlcyA9IGFwcGxpY2FibGVSdWxlcy5maWx0ZXIoKHJ1bGUpID0+IHJ1bGUuZWZmZWN0ID09PSBcImFsbG93XCIpXG4gICAgY29uc3QgZGVueVJ1bGVzID0gYXBwbGljYWJsZVJ1bGVzLmZpbHRlcigocnVsZSkgPT4gcnVsZS5lZmZlY3QgPT09IFwiZGVueVwiKVxuXG4gICAgaWYgKGFsbG93UnVsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gcXVlcnkud2hlcmUoXCIxPTBcIilcbiAgICB9XG5cbiAgICBpZiAoYWxsb3dSdWxlcy5zb21lKChydWxlKSA9PiAhcnVsZS5jb25kaXRpb25zKSkge1xuICAgICAgdGhpcy5hcHBseURlbnlSdWxlcyh7YWN0aW9uLCBkZW55UnVsZXMsIG1vZGVsQ2xhc3MsIHF1ZXJ5fSlcbiAgICAgIHJldHVybiBxdWVyeVxuICAgIH1cblxuICAgIGNvbnN0IGFsbG93U3FsUGFydHMgPSB0aGlzLmNvbmRpdGlvblNxbFBhcnRzKHthY3Rpb24sIG1vZGVsQ2xhc3MsIHF1ZXJ5LCBydWxlczogYWxsb3dSdWxlc30pXG5cbiAgICBpZiAoYWxsb3dTcWxQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBxdWVyeS53aGVyZShcIjE9MFwiKVxuICAgIH1cblxuICAgIHF1ZXJ5LndoZXJlKGAoJHthbGxvd1NxbFBhcnRzLmpvaW4oXCIgT1IgXCIpfSlgKVxuICAgIHRoaXMuYXBwbHlEZW55UnVsZXMoe2FjdGlvbiwgZGVueVJ1bGVzLCBtb2RlbENsYXNzLCBxdWVyeX0pXG5cbiAgICByZXR1cm4gcXVlcnlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJ1bGVzIGZvci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBSdWxlIGxvb2t1cCBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hY3Rpb24gLSBBY3Rpb24uXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge0FiaWxpdHlSdWxlVHlwZVtdfSAtIE1hdGNoaW5nIHJ1bGVzLlxuICAgKi9cbiAgcnVsZXNGb3Ioe2FjdGlvbiwgbW9kZWxDbGFzc30pIHtcbiAgICByZXR1cm4gdGhpcy5ydWxlcy5maWx0ZXIoKHJ1bGUpID0+IHtcbiAgICAgIGlmIChydWxlLm1vZGVsQ2xhc3MgIT09IG1vZGVsQ2xhc3MpIHJldHVybiBmYWxzZVxuXG4gICAgICByZXR1cm4gcnVsZS5hY3Rpb25zLmluY2x1ZGVzKGFjdGlvbikgfHwgcnVsZS5hY3Rpb25zLmluY2x1ZGVzKFwibWFuYWdlXCIpXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNvbmRpdGlvbiBzcWwgcGFydHMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gU1FMIGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbiAtIEFjdGlvbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gYXJncy5xdWVyeSAtIEJhc2UgcXVlcnkuXG4gICAqIEBwYXJhbSB7QWJpbGl0eVJ1bGVUeXBlW119IGFyZ3MucnVsZXMgLSBSdWxlcy5cbiAgICogQHJldHVybnMge3N0cmluZ1tdfSAtIFNRTCBjb25kaXRpb24gcGFydHMuXG4gICAqL1xuICBjb25kaXRpb25TcWxQYXJ0cyh7YWN0aW9uLCBtb2RlbENsYXNzLCBxdWVyeSwgcnVsZXN9KSB7XG4gICAgY29uc3QgcGsgPSBtb2RlbENsYXNzLnByaW1hcnlLZXkoKVxuICAgIGNvbnN0IHF1b3RlZEJhc2VUYWJsZSA9IHF1ZXJ5LmRyaXZlci5xdW90ZVRhYmxlKG1vZGVsQ2xhc3MudGFibGVOYW1lKCkpXG4gICAgY29uc3QgcXVvdGVkUGsgPSBxdWVyeS5kcml2ZXIucXVvdGVDb2x1bW4ocGspXG4gICAgY29uc3Qgc3FsUGFydHMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICBpZiAoIXJ1bGUuY29uZGl0aW9ucykgY29udGludWVcblxuICAgICAgY29uc3Qgc2NvcGVkUXVlcnkgPSBtb2RlbENsYXNzLl9uZXdRdWVyeSgpXG4gICAgICBjb25zdCByZXN1bHRRdWVyeSA9IHRoaXMuYXBwbHlSdWxlQ29uZGl0aW9uKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjb25kaXRpb25zOiBydWxlLmNvbmRpdGlvbnMsXG4gICAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICAgIHF1ZXJ5OiBzY29wZWRRdWVyeVxuICAgICAgfSlcbiAgICAgIGNvbnN0IGZpbmFsUXVlcnkgPSByZXN1bHRRdWVyeSB8fCBzY29wZWRRdWVyeVxuICAgICAgY29uc3Qgc2VsZWN0ZWRQa1NxbCA9IGAke3F1b3RlZEJhc2VUYWJsZX0uJHtxdW90ZWRQa31gXG5cbiAgICAgIGlmIChmaW5hbFF1ZXJ5Ll9kaXN0aW5jdCkge1xuICAgICAgICBxdWVyeS5kaXN0aW5jdCh0cnVlKVxuICAgICAgfVxuXG4gICAgICBmaW5hbFF1ZXJ5LnNlbGVjdChzZWxlY3RlZFBrU3FsKVxuXG4gICAgICBzcWxQYXJ0cy5wdXNoKGAke3F1b3RlZEJhc2VUYWJsZX0uJHtxdW90ZWRQa30gSU4gKCR7ZmluYWxRdWVyeS50b1NxbCgpfSlgKVxuICAgIH1cblxuICAgIHJldHVybiBzcWxQYXJ0c1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYXBwbHkgZGVueSBydWxlcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBEZW55IGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbiAtIEFjdGlvbi5cbiAgICogQHBhcmFtIHtBYmlsaXR5UnVsZVR5cGVbXX0gYXJncy5kZW55UnVsZXMgLSBEZW55IHJ1bGVzLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDx0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSBhcmdzLnF1ZXJ5IC0gUXVlcnkuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGFwcGx5RGVueVJ1bGVzKHthY3Rpb24sIGRlbnlSdWxlcywgbW9kZWxDbGFzcywgcXVlcnl9KSB7XG4gICAgaWYgKGRlbnlSdWxlcy5sZW5ndGggPT09IDApIHJldHVyblxuXG4gICAgaWYgKGRlbnlSdWxlcy5zb21lKChydWxlKSA9PiAhcnVsZS5jb25kaXRpb25zKSkge1xuICAgICAgcXVlcnkud2hlcmUoXCIxPTBcIilcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRlbnlTcWxQYXJ0cyA9IHRoaXMuY29uZGl0aW9uU3FsUGFydHMoe2FjdGlvbiwgbW9kZWxDbGFzcywgcXVlcnksIHJ1bGVzOiBkZW55UnVsZXN9KVxuXG4gICAgaWYgKGRlbnlTcWxQYXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICBxdWVyeS53aGVyZShgTk9UICgke2RlbnlTcWxQYXJ0cy5qb2luKFwiIE9SIFwiKX0pYClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhcHBseSBydWxlIGNvbmRpdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBDb25kaXRpb24gYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gQWN0aW9uLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlDb25kaXRpb25zVHlwZX0gYXJncy5jb25kaXRpb25zIC0gUnVsZSBjb25kaXRpb25zLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDx0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSBhcmdzLnF1ZXJ5IC0gUXVlcnkuXG4gICAqIEByZXR1cm5zIHt2b2lkIHwgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDx0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSAtIE9wdGlvbmFsIHJlcGxhY2VtZW50IHF1ZXJ5LlxuICAgKi9cbiAgYXBwbHlSdWxlQ29uZGl0aW9uKHthY3Rpb24sIGNvbmRpdGlvbnMsIG1vZGVsQ2xhc3MsIHF1ZXJ5fSkge1xuICAgIGlmICh0eXBlb2YgY29uZGl0aW9ucyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcXVlcnkud2hlcmUoY29uZGl0aW9ucylcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZGl0aW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gY29uZGl0aW9ucyhxdWVyeSwge1xuICAgICAgICBhYmlsaXR5OiB0aGlzLFxuICAgICAgICBhY3Rpb24sXG4gICAgICAgIG1vZGVsQ2xhc3NcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcXVlcnkud2hlcmUoY29uZGl0aW9ucylcbiAgfVxufVxuIl19
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2FiaWxpdHkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7O0dBSUc7QUFFSDs7Ozs7OztHQU9HO0FBRUgsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQTZCO0lBQ2hEOzswQkFFc0I7SUFDdEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRTFCOzswQkFFc0I7SUFDdEIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBRXRCOzswQkFFc0I7SUFDdEIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRTFCOzswQkFFc0I7SUFDdEIsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRTVCOzswQkFFc0I7SUFDdEIsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRXJEOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxPQUFPLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsU0FBUyxFQUFDLEdBQUcsRUFBRTtRQUNyRCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQTtRQUV2RTs7dUNBRStCO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBO1FBRWY7OzZDQUVxQztRQUNyQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFBO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQ0FBa0M7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QUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xCLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7UUFFMUYsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsa0JBQWtCLENBQUMsRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUM7UUFDeEQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ3ZCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3ZCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU07Z0JBQ04sVUFBVTthQUNYLENBQUMsQ0FBQTtRQUNKLENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBEZWZpbmVzIHRoaXMgdHlwZWRlZi5cbiAqIEB0ZW1wbGF0ZSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBbTUM9dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0XVxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsID8+IHwgc3RyaW5nIHwgKChxdWVyeTogaW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDxNQz4sIGFyZ3M6IHthYmlsaXR5OiBWZWxvY2lvdXNBdXRob3JpemF0aW9uQWJpbGl0eSwgYWN0aW9uOiBzdHJpbmcsIG1vZGVsQ2xhc3M6IE1DfSkgPT4gdm9pZCB8IGltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8TUM+KX0gQWJpbGl0eUNvbmRpdGlvbnNUeXBlXG4gKi9cblxuLyoqXG4gKiBBYmlsaXR5UnVsZVR5cGUgdHlwZS5cbiAqIEB0eXBlZGVmIHtvYmplY3R9IEFiaWxpdHlSdWxlVHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gYWN0aW9ucyAtIEFjdGlvbnMgY292ZXJlZCBieSBydWxlLlxuICogQHByb3BlcnR5IHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAqIEBwcm9wZXJ0eSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlIHwgdW5kZWZpbmVkfSBjb25kaXRpb25zIC0gQ29uZGl0aW9ucy5cbiAqIEBwcm9wZXJ0eSB7XCJhbGxvd1wiIHwgXCJkZW55XCJ9IGVmZmVjdCAtIFJ1bGUgZWZmZWN0LlxuICovXG5cbi8qKiBDYW5DYW4tc3R5bGUgYWJpbGl0eSBvYmplY3QgZm9yIHF1ZXJ5LWxldmVsIGFjY2VzcyBjb250cm9sLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzQXV0aG9yaXphdGlvbkFiaWxpdHkge1xuICAvKipcbiAgICogQ3JlYXRlLlxuICAgKiBAdHlwZSB7c3RyaW5nW119ICovXG4gIHN0YXRpYyBDUkVBVEUgPSBbXCJjcmVhdGVcIl1cblxuICAvKipcbiAgICogUmVhZC5cbiAgICogQHR5cGUge3N0cmluZ1tdfSAqL1xuICBzdGF0aWMgUkVBRCA9IFtcInJlYWRcIl1cblxuICAvKipcbiAgICogVXBkYXRlLlxuICAgKiBAdHlwZSB7c3RyaW5nW119ICovXG4gIHN0YXRpYyBVUERBVEUgPSBbXCJ1cGRhdGVcIl1cblxuICAvKipcbiAgICogRGVzdHJveS5cbiAgICogQHR5cGUge3N0cmluZ1tdfSAqL1xuICBzdGF0aWMgREVTVFJPWSA9IFtcImRlc3Ryb3lcIl1cblxuICAvKipcbiAgICogQ3J1ZC5cbiAgICogQHR5cGUge3N0cmluZ1tdfSAqL1xuICBzdGF0aWMgQ1JVRCA9IFtcImNyZWF0ZVwiLCBcInJlYWRcIiwgXCJ1cGRhdGVcIiwgXCJkZXN0cm95XCJdXG5cbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQWJpbGl0eSBhcmdzLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsID8+fSBbYXJncy5jb250ZXh0XSAtIEFiaWxpdHkgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCA/Pn0gW2FyZ3MubG9jYWxzXSAtIEFiaWxpdHkgbG9jYWxzLlxuICAgKiBAcGFyYW0ge0FycmF5PHR5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtcmVzb3VyY2UuanNcIikuZGVmYXVsdD59IFthcmdzLnJlc291cmNlc10gLSBSZXNvdXJjZSBjbGFzc2VzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe2NvbnRleHQgPSB7fSwgbG9jYWxzID0ge30sIHJlc291cmNlc30gPSB7fSkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHRcbiAgICB0aGlzLmxvY2FscyA9IGxvY2Fsc1xuICAgIHRoaXMucmVzb3VyY2VzID0gcmVzb3VyY2VzIHx8IHRoaXMuX3Jlc29sdmVSZXNvdXJjZXNGcm9tQ29uZmlndXJhdGlvbigpXG5cbiAgICAvKipcbiAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICogQHR5cGUge0FiaWxpdHlSdWxlVHlwZVtdfSAqL1xuICAgIHRoaXMucnVsZXMgPSBbXVxuXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBib29sZWFuPn0gKi9cbiAgICB0aGlzLmxvYWRlZE1vZGVsQ2xhc3NBYmlsaXRpZXMgPSB7fVxuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tcmVzb2x2ZXMgcmVzb3VyY2UgY2xhc3NlcyBmcm9tIHRoZSBjb25maWd1cmF0aW9uJ3MgYmFja2VuZFByb2plY3RzIHdoZW4gbm8gZXhwbGljaXQgcmVzb3VyY2VzIGFyZSBwcm92aWRlZC5cbiAgICogQHJldHVybnMge0FycmF5PHR5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtcmVzb3VyY2UuanNcIikuZGVmYXVsdD59IFJlc29sdmVkIHJlc291cmNlIGNsYXNzZXMuXG4gICAqL1xuICBfcmVzb2x2ZVJlc291cmNlc0Zyb21Db25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnRleHQ/LmNvbmZpZ3VyYXRpb25cblxuICAgIGlmICghY29uZmlndXJhdGlvbiB8fCB0eXBlb2YgY29uZmlndXJhdGlvbi5nZXRCYWNrZW5kUHJvamVjdHMgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzb2x2ZWQuXG4gICAgICogQHR5cGUge0FycmF5PHR5cGVvZiBpbXBvcnQoXCIuL2Jhc2UtcmVzb3VyY2UuanNcIikuZGVmYXVsdD59ICovXG4gICAgY29uc3QgcmVzb2x2ZWQgPSBbXVxuICAgIGNvbnN0IGJhY2tlbmRQcm9qZWN0cyA9IGNvbmZpZ3VyYXRpb24uZ2V0QmFja2VuZFByb2plY3RzKClcblxuICAgIGZvciAoY29uc3QgYmFja2VuZFByb2plY3Qgb2YgYmFja2VuZFByb2plY3RzKSB7XG4gICAgICBjb25zdCBmcm9udGVuZE1vZGVscyA9IGJhY2tlbmRQcm9qZWN0LmZyb250ZW5kTW9kZWxzXG5cbiAgICAgIGlmICghZnJvbnRlbmRNb2RlbHMgfHwgdHlwZW9mIGZyb250ZW5kTW9kZWxzICE9PSBcIm9iamVjdFwiKSBjb250aW51ZVxuXG4gICAgICBmb3IgKGNvbnN0IHJlc291cmNlRGVmaW5pdGlvbiBvZiBPYmplY3QudmFsdWVzKGZyb250ZW5kTW9kZWxzKSkge1xuICAgICAgICBpZiAodHlwZW9mIHJlc291cmNlRGVmaW5pdGlvbiA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiByZXNvdXJjZURlZmluaXRpb24ubW9kZWxDbGFzcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmVzb2x2ZWQucHVzaChyZXNvdXJjZURlZmluaXRpb24pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGdldCBjb250ZXh0LlxuICAgKiBAcmV0dXJucyB7UmVjb3JkPHN0cmluZywgPz59IC0gQ29udGV4dC5cbiAgICovXG4gIGdldENvbnRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGxvY2Fscy5cbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsID8+fSAtIExvY2Fscy5cbiAgICovXG4gIGdldExvY2FscygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGN1cnJlbnQgdXNlci5cbiAgICogQHJldHVybnMgez99IC0gQ3VycmVudCB1c2VyIGZyb20gY29udGV4dC5cbiAgICovXG4gIGN1cnJlbnRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQuY3VycmVudFVzZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNhbi5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzdHJpbmdbXX0gYWN0aW9ucyAtIEFjdGlvbihzKS5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtBYmlsaXR5Q29uZGl0aW9uc1R5cGV9IFtjb25kaXRpb25zXSAtIENvbmRpdGlvbnMuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGNhbihhY3Rpb25zLCBtb2RlbENsYXNzLCBjb25kaXRpb25zKSB7XG4gICAgdGhpcy5hZGRSdWxlKHthY3Rpb25zLCBjb25kaXRpb25zLCBlZmZlY3Q6IFwiYWxsb3dcIiwgbW9kZWxDbGFzc30pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBjYW5ub3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFjdGlvbnMgLSBBY3Rpb24ocykuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlfSBbY29uZGl0aW9uc10gLSBDb25kaXRpb25zLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBObyByZXR1cm4gdmFsdWUuXG4gICAqL1xuICBjYW5ub3QoYWN0aW9ucywgbW9kZWxDbGFzcywgY29uZGl0aW9ucykge1xuICAgIHRoaXMuYWRkUnVsZSh7YWN0aW9ucywgY29uZGl0aW9ucywgZWZmZWN0OiBcImRlbnlcIiwgbW9kZWxDbGFzc30pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBhZGQgcnVsZS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBSdWxlIGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFyZ3MuYWN0aW9ucyAtIEFjdGlvbihzKS5cbiAgICogQHBhcmFtIHtBYmlsaXR5Q29uZGl0aW9uc1R5cGV9IFthcmdzLmNvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHBhcmFtIHtcImFsbG93XCIgfCBcImRlbnlcIn0gYXJncy5lZmZlY3QgLSBFZmZlY3QuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgYWRkUnVsZSh7YWN0aW9ucywgY29uZGl0aW9ucywgZWZmZWN0LCBtb2RlbENsYXNzfSkge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRBY3Rpb25zID0gQXJyYXkuaXNBcnJheShhY3Rpb25zKSA/IGFjdGlvbnMgOiBbYWN0aW9uc11cblxuICAgIHRoaXMucnVsZXMucHVzaCh7YWN0aW9uczogbm9ybWFsaXplZEFjdGlvbnMsIGNvbmRpdGlvbnMsIGVmZmVjdCwgbW9kZWxDbGFzc30pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBsb2FkIGFiaWxpdGllcyBmb3IgbW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybiB2YWx1ZS5cbiAgICovXG4gIGxvYWRBYmlsaXRpZXNGb3JNb2RlbENsYXNzKG1vZGVsQ2xhc3MpIHtcbiAgICBjb25zdCBrZXkgPSBtb2RlbENsYXNzLmdldE1vZGVsTmFtZSgpXG5cbiAgICBpZiAodGhpcy5sb2FkZWRNb2RlbENsYXNzQWJpbGl0aWVzW2tleV0pIHJldHVyblxuXG4gICAgdGhpcy5sb2FkZWRNb2RlbENsYXNzQWJpbGl0aWVzW2tleV0gPSB0cnVlXG5cbiAgICBmb3IgKGNvbnN0IFJlc291cmNlQ2xhc3Mgb2YgdGhpcy5yZXNvdXJjZXMpIHtcbiAgICAgIGNvbnN0IHJlc291cmNlTW9kZWxDbGFzcyA9IFJlc291cmNlQ2xhc3MubW9kZWxDbGFzcygpXG5cbiAgICAgIGlmICghcmVzb3VyY2VNb2RlbENsYXNzKSBjb250aW51ZVxuICAgICAgaWYgKHJlc291cmNlTW9kZWxDbGFzcyAhPT0gbW9kZWxDbGFzcykgY29udGludWVcblxuICAgICAgY29uc3QgcmVzb3VyY2VJbnN0YW5jZSA9IG5ldyBSZXNvdXJjZUNsYXNzKHtcbiAgICAgICAgYWJpbGl0eTogdGhpcyxcbiAgICAgICAgY29udGV4dDogdGhpcy5jb250ZXh0LFxuICAgICAgICBsb2NhbHM6IHRoaXMubG9jYWxzXG4gICAgICB9KVxuXG4gICAgICByZXNvdXJjZUluc3RhbmNlLmFiaWxpdGllcygpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYXBwbHkgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUXVlcnkgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gUmVxdWVzdGVkIGFjdGlvbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2RhdGFiYXNlL3F1ZXJ5L21vZGVsLWNsYXNzLXF1ZXJ5LmpzXCIpLmRlZmF1bHQ8dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0Pn0gYXJncy5xdWVyeSAtIFF1ZXJ5LlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDx0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSAtIEF1dGhvcml6ZWQgcXVlcnkuXG4gICAqL1xuICBhcHBseVRvUXVlcnkoe2FjdGlvbiwgbW9kZWxDbGFzcywgcXVlcnl9KSB7XG4gICAgdGhpcy5sb2FkQWJpbGl0aWVzRm9yTW9kZWxDbGFzcyhtb2RlbENsYXNzKVxuXG4gICAgY29uc3QgYXBwbGljYWJsZVJ1bGVzID0gdGhpcy5ydWxlc0Zvcih7YWN0aW9uLCBtb2RlbENsYXNzfSlcbiAgICBjb25zdCBhbGxvd1J1bGVzID0gYXBwbGljYWJsZVJ1bGVzLmZpbHRlcigocnVsZSkgPT4gcnVsZS5lZmZlY3QgPT09IFwiYWxsb3dcIilcbiAgICBjb25zdCBkZW55UnVsZXMgPSBhcHBsaWNhYmxlUnVsZXMuZmlsdGVyKChydWxlKSA9PiBydWxlLmVmZmVjdCA9PT0gXCJkZW55XCIpXG5cbiAgICBpZiAoYWxsb3dSdWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBxdWVyeS53aGVyZShcIjE9MFwiKVxuICAgIH1cblxuICAgIGlmIChhbGxvd1J1bGVzLnNvbWUoKHJ1bGUpID0+ICFydWxlLmNvbmRpdGlvbnMpKSB7XG4gICAgICB0aGlzLmFwcGx5RGVueVJ1bGVzKHthY3Rpb24sIGRlbnlSdWxlcywgbW9kZWxDbGFzcywgcXVlcnl9KVxuICAgICAgcmV0dXJuIHF1ZXJ5XG4gICAgfVxuXG4gICAgY29uc3QgYWxsb3dTcWxQYXJ0cyA9IHRoaXMuY29uZGl0aW9uU3FsUGFydHMoe2FjdGlvbiwgbW9kZWxDbGFzcywgcXVlcnksIHJ1bGVzOiBhbGxvd1J1bGVzfSlcblxuICAgIGlmIChhbGxvd1NxbFBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHF1ZXJ5LndoZXJlKFwiMT0wXCIpXG4gICAgfVxuXG4gICAgcXVlcnkud2hlcmUoYCgke2FsbG93U3FsUGFydHMuam9pbihcIiBPUiBcIil9KWApXG4gICAgdGhpcy5hcHBseURlbnlSdWxlcyh7YWN0aW9uLCBkZW55UnVsZXMsIG1vZGVsQ2xhc3MsIHF1ZXJ5fSlcblxuICAgIHJldHVybiBxdWVyeVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcnVsZXMgZm9yLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFJ1bGUgbG9va3VwIGFyZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmFjdGlvbiAtIEFjdGlvbi5cbiAgICogQHBhcmFtIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWxDbGFzcyAtIE1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7QWJpbGl0eVJ1bGVUeXBlW119IC0gTWF0Y2hpbmcgcnVsZXMuXG4gICAqL1xuICBydWxlc0Zvcih7YWN0aW9uLCBtb2RlbENsYXNzfSkge1xuICAgIHJldHVybiB0aGlzLnJ1bGVzLmZpbHRlcigocnVsZSkgPT4ge1xuICAgICAgaWYgKHJ1bGUubW9kZWxDbGFzcyAhPT0gbW9kZWxDbGFzcykgcmV0dXJuIGZhbHNlXG5cbiAgICAgIHJldHVybiBydWxlLmFjdGlvbnMuaW5jbHVkZXMoYWN0aW9uKSB8fCBydWxlLmFjdGlvbnMuaW5jbHVkZXMoXCJtYW5hZ2VcIilcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgY29uZGl0aW9uIHNxbCBwYXJ0cy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBTUUwgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gQWN0aW9uLlxuICAgKiBAcGFyYW0ge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gYXJncy5tb2RlbENsYXNzIC0gTW9kZWwgY2xhc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vZGF0YWJhc2UvcXVlcnkvbW9kZWwtY2xhc3MtcXVlcnkuanNcIikuZGVmYXVsdDx0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQ+fSBhcmdzLnF1ZXJ5IC0gQmFzZSBxdWVyeS5cbiAgICogQHBhcmFtIHtBYmlsaXR5UnVsZVR5cGVbXX0gYXJncy5ydWxlcyAtIFJ1bGVzLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119IC0gU1FMIGNvbmRpdGlvbiBwYXJ0cy5cbiAgICovXG4gIGNvbmRpdGlvblNxbFBhcnRzKHthY3Rpb24sIG1vZGVsQ2xhc3MsIHF1ZXJ5LCBydWxlc30pIHtcbiAgICBjb25zdCBwayA9IG1vZGVsQ2xhc3MucHJpbWFyeUtleSgpXG4gICAgY29uc3QgcXVvdGVkQmFzZVRhYmxlID0gcXVlcnkuZHJpdmVyLnF1b3RlVGFibGUobW9kZWxDbGFzcy50YWJsZU5hbWUoKSlcbiAgICBjb25zdCBxdW90ZWRQayA9IHF1ZXJ5LmRyaXZlci5xdW90ZUNvbHVtbihwaylcbiAgICBjb25zdCBzcWxQYXJ0cyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgIGlmICghcnVsZS5jb25kaXRpb25zKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBzY29wZWRRdWVyeSA9IG1vZGVsQ2xhc3MuX25ld1F1ZXJ5KClcbiAgICAgIGNvbnN0IHJlc3VsdFF1ZXJ5ID0gdGhpcy5hcHBseVJ1bGVDb25kaXRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNvbmRpdGlvbnM6IHJ1bGUuY29uZGl0aW9ucyxcbiAgICAgICAgbW9kZWxDbGFzcyxcbiAgICAgICAgcXVlcnk6IHNjb3BlZFF1ZXJ5XG4gICAgICB9KVxuICAgICAgY29uc3QgZmluYWxRdWVyeSA9IHJlc3VsdFF1ZXJ5IHx8IHNjb3BlZFF1ZXJ5XG4gICAgICBjb25zdCBzZWxlY3RlZFBrU3FsID0gYCR7cXVvdGVkQmFzZVRhYmxlfS4ke3F1b3RlZFBrfWBcblxuICAgICAgaWYgKGZpbmFsUXVlcnkuX2Rpc3RpbmN0KSB7XG4gICAgICAgIHF1ZXJ5LmRpc3RpbmN0KHRydWUpXG4gICAgICB9XG5cbiAgICAgIGZpbmFsUXVlcnkuc2VsZWN0KHNlbGVjdGVkUGtTcWwpXG5cbiAgICAgIHNxbFBhcnRzLnB1c2goYCR7cXVvdGVkQmFzZVRhYmxlfS4ke3F1b3RlZFBrfSBJTiAoJHtmaW5hbFF1ZXJ5LnRvU3FsKCl9KWApXG4gICAgfVxuXG4gICAgcmV0dXJuIHNxbFBhcnRzXG4gIH1cblxuICAvKipcbiAgICogUnVucyBhcHBseSBkZW55IHJ1bGVzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIERlbnkgYXJncy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYWN0aW9uIC0gQWN0aW9uLlxuICAgKiBAcGFyYW0ge0FiaWxpdHlSdWxlVHlwZVtdfSBhcmdzLmRlbnlSdWxlcyAtIERlbnkgcnVsZXMuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59IGFyZ3MucXVlcnkgLSBRdWVyeS5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgYXBwbHlEZW55UnVsZXMoe2FjdGlvbiwgZGVueVJ1bGVzLCBtb2RlbENsYXNzLCBxdWVyeX0pIHtcbiAgICBpZiAoZGVueVJ1bGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuXG5cbiAgICBpZiAoZGVueVJ1bGVzLnNvbWUoKHJ1bGUpID0+ICFydWxlLmNvbmRpdGlvbnMpKSB7XG4gICAgICBxdWVyeS53aGVyZShcIjE9MFwiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVueVNxbFBhcnRzID0gdGhpcy5jb25kaXRpb25TcWxQYXJ0cyh7YWN0aW9uLCBtb2RlbENsYXNzLCBxdWVyeSwgcnVsZXM6IGRlbnlSdWxlc30pXG5cbiAgICBpZiAoZGVueVNxbFBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHF1ZXJ5LndoZXJlKGBOT1QgKCR7ZGVueVNxbFBhcnRzLmpvaW4oXCIgT1IgXCIpfSlgKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFwcGx5IHJ1bGUgY29uZGl0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENvbmRpdGlvbiBhcmdzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5hY3Rpb24gLSBBY3Rpb24uXG4gICAqIEBwYXJhbSB7QWJpbGl0eUNvbmRpdGlvbnNUeXBlfSBhcmdzLmNvbmRpdGlvbnMgLSBSdWxlIGNvbmRpdGlvbnMuXG4gICAqIEBwYXJhbSB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0fSBhcmdzLm1vZGVsQ2xhc3MgLSBNb2RlbCBjbGFzcy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59IGFyZ3MucXVlcnkgLSBRdWVyeS5cbiAgICogQHJldHVybnMge3ZvaWQgfCBpbXBvcnQoXCIuLi9kYXRhYmFzZS9xdWVyeS9tb2RlbC1jbGFzcy1xdWVyeS5qc1wiKS5kZWZhdWx0PHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD59IC0gT3B0aW9uYWwgcmVwbGFjZW1lbnQgcXVlcnkuXG4gICAqL1xuICBhcHBseVJ1bGVDb25kaXRpb24oe2FjdGlvbiwgY29uZGl0aW9ucywgbW9kZWxDbGFzcywgcXVlcnl9KSB7XG4gICAgaWYgKHR5cGVvZiBjb25kaXRpb25zID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBxdWVyeS53aGVyZShjb25kaXRpb25zKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25kaXRpb25zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBjb25kaXRpb25zKHF1ZXJ5LCB7XG4gICAgICAgIGFiaWxpdHk6IHRoaXMsXG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgbW9kZWxDbGFzc1xuICAgICAgfSlcbiAgICB9XG5cbiAgICBxdWVyeS53aGVyZShjb25kaXRpb25zKVxuICB9XG59XG4iXX0=
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export default class AuthorizationBaseResource {
|
|
3
3
|
/**
|
|
4
4
|
* Model class.
|
|
5
|
-
|
|
5
|
+
* @type {typeof import("../database/record/index.js").default | undefined} */
|
|
6
6
|
static ModelClass: typeof import("../database/record/index.js").default | undefined;
|
|
7
7
|
/**
|
|
8
8
|
* Runs model class.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/authorization/base-resource.js"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E;IACE;;
|
|
1
|
+
{"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/authorization/base-resource.js"],"names":[],"mappings":"AAEA,6EAA6E;AAC7E;IACE;;kFAE8E;IAC9E,mBADU,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAC7C;IAe7B;;;OAGG;IACH,qBAFa,cAAc,6BAA6B,EAAE,OAAO,GAAG,SAAS,CAI5E;IAnBD;;;;;;OAMG;IACH,0CAJG;QAA8C,OAAO;QACmB,OAAO;QACP,MAAM;KAChF,EAKA;IAHC,oDAAsB;IACtB,kEAAsB;IACtB,iEAAoB;IAWtB;;;;;;OAMG;IACH,IALoE,EAAE,SAAzD,cAAe,6BAA6B,EAAE,OAAQ,WACxD,MAAM,GAAG,MAAM,EAAE,eACjB,OAAO,cAAc,EAAE,qBAAqB,CAAC,EAAE,CAAC,GAC9C,IAAI,CAKhB;IAED;;;;;;OAMG;IACH,OALoE,EAAE,SAAzD,cAAe,6BAA6B,EAAE,OAAQ,WACxD,MAAM,GAAG,MAAM,EAAE,eACjB,OAAO,cAAc,EAAE,qBAAqB,CAAC,EAAE,CAAC,GAC9C,IAAI,CAKhB;IAED;;;OAGG;IACH,mBAFa,OAAO,cAAc,EAAE,OAAO,CAQ1C;IAED;;;OAGG;IACH,sBAFa,cAAc,6BAA6B,EAAE,OAAO,CAYhE;IAED;;;;;;OAMG;IACH,8DAJG;QAAgB,UAAU,EAAlB,OAAC;QACsB,UAAU,EAAjC,KAAK,GAAG,QAAQ;KACxB,GAAU,IAAI,CAMhB;IAED;;;OAGG;IACH,cAFa,OAAO,2BAA2B,EAAE,oBAAoB,CAIpE;IAED;;;OAGG;IACH,aAFa,OAAO,2BAA2B,EAAE,oBAAoB,CAIpE;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;OAGG;IACH,WAFa,OAAO,kCAAkC,EAAE,OAAO,GAAG,OAAO,4CAA4C,EAAE,OAAO,GAAG,SAAS,CAIzI;IAED;;;OAGG;IACH,UAFa,OAAO,2BAA2B,EAAE,eAAe,GAAG,SAAS,CAI3E;IAED;;;OAGG;IACH,aAFa,IAAI,CAIhB;CACF"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
export default class AuthorizationBaseResource {
|
|
4
4
|
/**
|
|
5
5
|
* Model class.
|
|
6
|
-
|
|
6
|
+
* @type {typeof import("../database/record/index.js").default | undefined} */
|
|
7
7
|
static ModelClass = undefined;
|
|
8
8
|
/**
|
|
9
9
|
* Runs constructor.
|
|
@@ -33,7 +33,7 @@ export default class AuthorizationBaseResource {
|
|
|
33
33
|
*/
|
|
34
34
|
can(actions, conditions) {
|
|
35
35
|
this.assertResourceConditionsSignature({ conditions, methodName: "can" });
|
|
36
|
-
this.requiredAbility().can(actions, this.requiredModelClass(), /**
|
|
36
|
+
this.requiredAbility().can(actions, this.requiredModelClass(), /** @type {import("./ability.js").AbilityConditionsType<typeof import("../database/record/index.js").default> | undefined} */ (conditions));
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Runs cannot.
|
|
@@ -44,7 +44,7 @@ export default class AuthorizationBaseResource {
|
|
|
44
44
|
*/
|
|
45
45
|
cannot(actions, conditions) {
|
|
46
46
|
this.assertResourceConditionsSignature({ conditions, methodName: "cannot" });
|
|
47
|
-
this.requiredAbility().cannot(actions, this.requiredModelClass(), /**
|
|
47
|
+
this.requiredAbility().cannot(actions, this.requiredModelClass(), /** @type {import("./ability.js").AbilityConditionsType<typeof import("../database/record/index.js").default> | undefined} */ (conditions));
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Runs required ability.
|
|
@@ -63,7 +63,7 @@ export default class AuthorizationBaseResource {
|
|
|
63
63
|
requiredModelClass() {
|
|
64
64
|
const modelClass = /**
|
|
65
65
|
* Narrows the runtime value to the documented type.
|
|
66
|
-
|
|
66
|
+
* @type {typeof AuthorizationBaseResource} */ (this.constructor).modelClass();
|
|
67
67
|
if (!modelClass) {
|
|
68
68
|
throw new Error(`${this.constructor.name} must define static ModelClass before calling ability helpers.`);
|
|
69
69
|
}
|
|
@@ -124,4 +124,4 @@ export default class AuthorizationBaseResource {
|
|
|
124
124
|
// No-op by default.
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRob3JpemF0aW9uL2Jhc2UtcmVzb3VyY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLDZFQUE2RTtBQUM3RSxNQUFNLENBQUMsT0FBTyxPQUFPLHlCQUF5QjtJQUM1Qzs7a0ZBRThFO0lBQzlFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFBO0lBRTdCOzs7Ozs7T0FNRztJQUNILFlBQVksRUFBQyxPQUFPLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVO1FBQ3JCLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUN2RSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSw2SEFBNkgsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFDNU0sQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVTtRQUN4QixJQUFJLENBQUMsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7UUFDMUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsNkhBQTZILENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQy9NLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLDBEQUEwRCxDQUFDLENBQUE7UUFDckcsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCO1FBQ2hCLE1BQU0sVUFBVSxHQUFHOzt5RUFFOEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUVqRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxnRUFBZ0UsQ0FBQyxDQUFBO1FBQzNHLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsaUNBQWlDLENBQUMsRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFDO1FBQ3hELElBQUksT0FBTyxVQUFVLEtBQUssVUFBVSxJQUFJLFlBQVksSUFBSSxVQUFVLElBQUksV0FBVyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hHLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxVQUFVLDJGQUEyRixDQUFDLENBQUE7UUFDcEosQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1Asb0JBQW9CO0lBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqIEJhc2UgY2xhc3MgZm9yIGF1dGhvcml6YXRpb24gcmVzb3VyY2VzIGRlZmluaW5nIGFiaWxpdGllcyBmb3IgYSBtb2RlbC4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGhvcml6YXRpb25CYXNlUmVzb3VyY2Uge1xuICAvKipcbiAgICogTW9kZWwgY2xhc3MuXG4gICAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9ICovXG4gIHN0YXRpYyBNb2RlbENsYXNzID0gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gUmVzb3VyY2UgYXJncy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuZGVmYXVsdH0gW2FyZ3MuYWJpbGl0eV0gLSBBYmlsaXR5IGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuVmVsb2Npb3VzTG9vc2VPYmplY3R9IFthcmdzLmNvbnRleHRdIC0gQWJpbGl0eSBjb250ZXh0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuVmVsb2Npb3VzTG9vc2VPYmplY3R9IFthcmdzLmxvY2Fsc10gLSBBYmlsaXR5IGxvY2Fscy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHthYmlsaXR5LCBjb250ZXh0ID0ge30sIGxvY2FscyA9IHt9fSkge1xuICAgIHRoaXMuYWJpbGl0eSA9IGFiaWxpdHlcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0XG4gICAgdGhpcy5sb2NhbHMgPSBsb2NhbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIG1vZGVsIGNsYXNzLlxuICAgKiBAcmV0dXJucyB7dHlwZW9mIGltcG9ydChcIi4uL2RhdGFiYXNlL3JlY29yZC9pbmRleC5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkfSAtIE1vZGVsIGNsYXNzIGhhbmRsZWQgYnkgdGhpcyByZXNvdXJjZS5cbiAgICovXG4gIHN0YXRpYyBtb2RlbENsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLk1vZGVsQ2xhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNhbi5cbiAgICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1DXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFjdGlvbnMgLSBBYmlsaXR5IGFjdGlvbihzKS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuQWJpbGl0eUNvbmRpdGlvbnNUeXBlPE1DPn0gW2NvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgY2FuKGFjdGlvbnMsIGNvbmRpdGlvbnMpIHtcbiAgICB0aGlzLmFzc2VydFJlc291cmNlQ29uZGl0aW9uc1NpZ25hdHVyZSh7Y29uZGl0aW9ucywgbWV0aG9kTmFtZTogXCJjYW5cIn0pXG4gICAgdGhpcy5yZXF1aXJlZEFiaWxpdHkoKS5jYW4oYWN0aW9ucywgdGhpcy5yZXF1aXJlZE1vZGVsQ2xhc3MoKSwgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuQWJpbGl0eUNvbmRpdGlvbnNUeXBlPHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4gfCB1bmRlZmluZWR9ICovIChjb25kaXRpb25zKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGNhbm5vdC5cbiAgICogQHRlbXBsYXRlIHt0eXBlb2YgaW1wb3J0KFwiLi4vZGF0YWJhc2UvcmVjb3JkL2luZGV4LmpzXCIpLmRlZmF1bHR9IE1DXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW119IGFjdGlvbnMgLSBBYmlsaXR5IGFjdGlvbihzKS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuQWJpbGl0eUNvbmRpdGlvbnNUeXBlPE1DPn0gW2NvbmRpdGlvbnNdIC0gQ29uZGl0aW9ucy5cbiAgICogQHJldHVybnMge3ZvaWR9IC0gTm8gcmV0dXJuIHZhbHVlLlxuICAgKi9cbiAgY2Fubm90KGFjdGlvbnMsIGNvbmRpdGlvbnMpIHtcbiAgICB0aGlzLmFzc2VydFJlc291cmNlQ29uZGl0aW9uc1NpZ25hdHVyZSh7Y29uZGl0aW9ucywgbWV0aG9kTmFtZTogXCJjYW5ub3RcIn0pXG4gICAgdGhpcy5yZXF1aXJlZEFiaWxpdHkoKS5jYW5ub3QoYWN0aW9ucywgdGhpcy5yZXF1aXJlZE1vZGVsQ2xhc3MoKSwgLyoqIEB0eXBlIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuQWJpbGl0eUNvbmRpdGlvbnNUeXBlPHR5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdD4gfCB1bmRlZmluZWR9ICovIChjb25kaXRpb25zKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlcXVpcmVkIGFiaWxpdHkuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuL2FiaWxpdHkuanNcIikuZGVmYXVsdH0gLSBBYmlsaXR5IGluc3RhbmNlLlxuICAgKi9cbiAgcmVxdWlyZWRBYmlsaXR5KCkge1xuICAgIGlmICghdGhpcy5hYmlsaXR5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSByZXF1aXJlcyBhbiBhYmlsaXR5IGluc3RhbmNlIGJlZm9yZSBkZWZpbmluZyBhYmlsaXRpZXMuYClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hYmlsaXR5XG4gIH1cblxuICAvKipcbiAgICogUnVucyByZXF1aXJlZCBtb2RlbCBjbGFzcy5cbiAgICogQHJldHVybnMge3R5cGVvZiBpbXBvcnQoXCIuLi9kYXRhYmFzZS9yZWNvcmQvaW5kZXguanNcIikuZGVmYXVsdH0gLSBNb2RlbCBjbGFzcyBoYW5kbGVkIGJ5IHRoaXMgcmVzb3VyY2UuXG4gICAqL1xuICByZXF1aXJlZE1vZGVsQ2xhc3MoKSB7XG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHt0eXBlb2YgQXV0aG9yaXphdGlvbkJhc2VSZXNvdXJjZX0gKi8gKHRoaXMuY29uc3RydWN0b3IpLm1vZGVsQ2xhc3MoKVxuXG4gICAgaWYgKCFtb2RlbENsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBtdXN0IGRlZmluZSBzdGF0aWMgTW9kZWxDbGFzcyBiZWZvcmUgY2FsbGluZyBhYmlsaXR5IGhlbHBlcnMuYClcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYXNzZXJ0IHJlc291cmNlIGNvbmRpdGlvbnMgc2lnbmF0dXJlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIFNpZ25hdHVyZSBhcmdzLlxuICAgKiBAcGFyYW0gez99IGFyZ3MuY29uZGl0aW9ucyAtIENvbmRpdGlvbnMgdmFsdWUuXG4gICAqIEBwYXJhbSB7XCJjYW5cIiB8IFwiY2Fubm90XCJ9IGFyZ3MubWV0aG9kTmFtZSAtIE1ldGhvZCBuYW1lLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGFzc2VydFJlc291cmNlQ29uZGl0aW9uc1NpZ25hdHVyZSh7Y29uZGl0aW9ucywgbWV0aG9kTmFtZX0pIHtcbiAgICBpZiAodHlwZW9mIGNvbmRpdGlvbnMgPT09IFwiZnVuY3Rpb25cIiAmJiBcInByaW1hcnlLZXlcIiBpbiBjb25kaXRpb25zICYmIFwiX25ld1F1ZXJ5XCIgaW4gY29uZGl0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0uJHttZXRob2ROYW1lfSguLi4pIG5vIGxvbmdlciBhY2NlcHRzIGEgbW9kZWwgY2xhc3MuIERlZmluZSBzdGF0aWMgTW9kZWxDbGFzcyBhbmQgcGFzcyBvbmx5IGNvbmRpdGlvbnMuYClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgY29udGV4dC5cbiAgICogQHJldHVybnMge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24tdHlwZXMuanNcIikuVmVsb2Npb3VzTG9vc2VPYmplY3R9IC0gQWJpbGl0eSBjb250ZXh0LlxuICAgKi9cbiAgZ2V0Q29udGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0XG4gIH1cblxuICAvKipcbiAgICogUnVucyBnZXQgbG9jYWxzLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNMb29zZU9iamVjdH0gLSBBYmlsaXR5IGxvY2Fscy5cbiAgICovXG4gIGdldExvY2FscygpIHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbHNcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGN1cnJlbnQgdXNlci5cbiAgICogQHJldHVybnMge3Vua25vd259IC0gQ3VycmVudCB1c2VyIGZyb20gY29udGV4dC5cbiAgICovXG4gIGN1cnJlbnRVc2VyKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQuY3VycmVudFVzZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHJlcXVlc3QuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCIuLi9odHRwLXNlcnZlci9jbGllbnQvcmVxdWVzdC5qc1wiKS5kZWZhdWx0IHwgaW1wb3J0KFwiLi4vaHR0cC1zZXJ2ZXIvY2xpZW50L3dlYnNvY2tldC1yZXF1ZXN0LmpzXCIpLmRlZmF1bHQgfCB1bmRlZmluZWR9IC0gUmVxdWVzdCBmcm9tIGNvbnRleHQuXG4gICAqL1xuICByZXF1ZXN0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVxdWVzdFxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgcGFyYW1zLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KFwiLi4vY29uZmlndXJhdGlvbi10eXBlcy5qc1wiKS5WZWxvY2lvdXNQYXJhbXMgfCB1bmRlZmluZWR9IC0gUGFyYW1zIGZyb20gY29udGV4dC5cbiAgICovXG4gIHBhcmFtcygpIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnBhcmFtc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgYWJpbGl0aWVzLlxuICAgKiBAcmV0dXJucyB7dm9pZH0gLSBJbXBsZW1lbnQgaW4gc3ViY2xhc3NlcyB0byBkZWZpbmUgYWJpbGl0aWVzLlxuICAgKi9cbiAgYWJpbGl0aWVzKCkge1xuICAgIC8vIE5vLW9wIGJ5IGRlZmF1bHQuXG4gIH1cbn1cbiJdfQ==
|
|
@@ -55,7 +55,7 @@ export function parseCronExpression(expression) {
|
|
|
55
55
|
const trimmed = expression.trim().toLowerCase();
|
|
56
56
|
const expanded = SHORTCUTS[ /**
|
|
57
57
|
* Narrows the runtime value to the documented type.
|
|
58
|
-
|
|
58
|
+
* @type {keyof typeof SHORTCUTS} */(trimmed)] || trimmed;
|
|
59
59
|
const fields = expanded.split(/\s+/);
|
|
60
60
|
if (fields.length !== 5) {
|
|
61
61
|
throw new Error(`Invalid cron expression "${expression}": expected 5 fields, got ${fields.length}`);
|
|
@@ -235,4 +235,4 @@ function candidateMatches(candidate, parsed) {
|
|
|
235
235
|
return dayOfWeekMatch;
|
|
236
236
|
return true;
|
|
237
237
|
}
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1leHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9jcm9uLWV4cHJlc3Npb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7Ozs7Ozs7OztHQVdHO0FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3hHLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFFbkUsTUFBTSxTQUFTLEdBQUc7SUFDaEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsUUFBUSxFQUFFLFdBQVc7SUFDckIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsV0FBVyxFQUFFLFdBQVc7Q0FDekIsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHO0lBQ2IsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBQztJQUNqQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFDO0lBQy9CLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUM7SUFDckMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFDO0lBQ3BELGlFQUFpRTtJQUNqRSx5REFBeUQ7SUFDekQsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDO0NBQ3RELENBQUE7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBVTtJQUM1QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUMvQyxNQUFNLFFBQVEsR0FBRyxTQUFTLEVBQUM7O2tFQUVvQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFBO0lBQ3BGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFcEMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLFVBQVUsNkJBQTZCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO0lBQ3JHLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtJQUNwRixNQUFNLE1BQU0sR0FBRztRQUNiLE1BQU0sRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7UUFDdEQsSUFBSSxFQUFFLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQztRQUNsRCxVQUFVLEVBQUUsVUFBVSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBQzlELEtBQUssRUFBRSxVQUFVLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7UUFDcEQsaUVBQWlFO1FBQ2pFLGlFQUFpRTtRQUNqRSxtREFBbUQ7UUFDbkQsU0FBUyxFQUFFLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hGLG9CQUFvQixFQUFFLGVBQWUsS0FBSyxHQUFHO1FBQzdDLG1CQUFtQixFQUFFLGNBQWMsS0FBSyxHQUFHO1FBQzNDLFVBQVU7S0FDWCxDQUFBO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUMsU0FBUztJQUNuQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNyQixTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ25CLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVU7SUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQTtJQUV4QixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxhQUFhLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDcEQsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNO0lBQ3hELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxTQUFTLENBQUMsSUFBSSw4QkFBOEIsVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUN2RixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sSUFBSSxHQUFHLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDcEYsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFBO0lBRXpGLEtBQUssSUFBSSxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxHQUFHLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BELElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxxQkFBcUIsU0FBUyxDQUFDLElBQUksd0JBQXdCLFVBQVUsR0FBRyxDQUFDLENBQUE7UUFDekcsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVU7SUFDN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTFCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsU0FBUyxDQUFDLElBQUksd0JBQXdCLFVBQVUsR0FBRyxDQUFDLENBQUE7SUFDckcsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPO0lBQzNELElBQUksU0FBUyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUV4QyxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRTFELHVEQUF1RDtRQUN2RCxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDakQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDOUUsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUU3RSxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsS0FBSyxVQUFVLEdBQUcsUUFBUSxTQUFTLENBQUMsSUFBSSx3QkFBd0IsVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUMvRyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNyQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxVQUFVLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVO0lBQ2pELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxTQUFTLENBQUMsSUFBSSw4QkFBOEIsVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUN2RixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFFckQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksVUFBVSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDeEQsT0FBTyxVQUFVLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRTlCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLFNBQVMsQ0FBQyxJQUFJLFdBQVcsUUFBUSx5QkFBeUIsVUFBVSxHQUFHLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsaUVBQWlFO0FBQ2pFLGlFQUFpRTtBQUNqRSxvRUFBb0U7QUFDcEUsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7QUFFbEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUk7SUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFFMUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDMUIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFFaEQsS0FBSyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLHdCQUF3QixFQUFFLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRixJQUFJLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQTtRQUV6RCxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsTUFBTSxDQUFDLFVBQVUsaUJBQWlCLENBQUMsQ0FBQTtBQUN6RSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxNQUFNO0lBQ3pDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUU3RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNsRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUUvRCwwREFBMEQ7SUFDMUQseURBQXlEO0lBQ3pELHFDQUFxQztJQUNyQyxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM5RCxPQUFPLGVBQWUsSUFBSSxjQUFjLENBQUE7SUFDMUMsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLG9CQUFvQjtRQUFFLE9BQU8sZUFBZSxDQUFBO0lBQ3ZELElBQUksTUFBTSxDQUFDLG1CQUFtQjtRQUFFLE9BQU8sY0FBYyxDQUFBO0lBRXJELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIE1pbmltYWwgUE9TSVgtc3R5bGUgNS1maWVsZCBjcm9uIHBhcnNlciB1c2VkIGJ5IHRoZSBiYWNrZ3JvdW5kLWpvYlxuICogc2NoZWR1bGVyLiBTdXBwb3J0cyBgKmAsIHNpbmdsZSB2YWx1ZXMsIHJhbmdlcyAoYE4tTWApLCBzdGVwc1xuICogKGAqXFwvTmAgb3IgYE4tTS9OYCksIGNvbW1hLXNlcGFyYXRlZCBsaXN0cywgYW5kIHRoZSBjb21tb25cbiAqIGBAaG91cmx5YC9gQGRhaWx5YC9gQHdlZWtseWAvYEBtb250aGx5YC9gQHllYXJseWAvYEBtaWRuaWdodGBcbiAqIHNob3J0Y3V0cy4gTW9udGggYW5kIGRheS1vZi13ZWVrIG5hbWVzIChgamFuYC1gZGVjYCwgYHN1bmAtYHNhdGAsXG4gKiBjYXNlLWluc2Vuc2l0aXZlKSBhcmUgYWxzbyBhY2NlcHRlZC5cbiAqXG4gKiBGb3IgZGF5LW9mLW1vbnRoICsgZGF5LW9mLXdlZWsgaW50ZXJhY3Rpb24sIGZvbGxvd3MgUE9TSVgvVml4aWVcbiAqIGNyb24gc2VtYW50aWNzOiB3aGVuIGJvdGggZmllbGRzIGFyZSByZXN0cmljdGVkIChuZWl0aGVyIGAqYCksIHRoZVxuICogam9iIGZpcmVzIHdoZW4gRUlUSEVSIG1hdGNoZXMuIFdoZW4gb25lIGlzIGAqYCBpdCBoYXMgbm8gZWZmZWN0LlxuICovXG5cbmNvbnN0IE1PTlRIX05BTUVTID0gW1wiamFuXCIsIFwiZmViXCIsIFwibWFyXCIsIFwiYXByXCIsIFwibWF5XCIsIFwianVuXCIsIFwianVsXCIsIFwiYXVnXCIsIFwic2VwXCIsIFwib2N0XCIsIFwibm92XCIsIFwiZGVjXCJdXG5jb25zdCBEQVlfTkFNRVMgPSBbXCJzdW5cIiwgXCJtb25cIiwgXCJ0dWVcIiwgXCJ3ZWRcIiwgXCJ0aHVcIiwgXCJmcmlcIiwgXCJzYXRcIl1cblxuY29uc3QgU0hPUlRDVVRTID0ge1xuICBcIkBob3VybHlcIjogXCIwICogKiAqICpcIixcbiAgXCJAZGFpbHlcIjogXCIwIDAgKiAqICpcIixcbiAgXCJAbWlkbmlnaHRcIjogXCIwIDAgKiAqICpcIixcbiAgXCJAd2Vla2x5XCI6IFwiMCAwICogKiAwXCIsXG4gIFwiQG1vbnRobHlcIjogXCIwIDAgMSAqICpcIixcbiAgXCJAeWVhcmx5XCI6IFwiMCAwIDEgMSAqXCIsXG4gIFwiQGFubnVhbGx5XCI6IFwiMCAwIDEgMSAqXCJcbn1cblxuY29uc3QgRklFTERTID0gW1xuICB7bmFtZTogXCJtaW51dGVcIiwgbWluOiAwLCBtYXg6IDU5fSxcbiAge25hbWU6IFwiaG91clwiLCBtaW46IDAsIG1heDogMjN9LFxuICB7bmFtZTogXCJkYXlPZk1vbnRoXCIsIG1pbjogMSwgbWF4OiAzMX0sXG4gIHtuYW1lOiBcIm1vbnRoXCIsIG1pbjogMSwgbWF4OiAxMiwgbmFtZXM6IE1PTlRIX05BTUVTfSxcbiAgLy8gQWNjZXB0IDAtNyBzbyByYW5nZXMgbGlrZSBgNS03YCAoRnJpLVN1bikgd29yazsgd2Ugbm9ybWFsaXplIDdcbiAgLy8gZG93biB0byAwIGFmdGVyIHBhcnNpbmcgaW4gYG5vcm1hbGl6ZURheU9mV2Vla2AgYmVsb3cuXG4gIHtuYW1lOiBcImRheU9mV2Vla1wiLCBtaW46IDAsIG1heDogNywgbmFtZXM6IERBWV9OQU1FU31cbl1cblxuLyoqXG4gKiBQYXJzZWRDcm9uIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQYXJzZWRDcm9uXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBtaW51dGUgLSBBbGxvd2VkIG1pbnV0ZSB2YWx1ZXMgKDAtNTkpLlxuICogQHByb3BlcnR5IHtTZXQ8bnVtYmVyPn0gaG91ciAtIEFsbG93ZWQgaG91ciB2YWx1ZXMgKDAtMjMpLlxuICogQHByb3BlcnR5IHtTZXQ8bnVtYmVyPn0gZGF5T2ZNb250aCAtIEFsbG93ZWQgZGF5LW9mLW1vbnRoIHZhbHVlcyAoMS0zMSkuXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBtb250aCAtIEFsbG93ZWQgbW9udGggdmFsdWVzICgxLTEyKS5cbiAqIEBwcm9wZXJ0eSB7U2V0PG51bWJlcj59IGRheU9mV2VlayAtIEFsbG93ZWQgZGF5LW9mLXdlZWsgdmFsdWVzICgwLTYsIDA9U3VuKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGF5T2ZNb250aFJlc3RyaWN0ZWQgLSBUcnVlIHdoZW4gdGhlIGRheU9mTW9udGggZmllbGQgaXMgbm90IGA/YC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGF5T2ZXZWVrUmVzdHJpY3RlZCAtIFRydWUgd2hlbiB0aGUgZGF5T2ZXZWVrIGZpZWxkIGlzIG5vdCBgP2AuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGRpYWdub3N0aWNzLlxuICovXG5cbi8qKlxuICogUnVucyB0aGUgcGFyc2VDcm9uRXhwcmVzc2lvbiBoZWxwZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIENyb24gZXhwcmVzc2lvbiBvciBzaG9ydGN1dC5cbiAqIEByZXR1cm5zIHtQYXJzZWRDcm9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDcm9uRXhwcmVzc2lvbihleHByZXNzaW9uKSB7XG4gIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiB8fCAhZXhwcmVzc2lvbi50cmltKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3JvbiBleHByZXNzaW9uOiAke2V4cHJlc3Npb259YClcbiAgfVxuXG4gIGNvbnN0IHRyaW1tZWQgPSBleHByZXNzaW9uLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IGV4cGFuZGVkID0gU0hPUlRDVVRTWy8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHR5cGUge2tleW9mIHR5cGVvZiBTSE9SVENVVFN9ICovICh0cmltbWVkKV0gfHwgdHJpbW1lZFxuICBjb25zdCBmaWVsZHMgPSBleHBhbmRlZC5zcGxpdCgvXFxzKy8pXG5cbiAgaWYgKGZpZWxkcy5sZW5ndGggIT09IDUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiOiBleHBlY3RlZCA1IGZpZWxkcywgZ290ICR7ZmllbGRzLmxlbmd0aH1gKVxuICB9XG5cbiAgY29uc3QgW21pbnV0ZUZpZWxkLCBob3VyRmllbGQsIGRheU9mTW9udGhGaWVsZCwgbW9udGhGaWVsZCwgZGF5T2ZXZWVrRmllbGRdID0gZmllbGRzXG4gIGNvbnN0IHBhcnNlZCA9IHtcbiAgICBtaW51dGU6IHBhcnNlRmllbGQobWludXRlRmllbGQsIEZJRUxEU1swXSwgZXhwcmVzc2lvbiksXG4gICAgaG91cjogcGFyc2VGaWVsZChob3VyRmllbGQsIEZJRUxEU1sxXSwgZXhwcmVzc2lvbiksXG4gICAgZGF5T2ZNb250aDogcGFyc2VGaWVsZChkYXlPZk1vbnRoRmllbGQsIEZJRUxEU1syXSwgZXhwcmVzc2lvbiksXG4gICAgbW9udGg6IHBhcnNlRmllbGQobW9udGhGaWVsZCwgRklFTERTWzNdLCBleHByZXNzaW9uKSxcbiAgICAvLyBDcm9uIHRyZWF0cyBib3RoIDAgYW5kIDcgYXMgU3VuZGF5LiBXZSBhY2NlcHQgNyB0aHJvdWdob3V0IHRoZVxuICAgIC8vIHBhcnNlIHBhc3MgKHNvIGA1LTdgIGZvciBGcmktU3VuIHdvcmtzKSBhbmQgdGhlbiBub3JtYWxpemUgYW55XG4gICAgLy8gN3MgZG93biB0byAwIHNvIHRoZSBtYXRjaGVyIG9ubHkgZGVhbHMgd2l0aCAwLTYuXG4gICAgZGF5T2ZXZWVrOiBub3JtYWxpemVEYXlPZldlZWsocGFyc2VGaWVsZChkYXlPZldlZWtGaWVsZCwgRklFTERTWzRdLCBleHByZXNzaW9uKSksXG4gICAgZGF5T2ZNb250aFJlc3RyaWN0ZWQ6IGRheU9mTW9udGhGaWVsZCAhPT0gXCIqXCIsXG4gICAgZGF5T2ZXZWVrUmVzdHJpY3RlZDogZGF5T2ZXZWVrRmllbGQgIT09IFwiKlwiLFxuICAgIGV4cHJlc3Npb25cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRcbn1cblxuLyoqXG4gKiBSdW5zIG5vcm1hbGl6ZSBkYXkgb2Ygd2Vlay5cbiAqIEBwYXJhbSB7U2V0PG51bWJlcj59IGRheU9mV2Vla1xuICogQHJldHVybnMge1NldDxudW1iZXI+fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEYXlPZldlZWsoZGF5T2ZXZWVrKSB7XG4gIGlmIChkYXlPZldlZWsuaGFzKDcpKSB7XG4gICAgZGF5T2ZXZWVrLmRlbGV0ZSg3KVxuICAgIGRheU9mV2Vlay5hZGQoMClcbiAgfVxuXG4gIHJldHVybiBkYXlPZldlZWtcbn1cblxuLyoqXG4gKiBSdW5zIHBhcnNlIGZpZWxkLlxuICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkIC0gRmllbGQgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gV2hvbGUgY3JvbiBleHByZXNzaW9uIGZvciBlcnJvciBtZXNzYWdlcy5cbiAqIEByZXR1cm5zIHtTZXQ8bnVtYmVyPn1cbiAqL1xuZnVuY3Rpb24gcGFyc2VGaWVsZChmaWVsZCwgZmllbGRTcGVjLCBleHByZXNzaW9uKSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQoKVxuXG4gIGZvciAoY29uc3QgcGFydCBvZiBmaWVsZC5zcGxpdChcIixcIikpIHtcbiAgICBhZGRQYXJ0VmFsdWVzKHBhcnQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbiwgcmVzdWx0KVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIFJ1bnMgYWRkIHBhcnQgdmFsdWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcnQgLSBTaW5nbGUgY29tbWEtc2VwYXJhdGVkIGNodW5rLlxuICogQHBhcmFtIHt7bmFtZTogc3RyaW5nLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG5hbWVzPzogc3RyaW5nW119fSBmaWVsZFNwZWMgLSBGaWVsZCBzcGVjLlxuICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gLSBPcmlnaW5hbCBleHByZXNzaW9uIGZvciBlcnJvcnMuXG4gKiBAcGFyYW0ge1NldDxudW1iZXI+fSByZXN1bHQgLSBBY2N1bXVsYXRvci5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBhZGRQYXJ0VmFsdWVzKHBhcnQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbiwgcmVzdWx0KSB7XG4gIGlmICghcGFydCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke2ZpZWxkU3BlYy5uYW1lfSBmaWVsZCBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICB9XG5cbiAgY29uc3QgW3JhbmdlUGFydCwgc3RlcFBhcnRdID0gcGFydC5zcGxpdChcIi9cIilcbiAgY29uc3Qgc3RlcCA9IHN0ZXBQYXJ0ID09PSB1bmRlZmluZWQgPyAxIDogcGFyc2VTdGVwKHN0ZXBQYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pXG4gIGNvbnN0IFtzdGFydCwgZW5kXSA9IHBhcnNlUmFuZ2UocmFuZ2VQYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24sIHN0ZXBQYXJ0ICE9PSB1bmRlZmluZWQpXG5cbiAgZm9yIChsZXQgdmFsdWUgPSBzdGFydDsgdmFsdWUgPD0gZW5kOyB2YWx1ZSArPSBzdGVwKSB7XG4gICAgaWYgKHZhbHVlIDwgZmllbGRTcGVjLm1pbiB8fCB2YWx1ZSA+IGZpZWxkU3BlYy5tYXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgJHt2YWx1ZX0gb3V0IG9mIHJhbmdlIGZvciAke2ZpZWxkU3BlYy5uYW1lfSBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICAgIH1cblxuICAgIHJlc3VsdC5hZGQodmFsdWUpXG4gIH1cbn1cblxuLyoqXG4gKiBSdW5zIHBhcnNlIHN0ZXAuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBTdGVwIHZhbHVlLlxuICogQHBhcmFtIHt7bmFtZTogc3RyaW5nLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXJ9fSBmaWVsZFNwZWMgLSBGaWVsZCBzcGVjLlxuICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gLSBPcmlnaW5hbCBleHByZXNzaW9uIGZvciBlcnJvcnMuXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBwYXJzZVN0ZXAodmFsdWUsIGZpZWxkU3BlYywgZXhwcmVzc2lvbikge1xuICBjb25zdCBzdGVwID0gTnVtYmVyKHZhbHVlKVxuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcihzdGVwKSB8fCBzdGVwIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3RlcCBcIiR7dmFsdWV9XCIgZm9yICR7ZmllbGRTcGVjLm5hbWV9IGluIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cImApXG4gIH1cblxuICByZXR1cm4gc3RlcFxufVxuXG4vKipcbiAqIFJ1bnMgcGFyc2UgcmFuZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmFuZ2VQYXJ0IC0gUmFuZ2UgcG9ydGlvbiAoYmVmb3JlID8gYC9gKS5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHBhcmFtIHtib29sZWFufSBoYXNTdGVwIC0gV2hldGhlciB0aGUgcGFydCBoYWQgYSBgL3N0ZXBgIHN1ZmZpeC5cbiAqIEByZXR1cm5zIHtbbnVtYmVyLCBudW1iZXJdfVxuICovXG5mdW5jdGlvbiBwYXJzZVJhbmdlKHJhbmdlUGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uLCBoYXNTdGVwKSB7XG4gIGlmIChyYW5nZVBhcnQgPT09IFwiKlwiKSB7XG4gICAgcmV0dXJuIFtmaWVsZFNwZWMubWluLCBmaWVsZFNwZWMubWF4XVxuICB9XG5cbiAgY29uc3QgZGFzaEluZGV4ID0gcmFuZ2VQYXJ0LmluZGV4T2YoXCItXCIpXG5cbiAgaWYgKGRhc2hJbmRleCA9PT0gLTEpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlVmFsdWUocmFuZ2VQYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pXG5cbiAgICAvLyBgTi9zdGVwYCBpcyBzaG9ydGhhbmQgZm9yIGBOLW1heC9zdGVwYCAoVml4aWUgY3JvbikuXG4gICAgcmV0dXJuIFt2YWx1ZSwgaGFzU3RlcCA/IGZpZWxkU3BlYy5tYXggOiB2YWx1ZV1cbiAgfVxuXG4gIGNvbnN0IHN0YXJ0ID0gcGFyc2VWYWx1ZShyYW5nZVBhcnQuc2xpY2UoMCwgZGFzaEluZGV4KSwgZmllbGRTcGVjLCBleHByZXNzaW9uKVxuICBjb25zdCBlbmQgPSBwYXJzZVZhbHVlKHJhbmdlUGFydC5zbGljZShkYXNoSW5kZXggKyAxKSwgZmllbGRTcGVjLCBleHByZXNzaW9uKVxuXG4gIGlmIChzdGFydCA+IGVuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmFuZ2Ugc3RhcnQgJHtzdGFydH0gPiBlbmQgJHtlbmR9IGZvciAke2ZpZWxkU3BlYy5uYW1lfSBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICB9XG5cbiAgcmV0dXJuIFtzdGFydCwgZW5kXVxufVxuXG4vKipcbiAqIFJ1bnMgcGFyc2UgdmFsdWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3VmFsdWUgLSBSYXcgdmFsdWUgKG1heSBiZSBhIG5hbWUpLlxuICogQHBhcmFtIHt7bmFtZTogc3RyaW5nLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIG5hbWVzPzogc3RyaW5nW119fSBmaWVsZFNwZWMgLSBGaWVsZCBzcGVjLlxuICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gLSBPcmlnaW5hbCBleHByZXNzaW9uIGZvciBlcnJvcnMuXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBwYXJzZVZhbHVlKHJhd1ZhbHVlLCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pIHtcbiAgaWYgKCFyYXdWYWx1ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCAke2ZpZWxkU3BlYy5uYW1lfSB2YWx1ZSBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICB9XG5cbiAgY29uc3QgbmFtZWRJbmRleCA9IGZpZWxkU3BlYy5uYW1lcz8uaW5kZXhPZihyYXdWYWx1ZSlcblxuICBpZiAodHlwZW9mIG5hbWVkSW5kZXggPT09IFwibnVtYmVyXCIgJiYgbmFtZWRJbmRleCAhPT0gLTEpIHtcbiAgICByZXR1cm4gbmFtZWRJbmRleCArIGZpZWxkU3BlYy5taW5cbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gTnVtYmVyKHJhd1ZhbHVlKVxuXG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZFNwZWMubmFtZX0gdmFsdWUgXCIke3Jhd1ZhbHVlfVwiIGluIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cImApXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gNSB5ZWFycyBvZiBtaW51dGVzIOKAlCBjb3ZlcnMgdGhlIHdvcnN0LWNhc2UgbGVnaXRpbWF0ZSBnYXAsIHRoZVxuLy8gYDAgMCAyOSAyICpgIChGZWIgMjkpIGxlYXAteWVhci1vbmx5IHNjaGVkdWxlLCB3aXRoIGEgb25lLXllYXJcbi8vIGJ1ZmZlciBzbyB3ZSBuZXZlciByZXBvcnQgYSByZWFsIGNyb24gcGF0dGVybiBhcyBcIm5ldmVyIG1hdGNoZXNcIi5cbmNvbnN0IE1BWF9ORVhUX0ZJUkVfSVRFUkFUSU9OUyA9IDUgKiAzNjYgKiAyNCAqIDYwXG5cbi8qKlxuICogUmV0dXJucyB0aGUgbmV4dCBEYXRlIHN0cmljdGx5IGFmdGVyIGBmcm9tYCB0aGF0IHNhdGlzZmllcyBgcGFyc2VkYC5cbiAqIE9wZXJhdGVzIGF0IG1pbnV0ZSBncmFudWxhcml0eS4gQmFpbHMgb3V0IHdpdGggYW4gZXJyb3IgYWZ0ZXIgZml2ZVxuICogeWVhcnMgb2Ygc2VhcmNoLCB3aGljaCBvbmx5IGhhcHBlbnMgaWYgdGhlIGV4cHJlc3Npb24gbWF0Y2hlcyBub1xuICogcmVhbCB0aW1lIChlLmcuLCBgMCAwIDMxIDIgKmAg4oCUIEZlYiAzMXN0KS5cbiAqIEBwYXJhbSB7UGFyc2VkQ3Jvbn0gcGFyc2VkIC0gUGFyc2VkIGNyb24gZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSB7RGF0ZX0gZnJvbSAtIFJlZmVyZW5jZSBEYXRlIOKAlCB0aGUgbmV4dCBtYXRjaCBpcyBzdHJpY3RseSBhZnRlciB0aGlzLlxuICogQHJldHVybnMge0RhdGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXh0Q3JvbkZpcmVEYXRlKHBhcnNlZCwgZnJvbSkge1xuICBjb25zdCBjYW5kaWRhdGUgPSBuZXcgRGF0ZShmcm9tLmdldFRpbWUoKSlcblxuICBjYW5kaWRhdGUuc2V0U2Vjb25kcygwLCAwKVxuICBjYW5kaWRhdGUuc2V0TWludXRlcyhjYW5kaWRhdGUuZ2V0TWludXRlcygpICsgMSlcblxuICBmb3IgKGxldCBpdGVyYXRpb25zID0gMDsgaXRlcmF0aW9ucyA8IE1BWF9ORVhUX0ZJUkVfSVRFUkFUSU9OUzsgaXRlcmF0aW9ucyArPSAxKSB7XG4gICAgaWYgKGNhbmRpZGF0ZU1hdGNoZXMoY2FuZGlkYXRlLCBwYXJzZWQpKSByZXR1cm4gY2FuZGlkYXRlXG5cbiAgICBjYW5kaWRhdGUuc2V0TWludXRlcyhjYW5kaWRhdGUuZ2V0TWludXRlcygpICsgMSlcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgQ3JvbiBleHByZXNzaW9uIFwiJHtwYXJzZWQuZXhwcmVzc2lvbn1cIiBuZXZlciBtYXRjaGVzYClcbn1cblxuLyoqXG4gKiBSdW5zIGNhbmRpZGF0ZSBtYXRjaGVzLlxuICogQHBhcmFtIHtEYXRlfSBjYW5kaWRhdGUgLSBDYW5kaWRhdGUgRGF0ZSAoaW4gbG9jYWwgdGltZSkuXG4gKiBAcGFyYW0ge1BhcnNlZENyb259IHBhcnNlZCAtIFBhcnNlZCBleHByZXNzaW9uLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGNhbmRpZGF0ZU1hdGNoZXMoY2FuZGlkYXRlLCBwYXJzZWQpIHtcbiAgaWYgKCFwYXJzZWQubWludXRlLmhhcyhjYW5kaWRhdGUuZ2V0TWludXRlcygpKSkgcmV0dXJuIGZhbHNlXG4gIGlmICghcGFyc2VkLmhvdXIuaGFzKGNhbmRpZGF0ZS5nZXRIb3VycygpKSkgcmV0dXJuIGZhbHNlXG4gIGlmICghcGFyc2VkLm1vbnRoLmhhcyhjYW5kaWRhdGUuZ2V0TW9udGgoKSArIDEpKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBkYXlPZk1vbnRoTWF0Y2ggPSBwYXJzZWQuZGF5T2ZNb250aC5oYXMoY2FuZGlkYXRlLmdldERhdGUoKSlcbiAgY29uc3QgZGF5T2ZXZWVrTWF0Y2ggPSBwYXJzZWQuZGF5T2ZXZWVrLmhhcyhjYW5kaWRhdGUuZ2V0RGF5KCkpXG5cbiAgLy8gUE9TSVgvVml4aWUgY3JvbiBPUiBzZW1hbnRpY3M6IHdoZW4gYm90aCBkYXkgZmllbGRzIGFyZVxuICAvLyByZXN0cmljdGVkLCBmaXJlIHdoZW4gRUlUSEVSIG1hdGNoZXMuIFdoZW4gb25seSBvbmUgaXNcbiAgLy8gcmVzdHJpY3RlZCwgb25seSB0aGF0IG9uZSBhcHBsaWVzLlxuICBpZiAocGFyc2VkLmRheU9mTW9udGhSZXN0cmljdGVkICYmIHBhcnNlZC5kYXlPZldlZWtSZXN0cmljdGVkKSB7XG4gICAgcmV0dXJuIGRheU9mTW9udGhNYXRjaCB8fCBkYXlPZldlZWtNYXRjaFxuICB9XG5cbiAgaWYgKHBhcnNlZC5kYXlPZk1vbnRoUmVzdHJpY3RlZCkgcmV0dXJuIGRheU9mTW9udGhNYXRjaFxuICBpZiAocGFyc2VkLmRheU9mV2Vla1Jlc3RyaWN0ZWQpIHJldHVybiBkYXlPZldlZWtNYXRjaFxuXG4gIHJldHVybiB0cnVlXG59XG4iXX0=
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1leHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9jcm9uLWV4cHJlc3Npb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaOzs7Ozs7Ozs7OztHQVdHO0FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3hHLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFFbkUsTUFBTSxTQUFTLEdBQUc7SUFDaEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsUUFBUSxFQUFFLFdBQVc7SUFDckIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsVUFBVSxFQUFFLFdBQVc7SUFDdkIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsV0FBVyxFQUFFLFdBQVc7Q0FDekIsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHO0lBQ2IsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBQztJQUNqQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFDO0lBQy9CLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUM7SUFDckMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUs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QUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUUvRCwwREFBMEQ7SUFDMUQseURBQXlEO0lBQ3pELHFDQUFxQztJQUNyQyxJQUFJLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM5RCxPQUFPLGVBQWUsSUFBSSxjQUFjLENBQUE7SUFDMUMsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLG9CQUFvQjtRQUFFLE9BQU8sZUFBZSxDQUFBO0lBQ3ZELElBQUksTUFBTSxDQUFDLG1CQUFtQjtRQUFFLE9BQU8sY0FBYyxDQUFBO0lBRXJELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG4vKipcbiAqIE1pbmltYWwgUE9TSVgtc3R5bGUgNS1maWVsZCBjcm9uIHBhcnNlciB1c2VkIGJ5IHRoZSBiYWNrZ3JvdW5kLWpvYlxuICogc2NoZWR1bGVyLiBTdXBwb3J0cyBgKmAsIHNpbmdsZSB2YWx1ZXMsIHJhbmdlcyAoYE4tTWApLCBzdGVwc1xuICogKGAqXFwvTmAgb3IgYE4tTS9OYCksIGNvbW1hLXNlcGFyYXRlZCBsaXN0cywgYW5kIHRoZSBjb21tb25cbiAqIGBAaG91cmx5YC9gQGRhaWx5YC9gQHdlZWtseWAvYEBtb250aGx5YC9gQHllYXJseWAvYEBtaWRuaWdodGBcbiAqIHNob3J0Y3V0cy4gTW9udGggYW5kIGRheS1vZi13ZWVrIG5hbWVzIChgamFuYC1gZGVjYCwgYHN1bmAtYHNhdGAsXG4gKiBjYXNlLWluc2Vuc2l0aXZlKSBhcmUgYWxzbyBhY2NlcHRlZC5cbiAqXG4gKiBGb3IgZGF5LW9mLW1vbnRoICsgZGF5LW9mLXdlZWsgaW50ZXJhY3Rpb24sIGZvbGxvd3MgUE9TSVgvVml4aWVcbiAqIGNyb24gc2VtYW50aWNzOiB3aGVuIGJvdGggZmllbGRzIGFyZSByZXN0cmljdGVkIChuZWl0aGVyIGAqYCksIHRoZVxuICogam9iIGZpcmVzIHdoZW4gRUlUSEVSIG1hdGNoZXMuIFdoZW4gb25lIGlzIGAqYCBpdCBoYXMgbm8gZWZmZWN0LlxuICovXG5cbmNvbnN0IE1PTlRIX05BTUVTID0gW1wiamFuXCIsIFwiZmViXCIsIFwibWFyXCIsIFwiYXByXCIsIFwibWF5XCIsIFwianVuXCIsIFwianVsXCIsIFwiYXVnXCIsIFwic2VwXCIsIFwib2N0XCIsIFwibm92XCIsIFwiZGVjXCJdXG5jb25zdCBEQVlfTkFNRVMgPSBbXCJzdW5cIiwgXCJtb25cIiwgXCJ0dWVcIiwgXCJ3ZWRcIiwgXCJ0aHVcIiwgXCJmcmlcIiwgXCJzYXRcIl1cblxuY29uc3QgU0hPUlRDVVRTID0ge1xuICBcIkBob3VybHlcIjogXCIwICogKiAqICpcIixcbiAgXCJAZGFpbHlcIjogXCIwIDAgKiAqICpcIixcbiAgXCJAbWlkbmlnaHRcIjogXCIwIDAgKiAqICpcIixcbiAgXCJAd2Vla2x5XCI6IFwiMCAwICogKiAwXCIsXG4gIFwiQG1vbnRobHlcIjogXCIwIDAgMSAqICpcIixcbiAgXCJAeWVhcmx5XCI6IFwiMCAwIDEgMSAqXCIsXG4gIFwiQGFubnVhbGx5XCI6IFwiMCAwIDEgMSAqXCJcbn1cblxuY29uc3QgRklFTERTID0gW1xuICB7bmFtZTogXCJtaW51dGVcIiwgbWluOiAwLCBtYXg6IDU5fSxcbiAge25hbWU6IFwiaG91clwiLCBtaW46IDAsIG1heDogMjN9LFxuICB7bmFtZTogXCJkYXlPZk1vbnRoXCIsIG1pbjogMSwgbWF4OiAzMX0sXG4gIHtuYW1lOiBcIm1vbnRoXCIsIG1pbjogMSwgbWF4OiAxMiwgbmFtZXM6IE1PTlRIX05BTUVTfSxcbiAgLy8gQWNjZXB0IDAtNyBzbyByYW5nZXMgbGlrZSBgNS03YCAoRnJpLVN1bikgd29yazsgd2Ugbm9ybWFsaXplIDdcbiAgLy8gZG93biB0byAwIGFmdGVyIHBhcnNpbmcgaW4gYG5vcm1hbGl6ZURheU9mV2Vla2AgYmVsb3cuXG4gIHtuYW1lOiBcImRheU9mV2Vla1wiLCBtaW46IDAsIG1heDogNywgbmFtZXM6IERBWV9OQU1FU31cbl1cblxuLyoqXG4gKiBQYXJzZWRDcm9uIHR5cGUuXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQYXJzZWRDcm9uXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBtaW51dGUgLSBBbGxvd2VkIG1pbnV0ZSB2YWx1ZXMgKDAtNTkpLlxuICogQHByb3BlcnR5IHtTZXQ8bnVtYmVyPn0gaG91ciAtIEFsbG93ZWQgaG91ciB2YWx1ZXMgKDAtMjMpLlxuICogQHByb3BlcnR5IHtTZXQ8bnVtYmVyPn0gZGF5T2ZNb250aCAtIEFsbG93ZWQgZGF5LW9mLW1vbnRoIHZhbHVlcyAoMS0zMSkuXG4gKiBAcHJvcGVydHkge1NldDxudW1iZXI+fSBtb250aCAtIEFsbG93ZWQgbW9udGggdmFsdWVzICgxLTEyKS5cbiAqIEBwcm9wZXJ0eSB7U2V0PG51bWJlcj59IGRheU9mV2VlayAtIEFsbG93ZWQgZGF5LW9mLXdlZWsgdmFsdWVzICgwLTYsIDA9U3VuKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGF5T2ZNb250aFJlc3RyaWN0ZWQgLSBUcnVlIHdoZW4gdGhlIGRheU9mTW9udGggZmllbGQgaXMgbm90IGA/YC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZGF5T2ZXZWVrUmVzdHJpY3RlZCAtIFRydWUgd2hlbiB0aGUgZGF5T2ZXZWVrIGZpZWxkIGlzIG5vdCBgP2AuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGRpYWdub3N0aWNzLlxuICovXG5cbi8qKlxuICogUnVucyB0aGUgcGFyc2VDcm9uRXhwcmVzc2lvbiBoZWxwZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIENyb24gZXhwcmVzc2lvbiBvciBzaG9ydGN1dC5cbiAqIEByZXR1cm5zIHtQYXJzZWRDcm9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDcm9uRXhwcmVzc2lvbihleHByZXNzaW9uKSB7XG4gIGlmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiB8fCAhZXhwcmVzc2lvbi50cmltKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgY3JvbiBleHByZXNzaW9uOiAke2V4cHJlc3Npb259YClcbiAgfVxuXG4gIGNvbnN0IHRyaW1tZWQgPSBleHByZXNzaW9uLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IGV4cGFuZGVkID0gU0hPUlRDVVRTWy8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtrZXlvZiB0eXBlb2YgU0hPUlRDVVRTfSAqLyAodHJpbW1lZCldIHx8IHRyaW1tZWRcbiAgY29uc3QgZmllbGRzID0gZXhwYW5kZWQuc3BsaXQoL1xccysvKVxuXG4gIGlmIChmaWVsZHMubGVuZ3RoICE9PSA1KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGNyb24gZXhwcmVzc2lvbiBcIiR7ZXhwcmVzc2lvbn1cIjogZXhwZWN0ZWQgNSBmaWVsZHMsIGdvdCAke2ZpZWxkcy5sZW5ndGh9YClcbiAgfVxuXG4gIGNvbnN0IFttaW51dGVGaWVsZCwgaG91ckZpZWxkLCBkYXlPZk1vbnRoRmllbGQsIG1vbnRoRmllbGQsIGRheU9mV2Vla0ZpZWxkXSA9IGZpZWxkc1xuICBjb25zdCBwYXJzZWQgPSB7XG4gICAgbWludXRlOiBwYXJzZUZpZWxkKG1pbnV0ZUZpZWxkLCBGSUVMRFNbMF0sIGV4cHJlc3Npb24pLFxuICAgIGhvdXI6IHBhcnNlRmllbGQoaG91ckZpZWxkLCBGSUVMRFNbMV0sIGV4cHJlc3Npb24pLFxuICAgIGRheU9mTW9udGg6IHBhcnNlRmllbGQoZGF5T2ZNb250aEZpZWxkLCBGSUVMRFNbMl0sIGV4cHJlc3Npb24pLFxuICAgIG1vbnRoOiBwYXJzZUZpZWxkKG1vbnRoRmllbGQsIEZJRUxEU1szXSwgZXhwcmVzc2lvbiksXG4gICAgLy8gQ3JvbiB0cmVhdHMgYm90aCAwIGFuZCA3IGFzIFN1bmRheS4gV2UgYWNjZXB0IDcgdGhyb3VnaG91dCB0aGVcbiAgICAvLyBwYXJzZSBwYXNzIChzbyBgNS03YCBmb3IgRnJpLVN1biB3b3JrcykgYW5kIHRoZW4gbm9ybWFsaXplIGFueVxuICAgIC8vIDdzIGRvd24gdG8gMCBzbyB0aGUgbWF0Y2hlciBvbmx5IGRlYWxzIHdpdGggMC02LlxuICAgIGRheU9mV2Vlazogbm9ybWFsaXplRGF5T2ZXZWVrKHBhcnNlRmllbGQoZGF5T2ZXZWVrRmllbGQsIEZJRUxEU1s0XSwgZXhwcmVzc2lvbikpLFxuICAgIGRheU9mTW9udGhSZXN0cmljdGVkOiBkYXlPZk1vbnRoRmllbGQgIT09IFwiKlwiLFxuICAgIGRheU9mV2Vla1Jlc3RyaWN0ZWQ6IGRheU9mV2Vla0ZpZWxkICE9PSBcIipcIixcbiAgICBleHByZXNzaW9uXG4gIH1cblxuICByZXR1cm4gcGFyc2VkXG59XG5cbi8qKlxuICogUnVucyBub3JtYWxpemUgZGF5IG9mIHdlZWsuXG4gKiBAcGFyYW0ge1NldDxudW1iZXI+fSBkYXlPZldlZWtcbiAqIEByZXR1cm5zIHtTZXQ8bnVtYmVyPn1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplRGF5T2ZXZWVrKGRheU9mV2Vlaykge1xuICBpZiAoZGF5T2ZXZWVrLmhhcyg3KSkge1xuICAgIGRheU9mV2Vlay5kZWxldGUoNylcbiAgICBkYXlPZldlZWsuYWRkKDApXG4gIH1cblxuICByZXR1cm4gZGF5T2ZXZWVrXG59XG5cbi8qKlxuICogUnVucyBwYXJzZSBmaWVsZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCAtIEZpZWxkIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0ge3tuYW1lOiBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbmFtZXM/OiBzdHJpbmdbXX19IGZpZWxkU3BlYyAtIEZpZWxkIHNwZWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIFdob2xlIGNyb24gZXhwcmVzc2lvbiBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcmV0dXJucyB7U2V0PG51bWJlcj59XG4gKi9cbmZ1bmN0aW9uIHBhcnNlRmllbGQoZmllbGQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbikge1xuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KClcblxuICBmb3IgKGNvbnN0IHBhcnQgb2YgZmllbGQuc3BsaXQoXCIsXCIpKSB7XG4gICAgYWRkUGFydFZhbHVlcyhwYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24sIHJlc3VsdClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBSdW5zIGFkZCBwYXJ0IHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJ0IC0gU2luZ2xlIGNvbW1hLXNlcGFyYXRlZCBjaHVuay5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHBhcmFtIHtTZXQ8bnVtYmVyPn0gcmVzdWx0IC0gQWNjdW11bGF0b3IuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gYWRkUGFydFZhbHVlcyhwYXJ0LCBmaWVsZFNwZWMsIGV4cHJlc3Npb24sIHJlc3VsdCkge1xuICBpZiAoIXBhcnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZFNwZWMubmFtZX0gZmllbGQgaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgfVxuXG4gIGNvbnN0IFtyYW5nZVBhcnQsIHN0ZXBQYXJ0XSA9IHBhcnQuc3BsaXQoXCIvXCIpXG4gIGNvbnN0IHN0ZXAgPSBzdGVwUGFydCA9PT0gdW5kZWZpbmVkID8gMSA6IHBhcnNlU3RlcChzdGVwUGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uKVxuICBjb25zdCBbc3RhcnQsIGVuZF0gPSBwYXJzZVJhbmdlKHJhbmdlUGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uLCBzdGVwUGFydCAhPT0gdW5kZWZpbmVkKVxuXG4gIGZvciAobGV0IHZhbHVlID0gc3RhcnQ7IHZhbHVlIDw9IGVuZDsgdmFsdWUgKz0gc3RlcCkge1xuICAgIGlmICh2YWx1ZSA8IGZpZWxkU3BlYy5taW4gfHwgdmFsdWUgPiBmaWVsZFNwZWMubWF4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFZhbHVlICR7dmFsdWV9IG91dCBvZiByYW5nZSBmb3IgJHtmaWVsZFNwZWMubmFtZX0gaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgICB9XG5cbiAgICByZXN1bHQuYWRkKHZhbHVlKVxuICB9XG59XG5cbi8qKlxuICogUnVucyBwYXJzZSBzdGVwLlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIC0gU3RlcCB2YWx1ZS5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gcGFyc2VTdGVwKHZhbHVlLCBmaWVsZFNwZWMsIGV4cHJlc3Npb24pIHtcbiAgY29uc3Qgc3RlcCA9IE51bWJlcih2YWx1ZSlcblxuICBpZiAoIU51bWJlci5pc0ludGVnZXIoc3RlcCkgfHwgc3RlcCA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHN0ZXAgXCIke3ZhbHVlfVwiIGZvciAke2ZpZWxkU3BlYy5uYW1lfSBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICB9XG5cbiAgcmV0dXJuIHN0ZXBcbn1cblxuLyoqXG4gKiBSdW5zIHBhcnNlIHJhbmdlLlxuICogQHBhcmFtIHtzdHJpbmd9IHJhbmdlUGFydCAtIFJhbmdlIHBvcnRpb24gKGJlZm9yZSA/IGAvYCkuXG4gKiBAcGFyYW0ge3tuYW1lOiBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgbmFtZXM/OiBzdHJpbmdbXX19IGZpZWxkU3BlYyAtIEZpZWxkIHNwZWMuXG4gKiBAcGFyYW0ge3N0cmluZ30gZXhwcmVzc2lvbiAtIE9yaWdpbmFsIGV4cHJlc3Npb24gZm9yIGVycm9ycy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzU3RlcCAtIFdoZXRoZXIgdGhlIHBhcnQgaGFkIGEgYC9zdGVwYCBzdWZmaXguXG4gKiBAcmV0dXJucyB7W251bWJlciwgbnVtYmVyXX1cbiAqL1xuZnVuY3Rpb24gcGFyc2VSYW5nZShyYW5nZVBhcnQsIGZpZWxkU3BlYywgZXhwcmVzc2lvbiwgaGFzU3RlcCkge1xuICBpZiAocmFuZ2VQYXJ0ID09PSBcIipcIikge1xuICAgIHJldHVybiBbZmllbGRTcGVjLm1pbiwgZmllbGRTcGVjLm1heF1cbiAgfVxuXG4gIGNvbnN0IGRhc2hJbmRleCA9IHJhbmdlUGFydC5pbmRleE9mKFwiLVwiKVxuXG4gIGlmIChkYXNoSW5kZXggPT09IC0xKSB7XG4gICAgY29uc3QgdmFsdWUgPSBwYXJzZVZhbHVlKHJhbmdlUGFydCwgZmllbGRTcGVjLCBleHByZXNzaW9uKVxuXG4gICAgLy8gYE4vc3RlcGAgaXMgc2hvcnRoYW5kIGZvciBgTi1tYXgvc3RlcGAgKFZpeGllIGNyb24pLlxuICAgIHJldHVybiBbdmFsdWUsIGhhc1N0ZXAgPyBmaWVsZFNwZWMubWF4IDogdmFsdWVdXG4gIH1cblxuICBjb25zdCBzdGFydCA9IHBhcnNlVmFsdWUocmFuZ2VQYXJ0LnNsaWNlKDAsIGRhc2hJbmRleCksIGZpZWxkU3BlYywgZXhwcmVzc2lvbilcbiAgY29uc3QgZW5kID0gcGFyc2VWYWx1ZShyYW5nZVBhcnQuc2xpY2UoZGFzaEluZGV4ICsgMSksIGZpZWxkU3BlYywgZXhwcmVzc2lvbilcblxuICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFJhbmdlIHN0YXJ0ICR7c3RhcnR9ID4gZW5kICR7ZW5kfSBmb3IgJHtmaWVsZFNwZWMubmFtZX0gaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgfVxuXG4gIHJldHVybiBbc3RhcnQsIGVuZF1cbn1cblxuLyoqXG4gKiBSdW5zIHBhcnNlIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9IHJhd1ZhbHVlIC0gUmF3IHZhbHVlIChtYXkgYmUgYSBuYW1lKS5cbiAqIEBwYXJhbSB7e25hbWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBuYW1lcz86IHN0cmluZ1tdfX0gZmllbGRTcGVjIC0gRmllbGQgc3BlYy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIC0gT3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgZXJyb3JzLlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gcGFyc2VWYWx1ZShyYXdWYWx1ZSwgZmllbGRTcGVjLCBleHByZXNzaW9uKSB7XG4gIGlmICghcmF3VmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgJHtmaWVsZFNwZWMubmFtZX0gdmFsdWUgaW4gY3JvbiBleHByZXNzaW9uIFwiJHtleHByZXNzaW9ufVwiYClcbiAgfVxuXG4gIGNvbnN0IG5hbWVkSW5kZXggPSBmaWVsZFNwZWMubmFtZXM/LmluZGV4T2YocmF3VmFsdWUpXG5cbiAgaWYgKHR5cGVvZiBuYW1lZEluZGV4ID09PSBcIm51bWJlclwiICYmIG5hbWVkSW5kZXggIT09IC0xKSB7XG4gICAgcmV0dXJuIG5hbWVkSW5kZXggKyBmaWVsZFNwZWMubWluXG4gIH1cblxuICBjb25zdCB2YWx1ZSA9IE51bWJlcihyYXdWYWx1ZSlcblxuICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkICR7ZmllbGRTcGVjLm5hbWV9IHZhbHVlIFwiJHtyYXdWYWx1ZX1cIiBpbiBjcm9uIGV4cHJlc3Npb24gXCIke2V4cHJlc3Npb259XCJgKVxuICB9XG5cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIDUgeWVhcnMgb2YgbWludXRlcyDigJQgY292ZXJzIHRoZSB3b3JzdC1jYXNlIGxlZ2l0aW1hdGUgZ2FwLCB0aGVcbi8vIGAwIDAgMjkgMiAqYCAoRmViIDI5KSBsZWFwLXllYXItb25seSBzY2hlZHVsZSwgd2l0aCBhIG9uZS15ZWFyXG4vLyBidWZmZXIgc28gd2UgbmV2ZXIgcmVwb3J0IGEgcmVhbCBjcm9uIHBhdHRlcm4gYXMgXCJuZXZlciBtYXRjaGVzXCIuXG5jb25zdCBNQVhfTkVYVF9GSVJFX0lURVJBVElPTlMgPSA1ICogMzY2ICogMjQgKiA2MFxuXG4vKipcbiAqIFJldHVybnMgdGhlIG5leHQgRGF0ZSBzdHJpY3RseSBhZnRlciBgZnJvbWAgdGhhdCBzYXRpc2ZpZXMgYHBhcnNlZGAuXG4gKiBPcGVyYXRlcyBhdCBtaW51dGUgZ3JhbnVsYXJpdHkuIEJhaWxzIG91dCB3aXRoIGFuIGVycm9yIGFmdGVyIGZpdmVcbiAqIHllYXJzIG9mIHNlYXJjaCwgd2hpY2ggb25seSBoYXBwZW5zIGlmIHRoZSBleHByZXNzaW9uIG1hdGNoZXMgbm9cbiAqIHJlYWwgdGltZSAoZS5nLiwgYDAgMCAzMSAyICpgIOKAlCBGZWIgMzFzdCkuXG4gKiBAcGFyYW0ge1BhcnNlZENyb259IHBhcnNlZCAtIFBhcnNlZCBjcm9uIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0ge0RhdGV9IGZyb20gLSBSZWZlcmVuY2UgRGF0ZSDigJQgdGhlIG5leHQgbWF0Y2ggaXMgc3RyaWN0bHkgYWZ0ZXIgdGhpcy5cbiAqIEByZXR1cm5zIHtEYXRlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dENyb25GaXJlRGF0ZShwYXJzZWQsIGZyb20pIHtcbiAgY29uc3QgY2FuZGlkYXRlID0gbmV3IERhdGUoZnJvbS5nZXRUaW1lKCkpXG5cbiAgY2FuZGlkYXRlLnNldFNlY29uZHMoMCwgMClcbiAgY2FuZGlkYXRlLnNldE1pbnV0ZXMoY2FuZGlkYXRlLmdldE1pbnV0ZXMoKSArIDEpXG5cbiAgZm9yIChsZXQgaXRlcmF0aW9ucyA9IDA7IGl0ZXJhdGlvbnMgPCBNQVhfTkVYVF9GSVJFX0lURVJBVElPTlM7IGl0ZXJhdGlvbnMgKz0gMSkge1xuICAgIGlmIChjYW5kaWRhdGVNYXRjaGVzKGNhbmRpZGF0ZSwgcGFyc2VkKSkgcmV0dXJuIGNhbmRpZGF0ZVxuXG4gICAgY2FuZGlkYXRlLnNldE1pbnV0ZXMoY2FuZGlkYXRlLmdldE1pbnV0ZXMoKSArIDEpXG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYENyb24gZXhwcmVzc2lvbiBcIiR7cGFyc2VkLmV4cHJlc3Npb259XCIgbmV2ZXIgbWF0Y2hlc2ApXG59XG5cbi8qKlxuICogUnVucyBjYW5kaWRhdGUgbWF0Y2hlcy5cbiAqIEBwYXJhbSB7RGF0ZX0gY2FuZGlkYXRlIC0gQ2FuZGlkYXRlIERhdGUgKGluIGxvY2FsIHRpbWUpLlxuICogQHBhcmFtIHtQYXJzZWRDcm9ufSBwYXJzZWQgLSBQYXJzZWQgZXhwcmVzc2lvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBjYW5kaWRhdGVNYXRjaGVzKGNhbmRpZGF0ZSwgcGFyc2VkKSB7XG4gIGlmICghcGFyc2VkLm1pbnV0ZS5oYXMoY2FuZGlkYXRlLmdldE1pbnV0ZXMoKSkpIHJldHVybiBmYWxzZVxuICBpZiAoIXBhcnNlZC5ob3VyLmhhcyhjYW5kaWRhdGUuZ2V0SG91cnMoKSkpIHJldHVybiBmYWxzZVxuICBpZiAoIXBhcnNlZC5tb250aC5oYXMoY2FuZGlkYXRlLmdldE1vbnRoKCkgKyAxKSkgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgZGF5T2ZNb250aE1hdGNoID0gcGFyc2VkLmRheU9mTW9udGguaGFzKGNhbmRpZGF0ZS5nZXREYXRlKCkpXG4gIGNvbnN0IGRheU9mV2Vla01hdGNoID0gcGFyc2VkLmRheU9mV2Vlay5oYXMoY2FuZGlkYXRlLmdldERheSgpKVxuXG4gIC8vIFBPU0lYL1ZpeGllIGNyb24gT1Igc2VtYW50aWNzOiB3aGVuIGJvdGggZGF5IGZpZWxkcyBhcmVcbiAgLy8gcmVzdHJpY3RlZCwgZmlyZSB3aGVuIEVJVEhFUiBtYXRjaGVzLiBXaGVuIG9ubHkgb25lIGlzXG4gIC8vIHJlc3RyaWN0ZWQsIG9ubHkgdGhhdCBvbmUgYXBwbGllcy5cbiAgaWYgKHBhcnNlZC5kYXlPZk1vbnRoUmVzdHJpY3RlZCAmJiBwYXJzZWQuZGF5T2ZXZWVrUmVzdHJpY3RlZCkge1xuICAgIHJldHVybiBkYXlPZk1vbnRoTWF0Y2ggfHwgZGF5T2ZXZWVrTWF0Y2hcbiAgfVxuXG4gIGlmIChwYXJzZWQuZGF5T2ZNb250aFJlc3RyaWN0ZWQpIHJldHVybiBkYXlPZk1vbnRoTWF0Y2hcbiAgaWYgKHBhcnNlZC5kYXlPZldlZWtSZXN0cmljdGVkKSByZXR1cm4gZGF5T2ZXZWVrTWF0Y2hcblxuICByZXR1cm4gdHJ1ZVxufVxuIl19
|
|
@@ -11,7 +11,7 @@ function isJobMessage(message) {
|
|
|
11
11
|
return false;
|
|
12
12
|
const messageRecord = /**
|
|
13
13
|
* Narrows the runtime value to the documented type.
|
|
14
|
-
|
|
14
|
+
* @type {{type?: ?, payload?: ?}} */ (message);
|
|
15
15
|
return messageRecord.type === "job" && Object.hasOwn(messageRecord, "payload");
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
@@ -73,4 +73,4 @@ process.once("disconnect", () => {
|
|
|
73
73
|
process.once("message", (message) => {
|
|
74
74
|
void handleJobMessage(message);
|
|
75
75
|
});
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ya2VkLXJ1bm5lci1jaGlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvZm9ya2VkLXJ1bm5lci1jaGlsZC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUE7QUFFM0MsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFBO0FBRXJCOzs7O0dBSUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxPQUFPO0lBQzNCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRXpELE1BQU0sYUFBYSxHQUFHOzsrREFFcUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRXJFLE9BQU8sYUFBYSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFDaEYsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLE1BQU0sQ0FBQyxRQUFRO0lBQ3RCLFNBQVMsR0FBRyxJQUFJLENBQUE7SUFDaEIsT0FBTyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7SUFFM0IsSUFBSSxPQUFPLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7QUFDNUMsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsaUJBQWlCO0lBQ3hCLElBQUksT0FBTyxDQUFDLElBQUk7UUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUE7QUFDeEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsYUFBYSxDQUFDLE9BQU87SUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBRUQsTUFBTSxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLGdCQUFnQixDQUFDLE9BQU87SUFDckMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDNUIsaUJBQWlCLEVBQUUsQ0FBQTtRQUNuQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDWCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLGlCQUFpQixFQUFFLENBQUE7UUFDbkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUM1RCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDWCxDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssTUFBTSxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDN0MsQ0FBQztBQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtJQUM5QixJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDakMsQ0FBQyxDQUFDLENBQUE7QUFFRixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO0lBQ2xDLEtBQUssZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDaEMsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHJ1bkpvYlBheWxvYWQgZnJvbSBcIi4vam9iLXJ1bm5lci5qc1wiXG5cbmxldCBmaW5pc2hpbmcgPSBmYWxzZVxuXG4vKipcbiAqIFJ1bnMgaXMgam9iIG1lc3NhZ2UuXG4gKiBAcGFyYW0gez99IG1lc3NhZ2UgLSBJUEMgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHttZXNzYWdlIGlzIHt0eXBlOiBcImpvYlwiLCBwYXlsb2FkOiBpbXBvcnQoXCIuL3R5cGVzLmpzXCIpLkJhY2tncm91bmRKb2JQYXlsb2FkfX0gLSBXaGV0aGVyIHRoaXMgaXMgYSBqb2IgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gaXNKb2JNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgaWYgKCFtZXNzYWdlIHx8IHR5cGVvZiBtZXNzYWdlICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBtZXNzYWdlUmVjb3JkID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7e3R5cGU/OiA/LCBwYXlsb2FkPzogP319ICovIChtZXNzYWdlKVxuXG4gIHJldHVybiBtZXNzYWdlUmVjb3JkLnR5cGUgPT09IFwiam9iXCIgJiYgT2JqZWN0Lmhhc093bihtZXNzYWdlUmVjb3JkLCBcInBheWxvYWRcIilcbn1cblxuLyoqXG4gKiBSdW5zIGZpbmlzaC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBleGl0Q29kZSAtIFByb2Nlc3MgZXhpdCBjb2RlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGZpbmlzaChleGl0Q29kZSkge1xuICBmaW5pc2hpbmcgPSB0cnVlXG4gIHByb2Nlc3MuZXhpdENvZGUgPSBleGl0Q29kZVxuXG4gIGlmIChwcm9jZXNzLmNvbm5lY3RlZCAmJiBwcm9jZXNzLmRpc2Nvbm5lY3QpIHtcbiAgICBwcm9jZXNzLmRpc2Nvbm5lY3QoKVxuICB9XG5cbiAgc2V0SW1tZWRpYXRlKCgpID0+IHByb2Nlc3MuZXhpdChleGl0Q29kZSkpXG59XG5cbi8qKlxuICogUnVucyByZXBvcnQgam9iIGZpbmlzaGVkLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHJlcG9ydEpvYkZpbmlzaGVkKCkge1xuICBpZiAocHJvY2Vzcy5zZW5kKSBwcm9jZXNzLnNlbmQoe3R5cGU6IFwiam9iLXJlcG9ydGVkXCJ9KVxufVxuXG4vKipcbiAqIFJ1bnMgcnVuIGpvYiBtZXNzYWdlLlxuICogQHBhcmFtIHs/fSBtZXNzYWdlIC0gSVBDIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyBhZnRlciB0aGUgcGF5bG9hZCBoYXMgcnVuLlxuICovXG5hc3luYyBmdW5jdGlvbiBydW5Kb2JNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgaWYgKCFpc0pvYk1lc3NhZ2UobWVzc2FnZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJGb3JrZWQgYmFja2dyb3VuZCBqb2IgcnVubmVyIHJlY2VpdmVkIGludmFsaWQgcGF5bG9hZFwiKVxuICB9XG5cbiAgYXdhaXQgcnVuSm9iUGF5bG9hZChtZXNzYWdlLnBheWxvYWQpXG59XG5cbi8qKlxuICogUnVucyBoYW5kbGUgam9iIG1lc3NhZ2UuXG4gKiBAcGFyYW0gez99IG1lc3NhZ2UgLSBJUEMgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIGNvbXBsZXRpb24gaXMgcmVwb3J0ZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGhhbmRsZUpvYk1lc3NhZ2UobWVzc2FnZSkge1xuICB0cnkge1xuICAgIGF3YWl0IHJ1bkpvYk1lc3NhZ2UobWVzc2FnZSlcbiAgICByZXBvcnRKb2JGaW5pc2hlZCgpXG4gICAgZmluaXNoKDApXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmVwb3J0Sm9iRmluaXNoZWQoKVxuICAgIGNvbnNvbGUuZXJyb3IoXCJGb3JrZWQgYmFja2dyb3VuZCBqb2IgcnVubmVyIGZhaWxlZDpcIiwgZXJyb3IpXG4gICAgZmluaXNoKDEpXG4gIH1cbn1cblxuZm9yIChjb25zdCBzaWduYWwgb2YgW1wiU0lHVEVSTVwiLCBcIlNJR0lOVFwiXSkge1xuICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCAoKSA9PiBwcm9jZXNzLmV4aXQoMSkpXG59XG5cbnByb2Nlc3Mub25jZShcImRpc2Nvbm5lY3RcIiwgKCkgPT4ge1xuICBpZiAoIWZpbmlzaGluZykgcHJvY2Vzcy5leGl0KDApXG59KVxuXG5wcm9jZXNzLm9uY2UoXCJtZXNzYWdlXCIsIChtZXNzYWdlKSA9PiB7XG4gIHZvaWQgaGFuZGxlSm9iTWVzc2FnZShtZXNzYWdlKVxufSlcbiJdfQ==
|
|
@@ -10,7 +10,7 @@ export default class BackgroundJobRegistry {
|
|
|
10
10
|
configuration: import("../configuration.js").default;
|
|
11
11
|
/**
|
|
12
12
|
* Narrows the runtime value to the documented type.
|
|
13
|
-
|
|
13
|
+
* @type {Map<string, typeof VelociousJob>} */
|
|
14
14
|
jobsByName: Map<string, typeof VelociousJob>;
|
|
15
15
|
/**
|
|
16
16
|
* Runs load.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-registry.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job-registry.js"],"names":[],"mappings":"AAOA;IACE;;;;OAIG;IACH,+BAFG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;KAC/C,EAOA;IALC,qDAAkC;IAClC;;
|
|
1
|
+
{"version":3,"file":"job-registry.d.ts","sourceRoot":"","sources":["../../../src/background-jobs/job-registry.js"],"names":[],"mappings":"AAOA;IACE;;;;OAIG;IACH,+BAFG;QAAoD,aAAa,EAAzD,OAAO,qBAAqB,EAAE,OAAO;KAC/C,EAOA;IALC,qDAAkC;IAClC;;kDAE8C;IAC9C,YADU,GAAG,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC,CACf;IAG7B;;;OAGG;IACH,QAFa,OAAO,CAAC,IAAI,CAAC,CAezB;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACJ,OAAO,YAAY,CAU/B;IAED;;;;;;OAMG;IACH,gCALW,MAAM,sBAEd;QAAsB,cAAc,EAA5B,OAAO;KACf,GAAU,OAAO,CAAC,IAAI,CAAC,CA8BzB;CACF;yBAtFwB,UAAU"}
|
|
@@ -13,7 +13,7 @@ export default class BackgroundJobRegistry {
|
|
|
13
13
|
this.configuration = configuration;
|
|
14
14
|
/**
|
|
15
15
|
* Narrows the runtime value to the documented type.
|
|
16
|
-
|
|
16
|
+
* @type {Map<string, typeof VelociousJob>} */
|
|
17
17
|
this.jobsByName = new Map();
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
@@ -77,4 +77,4 @@ export default class BackgroundJobRegistry {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9qb2ItcmVnaXN0cnkuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxpQkFBaUIsTUFBTSxpQ0FBaUMsQ0FBQTtBQUMvRCxPQUFPLFlBQVksTUFBTSxVQUFVLENBQUE7QUFFbkMsTUFBTSxDQUFDLE9BQU8sT0FBTyxxQkFBcUI7SUFDeEM7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxhQUFhLEVBQUM7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDbEM7O3NEQUU4QztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDbkQsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFLEVBQUMsY0FBYyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUE7UUFFbkUsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN6RixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNoRSxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0MsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFFakUsSUFBSSxpQkFBaUIsS0FBSywwQkFBMEIsRUFBRSxDQUFDO1lBQ3JELE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUE7UUFDN0UsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLE9BQU87UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFN0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsT0FBTyxtQkFBbUIsQ0FBQyxDQUFBO1FBQzdELENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxFQUFDLGNBQWMsRUFBQztRQUNwRCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDMUIsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sVUFBVSxDQUFDLENBQUE7UUFFOUMsSUFBSSxLQUFLLEVBQUUsTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtZQUMxRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFBO1lBRWxDLElBQUksQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDbEYsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsWUFBWSxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQ25FLENBQUM7WUFFRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUE7WUFFbEMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLGNBQWM7b0JBQUUsU0FBUTtnQkFFNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsT0FBTyxVQUFVLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFDcEUsQ0FBQztZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN4QyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBmcyBmcm9tIFwiZnMvcHJvbWlzZXNcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHRvSW1wb3J0U3BlY2lmaWVyIGZyb20gXCIuLi91dGlscy90by1pbXBvcnQtc3BlY2lmaWVyLmpzXCJcbmltcG9ydCBWZWxvY2lvdXNKb2IgZnJvbSBcIi4vam9iLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFja2dyb3VuZEpvYlJlZ2lzdHJ5IHtcbiAgLyoqXG4gICAqIFJ1bnMgY29uc3RydWN0b3IuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9jb25maWd1cmF0aW9uLmpzXCIpLmRlZmF1bHR9IGFyZ3MuY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7Y29uZmlndXJhdGlvbn0pIHtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uXG4gICAgLyoqXG4gICAgICogTmFycm93cyB0aGUgcnVudGltZSB2YWx1ZSB0byB0aGUgZG9jdW1lbnRlZCB0eXBlLlxuICAgICAqIEB0eXBlIHtNYXA8c3RyaW5nLCB0eXBlb2YgVmVsb2Npb3VzSm9iPn0gKi9cbiAgICB0aGlzLmpvYnNCeU5hbWUgPSBuZXcgTWFwKClcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBsb2FkKCkge1xuICAgIGNvbnN0IGRpcmVjdG9yeSA9IHRoaXMuY29uZmlndXJhdGlvbi5nZXREaXJlY3RvcnkoKVxuICAgIGNvbnN0IGpvYnNEaXIgPSBwYXRoLmpvaW4oZGlyZWN0b3J5LCBcInNyY1wiLCBcImpvYnNcIilcbiAgICBhd2FpdCB0aGlzLl9sb2FkSm9ic0Zyb21EaXJlY3Rvcnkoam9ic0Rpciwge3NraXBEdXBsaWNhdGVzOiBmYWxzZX0pXG5cbiAgICBjb25zdCB2ZWxvY2lvdXNQYXRoID0gYXdhaXQgdGhpcy5jb25maWd1cmF0aW9uLmdldEVudmlyb25tZW50SGFuZGxlcigpLmdldFZlbG9jaW91c1BhdGgoKVxuICAgIGNvbnN0IHZlbG9jaW91c0pvYnNEaXIgPSBwYXRoLmpvaW4odmVsb2Npb3VzUGF0aCwgXCJzcmNcIiwgXCJqb2JzXCIpXG4gICAgY29uc3Qgbm9ybWFsaXplZEpvYnNEaXIgPSBwYXRoLnJlc29sdmUoam9ic0RpcilcbiAgICBjb25zdCBub3JtYWxpemVkVmVsb2Npb3VzSm9ic0RpciA9IHBhdGgucmVzb2x2ZSh2ZWxvY2lvdXNKb2JzRGlyKVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRKb2JzRGlyICE9PSBub3JtYWxpemVkVmVsb2Npb3VzSm9ic0Rpcikge1xuICAgICAgYXdhaXQgdGhpcy5fbG9hZEpvYnNGcm9tRGlyZWN0b3J5KHZlbG9jaW91c0pvYnNEaXIsIHtza2lwRHVwbGljYXRlczogdHJ1ZX0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgZ2V0IGpvYiBieSBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9iTmFtZSAtIEpvYiBuYW1lLlxuICAgKiBAcmV0dXJucyB7dHlwZW9mIFZlbG9jaW91c0pvYn0gLSBKb2IgY2xhc3MuXG4gICAqL1xuICBnZXRKb2JCeU5hbWUoam9iTmFtZSkge1xuICAgIGNvbnN0IGpvYkNsYXNzID0gdGhpcy5qb2JzQnlOYW1lLmdldChqb2JOYW1lKVxuXG4gICAgaWYgKCFqb2JDbGFzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGpvYiBcIiR7am9iTmFtZX1cIi4gQ2hlY2sgc3JjL2pvYnNgKVxuICAgIH1cblxuICAgIHJldHVybiBqb2JDbGFzc1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1bnMgbG9hZCBqb2JzIGZyb20gZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9ic0RpciAtIERpcmVjdG9yeSB3aXRoIGpvYiBmaWxlcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFyZ3Muc2tpcER1cGxpY2F0ZXMgLSBXaGV0aGVyIHRvIHNraXAgZHVwbGljYXRlIGpvYiBuYW1lcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9sb2FkSm9ic0Zyb21EaXJlY3Rvcnkoam9ic0Rpciwge3NraXBEdXBsaWNhdGVzfSkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5hY2Nlc3Moam9ic0RpcilcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGpvYkZpbGVzID0gZnMuZ2xvYihgJHtqb2JzRGlyfS8qKi8qLmpzYClcblxuICAgIGZvciBhd2FpdCAoY29uc3Qgam9iRmlsZSBvZiBqb2JGaWxlcykge1xuICAgICAgY29uc3Qgam9iSW1wb3J0ID0gYXdhaXQgaW1wb3J0KHRvSW1wb3J0U3BlY2lmaWVyKGpvYkZpbGUpKVxuICAgICAgY29uc3QgSm9iQ2xhc3MgPSBqb2JJbXBvcnQuZGVmYXVsdFxuXG4gICAgICBpZiAoIUpvYkNsYXNzKSB0aHJvdyBuZXcgRXJyb3IoYEpvYiBmaWxlIG11c3QgZXhwb3J0IGEgZGVmYXVsdCBjbGFzczogJHtqb2JGaWxlfWApXG4gICAgICBpZiAoIShKb2JDbGFzcy5wcm90b3R5cGUgaW5zdGFuY2VvZiBWZWxvY2lvdXNKb2IpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSm9iIGNsYXNzIG11c3QgZXh0ZW5kIFZlbG9jaW91c0pvYjogJHtqb2JGaWxlfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGpvYk5hbWUgPSBKb2JDbGFzcy5qb2JOYW1lKClcblxuICAgICAgaWYgKHRoaXMuam9ic0J5TmFtZS5oYXMoam9iTmFtZSkpIHtcbiAgICAgICAgaWYgKHNraXBEdXBsaWNhdGVzKSBjb250aW51ZVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIGpvYiBuYW1lIFwiJHtqb2JOYW1lfVwiIGZyb20gJHtqb2JGaWxlfWApXG4gICAgICB9XG5cbiAgICAgIHRoaXMuam9ic0J5TmFtZS5zZXQoam9iTmFtZSwgSm9iQ2xhc3MpXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -57,7 +57,7 @@ export default async function runJobPayload(payload) {
|
|
|
57
57
|
const jobInstance = new JobClass();
|
|
58
58
|
/**
|
|
59
59
|
* Perform.
|
|
60
|
-
|
|
60
|
+
* @type {(...args: Array<?>) => Promise<void>} */
|
|
61
61
|
const perform = jobInstance.perform;
|
|
62
62
|
try {
|
|
63
63
|
try {
|
|
@@ -97,4 +97,4 @@ export default async function runJobPayload(payload) {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iYWNrZ3JvdW5kLWpvYnMvam9iLXJ1bm5lci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxxQkFBcUIsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLHFCQUFxQixNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sNEJBQTRCLE1BQU0sc0JBQXNCLENBQUE7QUFFL0QsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUE7QUFFcEM7Ozs7O0dBS0c7QUFDSCxTQUFTLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxLQUFLO0lBQ2xELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUNsRCxNQUFNLGVBQWUsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ2pGLE1BQU0sT0FBTyxHQUFHO1FBQ2QsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUM7UUFDcEUsS0FBSyxFQUFFLGVBQWU7S0FDdkIsQ0FBQTtJQUNELE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDO1dBQy9ELFdBQVcsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRS9DLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDNUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxHQUFHLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsQ0FBQyxDQUFBO0lBRXpFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQixP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QUFDLGdCQUFnQixFQUFFLENBQUE7UUFDeEMsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsTUFBTSxhQUFhLENBQUMsd0JBQXdCLEVBQUUsQ0FBQTtRQUNoRCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGNvbmZpZ3VyYXRpb25SZXNvbHZlciBmcm9tIFwiLi4vY29uZmlndXJhdGlvbi1yZXNvbHZlci5qc1wiXG5pbXBvcnQgQmFja2dyb3VuZEpvYlJlZ2lzdHJ5IGZyb20gXCIuL2pvYi1yZWdpc3RyeS5qc1wiXG5pbXBvcnQgQmFja2dyb3VuZEpvYnNTdGF0dXNSZXBvcnRlciBmcm9tIFwiLi9zdGF0dXMtcmVwb3J0ZXIuanNcIlxuXG5jb25zdCBCRUFDT05fUkVBRFlfVElNRU9VVF9NUyA9IDUwMDBcblxuLyoqXG4gKiBSdW5zIHJlcG9ydCBiZWFjb24gcmVhZHkgZXJyb3IuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0gez99IGVycm9yIC0gQmVhY29uIHJlYWRpbmVzcyBlcnJvci5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiByZXBvcnRCZWFjb25SZWFkeUVycm9yKGNvbmZpZ3VyYXRpb24sIGVycm9yKSB7XG4gIGNvbnN0IGVycm9yRXZlbnRzID0gY29uZmlndXJhdGlvbi5nZXRFcnJvckV2ZW50cygpXG4gIGNvbnN0IG5vcm1hbGl6ZWRFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKVxuICBjb25zdCBwYXlsb2FkID0ge1xuICAgIGNvbnRleHQ6IHtwZWVyVHlwZTogXCJiYWNrZ3JvdW5kLWpvYnMtcnVubmVyXCIsIHN0YWdlOiBcImJlYWNvbi1yZWFkeVwifSxcbiAgICBlcnJvcjogbm9ybWFsaXplZEVycm9yXG4gIH1cbiAgY29uc3QgaGFzTGlzdGVuZXIgPSBlcnJvckV2ZW50cy5saXN0ZW5lckNvdW50KFwiZnJhbWV3b3JrLWVycm9yXCIpID4gMFxuICAgIHx8IGVycm9yRXZlbnRzLmxpc3RlbmVyQ291bnQoXCJhbGwtZXJyb3JcIikgPiAwXG5cbiAgZXJyb3JFdmVudHMuZW1pdChcImZyYW1ld29yay1lcnJvclwiLCBwYXlsb2FkKVxuICBlcnJvckV2ZW50cy5lbWl0KFwiYWxsLWVycm9yXCIsIHsuLi5wYXlsb2FkLCBlcnJvclR5cGU6IFwiZnJhbWV3b3JrLWVycm9yXCJ9KVxuXG4gIGlmICghaGFzTGlzdGVuZXIpIHtcbiAgICBjb25zb2xlLmVycm9yKGBbdmVsb2Npb3VzIGZyYW1ld29yay1lcnJvciBzdGFnZT1iZWFjb24tcmVhZHldICR7bm9ybWFsaXplZEVycm9yLm1lc3NhZ2V9YClcbiAgfVxufVxuXG4vKipcbiAqIFJ1bnMgY29ubmVjdCBiZWFjb24uXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2NvbmZpZ3VyYXRpb24uanNcIikuZGVmYXVsdH0gY29uZmlndXJhdGlvbiAtIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29ubmVjdEJlYWNvbihjb25maWd1cmF0aW9uKSB7XG4gIGNvbnN0IGJlYWNvbkNsaWVudCA9IGF3YWl0IGNvbmZpZ3VyYXRpb24uY29ubmVjdEJlYWNvbih7cGVlclR5cGU6IFwiYmFja2dyb3VuZC1qb2JzLXJ1bm5lclwifSlcblxuICBpZiAoIWJlYWNvbkNsaWVudCkgcmV0dXJuXG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBiZWFjb25DbGllbnQud2FpdEZvclJlYWR5KHt0aW1lb3V0TXM6IEJFQUNPTl9SRUFEWV9USU1FT1VUX01TfSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXBvcnRCZWFjb25SZWFkeUVycm9yKGNvbmZpZ3VyYXRpb24sIGVycm9yKVxuICB9XG59XG5cbi8qKlxuICogUnVucyBydW4gam9iIHBheWxvYWQuXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYlBheWxvYWR9IHBheWxvYWQgLSBQYXlsb2FkLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcnVuSm9iUGF5bG9hZChwYXlsb2FkKSB7XG4gIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBjb25maWd1cmF0aW9uUmVzb2x2ZXIoKVxuICBjb25maWd1cmF0aW9uLnNldEN1cnJlbnQoKVxuICBhd2FpdCBjb25maWd1cmF0aW9uLmluaXRpYWxpemUoe3R5cGU6IFwiYmFja2dyb3VuZC1qb2JzLXJ1bm5lclwifSlcbiAgYXdhaXQgY29ubmVjdEJlYWNvbihjb25maWd1cmF0aW9uKVxuICBjb25zdCByZXBvcnRlciA9IG5ldyBCYWNrZ3JvdW5kSm9ic1N0YXR1c1JlcG9ydGVyKHtjb25maWd1cmF0aW9ufSlcblxuICBjb25zdCByZWdpc3RyeSA9IG5ldyBCYWNrZ3JvdW5kSm9iUmVnaXN0cnkoe2NvbmZpZ3VyYXRpb259KVxuICBhd2FpdCByZWdpc3RyeS5sb2FkKClcbiAgY29uc3QgSm9iQ2xhc3MgPSByZWdpc3RyeS5nZXRKb2JCeU5hbWUocGF5bG9hZC5qb2JOYW1lKVxuICBjb25zdCBqb2JJbnN0YW5jZSA9IG5ldyBKb2JDbGFzcygpXG4gIC8qKlxuICAgKiBQZXJmb3JtLlxuICAgKiBAdHlwZSB7KC4uLmFyZ3M6IEFycmF5PD8+KSA9PiBQcm9taXNlPHZvaWQ+fSAqL1xuICBjb25zdCBwZXJmb3JtID0gam9iSW5zdGFuY2UucGVyZm9ybVxuXG4gIHRyeSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvbmZpZ3VyYXRpb24ud2l0aENvbm5lY3Rpb25zKHtuYW1lOiBgQmFja2dyb3VuZCBqb2IgcnVubmVyOiAke3BheWxvYWQuam9iTmFtZX1gfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtLmFwcGx5KGpvYkluc3RhbmNlLCBwYXlsb2FkLmFyZ3MgfHwgW10pXG4gICAgICB9KVxuXG4gICAgICBpZiAocGF5bG9hZC5pZCkge1xuICAgICAgICBhd2FpdCByZXBvcnRlci5yZXBvcnRXaXRoUmV0cnkoe1xuICAgICAgICAgIGpvYklkOiBwYXlsb2FkLmlkLFxuICAgICAgICAgIHN0YXR1czogXCJjb21wbGV0ZWRcIixcbiAgICAgICAgICB3b3JrZXJJZDogcGF5bG9hZC53b3JrZXJJZCxcbiAgICAgICAgICBoYW5kZWRPZmZBdE1zOiBwYXlsb2FkLmhhbmRlZE9mZkF0TXMsXG4gICAgICAgICAgbWF4RHVyYXRpb25NczogMzAwMDBcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKHBheWxvYWQuaWQpIHtcbiAgICAgICAgYXdhaXQgcmVwb3J0ZXIucmVwb3J0V2l0aFJldHJ5KHtcbiAgICAgICAgICBqb2JJZDogcGF5bG9hZC5pZCxcbiAgICAgICAgICBzdGF0dXM6IFwiZmFpbGVkXCIsXG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgd29ya2VySWQ6IHBheWxvYWQud29ya2VySWQsXG4gICAgICAgICAgaGFuZGVkT2ZmQXRNczogcGF5bG9hZC5oYW5kZWRPZmZBdE1zLFxuICAgICAgICAgIG1heER1cmF0aW9uTXM6IDMwMDAwXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb25maWd1cmF0aW9uLmRpc2Nvbm5lY3RCZWFjb24oKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBjb25maWd1cmF0aW9uLmNsb3NlRGF0YWJhc2VDb25uZWN0aW9ucygpXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -51,7 +51,7 @@ export default class VelociousJob {
|
|
|
51
51
|
if (isOptionsArg) {
|
|
52
52
|
const { jobOptions } = /**
|
|
53
53
|
* Narrows the runtime value to the documented type.
|
|
54
|
-
|
|
54
|
+
* @type {{jobOptions: import("./types.js").BackgroundJobOptions}} */ (lastArg);
|
|
55
55
|
return { jobArgs: args.slice(0, -1), jobOptions: jobOptions || {} };
|
|
56
56
|
}
|
|
57
57
|
return { jobArgs: args, jobOptions: {} };
|
|
@@ -64,4 +64,4 @@ export default class VelociousJob {
|
|
|
64
64
|
throw new Error("perform not implemented");
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tncm91bmQtam9icy9qb2IuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sb0JBQW9CLE1BQU0sYUFBYSxDQUFBO0FBRTlDLE1BQU0sQ0FBQyxPQUFPLE9BQU8sWUFBWTtJQUMvQjs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSTtRQUMvQixNQUFNLEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLG9CQUFvQixFQUFFLENBQUE7UUFFekMsT0FBTyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDMUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDdkIsSUFBSSxFQUFFLE9BQU87WUFDYixPQUFPLEVBQUUsVUFBVTtTQUNwQixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFBO1FBRXpDLE9BQU8sTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLElBQUk7WUFDSixPQUFPO1NBQ1IsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSTtRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsT0FBTyxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBQyxDQUFBO1FBQ3RDLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNyQyxNQUFNLFlBQVksR0FBRyxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxZQUFZLElBQUksT0FBTyxDQUFBO1FBRWpILElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsTUFBTSxFQUFDLFVBQVUsRUFBQyxHQUFHOztzR0FFcUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3BHLE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxJQUFJLEVBQUUsRUFBQyxDQUFBO1FBQ25FLENBQUM7UUFFRCxPQUFPLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBQzVDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFja2dyb3VuZEpvYnNDbGllbnQgZnJvbSBcIi4vY2xpZW50LmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzSm9iIHtcbiAgLyoqXG4gICAqIFJ1bnMgam9iIG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gSm9iIG5hbWUuXG4gICAqL1xuICBzdGF0aWMgam9iTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lXG4gIH1cblxuICAvKipcbiAgICogUnVucyBwZXJmb3JtIGxhdGVyLlxuICAgKiBAcGFyYW0gey4uLj99IGFyZ3MgLSBKb2IgYXJncy5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn0gLSBKb2IgaWQuXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgcGVyZm9ybUxhdGVyKC4uLmFyZ3MpIHtcbiAgICBjb25zdCB7am9iQXJncywgam9iT3B0aW9uc30gPSB0aGlzLl9zcGxpdEFyZ3NBbmRPcHRpb25zKGFyZ3MpXG4gICAgY29uc3QgY2xpZW50ID0gbmV3IEJhY2tncm91bmRKb2JzQ2xpZW50KClcblxuICAgIHJldHVybiBhd2FpdCBjbGllbnQuZW5xdWV1ZSh7XG4gICAgICBqb2JOYW1lOiB0aGlzLmpvYk5hbWUoKSxcbiAgICAgIGFyZ3M6IGpvYkFyZ3MsXG4gICAgICBvcHRpb25zOiBqb2JPcHRpb25zXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIHBlcmZvcm0gbGF0ZXIgd2l0aCBvcHRpb25zLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMuXG4gICAqIEBwYXJhbSB7QXJyYXk8Pz59IGFyZ3MuYXJncyAtIEpvYiBhcmdzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9IFthcmdzLm9wdGlvbnNdIC0gSm9iIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IC0gSm9iIGlkLlxuICAgKi9cbiAgc3RhdGljIGFzeW5jIHBlcmZvcm1MYXRlcldpdGhPcHRpb25zKHthcmdzLCBvcHRpb25zfSkge1xuICAgIGNvbnN0IGNsaWVudCA9IG5ldyBCYWNrZ3JvdW5kSm9ic0NsaWVudCgpXG5cbiAgICByZXR1cm4gYXdhaXQgY2xpZW50LmVucXVldWUoe1xuICAgICAgam9iTmFtZTogdGhpcy5qb2JOYW1lKCksXG4gICAgICBhcmdzLFxuICAgICAgb3B0aW9uc1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzcGxpdCBhcmdzIGFuZCBvcHRpb25zLlxuICAgKiBAcGFyYW0ge0FycmF5PD8+fSBhcmdzIC0gSm9iIGFyZ3MuXG4gICAqIEByZXR1cm5zIHt7am9iQXJnczogQXJyYXk8Pz4sIGpvYk9wdGlvbnM6IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9fSAtIFNwbGl0IGFyZ3MgYW5kIG9wdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgX3NwbGl0QXJnc0FuZE9wdGlvbnMoYXJncykge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtqb2JBcmdzOiBbXSwgam9iT3B0aW9uczoge319XG4gICAgfVxuXG4gICAgY29uc3QgbGFzdEFyZyA9IGFyZ3NbYXJncy5sZW5ndGggLSAxXVxuICAgIGNvbnN0IGlzT3B0aW9uc0FyZyA9IGxhc3RBcmcgJiYgdHlwZW9mIGxhc3RBcmcgPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkobGFzdEFyZykgJiYgXCJqb2JPcHRpb25zXCIgaW4gbGFzdEFyZ1xuXG4gICAgaWYgKGlzT3B0aW9uc0FyZykge1xuICAgICAgY29uc3Qge2pvYk9wdGlvbnN9ID0gLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOYXJyb3dzIHRoZSBydW50aW1lIHZhbHVlIHRvIHRoZSBkb2N1bWVudGVkIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7e2pvYk9wdGlvbnM6IGltcG9ydChcIi4vdHlwZXMuanNcIikuQmFja2dyb3VuZEpvYk9wdGlvbnN9fSAqLyAobGFzdEFyZylcbiAgICAgIHJldHVybiB7am9iQXJnczogYXJncy5zbGljZSgwLCAtMSksIGpvYk9wdGlvbnM6IGpvYk9wdGlvbnMgfHwge319XG4gICAgfVxuXG4gICAgcmV0dXJuIHtqb2JBcmdzOiBhcmdzLCBqb2JPcHRpb25zOiB7fX1cbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBpbiBzdWJjbGFzc2VzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgcGVyZm9ybSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJwZXJmb3JtIG5vdCBpbXBsZW1lbnRlZFwiKVxuICB9XG59XG4iXX0=
|