@uql/core 3.1.2 → 3.1.4
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/CHANGELOG.md +1 -1
- package/README.md +23 -28
- package/dist/browser/cc-BEf4wTUm.js +535 -0
- package/dist/browser/cc-BEf4wTUm.js.map +1 -0
- package/dist/browser/http/bus.d.ts +1 -0
- package/dist/browser/http/bus.d.ts.map +1 -0
- package/dist/browser/http/bus.js +1 -1
- package/dist/browser/http/bus.js.map +1 -0
- package/dist/browser/http/http.d.ts +1 -0
- package/dist/browser/http/http.d.ts.map +1 -0
- package/dist/browser/http/http.js +1 -1
- package/dist/browser/http/http.js.map +1 -0
- package/dist/browser/http/index.d.ts +1 -0
- package/dist/browser/http/index.d.ts.map +1 -0
- package/dist/browser/http/index.js +1 -1
- package/dist/browser/http/index.js.map +1 -0
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/options.d.ts +1 -0
- package/dist/browser/options.d.ts.map +1 -0
- package/dist/browser/options.js +1 -1
- package/dist/browser/options.js.map +1 -0
- package/dist/browser/querier/genericClientRepository.d.ts +1 -0
- package/dist/browser/querier/genericClientRepository.d.ts.map +1 -0
- package/dist/browser/querier/genericClientRepository.js +1 -1
- package/dist/browser/querier/genericClientRepository.js.map +1 -0
- package/dist/browser/querier/httpQuerier.d.ts +1 -0
- package/dist/browser/querier/httpQuerier.d.ts.map +1 -0
- package/dist/browser/querier/httpQuerier.js +1 -1
- package/dist/browser/querier/httpQuerier.js.map +1 -0
- package/dist/browser/querier/index.d.ts +1 -0
- package/dist/browser/querier/index.d.ts.map +1 -0
- package/dist/browser/querier/index.js +1 -1
- package/dist/browser/querier/index.js.map +1 -0
- package/dist/browser/querier/querier.util.d.ts +1 -0
- package/dist/browser/querier/querier.util.d.ts.map +1 -0
- package/dist/browser/querier/querier.util.js +1 -1
- package/dist/browser/querier/querier.util.js.map +1 -0
- package/dist/browser/type/clientQuerier.d.ts +1 -0
- package/dist/browser/type/clientQuerier.d.ts.map +1 -0
- package/dist/browser/type/clientQuerier.js +1 -1
- package/dist/browser/type/clientQuerier.js.map +1 -0
- package/dist/browser/type/clientQuerierPool.d.ts +1 -0
- package/dist/browser/type/clientQuerierPool.d.ts.map +1 -0
- package/dist/browser/type/clientQuerierPool.js +1 -1
- package/dist/browser/type/clientQuerierPool.js.map +1 -0
- package/dist/browser/type/clientRepository.d.ts +1 -0
- package/dist/browser/type/clientRepository.d.ts.map +1 -0
- package/dist/browser/type/clientRepository.js +1 -1
- package/dist/browser/type/clientRepository.js.map +1 -0
- package/dist/browser/type/index.d.ts +1 -0
- package/dist/browser/type/index.d.ts.map +1 -0
- package/dist/browser/type/index.js +1 -1
- package/dist/browser/type/index.js.map +1 -0
- package/dist/browser/type/request.d.ts +1 -0
- package/dist/browser/type/request.d.ts.map +1 -0
- package/dist/browser/type/request.js +1 -1
- package/dist/browser/type/request.js.map +1 -0
- package/dist/browser/uql-browser.min.js +94 -83
- package/dist/browser/uql-browser.min.js.map +1 -1
- package/dist/dialect/abstractDialect.d.ts +1 -0
- package/dist/dialect/abstractDialect.d.ts.map +1 -0
- package/dist/dialect/abstractDialect.js +1 -1
- package/dist/dialect/abstractDialect.js.map +1 -0
- package/dist/dialect/abstractSqlDialect.d.ts +1 -0
- package/dist/dialect/abstractSqlDialect.d.ts.map +1 -0
- package/dist/dialect/abstractSqlDialect.js +1 -1
- package/dist/dialect/abstractSqlDialect.js.map +1 -0
- package/dist/dialect/index.d.ts +1 -0
- package/dist/dialect/index.d.ts.map +1 -0
- package/dist/dialect/index.js +1 -1
- package/dist/dialect/index.js.map +1 -0
- package/dist/dialect/queryContext.d.ts +1 -0
- package/dist/dialect/queryContext.d.ts.map +1 -0
- package/dist/dialect/queryContext.js +1 -1
- package/dist/dialect/queryContext.js.map +1 -0
- package/dist/entity/decorator/definition.d.ts +1 -0
- package/dist/entity/decorator/definition.d.ts.map +1 -0
- package/dist/entity/decorator/definition.js +1 -2
- package/dist/entity/decorator/definition.js.map +1 -0
- package/dist/entity/decorator/entity.d.ts +1 -0
- package/dist/entity/decorator/entity.d.ts.map +1 -0
- package/dist/entity/decorator/entity.js +1 -1
- package/dist/entity/decorator/entity.js.map +1 -0
- package/dist/entity/decorator/field.d.ts +1 -0
- package/dist/entity/decorator/field.d.ts.map +1 -0
- package/dist/entity/decorator/field.js +1 -1
- package/dist/entity/decorator/field.js.map +1 -0
- package/dist/entity/decorator/id.d.ts +1 -0
- package/dist/entity/decorator/id.d.ts.map +1 -0
- package/dist/entity/decorator/id.js +1 -1
- package/dist/entity/decorator/id.js.map +1 -0
- package/dist/entity/decorator/index.d.ts +1 -0
- package/dist/entity/decorator/index.d.ts.map +1 -0
- package/dist/entity/decorator/index.js +1 -1
- package/dist/entity/decorator/index.js.map +1 -0
- package/dist/entity/decorator/relation.d.ts +1 -0
- package/dist/entity/decorator/relation.d.ts.map +1 -0
- package/dist/entity/decorator/relation.js +1 -1
- package/dist/entity/decorator/relation.js.map +1 -0
- package/dist/entity/index.d.ts +1 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/entity/index.js +1 -1
- package/dist/entity/index.js.map +1 -0
- package/dist/express/index.d.ts +1 -0
- package/dist/express/index.d.ts.map +1 -0
- package/dist/express/index.js +1 -1
- package/dist/express/index.js.map +1 -0
- package/dist/express/querierMiddleware.d.ts +1 -0
- package/dist/express/querierMiddleware.d.ts.map +1 -0
- package/dist/express/querierMiddleware.js +1 -1
- package/dist/express/querierMiddleware.js.map +1 -0
- package/dist/express/query.util.d.ts +1 -0
- package/dist/express/query.util.d.ts.map +1 -0
- package/dist/express/query.util.js +1 -1
- package/dist/express/query.util.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -0
- package/dist/maria/index.d.ts +1 -0
- package/dist/maria/index.d.ts.map +1 -0
- package/dist/maria/index.js +1 -1
- package/dist/maria/index.js.map +1 -0
- package/dist/maria/mariaDialect.d.ts +1 -0
- package/dist/maria/mariaDialect.d.ts.map +1 -0
- package/dist/maria/mariaDialect.js +1 -1
- package/dist/maria/mariaDialect.js.map +1 -0
- package/dist/maria/mariadbQuerier.d.ts +1 -0
- package/dist/maria/mariadbQuerier.d.ts.map +1 -0
- package/dist/maria/mariadbQuerier.js +1 -1
- package/dist/maria/mariadbQuerier.js.map +1 -0
- package/dist/maria/mariadbQuerierPool.d.ts +1 -0
- package/dist/maria/mariadbQuerierPool.d.ts.map +1 -0
- package/dist/maria/mariadbQuerierPool.js +1 -1
- package/dist/maria/mariadbQuerierPool.js.map +1 -0
- package/dist/migrate/cli.d.ts +1 -0
- package/dist/migrate/cli.d.ts.map +1 -0
- package/dist/migrate/cli.js +3 -3
- package/dist/migrate/cli.js.map +1 -0
- package/dist/migrate/generator/index.d.ts +1 -0
- package/dist/migrate/generator/index.d.ts.map +1 -0
- package/dist/migrate/generator/index.js +1 -1
- package/dist/migrate/generator/index.js.map +1 -0
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts +1 -0
- package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -0
- package/dist/migrate/generator/mongoSchemaGenerator.js +1 -1
- package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -0
- package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +1 -0
- package/dist/migrate/generator/mysqlSchemaGenerator.d.ts.map +1 -0
- package/dist/migrate/generator/mysqlSchemaGenerator.js +1 -1
- package/dist/migrate/generator/mysqlSchemaGenerator.js.map +1 -0
- package/dist/migrate/generator/postgresSchemaGenerator.d.ts +1 -0
- package/dist/migrate/generator/postgresSchemaGenerator.d.ts.map +1 -0
- package/dist/migrate/generator/postgresSchemaGenerator.js +1 -1
- package/dist/migrate/generator/postgresSchemaGenerator.js.map +1 -0
- package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +1 -0
- package/dist/migrate/generator/sqliteSchemaGenerator.d.ts.map +1 -0
- package/dist/migrate/generator/sqliteSchemaGenerator.js +1 -1
- package/dist/migrate/generator/sqliteSchemaGenerator.js.map +1 -0
- package/dist/migrate/index.d.ts +1 -0
- package/dist/migrate/index.d.ts.map +1 -0
- package/dist/migrate/index.js +1 -1
- package/dist/migrate/index.js.map +1 -0
- package/dist/migrate/introspection/index.d.ts +1 -0
- package/dist/migrate/introspection/index.d.ts.map +1 -0
- package/dist/migrate/introspection/index.js +1 -1
- package/dist/migrate/introspection/index.js.map +1 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts +1 -0
- package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/mongoIntrospector.js +1 -1
- package/dist/migrate/introspection/mongoIntrospector.js.map +1 -0
- package/dist/migrate/introspection/mysqlIntrospector.d.ts +1 -0
- package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/mysqlIntrospector.js +1 -1
- package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -0
- package/dist/migrate/introspection/postgresIntrospector.d.ts +1 -0
- package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/postgresIntrospector.js +1 -1
- package/dist/migrate/introspection/postgresIntrospector.js.map +1 -0
- package/dist/migrate/introspection/sqliteIntrospector.d.ts +1 -0
- package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -0
- package/dist/migrate/introspection/sqliteIntrospector.js +1 -1
- package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -0
- package/dist/migrate/migrator.d.ts +1 -0
- package/dist/migrate/migrator.d.ts.map +1 -0
- package/dist/migrate/migrator.js +1 -1
- package/dist/migrate/migrator.js.map +1 -0
- package/dist/migrate/schemaGenerator.d.ts +1 -0
- package/dist/migrate/schemaGenerator.d.ts.map +1 -0
- package/dist/migrate/schemaGenerator.js +1 -1
- package/dist/migrate/schemaGenerator.js.map +1 -0
- package/dist/migrate/storage/databaseStorage.d.ts +1 -0
- package/dist/migrate/storage/databaseStorage.d.ts.map +1 -0
- package/dist/migrate/storage/databaseStorage.js +1 -1
- package/dist/migrate/storage/databaseStorage.js.map +1 -0
- package/dist/migrate/storage/index.d.ts +1 -0
- package/dist/migrate/storage/index.d.ts.map +1 -0
- package/dist/migrate/storage/index.js +1 -1
- package/dist/migrate/storage/index.js.map +1 -0
- package/dist/migrate/storage/jsonStorage.d.ts +1 -0
- package/dist/migrate/storage/jsonStorage.d.ts.map +1 -0
- package/dist/migrate/storage/jsonStorage.js +1 -1
- package/dist/migrate/storage/jsonStorage.js.map +1 -0
- package/dist/migrate/type.d.ts +1 -0
- package/dist/migrate/type.d.ts.map +1 -0
- package/dist/migrate/type.js +1 -1
- package/dist/migrate/type.js.map +1 -0
- package/dist/mongo/index.d.ts +1 -0
- package/dist/mongo/index.d.ts.map +1 -0
- package/dist/mongo/index.js +1 -1
- package/dist/mongo/index.js.map +1 -0
- package/dist/mongo/mongoDialect.d.ts +1 -0
- package/dist/mongo/mongoDialect.d.ts.map +1 -0
- package/dist/mongo/mongoDialect.js +1 -1
- package/dist/mongo/mongoDialect.js.map +1 -0
- package/dist/mongo/mongodbQuerier.d.ts +1 -0
- package/dist/mongo/mongodbQuerier.d.ts.map +1 -0
- package/dist/mongo/mongodbQuerier.js +1 -1
- package/dist/mongo/mongodbQuerier.js.map +1 -0
- package/dist/mongo/mongodbQuerierPool.d.ts +1 -0
- package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -0
- package/dist/mongo/mongodbQuerierPool.js +1 -1
- package/dist/mongo/mongodbQuerierPool.js.map +1 -0
- package/dist/mysql/index.d.ts +1 -0
- package/dist/mysql/index.d.ts.map +1 -0
- package/dist/mysql/index.js +1 -1
- package/dist/mysql/index.js.map +1 -0
- package/dist/mysql/mysql2Querier.d.ts +1 -0
- package/dist/mysql/mysql2Querier.d.ts.map +1 -0
- package/dist/mysql/mysql2Querier.js +1 -1
- package/dist/mysql/mysql2Querier.js.map +1 -0
- package/dist/mysql/mysql2QuerierPool.d.ts +1 -0
- package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -0
- package/dist/mysql/mysql2QuerierPool.js +1 -1
- package/dist/mysql/mysql2QuerierPool.js.map +1 -0
- package/dist/mysql/mysqlDialect.d.ts +1 -0
- package/dist/mysql/mysqlDialect.d.ts.map +1 -0
- package/dist/mysql/mysqlDialect.js +1 -1
- package/dist/mysql/mysqlDialect.js.map +1 -0
- package/dist/namingStrategy/defaultNamingStrategy.d.ts +1 -0
- package/dist/namingStrategy/defaultNamingStrategy.d.ts.map +1 -0
- package/dist/namingStrategy/defaultNamingStrategy.js +1 -1
- package/dist/namingStrategy/defaultNamingStrategy.js.map +1 -0
- package/dist/namingStrategy/index.d.ts +1 -0
- package/dist/namingStrategy/index.d.ts.map +1 -0
- package/dist/namingStrategy/index.js +1 -1
- package/dist/namingStrategy/index.js.map +1 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +1 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts.map +1 -0
- package/dist/namingStrategy/snakeCaseNamingStrategy.js +1 -1
- package/dist/namingStrategy/snakeCaseNamingStrategy.js.map +1 -0
- package/dist/options.d.ts +1 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/options.js +1 -1
- package/dist/options.js.map +1 -0
- package/dist/postgres/index.d.ts +1 -0
- package/dist/postgres/index.d.ts.map +1 -0
- package/dist/postgres/index.js +1 -1
- package/dist/postgres/index.js.map +1 -0
- package/dist/postgres/pgQuerier.d.ts +1 -0
- package/dist/postgres/pgQuerier.d.ts.map +1 -0
- package/dist/postgres/pgQuerier.js +1 -1
- package/dist/postgres/pgQuerier.js.map +1 -0
- package/dist/postgres/pgQuerierPool.d.ts +1 -0
- package/dist/postgres/pgQuerierPool.d.ts.map +1 -0
- package/dist/postgres/pgQuerierPool.js +1 -1
- package/dist/postgres/pgQuerierPool.js.map +1 -0
- package/dist/postgres/postgresDialect.d.ts +1 -0
- package/dist/postgres/postgresDialect.d.ts.map +1 -0
- package/dist/postgres/postgresDialect.js +1 -1
- package/dist/postgres/postgresDialect.js.map +1 -0
- package/dist/querier/abstractQuerier.d.ts +1 -0
- package/dist/querier/abstractQuerier.d.ts.map +1 -0
- package/dist/querier/abstractQuerier.js +1 -1
- package/dist/querier/abstractQuerier.js.map +1 -0
- package/dist/querier/abstractQuerierPool.d.ts +1 -0
- package/dist/querier/abstractQuerierPool.d.ts.map +1 -0
- package/dist/querier/abstractQuerierPool.js +1 -1
- package/dist/querier/abstractQuerierPool.js.map +1 -0
- package/dist/querier/abstractSqlQuerier.d.ts +1 -0
- package/dist/querier/abstractSqlQuerier.d.ts.map +1 -0
- package/dist/querier/abstractSqlQuerier.js +1 -1
- package/dist/querier/abstractSqlQuerier.js.map +1 -0
- package/dist/querier/decorator/index.d.ts +1 -0
- package/dist/querier/decorator/index.d.ts.map +1 -0
- package/dist/querier/decorator/index.js +1 -1
- package/dist/querier/decorator/index.js.map +1 -0
- package/dist/querier/decorator/injectQuerier.d.ts +1 -0
- package/dist/querier/decorator/injectQuerier.d.ts.map +1 -0
- package/dist/querier/decorator/injectQuerier.js +1 -1
- package/dist/querier/decorator/injectQuerier.js.map +1 -0
- package/dist/querier/decorator/serialized.d.ts +1 -0
- package/dist/querier/decorator/serialized.d.ts.map +1 -0
- package/dist/querier/decorator/serialized.js +1 -1
- package/dist/querier/decorator/serialized.js.map +1 -0
- package/dist/querier/decorator/transactional.d.ts +1 -0
- package/dist/querier/decorator/transactional.d.ts.map +1 -0
- package/dist/querier/decorator/transactional.js +1 -1
- package/dist/querier/decorator/transactional.js.map +1 -0
- package/dist/querier/index.d.ts +1 -0
- package/dist/querier/index.d.ts.map +1 -0
- package/dist/querier/index.js +1 -1
- package/dist/querier/index.js.map +1 -0
- package/dist/repository/genericRepository.d.ts +1 -0
- package/dist/repository/genericRepository.d.ts.map +1 -0
- package/dist/repository/genericRepository.js +1 -1
- package/dist/repository/genericRepository.js.map +1 -0
- package/dist/repository/index.d.ts +1 -0
- package/dist/repository/index.d.ts.map +1 -0
- package/dist/repository/index.js +1 -1
- package/dist/repository/index.js.map +1 -0
- package/dist/sqlite/index.d.ts +1 -0
- package/dist/sqlite/index.d.ts.map +1 -0
- package/dist/sqlite/index.js +1 -1
- package/dist/sqlite/index.js.map +1 -0
- package/dist/sqlite/sqliteDialect.d.ts +1 -0
- package/dist/sqlite/sqliteDialect.d.ts.map +1 -0
- package/dist/sqlite/sqliteDialect.js +1 -1
- package/dist/sqlite/sqliteDialect.js.map +1 -0
- package/dist/sqlite/sqliteQuerier.d.ts +1 -0
- package/dist/sqlite/sqliteQuerier.d.ts.map +1 -0
- package/dist/sqlite/sqliteQuerier.js +1 -1
- package/dist/sqlite/sqliteQuerier.js.map +1 -0
- package/dist/sqlite/sqliteQuerierPool.d.ts +1 -0
- package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -0
- package/dist/sqlite/sqliteQuerierPool.js +1 -1
- package/dist/sqlite/sqliteQuerierPool.js.map +1 -0
- package/dist/type/entity.d.ts +1 -0
- package/dist/type/entity.d.ts.map +1 -0
- package/dist/type/entity.js +1 -1
- package/dist/type/entity.js.map +1 -0
- package/dist/type/index.d.ts +1 -0
- package/dist/type/index.d.ts.map +1 -0
- package/dist/type/index.js +1 -1
- package/dist/type/index.js.map +1 -0
- package/dist/type/migration.d.ts +1 -0
- package/dist/type/migration.d.ts.map +1 -0
- package/dist/type/migration.js +1 -1
- package/dist/type/migration.js.map +1 -0
- package/dist/type/namingStrategy.d.ts +1 -0
- package/dist/type/namingStrategy.d.ts.map +1 -0
- package/dist/type/namingStrategy.js +1 -1
- package/dist/type/namingStrategy.js.map +1 -0
- package/dist/type/querier.d.ts +1 -0
- package/dist/type/querier.d.ts.map +1 -0
- package/dist/type/querier.js +1 -1
- package/dist/type/querier.js.map +1 -0
- package/dist/type/querierPool.d.ts +1 -0
- package/dist/type/querierPool.d.ts.map +1 -0
- package/dist/type/querierPool.js +1 -1
- package/dist/type/querierPool.js.map +1 -0
- package/dist/type/query.d.ts +1 -0
- package/dist/type/query.d.ts.map +1 -0
- package/dist/type/query.js +1 -1
- package/dist/type/query.js.map +1 -0
- package/dist/type/repository.d.ts +1 -0
- package/dist/type/repository.d.ts.map +1 -0
- package/dist/type/repository.js +1 -1
- package/dist/type/repository.js.map +1 -0
- package/dist/type/universalQuerier.d.ts +1 -0
- package/dist/type/universalQuerier.d.ts.map +1 -0
- package/dist/type/universalQuerier.js +1 -1
- package/dist/type/universalQuerier.js.map +1 -0
- package/dist/type/utility.d.ts +1 -0
- package/dist/type/utility.d.ts.map +1 -0
- package/dist/type/utility.js +1 -1
- package/dist/type/utility.js.map +1 -0
- package/dist/util/dialect.util.d.ts +1 -0
- package/dist/util/dialect.util.d.ts.map +1 -0
- package/dist/util/dialect.util.js +1 -1
- package/dist/util/dialect.util.js.map +1 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +1 -1
- package/dist/util/index.js.map +1 -0
- package/dist/util/object.util.d.ts +1 -0
- package/dist/util/object.util.d.ts.map +1 -0
- package/dist/util/object.util.js +1 -1
- package/dist/util/object.util.js.map +1 -0
- package/dist/util/raw.d.ts +1 -0
- package/dist/util/raw.d.ts.map +1 -0
- package/dist/util/raw.js +1 -1
- package/dist/util/raw.js.map +1 -0
- package/dist/util/sql.util.d.ts +1 -0
- package/dist/util/sql.util.d.ts.map +1 -0
- package/dist/util/sql.util.js +1 -1
- package/dist/util/sql.util.js.map +1 -0
- package/dist/util/string.util.d.ts +1 -0
- package/dist/util/string.util.d.ts.map +1 -0
- package/dist/util/string.util.js +1 -1
- package/dist/util/string.util.js.map +1 -0
- package/package.json +3 -2
- package/dist/maria/mariaQuerierPool.test.d.ts +0 -5
- package/dist/maria/mariaQuerierPool.test.js +0 -19
- package/dist/maria/mariadbQuerier.test.d.ts +0 -4
- package/dist/maria/mariadbQuerier.test.js +0 -19
- package/dist/migrate/migrator-mongo.test.d.ts +0 -1
- package/dist/migrate/migrator-mongo.test.js +0 -54
- package/dist/migrate/migrator.test.d.ts +0 -1
- package/dist/migrate/migrator.test.js +0 -106
- package/dist/mongo/mongodbQuerier.test.d.ts +0 -1
- package/dist/mongo/mongodbQuerier.test.js +0 -36
- package/dist/mongo/mongodbQuerierPool.test.d.ts +0 -1
- package/dist/mongo/mongodbQuerierPool.test.js +0 -21
- package/dist/mysql/mysql2Querier.test.d.ts +0 -4
- package/dist/mysql/mysql2Querier.test.js +0 -16
- package/dist/mysql/mysql2QuerierPool.test.d.ts +0 -5
- package/dist/mysql/mysql2QuerierPool.test.js +0 -16
- package/dist/postgres/pgQuerier.test.d.ts +0 -4
- package/dist/postgres/pgQuerier.test.js +0 -20
- package/dist/postgres/pgQuerierPool.test.d.ts +0 -5
- package/dist/postgres/pgQuerierPool.test.js +0 -23
- package/dist/querier/abstractQuerier-test.d.ts +0 -45
- package/dist/querier/abstractQuerier-test.js +0 -461
- package/dist/querier/abstractQuerierPool-test.d.ts +0 -9
- package/dist/querier/abstractQuerierPool-test.js +0 -18
- package/dist/querier/abstractSqlQuerier-test.d.ts +0 -9
- package/dist/querier/abstractSqlQuerier-test.js +0 -16
- package/dist/sqlite/sqliteQuerier.test.d.ts +0 -5
- package/dist/sqlite/sqliteQuerier.test.js +0 -19
- package/dist/sqlite/sqliteQuerierPool.test.d.ts +0 -5
- package/dist/sqlite/sqliteQuerierPool.test.js +0 -10
- package/dist/test/entityMock.d.ts +0 -164
- package/dist/test/entityMock.js +0 -554
- package/dist/test/index.d.ts +0 -3
- package/dist/test/index.js +0 -4
- package/dist/test/it.util.d.ts +0 -4
- package/dist/test/it.util.js +0 -55
- package/dist/test/spec.util.d.ts +0 -14
- package/dist/test/spec.util.js +0 -50
|
@@ -1,461 +0,0 @@
|
|
|
1
|
-
import { expect } from 'bun:test';
|
|
2
|
-
import { getEntities } from '../entity/index.js';
|
|
3
|
-
import { Company, InventoryAdjustment, Item, ItemAdjustment, LedgerAccount, MeasureUnit, Tag, TaxCategory, User, } from '../test/index.js';
|
|
4
|
-
export class AbstractQuerierIt {
|
|
5
|
-
pool;
|
|
6
|
-
querier;
|
|
7
|
-
constructor(pool) {
|
|
8
|
-
this.pool = pool;
|
|
9
|
-
}
|
|
10
|
-
async beforeAll() {
|
|
11
|
-
const querier = await this.pool.getQuerier();
|
|
12
|
-
try {
|
|
13
|
-
this.querier = querier;
|
|
14
|
-
await this.dropTables();
|
|
15
|
-
await this.createTables();
|
|
16
|
-
}
|
|
17
|
-
finally {
|
|
18
|
-
await querier.release();
|
|
19
|
-
this.querier = undefined;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
async beforeEach() {
|
|
23
|
-
this.querier = await this.pool.getQuerier();
|
|
24
|
-
await this.clearTables();
|
|
25
|
-
}
|
|
26
|
-
async afterEach() {
|
|
27
|
-
await this.querier.release();
|
|
28
|
-
}
|
|
29
|
-
async afterAll() {
|
|
30
|
-
await this.pool.end();
|
|
31
|
-
}
|
|
32
|
-
shouldGetRepository() {
|
|
33
|
-
const repository = this.querier.getRepository(User);
|
|
34
|
-
expect(repository).toBeDefined();
|
|
35
|
-
}
|
|
36
|
-
async shouldInsertMany() {
|
|
37
|
-
const ids = await this.querier.insertMany(User, [
|
|
38
|
-
{
|
|
39
|
-
name: 'Some Name A',
|
|
40
|
-
email: 'someemaila@example.com',
|
|
41
|
-
password: '123456789a!',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: 'Some Name B',
|
|
45
|
-
email: 'someemailb@example.com',
|
|
46
|
-
password: '123456789b!',
|
|
47
|
-
},
|
|
48
|
-
]);
|
|
49
|
-
expect(ids).toHaveLength(2);
|
|
50
|
-
for (const id of ids) {
|
|
51
|
-
expect(id).toBeDefined();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
async shouldInsertManyEmpty() {
|
|
55
|
-
const ids = await this.querier.insertMany(User, []);
|
|
56
|
-
expect(ids).toEqual([]);
|
|
57
|
-
}
|
|
58
|
-
async shouldInsertOne() {
|
|
59
|
-
const creatorId = await this.querier.insertOne(User, {
|
|
60
|
-
name: 'Some Name C',
|
|
61
|
-
email: 'someemailc@example.com',
|
|
62
|
-
password: '123456789z!',
|
|
63
|
-
});
|
|
64
|
-
expect(creatorId).toBeDefined();
|
|
65
|
-
const companyId = await this.querier.insertOne(Company, {
|
|
66
|
-
name: 'Some Name C',
|
|
67
|
-
creatorId,
|
|
68
|
-
});
|
|
69
|
-
expect(companyId).toBeDefined();
|
|
70
|
-
const taxCategoryId = await this.querier.insertOne(TaxCategory, {
|
|
71
|
-
name: 'Some Name C',
|
|
72
|
-
description: 'Some Description Z',
|
|
73
|
-
creatorId,
|
|
74
|
-
companyId,
|
|
75
|
-
});
|
|
76
|
-
expect(taxCategoryId).toBeDefined();
|
|
77
|
-
}
|
|
78
|
-
async shouldInsertOneWithOnInsertId() {
|
|
79
|
-
const id1 = await this.querier.insertOne(TaxCategory, {
|
|
80
|
-
name: 'Some Name',
|
|
81
|
-
});
|
|
82
|
-
const id2 = await this.querier.insertOne(TaxCategory, {
|
|
83
|
-
pk: '123',
|
|
84
|
-
name: 'Some Name',
|
|
85
|
-
});
|
|
86
|
-
expect(id1).toBeDefined();
|
|
87
|
-
expect(id2).toBeDefined();
|
|
88
|
-
}
|
|
89
|
-
async shouldInsertManyWithSpecifiedIdsAndOnInsertIdAsDefault() {
|
|
90
|
-
const ids = await this.querier.insertMany(TaxCategory, [
|
|
91
|
-
{
|
|
92
|
-
name: 'Some Name A',
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
pk: '50',
|
|
96
|
-
name: 'Some Name B',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
name: 'Some Name C',
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
pk: '70',
|
|
103
|
-
name: 'Some Name D',
|
|
104
|
-
},
|
|
105
|
-
]);
|
|
106
|
-
expect(ids).toHaveLength(4);
|
|
107
|
-
for (const id of ids) {
|
|
108
|
-
expect(id).toBeDefined();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
async shouldInsertManyWithAutoIncrementIdAsDefault() {
|
|
112
|
-
const ids = await this.querier.insertMany(LedgerAccount, [
|
|
113
|
-
{
|
|
114
|
-
name: 'Some Name A',
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
name: 'Some Name B',
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
name: 'Some Name C',
|
|
121
|
-
},
|
|
122
|
-
]);
|
|
123
|
-
expect(ids).toHaveLength(3);
|
|
124
|
-
for (const id of ids) {
|
|
125
|
-
expect(id).toBeDefined();
|
|
126
|
-
}
|
|
127
|
-
const founds = await this.querier.findMany(LedgerAccount, {});
|
|
128
|
-
expect(founds.map(({ id }) => id)).toEqual(ids);
|
|
129
|
-
}
|
|
130
|
-
async shouldInsertOneAndCascadeOneToOne() {
|
|
131
|
-
const payload = {
|
|
132
|
-
name: 'Some Name D',
|
|
133
|
-
createdAt: 123,
|
|
134
|
-
profile: { picture: 'abc', createdAt: 123 },
|
|
135
|
-
};
|
|
136
|
-
const id = await this.querier.insertOne(User, payload);
|
|
137
|
-
expect(id).toBeDefined();
|
|
138
|
-
const found = await this.querier.findOneById(User, id, { $select: { profile: true } });
|
|
139
|
-
expect(found).toMatchObject({ id, profile: payload.profile });
|
|
140
|
-
}
|
|
141
|
-
async shouldInsertOneAndCascadeManyToOne() {
|
|
142
|
-
const payload = {
|
|
143
|
-
name: 'Centimeter',
|
|
144
|
-
createdAt: 123,
|
|
145
|
-
category: { name: 'Metric', createdAt: 123 },
|
|
146
|
-
};
|
|
147
|
-
const id = await this.querier.insertOne(MeasureUnit, payload);
|
|
148
|
-
expect(id).toBeDefined();
|
|
149
|
-
const found = await this.querier.findOneById(MeasureUnit, id, { $select: { category: true } });
|
|
150
|
-
expect(found).toMatchObject({ id, category: payload.category });
|
|
151
|
-
}
|
|
152
|
-
async shouldInsertSpecialChars() {
|
|
153
|
-
const payload = {
|
|
154
|
-
name: `I'm Cielo! How are you doing today? It's been a while since we last talked`,
|
|
155
|
-
createdAt: 123,
|
|
156
|
-
};
|
|
157
|
-
const id = await this.querier.insertOne(MeasureUnit, payload);
|
|
158
|
-
expect(id).toBeDefined();
|
|
159
|
-
const found = await this.querier.findOneById(MeasureUnit, id);
|
|
160
|
-
expect(found).toMatchObject(payload);
|
|
161
|
-
}
|
|
162
|
-
async shouldInsertOneAndCascadeOneToMany() {
|
|
163
|
-
const itemAdjustments = [{ buyPrice: 50 }, { buyPrice: 300 }];
|
|
164
|
-
const date = new Date();
|
|
165
|
-
const inventoryAdjustmentId = await this.querier.insertOne(InventoryAdjustment, {
|
|
166
|
-
description: 'some description',
|
|
167
|
-
date,
|
|
168
|
-
itemAdjustments,
|
|
169
|
-
});
|
|
170
|
-
expect(inventoryAdjustmentId).toBeDefined();
|
|
171
|
-
const inventoryAdjustmentFound = await this.querier.findOneById(InventoryAdjustment, inventoryAdjustmentId, {
|
|
172
|
-
$select: { itemAdjustments: true },
|
|
173
|
-
});
|
|
174
|
-
expect(inventoryAdjustmentFound).toMatchObject({
|
|
175
|
-
id: inventoryAdjustmentId,
|
|
176
|
-
itemAdjustments,
|
|
177
|
-
});
|
|
178
|
-
const itemAdjustmentsFound = await this.querier.findMany(ItemAdjustment, { $where: { inventoryAdjustmentId } });
|
|
179
|
-
expect(itemAdjustmentsFound).toMatchObject(itemAdjustments);
|
|
180
|
-
}
|
|
181
|
-
async shouldInsertOneAndCascadeOneToManyWithSpecificFields() {
|
|
182
|
-
const itemAdjustments = [{ buyPrice: 50 }, { buyPrice: 300 }];
|
|
183
|
-
const inventoryAdjustmentId = await this.querier.insertOne(InventoryAdjustment, {
|
|
184
|
-
description: 'some description',
|
|
185
|
-
itemAdjustments: itemAdjustments.slice(),
|
|
186
|
-
});
|
|
187
|
-
expect(inventoryAdjustmentId).toBeDefined();
|
|
188
|
-
const inventoryAdjustmentFound = await this.querier.findOneById(InventoryAdjustment, inventoryAdjustmentId, {
|
|
189
|
-
$select: { itemAdjustments: ['buyPrice'] },
|
|
190
|
-
});
|
|
191
|
-
expect(inventoryAdjustmentFound).toMatchObject({
|
|
192
|
-
id: inventoryAdjustmentId,
|
|
193
|
-
itemAdjustments,
|
|
194
|
-
});
|
|
195
|
-
const itemAdjustmentsFound = await this.querier.findMany(ItemAdjustment, { $where: { inventoryAdjustmentId } });
|
|
196
|
-
expect(itemAdjustmentsFound).toMatchObject(itemAdjustments);
|
|
197
|
-
}
|
|
198
|
-
async shouldUpdateOneAndCascadeOneToMany() {
|
|
199
|
-
const itemAdjustments = [{ buyPrice: 50 }, { buyPrice: 300 }];
|
|
200
|
-
const inventoryAdjustmentId = await this.querier.insertOne(InventoryAdjustment, {
|
|
201
|
-
description: 'some description',
|
|
202
|
-
});
|
|
203
|
-
expect(inventoryAdjustmentId).toBeDefined();
|
|
204
|
-
const changes = await this.querier.updateOneById(InventoryAdjustment, inventoryAdjustmentId, {
|
|
205
|
-
itemAdjustments,
|
|
206
|
-
});
|
|
207
|
-
expect(changes).toBe(1);
|
|
208
|
-
const inventoryAdjustmentFound = await this.querier.findOneById(InventoryAdjustment, inventoryAdjustmentId, {
|
|
209
|
-
$select: { itemAdjustments: ['buyPrice'] },
|
|
210
|
-
});
|
|
211
|
-
expect(inventoryAdjustmentFound).toMatchObject({
|
|
212
|
-
id: inventoryAdjustmentId,
|
|
213
|
-
itemAdjustments,
|
|
214
|
-
});
|
|
215
|
-
const itemAdjustmentsFound = await this.querier.findMany(ItemAdjustment, { $where: { inventoryAdjustmentId } });
|
|
216
|
-
expect(itemAdjustmentsFound).toMatchObject(itemAdjustments);
|
|
217
|
-
}
|
|
218
|
-
async shouldUpdateOneByIdAndCascadeOneToManyNull() {
|
|
219
|
-
const id = await this.querier.insertOne(InventoryAdjustment, { itemAdjustments: [{}, {}] });
|
|
220
|
-
await expect(this.querier.count(ItemAdjustment, {})).resolves.toBe(2);
|
|
221
|
-
await this.querier.updateOneById(InventoryAdjustment, id, {
|
|
222
|
-
itemAdjustments: null,
|
|
223
|
-
});
|
|
224
|
-
await expect(this.querier.count(ItemAdjustment, {})).resolves.toBe(0);
|
|
225
|
-
}
|
|
226
|
-
async shouldUpdateManyAndCascadeOneToManyNull() {
|
|
227
|
-
await this.querier.insertOne(InventoryAdjustment, { itemAdjustments: [{}, {}] });
|
|
228
|
-
await expect(this.querier.count(ItemAdjustment, {})).resolves.toBe(2);
|
|
229
|
-
await this.querier.updateMany(InventoryAdjustment, { $where: {} }, {
|
|
230
|
-
itemAdjustments: null,
|
|
231
|
-
});
|
|
232
|
-
await expect(this.querier.count(ItemAdjustment, {})).resolves.toBe(0);
|
|
233
|
-
}
|
|
234
|
-
async shouldInsertOneAndCascadeManyToMany() {
|
|
235
|
-
const payload = {
|
|
236
|
-
name: 'item one',
|
|
237
|
-
createdAt: 1,
|
|
238
|
-
tags: [
|
|
239
|
-
{
|
|
240
|
-
name: 'tag one',
|
|
241
|
-
createdAt: 1,
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
name: 'tag two',
|
|
245
|
-
createdAt: 1,
|
|
246
|
-
},
|
|
247
|
-
],
|
|
248
|
-
};
|
|
249
|
-
const id = await this.querier.insertOne(Item, payload);
|
|
250
|
-
expect(id).toBeDefined();
|
|
251
|
-
const foundItem = await this.querier.findOneById(Item, id, {
|
|
252
|
-
$select: { name: true, createdAt: true, tags: ['name', 'createdAt'] },
|
|
253
|
-
});
|
|
254
|
-
expect(foundItem).toMatchObject({
|
|
255
|
-
id,
|
|
256
|
-
...payload,
|
|
257
|
-
});
|
|
258
|
-
const foundTags = await this.querier.findMany(Tag, {
|
|
259
|
-
$select: { name: true, createdAt: true, items: ['name', 'createdAt'] },
|
|
260
|
-
});
|
|
261
|
-
delete foundItem.tags;
|
|
262
|
-
expect(foundTags).toMatchObject(payload.tags.map((tag) => ({ ...tag, items: [foundItem] })));
|
|
263
|
-
}
|
|
264
|
-
async shouldUpdateOneAndCascadeManyToMany() {
|
|
265
|
-
const id = await this.querier.insertOne(Item, { createdAt: 1 });
|
|
266
|
-
const payload = {
|
|
267
|
-
name: 'item one',
|
|
268
|
-
updatedAt: 1,
|
|
269
|
-
tags: [
|
|
270
|
-
{
|
|
271
|
-
name: 'tag one',
|
|
272
|
-
createdAt: 1,
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
name: 'tag two',
|
|
276
|
-
createdAt: 1,
|
|
277
|
-
},
|
|
278
|
-
],
|
|
279
|
-
};
|
|
280
|
-
await this.querier.updateOneById(Item, id, payload);
|
|
281
|
-
const found = await this.querier.findOneById(Item, id, {
|
|
282
|
-
$select: { name: true, updatedAt: true, tags: true },
|
|
283
|
-
});
|
|
284
|
-
expect(found).toMatchObject({
|
|
285
|
-
id,
|
|
286
|
-
...payload,
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
async shouldUpsertOne() {
|
|
290
|
-
const pk = '507f1f77bcf86cd799439011';
|
|
291
|
-
const record1 = await this.querier.findOne(TaxCategory, {
|
|
292
|
-
$select: ['name'],
|
|
293
|
-
$where: { pk },
|
|
294
|
-
});
|
|
295
|
-
expect(record1).toBeUndefined();
|
|
296
|
-
await this.querier.upsertOne(TaxCategory, { pk: true }, {
|
|
297
|
-
pk,
|
|
298
|
-
name: 'Some Name C',
|
|
299
|
-
});
|
|
300
|
-
const record2 = await this.querier.findOne(TaxCategory, {
|
|
301
|
-
$select: ['name'],
|
|
302
|
-
$where: { pk },
|
|
303
|
-
});
|
|
304
|
-
expect(record2).toMatchObject({
|
|
305
|
-
name: 'Some Name C',
|
|
306
|
-
});
|
|
307
|
-
await this.querier.upsertOne(TaxCategory, { pk: true }, {
|
|
308
|
-
pk,
|
|
309
|
-
name: 'Some Name D',
|
|
310
|
-
});
|
|
311
|
-
const record3 = await this.querier.findOne(TaxCategory, {
|
|
312
|
-
$select: ['name'],
|
|
313
|
-
$where: { pk },
|
|
314
|
-
});
|
|
315
|
-
expect(record3).toMatchObject({
|
|
316
|
-
name: 'Some Name D',
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
async shouldFindOne() {
|
|
320
|
-
await Promise.all([this.shouldInsertMany(), this.shouldInsertOne()]);
|
|
321
|
-
const found = await this.querier.findOne(User, {
|
|
322
|
-
$select: ['id', 'name', 'email', 'password'],
|
|
323
|
-
$where: {
|
|
324
|
-
email: 'someemaila@example.com',
|
|
325
|
-
},
|
|
326
|
-
});
|
|
327
|
-
expect(found).toMatchObject({
|
|
328
|
-
name: 'Some Name A',
|
|
329
|
-
email: 'someemaila@example.com',
|
|
330
|
-
password: '123456789a!',
|
|
331
|
-
});
|
|
332
|
-
const notFound = await this.querier.findOne(User, {
|
|
333
|
-
$where: {
|
|
334
|
-
name: 'some name',
|
|
335
|
-
},
|
|
336
|
-
});
|
|
337
|
-
expect(notFound).toBeUndefined();
|
|
338
|
-
}
|
|
339
|
-
async shouldCount() {
|
|
340
|
-
await expect(this.querier.count(User, {})).resolves.toBe(0);
|
|
341
|
-
await Promise.all([this.shouldInsertMany(), this.shouldInsertOne()]);
|
|
342
|
-
await expect(this.querier.count(User, {})).resolves.toBe(3);
|
|
343
|
-
await expect(this.querier.count(User, { $where: { companyId: null } })).resolves.toBe(3);
|
|
344
|
-
await expect(this.querier.count(User, { $where: { companyId: 1 } })).resolves.toBe(0);
|
|
345
|
-
}
|
|
346
|
-
async shouldUpdateMany() {
|
|
347
|
-
await Promise.all([this.shouldInsertMany(), this.shouldInsertOne()]);
|
|
348
|
-
await expect(this.querier.updateMany(User, { $where: { companyId: 1 } }, { companyId: null })).resolves.toBe(0);
|
|
349
|
-
await expect(this.querier.updateMany(User, { $where: { companyId: null } }, { companyId: 1 })).resolves.toBe(3);
|
|
350
|
-
await expect(this.querier.updateMany(User, { $where: { companyId: 1 } }, { companyId: null })).resolves.toBe(3);
|
|
351
|
-
}
|
|
352
|
-
async shouldThrowIfUnknownComparisonOperator() {
|
|
353
|
-
await expect(this.querier.findMany(User, {
|
|
354
|
-
$where: { name: { $someInvalidOperator: 'some' } },
|
|
355
|
-
})).rejects.toThrow('unknown operator: $someInvalidOperator');
|
|
356
|
-
}
|
|
357
|
-
async shouldThrowWhenRollbackTransactionWithoutBeginTransaction() {
|
|
358
|
-
await expect(this.querier.rollbackTransaction()).rejects.toThrow('not a pending transaction');
|
|
359
|
-
}
|
|
360
|
-
async shouldCommit() {
|
|
361
|
-
await expect(this.querier.count(User, {})).resolves.toBe(0);
|
|
362
|
-
await this.querier.beginTransaction();
|
|
363
|
-
await this.querier.insertOne(User, {});
|
|
364
|
-
await expect(this.querier.count(User, {})).resolves.toBe(1);
|
|
365
|
-
await this.querier.commitTransaction();
|
|
366
|
-
await expect(this.querier.count(User, {})).resolves.toBe(1);
|
|
367
|
-
await this.querier.release();
|
|
368
|
-
}
|
|
369
|
-
async shouldRollback() {
|
|
370
|
-
await expect(this.querier.count(User, {})).resolves.toBe(0);
|
|
371
|
-
await this.querier.beginTransaction();
|
|
372
|
-
await this.querier.insertOne(User, {});
|
|
373
|
-
await expect(this.querier.count(User, {})).resolves.toBe(1);
|
|
374
|
-
await this.querier.rollbackTransaction();
|
|
375
|
-
await expect(this.querier.count(User, {})).resolves.toBe(0);
|
|
376
|
-
await this.querier.release();
|
|
377
|
-
}
|
|
378
|
-
async shouldThrowWhenBeginTransactionAfterBeginTransaction() {
|
|
379
|
-
expect(this.querier.hasOpenTransaction).toBeFalsy();
|
|
380
|
-
await this.querier.beginTransaction();
|
|
381
|
-
expect(this.querier.hasOpenTransaction).toBe(true);
|
|
382
|
-
await expect(this.querier.beginTransaction()).rejects.toThrow('pending transaction');
|
|
383
|
-
await expect(this.querier.release()).rejects.toThrow('pending transaction');
|
|
384
|
-
await this.querier.rollbackTransaction();
|
|
385
|
-
await this.querier.release();
|
|
386
|
-
}
|
|
387
|
-
async shouldReturnTransactionValue() {
|
|
388
|
-
const affectedRows = await this.querier.transaction(async () => {
|
|
389
|
-
await this.shouldInsertMany();
|
|
390
|
-
const count = await this.querier.count(User, {});
|
|
391
|
-
await this.querier.deleteMany(User, {});
|
|
392
|
-
return count;
|
|
393
|
-
});
|
|
394
|
-
expect(affectedRows).toBe(2);
|
|
395
|
-
}
|
|
396
|
-
async shouldThrowWhenCommitTransactionWithoutBeginTransaction() {
|
|
397
|
-
await expect(this.querier.commitTransaction()).rejects.toThrow('not a pending transaction');
|
|
398
|
-
}
|
|
399
|
-
async shouldSelectOneToManyEmpty() {
|
|
400
|
-
const inventoryAdjustment = await this.querier.findOneById(InventoryAdjustment, -1, {
|
|
401
|
-
$select: { itemAdjustments: true, creator: true },
|
|
402
|
-
});
|
|
403
|
-
expect(inventoryAdjustment).toBeUndefined();
|
|
404
|
-
const inventoryAdjustments = await this.querier.findMany(InventoryAdjustment, {
|
|
405
|
-
$select: { itemAdjustments: true },
|
|
406
|
-
});
|
|
407
|
-
expect(inventoryAdjustments).toHaveLength(0);
|
|
408
|
-
}
|
|
409
|
-
async shouldSelectOneToMany() {
|
|
410
|
-
await this.shouldInsertOne();
|
|
411
|
-
const [user, company] = await Promise.all([
|
|
412
|
-
this.querier.findOne(User, { $select: ['id'] }),
|
|
413
|
-
this.querier.findOne(Company, { $select: ['id'] }),
|
|
414
|
-
]);
|
|
415
|
-
const [firstItemId, secondItemId] = await this.querier.insertMany(Item, [
|
|
416
|
-
{
|
|
417
|
-
name: 'some item name a',
|
|
418
|
-
creatorId: user.id,
|
|
419
|
-
companyId: company.id,
|
|
420
|
-
},
|
|
421
|
-
{
|
|
422
|
-
name: 'some item name b',
|
|
423
|
-
creatorId: user.id,
|
|
424
|
-
companyId: company.id,
|
|
425
|
-
},
|
|
426
|
-
]);
|
|
427
|
-
const inventoryAdjustmentId = await this.querier.insertOne(InventoryAdjustment, {
|
|
428
|
-
description: 'some inventory adjustment',
|
|
429
|
-
creatorId: user.id,
|
|
430
|
-
companyId: company.id,
|
|
431
|
-
itemAdjustments: [
|
|
432
|
-
{ buyPrice: 1000, itemId: firstItemId },
|
|
433
|
-
{ buyPrice: 2000, itemId: secondItemId },
|
|
434
|
-
],
|
|
435
|
-
});
|
|
436
|
-
const inventoryAdjustmentFound = await this.querier.findOneById(InventoryAdjustment, inventoryAdjustmentId, {
|
|
437
|
-
$select: { itemAdjustments: true, creator: true },
|
|
438
|
-
});
|
|
439
|
-
expect(inventoryAdjustmentFound).toMatchObject({
|
|
440
|
-
id: inventoryAdjustmentId,
|
|
441
|
-
itemAdjustments: [
|
|
442
|
-
{ buyPrice: 1000, itemId: firstItemId },
|
|
443
|
-
{ buyPrice: 2000, itemId: secondItemId },
|
|
444
|
-
],
|
|
445
|
-
creator: {
|
|
446
|
-
email: 'someemailc@example.com',
|
|
447
|
-
name: 'Some Name C',
|
|
448
|
-
},
|
|
449
|
-
});
|
|
450
|
-
}
|
|
451
|
-
async shouldDeleteMany() {
|
|
452
|
-
await Promise.all([this.shouldInsertMany(), this.shouldInsertOne()]);
|
|
453
|
-
await expect(this.querier.deleteMany(User, { $where: { companyId: 1 } })).resolves.toBe(0);
|
|
454
|
-
await expect(this.querier.deleteMany(User, { $where: { companyId: null } })).resolves.toBe(3);
|
|
455
|
-
}
|
|
456
|
-
async clearTables() {
|
|
457
|
-
const entities = getEntities();
|
|
458
|
-
await Promise.all(entities.map((entity) => this.querier.deleteMany(entity, {})));
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RRdWVyaWVyLXRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcmllci9hYnN0cmFjdFF1ZXJpZXItdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsT0FBTyxFQUNQLG1CQUFtQixFQUNuQixJQUFJLEVBQ0osY0FBYyxFQUNkLGFBQWEsRUFDYixXQUFXLEVBRVgsR0FBRyxFQUNILFdBQVcsRUFDWCxJQUFJLEdBQ0wsTUFBTSxrQkFBa0IsQ0FBQztBQUcxQixNQUFNLE9BQWdCLGlCQUFpQjtJQUdmO0lBRnRCLE9BQU8sQ0FBSTtJQUVYLFlBQXNCLElBQW9CO1FBQXBCLFNBQUksR0FBSixJQUFJLENBQWdCO0lBQUcsQ0FBQztJQUU5QyxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUN2QixNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QixDQUFDO2dCQUFTLENBQUM7WUFDVCxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUMsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJ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ZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCB9IGZyb20gJ2J1bjp0ZXN0JztcbmltcG9ydCB7IGdldEVudGl0aWVzIH0gZnJvbSAnLi4vZW50aXR5L2luZGV4LmpzJztcbmltcG9ydCB7XG4gIENvbXBhbnksXG4gIEludmVudG9yeUFkanVzdG1lbnQsXG4gIEl0ZW0sXG4gIEl0ZW1BZGp1c3RtZW50LFxuICBMZWRnZXJBY2NvdW50LFxuICBNZWFzdXJlVW5pdCxcbiAgdHlwZSBTcGVjLFxuICBUYWcsXG4gIFRheENhdGVnb3J5LFxuICBVc2VyLFxufSBmcm9tICcuLi90ZXN0L2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgUXVlcmllciwgUXVlcmllclBvb2wgfSBmcm9tICcuLi90eXBlL2luZGV4LmpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UXVlcmllckl0PFEgZXh0ZW5kcyBRdWVyaWVyPiBpbXBsZW1lbnRzIFNwZWMge1xuICBxdWVyaWVyOiBRO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBwb29sOiBRdWVyaWVyUG9vbDxRPikge31cblxuICBhc3luYyBiZWZvcmVBbGwoKSB7XG4gICAgY29uc3QgcXVlcmllciA9IGF3YWl0IHRoaXMucG9vbC5nZXRRdWVyaWVyKCk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucXVlcmllciA9IHF1ZXJpZXI7XG4gICAgICBhd2FpdCB0aGlzLmRyb3BUYWJsZXMoKTtcbiAgICAgIGF3YWl0IHRoaXMuY3JlYXRlVGFibGVzKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJpZXIucmVsZWFzZSgpO1xuICAgICAgdGhpcy5xdWVyaWVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGJlZm9yZUVhY2goKSB7XG4gICAgdGhpcy5xdWVyaWVyID0gYXdhaXQgdGhpcy5wb29sLmdldFF1ZXJpZXIoKTtcbiAgICBhd2FpdCB0aGlzLmNsZWFyVGFibGVzKCk7XG4gIH1cblxuICBhc3luYyBhZnRlckVhY2goKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyaWVyLnJlbGVhc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGFmdGVyQWxsKCkge1xuICAgIGF3YWl0IHRoaXMucG9vbC5lbmQoKTtcbiAgfVxuXG4gIHNob3VsZEdldFJlcG9zaXRvcnkoKSB7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IHRoaXMucXVlcmllci5nZXRSZXBvc2l0b3J5KFVzZXIpO1xuICAgIGV4cGVjdChyZXBvc2l0b3J5KS50b0JlRGVmaW5lZCgpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0TWFueSgpIHtcbiAgICBjb25zdCBpZHMgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0TWFueShVc2VyLCBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTb21lIE5hbWUgQScsXG4gICAgICAgIGVtYWlsOiAnc29tZWVtYWlsYUBleGFtcGxlLmNvbScsXG4gICAgICAgIHBhc3N3b3JkOiAnMTIzNDU2Nzg5YSEnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1NvbWUgTmFtZSBCJyxcbiAgICAgICAgZW1haWw6ICdzb21lZW1haWxiQGV4YW1wbGUuY29tJyxcbiAgICAgICAgcGFzc3dvcmQ6ICcxMjM0NTY3ODliIScsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGV4cGVjdChpZHMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIGlkcykge1xuICAgICAgZXhwZWN0KGlkKS50b0JlRGVmaW5lZCgpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNob3VsZEluc2VydE1hbnlFbXB0eSgpIHtcbiAgICBjb25zdCBpZHMgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0TWFueShVc2VyLCBbXSk7XG4gICAgZXhwZWN0KGlkcykudG9FcXVhbChbXSk7XG4gIH1cblxuICBhc3luYyBzaG91bGRJbnNlcnRPbmUoKSB7XG4gICAgY29uc3QgY3JlYXRvcklkID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShVc2VyLCB7XG4gICAgICBuYW1lOiAnU29tZSBOYW1lIEMnLFxuICAgICAgZW1haWw6ICdzb21lZW1haWxjQGV4YW1wbGUuY29tJyxcbiAgICAgIHBhc3N3b3JkOiAnMTIzNDU2Nzg5eiEnLFxuICAgIH0pO1xuICAgIGV4cGVjdChjcmVhdG9ySWQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICBjb25zdCBjb21wYW55SWQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKENvbXBhbnksIHtcbiAgICAgIG5hbWU6ICdTb21lIE5hbWUgQycsXG4gICAgICBjcmVhdG9ySWQsXG4gICAgfSk7XG4gICAgZXhwZWN0KGNvbXBhbnlJZCkudG9CZURlZmluZWQoKTtcblxuICAgIGNvbnN0IHRheENhdGVnb3J5SWQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKFRheENhdGVnb3J5LCB7XG4gICAgICBuYW1lOiAnU29tZSBOYW1lIEMnLFxuICAgICAgZGVzY3JpcHRpb246ICdTb21lIERlc2NyaXB0aW9uIFonLFxuICAgICAgY3JlYXRvcklkLFxuICAgICAgY29tcGFueUlkLFxuICAgIH0pO1xuICAgIGV4cGVjdCh0YXhDYXRlZ29yeUlkKS50b0JlRGVmaW5lZCgpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0T25lV2l0aE9uSW5zZXJ0SWQoKSB7XG4gICAgY29uc3QgaWQxID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShUYXhDYXRlZ29yeSwge1xuICAgICAgbmFtZTogJ1NvbWUgTmFtZScsXG4gICAgfSk7XG4gICAgY29uc3QgaWQyID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShUYXhDYXRlZ29yeSwge1xuICAgICAgcGs6ICcxMjMnLFxuICAgICAgbmFtZTogJ1NvbWUgTmFtZScsXG4gICAgfSk7XG4gICAgZXhwZWN0KGlkMSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoaWQyKS50b0JlRGVmaW5lZCgpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0TWFueVdpdGhTcGVjaWZpZWRJZHNBbmRPbkluc2VydElkQXNEZWZhdWx0KCkge1xuICAgIGNvbnN0IGlkcyA9IGF3YWl0IHRoaXMucXVlcmllci5pbnNlcnRNYW55KFRheENhdGVnb3J5LCBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTb21lIE5hbWUgQScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwazogJzUwJyxcbiAgICAgICAgbmFtZTogJ1NvbWUgTmFtZSBCJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTb21lIE5hbWUgQycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBwazogJzcwJyxcbiAgICAgICAgbmFtZTogJ1NvbWUgTmFtZSBEJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgZXhwZWN0KGlkcykudG9IYXZlTGVuZ3RoKDQpO1xuICAgIGZvciAoY29uc3QgaWQgb2YgaWRzKSB7XG4gICAgICBleHBlY3QoaWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0TWFueVdpdGhBdXRvSW5jcmVtZW50SWRBc0RlZmF1bHQoKSB7XG4gICAgY29uc3QgaWRzID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE1hbnkoTGVkZ2VyQWNjb3VudCwgW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnU29tZSBOYW1lIEEnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ1NvbWUgTmFtZSBCJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTb21lIE5hbWUgQycsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIGV4cGVjdChpZHMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIGlkcykge1xuICAgICAgZXhwZWN0KGlkKS50b0JlRGVmaW5lZCgpO1xuICAgIH1cbiAgICBjb25zdCBmb3VuZHMgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE1hbnkoTGVkZ2VyQWNjb3VudCwge30pO1xuICAgIGV4cGVjdChmb3VuZHMubWFwKCh7IGlkIH0pID0+IGlkKSkudG9FcXVhbChpZHMpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0T25lQW5kQ2FzY2FkZU9uZVRvT25lKCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBuYW1lOiAnU29tZSBOYW1lIEQnLFxuICAgICAgY3JlYXRlZEF0OiAxMjMsXG4gICAgICBwcm9maWxlOiB7IHBpY3R1cmU6ICdhYmMnLCBjcmVhdGVkQXQ6IDEyMyB9LFxuICAgIH0gc2F0aXNmaWVzIFVzZXI7XG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKFVzZXIsIHBheWxvYWQpO1xuICAgIGV4cGVjdChpZCkudG9CZURlZmluZWQoKTtcbiAgICBjb25zdCBmb3VuZCA9IGF3YWl0IHRoaXMucXVlcmllci5maW5kT25lQnlJZChVc2VyLCBpZCwgeyAkc2VsZWN0OiB7IHByb2ZpbGU6IHRydWUgfSB9KTtcbiAgICBleHBlY3QoZm91bmQpLnRvTWF0Y2hPYmplY3QoeyBpZCwgcHJvZmlsZTogcGF5bG9hZC5wcm9maWxlIH0pO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0T25lQW5kQ2FzY2FkZU1hbnlUb09uZSgpIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgbmFtZTogJ0NlbnRpbWV0ZXInLFxuICAgICAgY3JlYXRlZEF0OiAxMjMsXG4gICAgICBjYXRlZ29yeTogeyBuYW1lOiAnTWV0cmljJywgY3JlYXRlZEF0OiAxMjMgfSxcbiAgICB9IHNhdGlzZmllcyBNZWFzdXJlVW5pdDtcblxuICAgIGNvbnN0IGlkID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShNZWFzdXJlVW5pdCwgcGF5bG9hZCk7XG5cbiAgICBleHBlY3QoaWQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICBjb25zdCBmb3VuZCA9IGF3YWl0IHRoaXMucXVlcmllci5maW5kT25lQnlJZChNZWFzdXJlVW5pdCwgaWQsIHsgJHNlbGVjdDogeyBjYXRlZ29yeTogdHJ1ZSB9IH0pO1xuXG4gICAgZXhwZWN0KGZvdW5kKS50b01hdGNoT2JqZWN0KHsgaWQsIGNhdGVnb3J5OiBwYXlsb2FkLmNhdGVnb3J5IH0pO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0U3BlY2lhbENoYXJzKCkge1xuICAgIGNvbnN0IHBheWxvYWQ6IE1lYXN1cmVVbml0ID0ge1xuICAgICAgbmFtZTogYEknbSBDaWVsbyEgSG93IGFyZSB5b3UgZG9pbmcgdG9kYXk/IEl0J3MgYmVlbiBhIHdoaWxlIHNpbmNlIHdlIGxhc3QgdGFsa2VkYCxcbiAgICAgIGNyZWF0ZWRBdDogMTIzLFxuICAgIH07XG5cbiAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMucXVlcmllci5pbnNlcnRPbmUoTWVhc3VyZVVuaXQsIHBheWxvYWQpO1xuXG4gICAgZXhwZWN0KGlkKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgY29uc3QgZm91bmQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE9uZUJ5SWQoTWVhc3VyZVVuaXQsIGlkKTtcblxuICAgIGV4cGVjdChmb3VuZCkudG9NYXRjaE9iamVjdChwYXlsb2FkKTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZEluc2VydE9uZUFuZENhc2NhZGVPbmVUb01hbnkoKSB7XG4gICAgY29uc3QgaXRlbUFkanVzdG1lbnRzOiBJdGVtQWRqdXN0bWVudFtdID0gW3sgYnV5UHJpY2U6IDUwIH0sIHsgYnV5UHJpY2U6IDMwMCB9XTtcblxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgY29uc3QgaW52ZW50b3J5QWRqdXN0bWVudElkID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShJbnZlbnRvcnlBZGp1c3RtZW50LCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NvbWUgZGVzY3JpcHRpb24nLFxuICAgICAgZGF0ZSxcbiAgICAgIGl0ZW1BZGp1c3RtZW50cyxcbiAgICB9KTtcblxuICAgIGV4cGVjdChpbnZlbnRvcnlBZGp1c3RtZW50SWQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICBjb25zdCBpbnZlbnRvcnlBZGp1c3RtZW50Rm91bmQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE9uZUJ5SWQoSW52ZW50b3J5QWRqdXN0bWVudCwgaW52ZW50b3J5QWRqdXN0bWVudElkLCB7XG4gICAgICAkc2VsZWN0OiB7IGl0ZW1BZGp1c3RtZW50czogdHJ1ZSB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGludmVudG9yeUFkanVzdG1lbnRGb3VuZCkudG9NYXRjaE9iamVjdCh7XG4gICAgICBpZDogaW52ZW50b3J5QWRqdXN0bWVudElkLFxuICAgICAgaXRlbUFkanVzdG1lbnRzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaXRlbUFkanVzdG1lbnRzRm91bmQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE1hbnkoSXRlbUFkanVzdG1lbnQsIHsgJHdoZXJlOiB7IGludmVudG9yeUFkanVzdG1lbnRJZCB9IH0pO1xuXG4gICAgZXhwZWN0KGl0ZW1BZGp1c3RtZW50c0ZvdW5kKS50b01hdGNoT2JqZWN0KGl0ZW1BZGp1c3RtZW50cyk7XG4gIH1cblxuICBhc3luYyBzaG91bGRJbnNlcnRPbmVBbmRDYXNjYWRlT25lVG9NYW55V2l0aFNwZWNpZmljRmllbGRzKCkge1xuICAgIGNvbnN0IGl0ZW1BZGp1c3RtZW50czogSXRlbUFkanVzdG1lbnRbXSA9IFt7IGJ1eVByaWNlOiA1MCB9LCB7IGJ1eVByaWNlOiAzMDAgfV07XG5cbiAgICBjb25zdCBpbnZlbnRvcnlBZGp1c3RtZW50SWQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKEludmVudG9yeUFkanVzdG1lbnQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnc29tZSBkZXNjcmlwdGlvbicsXG4gICAgICBpdGVtQWRqdXN0bWVudHM6IGl0ZW1BZGp1c3RtZW50cy5zbGljZSgpLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGludmVudG9yeUFkanVzdG1lbnRJZCkudG9CZURlZmluZWQoKTtcblxuICAgIGNvbnN0IGludmVudG9yeUFkanVzdG1lbnRGb3VuZCA9IGF3YWl0IHRoaXMucXVlcmllci5maW5kT25lQnlJZChJbnZlbnRvcnlBZGp1c3RtZW50LCBpbnZlbnRvcnlBZGp1c3RtZW50SWQsIHtcbiAgICAgICRzZWxlY3Q6IHsgaXRlbUFkanVzdG1lbnRzOiBbJ2J1eVByaWNlJ10gfSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChpbnZlbnRvcnlBZGp1c3RtZW50Rm91bmQpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgaWQ6IGludmVudG9yeUFkanVzdG1lbnRJZCxcbiAgICAgIGl0ZW1BZGp1c3RtZW50cyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGl0ZW1BZGp1c3RtZW50c0ZvdW5kID0gYXdhaXQgdGhpcy5xdWVyaWVyLmZpbmRNYW55KEl0ZW1BZGp1c3RtZW50LCB7ICR3aGVyZTogeyBpbnZlbnRvcnlBZGp1c3RtZW50SWQgfSB9KTtcblxuICAgIGV4cGVjdChpdGVtQWRqdXN0bWVudHNGb3VuZCkudG9NYXRjaE9iamVjdChpdGVtQWRqdXN0bWVudHMpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkVXBkYXRlT25lQW5kQ2FzY2FkZU9uZVRvTWFueSgpIHtcbiAgICBjb25zdCBpdGVtQWRqdXN0bWVudHM6IEl0ZW1BZGp1c3RtZW50W10gPSBbeyBidXlQcmljZTogNTAgfSwgeyBidXlQcmljZTogMzAwIH1dO1xuXG4gICAgY29uc3QgaW52ZW50b3J5QWRqdXN0bWVudElkID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShJbnZlbnRvcnlBZGp1c3RtZW50LCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NvbWUgZGVzY3JpcHRpb24nLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGludmVudG9yeUFkanVzdG1lbnRJZCkudG9CZURlZmluZWQoKTtcblxuICAgIGNvbnN0IGNoYW5nZXMgPSBhd2FpdCB0aGlzLnF1ZXJpZXIudXBkYXRlT25lQnlJZChJbnZlbnRvcnlBZGp1c3RtZW50LCBpbnZlbnRvcnlBZGp1c3RtZW50SWQsIHtcbiAgICAgIGl0ZW1BZGp1c3RtZW50cyxcbiAgICB9KTtcblxuICAgIGV4cGVjdChjaGFuZ2VzKS50b0JlKDEpO1xuXG4gICAgY29uc3QgaW52ZW50b3J5QWRqdXN0bWVudEZvdW5kID0gYXdhaXQgdGhpcy5xdWVyaWVyLmZpbmRPbmVCeUlkKEludmVudG9yeUFkanVzdG1lbnQsIGludmVudG9yeUFkanVzdG1lbnRJZCwge1xuICAgICAgJHNlbGVjdDogeyBpdGVtQWRqdXN0bWVudHM6IFsnYnV5UHJpY2UnXSB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGludmVudG9yeUFkanVzdG1lbnRGb3VuZCkudG9NYXRjaE9iamVjdCh7XG4gICAgICBpZDogaW52ZW50b3J5QWRqdXN0bWVudElkLFxuICAgICAgaXRlbUFkanVzdG1lbnRzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaXRlbUFkanVzdG1lbnRzRm91bmQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE1hbnkoSXRlbUFkanVzdG1lbnQsIHsgJHdoZXJlOiB7IGludmVudG9yeUFkanVzdG1lbnRJZCB9IH0pO1xuXG4gICAgZXhwZWN0KGl0ZW1BZGp1c3RtZW50c0ZvdW5kKS50b01hdGNoT2JqZWN0KGl0ZW1BZGp1c3RtZW50cyk7XG4gIH1cblxuICBhc3luYyBzaG91bGRVcGRhdGVPbmVCeUlkQW5kQ2FzY2FkZU9uZVRvTWFueU51bGwoKSB7XG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKEludmVudG9yeUFkanVzdG1lbnQsIHsgaXRlbUFkanVzdG1lbnRzOiBbe30sIHt9XSB9KTtcblxuICAgIGF3YWl0IGV4cGVjdCh0aGlzLnF1ZXJpZXIuY291bnQoSXRlbUFkanVzdG1lbnQsIHt9KSkucmVzb2x2ZXMudG9CZSgyKTtcblxuICAgIGF3YWl0IHRoaXMucXVlcmllci51cGRhdGVPbmVCeUlkKEludmVudG9yeUFkanVzdG1lbnQsIGlkLCB7XG4gICAgICBpdGVtQWRqdXN0bWVudHM6IG51bGwsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLmNvdW50KEl0ZW1BZGp1c3RtZW50LCB7fSkpLnJlc29sdmVzLnRvQmUoMCk7XG4gIH1cblxuICBhc3luYyBzaG91bGRVcGRhdGVNYW55QW5kQ2FzY2FkZU9uZVRvTWFueU51bGwoKSB7XG4gICAgYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShJbnZlbnRvcnlBZGp1c3RtZW50LCB7IGl0ZW1BZGp1c3RtZW50czogW3t9LCB7fV0gfSk7XG5cbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLmNvdW50KEl0ZW1BZGp1c3RtZW50LCB7fSkpLnJlc29sdmVzLnRvQmUoMik7XG5cbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIudXBkYXRlTWFueShcbiAgICAgIEludmVudG9yeUFkanVzdG1lbnQsXG4gICAgICB7ICR3aGVyZToge30gfSxcbiAgICAgIHtcbiAgICAgICAgaXRlbUFkanVzdG1lbnRzOiBudWxsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgYXdhaXQgZXhwZWN0KHRoaXMucXVlcmllci5jb3VudChJdGVtQWRqdXN0bWVudCwge30pKS5yZXNvbHZlcy50b0JlKDApO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkSW5zZXJ0T25lQW5kQ2FzY2FkZU1hbnlUb01hbnkoKSB7XG4gICAgY29uc3QgcGF5bG9hZDogSXRlbSA9IHtcbiAgICAgIG5hbWU6ICdpdGVtIG9uZScsXG4gICAgICBjcmVhdGVkQXQ6IDEsXG4gICAgICB0YWdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAndGFnIG9uZScsXG4gICAgICAgICAgY3JlYXRlZEF0OiAxLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3RhZyB0d28nLFxuICAgICAgICAgIGNyZWF0ZWRBdDogMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGNvbnN0IGlkID0gYXdhaXQgdGhpcy5xdWVyaWVyLmluc2VydE9uZShJdGVtLCBwYXlsb2FkKTtcblxuICAgIGV4cGVjdChpZCkudG9CZURlZmluZWQoKTtcblxuICAgIGNvbnN0IGZvdW5kSXRlbSA9IGF3YWl0IHRoaXMucXVlcmllci5maW5kT25lQnlJZChJdGVtLCBpZCwge1xuICAgICAgJHNlbGVjdDogeyBuYW1lOiB0cnVlLCBjcmVhdGVkQXQ6IHRydWUsIHRhZ3M6IFsnbmFtZScsICdjcmVhdGVkQXQnXSB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGZvdW5kSXRlbSkudG9NYXRjaE9iamVjdCh7XG4gICAgICBpZCxcbiAgICAgIC4uLnBheWxvYWQsXG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3VuZFRhZ3MgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE1hbnkoVGFnLCB7XG4gICAgICAkc2VsZWN0OiB7IG5hbWU6IHRydWUsIGNyZWF0ZWRBdDogdHJ1ZSwgaXRlbXM6IFsnbmFtZScsICdjcmVhdGVkQXQnXSB9LFxuICAgIH0pO1xuXG4gICAgZGVsZXRlIGZvdW5kSXRlbS50YWdzO1xuXG4gICAgZXhwZWN0KGZvdW5kVGFncykudG9NYXRjaE9iamVjdChwYXlsb2FkLnRhZ3MubWFwKCh0YWcpID0+ICh7IC4uLnRhZywgaXRlbXM6IFtmb3VuZEl0ZW1dIH0pKSk7XG4gIH1cblxuICBhc3luYyBzaG91bGRVcGRhdGVPbmVBbmRDYXNjYWRlTWFueVRvTWFueSgpIHtcbiAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMucXVlcmllci5pbnNlcnRPbmUoSXRlbSwgeyBjcmVhdGVkQXQ6IDEgfSk7XG4gICAgY29uc3QgcGF5bG9hZDogSXRlbSA9IHtcbiAgICAgIG5hbWU6ICdpdGVtIG9uZScsXG4gICAgICB1cGRhdGVkQXQ6IDEsXG4gICAgICB0YWdzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiAndGFnIG9uZScsXG4gICAgICAgICAgY3JlYXRlZEF0OiAxLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3RhZyB0d28nLFxuICAgICAgICAgIGNyZWF0ZWRBdDogMSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfTtcblxuICAgIGF3YWl0IHRoaXMucXVlcmllci51cGRhdGVPbmVCeUlkKEl0ZW0sIGlkLCBwYXlsb2FkKTtcblxuICAgIGNvbnN0IGZvdW5kID0gYXdhaXQgdGhpcy5xdWVyaWVyLmZpbmRPbmVCeUlkKEl0ZW0sIGlkLCB7XG4gICAgICAkc2VsZWN0OiB7IG5hbWU6IHRydWUsIHVwZGF0ZWRBdDogdHJ1ZSwgdGFnczogdHJ1ZSB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGZvdW5kKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIGlkLFxuICAgICAgLi4ucGF5bG9hZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZFVwc2VydE9uZSgpIHtcbiAgICBjb25zdCBwayA9ICc1MDdmMWY3N2JjZjg2Y2Q3OTk0MzkwMTEnO1xuICAgIGNvbnN0IHJlY29yZDEgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE9uZShUYXhDYXRlZ29yeSwge1xuICAgICAgJHNlbGVjdDogWyduYW1lJ10sXG4gICAgICAkd2hlcmU6IHsgcGsgfSxcbiAgICB9KTtcbiAgICBleHBlY3QocmVjb3JkMSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIGF3YWl0IHRoaXMucXVlcmllci51cHNlcnRPbmUoXG4gICAgICBUYXhDYXRlZ29yeSxcbiAgICAgIHsgcGs6IHRydWUgfSxcbiAgICAgIHtcbiAgICAgICAgcGssXG4gICAgICAgIG5hbWU6ICdTb21lIE5hbWUgQycsXG4gICAgICB9LFxuICAgICk7XG4gICAgY29uc3QgcmVjb3JkMiA9IGF3YWl0IHRoaXMucXVlcmllci5maW5kT25lKFRheENhdGVnb3J5LCB7XG4gICAgICAkc2VsZWN0OiBbJ25hbWUnXSxcbiAgICAgICR3aGVyZTogeyBwayB9LFxuICAgIH0pO1xuICAgIGV4cGVjdChyZWNvcmQyKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6ICdTb21lIE5hbWUgQycsXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5xdWVyaWVyLnVwc2VydE9uZShcbiAgICAgIFRheENhdGVnb3J5LFxuICAgICAgeyBwazogdHJ1ZSB9LFxuICAgICAge1xuICAgICAgICBwayxcbiAgICAgICAgbmFtZTogJ1NvbWUgTmFtZSBEJyxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCByZWNvcmQzID0gYXdhaXQgdGhpcy5xdWVyaWVyLmZpbmRPbmUoVGF4Q2F0ZWdvcnksIHtcbiAgICAgICRzZWxlY3Q6IFsnbmFtZSddLFxuICAgICAgJHdoZXJlOiB7IHBrIH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KHJlY29yZDMpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogJ1NvbWUgTmFtZSBEJyxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZEZpbmRPbmUoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuc2hvdWxkSW5zZXJ0TWFueSgpLCB0aGlzLnNob3VsZEluc2VydE9uZSgpXSk7XG5cbiAgICBjb25zdCBmb3VuZCA9IGF3YWl0IHRoaXMucXVlcmllci5maW5kT25lKFVzZXIsIHtcbiAgICAgICRzZWxlY3Q6IFsnaWQnLCAnbmFtZScsICdlbWFpbCcsICdwYXNzd29yZCddLFxuICAgICAgJHdoZXJlOiB7XG4gICAgICAgIGVtYWlsOiAnc29tZWVtYWlsYUBleGFtcGxlLmNvbScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KGZvdW5kKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6ICdTb21lIE5hbWUgQScsXG4gICAgICBlbWFpbDogJ3NvbWVlbWFpbGFAZXhhbXBsZS5jb20nLFxuICAgICAgcGFzc3dvcmQ6ICcxMjM0NTY3ODlhIScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBub3RGb3VuZCA9IGF3YWl0IHRoaXMucXVlcmllci5maW5kT25lKFVzZXIsIHtcbiAgICAgICR3aGVyZToge1xuICAgICAgICBuYW1lOiAnc29tZSBuYW1lJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBleHBlY3Qobm90Rm91bmQpLnRvQmVVbmRlZmluZWQoKTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZENvdW50KCkge1xuICAgIGF3YWl0IGV4cGVjdCh0aGlzLnF1ZXJpZXIuY291bnQoVXNlciwge30pKS5yZXNvbHZlcy50b0JlKDApO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuc2hvdWxkSW5zZXJ0TWFueSgpLCB0aGlzLnNob3VsZEluc2VydE9uZSgpXSk7XG5cbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLmNvdW50KFVzZXIsIHt9KSkucmVzb2x2ZXMudG9CZSgzKTtcbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLmNvdW50KFVzZXIsIHsgJHdoZXJlOiB7IGNvbXBhbnlJZDogbnVsbCB9IH0pKS5yZXNvbHZlcy50b0JlKDMpO1xuICAgIGF3YWl0IGV4cGVjdCh0aGlzLnF1ZXJpZXIuY291bnQoVXNlciwgeyAkd2hlcmU6IHsgY29tcGFueUlkOiAxIH0gfSkpLnJlc29sdmVzLnRvQmUoMCk7XG4gIH1cblxuICBhc3luYyBzaG91bGRVcGRhdGVNYW55KCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnNob3VsZEluc2VydE1hbnkoKSwgdGhpcy5zaG91bGRJbnNlcnRPbmUoKV0pO1xuXG4gICAgYXdhaXQgZXhwZWN0KHRoaXMucXVlcmllci51cGRhdGVNYW55KFVzZXIsIHsgJHdoZXJlOiB7IGNvbXBhbnlJZDogMSB9IH0sIHsgY29tcGFueUlkOiBudWxsIH0pKS5yZXNvbHZlcy50b0JlKDApO1xuICAgIGF3YWl0IGV4cGVjdCh0aGlzLnF1ZXJpZXIudXBkYXRlTWFueShVc2VyLCB7ICR3aGVyZTogeyBjb21wYW55SWQ6IG51bGwgfSB9LCB7IGNvbXBhbnlJZDogMSB9KSkucmVzb2x2ZXMudG9CZSgzKTtcbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLnVwZGF0ZU1hbnkoVXNlciwgeyAkd2hlcmU6IHsgY29tcGFueUlkOiAxIH0gfSwgeyBjb21wYW55SWQ6IG51bGwgfSkpLnJlc29sdmVzLnRvQmUoMyk7XG4gIH1cblxuICBhc3luYyBzaG91bGRUaHJvd0lmVW5rbm93bkNvbXBhcmlzb25PcGVyYXRvcigpIHtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICB0aGlzLnF1ZXJpZXIuZmluZE1hbnkoVXNlciwge1xuICAgICAgICAkd2hlcmU6IHsgbmFtZTogeyAkc29tZUludmFsaWRPcGVyYXRvcjogJ3NvbWUnIH0gYXMgYW55IH0sXG4gICAgICB9KSxcbiAgICApLnJlamVjdHMudG9UaHJvdygndW5rbm93biBvcGVyYXRvcjogJHNvbWVJbnZhbGlkT3BlcmF0b3InKTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZFRocm93V2hlblJvbGxiYWNrVHJhbnNhY3Rpb25XaXRob3V0QmVnaW5UcmFuc2FjdGlvbigpIHtcbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKSkucmVqZWN0cy50b1Rocm93KCdub3QgYSBwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gIH1cblxuICBhc3luYyBzaG91bGRDb21taXQoKSB7XG4gICAgYXdhaXQgZXhwZWN0KHRoaXMucXVlcmllci5jb3VudChVc2VyLCB7fSkpLnJlc29sdmVzLnRvQmUoMCk7XG4gICAgYXdhaXQgdGhpcy5xdWVyaWVyLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKFVzZXIsIHt9KTtcbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLmNvdW50KFVzZXIsIHt9KSkucmVzb2x2ZXMudG9CZSgxKTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLmNvdW50KFVzZXIsIHt9KSkucmVzb2x2ZXMudG9CZSgxKTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIucmVsZWFzZSgpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkUm9sbGJhY2soKSB7XG4gICAgYXdhaXQgZXhwZWN0KHRoaXMucXVlcmllci5jb3VudChVc2VyLCB7fSkpLnJlc29sdmVzLnRvQmUoMCk7XG4gICAgYXdhaXQgdGhpcy5xdWVyaWVyLmJlZ2luVHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0T25lKFVzZXIsIHt9KTtcbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLmNvdW50KFVzZXIsIHt9KSkucmVzb2x2ZXMudG9CZSgxKTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgIGF3YWl0IGV4cGVjdCh0aGlzLnF1ZXJpZXIuY291bnQoVXNlciwge30pKS5yZXNvbHZlcy50b0JlKDApO1xuICAgIGF3YWl0IHRoaXMucXVlcmllci5yZWxlYXNlKCk7XG4gIH1cblxuICBhc3luYyBzaG91bGRUaHJvd1doZW5CZWdpblRyYW5zYWN0aW9uQWZ0ZXJCZWdpblRyYW5zYWN0aW9uKCkge1xuICAgIGV4cGVjdCh0aGlzLnF1ZXJpZXIuaGFzT3BlblRyYW5zYWN0aW9uKS50b0JlRmFsc3koKTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIuYmVnaW5UcmFuc2FjdGlvbigpO1xuICAgIGV4cGVjdCh0aGlzLnF1ZXJpZXIuaGFzT3BlblRyYW5zYWN0aW9uKS50b0JlKHRydWUpO1xuICAgIGF3YWl0IGV4cGVjdCh0aGlzLnF1ZXJpZXIuYmVnaW5UcmFuc2FjdGlvbigpKS5yZWplY3RzLnRvVGhyb3coJ3BlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgICBhd2FpdCBleHBlY3QodGhpcy5xdWVyaWVyLnJlbGVhc2UoKSkucmVqZWN0cy50b1Rocm93KCdwZW5kaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgYXdhaXQgdGhpcy5xdWVyaWVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICBhd2FpdCB0aGlzLnF1ZXJpZXIucmVsZWFzZSgpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkUmV0dXJuVHJhbnNhY3Rpb25WYWx1ZSgpIHtcbiAgICBjb25zdCBhZmZlY3RlZFJvd3MgPSBhd2FpdCB0aGlzLnF1ZXJpZXIudHJhbnNhY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5zaG91bGRJbnNlcnRNYW55KCk7XG4gICAgICBjb25zdCBjb3VudCA9IGF3YWl0IHRoaXMucXVlcmllci5jb3VudChVc2VyLCB7fSk7XG4gICAgICBhd2FpdCB0aGlzLnF1ZXJpZXIuZGVsZXRlTWFueShVc2VyLCB7fSk7XG4gICAgICByZXR1cm4gY291bnQ7XG4gICAgfSk7XG4gICAgZXhwZWN0KGFmZmVjdGVkUm93cykudG9CZSgyKTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZFRocm93V2hlbkNvbW1pdFRyYW5zYWN0aW9uV2l0aG91dEJlZ2luVHJhbnNhY3Rpb24oKSB7XG4gICAgYXdhaXQgZXhwZWN0KHRoaXMucXVlcmllci5jb21taXRUcmFuc2FjdGlvbigpKS5yZWplY3RzLnRvVGhyb3coJ25vdCBhIHBlbmRpbmcgdHJhbnNhY3Rpb24nKTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZFNlbGVjdE9uZVRvTWFueUVtcHR5KCkge1xuICAgIGNvbnN0IGludmVudG9yeUFkanVzdG1lbnQgPSBhd2FpdCB0aGlzLnF1ZXJpZXIuZmluZE9uZUJ5SWQoSW52ZW50b3J5QWRqdXN0bWVudCwgLTEsIHtcbiAgICAgICRzZWxlY3Q6IHsgaXRlbUFkanVzdG1lbnRzOiB0cnVlLCBjcmVhdG9yOiB0cnVlIH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KGludmVudG9yeUFkanVzdG1lbnQpLnRvQmVVbmRlZmluZWQoKTtcblxuICAgIGNvbnN0IGludmVudG9yeUFkanVzdG1lbnRzID0gYXdhaXQgdGhpcy5xdWVyaWVyLmZpbmRNYW55KEludmVudG9yeUFkanVzdG1lbnQsIHtcbiAgICAgICRzZWxlY3Q6IHsgaXRlbUFkanVzdG1lbnRzOiB0cnVlIH0sXG4gICAgfSk7XG4gICAgZXhwZWN0KGludmVudG9yeUFkanVzdG1lbnRzKS50b0hhdmVMZW5ndGgoMCk7XG4gIH1cblxuICBhc3luYyBzaG91bGRTZWxlY3RPbmVUb01hbnkoKSB7XG4gICAgYXdhaXQgdGhpcy5zaG91bGRJbnNlcnRPbmUoKTtcblxuICAgIGNvbnN0IFt1c2VyLCBjb21wYW55XSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMucXVlcmllci5maW5kT25lKFVzZXIsIHsgJHNlbGVjdDogWydpZCddIH0pLFxuICAgICAgdGhpcy5xdWVyaWVyLmZpbmRPbmUoQ29tcGFueSwgeyAkc2VsZWN0OiBbJ2lkJ10gfSksXG4gICAgXSk7XG5cbiAgICBjb25zdCBbZmlyc3RJdGVtSWQsIHNlY29uZEl0ZW1JZF0gPSBhd2FpdCB0aGlzLnF1ZXJpZXIuaW5zZXJ0TWFueShJdGVtLCBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzb21lIGl0ZW0gbmFtZSBhJyxcbiAgICAgICAgY3JlYXRvcklkOiB1c2VyLmlkLFxuICAgICAgICBjb21wYW55SWQ6IGNvbXBhbnkuaWQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc29tZSBpdGVtIG5hbWUgYicsXG4gICAgICAgIGNyZWF0b3JJZDogdXNlci5pZCxcbiAgICAgICAgY29tcGFueUlkOiBjb21wYW55LmlkLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIGNvbnN0IGludmVudG9yeUFkanVzdG1lbnRJZCA9IGF3YWl0IHRoaXMucXVlcmllci5pbnNlcnRPbmUoSW52ZW50b3J5QWRqdXN0bWVudCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzb21lIGludmVudG9yeSBhZGp1c3RtZW50JyxcbiAgICAgIGNyZWF0b3JJZDogdXNlci5pZCxcbiAgICAgIGNvbXBhbnlJZDogY29tcGFueS5pZCxcbiAgICAgIGl0ZW1BZGp1c3RtZW50czogW1xuICAgICAgICB7IGJ1eVByaWNlOiAxMDAwLCBpdGVtSWQ6IGZpcnN0SXRlbUlkIH0sXG4gICAgICAgIHsgYnV5UHJpY2U6IDIwMDAsIGl0ZW1JZDogc2Vjb25kSXRlbUlkIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaW52ZW50b3J5QWRqdXN0bWVudEZvdW5kID0gYXdhaXQgdGhpcy5xdWVyaWVyLmZpbmRPbmVCeUlkKEludmVudG9yeUFkanVzdG1lbnQsIGludmVudG9yeUFkanVzdG1lbnRJZCwge1xuICAgICAgJHNlbGVjdDogeyBpdGVtQWRqdXN0bWVudHM6IHRydWUsIGNyZWF0b3I6IHRydWUgfSxcbiAgICB9KTtcblxuICAgIGV4cGVjdChpbnZlbnRvcnlBZGp1c3RtZW50Rm91bmQpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgaWQ6IGludmVudG9yeUFkanVzdG1lbnRJZCxcbiAgICAgIGl0ZW1BZGp1c3RtZW50czogW1xuICAgICAgICB7IGJ1eVByaWNlOiAxMDAwLCBpdGVtSWQ6IGZpcnN0SXRlbUlkIH0sXG4gICAgICAgIHsgYnV5UHJpY2U6IDIwMDAsIGl0ZW1JZDogc2Vjb25kSXRlbUlkIH0sXG4gICAgICBdLFxuICAgICAgY3JlYXRvcjoge1xuICAgICAgICBlbWFpbDogJ3NvbWVlbWFpbGNAZXhhbXBsZS5jb20nLFxuICAgICAgICBuYW1lOiAnU29tZSBOYW1lIEMnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNob3VsZERlbGV0ZU1hbnkoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMuc2hvdWxkSW5zZXJ0TWFueSgpLCB0aGlzLnNob3VsZEluc2VydE9uZSgpXSk7XG4gICAgYXdhaXQgZXhwZWN0KHRoaXMucXVlcmllci5kZWxldGVNYW55KFVzZXIsIHsgJHdoZXJlOiB7IGNvbXBhbnlJZDogMSB9IH0pKS5yZXNvbHZlcy50b0JlKDApO1xuICAgIGF3YWl0IGV4cGVjdCh0aGlzLnF1ZXJpZXIuZGVsZXRlTWFueShVc2VyLCB7ICR3aGVyZTogeyBjb21wYW55SWQ6IG51bGwgfSB9KSkucmVzb2x2ZXMudG9CZSgzKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyVGFibGVzKCkge1xuICAgIGNvbnN0IGVudGl0aWVzID0gZ2V0RW50aXRpZXMoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChlbnRpdGllcy5tYXAoKGVudGl0eSkgPT4gdGhpcy5xdWVyaWVyLmRlbGV0ZU1hbnkoZW50aXR5LCB7fSkpKTtcbiAgfVxuXG4gIGFic3RyYWN0IGNyZWF0ZVRhYmxlcygpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIGFic3RyYWN0IGRyb3BUYWJsZXMoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Spec } from '../test/index.js';
|
|
2
|
-
import type { Querier } from '../type/index.js';
|
|
3
|
-
import type { AbstractQuerierPool } from './abstractQuerierPool.js';
|
|
4
|
-
export declare abstract class AbstractQuerierPoolIt<Q extends Querier> implements Spec {
|
|
5
|
-
protected pool: AbstractQuerierPool<Q>;
|
|
6
|
-
constructor(pool: AbstractQuerierPool<Q>);
|
|
7
|
-
afterAll(): Promise<void>;
|
|
8
|
-
shouldGetQuerier(): Promise<void>;
|
|
9
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { expect } from 'bun:test';
|
|
2
|
-
import { AbstractQuerier } from '../querier/index.js';
|
|
3
|
-
export class AbstractQuerierPoolIt {
|
|
4
|
-
pool;
|
|
5
|
-
constructor(pool) {
|
|
6
|
-
this.pool = pool;
|
|
7
|
-
}
|
|
8
|
-
async afterAll() {
|
|
9
|
-
await this.pool.end();
|
|
10
|
-
}
|
|
11
|
-
async shouldGetQuerier() {
|
|
12
|
-
const querier = await this.pool.getQuerier();
|
|
13
|
-
expect(querier).toBeInstanceOf(AbstractQuerier);
|
|
14
|
-
expect(querier.hasOpenTransaction).toBeFalsy();
|
|
15
|
-
await querier.release();
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RRdWVyaWVyUG9vbC10ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJpZXIvYWJzdHJhY3RRdWVyaWVyUG9vbC10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS3RELE1BQU0sT0FBZ0IscUJBQXFCO0lBQ25CO0lBQXRCLFlBQXNCLElBQTRCO1FBQTVCLFNBQUksR0FBSixJQUFJLENBQXdCO0lBQUcsQ0FBQztJQUV0RCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhwZWN0IH0gZnJvbSAnYnVuOnRlc3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RRdWVyaWVyIH0gZnJvbSAnLi4vcXVlcmllci9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNwZWMgfSBmcm9tICcuLi90ZXN0L2luZGV4LmpzJztcbmltcG9ydCB0eXBlIHsgUXVlcmllciB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdFF1ZXJpZXJQb29sIH0gZnJvbSAnLi9hYnN0cmFjdFF1ZXJpZXJQb29sLmpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UXVlcmllclBvb2xJdDxRIGV4dGVuZHMgUXVlcmllcj4gaW1wbGVtZW50cyBTcGVjIHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBvb2w6IEFic3RyYWN0UXVlcmllclBvb2w8UT4pIHt9XG5cbiAgYXN5bmMgYWZ0ZXJBbGwoKSB7XG4gICAgYXdhaXQgdGhpcy5wb29sLmVuZCgpO1xuICB9XG5cbiAgYXN5bmMgc2hvdWxkR2V0UXVlcmllcigpIHtcbiAgICBjb25zdCBxdWVyaWVyID0gYXdhaXQgdGhpcy5wb29sLmdldFF1ZXJpZXIoKTtcbiAgICBleHBlY3QocXVlcmllcikudG9CZUluc3RhbmNlT2YoQWJzdHJhY3RRdWVyaWVyKTtcbiAgICBleHBlY3QocXVlcmllci5oYXNPcGVuVHJhbnNhY3Rpb24pLnRvQmVGYWxzeSgpO1xuICAgIGF3YWl0IHF1ZXJpZXIucmVsZWFzZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { QuerierPool } from '../type/index.js';
|
|
2
|
-
import { AbstractQuerierIt } from './abstractQuerier-test.js';
|
|
3
|
-
import type { AbstractSqlQuerier } from './abstractSqlQuerier.js';
|
|
4
|
-
export declare abstract class AbstractSqlQuerierIt extends AbstractQuerierIt<AbstractSqlQuerier> {
|
|
5
|
-
readonly idType: string;
|
|
6
|
-
constructor(pool: QuerierPool<AbstractSqlQuerier>, idType: string);
|
|
7
|
-
createTables(): Promise<void>;
|
|
8
|
-
dropTables(): Promise<void>;
|
|
9
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { createTables, dropTables } from '../test/index.js';
|
|
2
|
-
import { AbstractQuerierIt } from './abstractQuerier-test.js';
|
|
3
|
-
export class AbstractSqlQuerierIt extends AbstractQuerierIt {
|
|
4
|
-
idType;
|
|
5
|
-
constructor(pool, idType) {
|
|
6
|
-
super(pool);
|
|
7
|
-
this.idType = idType;
|
|
8
|
-
}
|
|
9
|
-
createTables() {
|
|
10
|
-
return createTables(this.querier, this.idType);
|
|
11
|
-
}
|
|
12
|
-
dropTables() {
|
|
13
|
-
return dropTables(this.querier);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RTcWxRdWVyaWVyLXRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcXVlcmllci9hYnN0cmFjdFNxbFF1ZXJpZXItdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzlELE1BQU0sT0FBZ0Isb0JBQXFCLFNBQVEsaUJBQXFDO0lBRzNFO0lBRlgsWUFDRSxJQUFxQyxFQUM1QixNQUFjO1FBRXZCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUZILFdBQU0sR0FBTixNQUFNLENBQVE7SUFHekIsQ0FBQztJQUVRLFlBQVk7UUFDbkIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVRLFVBQVU7UUFDakIsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVRhYmxlcywgZHJvcFRhYmxlcyB9IGZyb20gJy4uL3Rlc3QvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBRdWVyaWVyUG9vbCB9IGZyb20gJy4uL3R5cGUvaW5kZXguanMnO1xuaW1wb3J0IHsgQWJzdHJhY3RRdWVyaWVySXQgfSBmcm9tICcuL2Fic3RyYWN0UXVlcmllci10ZXN0LmpzJztcbmltcG9ydCB0eXBlIHsgQWJzdHJhY3RTcWxRdWVyaWVyIH0gZnJvbSAnLi9hYnN0cmFjdFNxbFF1ZXJpZXIuanMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RTcWxRdWVyaWVySXQgZXh0ZW5kcyBBYnN0cmFjdFF1ZXJpZXJJdDxBYnN0cmFjdFNxbFF1ZXJpZXI+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcG9vbDogUXVlcmllclBvb2w8QWJzdHJhY3RTcWxRdWVyaWVyPixcbiAgICByZWFkb25seSBpZFR5cGU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIocG9vbCk7XG4gIH1cblxuICBvdmVycmlkZSBjcmVhdGVUYWJsZXMoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVRhYmxlcyh0aGlzLnF1ZXJpZXIsIHRoaXMuaWRUeXBlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGRyb3BUYWJsZXMoKSB7XG4gICAgcmV0dXJuIGRyb3BUYWJsZXModGhpcy5xdWVyaWVyKTtcbiAgfVxufVxuIl19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { AbstractSqlQuerierIt } from '../querier/abstractSqlQuerier-test.js';
|
|
2
|
-
import { createSpec } from '../test/index.js';
|
|
3
|
-
import { Sqlite3QuerierPool } from './sqliteQuerierPool.js';
|
|
4
|
-
export class Sqlite3QuerierIt extends AbstractSqlQuerierIt {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(new Sqlite3QuerierPool(':memory:'), 'INTEGER PRIMARY KEY');
|
|
7
|
-
}
|
|
8
|
-
async beforeEach() {
|
|
9
|
-
await super.beforeEach();
|
|
10
|
-
await Promise.all([
|
|
11
|
-
this.querier.run('PRAGMA foreign_keys = ON'),
|
|
12
|
-
this.querier.run('PRAGMA journal_mode = WAL'),
|
|
13
|
-
this.querier.run('PRAGMA synchronous = normal'),
|
|
14
|
-
this.querier.run('PRAGMA temp_store = memory'),
|
|
15
|
-
]);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
createSpec(new Sqlite3QuerierIt());
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlUXVlcmllci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NxbGl0ZS9zcWxpdGVRdWVyaWVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxvQkFBb0I7SUFDeEQ7UUFDRSxLQUFLLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFUSxLQUFLLENBQUMsVUFBVTtRQUN2QixNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUM7WUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUM7WUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUM7U0FDL0MsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsVUFBVSxDQUFDLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RTcWxRdWVyaWVySXQgfSBmcm9tICcuLi9xdWVyaWVyL2Fic3RyYWN0U3FsUXVlcmllci10ZXN0LmpzJztcbmltcG9ydCB7IGNyZWF0ZVNwZWMgfSBmcm9tICcuLi90ZXN0L2luZGV4LmpzJztcbmltcG9ydCB7IFNxbGl0ZTNRdWVyaWVyUG9vbCB9IGZyb20gJy4vc3FsaXRlUXVlcmllclBvb2wuanMnO1xuXG5leHBvcnQgY2xhc3MgU3FsaXRlM1F1ZXJpZXJJdCBleHRlbmRzIEFic3RyYWN0U3FsUXVlcmllckl0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIobmV3IFNxbGl0ZTNRdWVyaWVyUG9vbCgnOm1lbW9yeTonKSwgJ0lOVEVHRVIgUFJJTUFSWSBLRVknKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGJlZm9yZUVhY2goKSB7XG4gICAgYXdhaXQgc3VwZXIuYmVmb3JlRWFjaCgpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMucXVlcmllci5ydW4oJ1BSQUdNQSBmb3JlaWduX2tleXMgPSBPTicpLFxuICAgICAgdGhpcy5xdWVyaWVyLnJ1bignUFJBR01BIGpvdXJuYWxfbW9kZSA9IFdBTCcpLFxuICAgICAgdGhpcy5xdWVyaWVyLnJ1bignUFJBR01BIHN5bmNocm9ub3VzID0gbm9ybWFsJyksXG4gICAgICB0aGlzLnF1ZXJpZXIucnVuKCdQUkFHTUEgdGVtcF9zdG9yZSA9IG1lbW9yeScpLFxuICAgIF0pO1xuICB9XG59XG5cbmNyZWF0ZVNwZWMobmV3IFNxbGl0ZTNRdWVyaWVySXQoKSk7XG4iXX0=
|