velocious 1.0.146 → 1.0.148
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 +15 -0
- package/build/src/application.d.ts +25 -16
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +17 -17
- package/build/src/cli/base-command.d.ts +26 -14
- package/build/src/cli/base-command.d.ts.map +1 -1
- package/build/src/cli/base-command.js +13 -13
- package/build/src/cli/browser-cli.d.ts +5 -5
- package/build/src/cli/browser-cli.js +6 -6
- package/build/src/cli/commands/db/create.d.ts +4 -4
- package/build/src/cli/commands/db/create.js +5 -5
- package/build/src/cli/commands/destroy/migration.d.ts +0 -1
- package/build/src/cli/commands/destroy/migration.d.ts.map +1 -1
- package/build/src/cli/commands/generate/base-models.d.ts +0 -1
- package/build/src/cli/commands/generate/base-models.d.ts.map +1 -1
- package/build/src/cli/commands/generate/migration.d.ts +0 -1
- package/build/src/cli/commands/generate/migration.d.ts.map +1 -1
- package/build/src/cli/commands/generate/model.d.ts +0 -1
- package/build/src/cli/commands/generate/model.d.ts.map +1 -1
- package/build/src/cli/commands/init.d.ts +0 -1
- package/build/src/cli/commands/init.d.ts.map +1 -1
- package/build/src/cli/commands/routes.d.ts +0 -1
- package/build/src/cli/commands/routes.d.ts.map +1 -1
- package/build/src/cli/commands/server.d.ts +0 -1
- package/build/src/cli/commands/server.d.ts.map +1 -1
- package/build/src/cli/commands/test.d.ts +0 -1
- package/build/src/cli/commands/test.d.ts.map +1 -1
- package/build/src/cli/index.d.ts +11 -11
- package/build/src/cli/index.d.ts.map +1 -1
- package/build/src/cli/index.js +9 -9
- package/build/src/cli/use-browser-cli.d.ts +2 -2
- package/build/src/cli/use-browser-cli.js +3 -3
- package/build/src/configuration-resolver.d.ts +2 -2
- package/build/src/configuration-resolver.js +3 -3
- package/build/src/configuration-types.d.ts +149 -44
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +43 -43
- package/build/src/configuration.d.ts +75 -59
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +68 -56
- package/build/src/controller.d.ts +29 -29
- package/build/src/controller.d.ts.map +1 -1
- package/build/src/controller.js +28 -28
- package/build/src/database/drivers/base-column.d.ts +15 -15
- package/build/src/database/drivers/base-column.d.ts.map +1 -1
- package/build/src/database/drivers/base-column.js +15 -15
- package/build/src/database/drivers/base-columns-index.d.ts +10 -10
- package/build/src/database/drivers/base-columns-index.js +11 -11
- package/build/src/database/drivers/base-foreign-key.d.ts +12 -12
- package/build/src/database/drivers/base-foreign-key.d.ts.map +1 -1
- package/build/src/database/drivers/base-foreign-key.js +11 -11
- package/build/src/database/drivers/base-table.d.ts +15 -15
- package/build/src/database/drivers/base-table.d.ts.map +1 -1
- package/build/src/database/drivers/base-table.js +16 -15
- package/build/src/database/drivers/base.d.ts +189 -131
- package/build/src/database/drivers/base.d.ts.map +1 -1
- package/build/src/database/drivers/base.js +159 -142
- package/build/src/database/drivers/mssql/column.d.ts +5 -4
- package/build/src/database/drivers/mssql/column.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/column.js +3 -3
- package/build/src/database/drivers/mssql/connect-connection.d.ts +6 -1
- package/build/src/database/drivers/mssql/connect-connection.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/connect-connection.js +6 -2
- package/build/src/database/drivers/mssql/index.d.ts +5 -15
- package/build/src/database/drivers/mssql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/index.js +57 -56
- package/build/src/database/drivers/mssql/options.d.ts +2 -2
- package/build/src/database/drivers/mssql/options.js +13 -13
- package/build/src/database/drivers/mssql/sql/create-database.js +5 -5
- package/build/src/database/drivers/mssql/structure-sql.d.ts +6 -6
- package/build/src/database/drivers/mssql/structure-sql.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/structure-sql.js +23 -15
- package/build/src/database/drivers/mssql/table.d.ts +4 -5
- package/build/src/database/drivers/mssql/table.d.ts.map +1 -1
- package/build/src/database/drivers/mssql/table.js +8 -6
- package/build/src/database/drivers/mysql/column.d.ts +5 -4
- package/build/src/database/drivers/mysql/column.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/column.js +3 -3
- package/build/src/database/drivers/mysql/index.d.ts +8 -8
- package/build/src/database/drivers/mysql/index.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/index.js +45 -45
- package/build/src/database/drivers/mysql/options.d.ts +2 -2
- package/build/src/database/drivers/mysql/options.js +5 -5
- package/build/src/database/drivers/mysql/query.d.ts +4 -3
- package/build/src/database/drivers/mysql/query.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/query.js +5 -4
- package/build/src/database/drivers/mysql/structure-sql.d.ts +7 -7
- package/build/src/database/drivers/mysql/structure-sql.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/structure-sql.js +12 -10
- package/build/src/database/drivers/mysql/table.d.ts +4 -5
- package/build/src/database/drivers/mysql/table.d.ts.map +1 -1
- package/build/src/database/drivers/mysql/table.js +5 -4
- package/build/src/database/drivers/pgsql/column.d.ts +5 -4
- package/build/src/database/drivers/pgsql/column.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/column.js +3 -3
- package/build/src/database/drivers/pgsql/index.d.ts +1 -6
- package/build/src/database/drivers/pgsql/index.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/index.js +31 -31
- package/build/src/database/drivers/pgsql/options.d.ts +3 -3
- package/build/src/database/drivers/pgsql/options.js +4 -4
- package/build/src/database/drivers/pgsql/structure-sql.d.ts +6 -6
- package/build/src/database/drivers/pgsql/structure-sql.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/structure-sql.js +21 -14
- package/build/src/database/drivers/pgsql/table.d.ts +4 -5
- package/build/src/database/drivers/pgsql/table.d.ts.map +1 -1
- package/build/src/database/drivers/pgsql/table.js +4 -3
- package/build/src/database/drivers/sqlite/base.d.ts +22 -20
- package/build/src/database/drivers/sqlite/base.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/base.js +58 -55
- package/build/src/database/drivers/sqlite/column.d.ts +7 -6
- package/build/src/database/drivers/sqlite/column.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/column.js +5 -5
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts +5 -5
- package/build/src/database/drivers/sqlite/connection-sql-js.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/connection-sql-js.js +5 -5
- package/build/src/database/drivers/sqlite/foreign-key.d.ts +4 -4
- package/build/src/database/drivers/sqlite/foreign-key.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/foreign-key.js +4 -4
- package/build/src/database/drivers/sqlite/index.js +3 -3
- package/build/src/database/drivers/sqlite/index.web.d.ts +9 -2
- package/build/src/database/drivers/sqlite/index.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/index.web.js +8 -5
- package/build/src/database/drivers/sqlite/options.d.ts +3 -3
- package/build/src/database/drivers/sqlite/options.js +4 -4
- package/build/src/database/drivers/sqlite/query.d.ts +4 -4
- package/build/src/database/drivers/sqlite/query.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/query.js +5 -5
- package/build/src/database/drivers/sqlite/query.native.d.ts +9 -1
- package/build/src/database/drivers/sqlite/query.native.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/query.native.js +7 -1
- package/build/src/database/drivers/sqlite/query.web.d.ts +4 -4
- package/build/src/database/drivers/sqlite/query.web.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/query.web.js +5 -5
- package/build/src/database/drivers/sqlite/sql/alter-table.js +5 -5
- package/build/src/database/drivers/sqlite/structure-sql.d.ts +3 -3
- package/build/src/database/drivers/sqlite/structure-sql.js +5 -5
- package/build/src/database/drivers/sqlite/table.d.ts +9 -7
- package/build/src/database/drivers/sqlite/table.d.ts.map +1 -1
- package/build/src/database/drivers/sqlite/table.js +12 -8
- package/build/src/database/drivers/structure-sql/utils.d.ts +8 -8
- package/build/src/database/drivers/structure-sql/utils.js +9 -9
- package/build/src/database/handler.d.ts +1 -1
- package/build/src/database/handler.js +2 -2
- package/build/src/database/initializer-from-require-context.d.ts +5 -5
- package/build/src/database/initializer-from-require-context.js +6 -6
- package/build/src/database/migration/index.d.ts +98 -62
- package/build/src/database/migration/index.d.ts.map +1 -1
- package/build/src/database/migration/index.js +74 -74
- package/build/src/database/migrator/files-finder.d.ts +3 -3
- package/build/src/database/migrator/files-finder.js +4 -4
- package/build/src/database/migrator/types.d.ts +12 -0
- package/build/src/database/migrator/types.d.ts.map +1 -1
- package/build/src/database/migrator/types.js +1 -1
- package/build/src/database/migrator.d.ts +24 -24
- package/build/src/database/migrator.d.ts.map +1 -1
- package/build/src/database/migrator.js +25 -25
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +8 -8
- package/build/src/database/pool/async-tracked-multi-connection.js +18 -18
- package/build/src/database/pool/base-methods-forward.d.ts +2 -2
- package/build/src/database/pool/base-methods-forward.js +3 -3
- package/build/src/database/pool/base.d.ts +19 -19
- package/build/src/database/pool/base.js +20 -20
- package/build/src/database/pool/single-multi-use.js +6 -6
- package/build/src/database/query/alter-table-base.d.ts +3 -3
- package/build/src/database/query/alter-table-base.js +5 -5
- package/build/src/database/query/base.d.ts +5 -5
- package/build/src/database/query/base.d.ts.map +1 -1
- package/build/src/database/query/base.js +6 -6
- package/build/src/database/query/create-database-base.d.ts +11 -2
- package/build/src/database/query/create-database-base.d.ts.map +1 -1
- package/build/src/database/query/create-database-base.js +6 -6
- package/build/src/database/query/create-index-base.d.ts +25 -7
- package/build/src/database/query/create-index-base.d.ts.map +1 -1
- package/build/src/database/query/create-index-base.js +9 -9
- package/build/src/database/query/create-table-base.d.ts +6 -6
- package/build/src/database/query/create-table-base.js +7 -7
- package/build/src/database/query/delete-base.d.ts +6 -6
- package/build/src/database/query/delete-base.d.ts.map +1 -1
- package/build/src/database/query/delete-base.js +5 -5
- package/build/src/database/query/drop-table-base.d.ts +5 -5
- package/build/src/database/query/drop-table-base.js +7 -7
- package/build/src/database/query/from-base.d.ts +4 -4
- package/build/src/database/query/from-base.js +5 -5
- package/build/src/database/query/from-plain.d.ts +1 -1
- package/build/src/database/query/from-plain.js +2 -2
- package/build/src/database/query/from-table.d.ts +1 -1
- package/build/src/database/query/from-table.js +2 -2
- package/build/src/database/query/index.d.ts +88 -48
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +46 -46
- package/build/src/database/query/insert-base.d.ts +16 -15
- package/build/src/database/query/insert-base.d.ts.map +1 -1
- package/build/src/database/query/insert-base.js +12 -11
- package/build/src/database/query/join-base.d.ts +4 -4
- package/build/src/database/query/join-base.js +5 -5
- package/build/src/database/query/join-object.d.ts +6 -6
- package/build/src/database/query/join-object.js +7 -7
- package/build/src/database/query/join-plain.d.ts +1 -1
- package/build/src/database/query/join-plain.js +2 -2
- package/build/src/database/query/model-class-query.d.ts +28 -28
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +25 -25
- package/build/src/database/query/order-base.d.ts +4 -4
- package/build/src/database/query/order-base.js +5 -5
- package/build/src/database/query/order-plain.d.ts +2 -2
- package/build/src/database/query/order-plain.js +3 -3
- package/build/src/database/query/preloader/belongs-to.d.ts +3 -3
- package/build/src/database/query/preloader/belongs-to.d.ts.map +1 -1
- package/build/src/database/query/preloader/belongs-to.js +15 -13
- package/build/src/database/query/preloader/has-many.d.ts +3 -3
- package/build/src/database/query/preloader/has-many.js +7 -7
- package/build/src/database/query/preloader/has-one.d.ts +3 -3
- package/build/src/database/query/preloader/has-one.js +7 -7
- package/build/src/database/query/preloader.d.ts +6 -6
- package/build/src/database/query/preloader.d.ts.map +1 -1
- package/build/src/database/query/preloader.js +5 -5
- package/build/src/database/query/select-base.d.ts +3 -3
- package/build/src/database/query/select-base.js +4 -4
- package/build/src/database/query/select-plain.d.ts +1 -1
- package/build/src/database/query/select-plain.js +2 -2
- package/build/src/database/query/select-table-and-column.d.ts +2 -2
- package/build/src/database/query/select-table-and-column.js +3 -3
- package/build/src/database/query/update-base.d.ts +10 -10
- package/build/src/database/query/update-base.d.ts.map +1 -1
- package/build/src/database/query/update-base.js +7 -7
- package/build/src/database/query/where-base.d.ts +4 -4
- package/build/src/database/query/where-base.js +5 -5
- package/build/src/database/query/where-hash.d.ts +8 -7
- package/build/src/database/query/where-hash.d.ts.map +1 -1
- package/build/src/database/query/where-hash.js +11 -7
- package/build/src/database/query/where-plain.d.ts +2 -2
- package/build/src/database/query/where-plain.js +3 -3
- package/build/src/database/query-parser/base-query-parser.d.ts +3 -3
- package/build/src/database/query-parser/base-query-parser.js +4 -4
- package/build/src/database/query-parser/from-parser.d.ts +4 -4
- package/build/src/database/query-parser/from-parser.d.ts.map +1 -1
- package/build/src/database/query-parser/from-parser.js +5 -5
- package/build/src/database/query-parser/group-parser.d.ts +4 -4
- package/build/src/database/query-parser/group-parser.js +5 -5
- package/build/src/database/query-parser/joins-parser.d.ts +3 -3
- package/build/src/database/query-parser/joins-parser.js +4 -4
- package/build/src/database/query-parser/limit-parser.d.ts +3 -3
- package/build/src/database/query-parser/limit-parser.js +4 -4
- package/build/src/database/query-parser/options.d.ts +35 -20
- package/build/src/database/query-parser/options.d.ts.map +1 -1
- package/build/src/database/query-parser/options.js +19 -19
- package/build/src/database/query-parser/order-parser.d.ts +3 -3
- package/build/src/database/query-parser/order-parser.js +4 -4
- package/build/src/database/query-parser/select-parser.d.ts +3 -3
- package/build/src/database/query-parser/select-parser.js +4 -4
- package/build/src/database/query-parser/where-parser.d.ts +3 -3
- package/build/src/database/query-parser/where-parser.js +4 -4
- package/build/src/database/record/index.d.ts +200 -184
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +193 -167
- package/build/src/database/record/instance-relationships/base.d.ts +21 -15
- package/build/src/database/record/instance-relationships/base.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/base.js +15 -15
- package/build/src/database/record/instance-relationships/belongs-to.d.ts +3 -3
- package/build/src/database/record/instance-relationships/belongs-to.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/belongs-to.js +4 -4
- package/build/src/database/record/instance-relationships/has-many.d.ts +21 -15
- package/build/src/database/record/instance-relationships/has-many.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-many.js +23 -17
- package/build/src/database/record/instance-relationships/has-one.d.ts +4 -4
- package/build/src/database/record/instance-relationships/has-one.d.ts.map +1 -1
- package/build/src/database/record/instance-relationships/has-one.js +7 -7
- package/build/src/database/record/relationships/base.d.ts +48 -15
- package/build/src/database/record/relationships/base.d.ts.map +1 -1
- package/build/src/database/record/relationships/base.js +16 -16
- package/build/src/database/record/relationships/belongs-to.js +3 -3
- package/build/src/database/record/relationships/has-many.js +3 -3
- package/build/src/database/record/relationships/has-one.js +3 -3
- package/build/src/database/record/user-module.d.ts +3 -3
- package/build/src/database/record/user-module.js +4 -4
- package/build/src/database/record/validators/base.d.ts +9 -9
- package/build/src/database/record/validators/base.d.ts.map +1 -1
- package/build/src/database/record/validators/base.js +8 -8
- package/build/src/database/record/validators/presence.d.ts.map +1 -1
- package/build/src/database/record/validators/presence.js +6 -5
- package/build/src/database/record/validators/uniqueness.js +7 -7
- package/build/src/database/table-data/index.d.ts +53 -50
- package/build/src/database/table-data/index.d.ts.map +1 -1
- package/build/src/database/table-data/index.js +51 -51
- package/build/src/database/table-data/table-column.d.ts +84 -51
- package/build/src/database/table-data/table-column.d.ts.map +1 -1
- package/build/src/database/table-data/table-column.js +57 -56
- package/build/src/database/table-data/table-foreign-key.d.ts +15 -15
- package/build/src/database/table-data/table-foreign-key.js +16 -16
- package/build/src/database/table-data/table-index.d.ts +13 -7
- package/build/src/database/table-data/table-index.d.ts.map +1 -1
- package/build/src/database/table-data/table-index.js +8 -8
- package/build/src/database/table-data/table-reference.d.ts +2 -2
- package/build/src/database/table-data/table-reference.js +3 -3
- package/build/src/database/use-database.d.ts +3 -3
- package/build/src/database/use-database.js +4 -4
- package/build/src/environment-handlers/base.d.ts +84 -66
- package/build/src/environment-handlers/base.d.ts.map +1 -1
- package/build/src/environment-handlers/base.js +58 -58
- package/build/src/environment-handlers/browser.d.ts +9 -9
- package/build/src/environment-handlers/browser.d.ts.map +1 -1
- package/build/src/environment-handlers/browser.js +18 -18
- package/build/src/environment-handlers/node/cli/commands/destroy/migration.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +4 -4
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +11 -11
- package/build/src/environment-handlers/node/cli/commands/generate/migration.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/migration.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/generate/model.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/model.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/init.d.ts +1 -1
- package/build/src/environment-handlers/node/cli/commands/init.js +2 -2
- package/build/src/environment-handlers/node/cli/commands/routes.d.ts +5 -5
- package/build/src/environment-handlers/node/cli/commands/routes.js +6 -6
- package/build/src/environment-handlers/node/cli/commands/server.js +3 -3
- package/build/src/environment-handlers/node.d.ts +5 -40
- package/build/src/environment-handlers/node.d.ts.map +1 -1
- package/build/src/environment-handlers/node.js +46 -46
- package/build/src/error-logger.d.ts +3 -2
- package/build/src/error-logger.d.ts.map +1 -1
- package/build/src/error-logger.js +5 -4
- package/build/src/http-client/header.d.ts +2 -2
- package/build/src/http-client/header.js +3 -3
- package/build/src/http-client/index.d.ts +10 -10
- package/build/src/http-client/index.d.ts.map +1 -1
- package/build/src/http-client/index.js +11 -11
- package/build/src/http-client/request.d.ts +16 -10
- package/build/src/http-client/request.d.ts.map +1 -1
- package/build/src/http-client/request.js +17 -11
- package/build/src/http-client/response.d.ts +7 -7
- package/build/src/http-client/response.d.ts.map +1 -1
- package/build/src/http-client/response.js +8 -8
- package/build/src/http-client/websocket-client.d.ts +28 -28
- package/build/src/http-client/websocket-client.d.ts.map +1 -1
- package/build/src/http-client/websocket-client.js +26 -26
- package/build/src/http-server/client/index.d.ts +13 -13
- package/build/src/http-server/client/index.d.ts.map +1 -1
- package/build/src/http-server/client/index.js +14 -14
- package/build/src/http-server/client/params-to-object.d.ts +15 -15
- package/build/src/http-server/client/params-to-object.d.ts.map +1 -1
- package/build/src/http-server/client/params-to-object.js +17 -13
- package/build/src/http-server/client/request-buffer/form-data-part.d.ts +7 -7
- package/build/src/http-server/client/request-buffer/form-data-part.js +8 -8
- package/build/src/http-server/client/request-buffer/header.d.ts +2 -2
- package/build/src/http-server/client/request-buffer/header.js +3 -3
- package/build/src/http-server/client/request-buffer/index.d.ts +20 -20
- package/build/src/http-server/client/request-buffer/index.js +22 -22
- package/build/src/http-server/client/request-parser.d.ts +21 -20
- package/build/src/http-server/client/request-parser.d.ts.map +1 -1
- package/build/src/http-server/client/request-parser.js +22 -21
- package/build/src/http-server/client/request-runner.d.ts +6 -6
- package/build/src/http-server/client/request-runner.d.ts.map +1 -1
- package/build/src/http-server/client/request-runner.js +17 -4
- package/build/src/http-server/client/request.d.ts +9 -8
- package/build/src/http-server/client/request.d.ts.map +1 -1
- package/build/src/http-server/client/request.js +9 -8
- package/build/src/http-server/client/response.d.ts +17 -17
- package/build/src/http-server/client/response.js +18 -18
- package/build/src/http-server/client/uploaded-file/memory-uploaded-file.d.ts +6 -6
- package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +9 -9
- package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.d.ts +6 -6
- package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +9 -9
- package/build/src/http-server/client/uploaded-file/uploaded-file.d.ts +7 -7
- package/build/src/http-server/client/uploaded-file/uploaded-file.js +8 -8
- package/build/src/http-server/client/websocket-request.d.ts +17 -13
- package/build/src/http-server/client/websocket-request.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-request.js +10 -10
- package/build/src/http-server/client/websocket-session.d.ts +26 -26
- package/build/src/http-server/client/websocket-session.d.ts.map +1 -1
- package/build/src/http-server/client/websocket-session.js +27 -27
- package/build/src/http-server/index.d.ts +19 -19
- package/build/src/http-server/index.d.ts.map +1 -1
- package/build/src/http-server/index.js +20 -20
- package/build/src/http-server/server-client.d.ts +13 -13
- package/build/src/http-server/server-client.d.ts.map +1 -1
- package/build/src/http-server/server-client.js +14 -14
- package/build/src/http-server/websocket-events-host.d.ts +7 -7
- package/build/src/http-server/websocket-events-host.d.ts.map +1 -1
- package/build/src/http-server/websocket-events-host.js +7 -7
- package/build/src/http-server/websocket-events.d.ts +7 -7
- package/build/src/http-server/websocket-events.d.ts.map +1 -1
- package/build/src/http-server/websocket-events.js +7 -7
- package/build/src/http-server/worker-handler/index.d.ts +22 -22
- package/build/src/http-server/worker-handler/index.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/index.js +20 -20
- package/build/src/http-server/worker-handler/worker-thread.d.ts +17 -17
- package/build/src/http-server/worker-handler/worker-thread.d.ts.map +1 -1
- package/build/src/http-server/worker-handler/worker-thread.js +16 -16
- package/build/src/initializer.d.ts +6 -6
- package/build/src/initializer.js +7 -7
- package/build/src/logger.d.ts +38 -34
- package/build/src/logger.d.ts.map +1 -1
- package/build/src/logger.js +53 -47
- package/build/src/routes/app-routes.d.ts +2 -2
- package/build/src/routes/app-routes.js +3 -3
- package/build/src/routes/base-route.d.ts +22 -22
- package/build/src/routes/base-route.d.ts.map +1 -1
- package/build/src/routes/base-route.js +21 -21
- package/build/src/routes/basic-route.d.ts +3 -3
- package/build/src/routes/basic-route.js +15 -15
- package/build/src/routes/get-route.d.ts +2 -2
- package/build/src/routes/get-route.js +8 -8
- package/build/src/routes/index.d.ts +2 -2
- package/build/src/routes/index.js +3 -3
- package/build/src/routes/namespace-route.d.ts +2 -2
- package/build/src/routes/namespace-route.js +8 -8
- package/build/src/routes/post-route.d.ts +2 -2
- package/build/src/routes/post-route.js +8 -8
- package/build/src/routes/resolver.d.ts +21 -19
- package/build/src/routes/resolver.d.ts.map +1 -1
- package/build/src/routes/resolver.js +50 -25
- package/build/src/routes/resource-route.d.ts +6 -6
- package/build/src/routes/resource-route.js +12 -12
- package/build/src/testing/format-value.d.ts +6 -6
- package/build/src/testing/format-value.d.ts.map +1 -1
- package/build/src/testing/format-value.js +11 -11
- package/build/src/testing/request-client.d.ts +10 -10
- package/build/src/testing/request-client.d.ts.map +1 -1
- package/build/src/testing/request-client.js +11 -11
- package/build/src/testing/test-files-finder.d.ts +17 -16
- package/build/src/testing/test-files-finder.d.ts.map +1 -1
- package/build/src/testing/test-files-finder.js +17 -16
- package/build/src/testing/test-runner.d.ts +78 -39
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +40 -40
- package/build/src/testing/test.d.ts +61 -61
- package/build/src/testing/test.d.ts.map +1 -1
- package/build/src/testing/test.js +77 -56
- package/build/src/utils/backtrace-cleaner.d.ts +4 -4
- package/build/src/utils/backtrace-cleaner.js +5 -5
- package/build/src/utils/ensure-error.d.ts +3 -3
- package/build/src/utils/ensure-error.d.ts.map +1 -1
- package/build/src/utils/ensure-error.js +3 -3
- package/build/src/utils/file-exists.d.ts +2 -2
- package/build/src/utils/file-exists.js +3 -3
- package/build/src/utils/nest-callbacks.d.ts +3 -3
- package/build/src/utils/nest-callbacks.js +4 -4
- package/build/src/utils/rest-args-error.d.ts +2 -2
- package/build/src/utils/rest-args-error.js +3 -3
- package/build/src/utils/singularize-model-name.d.ts +2 -2
- package/build/src/utils/singularize-model-name.js +3 -3
- package/build/src/utils/with-tracked-stack-async-hooks.d.ts +4 -4
- package/build/src/utils/with-tracked-stack-async-hooks.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack-async-hooks.js +5 -5
- package/build/src/utils/with-tracked-stack.d.ts +5 -4
- package/build/src/utils/with-tracked-stack.d.ts.map +1 -1
- package/build/src/utils/with-tracked-stack.js +12 -18
- package/package.json +1 -1
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export default class VelociousDatabaseDriversMssqlColumn extends BaseColumn {
|
|
2
2
|
/**
|
|
3
|
-
* @param {import("../base-table.js").default} table
|
|
4
|
-
* @param {Record<string,
|
|
3
|
+
* @param {import("../base-table.js").default} table - Table.
|
|
4
|
+
* @param {Record<string, unknown>} data - Data payload.
|
|
5
5
|
*/
|
|
6
|
-
constructor(table: import("../base-table.js").default, data: Record<string,
|
|
7
|
-
data: Record<string,
|
|
6
|
+
constructor(table: import("../base-table.js").default, data: Record<string, unknown>);
|
|
7
|
+
data: Record<string, unknown>;
|
|
8
|
+
getDefault(): any;
|
|
8
9
|
getMaxLength(): any;
|
|
9
10
|
getName(): any;
|
|
10
11
|
getType(): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mssql/column.js"],"names":[],"mappings":"AAMA;IACE;;;OAGG;IACH,mBAHW,OAAO,kBAAkB,EAAE,OAAO,QAClC,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mssql/column.js"],"names":[],"mappings":"AAMA;IACE;;;OAGG;IACH,mBAHW,OAAO,kBAAkB,EAAE,OAAO,QAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAMjC;IAFC,8BAAgB;IA0ClB,kBAA4D;IAC5D,oBAAwE;IACxE,eAAsD;IAatD,eAAoD;CACrD;uBArEsB,mBAAmB"}
|
|
@@ -4,8 +4,8 @@ import ColumnsIndex from "./columns-index.js";
|
|
|
4
4
|
import { digg } from "diggerize";
|
|
5
5
|
export default class VelociousDatabaseDriversMssqlColumn extends BaseColumn {
|
|
6
6
|
/**
|
|
7
|
-
* @param {import("../base-table.js").default} table
|
|
8
|
-
* @param {Record<string,
|
|
7
|
+
* @param {import("../base-table.js").default} table - Table.
|
|
8
|
+
* @param {Record<string, unknown>} data - Data payload.
|
|
9
9
|
*/
|
|
10
10
|
constructor(table, data) {
|
|
11
11
|
super();
|
|
@@ -59,4 +59,4 @@ export default class VelociousDatabaseDriversMssqlColumn extends BaseColumn {
|
|
|
59
59
|
getPrimaryKey() { return digg(this, "data", "isIdentity") === 1; }
|
|
60
60
|
getType() { return digg(this, "data", "DATA_TYPE"); }
|
|
61
61
|
}
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvbXNzcWwvY29sdW1uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBRTlCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sbUNBQW9DLFNBQVEsVUFBVTtJQUN6RTs7O09BR0c7SUFDSCxZQUFZLEtBQUssRUFBRSxJQUFJO1FBQ3JCLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDcEIsQ0FBQztJQUVELGdCQUFnQixLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUVwRSxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUNqQyxNQUFNLEdBQUcsR0FBRzs7Ozs7Ozs7Ozs7Ozs7OzRCQWVZLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDOzZCQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7OztLQUlyRCxDQUFBO1FBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUVsQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUVwRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JCLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDNUQsWUFBWSxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsMEJBQTBCLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDeEUsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBRXRELE9BQU87UUFDTCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUVuRCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDakUsT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUEsQ0FBQyxDQUFDO0NBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlQ29sdW1uIGZyb20gXCIuLi9iYXNlLWNvbHVtbi5qc1wiXG5pbXBvcnQgQ29sdW1uc0luZGV4IGZyb20gXCIuL2NvbHVtbnMtaW5kZXguanNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VEcml2ZXJzTXNzcWxDb2x1bW4gZXh0ZW5kcyBCYXNlQ29sdW1uIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS10YWJsZS5qc1wiKS5kZWZhdWx0fSB0YWJsZSAtIFRhYmxlLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBkYXRhIC0gRGF0YSBwYXlsb2FkLlxuICAgKi9cbiAgY29uc3RydWN0b3IodGFibGUsIGRhdGEpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMudGFibGUgPSB0YWJsZVxuICB9XG5cbiAgZ2V0QXV0b0luY3JlbWVudCgpIHsgcmV0dXJuIGRpZ2codGhpcywgXCJkYXRhXCIsIFwiaXNJZGVudGl0eVwiKSA9PT0gMSB9XG5cbiAgYXN5bmMgZ2V0SW5kZXhlcygpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKClcbiAgICBjb25zdCBzcWwgPSBgXG4gICAgICBTRUxFQ1RcbiAgICAgICAgc3lzLnRhYmxlcy5uYW1lIEFTIFRhYmxlTmFtZSxcbiAgICAgICAgc3lzLmNvbHVtbnMubmFtZSBBUyBDb2x1bW5OYW1lLFxuICAgICAgICBzeXMuaW5kZXhlcy5uYW1lIEFTIGluZGV4X25hbWUsXG4gICAgICAgIHN5cy5pbmRleGVzLnR5cGVfZGVzYyBBUyBJbmRleFR5cGUsXG4gICAgICAgIHN5cy5pbmRleF9jb2x1bW5zLmlzX2luY2x1ZGVkX2NvbHVtbiBBUyBJc0luY2x1ZGVkQ29sdW1uLFxuICAgICAgICBzeXMuaW5kZXhlcy5pc191bmlxdWUsXG4gICAgICAgIHN5cy5pbmRleGVzLmlzX3ByaW1hcnlfa2V5LFxuICAgICAgICBzeXMuaW5kZXhlcy5pc191bmlxdWVfY29uc3RyYWludFxuICAgICAgRlJPTSBzeXMuaW5kZXhlc1xuICAgICAgSU5ORVIgSk9JTiBzeXMuaW5kZXhfY29sdW1ucyBPTiBzeXMuaW5kZXhlcy5vYmplY3RfaWQgPSBzeXMuaW5kZXhfY29sdW1ucy5vYmplY3RfaWQgQU5EIHN5cy5pbmRleGVzLmluZGV4X2lkID0gc3lzLmluZGV4X2NvbHVtbnMuaW5kZXhfaWRcbiAgICAgIElOTkVSIEpPSU4gc3lzLmNvbHVtbnMgT04gc3lzLmluZGV4X2NvbHVtbnMub2JqZWN0X2lkID0gc3lzLmNvbHVtbnMub2JqZWN0X2lkIEFORCBzeXMuaW5kZXhfY29sdW1ucy5jb2x1bW5faWQgPSBzeXMuY29sdW1ucy5jb2x1bW5faWRcbiAgICAgIElOTkVSIEpPSU4gc3lzLnRhYmxlcyBPTiBzeXMuaW5kZXhlcy5vYmplY3RfaWQgPSBzeXMudGFibGVzLm9iamVjdF9pZFxuICAgICAgV0hFUkVcbiAgICAgICAgc3lzLnRhYmxlcy5uYW1lID0gJHtvcHRpb25zLnF1b3RlKHRoaXMuZ2V0VGFibGUoKS5nZXROYW1lKCkpfSBBTkRcbiAgICAgICAgc3lzLmNvbHVtbnMubmFtZSA9ICR7b3B0aW9ucy5xdW90ZSh0aGlzLmdldE5hbWUoKSl9XG4gICAgICBPUkRFUiBCWVxuICAgICAgICBzeXMuaW5kZXhlcy5uYW1lLFxuICAgICAgICBzeXMuaW5kZXhfY29sdW1ucy5rZXlfb3JkaW5hbFxuICAgIGBcblxuICAgIGNvbnN0IHJvd3MgPSBhd2FpdCB0aGlzLmdldERyaXZlcigpLnF1ZXJ5KHNxbClcbiAgICBjb25zdCBpbmRleGVzID0gW11cblxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbmV3IENvbHVtbnNJbmRleCh0aGlzLmdldFRhYmxlKCksIHJvdylcblxuICAgICAgaW5kZXhlcy5wdXNoKGluZGV4KVxuICAgIH1cblxuICAgIHJldHVybiBpbmRleGVzXG4gIH1cblxuICBnZXREZWZhdWx0KCkgeyByZXR1cm4gZGlnZyh0aGlzLCBcImRhdGFcIiwgXCJDT0xVTU5fREVGQVVMVFwiKSB9XG4gIGdldE1heExlbmd0aCgpIHsgcmV0dXJuIGRpZ2codGhpcywgXCJkYXRhXCIsIFwiQ0hBUkFDVEVSX01BWElNVU1fTEVOR1RIXCIpIH1cbiAgZ2V0TmFtZSgpIHsgcmV0dXJuIGRpZ2codGhpcywgXCJkYXRhXCIsIFwiQ09MVU1OX05BTUVcIikgfVxuXG4gIGdldE51bGwoKSB7XG4gICAgY29uc3QgbnVsbFZhbHVlID0gZGlnZyh0aGlzLCBcImRhdGFcIiwgXCJJU19OVUxMQUJMRVwiKVxuXG4gICAgaWYgKG51bGxWYWx1ZSA9PSBcIk5PXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGdldFByaW1hcnlLZXkoKSB7IHJldHVybiBkaWdnKHRoaXMsIFwiZGF0YVwiLCBcImlzSWRlbnRpdHlcIikgPT09IDEgfVxuICBnZXRUeXBlKCkgeyByZXR1cm4gZGlnZyh0aGlzLCBcImRhdGFcIiwgXCJEQVRBX1RZUEVcIikgfVxufVxuIl19
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Connect a MSSQL connection instance.
|
|
3
|
+
* @param {import("mssql").Connection} connection - MSSQL connection instance.
|
|
4
|
+
* @returns {Promise<void>} - Resolves when the connection is established.
|
|
5
|
+
*/
|
|
6
|
+
export default function connectConnection(connection: any): Promise<void>;
|
|
2
7
|
//# sourceMappingURL=connect-connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-connection.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mssql/connect-connection.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connect-connection.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mssql/connect-connection.js"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,4DAFa,OAAO,CAAC,IAAI,CAAC,CAYzB"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Connect a MSSQL connection instance.
|
|
3
|
+
* @param {import("mssql").Connection} connection - MSSQL connection instance.
|
|
4
|
+
* @returns {Promise<void>} - Resolves when the connection is established.
|
|
5
|
+
*/
|
|
2
6
|
export default function connectConnection(connection) {
|
|
3
7
|
return new Promise((resolve, reject) => {
|
|
4
8
|
connection.connect((error) => {
|
|
@@ -11,4 +15,4 @@ export default function connectConnection(connection) {
|
|
|
11
15
|
});
|
|
12
16
|
});
|
|
13
17
|
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1jb25uZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL2RyaXZlcnMvbXNzcWwvY29ubmVjdC1jb25uZWN0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsT0FBTyxVQUFVLGlCQUFpQixDQUFDLFVBQVU7SUFDbEQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDZixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxFQUFFLENBQUE7WUFDWCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbm5lY3QgYSBNU1NRTCBjb25uZWN0aW9uIGluc3RhbmNlLlxuICogQHBhcmFtIHtpbXBvcnQoXCJtc3NxbFwiKS5Db25uZWN0aW9ufSBjb25uZWN0aW9uIC0gTVNTUUwgY29ubmVjdGlvbiBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbm5lY3RDb25uZWN0aW9uKGNvbm5lY3Rpb24pIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25uZWN0aW9uLmNvbm5lY3QoKGVycm9yKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSgpXG4gICAgICB9XG4gICAgfSlcbiAgfSlcbn1cbiJdfQ==
|
|
@@ -2,28 +2,18 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
2
2
|
connection: any;
|
|
3
3
|
close(): Promise<void>;
|
|
4
4
|
/**
|
|
5
|
-
* @returns {Promise<string>}
|
|
5
|
+
* @returns {Promise<string>} - Resolves with the current database.
|
|
6
6
|
*/
|
|
7
7
|
currentDatabase(): Promise<string>;
|
|
8
8
|
/**
|
|
9
|
-
* @returns {string}
|
|
9
|
+
* @returns {string} - The primary key type.
|
|
10
10
|
*/
|
|
11
11
|
primaryKeyType(): string;
|
|
12
12
|
/**
|
|
13
|
-
* @param {
|
|
14
|
-
* @returns {string}
|
|
13
|
+
* @param {unknown} value - Value to use.
|
|
14
|
+
* @returns {string} - The escape.
|
|
15
15
|
*/
|
|
16
|
-
escape(value:
|
|
17
|
-
/**
|
|
18
|
-
* @param {*} value
|
|
19
|
-
* @returns {string}
|
|
20
|
-
*/
|
|
21
|
-
quote(value: any): string;
|
|
22
|
-
/**
|
|
23
|
-
* @param {*} string
|
|
24
|
-
* @returns {string}
|
|
25
|
-
*/
|
|
26
|
-
quoteColumn(string: any): string;
|
|
16
|
+
escape(value: unknown): string;
|
|
27
17
|
lastInsertID(): Promise<any>;
|
|
28
18
|
_options: Options;
|
|
29
19
|
_currentTransaction: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mssql/index.js"],"names":[],"mappings":"AAoBA;IAMM,gBAAqD;IAYzD,uBAGC;IAgDD;;OAEG;IACH,mBAFa,OAAO,CAAC,MAAM,CAAC,CAM3B;IA2BD;;OAEG;IACH,kBAFa,MAAM,CAEiB;IAgDpC;;;OAGG;IACH,cAHW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/database/drivers/mssql/index.js"],"names":[],"mappings":"AAoBA;IAMM,gBAAqD;IAYzD,uBAGC;IAgDD;;OAEG;IACH,mBAFa,OAAO,CAAC,MAAM,CAAC,CAM3B;IA2BD;;OAEG;IACH,kBAFa,MAAM,CAEiB;IAgDpC;;;OAGG;IACH,cAHW,OAAO,GACL,MAAM,CAalB;IAkGD,6BAOC;IAIqB,kBAA2C;IAS/D,yBAAiE;CAgEpE;iBAhXgB,YAAY;oBAST,cAAc"}
|
|
@@ -39,8 +39,8 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
39
39
|
this.connection = undefined;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* @param {import("../../table-data/index.js").default} tableData
|
|
43
|
-
* @returns {Promise<string[]>}
|
|
42
|
+
* @param {import("../../table-data/index.js").default} tableData - Table data.
|
|
43
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
44
44
|
*/
|
|
45
45
|
async alterTableSQLs(tableData) {
|
|
46
46
|
const alterArgs = { tableData, driver: this };
|
|
@@ -48,10 +48,10 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
48
48
|
return await alterTable.toSQLs();
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
* @param {string} databaseName
|
|
52
|
-
* @param {object} [args]
|
|
53
|
-
* @param {boolean} [args.ifNotExists]
|
|
54
|
-
* @returns {string[]}
|
|
51
|
+
* @param {string} databaseName - Database name.
|
|
52
|
+
* @param {object} [args] - Options object.
|
|
53
|
+
* @param {boolean} [args.ifNotExists] - Whether if not exists.
|
|
54
|
+
* @returns {string[]} - SQL statements.
|
|
55
55
|
*/
|
|
56
56
|
createDatabaseSql(databaseName, args) {
|
|
57
57
|
const createArgs = Object.assign({ databaseName, driver: this }, args);
|
|
@@ -59,8 +59,8 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
59
59
|
return createDatabase.toSql();
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
* @param {import("../base.js").CreateIndexSqlArgs} indexData
|
|
63
|
-
* @returns {Promise<string[]>}
|
|
62
|
+
* @param {import("../base.js").CreateIndexSqlArgs} indexData - Index data.
|
|
63
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
64
64
|
*/
|
|
65
65
|
async createIndexSQLs(indexData) {
|
|
66
66
|
const createArgs = Object.assign({ driver: this }, indexData);
|
|
@@ -68,8 +68,8 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
68
68
|
return await createIndex.toSQLs();
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
|
-
* @param {import("../../table-data/index.js").default} tableData
|
|
72
|
-
* @returns {Promise<string[]>}
|
|
71
|
+
* @param {import("../../table-data/index.js").default} tableData - Table data.
|
|
72
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
73
73
|
*/
|
|
74
74
|
async createTableSql(tableData) {
|
|
75
75
|
const createArgs = { tableData, driver: this, indexInCreateTable: false };
|
|
@@ -77,7 +77,7 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
77
77
|
return await createTable.toSql();
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
|
-
* @returns {Promise<string>}
|
|
80
|
+
* @returns {Promise<string>} - Resolves with the current database.
|
|
81
81
|
*/
|
|
82
82
|
async currentDatabase() {
|
|
83
83
|
const rows = await this.query("SELECT DB_NAME() AS db_name");
|
|
@@ -90,9 +90,9 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
90
90
|
await this.query("EXEC sp_MSforeachtable @command1=\"print '?'\", @command2=\"ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all\"");
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
|
-
* @param {string} tableName
|
|
94
|
-
* @param {import("../base.js").DropTableSqlArgsType} [args]
|
|
95
|
-
* @returns {Promise<string[]>}
|
|
93
|
+
* @param {string} tableName - Table name.
|
|
94
|
+
* @param {import("../base.js").DropTableSqlArgsType} [args] - Options object.
|
|
95
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
96
96
|
*/
|
|
97
97
|
async dropTableSQLs(tableName, args = {}) {
|
|
98
98
|
const dropArgs = Object.assign({ tableName, driver: this }, args);
|
|
@@ -100,16 +100,16 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
100
100
|
return await dropTable.toSQLs();
|
|
101
101
|
}
|
|
102
102
|
/**
|
|
103
|
-
* @returns {string}
|
|
103
|
+
* @returns {string} - The type.
|
|
104
104
|
*/
|
|
105
105
|
getType() { return "mssql"; }
|
|
106
106
|
/**
|
|
107
|
-
* @returns {string}
|
|
107
|
+
* @returns {string} - The primary key type.
|
|
108
108
|
*/
|
|
109
109
|
primaryKeyType() { return "bigint"; }
|
|
110
110
|
/**
|
|
111
|
-
* @param {string} sql
|
|
112
|
-
* @returns {Promise<import("../base.js").QueryResultType>}
|
|
111
|
+
* @param {string} sql - SQL string.
|
|
112
|
+
* @returns {Promise<import("../base.js").QueryResultType>} - Resolves with the query actual.
|
|
113
113
|
*/
|
|
114
114
|
async _queryActual(sql) {
|
|
115
115
|
let result;
|
|
@@ -144,15 +144,15 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
144
144
|
return result.recordsets[0];
|
|
145
145
|
}
|
|
146
146
|
/**
|
|
147
|
-
* @param {import("../../query/index.js").default} query
|
|
148
|
-
* @returns {string}
|
|
147
|
+
* @param {import("../../query/index.js").default} query - Query instance.
|
|
148
|
+
* @returns {string} - SQL string.
|
|
149
149
|
*/
|
|
150
150
|
queryToSql(query) { return new QueryParser({ query }).toSql(); }
|
|
151
151
|
shouldSetAutoIncrementWhenPrimaryKey() { return true; }
|
|
152
152
|
supportsDefaultPrimaryKeyUUID() { return true; }
|
|
153
153
|
/**
|
|
154
|
-
* @param {
|
|
155
|
-
* @returns {string}
|
|
154
|
+
* @param {unknown} value - Value to use.
|
|
155
|
+
* @returns {string} - The escape.
|
|
156
156
|
*/
|
|
157
157
|
escape(value) {
|
|
158
158
|
value = this._convertValue(value);
|
|
@@ -164,39 +164,40 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
164
164
|
return result;
|
|
165
165
|
}
|
|
166
166
|
/**
|
|
167
|
-
* @param {
|
|
168
|
-
* @returns {string}
|
|
167
|
+
* @param {unknown} value - Value to use.
|
|
168
|
+
* @returns {string | number} - The quoted value.
|
|
169
169
|
*/
|
|
170
170
|
quote(value) {
|
|
171
171
|
value = this._convertValue(value);
|
|
172
172
|
const type = typeof value;
|
|
173
173
|
if (type == "number")
|
|
174
|
-
return value;
|
|
174
|
+
return /** @type {number} */ (value);
|
|
175
175
|
if (type != "string")
|
|
176
|
-
value =
|
|
176
|
+
value = String(value);
|
|
177
177
|
return escapeString(value, null);
|
|
178
178
|
}
|
|
179
179
|
/**
|
|
180
|
-
* @param {
|
|
181
|
-
* @returns {string}
|
|
180
|
+
* @param {string} columnName - Column name.
|
|
181
|
+
* @returns {string} - The quote column.
|
|
182
182
|
*/
|
|
183
|
-
quoteColumn(
|
|
183
|
+
quoteColumn(columnName) { return this.options().quoteColumnName(columnName); }
|
|
184
184
|
/**
|
|
185
|
-
* @param {string} string
|
|
186
|
-
* @returns {string}
|
|
185
|
+
* @param {string} string - String.
|
|
186
|
+
* @returns {string} - The quote table.
|
|
187
187
|
*/
|
|
188
188
|
quoteTable(string) { return this.options().quoteTableName(string); }
|
|
189
189
|
/**
|
|
190
|
-
* @param {string} tableName
|
|
191
|
-
* @param {string} oldColumnName
|
|
192
|
-
* @param {string} newColumnName
|
|
193
|
-
* @returns {Promise<void>}
|
|
190
|
+
* @param {string} tableName - Table name.
|
|
191
|
+
* @param {string} oldColumnName - Previous column name.
|
|
192
|
+
* @param {string} newColumnName - New column name.
|
|
193
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
194
194
|
*/
|
|
195
195
|
async renameColumn(tableName, oldColumnName, newColumnName) {
|
|
196
196
|
await this.query(`EXEC sp_rename ${this.quote(`${tableName}.${oldColumnName}`)}, ${this.quote(newColumnName)}, 'COLUMN'`);
|
|
197
197
|
}
|
|
198
198
|
/**
|
|
199
|
-
* @param {import("../base.js").DeleteSqlArgsType} args
|
|
199
|
+
* @param {import("../base.js").DeleteSqlArgsType} args - Options object.
|
|
200
|
+
* @returns {string} - SQL string.
|
|
200
201
|
*/
|
|
201
202
|
deleteSql({ tableName, conditions }) {
|
|
202
203
|
const deleteInstruction = new Delete({ conditions, driver: this, tableName });
|
|
@@ -204,8 +205,8 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
204
205
|
}
|
|
205
206
|
/**
|
|
206
207
|
* @abstract
|
|
207
|
-
* @param {import("../base.js").InsertSqlArgsType} args
|
|
208
|
-
* @returns {string}
|
|
208
|
+
* @param {import("../base.js").InsertSqlArgsType} args - Options object.
|
|
209
|
+
* @returns {string} - SQL string.
|
|
209
210
|
*/
|
|
210
211
|
insertSql(args) {
|
|
211
212
|
const insertArgs = Object.assign({ driver: this }, args);
|
|
@@ -213,27 +214,27 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
213
214
|
return insert.toSql();
|
|
214
215
|
}
|
|
215
216
|
/**
|
|
216
|
-
* @returns {Promise<Array<import("../base-table.js").default>>}
|
|
217
|
+
* @returns {Promise<Array<import("../base-table.js").default>>} - Resolves with the tables.
|
|
217
218
|
*/
|
|
218
219
|
async getTables() {
|
|
219
220
|
const result = await this.query(`SELECT [TABLE_NAME] FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_CATALOG] = DB_NAME() AND [TABLE_SCHEMA] = 'dbo'`);
|
|
220
221
|
const tables = [];
|
|
221
222
|
for (const row of result) {
|
|
222
|
-
const table = new Table(this, row);
|
|
223
|
+
const table = new Table(this, /** @type {Record<string, string>} */ (row));
|
|
223
224
|
tables.push(table);
|
|
224
225
|
}
|
|
225
226
|
return tables;
|
|
226
227
|
}
|
|
227
228
|
/**
|
|
228
|
-
* @param {string} name
|
|
229
|
-
* @param {object} [args]
|
|
230
|
-
* @param {boolean} args.throwError
|
|
231
|
-
* @returns {Promise<import("../base-table.js").default | undefined>}
|
|
229
|
+
* @param {string} name - Name.
|
|
230
|
+
* @param {object} [args] - Options object.
|
|
231
|
+
* @param {boolean} args.throwError - Whether throw error.
|
|
232
|
+
* @returns {Promise<import("../base-table.js").default | undefined>} - Resolves with the table by name.
|
|
232
233
|
*/
|
|
233
234
|
async getTableByName(name, args) {
|
|
234
235
|
const result = await this.query(`SELECT [TABLE_NAME] FROM [INFORMATION_SCHEMA].[TABLES] WHERE [TABLE_CATALOG] = DB_NAME() AND [TABLE_SCHEMA] = 'dbo' AND [TABLE_NAME] = ${this.quote(name)}`);
|
|
235
236
|
if (result[0]) {
|
|
236
|
-
return new Table(this, result[0]);
|
|
237
|
+
return new Table(this, /** @type {Record<string, string>} */ (result[0]));
|
|
237
238
|
}
|
|
238
239
|
if (args?.throwError !== false) {
|
|
239
240
|
const tables = await this.getTables();
|
|
@@ -248,7 +249,7 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
248
249
|
throw new Error("Couldn't get the last inserted ID");
|
|
249
250
|
return lastInsertID;
|
|
250
251
|
}
|
|
251
|
-
/** @returns {Options} */
|
|
252
|
+
/** @returns {Options} - The options options. */
|
|
252
253
|
options() {
|
|
253
254
|
if (!this._options)
|
|
254
255
|
this._options = new Options({ driver: this });
|
|
@@ -275,22 +276,22 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
275
276
|
this._currentTransaction = null;
|
|
276
277
|
}
|
|
277
278
|
/**
|
|
278
|
-
* @param {string} savePointName
|
|
279
|
-
* @returns {Promise<void>}
|
|
279
|
+
* @param {string} savePointName - Save point name.
|
|
280
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
280
281
|
*/
|
|
281
282
|
async _startSavePointAction(savePointName) {
|
|
282
283
|
await this.query(`SAVE TRANSACTION [${savePointName}]`);
|
|
283
284
|
}
|
|
284
285
|
/**
|
|
285
|
-
* @param {string} savePointName
|
|
286
|
-
* @returns {Promise<void>}
|
|
286
|
+
* @param {string} savePointName - Save point name.
|
|
287
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
287
288
|
*/
|
|
288
289
|
async _releaseSavePointAction(savePointName) {
|
|
289
290
|
// Do nothing in MS-SQL.
|
|
290
291
|
}
|
|
291
292
|
/**
|
|
292
|
-
* @param {string} savePointName
|
|
293
|
-
* @returns {Promise<void>}
|
|
293
|
+
* @param {string} savePointName - Save point name.
|
|
294
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
294
295
|
*/
|
|
295
296
|
async _rollbackSavePointAction(savePointName) {
|
|
296
297
|
await this.query(`ROLLBACK TRANSACTION [${savePointName}]`);
|
|
@@ -299,18 +300,18 @@ export default class VelociousDatabaseDriversMssql extends Base {
|
|
|
299
300
|
return `sp${new UUID(4).format().replaceAll("-", "")}`.substring(0, 32);
|
|
300
301
|
}
|
|
301
302
|
/**
|
|
302
|
-
* @param {import("../base.js").UpdateSqlArgsType} args
|
|
303
|
-
* @returns {string}
|
|
303
|
+
* @param {import("../base.js").UpdateSqlArgsType} args - Options object.
|
|
304
|
+
* @returns {string} - SQL string.
|
|
304
305
|
*/
|
|
305
306
|
updateSql({ conditions, data, tableName }) {
|
|
306
307
|
const update = new Update({ conditions, data, driver: this, tableName });
|
|
307
308
|
return update.toSql();
|
|
308
309
|
}
|
|
309
310
|
/**
|
|
310
|
-
* @returns {Promise<string | null>}
|
|
311
|
+
* @returns {Promise<string | null>} - Resolves with SQL string.
|
|
311
312
|
*/
|
|
312
313
|
async structureSql() {
|
|
313
314
|
return await new StructureSql({ driver: this }).toSql();
|
|
314
315
|
}
|
|
315
316
|
}
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9tc3NxbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFBO0FBQzdCLE9BQU8sY0FBYyxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sbUJBQW1CLENBQUE7QUFDNUMsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRTVCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQThCLFNBQVEsSUFBSTtJQUM3RCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXpDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxV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QUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUV0RSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLE1BQU0sSUFBSSxZQUFZLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEFsdGVyVGFibGUgZnJvbSBcIi4vc3FsL2FsdGVyLXRhYmxlLmpzXCJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9iYXNlLmpzXCJcbmltcG9ydCBDcmVhdGVEYXRhYmFzZSBmcm9tIFwiLi9zcWwvY3JlYXRlLWRhdGFiYXNlLmpzXCJcbmltcG9ydCBDcmVhdGVJbmRleCBmcm9tIFwiLi9zcWwvY3JlYXRlLWluZGV4LmpzXCJcbmltcG9ydCBDcmVhdGVUYWJsZSBmcm9tIFwiLi9zcWwvY3JlYXRlLXRhYmxlLmpzXCJcbmltcG9ydCBEZWxldGUgZnJvbSBcIi4vc3FsL2RlbGV0ZS5qc1wiXG5pbXBvcnQgRHJvcFRhYmxlIGZyb20gXCIuL3NxbC9kcm9wLXRhYmxlLmpzXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgZXNjYXBlU3RyaW5nIGZyb20gXCJzcWwtZXNjYXBlLXN0cmluZ1wiXG5pbXBvcnQgSW5zZXJ0IGZyb20gXCIuL3NxbC9pbnNlcnQuanNcIlxuaW1wb3J0IE9wdGlvbnMgZnJvbSBcIi4vb3B0aW9ucy5qc1wiXG5pbXBvcnQgbXNzcWwgZnJvbSBcIm1zc3FsXCJcbmltcG9ydCBRdWVyeVBhcnNlciBmcm9tIFwiLi9xdWVyeS1wYXJzZXIuanNcIlxuaW1wb3J0IFRhYmxlIGZyb20gXCIuL3RhYmxlLmpzXCJcbmltcG9ydCBTdHJ1Y3R1cmVTcWwgZnJvbSBcIi4vc3RydWN0dXJlLXNxbC5qc1wiXG5pbXBvcnQgVXBkYXRlIGZyb20gXCIuL3NxbC91cGRhdGUuanNcIlxuaW1wb3J0IFVVSUQgZnJvbSBcInB1cmUtdXVpZFwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc01zc3FsIGV4dGVuZHMgQmFzZXtcbiAgYXN5bmMgY29ubmVjdCgpIHtcbiAgICBjb25zdCBhcmdzID0gdGhpcy5nZXRBcmdzKClcbiAgICBjb25zdCBzcWxDb25maWcgPSBkaWdnKGFyZ3MsIFwic3FsQ29uZmlnXCIpXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IG1zc3FsLkNvbm5lY3Rpb25Qb29sKHNxbENvbmZpZylcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbi5jb25uZWN0KClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gUmUtdGhyb3cgdG8gZml4IHVudXNlYWJsZSBzdGFjayB0cmFjZS5cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgY29ubmVjdCB0byBkYXRhYmFzZTogJHtlcnJvci5tZXNzYWdlfWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGNvbm5lY3QgdG8gZGF0YWJhc2U6ICR7ZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb24/LmNsb3NlKClcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3RhYmxlLWRhdGEvaW5kZXguanNcIikuZGVmYXVsdH0gdGFibGVEYXRhXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn1cbiAgICovXG4gIGFzeW5jIGFsdGVyVGFibGVTUUxzKHRhYmxlRGF0YSkge1xuICAgIGNvbnN0IGFsdGVyQXJncyA9IHt0YWJsZURhdGEsIGRyaXZlcjogdGhpc31cbiAgICBjb25zdCBhbHRlclRhYmxlID0gbmV3IEFsdGVyVGFibGUoYWx0ZXJBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGFsdGVyVGFibGUudG9TUUxzKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZk5vdEV4aXN0c11cbiAgICogQHJldHVybnMge3N0cmluZ1tdfVxuICAgKi9cbiAgY3JlYXRlRGF0YWJhc2VTcWwoZGF0YWJhc2VOYW1lLCBhcmdzKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IE9iamVjdC5hc3NpZ24oe2RhdGFiYXNlTmFtZSwgZHJpdmVyOiB0aGlzfSwgYXJncylcbiAgICBjb25zdCBjcmVhdGVEYXRhYmFzZSA9IG5ldyBDcmVhdGVEYXRhYmFzZShjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGNyZWF0ZURhdGFiYXNlLnRvU3FsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuQ3JlYXRlSW5kZXhTcWxBcmdzfSBpbmRleERhdGFcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlSW5kZXhTUUxzKGluZGV4RGF0YSkge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSBPYmplY3QuYXNzaWduKHtkcml2ZXI6IHRoaXN9LCBpbmRleERhdGEpXG4gICAgY29uc3QgY3JlYXRlSW5kZXggPSBuZXcgQ3JlYXRlSW5kZXgoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBhd2FpdCBjcmVhdGVJbmRleC50b1NRTHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vLi4vdGFibGUtZGF0YS9pbmRleC5qc1wiKS5kZWZhdWx0fSB0YWJsZURhdGFcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVGFibGVTcWwodGFibGVEYXRhKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IHt0YWJsZURhdGEsIGRyaXZlcjogdGhpcywgaW5kZXhJbkNyZWF0ZVRhYmxlOiBmYWxzZX1cbiAgICBjb25zdCBjcmVhdGVUYWJsZSA9IG5ldyBDcmVhdGVUYWJsZShjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZVRhYmxlLnRvU3FsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgY3VycmVudERhdGFiYXNlKCkge1xuICAgIGNvbnN0IHJvd3MgPSBhd2FpdCB0aGlzLnF1ZXJ5KFwiU0VMRUNUIERCX05BTUUoKSBBUyBkYl9uYW1lXCIpXG5cbiAgICByZXR1cm4gZGlnZyhyb3dzLCAwLCBcImRiX25hbWVcIilcbiAgfVxuXG4gIGFzeW5jIGRpc2FibGVGb3JlaWduS2V5cygpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5KFwiRVhFQyBzcF9NU2ZvcmVhY2h0YWJsZSBcXFwiQUxURVIgVEFCTEUgPyBOT0NIRUNLIENPTlNUUkFJTlQgYWxsXFxcIlwiKVxuICB9XG5cbiAgYXN5bmMgZW5hYmxlRm9yZWlnbktleXMoKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyeShcIkVYRUMgc3BfTVNmb3JlYWNodGFibGUgQGNvbW1hbmQxPVxcXCJwcmludCAnPydcXFwiLCBAY29tbWFuZDI9XFxcIkFMVEVSIFRBQkxFID8gV0lUSCBDSEVDSyBDSEVDSyBDT05TVFJBSU5UIGFsbFxcXCJcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5Ecm9wVGFibGVTcWxBcmdzVHlwZX0gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn1cbiAgICovXG4gIGFzeW5jIGRyb3BUYWJsZVNRTHModGFibGVOYW1lLCBhcmdzID0ge30pIHtcbiAgICBjb25zdCBkcm9wQXJncyA9IE9iamVjdC5hc3NpZ24oe3RhYmxlTmFtZSwgZHJpdmVyOiB0aGlzfSwgYXJncylcbiAgICBjb25zdCBkcm9wVGFibGUgPSBuZXcgRHJvcFRhYmxlKGRyb3BBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGRyb3BUYWJsZS50b1NRTHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBnZXRUeXBlKCkgeyByZXR1cm4gXCJtc3NxbFwiIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHByaW1hcnlLZXlUeXBlKCkgeyByZXR1cm4gXCJiaWdpbnRcIiB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWxcbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5RdWVyeVJlc3VsdFR5cGU+fVxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGxldCByZXN1bHRcbiAgICBsZXQgcmVxdWVzdCwgdHJpZXMgPSAwXG5cbiAgICBpZiAodGhpcy5fY3VycmVudFRyYW5zYWN0aW9uKSB7XG4gICAgICByZXF1ZXN0ID0gbmV3IG1zc3FsLlJlcXVlc3QodGhpcy5fY3VycmVudFRyYW5zYWN0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0ID0gbmV3IG1zc3FsLlJlcXVlc3QodGhpcy5jb25uZWN0aW9uKVxuICAgIH1cblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cmllcysrXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlcXVlc3QucXVlcnkoc3FsKVxuICAgICAgICBicmVha1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubWVzc2FnZSA9PSBcIk5vIGNvbm5lY3Rpb24gaXMgc3BlY2lmaWVkIGZvciB0aGF0IHJlcXVlc3QuXCIgJiYgdHJpZXMgPD0gMykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJSZWNvbm5lY3RpbmcgdG8gZGF0YWJhc2VcIilcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3QoKVxuICAgICAgICAgIC8vIFJldHJ5XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIC8vIFJlLXRocm93IGVycm9yIGJlY2F1c2UgdGhlIHN0YWNrLXRyYWNlIGlzIGJyb2tlbiBhbmQgY2FuJ3QgYmUgdXNlZCBmb3IgYXBwLWRldmVsb3BtZW50LlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUXVlcnkgZmFpbGVkICcke2Vycm9yLm1lc3NhZ2V9JzogJHtzcWx9YClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGZhaWxlZCAnJHtlcnJvcn0nOiAke3NxbH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5yZWNvcmRzZXRzWzBdXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9xdWVyeS9pbmRleC5qc1wiKS5kZWZhdWx0fSBxdWVyeVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgcXVlcnlUb1NxbChxdWVyeSkgeyByZXR1cm4gbmV3IFF1ZXJ5UGFyc2VyKHtxdWVyeX0pLnRvU3FsKCkgfVxuXG4gIHNob3VsZFNldEF1dG9JbmNyZW1lbnRXaGVuUHJpbWFyeUtleSgpIHsgcmV0dXJuIHRydWUgfVxuICBzdXBwb3J0c0RlZmF1bHRQcmltYXJ5S2V5VVVJRCgpIHsgcmV0dXJuIHRydWUgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBlc2NhcGUodmFsdWUpIHtcbiAgICB2YWx1ZSA9IHRoaXMuX2NvbnZlcnRWYWx1ZSh2YWx1ZSlcblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWVcblxuICAgIGlmICh0eXBlICE9IFwic3RyaW5nXCIpIHZhbHVlID0gYCR7dmFsdWV9YFxuXG4gICAgY29uc3QgcmVzdWx0V2l0aFF1b3RlcyA9IGVzY2FwZVN0cmluZyh2YWx1ZSwgbnVsbClcbiAgICBjb25zdCByZXN1bHQgPSByZXN1bHRXaXRoUXVvdGVzLnN1YnN0cmluZygxLCByZXN1bHRXaXRoUXVvdGVzLmxlbmd0aCAtIDEpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgcXVvdGUodmFsdWUpIHtcbiAgICB2YWx1ZSA9IHRoaXMuX2NvbnZlcnRWYWx1ZSh2YWx1ZSlcblxuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWVcblxuICAgIGlmICh0eXBlID09IFwibnVtYmVyXCIpIHJldHVybiB2YWx1ZVxuICAgIGlmICh0eXBlICE9IFwic3RyaW5nXCIpIHZhbHVlID0gYCR7dmFsdWV9YFxuXG4gICAgcmV0dXJuIGVzY2FwZVN0cmluZyh2YWx1ZSwgbnVsbClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IHN0cmluZ1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgcXVvdGVDb2x1bW4oc3RyaW5nKSB7IHJldHVybiB0aGlzLm9wdGlvbnMoKS5xdW90ZUNvbHVtbk5hbWUoc3RyaW5nKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHF1b3RlVGFibGUoc3RyaW5nKSB7IHJldHVybiB0aGlzLm9wdGlvbnMoKS5xdW90ZVRhYmxlTmFtZShzdHJpbmcpIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhYmxlTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkQ29sdW1uTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3Q29sdW1uTmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIHJlbmFtZUNvbHVtbih0YWJsZU5hbWUsIG9sZENvbHVtbk5hbWUsIG5ld0NvbHVtbk5hbWUpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5KGBFWEVDIHNwX3JlbmFtZSAke3RoaXMucXVvdGUoYCR7dGFibGVOYW1lfS4ke29sZENvbHVtbk5hbWV9YCl9LCAke3RoaXMucXVvdGUobmV3Q29sdW1uTmFtZSl9LCAnQ09MVU1OJ2ApXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkRlbGV0ZVNxbEFyZ3NUeXBlfSBhcmdzXG4gICAqL1xuICBkZWxldGVTcWwoe3RhYmxlTmFtZSwgY29uZGl0aW9uc30pIHtcbiAgICBjb25zdCBkZWxldGVJbnN0cnVjdGlvbiA9IG5ldyBEZWxldGUoe2NvbmRpdGlvbnMsIGRyaXZlcjogdGhpcywgdGFibGVOYW1lfSlcblxuICAgIHJldHVybiBkZWxldGVJbnN0cnVjdGlvbi50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5JbnNlcnRTcWxBcmdzVHlwZX0gYXJnc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgaW5zZXJ0U3FsKGFyZ3MpIHtcbiAgICBjb25zdCBpbnNlcnRBcmdzID0gT2JqZWN0LmFzc2lnbih7ZHJpdmVyOiB0aGlzfSwgYXJncylcbiAgICBjb25zdCBpbnNlcnQgPSBuZXcgSW5zZXJ0KGluc2VydEFyZ3MpXG5cbiAgICByZXR1cm4gaW5zZXJ0LnRvU3FsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheTxpbXBvcnQoXCIuLi9iYXNlLXRhYmxlLmpzXCIpLmRlZmF1bHQ+Pn1cbiAgICovXG4gIGFzeW5jIGdldFRhYmxlcygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KGBTRUxFQ1QgW1RBQkxFX05BTUVdIEZST00gW0lORk9STUFUSU9OX1NDSEVNQV0uW1RBQkxFU10gV0hFUkUgW1RBQkxFX0NBVEFMT0ddID0gREJfTkFNRSgpIEFORCBbVEFCTEVfU0NIRU1BXSA9ICdkYm8nYClcbiAgICBjb25zdCB0YWJsZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCByb3cgb2YgcmVzdWx0KSB7XG4gICAgICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZSh0aGlzLCByb3cpXG5cbiAgICAgIHRhYmxlcy5wdXNoKHRhYmxlKVxuICAgIH1cblxuICAgIHJldHVybiB0YWJsZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy50aHJvd0Vycm9yXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydChcIi4uL2Jhc2UtdGFibGUuanNcIikuZGVmYXVsdCB8IHVuZGVmaW5lZD59XG4gICAqL1xuICBhc3luYyBnZXRUYWJsZUJ5TmFtZShuYW1lLCBhcmdzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVyeShgU0VMRUNUIFtUQUJMRV9OQU1FXSBGUk9NIFtJTkZPUk1BVElPTl9TQ0hFTUFdLltUQUJMRVNdIFdIRVJFIFtUQUJMRV9DQVRBTE9HXSA9IERCX05BTUUoKSBBTkQgW1RBQkxFX1NDSEVNQV0gPSAnZGJvJyBBTkQgW1RBQkxFX05BTUVdID0gJHt0aGlzLnF1b3RlKG5hbWUpfWApXG5cbiAgICBpZiAocmVzdWx0WzBdKSB7XG4gICAgICByZXR1cm4gbmV3IFRhYmxlKHRoaXMsIHJlc3VsdFswXSlcbiAgICB9XG5cbiAgICBpZiAoYXJncz8udGhyb3dFcnJvciAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGF3YWl0IHRoaXMuZ2V0VGFibGVzKClcbiAgICAgIGNvbnN0IHRhYmxlTmFtZXMgPSB0YWJsZXMubWFwKCh0YWJsZSkgPT4gdGFibGUuZ2V0TmFtZSgpKVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYSB0YWJsZSBieSB0aGF0IG5hbWUgXCIke25hbWV9XCIgaW46ICR7dGFibGVOYW1lcy5qb2luKFwiLCBcIil9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBsYXN0SW5zZXJ0SUQoKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5xdWVyeShcIlNFTEVDVCBTQ09QRV9JREVOVElUWSgpIEFTIGxhc3RfaW5zZXJ0X2lkXCIpXG4gICAgY29uc3QgbGFzdEluc2VydElEID0gZGlnZyhyZXN1bHQsIDAsIFwibGFzdF9pbnNlcnRfaWRcIilcblxuICAgIGlmIChsYXN0SW5zZXJ0SUQgPT09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGdldCB0aGUgbGFzdCBpbnNlcnRlZCBJRFwiKVxuXG4gICAgcmV0dXJuIGxhc3RJbnNlcnRJRFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtPcHRpb25zfSAqL1xuICBvcHRpb25zKCkge1xuICAgIGlmICghdGhpcy5fb3B0aW9ucykgdGhpcy5fb3B0aW9ucyA9IG5ldyBPcHRpb25zKHtkcml2ZXI6IHRoaXN9KVxuXG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnNcbiAgfVxuXG4gIGFzeW5jIF9zdGFydFRyYW5zYWN0aW9uQWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5jb25uZWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBjb25uZWN0aW9uXCIpXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbikgdGhyb3cgbmV3IEVycm9yKFwiQSB0cmFuc2FjdGlvbiBpcyBhbHJlYWR5IHJ1bm5pbmdcIilcblxuICAgIHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbiA9IG5ldyBtc3NxbC5UcmFuc2FjdGlvbih0aGlzLmNvbm5lY3Rpb24pXG5cbiAgICBhd2FpdCB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24uYmVnaW4oKVxuICB9XG5cbiAgYXN5bmMgX2NvbW1pdFRyYW5zYWN0aW9uQWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJBIHRyYW5zYWN0aW9uIGlzbid0IHJ1bm5pbmdcIilcblxuICAgIGF3YWl0IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5jb21taXQoKVxuICAgIHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbiA9IG51bGxcbiAgfVxuXG4gIGFzeW5jIF9yb2xsYmFja1RyYW5zYWN0aW9uQWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJBIHRyYW5zYWN0aW9uIGlzbid0IHJ1bm5pbmdcIilcblxuICAgIGF3YWl0IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5yb2xsYmFjaygpXG5cbiAgICB0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24gPSBudWxsXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNhdmVQb2ludE5hbWVcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBfc3RhcnRTYXZlUG9pbnRBY3Rpb24oc2F2ZVBvaW50TmFtZSkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoYFNBVkUgVFJBTlNBQ1RJT04gWyR7c2F2ZVBvaW50TmFtZX1dYClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2F2ZVBvaW50TmFtZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIF9yZWxlYXNlU2F2ZVBvaW50QWN0aW9uKHNhdmVQb2ludE5hbWUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIC8vIERvIG5vdGhpbmcgaW4gTVMtU1FMLlxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzYXZlUG9pbnROYW1lXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgYXN5bmMgX3JvbGxiYWNrU2F2ZVBvaW50QWN0aW9uKHNhdmVQb2ludE5hbWUpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5KGBST0xMQkFDSyBUUkFOU0FDVElPTiBbJHtzYXZlUG9pbnROYW1lfV1gKVxuICB9XG5cbiAgZ2VuZXJhdGVTYXZlUG9pbnROYW1lKCkge1xuICAgIHJldHVybiBgc3Ake25ldyBVVUlEKDQpLmZvcm1hdCgpLnJlcGxhY2VBbGwoXCItXCIsIFwiXCIpfWAuc3Vic3RyaW5nKDAsIDMyKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5VcGRhdGVTcWxBcmdzVHlwZX0gYXJnc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgdXBkYXRlU3FsKHtjb25kaXRpb25zLCBkYXRhLCB0YWJsZU5hbWV9KSB7XG4gICAgY29uc3QgdXBkYXRlID0gbmV3IFVwZGF0ZSh7Y29uZGl0aW9ucywgZGF0YSwgZHJpdmVyOiB0aGlzLCB0YWJsZU5hbWV9KVxuXG4gICAgcmV0dXJuIHVwZGF0ZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nIHwgbnVsbD59XG4gICAqL1xuICBhc3luYyBzdHJ1Y3R1cmVTcWwoKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBTdHJ1Y3R1cmVTcWwoe2RyaXZlcjogdGhpc30pLnRvU3FsKClcbiAgfVxufVxuIl19
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvZHJpdmVycy9tc3NxbC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxVQUFVLE1BQU0sc0JBQXNCLENBQUE7QUFDN0MsT0FBTyxJQUFJLE1BQU0sWUFBWSxDQUFBO0FBQzdCLE9BQU8sY0FBYyxNQUFNLDBCQUEwQixDQUFBO0FBQ3JELE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sV0FBVyxNQUFNLHVCQUF1QixDQUFBO0FBQy9DLE9BQU8sTUFBTSxNQUFNLGlCQUFpQixDQUFBO0FBQ3BDLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFBO0FBQzNDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sbUJBQW1CLENBQUE7QUFDNUMsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxZQUFZLE1BQU0sb0JBQW9CLENBQUE7QUFDN0MsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRTVCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sNkJBQThCLFNBQVEsSUFBSTtJQUM3RCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBRXpDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxV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RUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFDLENBQUMsQ0FBQTtRQUV0RSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixPQUFPLE1BQU0sSUFBSSxZQUFZLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN2RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEFsdGVyVGFibGUgZnJvbSBcIi4vc3FsL2FsdGVyLXRhYmxlLmpzXCJcbmltcG9ydCBCYXNlIGZyb20gXCIuLi9iYXNlLmpzXCJcbmltcG9ydCBDcmVhdGVEYXRhYmFzZSBmcm9tIFwiLi9zcWwvY3JlYXRlLWRhdGFiYXNlLmpzXCJcbmltcG9ydCBDcmVhdGVJbmRleCBmcm9tIFwiLi9zcWwvY3JlYXRlLWluZGV4LmpzXCJcbmltcG9ydCBDcmVhdGVUYWJsZSBmcm9tIFwiLi9zcWwvY3JlYXRlLXRhYmxlLmpzXCJcbmltcG9ydCBEZWxldGUgZnJvbSBcIi4vc3FsL2RlbGV0ZS5qc1wiXG5pbXBvcnQgRHJvcFRhYmxlIGZyb20gXCIuL3NxbC9kcm9wLXRhYmxlLmpzXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgZXNjYXBlU3RyaW5nIGZyb20gXCJzcWwtZXNjYXBlLXN0cmluZ1wiXG5pbXBvcnQgSW5zZXJ0IGZyb20gXCIuL3NxbC9pbnNlcnQuanNcIlxuaW1wb3J0IE9wdGlvbnMgZnJvbSBcIi4vb3B0aW9ucy5qc1wiXG5pbXBvcnQgbXNzcWwgZnJvbSBcIm1zc3FsXCJcbmltcG9ydCBRdWVyeVBhcnNlciBmcm9tIFwiLi9xdWVyeS1wYXJzZXIuanNcIlxuaW1wb3J0IFRhYmxlIGZyb20gXCIuL3RhYmxlLmpzXCJcbmltcG9ydCBTdHJ1Y3R1cmVTcWwgZnJvbSBcIi4vc3RydWN0dXJlLXNxbC5qc1wiXG5pbXBvcnQgVXBkYXRlIGZyb20gXCIuL3NxbC91cGRhdGUuanNcIlxuaW1wb3J0IFVVSUQgZnJvbSBcInB1cmUtdXVpZFwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlRHJpdmVyc01zc3FsIGV4dGVuZHMgQmFzZXtcbiAgYXN5bmMgY29ubmVjdCgpIHtcbiAgICBjb25zdCBhcmdzID0gdGhpcy5nZXRBcmdzKClcbiAgICBjb25zdCBzcWxDb25maWcgPSBkaWdnKGFyZ3MsIFwic3FsQ29uZmlnXCIpXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IG1zc3FsLkNvbm5lY3Rpb25Qb29sKHNxbENvbmZpZylcbiAgICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbi5jb25uZWN0KClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gUmUtdGhyb3cgdG8gZml4IHVudXNlYWJsZSBzdGFjayB0cmFjZS5cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgY29ubmVjdCB0byBkYXRhYmFzZTogJHtlcnJvci5tZXNzYWdlfWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGNvbm5lY3QgdG8gZGF0YWJhc2U6ICR7ZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb24/LmNsb3NlKClcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uLy4uL3RhYmxlLWRhdGEvaW5kZXguanNcIikuZGVmYXVsdH0gdGFibGVEYXRhIC0gVGFibGUgZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBhbHRlclRhYmxlU1FMcyh0YWJsZURhdGEpIHtcbiAgICBjb25zdCBhbHRlckFyZ3MgPSB7dGFibGVEYXRhLCBkcml2ZXI6IHRoaXN9XG4gICAgY29uc3QgYWx0ZXJUYWJsZSA9IG5ldyBBbHRlclRhYmxlKGFsdGVyQXJncylcblxuICAgIHJldHVybiBhd2FpdCBhbHRlclRhYmxlLnRvU1FMcygpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc10gLSBPcHRpb25zIG9iamVjdC5cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pZk5vdEV4aXN0c10gLSBXaGV0aGVyIGlmIG5vdCBleGlzdHMuXG4gICAqIEByZXR1cm5zIHtzdHJpbmdbXX0gLSBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGNyZWF0ZURhdGFiYXNlU3FsKGRhdGFiYXNlTmFtZSwgYXJncykge1xuICAgIGNvbnN0IGNyZWF0ZUFyZ3MgPSBPYmplY3QuYXNzaWduKHtkYXRhYmFzZU5hbWUsIGRyaXZlcjogdGhpc30sIGFyZ3MpXG4gICAgY29uc3QgY3JlYXRlRGF0YWJhc2UgPSBuZXcgQ3JlYXRlRGF0YWJhc2UoY3JlYXRlQXJncylcblxuICAgIHJldHVybiBjcmVhdGVEYXRhYmFzZS50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLkNyZWF0ZUluZGV4U3FsQXJnc30gaW5kZXhEYXRhIC0gSW5kZXggZGF0YS5cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0YXRlbWVudHMuXG4gICAqL1xuICBhc3luYyBjcmVhdGVJbmRleFNRTHMoaW5kZXhEYXRhKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IE9iamVjdC5hc3NpZ24oe2RyaXZlcjogdGhpc30sIGluZGV4RGF0YSlcbiAgICBjb25zdCBjcmVhdGVJbmRleCA9IG5ldyBDcmVhdGVJbmRleChjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZUluZGV4LnRvU1FMcygpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi90YWJsZS1kYXRhL2luZGV4LmpzXCIpLmRlZmF1bHR9IHRhYmxlRGF0YSAtIFRhYmxlIGRhdGEuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ1tdPn0gLSBSZXNvbHZlcyB3aXRoIFNRTCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlVGFibGVTcWwodGFibGVEYXRhKSB7XG4gICAgY29uc3QgY3JlYXRlQXJncyA9IHt0YWJsZURhdGEsIGRyaXZlcjogdGhpcywgaW5kZXhJbkNyZWF0ZVRhYmxlOiBmYWxzZX1cbiAgICBjb25zdCBjcmVhdGVUYWJsZSA9IG5ldyBDcmVhdGVUYWJsZShjcmVhdGVBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZVRhYmxlLnRvU3FsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSAtIFJlc29sdmVzIHdpdGggdGhlIGN1cnJlbnQgZGF0YWJhc2UuXG4gICAqL1xuICBhc3luYyBjdXJyZW50RGF0YWJhc2UoKSB7XG4gICAgY29uc3Qgcm93cyA9IGF3YWl0IHRoaXMucXVlcnkoXCJTRUxFQ1QgREJfTkFNRSgpIEFTIGRiX25hbWVcIilcblxuICAgIHJldHVybiBkaWdnKHJvd3MsIDAsIFwiZGJfbmFtZVwiKVxuICB9XG5cbiAgYXN5bmMgZGlzYWJsZUZvcmVpZ25LZXlzKCkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoXCJFWEVDIHNwX01TZm9yZWFjaHRhYmxlIFxcXCJBTFRFUiBUQUJMRSA/IE5PQ0hFQ0sgQ09OU1RSQUlOVCBhbGxcXFwiXCIpXG4gIH1cblxuICBhc3luYyBlbmFibGVGb3JlaWduS2V5cygpIHtcbiAgICBhd2FpdCB0aGlzLnF1ZXJ5KFwiRVhFQyBzcF9NU2ZvcmVhY2h0YWJsZSBAY29tbWFuZDE9XFxcInByaW50ICc/J1xcXCIsIEBjb21tYW5kMj1cXFwiQUxURVIgVEFCTEUgPyBXSVRIIENIRUNLIENIRUNLIENPTlNUUkFJTlQgYWxsXFxcIlwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgLSBUYWJsZSBuYW1lLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2Jhc2UuanNcIikuRHJvcFRhYmxlU3FsQXJnc1R5cGV9IFthcmdzXSAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmdbXT59IC0gUmVzb2x2ZXMgd2l0aCBTUUwgc3RhdGVtZW50cy5cbiAgICovXG4gIGFzeW5jIGRyb3BUYWJsZVNRTHModGFibGVOYW1lLCBhcmdzID0ge30pIHtcbiAgICBjb25zdCBkcm9wQXJncyA9IE9iamVjdC5hc3NpZ24oe3RhYmxlTmFtZSwgZHJpdmVyOiB0aGlzfSwgYXJncylcbiAgICBjb25zdCBkcm9wVGFibGUgPSBuZXcgRHJvcFRhYmxlKGRyb3BBcmdzKVxuXG4gICAgcmV0dXJuIGF3YWl0IGRyb3BUYWJsZS50b1NRTHMoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHR5cGUuXG4gICAqL1xuICBnZXRUeXBlKCkgeyByZXR1cm4gXCJtc3NxbFwiIH1cblxuICAvKipcbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcHJpbWFyeSBrZXkgdHlwZS5cbiAgICovXG4gIHByaW1hcnlLZXlUeXBlKCkgeyByZXR1cm4gXCJiaWdpbnRcIiB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcWwgLSBTUUwgc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlF1ZXJ5UmVzdWx0VHlwZT59IC0gUmVzb2x2ZXMgd2l0aCB0aGUgcXVlcnkgYWN0dWFsLlxuICAgKi9cbiAgYXN5bmMgX3F1ZXJ5QWN0dWFsKHNxbCkge1xuICAgIGxldCByZXN1bHRcbiAgICBsZXQgcmVxdWVzdCwgdHJpZXMgPSAwXG5cbiAgICBpZiAodGhpcy5fY3VycmVudFRyYW5zYWN0aW9uKSB7XG4gICAgICByZXF1ZXN0ID0gbmV3IG1zc3FsLlJlcXVlc3QodGhpcy5fY3VycmVudFRyYW5zYWN0aW9uKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0ID0gbmV3IG1zc3FsLlJlcXVlc3QodGhpcy5jb25uZWN0aW9uKVxuICAgIH1cblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cmllcysrXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHJlcXVlc3QucXVlcnkoc3FsKVxuICAgICAgICBicmVha1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgZXJyb3IubWVzc2FnZSA9PSBcIk5vIGNvbm5lY3Rpb24gaXMgc3BlY2lmaWVkIGZvciB0aGF0IHJlcXVlc3QuXCIgJiYgdHJpZXMgPD0gMykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJSZWNvbm5lY3RpbmcgdG8gZGF0YWJhc2VcIilcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbm5lY3QoKVxuICAgICAgICAgIC8vIFJldHJ5XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIC8vIFJlLXRocm93IGVycm9yIGJlY2F1c2UgdGhlIHN0YWNrLXRyYWNlIGlzIGJyb2tlbiBhbmQgY2FuJ3QgYmUgdXNlZCBmb3IgYXBwLWRldmVsb3BtZW50LlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUXVlcnkgZmFpbGVkICcke2Vycm9yLm1lc3NhZ2V9JzogJHtzcWx9YClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFF1ZXJ5IGZhaWxlZCAnJHtlcnJvcn0nOiAke3NxbH1gKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC5yZWNvcmRzZXRzWzBdXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi8uLi9xdWVyeS9pbmRleC5qc1wiKS5kZWZhdWx0fSBxdWVyeSAtIFF1ZXJ5IGluc3RhbmNlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICBxdWVyeVRvU3FsKHF1ZXJ5KSB7IHJldHVybiBuZXcgUXVlcnlQYXJzZXIoe3F1ZXJ5fSkudG9TcWwoKSB9XG5cbiAgc2hvdWxkU2V0QXV0b0luY3JlbWVudFdoZW5QcmltYXJ5S2V5KCkgeyByZXR1cm4gdHJ1ZSB9XG4gIHN1cHBvcnRzRGVmYXVsdFByaW1hcnlLZXlVVUlEKCkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWUgLSBWYWx1ZSB0byB1c2UuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGVzY2FwZS5cbiAgICovXG4gIGVzY2FwZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gdGhpcy5fY29udmVydFZhbHVlKHZhbHVlKVxuXG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuXG4gICAgaWYgKHR5cGUgIT0gXCJzdHJpbmdcIikgdmFsdWUgPSBgJHt2YWx1ZX1gXG5cbiAgICBjb25zdCByZXN1bHRXaXRoUXVvdGVzID0gZXNjYXBlU3RyaW5nKHZhbHVlLCBudWxsKVxuICAgIGNvbnN0IHJlc3VsdCA9IHJlc3VsdFdpdGhRdW90ZXMuc3Vic3RyaW5nKDEsIHJlc3VsdFdpdGhRdW90ZXMubGVuZ3RoIC0gMSlcblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVmFsdWUgdG8gdXNlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyfSAtIFRoZSBxdW90ZWQgdmFsdWUuXG4gICAqL1xuICBxdW90ZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gdGhpcy5fY29udmVydFZhbHVlKHZhbHVlKVxuXG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWx1ZVxuXG4gICAgaWYgKHR5cGUgPT0gXCJudW1iZXJcIikgcmV0dXJuIC8qKiBAdHlwZSB7bnVtYmVyfSAqLyAodmFsdWUpXG4gICAgaWYgKHR5cGUgIT0gXCJzdHJpbmdcIikgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG5cbiAgICByZXR1cm4gZXNjYXBlU3RyaW5nKHZhbHVlLCBudWxsKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2x1bW5OYW1lIC0gQ29sdW1uIG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHF1b3RlIGNvbHVtbi5cbiAgICovXG4gIHF1b3RlQ29sdW1uKGNvbHVtbk5hbWUpIHsgcmV0dXJuIHRoaXMub3B0aW9ucygpLnF1b3RlQ29sdW1uTmFtZShjb2x1bW5OYW1lKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBTdHJpbmcuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHF1b3RlIHRhYmxlLlxuICAgKi9cbiAgcXVvdGVUYWJsZShzdHJpbmcpIHsgcmV0dXJuIHRoaXMub3B0aW9ucygpLnF1b3RlVGFibGVOYW1lKHN0cmluZykgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFibGVOYW1lIC0gVGFibGUgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9sZENvbHVtbk5hbWUgLSBQcmV2aW91cyBjb2x1bW4gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld0NvbHVtbk5hbWUgLSBOZXcgY29sdW1uIG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyByZW5hbWVDb2x1bW4odGFibGVOYW1lLCBvbGRDb2x1bW5OYW1lLCBuZXdDb2x1bW5OYW1lKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyeShgRVhFQyBzcF9yZW5hbWUgJHt0aGlzLnF1b3RlKGAke3RhYmxlTmFtZX0uJHtvbGRDb2x1bW5OYW1lfWApfSwgJHt0aGlzLnF1b3RlKG5ld0NvbHVtbk5hbWUpfSwgJ0NPTFVNTidgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5EZWxldGVTcWxBcmdzVHlwZX0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICBkZWxldGVTcWwoe3RhYmxlTmFtZSwgY29uZGl0aW9uc30pIHtcbiAgICBjb25zdCBkZWxldGVJbnN0cnVjdGlvbiA9IG5ldyBEZWxldGUoe2NvbmRpdGlvbnMsIGRyaXZlcjogdGhpcywgdGFibGVOYW1lfSlcblxuICAgIHJldHVybiBkZWxldGVJbnN0cnVjdGlvbi50b1NxbCgpXG4gIH1cblxuICAvKipcbiAgICogQGFic3RyYWN0XG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5JbnNlcnRTcWxBcmdzVHlwZX0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFNRTCBzdHJpbmcuXG4gICAqL1xuICBpbnNlcnRTcWwoYXJncykge1xuICAgIGNvbnN0IGluc2VydEFyZ3MgPSBPYmplY3QuYXNzaWduKHtkcml2ZXI6IHRoaXN9LCBhcmdzKVxuICAgIGNvbnN0IGluc2VydCA9IG5ldyBJbnNlcnQoaW5zZXJ0QXJncylcblxuICAgIHJldHVybiBpbnNlcnQudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5PGltcG9ydChcIi4uL2Jhc2UtdGFibGUuanNcIikuZGVmYXVsdD4+fSAtIFJlc29sdmVzIHdpdGggdGhlIHRhYmxlcy5cbiAgICovXG4gIGFzeW5jIGdldFRhYmxlcygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KGBTRUxFQ1QgW1RBQkxFX05BTUVdIEZST00gW0lORk9STUFUSU9OX1NDSEVNQV0uW1RBQkxFU10gV0hFUkUgW1RBQkxFX0NBVEFMT0ddID0gREJfTkFNRSgpIEFORCBbVEFCTEVfU0NIRU1BXSA9ICdkYm8nYClcbiAgICBjb25zdCB0YWJsZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCByb3cgb2YgcmVzdWx0KSB7XG4gICAgICBjb25zdCB0YWJsZSA9IG5ldyBUYWJsZSh0aGlzLCAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59ICovIChyb3cpKVxuXG4gICAgICB0YWJsZXMucHVzaCh0YWJsZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVzXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy50aHJvd0Vycm9yIC0gV2hldGhlciB0aHJvdyBlcnJvci5cbiAgICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KFwiLi4vYmFzZS10YWJsZS5qc1wiKS5kZWZhdWx0IHwgdW5kZWZpbmVkPn0gLSBSZXNvbHZlcyB3aXRoIHRoZSB0YWJsZSBieSBuYW1lLlxuICAgKi9cbiAgYXN5bmMgZ2V0VGFibGVCeU5hbWUobmFtZSwgYXJncykge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucXVlcnkoYFNFTEVDVCBbVEFCTEVfTkFNRV0gRlJPTSBbSU5GT1JNQVRJT05fU0NIRU1BXS5bVEFCTEVTXSBXSEVSRSBbVEFCTEVfQ0FUQUxPR10gPSBEQl9OQU1FKCkgQU5EIFtUQUJMRV9TQ0hFTUFdID0gJ2RibycgQU5EIFtUQUJMRV9OQU1FXSA9ICR7dGhpcy5xdW90ZShuYW1lKX1gKVxuXG4gICAgaWYgKHJlc3VsdFswXSkge1xuICAgICAgcmV0dXJuIG5ldyBUYWJsZSh0aGlzLCAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59ICovIChyZXN1bHRbMF0pKVxuICAgIH1cblxuICAgIGlmIChhcmdzPy50aHJvd0Vycm9yICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgdGFibGVzID0gYXdhaXQgdGhpcy5nZXRUYWJsZXMoKVxuICAgICAgY29uc3QgdGFibGVOYW1lcyA9IHRhYmxlcy5tYXAoKHRhYmxlKSA9PiB0YWJsZS5nZXROYW1lKCkpXG5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGRuJ3QgZmluZCBhIHRhYmxlIGJ5IHRoYXQgbmFtZSBcIiR7bmFtZX1cIiBpbjogJHt0YWJsZU5hbWVzLmpvaW4oXCIsIFwiKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGxhc3RJbnNlcnRJRCgpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnF1ZXJ5KFwiU0VMRUNUIFNDT1BFX0lERU5USVRZKCkgQVMgbGFzdF9pbnNlcnRfaWRcIilcbiAgICBjb25zdCBsYXN0SW5zZXJ0SUQgPSBkaWdnKHJlc3VsdCwgMCwgXCJsYXN0X2luc2VydF9pZFwiKVxuXG4gICAgaWYgKGxhc3RJbnNlcnRJRCA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZ2V0IHRoZSBsYXN0IGluc2VydGVkIElEXCIpXG5cbiAgICByZXR1cm4gbGFzdEluc2VydElEXG4gIH1cblxuICAvKiogQHJldHVybnMge09wdGlvbnN9IC0gVGhlIG9wdGlvbnMgb3B0aW9ucy4gICovXG4gIG9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLl9vcHRpb25zKSB0aGlzLl9vcHRpb25zID0gbmV3IE9wdGlvbnMoe2RyaXZlcjogdGhpc30pXG5cbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uc1xuICB9XG5cbiAgYXN5bmMgX3N0YXJ0VHJhbnNhY3Rpb25BY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3Rpb24pIHRocm93IG5ldyBFcnJvcihcIk5vIGNvbm5lY3Rpb25cIilcbiAgICBpZiAodGhpcy5fY3VycmVudFRyYW5zYWN0aW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJBIHRyYW5zYWN0aW9uIGlzIGFscmVhZHkgcnVubmluZ1wiKVxuXG4gICAgdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uID0gbmV3IG1zc3FsLlRyYW5zYWN0aW9uKHRoaXMuY29ubmVjdGlvbilcblxuICAgIGF3YWl0IHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbi5iZWdpbigpXG4gIH1cblxuICBhc3luYyBfY29tbWl0VHJhbnNhY3Rpb25BY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24pIHRocm93IG5ldyBFcnJvcihcIkEgdHJhbnNhY3Rpb24gaXNuJ3QgcnVubmluZ1wiKVxuXG4gICAgYXdhaXQgdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uLmNvbW1pdCgpXG4gICAgdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uID0gbnVsbFxuICB9XG5cbiAgYXN5bmMgX3JvbGxiYWNrVHJhbnNhY3Rpb25BY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLl9jdXJyZW50VHJhbnNhY3Rpb24pIHRocm93IG5ldyBFcnJvcihcIkEgdHJhbnNhY3Rpb24gaXNuJ3QgcnVubmluZ1wiKVxuXG4gICAgYXdhaXQgdGhpcy5fY3VycmVudFRyYW5zYWN0aW9uLnJvbGxiYWNrKClcblxuICAgIHRoaXMuX2N1cnJlbnRUcmFuc2FjdGlvbiA9IG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2F2ZVBvaW50TmFtZSAtIFNhdmUgcG9pbnQgbmFtZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIF9zdGFydFNhdmVQb2ludEFjdGlvbihzYXZlUG9pbnROYW1lKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyeShgU0FWRSBUUkFOU0FDVElPTiBbJHtzYXZlUG9pbnROYW1lfV1gKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzYXZlUG9pbnROYW1lIC0gU2F2ZSBwb2ludCBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgX3JlbGVhc2VTYXZlUG9pbnRBY3Rpb24oc2F2ZVBvaW50TmFtZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgLy8gRG8gbm90aGluZyBpbiBNUy1TUUwuXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNhdmVQb2ludE5hbWUgLSBTYXZlIHBvaW50IG5hbWUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyBfcm9sbGJhY2tTYXZlUG9pbnRBY3Rpb24oc2F2ZVBvaW50TmFtZSkge1xuICAgIGF3YWl0IHRoaXMucXVlcnkoYFJPTExCQUNLIFRSQU5TQUNUSU9OIFske3NhdmVQb2ludE5hbWV9XWApXG4gIH1cblxuICBnZW5lcmF0ZVNhdmVQb2ludE5hbWUoKSB7XG4gICAgcmV0dXJuIGBzcCR7bmV3IFVVSUQoNCkuZm9ybWF0KCkucmVwbGFjZUFsbChcIi1cIiwgXCJcIil9YC5zdWJzdHJpbmcoMCwgMzIpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9iYXNlLmpzXCIpLlVwZGF0ZVNxbEFyZ3NUeXBlfSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gU1FMIHN0cmluZy5cbiAgICovXG4gIHVwZGF0ZVNxbCh7Y29uZGl0aW9ucywgZGF0YSwgdGFibGVOYW1lfSkge1xuICAgIGNvbnN0IHVwZGF0ZSA9IG5ldyBVcGRhdGUoe2NvbmRpdGlvbnMsIGRhdGEsIGRyaXZlcjogdGhpcywgdGFibGVOYW1lfSlcblxuICAgIHJldHVybiB1cGRhdGUudG9TcWwoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZyB8IG51bGw+fSAtIFJlc29sdmVzIHdpdGggU1FMIHN0cmluZy5cbiAgICovXG4gIGFzeW5jIHN0cnVjdHVyZVNxbCgpIHtcbiAgICByZXR1cm4gYXdhaXQgbmV3IFN0cnVjdHVyZVNxbCh7ZHJpdmVyOiB0aGlzfSkudG9TcWwoKVxuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOptions {
|
|
2
2
|
/**
|
|
3
|
-
* @param {object} args
|
|
4
|
-
* @param {import("../base.js").default} args.driver
|
|
3
|
+
* @param {object} args - Options object.
|
|
4
|
+
* @param {import("../base.js").default} args.driver - Database driver instance.
|
|
5
5
|
*/
|
|
6
6
|
constructor({ driver }: {
|
|
7
7
|
driver: import("../base.js").default;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import QueryParserOptions from "../../query-parser/options.js";
|
|
3
3
|
export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOptions {
|
|
4
4
|
/**
|
|
5
|
-
* @param {object} args
|
|
6
|
-
* @param {import("../base.js").default} args.driver
|
|
5
|
+
* @param {object} args - Options object.
|
|
6
|
+
* @param {import("../base.js").default} args.driver - Database driver instance.
|
|
7
7
|
*/
|
|
8
8
|
constructor({ driver }) {
|
|
9
9
|
const options = {
|
|
@@ -16,8 +16,8 @@ export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOpt
|
|
|
16
16
|
super(options);
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* @param {
|
|
20
|
-
* @returns {number | string}
|
|
19
|
+
* @param {unknown} string - String.
|
|
20
|
+
* @returns {number | string} - The quote.
|
|
21
21
|
*/
|
|
22
22
|
quote(string) {
|
|
23
23
|
if (!this.driver)
|
|
@@ -25,8 +25,8 @@ export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOpt
|
|
|
25
25
|
return this.driver.quote(string);
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* @param {string} string
|
|
29
|
-
* @returns {string}
|
|
28
|
+
* @param {string} string - String.
|
|
29
|
+
* @returns {string} - The quote column name.
|
|
30
30
|
*/
|
|
31
31
|
quoteColumnName(string) {
|
|
32
32
|
if (string.includes("[") || string.includes("]"))
|
|
@@ -34,8 +34,8 @@ export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOpt
|
|
|
34
34
|
return `[${string}]`;
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
|
-
* @param {string} databaseName
|
|
38
|
-
* @returns {string}
|
|
37
|
+
* @param {string} databaseName - Database name.
|
|
38
|
+
* @returns {string} - The quote database name.
|
|
39
39
|
*/
|
|
40
40
|
quoteDatabaseName(databaseName) {
|
|
41
41
|
if (typeof databaseName != "string")
|
|
@@ -45,8 +45,8 @@ export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOpt
|
|
|
45
45
|
return `[${databaseName}]`;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
|
-
* @param {string} string
|
|
49
|
-
* @returns {string}
|
|
48
|
+
* @param {string} string - String.
|
|
49
|
+
* @returns {string} - The quote index name.
|
|
50
50
|
*/
|
|
51
51
|
quoteIndexName(string) {
|
|
52
52
|
if (string.includes("[") || string.includes("]"))
|
|
@@ -54,8 +54,8 @@ export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOpt
|
|
|
54
54
|
return `[${string}]`;
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
|
-
* @param {string} string
|
|
58
|
-
* @returns {string}
|
|
57
|
+
* @param {string} string - String.
|
|
58
|
+
* @returns {string} - The quote table name.
|
|
59
59
|
*/
|
|
60
60
|
quoteTableName(string) {
|
|
61
61
|
if (string.includes("[") || string.includes("]"))
|
|
@@ -63,4 +63,4 @@ export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOpt
|
|
|
63
63
|
return `[${string}]`;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9kcml2ZXJzL21zc3FsL29wdGlvbnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sa0JBQWtCLE1BQU0sK0JBQStCLENBQUE7QUFFOUQsTUFBTSxDQUFDLE9BQU8sT0FBTyxvQ0FBcUMsU0FBUSxrQkFBa0I7SUFDbEY7OztPQUdHO0lBQ0gsWUFBWSxFQUFDLE1BQU0sRUFBQztRQUNsQixNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU07WUFDTixXQUFXLEVBQUUsSUFBSTtZQUNqQixVQUFVLEVBQUUsSUFBSTtZQUNoQixXQUFXLEVBQUUsR0FBRztZQUNoQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFBO1FBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsTUFBTTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtRQUVuRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsTUFBTTtRQUNwQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBRXJILE9BQU8sSUFBSSxNQUFNLEdBQUcsQ0FBQTtJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLENBQUMsWUFBWTtRQUM1QixJQUFJLE9BQU8sWUFBWSxJQUFJLFFBQVE7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxZQUFZLEVBQUUsQ0FBQyxDQUFBO1FBQ3BHLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLFlBQVksRUFBRSxDQUFDLENBQUE7UUFFekksT0FBTyxJQUFJLFlBQVksR0FBRyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsTUFBTTtRQUNuQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBRXBILE9BQU8sSUFBSSxNQUFNLEdBQUcsQ0FBQTtJQUN0QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLE1BQU07UUFDbkIsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUVwSCxPQUFPLElBQUksTUFBTSxHQUFHLENBQUE7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBRdWVyeVBhcnNlck9wdGlvbnMgZnJvbSBcIi4uLy4uL3F1ZXJ5LXBhcnNlci9vcHRpb25zLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VEcml2ZXJzTXNzcWxPcHRpb25zIGV4dGVuZHMgUXVlcnlQYXJzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vYmFzZS5qc1wiKS5kZWZhdWx0fSBhcmdzLmRyaXZlciAtIERhdGFiYXNlIGRyaXZlciBpbnN0YW5jZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkcml2ZXJ9KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGRyaXZlcixcbiAgICAgIGNvbHVtblF1b3RlOiBcIlxcXCJcIixcbiAgICAgIGluZGV4UXVvdGU6IFwiXFxcIlwiLFxuICAgICAgc3RyaW5nUXVvdGU6IFwiJ1wiLFxuICAgICAgdGFibGVRdW90ZTogXCJcXFwiXCJcbiAgICB9XG5cbiAgICBzdXBlcihvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gc3RyaW5nIC0gU3RyaW5nLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyIHwgc3RyaW5nfSAtIFRoZSBxdW90ZS5cbiAgICovXG4gIHF1b3RlKHN0cmluZykge1xuICAgIGlmICghdGhpcy5kcml2ZXIpIHRocm93IG5ldyBFcnJvcihcIkRyaXZlciBub3Qgc2V0XCIpXG5cbiAgICByZXR1cm4gdGhpcy5kcml2ZXIucXVvdGUoc3RyaW5nKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBTdHJpbmcuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHF1b3RlIGNvbHVtbiBuYW1lLlxuICAgKi9cbiAgcXVvdGVDb2x1bW5OYW1lKHN0cmluZykge1xuICAgIGlmIChzdHJpbmcuaW5jbHVkZXMoXCJbXCIpIHx8IHN0cmluZy5pbmNsdWRlcyhcIl1cIikpIHRocm93IG5ldyBFcnJvcihgUG9zc2libGUgU1FMIGluamVjdGlvbiBpbiBjb2x1bW4gbmFtZTogJHtzdHJpbmd9YClcblxuICAgIHJldHVybiBgWyR7c3RyaW5nfV1gXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZSAtIERhdGFiYXNlIG5hbWUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIHF1b3RlIGRhdGFiYXNlIG5hbWUuXG4gICAqL1xuICBxdW90ZURhdGFiYXNlTmFtZShkYXRhYmFzZU5hbWUpIHtcbiAgICBpZiAodHlwZW9mIGRhdGFiYXNlTmFtZSAhPSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YWJhc2UgbmFtZSBnaXZlbjogJHtkYXRhYmFzZU5hbWV9YClcbiAgICBpZiAoZGF0YWJhc2VOYW1lLmluY2x1ZGVzKFwiW1wiKSB8fCBkYXRhYmFzZU5hbWUuaW5jbHVkZXMoXCJdXCIpKSB0aHJvdyBuZXcgRXJyb3IoYFBvc3NpYmxlIFNRTCBpbmplY3Rpb24gaW4gZGF0YWJhc2UgbmFtZTogJHtkYXRhYmFzZU5hbWV9YClcblxuICAgIHJldHVybiBgWyR7ZGF0YWJhc2VOYW1lfV1gXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIFN0cmluZy5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgcXVvdGUgaW5kZXggbmFtZS5cbiAgICovXG4gIHF1b3RlSW5kZXhOYW1lKHN0cmluZykge1xuICAgIGlmIChzdHJpbmcuaW5jbHVkZXMoXCJbXCIpIHx8IHN0cmluZy5pbmNsdWRlcyhcIl1cIikpIHRocm93IG5ldyBFcnJvcihgUG9zc2libGUgU1FMIGluamVjdGlvbiBpbiBpbmRleCBuYW1lOiAke3N0cmluZ31gKVxuXG4gICAgcmV0dXJuIGBbJHtzdHJpbmd9XWBcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIC0gU3RyaW5nLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBxdW90ZSB0YWJsZSBuYW1lLlxuICAgKi9cbiAgcXVvdGVUYWJsZU5hbWUoc3RyaW5nKSB7XG4gICAgaWYgKHN0cmluZy5pbmNsdWRlcyhcIltcIikgfHwgc3RyaW5nLmluY2x1ZGVzKFwiXVwiKSkgdGhyb3cgbmV3IEVycm9yKGBQb3NzaWJsZSBTUUwgaW5qZWN0aW9uIGluIHRhYmxlIG5hbWU6ICR7c3RyaW5nfWApXG5cbiAgICByZXR1cm4gYFske3N0cmluZ31dYFxuICB9XG59XG4iXX0=
|