From 208134ea006ef20e767232e58a1871b00e15ce02 Mon Sep 17 00:00:00 2001 From: Jonatas Souza Date: Thu, 24 Oct 2024 02:22:50 -0300 Subject: [PATCH] transporting project to github --- CONTRIBUTING.md | 32 + LICENSE | 7 + README.md | 118 + coverage/packages/crudx-swagger/base.css | 224 + .../packages/crudx-swagger/base.model.ts.html | 124 + .../crudx-swagger/base.module.ts.html | 205 + .../crudx-swagger/base.service.ts.html | 121 + .../crudx-swagger/block-navigation.js | 87 + .../crudx-swagger/database.config.ts.html | 133 + coverage/packages/crudx-swagger/favicon.png | Bin 0 -> 445 bytes coverage/packages/crudx-swagger/index.html | 161 + coverage/packages/crudx-swagger/prettify.css | 1 + coverage/packages/crudx-swagger/prettify.js | 2 + .../crudx-swagger/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/packages/crudx-swagger/sorter.js | 196 + .../packages/crudx-swagger/src/index.html | 116 + .../packages/crudx-swagger/src/index.ts.html | 88 + .../packages/crudx-swagger/src/lib/index.html | 131 + .../crudx-swagger/src/lib/index.ts.html | 85 + .../src/lib/swagger.helper.ts.html | 1402 + .../crudx.swagger.routes.factory.ts.html | 541 + .../crudx-swagger/src/services/index.html | 131 + .../crudx-swagger/src/services/index.ts.html | 85 + .../tests/__fixtures__/base.model.ts.html | 145 + .../tests/__fixtures__/base.module.ts.html | 205 + .../tests/__fixtures__/base.service.ts.html | 121 + .../__fixtures__/database.config.ts.html | 133 + .../tests/__fixtures__/index.html | 161 + coverage/packages/crudx/base.css | 224 + coverage/packages/crudx/block-navigation.js | 87 + coverage/packages/crudx/favicon.png | Bin 0 -> 445 bytes coverage/packages/crudx/index.html | 311 + coverage/packages/crudx/prettify.css | 1 + coverage/packages/crudx/prettify.js | 2 + coverage/packages/crudx/sort-arrow-sprite.png | Bin 0 -> 138 bytes coverage/packages/crudx/sorter.js | 196 + coverage/packages/crudx/src/constants.ts.html | 121 + .../decorators/crud-auth.decorator.ts.html | 109 + .../src/decorators/crud.decorator.ts.html | 112 + .../feature-action.decorator.ts.html | 121 + .../packages/crudx/src/decorators/index.html | 206 + .../crudx/src/decorators/index.ts.html | 103 + .../src/decorators/override.decorator.ts.html | 124 + .../decorators/parsed-body.decorator.ts.html | 106 + .../parsed-request.decorator.ts.html | 115 + .../crudx/src/enums/crud-actions.enum.ts.html | 118 + .../enums/crud-validation-groups.enum.ts.html | 97 + coverage/packages/crudx/src/enums/index.html | 146 + .../packages/crudx/src/enums/index.ts.html | 91 + .../packages/crudx/src/exceptions/index.html | 131 + .../crudx/src/exceptions/index.ts.html | 88 + .../request-query.exception.ts.html | 100 + .../crudx/src/helpers/checkers.helper.ts.html | 220 + .../helpers/crud-validation.helper.ts.html | 250 + .../packages/crudx/src/helpers/index.html | 221 + .../packages/crudx/src/helpers/index.ts.html | 103 + .../src/helpers/reflection.helper.ts.html | 595 + .../helpers/request-validation.helper.ts.html | 469 + .../src/helpers/safe-require.helper.ts.html | 106 + .../src/helpers/serialize.helper.ts.html | 229 + .../crudx/src/helpers/swagger.helper.ts.html | 1474 + coverage/packages/crudx/src/index.html | 131 + coverage/packages/crudx/src/index.ts.html | 112 + .../crud-base.interceptor.ts.html | 166 + .../crud-request.interceptor.ts.html | 754 + .../crud-response.interceptor.ts.html | 382 + .../crudx/src/interceptors/index.html | 161 + .../crudx/src/interceptors/index.ts.html | 91 + .../packages/crudx/src/interfaces/index.html | 116 + .../crudx/src/interfaces/index.ts.html | 139 + .../services/abstract-crud.service.ts.html | 472 + .../src/services/crud-config.service.ts.html | 277 + .../packages/crudx/src/services/index.html | 206 + .../packages/crudx/src/services/index.ts.html | 103 + .../services/query-builder.service.ts.html | 1057 + .../src/services/query-parser.service.ts.html | 1411 + .../services/routes-factory.service.ts.html | 2137 + .../services/type-orm-crud.service.ts.html | 4141 ++ coverage/packages/crudx/src/types/index.html | 131 + .../packages/crudx/src/types/index.ts.html | 97 + .../src/types/request-query.types.ts.html | 418 + .../tests/__fixture__/database.config.ts.html | 142 + .../crudx/tests/__fixture__/exception.ts.html | 130 + .../__fixture__/guards/acl.guard.ts.html | 160 + .../crudx/tests/__fixture__/guards/index.html | 116 + .../crudx/tests/__fixture__/index.html | 116 + .../__fixture__/model/embeded-dates.ts.html | 109 + .../model/identity-type.model.ts.html | 112 + .../crudx/tests/__fixture__/model/index.html | 191 + .../__fixture__/model/nested.model.ts.html | 160 + .../model/relation-test.model.ts.html | 160 + .../model/testing-model.model.ts.html | 199 + .../__fixture__/model/uuid.model.ts.html | 121 + .../crudx/tests/__fixture__/module/index.html | 116 + .../module/test-module.module.ts.html | 202 + .../tests/__fixture__/service/index.html | 146 + .../service/relation.test.service.ts.html | 121 + .../service/testing-service.service.ts.html | 124 + .../__fixture__/service/uuid.service.ts.html | 121 + dist/packages/crudx-demo/assets/.gitkeep | 0 dist/packages/crudx-demo/main.js | 5495 ++ dist/packages/crudx-demo/main.js.map | 1 + dist/packages/crudx-swagger/CHANGELOG.md | 5 + dist/packages/crudx-swagger/README.md | 88 + .../demo/crudx-swagger-demo/assets/.gitkeep | 0 .../demo/crudx-swagger-demo/main.js | 4113 ++ .../demo/crudx-swagger-demo/main.js.map | 1 + dist/packages/crudx-swagger/package.json | 30 + dist/packages/crudx-swagger/src/index.d.ts | 2 + dist/packages/crudx-swagger/src/index.js | 6 + dist/packages/crudx-swagger/src/index.js.map | 1 + .../packages/crudx-swagger/src/lib/index.d.ts | 1 + dist/packages/crudx-swagger/src/lib/index.js | 5 + .../crudx-swagger/src/lib/index.js.map | 1 + .../crudx-swagger/src/lib/swagger.helper.d.ts | 42 + .../crudx-swagger/src/lib/swagger.helper.js | 370 + .../src/lib/swagger.helper.js.map | 1 + .../crudx.swagger.routes.factory.d.ts | 14 + .../services/crudx.swagger.routes.factory.js | 108 + .../crudx.swagger.routes.factory.js.map | 1 + .../crudx-swagger/src/services/index.d.ts | 1 + .../crudx-swagger/src/services/index.js | 5 + .../crudx-swagger/src/services/index.js.map | 1 + dist/packages/crudx/CHANGELOG.md | 5 + dist/packages/crudx/README.md | 192 + dist/packages/crudx/package.json | 48 + dist/packages/crudx/src/constants.d.ts | 10 + dist/packages/crudx/src/constants.js | 14 + dist/packages/crudx/src/constants.js.map | 1 + .../src/decorators/crud-auth.decorator.d.ts | 2 + .../src/decorators/crud-auth.decorator.js | 9 + .../src/decorators/crud-auth.decorator.js.map | 1 + .../crudx/src/decorators/crud.decorator.d.ts | 2 + .../crudx/src/decorators/crud.decorator.js | 14 + .../src/decorators/crud.decorator.js.map | 1 + .../decorators/feature-action.decorator.d.ts | 5 + .../decorators/feature-action.decorator.js | 14 + .../feature-action.decorator.js.map | 1 + dist/packages/crudx/src/decorators/index.d.ts | 6 + dist/packages/crudx/src/decorators/index.js | 10 + .../crudx/src/decorators/index.js.map | 1 + .../src/decorators/override.decorator.d.ts | 2 + .../src/decorators/override.decorator.js | 10 + .../src/decorators/override.decorator.js.map | 1 + .../src/decorators/parsed-body.decorator.d.ts | 1 + .../src/decorators/parsed-body.decorator.js | 9 + .../decorators/parsed-body.decorator.js.map | 1 + .../decorators/parsed-request.decorator.d.ts | 1 + .../decorators/parsed-request.decorator.js | 10 + .../parsed-request.decorator.js.map | 1 + .../crudx/src/enums/crud-actions.enum.d.ts | 11 + .../crudx/src/enums/crud-actions.enum.js | 16 + .../crudx/src/enums/crud-actions.enum.js.map | 1 + .../enums/crud-validation-groups.enum.d.ts | 4 + .../src/enums/crud-validation-groups.enum.js | 9 + .../enums/crud-validation-groups.enum.js.map | 1 + dist/packages/crudx/src/enums/index.d.ts | 2 + dist/packages/crudx/src/enums/index.js | 6 + dist/packages/crudx/src/enums/index.js.map | 1 + dist/packages/crudx/src/exceptions/index.d.ts | 1 + dist/packages/crudx/src/exceptions/index.js | 5 + .../crudx/src/exceptions/index.js.map | 1 + .../exceptions/request-query.exception.d.ts | 3 + .../src/exceptions/request-query.exception.js | 10 + .../exceptions/request-query.exception.js.map | 1 + .../crudx/src/helpers/checkers.helper.d.ts | 12 + .../crudx/src/helpers/checkers.helper.js | 34 + .../crudx/src/helpers/checkers.helper.js.map | 1 + .../src/helpers/crud-validation.helper.d.ts | 8 + .../src/helpers/crud-validation.helper.js | 53 + .../src/helpers/crud-validation.helper.js.map | 1 + dist/packages/crudx/src/helpers/index.d.ts | 6 + dist/packages/crudx/src/helpers/index.js | 10 + dist/packages/crudx/src/helpers/index.js.map | 1 + .../crudx/src/helpers/reflection.helper.d.ts | 30 + .../crudx/src/helpers/reflection.helper.js | 105 + .../src/helpers/reflection.helper.js.map | 1 + .../helpers/request-validation.helper.d.ts | 12 + .../src/helpers/request-validation.helper.js | 82 + .../helpers/request-validation.helper.js.map | 1 + .../src/helpers/safe-require.helper.d.ts | 1 + .../crudx/src/helpers/safe-require.helper.js | 13 + .../src/helpers/safe-require.helper.js.map | 1 + .../crudx/src/helpers/serialize.helper.d.ts | 4 + .../crudx/src/helpers/serialize.helper.js | 59 + .../crudx/src/helpers/serialize.helper.js.map | 1 + dist/packages/crudx/src/index.d.ts | 9 + dist/packages/crudx/src/index.js | 13 + dist/packages/crudx/src/index.js.map | 1 + .../interceptors/crud-base.interceptor.d.ts | 10 + .../src/interceptors/crud-base.interceptor.js | 23 + .../interceptors/crud-base.interceptor.js.map | 1 + .../crud-request.interceptor.d.ts | 18 + .../interceptors/crud-request.interceptor.js | 163 + .../crud-request.interceptor.js.map | 1 + .../crud-response.interceptor.d.ts | 9 + .../interceptors/crud-response.interceptor.js | 80 + .../crud-response.interceptor.js.map | 1 + .../crudx/src/interceptors/index.d.ts | 2 + dist/packages/crudx/src/interceptors/index.js | 6 + .../crudx/src/interceptors/index.js.map | 1 + .../interfaces/auth-options.interface.d.ts | 20 + .../src/interfaces/auth-options.interface.js | 3 + .../interfaces/auth-options.interface.js.map | 1 + .../src/interfaces/base-route.interface.d.ts | 10 + .../src/interfaces/base-route.interface.js | 3 + .../interfaces/base-route.interface.js.map | 1 + .../interfaces/create-many-dto.interface.d.ts | 3 + .../interfaces/create-many-dto.interface.js | 3 + .../create-many-dto.interface.js.map | 1 + .../create-query-params.interface.d.ts | 15 + .../create-query-params.interface.js | 3 + .../create-query-params.interface.js.map | 1 + .../interfaces/crud-controller.interface.d.ts | 15 + .../interfaces/crud-controller.interface.js | 3 + .../crud-controller.interface.js.map | 1 + .../crud-global-config.interface.d.ts | 31 + .../crud-global-config.interface.js | 3 + .../crud-global-config.interface.js.map | 1 + .../interfaces/crud-options.interface.d.ts | 30 + .../src/interfaces/crud-options.interface.js | 3 + .../interfaces/crud-options.interface.js.map | 1 + .../interfaces/crud-request.interface.d.ts | 8 + .../src/interfaces/crud-request.interface.js | 3 + .../interfaces/crud-request.interface.js.map | 1 + .../src/interfaces/dto-options.interface.d.ts | 5 + .../src/interfaces/dto-options.interface.js | 3 + .../interfaces/dto-options.interface.js.map | 1 + .../get-many-default-response.interface.d.ts | 7 + .../get-many-default-response.interface.js | 3 + ...get-many-default-response.interface.js.map | 1 + dist/packages/crudx/src/interfaces/index.d.ts | 18 + dist/packages/crudx/src/interfaces/index.js | 22 + .../crudx/src/interfaces/index.js.map | 1 + .../interfaces/model-options.interface.d.ts | 3 + .../src/interfaces/model-options.interface.js | 3 + .../interfaces/model-options.interface.js.map | 1 + .../operators-options.interface.d.ts | 13 + .../interfaces/operators-options.interface.js | 3 + .../operators-options.interface.js.map | 1 + .../interfaces/params-options.interface.d.ts | 11 + .../interfaces/params-options.interface.js | 3 + .../params-options.interface.js.map | 1 + .../interfaces/parsed-request.interface.d.ts | 25 + .../interfaces/parsed-request.interface.js | 3 + .../parsed-request.interface.js.map | 1 + .../interfaces/query-options.interface.d.ts | 26 + .../src/interfaces/query-options.interface.js | 3 + .../interfaces/query-options.interface.js.map | 1 + ...quest-query-builder-options.interface.d.ts | 19 + ...request-query-builder-options.interface.js | 3 + ...est-query-builder-options.interface.js.map | 1 + .../interfaces/routes-options.interface.d.ts | 40 + .../interfaces/routes-options.interface.js | 3 + .../routes-options.interface.js.map | 1 + .../serialize-options.interface.d.ts | 11 + .../interfaces/serialize-options.interface.js | 3 + .../serialize-options.interface.js.map | 1 + .../src/services/abstract-crud.service.d.ts | 47 + .../src/services/abstract-crud.service.js | 92 + .../src/services/abstract-crud.service.js.map | 1 + .../src/services/crud-config.service.d.ts | 5 + .../crudx/src/services/crud-config.service.js | 60 + .../src/services/crud-config.service.js.map | 1 + dist/packages/crudx/src/services/index.d.ts | 6 + dist/packages/crudx/src/services/index.js | 10 + dist/packages/crudx/src/services/index.js.map | 1 + .../src/services/query-builder.service.d.ts | 35 + .../src/services/query-builder.service.js | 203 + .../src/services/query-builder.service.js.map | 1 + .../src/services/query-parser.service.d.ts | 54 + .../src/services/query-parser.service.js | 295 + .../src/services/query-parser.service.js.map | 1 + .../src/services/routes-factory.service.d.ts | 39 + .../src/services/routes-factory.service.js | 410 + .../services/routes-factory.service.js.map | 1 + .../src/services/type-orm-crud.service.d.ts | 122 + .../src/services/type-orm-crud.service.js | 907 + .../src/services/type-orm-crud.service.js.map | 1 + .../crudx/src/types/common.types.d.ts | 6 + dist/packages/crudx/src/types/common.types.js | 3 + .../crudx/src/types/common.types.js.map | 1 + dist/packages/crudx/src/types/crud.types.d.ts | 4 + dist/packages/crudx/src/types/crud.types.js | 3 + .../crudx/src/types/crud.types.js.map | 1 + dist/packages/crudx/src/types/index.d.ts | 4 + dist/packages/crudx/src/types/index.js | 8 + dist/packages/crudx/src/types/index.js.map | 1 + .../crudx/src/types/request-param.types.d.ts | 1 + .../crudx/src/types/request-param.types.js | 3 + .../src/types/request-param.types.js.map | 1 + .../crudx/src/types/request-query.types.d.ts | 90 + .../crudx/src/types/request-query.types.js | 30 + .../src/types/request-query.types.js.map | 1 + dist/packages/demo/assets/.gitkeep | 0 dist/packages/demo/main.js | 5489 ++ dist/packages/demo/main.js.map | 1 + docker-compose.yml | 55 + jest.config.ts | 5 + jest.preset.js | 3 + jsconfig.json | 5 + nest-kit.code-workspace | 7 + nx.json | 44 + package-lock.json | 17537 ++++++ package.json | 71 + packages/.gitkeep | 0 packages/crudx-swagger/.eslintrc.json | 25 + packages/crudx-swagger/.npmignore | 4 + packages/crudx-swagger/AUTHOR | 4 + packages/crudx-swagger/CHANGELOG.md | 5 + packages/crudx-swagger/LICENSE | 7 + packages/crudx-swagger/README.md | 88 + .../demo/crudx-swagger-demo/.eslintrc.json | 18 + .../demo/crudx-swagger-demo/jest.config.ts | 12 + .../demo/crudx-swagger-demo/project.json | 66 + .../src/app/app.controller.spec.ts | 54 + .../src/app/app.controller.ts | 39 + .../crudx-swagger-demo/src/app/app.module.ts | 36 + .../crudx-swagger-demo/src/app/app.service.ts | 14 + .../crudx-swagger-demo/src/app/user.model.ts | 17 + .../crudx-swagger-demo/src/assets/.gitkeep | 0 .../crudx-swagger-demo/src/database.config.ts | 15 + .../demo/crudx-swagger-demo/src/main.ts | 44 + .../demo/crudx-swagger-demo/tsconfig.app.json | 12 + .../demo/crudx-swagger-demo/tsconfig.json | 16 + .../crudx-swagger-demo/tsconfig.spec.json | 14 + .../demo/crudx-swagger-demo/webpack.config.js | 8 + packages/crudx-swagger/jest.config.ts | 11 + packages/crudx-swagger/package.json | 40 + packages/crudx-swagger/project.json | 68 + packages/crudx-swagger/src/index.ts | 2 + packages/crudx-swagger/src/lib/index.ts | 1 + .../crudx-swagger/src/lib/swagger.helper.ts | 438 + .../services/crudx.swagger.routes.factory.ts | 161 + packages/crudx-swagger/src/services/index.ts | 1 + .../tests/__fixtures__/base.model.ts | 26 + .../tests/__fixtures__/base.module.ts | 35 + .../tests/__fixtures__/base.service.ts | 12 + .../tests/__fixtures__/database.config.ts | 16 + .../crudx-swagger/tests/crudx-swagger.spec.ts | 148 + packages/crudx-swagger/tsconfig.json | 22 + packages/crudx-swagger/tsconfig.lib.json | 16 + packages/crudx-swagger/tsconfig.spec.json | 14 + packages/crudx/.eslintrc.json | 25 + packages/crudx/.npmignore | 4 + packages/crudx/AUTHOR | 4 + packages/crudx/CHANGELOG.md | 5 + packages/crudx/LICENSE | 7 + packages/crudx/README.md | 198 + packages/crudx/demo/crudx-demo/.eslintrc.json | 18 + packages/crudx/demo/crudx-demo/jest.config.ts | 11 + packages/crudx/demo/crudx-demo/project.json | 64 + .../src/app/address/address-type.entity.ts | 24 + .../src/app/address/address-type.service.ts | 15 + .../app/address/address.controller.spec.ts | 129 + .../src/app/address/address.controller.ts | 40 + .../src/app/address/address.entity.ts | 59 + .../src/app/address/address.module.ts | 19 + .../src/app/address/address.service.ts | 15 + .../crudx-demo/src/app/app.controller.spec.ts | 22 + .../demo/crudx-demo/src/app/app.controller.ts | 13 + .../demo/crudx-demo/src/app/app.module.ts | 47 + .../crudx-demo/src/app/app.service.spec.ts | 21 + .../demo/crudx-demo/src/app/app.service.ts | 8 + .../src/app/auth/auth.controller.spec.ts | 102 + .../src/app/auth/auth.controller.ts | 21 + .../crudx-demo/src/app/auth/auth.guard.ts | 53 + .../crudx-demo/src/app/auth/auth.module.ts | 28 + .../crudx-demo/src/app/auth/auth.service.ts | 24 + .../demo/crudx-demo/src/app/auth/constants.ts | 3 + .../crudx-demo/src/app/auth/me.controller.ts | 38 + .../src/app/claims/claim.controller.spec.ts | 270 + .../src/app/claims/claim.controller.ts | 44 + .../crudx-demo/src/app/claims/claim.entity.ts | 35 + .../crudx-demo/src/app/claims/claim.module.ts | 14 + .../src/app/claims/claim.service.ts | 15 + .../app/contract/contract.controller.spec.ts | 97 + .../src/app/contract/contract.controller.ts | 36 + .../src/app/contract/contract.create.dto.ts | 27 + .../contract/contract.create.response.dto.ts | 12 + .../src/app/contract/contract.entity.ts | 52 + .../src/app/contract/contract.module.ts | 14 + .../src/app/contract/contract.service.ts | 15 + .../src/app/phone/phone.controller.spec.ts | 145 + .../src/app/phone/phone.controller.ts | 98 + .../crudx-demo/src/app/phone/phone.dto.ts | 20 + .../crudx-demo/src/app/phone/phone.entity.ts | 32 + .../crudx-demo/src/app/phone/phone.module.ts | 14 + .../crudx-demo/src/app/phone/phone.service.ts | 15 + .../user-email-already-exists.constraint.ts | 34 + .../src/app/user/user.controller.spec.ts | 226 + .../src/app/user/user.controller.ts | 43 + .../demo/crudx-demo/src/app/user/user.dto.ts | 37 + .../src/app/user/user.entity.spec.ts | 61 + .../crudx-demo/src/app/user/user.entity.ts | 96 + .../crudx-demo/src/app/user/user.module.ts | 15 + .../src/app/user/user.service.spec.ts | 54 + .../crudx-demo/src/app/user/user.service.ts | 21 + .../crudx/demo/crudx-demo/src/assets/.gitkeep | 0 .../crudx-demo/src/config/database.config.ts | 21 + .../crudx/demo/crudx-demo/src/config/index.ts | 1 + packages/crudx/demo/crudx-demo/src/main.ts | 58 + .../demo/crudx-demo/src/support/loader.ts | 46 + .../demo/crudx-demo/support/test-setup.ts | 10 + .../crudx/demo/crudx-demo/tsconfig.app.json | 12 + packages/crudx/demo/crudx-demo/tsconfig.json | 16 + .../crudx/demo/crudx-demo/tsconfig.spec.json | 14 + .../crudx/demo/crudx-demo/webpack.config.js | 8 + .../crudx/docs/actions-access-management.md | 91 + packages/crudx/docs/authentication.md | 61 + packages/crudx/docs/controllers.md | 191 + packages/crudx/docs/global-options.md | 76 + packages/crudx/docs/nested-controllers.md | 121 + packages/crudx/docs/orm.md | 67 + packages/crudx/docs/query-filter.md | 277 + packages/crudx/docs/requests.md | 315 + packages/crudx/docs/routes.md | 185 + packages/crudx/docs/serialization.md | 87 + packages/crudx/docs/validation.md | 103 + packages/crudx/jest.config.ts | 11 + .../crudx/node_modules/.package-lock.json | 13 + .../node_modules/tslib/CopyrightNotice.txt | 15 + packages/crudx/node_modules/tslib/LICENSE.txt | 12 + packages/crudx/node_modules/tslib/README.md | 164 + packages/crudx/node_modules/tslib/SECURITY.md | 41 + .../node_modules/tslib/modules/index.d.ts | 37 + .../crudx/node_modules/tslib/modules/index.js | 68 + .../node_modules/tslib/modules/package.json | 3 + .../crudx/node_modules/tslib/package.json | 47 + packages/crudx/node_modules/tslib/tslib.d.ts | 453 + .../crudx/node_modules/tslib/tslib.es6.html | 1 + .../crudx/node_modules/tslib/tslib.es6.js | 370 + .../crudx/node_modules/tslib/tslib.es6.mjs | 370 + packages/crudx/node_modules/tslib/tslib.html | 1 + packages/crudx/node_modules/tslib/tslib.js | 421 + packages/crudx/package.json | 57 + packages/crudx/project.json | 63 + packages/crudx/src/constants.ts | 12 + .../src/decorators/crud-auth.decorator.ts | 8 + .../crudx/src/decorators/crud.decorator.ts | 13 + .../decorators/feature-action.decorator.ts | 12 + packages/crudx/src/decorators/index.ts | 6 + .../src/decorators/override.decorator.ts | 13 + .../src/decorators/parsed-body.decorator.ts | 7 + .../decorators/parsed-request.decorator.ts | 10 + packages/crudx/src/enums/crud-actions.enum.ts | 11 + .../src/enums/crud-validation-groups.enum.ts | 4 + packages/crudx/src/enums/index.ts | 2 + packages/crudx/src/exceptions/index.ts | 1 + .../src/exceptions/request-query.exception.ts | 5 + packages/crudx/src/helpers/checkers.helper.ts | 45 + .../src/helpers/crud-validation.helper.ts | 53 + packages/crudx/src/helpers/index.ts | 6 + .../crudx/src/helpers/reflection.helper.ts | 170 + .../src/helpers/request-validation.helper.ts | 128 + .../crudx/src/helpers/safe-require.helper.ts | 7 + .../crudx/src/helpers/serialize.helper.ts | 42 + packages/crudx/src/index.ts | 9 + .../src/interceptors/crud-base.interceptor.ts | 27 + .../interceptors/crud-request.interceptor.ts | 223 + .../interceptors/crud-response.interceptor.ts | 99 + packages/crudx/src/interceptors/index.ts | 2 + .../src/interfaces/auth-options.interface.ts | 22 + .../src/interfaces/base-route.interface.ts | 12 + .../interfaces/create-many-dto.interface.ts | 3 + .../create-query-params.interface.ts | 26 + .../interfaces/crud-controller.interface.ts | 17 + .../crud-global-config.interface.ts | 32 + .../src/interfaces/crud-options.interface.ts | 35 + .../src/interfaces/crud-request.interface.ts | 9 + .../src/interfaces/dto-options.interface.ts | 5 + .../get-many-default-response.interface.ts | 7 + packages/crudx/src/interfaces/index.ts | 18 + .../src/interfaces/model-options.interface.ts | 3 + .../interfaces/operators-options.interface.ts | 13 + .../interfaces/params-options.interface.ts | 13 + .../interfaces/parsed-request.interface.ts | 33 + .../src/interfaces/query-options.interface.ts | 29 + ...request-query-builder-options.interface.ts | 19 + .../interfaces/routes-options.interface.ts | 47 + .../interfaces/serialize-options.interface.ts | 12 + .../src/services/abstract-crud.service.ts | 129 + .../crudx/src/services/crud-config.service.ts | 68 + packages/crudx/src/services/index.ts | 6 + .../src/services/query-builder.service.ts | 324 + .../src/services/query-parser.service.ts | 442 + .../src/services/routes-factory.service.ts | 549 + .../src/services/type-orm-crud.service.ts | 1371 + packages/crudx/src/types/common.types.ts | 7 + packages/crudx/src/types/crud.types.ts | 21 + packages/crudx/src/types/index.ts | 4 + .../crudx/src/types/request-param.types.ts | 1 + .../crudx/src/types/request-query.types.ts | 111 + .../tests/__fixture__/database.config.ts | 20 + packages/crudx/tests/__fixture__/exception.ts | 21 + .../tests/__fixture__/guards/acl.guard.ts | 32 + .../tests/__fixture__/model/embeded-dates.ts | 9 + .../__fixture__/model/identity-type.model.ts | 10 + .../tests/__fixture__/model/nested.model.ts | 33 + .../__fixture__/model/relation-test.model.ts | 33 + .../__fixture__/model/testing-model.model.ts | 48 + .../tests/__fixture__/model/uuid.model.ts | 13 + .../__fixture__/module/test-module.module.ts | 47 + .../service/relation.test.service.ts | 15 + .../service/testing-service.service.ts | 16 + .../tests/__fixture__/service/uuid.service.ts | 15 + .../crudx/tests/auth/auth.controller.spec.ts | 72 + .../condig-options/global.options.spec.ts | 102 + .../tests/decorators/crud.decorator.spec.ts | 408 + .../tests/decorators/crud.options.spec.ts | 366 + packages/crudx/tests/helpers/checkers.spec.ts | 83 + .../tests/helpers/request-validation.spec.ts | 284 + .../crud.request.interceptor.spec.ts | 212 + .../services/query-builder-searches.spec.ts | 877 + .../services/query-builder.service.spec.ts | 108 + .../crudx/tests/services/query.parser.spec.ts | 117 + .../services/type-orm-curd-service.spec.ts | 301 + packages/crudx/tsconfig.json | 22 + packages/crudx/tsconfig.lib.json | 10 + packages/crudx/tsconfig.spec.json | 14 + project.json | 14 + resource/nestkit-logo.jpeg | Bin 0 -> 19884 bytes serve.sh | 7 + test-all.sh | 3 + test.sh | 7 + tmp/local-registry/storage/.verdaccio-db.json | 1 + .../storage/types-registry/package.json | 46263 ++++++++++++++++ tools/scripts/publish.mjs | 44 + tools/tsconfig.tools.json | 12 + tsconfig.base.json | 23 + yarn.lock | 9364 ++++ 531 files changed, 135064 insertions(+) create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 coverage/packages/crudx-swagger/base.css create mode 100644 coverage/packages/crudx-swagger/base.model.ts.html create mode 100644 coverage/packages/crudx-swagger/base.module.ts.html create mode 100644 coverage/packages/crudx-swagger/base.service.ts.html create mode 100644 coverage/packages/crudx-swagger/block-navigation.js create mode 100644 coverage/packages/crudx-swagger/database.config.ts.html create mode 100644 coverage/packages/crudx-swagger/favicon.png create mode 100644 coverage/packages/crudx-swagger/index.html create mode 100644 coverage/packages/crudx-swagger/prettify.css create mode 100644 coverage/packages/crudx-swagger/prettify.js create mode 100644 coverage/packages/crudx-swagger/sort-arrow-sprite.png create mode 100644 coverage/packages/crudx-swagger/sorter.js create mode 100644 coverage/packages/crudx-swagger/src/index.html create mode 100644 coverage/packages/crudx-swagger/src/index.ts.html create mode 100644 coverage/packages/crudx-swagger/src/lib/index.html create mode 100644 coverage/packages/crudx-swagger/src/lib/index.ts.html create mode 100644 coverage/packages/crudx-swagger/src/lib/swagger.helper.ts.html create mode 100644 coverage/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts.html create mode 100644 coverage/packages/crudx-swagger/src/services/index.html create mode 100644 coverage/packages/crudx-swagger/src/services/index.ts.html create mode 100644 coverage/packages/crudx-swagger/tests/__fixtures__/base.model.ts.html create mode 100644 coverage/packages/crudx-swagger/tests/__fixtures__/base.module.ts.html create mode 100644 coverage/packages/crudx-swagger/tests/__fixtures__/base.service.ts.html create mode 100644 coverage/packages/crudx-swagger/tests/__fixtures__/database.config.ts.html create mode 100644 coverage/packages/crudx-swagger/tests/__fixtures__/index.html create mode 100644 coverage/packages/crudx/base.css create mode 100644 coverage/packages/crudx/block-navigation.js create mode 100644 coverage/packages/crudx/favicon.png create mode 100644 coverage/packages/crudx/index.html create mode 100644 coverage/packages/crudx/prettify.css create mode 100644 coverage/packages/crudx/prettify.js create mode 100644 coverage/packages/crudx/sort-arrow-sprite.png create mode 100644 coverage/packages/crudx/sorter.js create mode 100644 coverage/packages/crudx/src/constants.ts.html create mode 100644 coverage/packages/crudx/src/decorators/crud-auth.decorator.ts.html create mode 100644 coverage/packages/crudx/src/decorators/crud.decorator.ts.html create mode 100644 coverage/packages/crudx/src/decorators/feature-action.decorator.ts.html create mode 100644 coverage/packages/crudx/src/decorators/index.html create mode 100644 coverage/packages/crudx/src/decorators/index.ts.html create mode 100644 coverage/packages/crudx/src/decorators/override.decorator.ts.html create mode 100644 coverage/packages/crudx/src/decorators/parsed-body.decorator.ts.html create mode 100644 coverage/packages/crudx/src/decorators/parsed-request.decorator.ts.html create mode 100644 coverage/packages/crudx/src/enums/crud-actions.enum.ts.html create mode 100644 coverage/packages/crudx/src/enums/crud-validation-groups.enum.ts.html create mode 100644 coverage/packages/crudx/src/enums/index.html create mode 100644 coverage/packages/crudx/src/enums/index.ts.html create mode 100644 coverage/packages/crudx/src/exceptions/index.html create mode 100644 coverage/packages/crudx/src/exceptions/index.ts.html create mode 100644 coverage/packages/crudx/src/exceptions/request-query.exception.ts.html create mode 100644 coverage/packages/crudx/src/helpers/checkers.helper.ts.html create mode 100644 coverage/packages/crudx/src/helpers/crud-validation.helper.ts.html create mode 100644 coverage/packages/crudx/src/helpers/index.html create mode 100644 coverage/packages/crudx/src/helpers/index.ts.html create mode 100644 coverage/packages/crudx/src/helpers/reflection.helper.ts.html create mode 100644 coverage/packages/crudx/src/helpers/request-validation.helper.ts.html create mode 100644 coverage/packages/crudx/src/helpers/safe-require.helper.ts.html create mode 100644 coverage/packages/crudx/src/helpers/serialize.helper.ts.html create mode 100644 coverage/packages/crudx/src/helpers/swagger.helper.ts.html create mode 100644 coverage/packages/crudx/src/index.html create mode 100644 coverage/packages/crudx/src/index.ts.html create mode 100644 coverage/packages/crudx/src/interceptors/crud-base.interceptor.ts.html create mode 100644 coverage/packages/crudx/src/interceptors/crud-request.interceptor.ts.html create mode 100644 coverage/packages/crudx/src/interceptors/crud-response.interceptor.ts.html create mode 100644 coverage/packages/crudx/src/interceptors/index.html create mode 100644 coverage/packages/crudx/src/interceptors/index.ts.html create mode 100644 coverage/packages/crudx/src/interfaces/index.html create mode 100644 coverage/packages/crudx/src/interfaces/index.ts.html create mode 100644 coverage/packages/crudx/src/services/abstract-crud.service.ts.html create mode 100644 coverage/packages/crudx/src/services/crud-config.service.ts.html create mode 100644 coverage/packages/crudx/src/services/index.html create mode 100644 coverage/packages/crudx/src/services/index.ts.html create mode 100644 coverage/packages/crudx/src/services/query-builder.service.ts.html create mode 100644 coverage/packages/crudx/src/services/query-parser.service.ts.html create mode 100644 coverage/packages/crudx/src/services/routes-factory.service.ts.html create mode 100644 coverage/packages/crudx/src/services/type-orm-crud.service.ts.html create mode 100644 coverage/packages/crudx/src/types/index.html create mode 100644 coverage/packages/crudx/src/types/index.ts.html create mode 100644 coverage/packages/crudx/src/types/request-query.types.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/database.config.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/exception.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/guards/acl.guard.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/guards/index.html create mode 100644 coverage/packages/crudx/tests/__fixture__/index.html create mode 100644 coverage/packages/crudx/tests/__fixture__/model/embeded-dates.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/model/identity-type.model.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/model/index.html create mode 100644 coverage/packages/crudx/tests/__fixture__/model/nested.model.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/model/relation-test.model.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/model/testing-model.model.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/model/uuid.model.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/module/index.html create mode 100644 coverage/packages/crudx/tests/__fixture__/module/test-module.module.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/service/index.html create mode 100644 coverage/packages/crudx/tests/__fixture__/service/relation.test.service.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/service/testing-service.service.ts.html create mode 100644 coverage/packages/crudx/tests/__fixture__/service/uuid.service.ts.html create mode 100644 dist/packages/crudx-demo/assets/.gitkeep create mode 100644 dist/packages/crudx-demo/main.js create mode 100644 dist/packages/crudx-demo/main.js.map create mode 100644 dist/packages/crudx-swagger/CHANGELOG.md create mode 100644 dist/packages/crudx-swagger/README.md create mode 100644 dist/packages/crudx-swagger/demo/crudx-swagger-demo/assets/.gitkeep create mode 100644 dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js create mode 100644 dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js.map create mode 100644 dist/packages/crudx-swagger/package.json create mode 100644 dist/packages/crudx-swagger/src/index.d.ts create mode 100644 dist/packages/crudx-swagger/src/index.js create mode 100644 dist/packages/crudx-swagger/src/index.js.map create mode 100644 dist/packages/crudx-swagger/src/lib/index.d.ts create mode 100644 dist/packages/crudx-swagger/src/lib/index.js create mode 100644 dist/packages/crudx-swagger/src/lib/index.js.map create mode 100644 dist/packages/crudx-swagger/src/lib/swagger.helper.d.ts create mode 100644 dist/packages/crudx-swagger/src/lib/swagger.helper.js create mode 100644 dist/packages/crudx-swagger/src/lib/swagger.helper.js.map create mode 100644 dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.d.ts create mode 100644 dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js create mode 100644 dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js.map create mode 100644 dist/packages/crudx-swagger/src/services/index.d.ts create mode 100644 dist/packages/crudx-swagger/src/services/index.js create mode 100644 dist/packages/crudx-swagger/src/services/index.js.map create mode 100644 dist/packages/crudx/CHANGELOG.md create mode 100644 dist/packages/crudx/README.md create mode 100644 dist/packages/crudx/package.json create mode 100644 dist/packages/crudx/src/constants.d.ts create mode 100644 dist/packages/crudx/src/constants.js create mode 100644 dist/packages/crudx/src/constants.js.map create mode 100644 dist/packages/crudx/src/decorators/crud-auth.decorator.d.ts create mode 100644 dist/packages/crudx/src/decorators/crud-auth.decorator.js create mode 100644 dist/packages/crudx/src/decorators/crud-auth.decorator.js.map create mode 100644 dist/packages/crudx/src/decorators/crud.decorator.d.ts create mode 100644 dist/packages/crudx/src/decorators/crud.decorator.js create mode 100644 dist/packages/crudx/src/decorators/crud.decorator.js.map create mode 100644 dist/packages/crudx/src/decorators/feature-action.decorator.d.ts create mode 100644 dist/packages/crudx/src/decorators/feature-action.decorator.js create mode 100644 dist/packages/crudx/src/decorators/feature-action.decorator.js.map create mode 100644 dist/packages/crudx/src/decorators/index.d.ts create mode 100644 dist/packages/crudx/src/decorators/index.js create mode 100644 dist/packages/crudx/src/decorators/index.js.map create mode 100644 dist/packages/crudx/src/decorators/override.decorator.d.ts create mode 100644 dist/packages/crudx/src/decorators/override.decorator.js create mode 100644 dist/packages/crudx/src/decorators/override.decorator.js.map create mode 100644 dist/packages/crudx/src/decorators/parsed-body.decorator.d.ts create mode 100644 dist/packages/crudx/src/decorators/parsed-body.decorator.js create mode 100644 dist/packages/crudx/src/decorators/parsed-body.decorator.js.map create mode 100644 dist/packages/crudx/src/decorators/parsed-request.decorator.d.ts create mode 100644 dist/packages/crudx/src/decorators/parsed-request.decorator.js create mode 100644 dist/packages/crudx/src/decorators/parsed-request.decorator.js.map create mode 100644 dist/packages/crudx/src/enums/crud-actions.enum.d.ts create mode 100644 dist/packages/crudx/src/enums/crud-actions.enum.js create mode 100644 dist/packages/crudx/src/enums/crud-actions.enum.js.map create mode 100644 dist/packages/crudx/src/enums/crud-validation-groups.enum.d.ts create mode 100644 dist/packages/crudx/src/enums/crud-validation-groups.enum.js create mode 100644 dist/packages/crudx/src/enums/crud-validation-groups.enum.js.map create mode 100644 dist/packages/crudx/src/enums/index.d.ts create mode 100644 dist/packages/crudx/src/enums/index.js create mode 100644 dist/packages/crudx/src/enums/index.js.map create mode 100644 dist/packages/crudx/src/exceptions/index.d.ts create mode 100644 dist/packages/crudx/src/exceptions/index.js create mode 100644 dist/packages/crudx/src/exceptions/index.js.map create mode 100644 dist/packages/crudx/src/exceptions/request-query.exception.d.ts create mode 100644 dist/packages/crudx/src/exceptions/request-query.exception.js create mode 100644 dist/packages/crudx/src/exceptions/request-query.exception.js.map create mode 100644 dist/packages/crudx/src/helpers/checkers.helper.d.ts create mode 100644 dist/packages/crudx/src/helpers/checkers.helper.js create mode 100644 dist/packages/crudx/src/helpers/checkers.helper.js.map create mode 100644 dist/packages/crudx/src/helpers/crud-validation.helper.d.ts create mode 100644 dist/packages/crudx/src/helpers/crud-validation.helper.js create mode 100644 dist/packages/crudx/src/helpers/crud-validation.helper.js.map create mode 100644 dist/packages/crudx/src/helpers/index.d.ts create mode 100644 dist/packages/crudx/src/helpers/index.js create mode 100644 dist/packages/crudx/src/helpers/index.js.map create mode 100644 dist/packages/crudx/src/helpers/reflection.helper.d.ts create mode 100644 dist/packages/crudx/src/helpers/reflection.helper.js create mode 100644 dist/packages/crudx/src/helpers/reflection.helper.js.map create mode 100644 dist/packages/crudx/src/helpers/request-validation.helper.d.ts create mode 100644 dist/packages/crudx/src/helpers/request-validation.helper.js create mode 100644 dist/packages/crudx/src/helpers/request-validation.helper.js.map create mode 100644 dist/packages/crudx/src/helpers/safe-require.helper.d.ts create mode 100644 dist/packages/crudx/src/helpers/safe-require.helper.js create mode 100644 dist/packages/crudx/src/helpers/safe-require.helper.js.map create mode 100644 dist/packages/crudx/src/helpers/serialize.helper.d.ts create mode 100644 dist/packages/crudx/src/helpers/serialize.helper.js create mode 100644 dist/packages/crudx/src/helpers/serialize.helper.js.map create mode 100644 dist/packages/crudx/src/index.d.ts create mode 100644 dist/packages/crudx/src/index.js create mode 100644 dist/packages/crudx/src/index.js.map create mode 100644 dist/packages/crudx/src/interceptors/crud-base.interceptor.d.ts create mode 100644 dist/packages/crudx/src/interceptors/crud-base.interceptor.js create mode 100644 dist/packages/crudx/src/interceptors/crud-base.interceptor.js.map create mode 100644 dist/packages/crudx/src/interceptors/crud-request.interceptor.d.ts create mode 100644 dist/packages/crudx/src/interceptors/crud-request.interceptor.js create mode 100644 dist/packages/crudx/src/interceptors/crud-request.interceptor.js.map create mode 100644 dist/packages/crudx/src/interceptors/crud-response.interceptor.d.ts create mode 100644 dist/packages/crudx/src/interceptors/crud-response.interceptor.js create mode 100644 dist/packages/crudx/src/interceptors/crud-response.interceptor.js.map create mode 100644 dist/packages/crudx/src/interceptors/index.d.ts create mode 100644 dist/packages/crudx/src/interceptors/index.js create mode 100644 dist/packages/crudx/src/interceptors/index.js.map create mode 100644 dist/packages/crudx/src/interfaces/auth-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/auth-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/auth-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/base-route.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/base-route.interface.js create mode 100644 dist/packages/crudx/src/interfaces/base-route.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/create-many-dto.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/create-many-dto.interface.js create mode 100644 dist/packages/crudx/src/interfaces/create-many-dto.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/create-query-params.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/create-query-params.interface.js create mode 100644 dist/packages/crudx/src/interfaces/create-query-params.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/crud-controller.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/crud-controller.interface.js create mode 100644 dist/packages/crudx/src/interfaces/crud-controller.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/crud-global-config.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/crud-global-config.interface.js create mode 100644 dist/packages/crudx/src/interfaces/crud-global-config.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/crud-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/crud-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/crud-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/crud-request.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/crud-request.interface.js create mode 100644 dist/packages/crudx/src/interfaces/crud-request.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/dto-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/dto-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/dto-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/get-many-default-response.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/get-many-default-response.interface.js create mode 100644 dist/packages/crudx/src/interfaces/get-many-default-response.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/index.d.ts create mode 100644 dist/packages/crudx/src/interfaces/index.js create mode 100644 dist/packages/crudx/src/interfaces/index.js.map create mode 100644 dist/packages/crudx/src/interfaces/model-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/model-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/model-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/operators-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/operators-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/operators-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/params-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/params-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/params-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/parsed-request.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/parsed-request.interface.js create mode 100644 dist/packages/crudx/src/interfaces/parsed-request.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/query-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/query-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/query-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/request-query-builder-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/routes-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/routes-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/routes-options.interface.js.map create mode 100644 dist/packages/crudx/src/interfaces/serialize-options.interface.d.ts create mode 100644 dist/packages/crudx/src/interfaces/serialize-options.interface.js create mode 100644 dist/packages/crudx/src/interfaces/serialize-options.interface.js.map create mode 100644 dist/packages/crudx/src/services/abstract-crud.service.d.ts create mode 100644 dist/packages/crudx/src/services/abstract-crud.service.js create mode 100644 dist/packages/crudx/src/services/abstract-crud.service.js.map create mode 100644 dist/packages/crudx/src/services/crud-config.service.d.ts create mode 100644 dist/packages/crudx/src/services/crud-config.service.js create mode 100644 dist/packages/crudx/src/services/crud-config.service.js.map create mode 100644 dist/packages/crudx/src/services/index.d.ts create mode 100644 dist/packages/crudx/src/services/index.js create mode 100644 dist/packages/crudx/src/services/index.js.map create mode 100644 dist/packages/crudx/src/services/query-builder.service.d.ts create mode 100644 dist/packages/crudx/src/services/query-builder.service.js create mode 100644 dist/packages/crudx/src/services/query-builder.service.js.map create mode 100644 dist/packages/crudx/src/services/query-parser.service.d.ts create mode 100644 dist/packages/crudx/src/services/query-parser.service.js create mode 100644 dist/packages/crudx/src/services/query-parser.service.js.map create mode 100644 dist/packages/crudx/src/services/routes-factory.service.d.ts create mode 100644 dist/packages/crudx/src/services/routes-factory.service.js create mode 100644 dist/packages/crudx/src/services/routes-factory.service.js.map create mode 100644 dist/packages/crudx/src/services/type-orm-crud.service.d.ts create mode 100644 dist/packages/crudx/src/services/type-orm-crud.service.js create mode 100644 dist/packages/crudx/src/services/type-orm-crud.service.js.map create mode 100644 dist/packages/crudx/src/types/common.types.d.ts create mode 100644 dist/packages/crudx/src/types/common.types.js create mode 100644 dist/packages/crudx/src/types/common.types.js.map create mode 100644 dist/packages/crudx/src/types/crud.types.d.ts create mode 100644 dist/packages/crudx/src/types/crud.types.js create mode 100644 dist/packages/crudx/src/types/crud.types.js.map create mode 100644 dist/packages/crudx/src/types/index.d.ts create mode 100644 dist/packages/crudx/src/types/index.js create mode 100644 dist/packages/crudx/src/types/index.js.map create mode 100644 dist/packages/crudx/src/types/request-param.types.d.ts create mode 100644 dist/packages/crudx/src/types/request-param.types.js create mode 100644 dist/packages/crudx/src/types/request-param.types.js.map create mode 100644 dist/packages/crudx/src/types/request-query.types.d.ts create mode 100644 dist/packages/crudx/src/types/request-query.types.js create mode 100644 dist/packages/crudx/src/types/request-query.types.js.map create mode 100644 dist/packages/demo/assets/.gitkeep create mode 100644 dist/packages/demo/main.js create mode 100644 dist/packages/demo/main.js.map create mode 100644 docker-compose.yml create mode 100644 jest.config.ts create mode 100644 jest.preset.js create mode 100644 jsconfig.json create mode 100644 nest-kit.code-workspace create mode 100644 nx.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 packages/.gitkeep create mode 100644 packages/crudx-swagger/.eslintrc.json create mode 100644 packages/crudx-swagger/.npmignore create mode 100644 packages/crudx-swagger/AUTHOR create mode 100644 packages/crudx-swagger/CHANGELOG.md create mode 100644 packages/crudx-swagger/LICENSE create mode 100644 packages/crudx-swagger/README.md create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/.eslintrc.json create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/jest.config.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/project.json create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.spec.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.module.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.service.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/app/user.model.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/assets/.gitkeep create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/database.config.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/src/main.ts create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.app.json create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.json create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.spec.json create mode 100644 packages/crudx-swagger/demo/crudx-swagger-demo/webpack.config.js create mode 100644 packages/crudx-swagger/jest.config.ts create mode 100644 packages/crudx-swagger/package.json create mode 100644 packages/crudx-swagger/project.json create mode 100644 packages/crudx-swagger/src/index.ts create mode 100644 packages/crudx-swagger/src/lib/index.ts create mode 100644 packages/crudx-swagger/src/lib/swagger.helper.ts create mode 100644 packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts create mode 100644 packages/crudx-swagger/src/services/index.ts create mode 100644 packages/crudx-swagger/tests/__fixtures__/base.model.ts create mode 100644 packages/crudx-swagger/tests/__fixtures__/base.module.ts create mode 100644 packages/crudx-swagger/tests/__fixtures__/base.service.ts create mode 100644 packages/crudx-swagger/tests/__fixtures__/database.config.ts create mode 100644 packages/crudx-swagger/tests/crudx-swagger.spec.ts create mode 100644 packages/crudx-swagger/tsconfig.json create mode 100644 packages/crudx-swagger/tsconfig.lib.json create mode 100644 packages/crudx-swagger/tsconfig.spec.json create mode 100644 packages/crudx/.eslintrc.json create mode 100644 packages/crudx/.npmignore create mode 100644 packages/crudx/AUTHOR create mode 100644 packages/crudx/CHANGELOG.md create mode 100644 packages/crudx/LICENSE create mode 100644 packages/crudx/README.md create mode 100644 packages/crudx/demo/crudx-demo/.eslintrc.json create mode 100644 packages/crudx/demo/crudx-demo/jest.config.ts create mode 100644 packages/crudx/demo/crudx-demo/project.json create mode 100644 packages/crudx/demo/crudx-demo/src/app/address/address-type.entity.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/address/address-type.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/address/address.controller.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/address/address.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/address/address.entity.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/address/address.module.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/address/address.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/app.controller.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/app.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/app.module.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/app.service.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/app.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/auth/auth.guard.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/auth/auth.module.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/auth/auth.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/auth/constants.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/auth/me.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/claims/claim.entity.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/claims/claim.module.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/claims/claim.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/contract/contract.create.dto.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/contract/contract.create.response.dto.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/contract/contract.entity.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/contract/contract.module.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/contract/contract.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/phone/phone.dto.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/phone/phone.entity.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/phone/phone.module.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/phone/phone.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user-email-already-exists.constraint.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.controller.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.controller.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.dto.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.entity.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.entity.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.module.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.service.spec.ts create mode 100644 packages/crudx/demo/crudx-demo/src/app/user/user.service.ts create mode 100644 packages/crudx/demo/crudx-demo/src/assets/.gitkeep create mode 100644 packages/crudx/demo/crudx-demo/src/config/database.config.ts create mode 100644 packages/crudx/demo/crudx-demo/src/config/index.ts create mode 100644 packages/crudx/demo/crudx-demo/src/main.ts create mode 100644 packages/crudx/demo/crudx-demo/src/support/loader.ts create mode 100644 packages/crudx/demo/crudx-demo/support/test-setup.ts create mode 100644 packages/crudx/demo/crudx-demo/tsconfig.app.json create mode 100644 packages/crudx/demo/crudx-demo/tsconfig.json create mode 100644 packages/crudx/demo/crudx-demo/tsconfig.spec.json create mode 100644 packages/crudx/demo/crudx-demo/webpack.config.js create mode 100644 packages/crudx/docs/actions-access-management.md create mode 100644 packages/crudx/docs/authentication.md create mode 100644 packages/crudx/docs/controllers.md create mode 100644 packages/crudx/docs/global-options.md create mode 100644 packages/crudx/docs/nested-controllers.md create mode 100644 packages/crudx/docs/orm.md create mode 100644 packages/crudx/docs/query-filter.md create mode 100644 packages/crudx/docs/requests.md create mode 100644 packages/crudx/docs/routes.md create mode 100644 packages/crudx/docs/serialization.md create mode 100644 packages/crudx/docs/validation.md create mode 100644 packages/crudx/jest.config.ts create mode 100644 packages/crudx/node_modules/.package-lock.json create mode 100644 packages/crudx/node_modules/tslib/CopyrightNotice.txt create mode 100644 packages/crudx/node_modules/tslib/LICENSE.txt create mode 100644 packages/crudx/node_modules/tslib/README.md create mode 100644 packages/crudx/node_modules/tslib/SECURITY.md create mode 100644 packages/crudx/node_modules/tslib/modules/index.d.ts create mode 100644 packages/crudx/node_modules/tslib/modules/index.js create mode 100644 packages/crudx/node_modules/tslib/modules/package.json create mode 100644 packages/crudx/node_modules/tslib/package.json create mode 100644 packages/crudx/node_modules/tslib/tslib.d.ts create mode 100644 packages/crudx/node_modules/tslib/tslib.es6.html create mode 100644 packages/crudx/node_modules/tslib/tslib.es6.js create mode 100644 packages/crudx/node_modules/tslib/tslib.es6.mjs create mode 100644 packages/crudx/node_modules/tslib/tslib.html create mode 100644 packages/crudx/node_modules/tslib/tslib.js create mode 100644 packages/crudx/package.json create mode 100644 packages/crudx/project.json create mode 100644 packages/crudx/src/constants.ts create mode 100644 packages/crudx/src/decorators/crud-auth.decorator.ts create mode 100644 packages/crudx/src/decorators/crud.decorator.ts create mode 100644 packages/crudx/src/decorators/feature-action.decorator.ts create mode 100644 packages/crudx/src/decorators/index.ts create mode 100644 packages/crudx/src/decorators/override.decorator.ts create mode 100644 packages/crudx/src/decorators/parsed-body.decorator.ts create mode 100644 packages/crudx/src/decorators/parsed-request.decorator.ts create mode 100644 packages/crudx/src/enums/crud-actions.enum.ts create mode 100644 packages/crudx/src/enums/crud-validation-groups.enum.ts create mode 100644 packages/crudx/src/enums/index.ts create mode 100644 packages/crudx/src/exceptions/index.ts create mode 100644 packages/crudx/src/exceptions/request-query.exception.ts create mode 100644 packages/crudx/src/helpers/checkers.helper.ts create mode 100644 packages/crudx/src/helpers/crud-validation.helper.ts create mode 100644 packages/crudx/src/helpers/index.ts create mode 100644 packages/crudx/src/helpers/reflection.helper.ts create mode 100644 packages/crudx/src/helpers/request-validation.helper.ts create mode 100644 packages/crudx/src/helpers/safe-require.helper.ts create mode 100644 packages/crudx/src/helpers/serialize.helper.ts create mode 100644 packages/crudx/src/index.ts create mode 100644 packages/crudx/src/interceptors/crud-base.interceptor.ts create mode 100644 packages/crudx/src/interceptors/crud-request.interceptor.ts create mode 100644 packages/crudx/src/interceptors/crud-response.interceptor.ts create mode 100644 packages/crudx/src/interceptors/index.ts create mode 100644 packages/crudx/src/interfaces/auth-options.interface.ts create mode 100644 packages/crudx/src/interfaces/base-route.interface.ts create mode 100644 packages/crudx/src/interfaces/create-many-dto.interface.ts create mode 100644 packages/crudx/src/interfaces/create-query-params.interface.ts create mode 100644 packages/crudx/src/interfaces/crud-controller.interface.ts create mode 100644 packages/crudx/src/interfaces/crud-global-config.interface.ts create mode 100644 packages/crudx/src/interfaces/crud-options.interface.ts create mode 100644 packages/crudx/src/interfaces/crud-request.interface.ts create mode 100644 packages/crudx/src/interfaces/dto-options.interface.ts create mode 100644 packages/crudx/src/interfaces/get-many-default-response.interface.ts create mode 100644 packages/crudx/src/interfaces/index.ts create mode 100644 packages/crudx/src/interfaces/model-options.interface.ts create mode 100644 packages/crudx/src/interfaces/operators-options.interface.ts create mode 100644 packages/crudx/src/interfaces/params-options.interface.ts create mode 100644 packages/crudx/src/interfaces/parsed-request.interface.ts create mode 100644 packages/crudx/src/interfaces/query-options.interface.ts create mode 100644 packages/crudx/src/interfaces/request-query-builder-options.interface.ts create mode 100644 packages/crudx/src/interfaces/routes-options.interface.ts create mode 100644 packages/crudx/src/interfaces/serialize-options.interface.ts create mode 100644 packages/crudx/src/services/abstract-crud.service.ts create mode 100644 packages/crudx/src/services/crud-config.service.ts create mode 100644 packages/crudx/src/services/index.ts create mode 100644 packages/crudx/src/services/query-builder.service.ts create mode 100644 packages/crudx/src/services/query-parser.service.ts create mode 100644 packages/crudx/src/services/routes-factory.service.ts create mode 100644 packages/crudx/src/services/type-orm-crud.service.ts create mode 100644 packages/crudx/src/types/common.types.ts create mode 100644 packages/crudx/src/types/crud.types.ts create mode 100644 packages/crudx/src/types/index.ts create mode 100644 packages/crudx/src/types/request-param.types.ts create mode 100644 packages/crudx/src/types/request-query.types.ts create mode 100644 packages/crudx/tests/__fixture__/database.config.ts create mode 100644 packages/crudx/tests/__fixture__/exception.ts create mode 100644 packages/crudx/tests/__fixture__/guards/acl.guard.ts create mode 100644 packages/crudx/tests/__fixture__/model/embeded-dates.ts create mode 100644 packages/crudx/tests/__fixture__/model/identity-type.model.ts create mode 100644 packages/crudx/tests/__fixture__/model/nested.model.ts create mode 100644 packages/crudx/tests/__fixture__/model/relation-test.model.ts create mode 100644 packages/crudx/tests/__fixture__/model/testing-model.model.ts create mode 100644 packages/crudx/tests/__fixture__/model/uuid.model.ts create mode 100644 packages/crudx/tests/__fixture__/module/test-module.module.ts create mode 100644 packages/crudx/tests/__fixture__/service/relation.test.service.ts create mode 100644 packages/crudx/tests/__fixture__/service/testing-service.service.ts create mode 100644 packages/crudx/tests/__fixture__/service/uuid.service.ts create mode 100644 packages/crudx/tests/auth/auth.controller.spec.ts create mode 100644 packages/crudx/tests/condig-options/global.options.spec.ts create mode 100644 packages/crudx/tests/decorators/crud.decorator.spec.ts create mode 100644 packages/crudx/tests/decorators/crud.options.spec.ts create mode 100644 packages/crudx/tests/helpers/checkers.spec.ts create mode 100644 packages/crudx/tests/helpers/request-validation.spec.ts create mode 100644 packages/crudx/tests/interceptors/crud.request.interceptor.spec.ts create mode 100644 packages/crudx/tests/services/query-builder-searches.spec.ts create mode 100644 packages/crudx/tests/services/query-builder.service.spec.ts create mode 100644 packages/crudx/tests/services/query.parser.spec.ts create mode 100644 packages/crudx/tests/services/type-orm-curd-service.spec.ts create mode 100644 packages/crudx/tsconfig.json create mode 100644 packages/crudx/tsconfig.lib.json create mode 100644 packages/crudx/tsconfig.spec.json create mode 100644 project.json create mode 100644 resource/nestkit-logo.jpeg create mode 100755 serve.sh create mode 100755 test-all.sh create mode 100755 test.sh create mode 100644 tmp/local-registry/storage/.verdaccio-db.json create mode 100644 tmp/local-registry/storage/types-registry/package.json create mode 100644 tools/scripts/publish.mjs create mode 100644 tools/tsconfig.tools.json create mode 100644 tsconfig.base.json create mode 100644 yarn.lock diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..8032f15a6 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,32 @@ +# Contributing to Nest-kit + + +# Instructions + +## 1. Fork the Repository to your own Github Account + +## 2. Reference an Issue + +Code and changelogs work better when work references an actual tracking item that helps to understand why it happened. For this reason changes should only be made if they're referencing a documented issue. + +Feel free to reference an existing open issue or create a new one with a brief title and/or description + + +## 3. Check out a new branch that references the issue + +Pick a good branch name. Try something that summarizes what you're doing in a descriptive way. Optionally include the issue number: + +* feature/{number}-my-new-thing +* docs/improve-readme +* fix/{number}some-bug + + +## 4. Push your changes + +Be sure to include a reference to the issue number on the branch comments, e.g: + +closes #{number} + +re #{number} + +**Happy coding**! \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..70ba9b13b --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright 2024 2am. Technologies + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000000000..d725e1098 --- /dev/null +++ b/README.md @@ -0,0 +1,118 @@ +# NestKit + +

+ +

+ +Nest-kit comes from the heart of [2am.tech](https://2am.tech), a software development company with a deep passion for open source. We are committed to giving back to the community by making the tools we've developed to meet our own internal needs available to everyone. + +NestKit is a monorepo project, meant to provide a comprehensive set of libraries for building projects with [nestjs](https://nestjs.com/). We hope you will find it useful! + +| Package | Description | Version | Changelog | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| [@2amtech/crudx](./packages/crudx/README.md) | A resourceful library enhances the creation of CRUD endpoints for your application. You can find samples demonstrating its functionality and specifications in the [documentation](./packages/crudx/README.md). | ![Version 1.0.0](https://img.shields.io/badge/version-1.0.0-blue) | [changelog](./packages/crudx/CHANGELOG.md) | +| [@2amtech/crudx-swagger](./packages/crudx-swagger/README.md) | This library provides an easy to use module to apply default swagger docs to auto-generated routes created with the [@2amtech/crudx-package.](./packages/crudx/README.md) | ![Version 1.0.0](https://img.shields.io/badge/version-1.0.0-blue) | [changelog](./packages/crudx-swagger/CHANGELOG.md) + +# Contribute + +Contributions are **welcome** and will be fully **credited**. Please, refer to [contribution guidelines](CONTRIBUTING.md) for more details. + +# License + +[MIT License](LICENSE) + +# Testing + +Tests can be found with each package provided. You may execute them directly on your local machine or in a docker machine. + +### Instructions: + +To run tests, Docker is required, and following commands should be run: + +1. Run `docker compose up` +2. Run `./test-all.sh` + +To run tests for a specific package run `./test package-name`. + +### On a local machine + +To run the tests on a local machine, you must first set your +Mysql database credentials to `.env.testing` file. Then run +the following commands to setup the environment: + +```shell +$ yarn +$ yarn nx reset +``` + +With the environment set, the next command will run the tests for the target project, it should be: + +```shell +$ yarn nx run {proect-name}:test + +# where project name is the target package, e.g: +$ yarn nx run crudx:test +``` + +# Demo + +Similarly to the unit tests, you may have access to demos and their tests under each package's tests folder, setting them up locally or using a provided docker-machine. + +You may serve the demo app or run its unit test. + +### Using the docker-machine: + +```shell +# Clone this repository and access its folder; + +# to serve the demo app +$ ./serve #{demo-name} +# e.g: +$ ./serve crudx-demo + +# app will be running at http://localhost:3000/v1 +``` + +### Setting it up locally: + +As for testing, you must first define your Mysql credentials to the .env.testing file. +Then, follow the next commands to install the required libraries: + +```shell +$ yarn +$ yarn nx reset +``` + +The next commands will both run the target demo app tests and serve it: + +```shell +$ yarn nx run {target-project}:test # it runs the project unit tests, + +#e.g: +$ yarn nx run crudx-demo:test + +$ yarn nx run {targe-project}:serve # it will serve the target demo app at http://localhost:3000/v1 + +#e.g +$ yarn nx run crudx-demo:serve +``` + +# Contributors + +Thanks goes to these amazing people: + + + + + + + + + +

2amjsouza

Antonio

ArekX
+ +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/coverage/packages/crudx-swagger/base.css b/coverage/packages/crudx-swagger/base.css new file mode 100644 index 000000000..f418035b4 --- /dev/null +++ b/coverage/packages/crudx-swagger/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/packages/crudx-swagger/base.model.ts.html b/coverage/packages/crudx-swagger/base.model.ts.html new file mode 100644 index 000000000..987e325da --- /dev/null +++ b/coverage/packages/crudx-swagger/base.model.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for base.model.ts + + + + + + + + + +
+
+

All files base.model.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +141x +  +  +1x +  +  +3x +  +  +3x +  +  +3x + 
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
+ 
+@Entity()
+export class Base extends BaseEntity {
+ 
+  @PrimaryGeneratedColumn()
+  id: number | null = null;
+ 
+  @Column({ type: 'varchar', length: 255 })
+  name: string = '';
+ 
+  @Column({ type: 'int' })
+  age: number = 0;
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/base.module.ts.html b/coverage/packages/crudx-swagger/base.module.ts.html new file mode 100644 index 000000000..0d64ece4b --- /dev/null +++ b/coverage/packages/crudx-swagger/base.module.ts.html @@ -0,0 +1,205 @@ + + + + + + Code coverage report for base.module.ts + + + + + + + + + +
+
+

All files base.module.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +411x +1x +1x +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x
import { Module } from "@nestjs/common";
+import { ConfigModule, ConfigService } from "@nestjs/config";
+import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm";
+ 
+import { Base } from "./base.model";
+import { BaseService } from "./base.service";
+import {databaseConfig} from "./database.config";
+ 
+@Module({
+  imports: [
+    ConfigModule.forRoot({
+      isGlobal: true,
+      envFilePath: [".env.testing"],
+      load: [databaseConfig],
+    }),
+    TypeOrmModule.forRootAsync({
+      useFactory: (config: ConfigService) =>
+        <TypeOrmModuleOptions>{
+          type: config.get<string>("database.type"),
+          host: config.get<string>("database.host"),
+          port: config.get<number>("database.port"),
+          username: config.get<string>("database.username"),
+          password: config.get<string>("database.password"),
+          database: config.get<string>("database.database"),
+          entities: config.get<string[]>("database.entities"),
+          synchronize: config.get<boolean>("database.synchronize"),
+        },
+      inject: [ConfigService],
+    }),
+    TypeOrmModule.forFeature([
+      Base
+    ]),
+  ],
+  providers: [
+    BaseService,
+  ],
+  exports: [
+    BaseService,
+  ]
+})
+export class BaseModule {}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/base.service.ts.html b/coverage/packages/crudx-swagger/base.service.ts.html new file mode 100644 index 000000000..0b1a70da0 --- /dev/null +++ b/coverage/packages/crudx-swagger/base.service.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for base.service.ts + + + + + + + + + +
+
+

All files base.service.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +1x +1x +  +  +1x +  +  +1x +1x +1x +  + 
import { TypeOrmCrudService } from "@2amtech/crudx";
+import { Injectable } from "@nestjs/common";
+import { InjectRepository } from "@nestjs/typeorm";
+ 
+ 
+import { Base } from "./base.model";
+ 
+@Injectable()
+export class BaseService extends TypeOrmCrudService<Base> {
+  constructor(@InjectRepository(Base) override readonly repo: any) {
+    super(repo)
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/block-navigation.js b/coverage/packages/crudx-swagger/block-navigation.js new file mode 100644 index 000000000..cc1213023 --- /dev/null +++ b/coverage/packages/crudx-swagger/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/packages/crudx-swagger/database.config.ts.html b/coverage/packages/crudx-swagger/database.config.ts.html new file mode 100644 index 000000000..a6a15194e --- /dev/null +++ b/coverage/packages/crudx-swagger/database.config.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for database.config.ts + + + + + + + + + +
+
+

All files database.config.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  + 
import { registerAs } from "@nestjs/config";
+ 
+import { Base } from "./base.model";
+ 
+export const databaseConfig = registerAs("database", () => ({
+  type: process.env["DB_TYPE"],
+  host: process.env["DB_HOST"],
+  port: process.env["DB_PORT"],
+  username: process.env["DB_USERNAME"],
+  password: process.env["DB_PASSWORD"],
+  database: process.env["DB_DATABASE"],
+  entities: [Base],
+  synchronize: true,
+  autoLoadEntities: true,
+  encoding: process.env["DB_CHARSET"],
+}));
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/favicon.png b/coverage/packages/crudx-swagger/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 100% + Statements + 170/170 +
+ + +
+ 70.9% + Branches + 117/165 +
+ + +
+ 100% + Functions + 37/37 +
+ + +
+ 100% + Lines + 162/162 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
100%2/2100%0/0100%0/0100%2/2
src/lib +
+
100%72/7277.64%66/85100%19/19100%72/72
src/services +
+
100%63/6363.75%51/80100%14/14100%63/63
tests/__fixtures__ +
+
100%33/33100%0/0100%4/4100%25/25
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/prettify.css b/coverage/packages/crudx-swagger/prettify.css new file mode 100644 index 000000000..b317a7cda --- /dev/null +++ b/coverage/packages/crudx-swagger/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/packages/crudx-swagger/prettify.js b/coverage/packages/crudx-swagger/prettify.js new file mode 100644 index 000000000..b3225238f --- /dev/null +++ b/coverage/packages/crudx-swagger/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/packages/crudx-swagger/sort-arrow-sprite.png b/coverage/packages/crudx-swagger/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/packages/crudx-swagger/sorter.js b/coverage/packages/crudx-swagger/sorter.js new file mode 100644 index 000000000..2bb296a8c --- /dev/null +++ b/coverage/packages/crudx-swagger/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/packages/crudx-swagger/src/index.html b/coverage/packages/crudx-swagger/src/index.html new file mode 100644 index 000000000..ef2671c89 --- /dev/null +++ b/coverage/packages/crudx-swagger/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%2/2100%0/0100%0/0100%2/2
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/src/index.ts.html b/coverage/packages/crudx-swagger/src/index.ts.html new file mode 100644 index 000000000..8a94295a9 --- /dev/null +++ b/coverage/packages/crudx-swagger/src/index.ts.html @@ -0,0 +1,88 @@ + + + + + + Code coverage report for src/index.ts + + + + + + + + + +
+
+

All files / src index.ts

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +21x +1x
export * from "./lib";
+export * from "./services";
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/src/lib/index.html b/coverage/packages/crudx-swagger/src/lib/index.html new file mode 100644 index 000000000..a995e2026 --- /dev/null +++ b/coverage/packages/crudx-swagger/src/lib/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/lib + + + + + + + + + +
+
+

All files src/lib

+
+ +
+ 100% + Statements + 72/72 +
+ + +
+ 77.64% + Branches + 66/85 +
+ + +
+ 100% + Functions + 19/19 +
+ + +
+ 100% + Lines + 72/72 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%1/1100%0/0100%0/0100%1/1
swagger.helper.ts +
+
100%71/7177.64%66/85100%19/19100%71/71
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/src/lib/index.ts.html b/coverage/packages/crudx-swagger/src/lib/index.ts.html new file mode 100644 index 000000000..a3355accb --- /dev/null +++ b/coverage/packages/crudx-swagger/src/lib/index.ts.html @@ -0,0 +1,85 @@ + + + + + + Code coverage report for src/lib/index.ts + + + + + + + + + +
+
+

All files / src/lib index.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
11x
export * from "./swagger.helper";
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/src/lib/swagger.helper.ts.html b/coverage/packages/crudx-swagger/src/lib/swagger.helper.ts.html new file mode 100644 index 000000000..c7b4a4470 --- /dev/null +++ b/coverage/packages/crudx-swagger/src/lib/swagger.helper.ts.html @@ -0,0 +1,1402 @@ + + + + + + Code coverage report for src/lib/swagger.helper.ts + + + + + + + + + +
+
+

All files / src/lib swagger.helper.ts

+
+ +
+ 100% + Statements + 71/71 +
+ + +
+ 77.64% + Branches + 66/85 +
+ + +
+ 100% + Functions + 19/19 +
+ + +
+ 100% + Lines + 71/71 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +4401x +  +  +  +  +  +  +1x +1x +1x +1x +1x +1x +  +  +1x +  +1x +1x +  +  +1x +  +16x +  +  +  +  +  +  +  +  +  +  +  +  +16x +  +  +  +31x +  +  +  +  +2x +2x +2x +  +  +14x +14x +  +2x +  +  +  +  +  +  +  +  +16x +  +  +  +2x +  +  +  +32x +  +  +  +2x +  +  +  +17x +  +  +  +  +  +  +  +  +15x +  +15x +  +2x +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +4x +4x +  +  +  +  +  +  +  +  +  +15x +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +15x +15x +  +165x +  +15x +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +15x +  +15x +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +15x +  +15x +  +  +  +  +  +  +15x +  +15x +  +  +  +  +  +  +15x +  +15x +  +  +  +  +  +  +15x +  +  +  +  +15x +  +  +  +  +  +  +15x +  +  +  +  +15x +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +11x +  +  +  +  +  +15x +15x +165x +165x +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { QueryBuilderService } from "@2amtech/crudx";
+import {
+  MergedCrudOptions,
+  ParamsOptions,
+  RequestQueryBuilderOptions,
+} from '@2amtech/crudx';
+import { BaseRouteName } from '@2amtech/crudx';
+import { R } from '@2amtech/crudx';
+import { safeRequire } from "@2amtech/crudx";
+import { HttpStatus } from "@nestjs/common";
+import { getSchemaPath } from '@nestjs/swagger';
+import * as SWAGGER_CONSTANTS from '@nestjs/swagger/dist/constants';
+import { get, isArray, isString, keys } from "lodash";
+ 
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const pluralize = require("pluralize");
+ 
+export const swaggerPkgJson = safeRequire("@nestjs/swagger/package.json", () =>
+  require("@nestjs/swagger/package.json")
+);
+ 
+export class Swagger {
+  static operationsMap(modelName: string): { [key in BaseRouteName]: string } {
+    return {
+      getManyBase: `Retrieve multiple ${pluralize(modelName)}`,
+      getOneBase: `Retrieve a single ${modelName}`,
+      createManyBase: `Create multiple ${pluralize(modelName)}`,
+      createOneBase: `Create a single ${modelName}`,
+      updateOneBase: `Update a single ${modelName}`,
+      replaceOneBase: `Replace a single ${modelName}`,
+      deleteOneBase: `Delete a single ${modelName}`,
+      recoverOneBase: `Recover one ${modelName}`,
+    };
+  }
+ 
+  static setOperation(metadata: any, func: Function) {
+    R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func);
+  }
+ 
+  static setParams(metadata: any, func: Function) {
+     R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func);
+  }
+ 
+  static setExtraModels(swaggerModels: any) {
+    /* istanbul ignore else */
+    if (SWAGGER_CONSTANTS) {
+      const meta = Swagger.getExtraModels(swaggerModels.get);
+      const models: any[] = [
+        ...meta,
+        ...keys(swaggerModels)
+          .map((name) => swaggerModels[name])
+          .filter((one) => one && one.name !== swaggerModels.get.name),
+      ];
+      R.set(
+        SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS,
+        models,
+        swaggerModels.get
+      );
+    }
+  }
+ 
+  static setResponseOk(metadata: any, func: Function) {
+    R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func);
+  }
+ 
+  static getOperation(func: Function): any {
+    return R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {};
+  }
+ 
+  static getParams(func: Function): any[] {
+    return R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || [];
+  }
+ 
+  static getExtraModels(target: any): any[] {
+    return R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || [];
+  }
+ 
+  static getResponseOk(func: Function): any {
+    return R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {};
+  }
+ 
+  static createResponseMeta(
+    name: BaseRouteName,
+    options: MergedCrudOptions,
+    swaggerModels: any
+  ): any {
+ 
+    const { routes, query } = options;
+ 
+    switch (name) {
+      case "getOneBase":
+        return {
+          [HttpStatus.OK]: {
+            description: "Get one base response",
+            type: swaggerModels?.get ?? {},
+          },
+        };
+      case "getManyBase":
+        return {
+          [HttpStatus.OK]: query?.alwaysPaginate
+            ? {
+                description: "Get paginated response",
+                type: swaggerModels.getMany,
+              }
+            : {
+                description: "Get many base response",
+                schema: {
+                  oneOf: [
+                    {
+                      $ref: getSchemaPath(swaggerModels.getMany.name),
+                    },
+                    {
+                      type: "array",
+                      items: {
+                        $ref: getSchemaPath(swaggerModels.get.name),
+                      },
+                    },
+                  ],
+                },
+              },
+        };
+      case "createOneBase":
+        return {
+          [HttpStatus.CREATED]: {
+            description: "Get create one base response",
+            schema: {
+              $ref: getSchemaPath(swaggerModels.create.name),
+            },
+          },
+        };
+      case "createManyBase":
+        return {
+          [HttpStatus.CREATED]: swaggerModels.createMany
+            ? {
+                description: "Get create many base response",
+                schema: {
+                  $ref: getSchemaPath(swaggerModels.createMany.name),
+                },
+              }
+            : {
+                description: "Get create many base response",
+                schema: {
+                  type: "array",
+                  items: {
+                    $ref: getSchemaPath(swaggerModels.create.name),
+                  },
+                },
+              },
+        };
+      case "deleteOneBase":
+        return {
+          [HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted
+            ? {
+                description: "Delete one base response",
+                schema: {
+                  $ref: getSchemaPath(swaggerModels.delete.name),
+                },
+              }
+            : {
+                description: "Delete one base response",
+              },
+        };
+      case "recoverOneBase":
+        return {
+          [HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered
+            ? {
+                description: "Recover one base response",
+                schema: {
+                  $ref: getSchemaPath(swaggerModels.recover.name),
+                },
+              }
+            : {
+                description: "Recover one base response",
+              },
+        };
+      default:
+        const dto = swaggerModels[name.split("OneBase")[0]];
+        return {
+          [HttpStatus.OK]: {
+            description: "Response",
+            schema: { $ref: getSchemaPath(dto.name) },
+          },
+        };
+    }
+  }
+ 
+  static createPathParamsMeta(options: ParamsOptions): any[] {
+    return SWAGGER_CONSTANTS
+      ? keys(options).map((param) => ({
+          name: param,
+          required: true,
+          in: "path",
+          type: options[param].type === "number" ? Number : String,
+          enum: isArray(options[param]?.enum)
+            ? Object.values(<Array<string>>options[param].enum)
+            : undefined,
+        }))
+      : [];
+  }
+ 
+  static createQueryParamsMeta(
+    name: BaseRouteName,
+    options: MergedCrudOptions
+  ) {
+    const {
+      delim: d,
+      delimStr: coma,
+      fields,
+      search,
+      filter,
+      or,
+      join,
+      sort,
+      limit,
+      offset,
+      page,
+      cache,
+      includeDeleted,
+    } = Swagger.getQueryParamsNames();
+    const docsLink = (a: string) =>
+      // TODO: to modify
+      `<a href="https://github.com/2am.tech/crudx/wiki/Requests#${a}" target="_blank">Docs</a>`;
+ 
+    const fieldsMetaBase = {
+      name: fields,
+      description: `Selects resource fields. ${docsLink("select")}`,
+      required: false,
+      in: "query",
+    };
+    const fieldsMeta = {
+      ...fieldsMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: false,
+    };
+ 
+    const searchMetaBase = {
+      name: search,
+      description: `Adds search condition. ${docsLink("search")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const searchMeta = { ...searchMetaBase, schema: { type: "string" } };
+ 
+    const filterMetaBase = {
+      name: filter,
+      description: `Adds filter condition. ${docsLink("filter")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const filterMeta = {
+      ...filterMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const orMetaBase = {
+      name: or,
+      description: `Adds OR condition. ${docsLink("or")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const orMeta = {
+      ...orMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const sortMetaBase = {
+      name: sort,
+      description: `Adds sort by field. ${docsLink("sort")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const sortMeta = {
+      ...sortMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const joinMetaBase = {
+      name: join,
+      description: `Adds relational resources. ${docsLink("join")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const joinMeta = {
+      ...joinMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const limitMetaBase = {
+      name: limit,
+      description: `Limit amount of resources. ${docsLink("limit")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const limitMeta = { ...limitMetaBase, schema: { type: "integer" } };
+ 
+    const offsetMetaBase = {
+      name: offset,
+      description: `Offset amount of resources. ${docsLink("offset")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const offsetMeta = { ...offsetMetaBase, schema: { type: "integer" } };
+ 
+    const pageMetaBase = {
+      name: page,
+      description: `Page portion of resources. ${docsLink("page")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const pageMeta = { ...pageMetaBase, schema: { type: "integer" } };
+ 
+    const cacheMetaBase = {
+      name: cache,
+      description: `Reset cache (if was enabled). ${docsLink("cache")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const cacheMeta = {
+      ...cacheMetaBase,
+      schema: { type: "integer", minimum: 0, maximum: 1 },
+    };
+ 
+    const includeDeletedMetaBase = {
+      name: includeDeleted,
+      description: `Include deleted. ${docsLink("includeDeleted")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const includeDeletedMeta = {
+      ...includeDeletedMetaBase,
+      schema: { type: "integer", minimum: 0, maximum: 1 },
+    };
+ 
+    switch (name) {
+      case "getManyBase":
+        return options.query?.softDelete
+          ? [
+              fieldsMeta,
+              searchMeta,
+              filterMeta,
+              orMeta,
+              sortMeta,
+              joinMeta,
+              limitMeta,
+              offsetMeta,
+              pageMeta,
+              cacheMeta,
+              includeDeletedMeta,
+            ]
+          : [
+              fieldsMeta,
+              searchMeta,
+              filterMeta,
+              orMeta,
+              sortMeta,
+              joinMeta,
+              limitMeta,
+              offsetMeta,
+              pageMeta,
+              cacheMeta,
+            ];
+      case "getOneBase":
+        return options.query?.softDelete
+          ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta]
+          : [fieldsMeta, joinMeta, cacheMeta];
+      default:
+        return [];
+    }
+  }
+ 
+  static getQueryParamsNames() {
+    const qbOptions: RequestQueryBuilderOptions =
+      QueryBuilderService.getOptions();
+    const name = (n: any) => {
+      const selected = get(qbOptions, `paramNamesMap[${n}]`);
+      return isString(selected) ? selected : selected?.[0];
+    };
+ 
+    return {
+      delim: qbOptions.delim,
+      delimStr: qbOptions.delimStr,
+      fields: name("fields"),
+      search: name("search"),
+      filter: name("filter"),
+      or: name("or"),
+      join: name("join"),
+      sort: name("sort"),
+      limit: name("limit"),
+      offset: name("offset"),
+      page: name("page"),
+      cache: name("cache"),
+      includeDeleted: name("includeDeleted"),
+    };
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts.html b/coverage/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts.html new file mode 100644 index 000000000..292f15458 --- /dev/null +++ b/coverage/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts.html @@ -0,0 +1,541 @@ + + + + + + Code coverage report for src/services/crudx.swagger.routes.factory.ts + + + + + + + + + +
+
+

All files / src/services crudx.swagger.routes.factory.ts

+
+ +
+ 100% + Statements + 62/62 +
+ + +
+ 63.75% + Branches + 51/80 +
+ + +
+ 100% + Functions + 14/14 +
+ + +
+ 100% + Lines + 62/62 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +1531x +1x +  +1x +  +1x +2x +  +2x +2x +  +  +  +2x +2x +2x +2x +2x +2x +  +  +  +15x +  +15x +15x +15x +15x +  +15x +  +  +  +15x +  +15x +15x +  +  +  +15x +15x +  +  +  +  +  +15x +15x +15x +  +  +15x +  +9x +  +15x +15x +  +  +  +15x +15x +15x +  +  +  +  +  +  +15x +  +15x +15x +  +  +  +  +  +  +2x +  +  +  +2x +  +2x +  +  +2x +  +  +2x +  +  +2x +  +  +2x +  +  +2x +  +  +2x +  +  +2x +  +  +  +2x +  +2x +  +19x +  +  +19x +145x +  +  +19x +1x +1x +  +  +1x +1x +  +  +1x +1x +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +  +  +  +  + 
import { BaseRoute, BaseRouteName, CrudOptions, isIn, R, RoutesFactoryService, SerializeHelper } from "@2amtech/crudx";
+import { get, isEqual, isFunction, keys } from "lodash";
+ 
+import { Swagger } from "../lib/swagger.helper";
+ 
+export class CrudxSwaggerRoutesFactory extends RoutesFactoryService {
+  protected swaggerModels: any = {};
+ 
+  constructor(protected override target: any, options: CrudOptions) {
+    super(target, options);
+  }
+ 
+  protected override create(): void {
+    const routesSchema: BaseRoute[] = this.getRoutesSchema();
+    this.mergeOptions();
+    this.setResponseModels();
+    this.createRoutes(routesSchema);
+    this.overrideRoutes(routesSchema);
+    this.enableRoutes(routesSchema);
+  }
+ 
+  protected override setBaseRouteMeta(name: BaseRouteName): void {
+    super.setBaseRouteMeta(name);
+ 
+    this.setSwaggerOperation(name);
+    this.setSwaggerPathParams(name);
+    this.setSwaggerQueryParams(name);
+    this.setSwaggerResponseOk(name);
+    // set decorators after Swagger so metadata can be overwritten
+    this.setDecorators(name);
+  }
+ 
+  protected setSwaggerOperation(name: BaseRouteName) {
+    const summary: string = Swagger.operationsMap(this.modelName)[name];
+    const operationId: string =
+      name + this.targetProto.constructor.name + this.modelName;
+    Swagger.setOperation({summary, operationId}, this.targetProto[name]);
+  }
+ 
+  protected setSwaggerPathParams(name: BaseRouteName): void {
+    const metadata: any[] = Swagger.getParams(this.targetProto[name]);
+    const withoutPrimary: BaseRouteName[] = [
+      "createManyBase",
+      "createOneBase",
+      "getManyBase",
+    ];
+ 
+    const removePrimary: boolean = isIn(name, withoutPrimary);
+    const params: {} = keys(this.options.params)
+      .filter((key: string) => !get(this.options, `params.${key}.disabled`))
+      .filter(
+        (key: string) =>
+          !(removePrimary && get(this.options, `params.${key}.primary`))
+      )
+      .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {});
+ 
+    const pathParamsMeta: any[] = Swagger.createPathParamsMeta(params);
+    Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]);
+  }
+ 
+  protected setSwaggerQueryParams(name: BaseRouteName): void {
+    const metadata: any[] = Swagger.getParams(this.targetProto[name]);
+    const queryParamsMeta = Swagger.createQueryParamsMeta(name, this.options);
+    Swagger.setParams(
+      [...metadata, ...queryParamsMeta],
+      this.targetProto[name]
+    );
+  }
+ 
+  protected setSwaggerResponseOk(name: BaseRouteName): void {
+    const metadata = Swagger.getResponseOk(this.targetProto[name]);
+    const metadataToAdd =
+      Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {};
+      Swagger.setResponseOk(
+      { ...metadata, ...metadataToAdd },
+      this.targetProto[name]
+    );
+  }
+ 
+  protected setResponseModels() {
+    const modelType = isFunction(this.modelType)
+      ? this.modelType
+      : SerializeHelper.createGetOneResponseDto(this.modelName);
+  
+    this.swaggerModels = {};
+ 
+    this.swaggerModels.get = isFunction(this.options.serialize?.get)
+      ? this.options.serialize?.get
+      : modelType;
+    this.swaggerModels.getMany =
+      this.options.serialize?.getMany ||
+      SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName);
+    this.swaggerModels.create = isFunction(this.options.serialize?.create)
+      ? this.options.serialize?.create
+      : modelType;
+    this.swaggerModels.update = isFunction(this.options.serialize?.update)
+      ? this.options.serialize?.update
+      : modelType;
+    this.swaggerModels.replace = isFunction(this.options.serialize?.replace)
+      ? this.options.serialize?.replace
+      : modelType;
+    this.swaggerModels.delete = isFunction(this.options.serialize?.delete)
+      ? this.options.serialize?.delete
+      : modelType;
+    this.swaggerModels.recover = isFunction(this.options.serialize?.recover)
+      ? this.options.serialize?.recover
+      : modelType;
+    Swagger.setExtraModels(this.swaggerModels);
+  }
+ 
+  protected override overrideRoutes(routesSchema: BaseRoute[]): void {
+    super.overrideRoutes(routesSchema);
+ 
+    Object.getOwnPropertyNames(this.targetProto).forEach(
+      (name: string): void => {
+        const override: BaseRouteName = R.getOverrideRoute(
+          this.targetProto[name]
+        );
+        const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) =>
+          isEqual(r.name, override)
+        );
+ 
+        if (override && route && route.enable) {
+          const operation = Swagger.getOperation(this.targetProto[name]);
+          const baseOperation = Swagger.getOperation(
+            this.targetProto[override]
+          );
+          const swaggerParams = Swagger.getParams(this.targetProto[name]);
+          const baseSwaggerParams = Swagger.getParams(
+            this.targetProto[override]
+          );
+          const responseOk = Swagger.getResponseOk(this.targetProto[name]);
+          const baseResponseOk = Swagger.getResponseOk(
+            this.targetProto[override]
+          );
+ 
+          Swagger.setOperation(
+            { ...baseOperation, ...operation },
+            this.targetProto[name]
+          );
+          Swagger.setParams(
+            [...baseSwaggerParams, ...swaggerParams],
+            this.targetProto[name]
+          );
+          Swagger.setResponseOk(
+            { ...baseResponseOk, ...responseOk },
+            this.targetProto[name]
+          );
+        }
+      }
+    );
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/src/services/index.html b/coverage/packages/crudx-swagger/src/services/index.html new file mode 100644 index 000000000..a43bc7c3e --- /dev/null +++ b/coverage/packages/crudx-swagger/src/services/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/services + + + + + + + + + +
+
+

All files src/services

+
+ +
+ 100% + Statements + 63/63 +
+ + +
+ 63.75% + Branches + 51/80 +
+ + +
+ 100% + Functions + 14/14 +
+ + +
+ 100% + Lines + 63/63 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
crudx.swagger.routes.factory.ts +
+
100%62/6263.75%51/80100%14/14100%62/62
index.ts +
+
100%1/1100%0/0100%0/0100%1/1
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/src/services/index.ts.html b/coverage/packages/crudx-swagger/src/services/index.ts.html new file mode 100644 index 000000000..f3dad267e --- /dev/null +++ b/coverage/packages/crudx-swagger/src/services/index.ts.html @@ -0,0 +1,85 @@ + + + + + + Code coverage report for src/services/index.ts + + + + + + + + + +
+
+

All files / src/services index.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
11x
export * from "./crudx.swagger.routes.factory";
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/tests/__fixtures__/base.model.ts.html b/coverage/packages/crudx-swagger/tests/__fixtures__/base.model.ts.html new file mode 100644 index 000000000..b45a89018 --- /dev/null +++ b/coverage/packages/crudx-swagger/tests/__fixtures__/base.model.ts.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for tests/__fixtures__/base.model.ts + + + + + + + + + +
+
+

All files / tests/__fixtures__ base.model.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +211x +1x +  +  +1x +  +  +  +7x +  +  +  +7x +  +  +  +7x +  +  +7x + 
import { ApiProperty } from "@nestjs/swagger";
+import { BaseEntity, Column, DeleteDateColumn, Entity, PrimaryGeneratedColumn } from "typeorm";
+ 
+@Entity()
+export class Base extends BaseEntity {
+ 
+  @PrimaryGeneratedColumn()
+  @ApiProperty()
+  id: number | null = null;
+ 
+  @Column({ type: 'varchar', length: 255 })
+  @ApiProperty()
+  name: string = '';
+ 
+  @Column({ type: 'int' })
+  @ApiProperty()
+  age: number = 0;
+ 
+  @DeleteDateColumn({ name: "deleted_at", nullable: true })
+  deletedAt: Date | null = null;
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/tests/__fixtures__/base.module.ts.html b/coverage/packages/crudx-swagger/tests/__fixtures__/base.module.ts.html new file mode 100644 index 000000000..6fff46410 --- /dev/null +++ b/coverage/packages/crudx-swagger/tests/__fixtures__/base.module.ts.html @@ -0,0 +1,205 @@ + + + + + + Code coverage report for tests/__fixtures__/base.module.ts + + + + + + + + + +
+
+

All files / tests/__fixtures__ base.module.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +411x +1x +1x +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x
import { Module } from "@nestjs/common";
+import { ConfigModule, ConfigService } from "@nestjs/config";
+import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm";
+ 
+import { Base } from "./base.model";
+import { BaseService } from "./base.service";
+import {databaseConfig} from "./database.config";
+ 
+@Module({
+  imports: [
+    ConfigModule.forRoot({
+      isGlobal: true,
+      envFilePath: [".env.testing"],
+      load: [databaseConfig],
+    }),
+    TypeOrmModule.forRootAsync({
+      useFactory: (config: ConfigService) =>
+        <TypeOrmModuleOptions>{
+          type: config.get<string>("database.type"),
+          host: config.get<string>("database.host"),
+          port: config.get<number>("database.port"),
+          username: config.get<string>("database.username"),
+          password: config.get<string>("database.password"),
+          database: config.get<string>("database.database"),
+          entities: config.get<string[]>("database.entities"),
+          synchronize: config.get<boolean>("database.synchronize"),
+        },
+      inject: [ConfigService],
+    }),
+    TypeOrmModule.forFeature([
+      Base
+    ]),
+  ],
+  providers: [
+    BaseService,
+  ],
+  exports: [
+    BaseService,
+  ]
+})
+export class BaseModule {}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/tests/__fixtures__/base.service.ts.html b/coverage/packages/crudx-swagger/tests/__fixtures__/base.service.ts.html new file mode 100644 index 000000000..f88b916d8 --- /dev/null +++ b/coverage/packages/crudx-swagger/tests/__fixtures__/base.service.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for tests/__fixtures__/base.service.ts + + + + + + + + + +
+
+

All files / tests/__fixtures__ base.service.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +131x +1x +1x +  +  +1x +  +  +1x +1x +1x +  + 
import { TypeOrmCrudService } from "@2amtech/crudx";
+import { Injectable } from "@nestjs/common";
+import { InjectRepository } from "@nestjs/typeorm";
+ 
+ 
+import { Base } from "./base.model";
+ 
+@Injectable()
+export class BaseService extends TypeOrmCrudService<Base> {
+  constructor(@InjectRepository(Base) override readonly repo: any) {
+    super(repo)
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/tests/__fixtures__/database.config.ts.html b/coverage/packages/crudx-swagger/tests/__fixtures__/database.config.ts.html new file mode 100644 index 000000000..6349a89b1 --- /dev/null +++ b/coverage/packages/crudx-swagger/tests/__fixtures__/database.config.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for tests/__fixtures__/database.config.ts + + + + + + + + + +
+
+

All files / tests/__fixtures__ database.config.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  + 
import { registerAs } from "@nestjs/config";
+ 
+import { Base } from "./base.model";
+ 
+export const databaseConfig = registerAs("database", () => ({
+  type: process.env["DB_TYPE"],
+  host: process.env["DB_HOST"],
+  port: process.env["DB_PORT"],
+  username: process.env["DB_USERNAME"],
+  password: process.env["DB_PASSWORD"],
+  database: process.env["DB_DATABASE"],
+  entities: [Base],
+  synchronize: true,
+  autoLoadEntities: true,
+  encoding: process.env["DB_CHARSET"],
+}));
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx-swagger/tests/__fixtures__/index.html b/coverage/packages/crudx-swagger/tests/__fixtures__/index.html new file mode 100644 index 000000000..91400ebaa --- /dev/null +++ b/coverage/packages/crudx-swagger/tests/__fixtures__/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for tests/__fixtures__ + + + + + + + + + +
+
+

All files tests/__fixtures__

+
+ +
+ 100% + Statements + 33/33 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 25/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
base.model.ts +
+
100%12/12100%0/0100%1/1100%7/7
base.module.ts +
+
100%9/9100%0/0100%1/1100%8/8
base.service.ts +
+
100%8/8100%0/0100%1/1100%7/7
database.config.ts +
+
100%4/4100%0/0100%1/1100%3/3
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/base.css b/coverage/packages/crudx/base.css new file mode 100644 index 000000000..f418035b4 --- /dev/null +++ b/coverage/packages/crudx/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/coverage/packages/crudx/block-navigation.js b/coverage/packages/crudx/block-navigation.js new file mode 100644 index 000000000..cc1213023 --- /dev/null +++ b/coverage/packages/crudx/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/coverage/packages/crudx/favicon.png b/coverage/packages/crudx/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 97.67% + Statements + 1473/1508 +
+ + +
+ 79.43% + Branches + 842/1060 +
+ + +
+ 98.2% + Functions + 329/335 +
+ + +
+ 97.56% + Lines + 1400/1435 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
100%19/19100%0/0100%0/0100%19/19
src/decorators +
+
100%47/47100%4/4100%13/13100%42/42
src/enums +
+
100%15/15100%4/4100%2/2100%15/15
src/exceptions +
+
100%3/3100%0/0100%1/1100%3/3
src/helpers +
+
100%237/23780.83%135/167100%74/74100%217/217
src/interceptors +
+
98.24%112/11479.06%102/129100%12/1298.19%109/111
src/interfaces +
+
100%18/18100%0/0100%0/0100%18/18
src/services +
+
96.3%860/89378.88%594/75397.15%205/21196.25%849/882
src/types +
+
100%28/28100%2/2100%1/1100%28/28
tests/__fixture__ +
+
100%8/8100%0/0100%1/1100%7/7
tests/__fixture__/guards +
+
100%13/13100%1/1100%3/3100%12/12
tests/__fixture__/model +
+
100%71/71100%0/0100%13/13100%43/43
tests/__fixture__/module +
+
100%15/15100%0/0100%1/1100%14/14
tests/__fixture__/service +
+
100%27/27100%0/0100%3/3100%24/24
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/prettify.css b/coverage/packages/crudx/prettify.css new file mode 100644 index 000000000..b317a7cda --- /dev/null +++ b/coverage/packages/crudx/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/coverage/packages/crudx/prettify.js b/coverage/packages/crudx/prettify.js new file mode 100644 index 000000000..b3225238f --- /dev/null +++ b/coverage/packages/crudx/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/coverage/packages/crudx/sort-arrow-sprite.png b/coverage/packages/crudx/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/coverage/packages/crudx/sorter.js b/coverage/packages/crudx/sorter.js new file mode 100644 index 000000000..2bb296a8c --- /dev/null +++ b/coverage/packages/crudx/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/coverage/packages/crudx/src/constants.ts.html b/coverage/packages/crudx/src/constants.ts.html new file mode 100644 index 000000000..834c2110d --- /dev/null +++ b/coverage/packages/crudx/src/constants.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for src/constants.ts + + + + + + + + + +
+
+

All files / src constants.ts

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +1311x +11x +11x +11x +11x +11x +  +11x +11x +11x +11x +  + 
export const REQUEST_DELIM: string = "||";
+export const REQUEST_DELIM_STR: string = ",";
+export const REQUEST_PREFIX_EXTRA: string = "extra.";
+export const FEATURE_NAME_METADATA: string = "CRUDX_FEATURE_NAME_METADATA";
+export const ACTION_NAME_METADATA: string = "CRUDX_ACTION_NAME_METADATA";
+export const OVERRIDE_METHOD_METADATA: string =
+  "CRUDX_OVERRIDE_METHOD_METADATA";
+export const PARSED_BODY_METADATA: string = "CRUDX_PARSED_BODY_METADATA";
+export const PARSED_CRUD_REQUEST_KEY: string = "CRUDX_PARSED_CRUD_REQUEST_KEY";
+export const CRUD_OPTIONS_METADATA: string = "CRUDX_CRUD_OPTIONS_METADATA";
+export const CRUD_AUTH_OPTIONS_METADATA: string =
+  "CRUDX_CRUD_AUTH_OPTIONS_METADATA";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/crud-auth.decorator.ts.html b/coverage/packages/crudx/src/decorators/crud-auth.decorator.ts.html new file mode 100644 index 000000000..7d236e179 --- /dev/null +++ b/coverage/packages/crudx/src/decorators/crud-auth.decorator.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for src/decorators/crud-auth.decorator.ts + + + + + + + + + +
+
+

All files / src/decorators crud-auth.decorator.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +911x +  +  +11x +11x +4x +4x +  + 
import { R } from "../helpers";
+import { AuthOptions } from "../interfaces";
+ 
+export const CrudAuth =
+  (options: AuthOptions) =>
+  (target: Object): void => {
+    R.setCrudAuthOptions(options, target);
+  };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/crud.decorator.ts.html b/coverage/packages/crudx/src/decorators/crud.decorator.ts.html new file mode 100644 index 000000000..e4f9ef564 --- /dev/null +++ b/coverage/packages/crudx/src/decorators/crud.decorator.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for src/decorators/crud.decorator.ts + + + + + + + + + +
+
+

All files / src/decorators crud.decorator.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +1011x +  +  +11x +11x +17x +17x +17x +  + 
import { RoutesFactoryService } from "../services";
+import { CrudOptions } from "../interfaces";
+ 
+export const Crud =
+  (options: CrudOptions) =>
+  (target: Object): void => {
+    const factoryMethod = options.routesFactory || RoutesFactoryService;
+    let factory: RoutesFactoryService = new factoryMethod(target, options);
+  };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/feature-action.decorator.ts.html b/coverage/packages/crudx/src/decorators/feature-action.decorator.ts.html new file mode 100644 index 000000000..fde1114be --- /dev/null +++ b/coverage/packages/crudx/src/decorators/feature-action.decorator.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for src/decorators/feature-action.decorator.ts + + + + + + + + + +
+
+

All files / src/decorators feature-action.decorator.ts

+
+ +
+ 100% + Statements + 14/14 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +1311x +  +11x +  +11x +1x +11x +  +11x +2x +11x +2x + 
import { SetMetadata, Type } from "@nestjs/common";
+ 
+import { ACTION_NAME_METADATA, FEATURE_NAME_METADATA } from "../constants";
+ 
+export const Feature = (name: string) =>
+  SetMetadata(FEATURE_NAME_METADATA, name);
+export const Action = (name: string) => SetMetadata(ACTION_NAME_METADATA, name);
+ 
+export const getFeature = <T = any>(target: Type<T>) =>
+  Reflect.getMetadata(FEATURE_NAME_METADATA, target);
+export const getAction = (target: Function) =>
+  Reflect.getMetadata(ACTION_NAME_METADATA, target);
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/index.html b/coverage/packages/crudx/src/decorators/index.html new file mode 100644 index 000000000..3b7f6ef9d --- /dev/null +++ b/coverage/packages/crudx/src/decorators/index.html @@ -0,0 +1,206 @@ + + + + + + Code coverage report for src/decorators + + + + + + + + + +
+
+

All files src/decorators

+
+ +
+ 100% + Statements + 47/47 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 13/13 +
+ + +
+ 100% + Lines + 42/42 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
crud-auth.decorator.ts +
+
100%5/5100%0/0100%2/2100%5/5
crud.decorator.ts +
+
100%6/6100%2/2100%2/2100%6/6
feature-action.decorator.ts +
+
100%14/14100%0/0100%4/4100%9/9
index.ts +
+
100%6/6100%0/0100%0/0100%6/6
override.decorator.ts +
+
100%6/6100%2/2100%2/2100%6/6
parsed-body.decorator.ts +
+
100%5/5100%0/0100%2/2100%5/5
parsed-request.decorator.ts +
+
100%5/5100%0/0100%1/1100%5/5
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/index.ts.html b/coverage/packages/crudx/src/decorators/index.ts.html new file mode 100644 index 000000000..545850aaa --- /dev/null +++ b/coverage/packages/crudx/src/decorators/index.ts.html @@ -0,0 +1,103 @@ + + + + + + Code coverage report for src/decorators/index.ts + + + + + + + + + +
+
+

All files / src/decorators index.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +711x +11x +11x +11x +11x +11x + 
export * from "./crud.decorator";
+export * from "./crud-auth.decorator";
+export * from "./override.decorator";
+export * from "./parsed-request.decorator";
+export * from "./parsed-body.decorator";
+export * from "./feature-action.decorator";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/override.decorator.ts.html b/coverage/packages/crudx/src/decorators/override.decorator.ts.html new file mode 100644 index 000000000..0c7a4909d --- /dev/null +++ b/coverage/packages/crudx/src/decorators/override.decorator.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for src/decorators/override.decorator.ts + + + + + + + + + +
+
+

All files / src/decorators override.decorator.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14  +11x +  +11x +11x +4x +4x +  +  +  +  +4x +  + 
import { BaseRouteName } from "../types";
+import { OVERRIDE_METHOD_METADATA } from "../constants";
+ 
+export const Override =
+  (name?: BaseRouteName) =>
+  (target: any, key: any, descriptor: PropertyDescriptor) => {
+    Reflect.defineMetadata(
+      OVERRIDE_METHOD_METADATA,
+      name || `${key}Base`,
+      target[key]
+    );
+    return descriptor;
+  };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/parsed-body.decorator.ts.html b/coverage/packages/crudx/src/decorators/parsed-body.decorator.ts.html new file mode 100644 index 000000000..de2aaf8d6 --- /dev/null +++ b/coverage/packages/crudx/src/decorators/parsed-body.decorator.ts.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for src/decorators/parsed-body.decorator.ts + + + + + + + + + +
+
+

All files / src/decorators parsed-body.decorator.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +811x +  +11x +11x +2x +2x +  + 
import { PARSED_BODY_METADATA } from "../constants";
+ 
+export const ParsedBody =
+  () =>
+  (target: any, key: string, index: any): void => {
+    Reflect.defineMetadata(PARSED_BODY_METADATA, { index }, target[key]);
+  };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/decorators/parsed-request.decorator.ts.html b/coverage/packages/crudx/src/decorators/parsed-request.decorator.ts.html new file mode 100644 index 000000000..791cb13cb --- /dev/null +++ b/coverage/packages/crudx/src/decorators/parsed-request.decorator.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for src/decorators/parsed-request.decorator.ts + + + + + + + + + +
+
+

All files / src/decorators parsed-request.decorator.ts

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +1111x +  +11x +11x +  +11x +  +4x +  +  + 
import { createParamDecorator } from "@nestjs/common";
+ 
+import { PARSED_CRUD_REQUEST_KEY } from "../constants";
+import { R } from "../helpers";
+ 
+export const ParsedRequest = createParamDecorator(
+  (_, ctx): ParameterDecorator => {
+    return R.getContextRequest(ctx)[PARSED_CRUD_REQUEST_KEY];
+  }
+);
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/enums/crud-actions.enum.ts.html b/coverage/packages/crudx/src/enums/crud-actions.enum.ts.html new file mode 100644 index 000000000..38eb2044a --- /dev/null +++ b/coverage/packages/crudx/src/enums/crud-actions.enum.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for src/enums/crud-actions.enum.ts + + + + + + + + + +
+
+

All files / src/enums crud-actions.enum.ts

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +1211x +11x +11x +11x +11x +11x +11x +11x +11x +11x +  + 
export enum CrudActions {
+  ReadAll = "Read-All",
+  ReadOne = "Read-One",
+  CreateOne = "Create-One",
+  CreateMany = "Create-Many",
+  UpdateOne = "Update-One",
+  ReplaceOne = "Replace-One",
+  DeleteOne = "Delete-One",
+  DeleteAll = "Delete-All",
+  RecoverOne = "Recover-One",
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/enums/crud-validation-groups.enum.ts.html b/coverage/packages/crudx/src/enums/crud-validation-groups.enum.ts.html new file mode 100644 index 000000000..2e502c053 --- /dev/null +++ b/coverage/packages/crudx/src/enums/crud-validation-groups.enum.ts.html @@ -0,0 +1,97 @@ + + + + + + Code coverage report for src/enums/crud-validation-groups.enum.ts + + + + + + + + + +
+
+

All files / src/enums crud-validation-groups.enum.ts

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +511x +11x +11x +  + 
export enum CrudValidationGroups {
+  CREATE = "CRUD-CREATE",
+  UPDATE = "CRUD-UPDATE",
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/enums/index.html b/coverage/packages/crudx/src/enums/index.html new file mode 100644 index 000000000..7f296d275 --- /dev/null +++ b/coverage/packages/crudx/src/enums/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for src/enums + + + + + + + + + +
+
+

All files src/enums

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
crud-actions.enum.ts +
+
100%10/10100%2/2100%1/1100%10/10
crud-validation-groups.enum.ts +
+
100%3/3100%2/2100%1/1100%3/3
index.ts +
+
100%2/2100%0/0100%0/0100%2/2
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/enums/index.ts.html b/coverage/packages/crudx/src/enums/index.ts.html new file mode 100644 index 000000000..6ae726254 --- /dev/null +++ b/coverage/packages/crudx/src/enums/index.ts.html @@ -0,0 +1,91 @@ + + + + + + Code coverage report for src/enums/index.ts + + + + + + + + + +
+
+

All files / src/enums index.ts

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +311x +11x + 
export * from "./crud-actions.enum";
+export * from "./crud-validation-groups.enum";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/exceptions/index.html b/coverage/packages/crudx/src/exceptions/index.html new file mode 100644 index 000000000..1ebbe4efc --- /dev/null +++ b/coverage/packages/crudx/src/exceptions/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/exceptions + + + + + + + + + +
+
+

All files src/exceptions

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 3/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%1/1100%0/0100%0/0100%1/1
request-query.exception.ts +
+
100%2/2100%0/0100%1/1100%2/2
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/exceptions/index.ts.html b/coverage/packages/crudx/src/exceptions/index.ts.html new file mode 100644 index 000000000..3aebfb3f2 --- /dev/null +++ b/coverage/packages/crudx/src/exceptions/index.ts.html @@ -0,0 +1,88 @@ + + + + + + Code coverage report for src/exceptions/index.ts + + + + + + + + + +
+
+

All files / src/exceptions index.ts

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +211x + 
export * from "./request-query.exception";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/exceptions/request-query.exception.ts.html b/coverage/packages/crudx/src/exceptions/request-query.exception.ts.html new file mode 100644 index 000000000..d2e6a6a16 --- /dev/null +++ b/coverage/packages/crudx/src/exceptions/request-query.exception.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for src/exceptions/request-query.exception.ts + + + + + + + + + +
+
+

All files / src/exceptions request-query.exception.ts

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +611x +  +29x +  +  + 
export class RequestQueryException extends Error {
+  constructor(msg: string) {
+    super(msg);
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/checkers.helper.ts.html b/coverage/packages/crudx/src/helpers/checkers.helper.ts.html new file mode 100644 index 000000000..17ce05522 --- /dev/null +++ b/coverage/packages/crudx/src/helpers/checkers.helper.ts.html @@ -0,0 +1,220 @@ + + + + + + Code coverage report for src/helpers/checkers.helper.ts + + + + + + + + + +
+
+

All files / src/helpers checkers.helper.ts

+
+ +
+ 100% + Statements + 41/41 +
+ + +
+ 90.47% + Branches + 19/21 +
+ + +
+ 100% + Functions + 15/15 +
+ + +
+ 100% + Lines + 23/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +4611x +  +  +  +  +  +  +  +  +  +  +  +  +11x +14x +  +11x +1189x +  +11x +131x +  +11x +24x +  +11x +31x +11x +22x +  +11x +1x +1x +  +  +300x +  +11x +  +11x +983x +  +11x +491x +139x + 
import {
+  every,
+  isEqual,
+  isArray,
+  isBoolean,
+  isDate,
+  isEmpty,
+  isNumber,
+  isString,
+  keys,
+  isNil,
+} from "lodash";
+ 
+export const isArrayOfStrings = (arr: unknown[]): boolean => {
+  return isArray(arr) && every(arr, isString);
+};
+export const isArrayFull = (val: any): boolean =>
+  Array.isArray(val) && !isEmpty(val);
+ 
+export const isStringFull = (val: unknown): boolean =>
+  isString(val) && !isEmpty(val);
+ 
+export const isArrayOfStringsFull = (val: any): boolean =>
+  isArrayFull(val) && (val as string[]).every((v: string) => isStringFull(v));
+ 
+export const isValue = (val: any): boolean =>
+  isStringFull(val) || isNumber(val) || isBoolean(val) || isDate(val);
+export const hasValue = (val: any): boolean =>
+  isArrayFull(val) ? (val as any[]).every((o) => isValue(o)) : isValue(val);
+ 
+export const isDateString = (val: any): boolean => {
+  const timestamp: number = Date.parse(val);
+  return !isNaN(timestamp) && isDate(new Date(timestamp));
+};
+ 
+export const isFalse = (val: any): boolean => val === false;
+ 
+export const isTrue = (val: any): boolean => val === true;
+ 
+export const isIn = (val: any, arr: any[] = []): boolean =>
+  arr.some((o) => isEqual(val, o));
+ 
+export const isObject = (val: any): boolean =>
+  typeof val === "object" && !isNil(val);
+export const isObjectFull = (val: any) => isObject(val) && keys(val).length > 0;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/crud-validation.helper.ts.html b/coverage/packages/crudx/src/helpers/crud-validation.helper.ts.html new file mode 100644 index 000000000..ded3a9dca --- /dev/null +++ b/coverage/packages/crudx/src/helpers/crud-validation.helper.ts.html @@ -0,0 +1,250 @@ + + + + + + Code coverage report for src/helpers/crud-validation.helper.ts + + + + + + + + + +
+
+

All files / src/helpers crud-validation.helper.ts

+
+ +
+ 100% + Statements + 23/23 +
+ + +
+ 54.54% + Branches + 12/22 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 21/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +5611x +11x +11x +11x +  +11x +11x +11x +  +11x +  +  +  +  +11x +  +  +  +61x +  +  +  +  +  +  +  +11x +16x +15x +15x +  +  +15x +15x +  +  +  +  +  +  +4x +  +15x +  +  +15x +  +  +  +  +15x +  +1x +  +  + 
import { ValidationPipe } from "@nestjs/common";
+import { isFalse } from "../helpers";
+import { isNil } from "lodash";
+import { CrudValidationGroups } from "../enums";
+import { CreateManyDto, CrudOptions, MergedCrudOptions } from "../interfaces";
+import { ApiProperty } from "@nestjs/swagger";
+import { IsArray, ArrayNotEmpty, ValidateNested } from "class-validator";
+import { Type } from "class-transformer";
+ 
+export class BulkDto<T> implements CreateManyDto<T> {
+  // @ts-ignore
+  bulk: T[];
+}
+ 
+export const getValidationPipe = (
+  options: CrudOptions,
+  group?: CrudValidationGroups
+): ValidationPipe | undefined => {
+  return !isFalse(options.validation)
+    ? new ValidationPipe({
+        ...(options.validation || {}),
+        groups: group ? [group] : undefined,
+      })
+    : undefined;
+};
+ 
+export const createBulkDto = <T = any>(options: MergedCrudOptions): any => {
+  if (!isFalse(options.validation)) {
+    const hasDto: boolean = !isNil(options.dto?.create);
+    const groups: CrudValidationGroups[] | undefined = !hasDto
+      ? [CrudValidationGroups.CREATE]
+      : undefined;
+    const always: boolean | undefined = hasDto ? true : undefined;
+    const Model = hasDto ? options.dto?.create : options.model.type;
+ 
+    class BulkDtoImpl implements CreateManyDto<T> {
+      @ApiProperty({ type: Model, isArray: true })
+      @IsArray({ groups, always })
+      @ArrayNotEmpty({ groups, always })
+      @ValidateNested({ each: true, groups, always })
+      @Type(() => Model)
+      // @ts-ignore
+      bulk: T[];
+    }
+ 
+    Object.defineProperty(BulkDtoImpl, "name", {
+      writable: false,
+      value: `CreateMany${options.model.type.name}Dto`,
+    });
+ 
+    return BulkDtoImpl;
+  } else {
+    return BulkDto;
+  }
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/index.html b/coverage/packages/crudx/src/helpers/index.html new file mode 100644 index 000000000..2d7d75b10 --- /dev/null +++ b/coverage/packages/crudx/src/helpers/index.html @@ -0,0 +1,221 @@ + + + + + + Code coverage report for src/helpers + + + + + + + + + +
+
+

All files src/helpers

+
+ +
+ 100% + Statements + 237/237 +
+ + +
+ 80.83% + Branches + 135/167 +
+ + +
+ 100% + Functions + 74/74 +
+ + +
+ 100% + Lines + 217/217 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
checkers.helper.ts +
+
100%41/4190.47%19/21100%15/15100%23/23
crud-validation.helper.ts +
+
100%23/2354.54%12/22100%3/3100%21/21
index.ts +
+
100%6/6100%0/0100%0/0100%6/6
reflection.helper.ts +
+
100%33/3376.47%13/17100%24/24100%33/33
request-validation.helper.ts +
+
100%45/45100%30/30100%9/9100%45/45
safe-require.helper.ts +
+
100%4/450%1/2100%1/1100%4/4
serialize.helper.ts +
+
100%13/13100%0/0100%3/3100%13/13
swagger.helper.ts +
+
100%72/7280%60/75100%19/19100%72/72
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/index.ts.html b/coverage/packages/crudx/src/helpers/index.ts.html new file mode 100644 index 000000000..1b9c04b22 --- /dev/null +++ b/coverage/packages/crudx/src/helpers/index.ts.html @@ -0,0 +1,103 @@ + + + + + + Code coverage report for src/helpers/index.ts + + + + + + + + + +
+
+

All files / src/helpers index.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +711x +11x +11x +11x +11x +11x + 
export * from "./checkers.helper";
+export * from "./crud-validation.helper";
+export * from "./reflection.helper";
+export * from "./request-validation.helper";
+export * from "./serialize.helper";
+export * from "./swagger.helper";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/reflection.helper.ts.html b/coverage/packages/crudx/src/helpers/reflection.helper.ts.html new file mode 100644 index 000000000..b5a632ef9 --- /dev/null +++ b/coverage/packages/crudx/src/helpers/reflection.helper.ts.html @@ -0,0 +1,595 @@ + + + + + + Code coverage report for src/helpers/reflection.helper.ts + + + + + + + + + +
+
+

All files / src/helpers reflection.helper.ts

+
+ +
+ 100% + Statements + 33/33 +
+ + +
+ 76.47% + Branches + 13/17 +
+ + +
+ 100% + Functions + 24/24 +
+ + +
+ 100% + Lines + 33/33 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +17111x +11x +  +  +  +  +  +  +  +  +11x +  +  +11x +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +1151x +221x +  +930x +  +  +  +  +  +  +  +  +757x +  +  +  +  +  +  +  +  +  +  +  +109x +  +  +  +51x +  +  +  +  +  +  +  +  +  +  +  +  +61x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +109x +  +  +  +  +  +  +  +109x +  +  +  +109x +  +  +  +61x +  +  +  +17x +  +  +  +109x +109x +  +  +  +113x +  +  +  +111x +  +  +  +110x +  +  +  +113x +  +  +  +4x +  +  +  +17x +  +  +  +109x +  +  +  +113x +  +  +  +132x +  +  +  +8x +  +  +  +4x +  +  +  +2x +  +  +  +4x +  +  +  +55x +  +  + 
import { RouteParamtypes } from "@nestjs/common/enums/route-paramtypes.enum";
+import {
+  CUSTOM_ROUTE_ARGS_METADATA,
+  INTERCEPTORS_METADATA,
+  METHOD_METADATA,
+  PARAMTYPES_METADATA,
+  PATH_METADATA,
+  ROUTE_ARGS_METADATA,
+} from "@nestjs/common/constants";
+import { ArgumentsHost } from "@nestjs/common";
+import { isFunction } from "lodash";
+import { BaseRoute, MergedCrudOptions, AuthOptions } from "../interfaces";
+import { BaseRouteName } from "../types";
+import {
+  CRUD_OPTIONS_METADATA,
+  ACTION_NAME_METADATA,
+  PARSED_CRUD_REQUEST_KEY,
+  PARSED_BODY_METADATA,
+  OVERRIDE_METHOD_METADATA,
+  CRUD_AUTH_OPTIONS_METADATA,
+} from "../constants";
+import { CrudActions } from "../enums";
+ 
+export class R {
+  static set(
+    metadataKey: any,
+    metadataValue: any,
+    target: Object,
+    propertyKey: string | symbol | undefined = undefined
+  ): void {
+    if (propertyKey) {
+      Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);
+    } else {
+      Reflect.defineMetadata(metadataKey, metadataValue, target);
+    }
+  }
+ 
+  static get<T extends any>(
+    metadataKey: any,
+    target: Object,
+    propertyKey: string | symbol | undefined = undefined
+  ): T {
+    return propertyKey
+      ? Reflect.getMetadata(metadataKey, target, propertyKey)
+      : Reflect.getMetadata(metadataKey, target);
+  }
+ 
+  static createCustomRouteArg(
+    paramType: string,
+    index: number,
+    pipes: any[] = [],
+    data: any = undefined
+  ): any {
+    // @ts-ignore
+    return {
+      [`${paramType}${CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: {
+        index,
+        factory: (_: any, ctx: ArgumentsHost) =>
+          R.getContextRequest(ctx)[paramType],
+        data,
+        pipes,
+      },
+    };
+  }
+ 
+  static createRouteArg(
+    paramTypes: RouteParamtypes,
+    index: number,
+    pipes: any[] = [],
+    data: any = undefined
+  ): any {
+    return {
+      [`${paramTypes}:${index}`]: {
+        index,
+        pipes,
+        data,
+      },
+    };
+  }
+ 
+  static setDecorators(
+    decorators: (PropertyDecorator | MethodDecorator)[],
+    target: object,
+    name: string
+  ): void {
+    // this makes metadata decorator works
+    const decoratedDescriptor: PropertyDescriptor = Reflect.decorate(
+      decorators,
+      target,
+      name,
+      Reflect.getOwnPropertyDescriptor(target, name)
+    );
+ 
+    // this makes proxy decorator works
+    Reflect.defineProperty(target, name, decoratedDescriptor);
+  }
+ 
+  static setParsedRequestArg(index: number) {
+    return R.createCustomRouteArg(PARSED_CRUD_REQUEST_KEY, index);
+  }
+ 
+  static setBodyArg(index: number, pipes: any[] = []) {
+    return R.createRouteArg(RouteParamtypes.BODY, index, pipes);
+  }
+ 
+  static setCrudOptions(options: MergedCrudOptions, target: any) {
+    R.set(CRUD_OPTIONS_METADATA, options, target);
+  }
+ 
+  static setRoute(route: BaseRoute, func: Function) {
+    R.set(PATH_METADATA, route.path, func);
+    R.set(METHOD_METADATA, route.method, func);
+  }
+ 
+  static setInterceptors(interceptors: any[], func: Function) {
+    R.set(INTERCEPTORS_METADATA, interceptors, func);
+  }
+ 
+  static setRouteArgs(metadata: any, target: any, name: string) {
+    R.set(ROUTE_ARGS_METADATA, metadata, target, name);
+  }
+ 
+  static setRouteArgsTypes(metadata: any, target: any, name: string) {
+    R.set(PARAMTYPES_METADATA, metadata, target, name);
+  }
+ 
+  static setAction(action: CrudActions, func: Function) {
+    R.set(ACTION_NAME_METADATA, action, func);
+  }
+ 
+  static setCrudAuthOptions(metadata: any, target: any) {
+    R.set(CRUD_AUTH_OPTIONS_METADATA, metadata, target);
+  }
+ 
+  static getCrudAuthOptions(target: any): AuthOptions {
+    return R.get(CRUD_AUTH_OPTIONS_METADATA, target);
+  }
+ 
+  static getCrudOptions(target: any): MergedCrudOptions {
+    return R.get(CRUD_OPTIONS_METADATA, target);
+  }
+ 
+  static getAction(func: Function): CrudActions {
+    return R.get(ACTION_NAME_METADATA, func);
+  }
+ 
+  static getOverrideRoute(func: Function): BaseRouteName {
+    return R.get(OVERRIDE_METHOD_METADATA, func);
+  }
+ 
+  static getInterceptors(func: Function): any[] {
+    return R.get(INTERCEPTORS_METADATA, func) || [];
+  }
+ 
+  static getRouteArgs(target: any, name: string): any {
+    return R.get(ROUTE_ARGS_METADATA, target, name);
+  }
+ 
+  static getRouteArgsTypes(target: any, name: string): any[] {
+    return R.get(PARAMTYPES_METADATA, target, name) || [];
+  }
+ 
+  static getParsedBody(func: Function): any {
+    return R.get(PARSED_BODY_METADATA, func);
+  }
+ 
+  static getContextRequest(ctx: ArgumentsHost): any {
+    return isFunction(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/request-validation.helper.ts.html b/coverage/packages/crudx/src/helpers/request-validation.helper.ts.html new file mode 100644 index 000000000..0310df3f0 --- /dev/null +++ b/coverage/packages/crudx/src/helpers/request-validation.helper.ts.html @@ -0,0 +1,469 @@ + + + + + + Code coverage report for src/helpers/request-validation.helper.ts + + + + + + + + + +
+
+

All files / src/helpers request-validation.helper.ts

+
+ +
+ 100% + Statements + 45/45 +
+ + +
+ 100% + Branches + 30/30 +
+ + +
+ 100% + Functions + 9/9 +
+ + +
+ 100% + Lines + 45/45 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +12911x +11x +  +  +11x +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +11x +  +253x +  +  +  +11x +  +11x +  +11x +12x +8x +  +  +  +  +  +11x +  +  +  +  +24x +4x +  +  +  +20x +  +  +11x +  +  +  +23x +  +  +  +23x +2x +  +  +  +  +  +11x +19x +4x +  +15x +2x +  +  +  +  +  +11x +14x +2x +  +12x +  +  +  +1x +  +  +  +  +  +11x +  +  +  +18x +1x +  +  +  +11x +  +  +  +20x +1x +  +  +  +19x +19x +1x +  +18x +3x +  +  +  +11x +  +2x +  +2x +2x +1x +  +  +  +  + 
import { isEqual, isNil, isNumber, isObject, isUndefined, keys } from "lodash";
+import { RequestQueryException } from "../exceptions";
+import { CustomOperators, ParamOption, ParamsOptions } from "../interfaces";
+ 
+import {
+  ComparisonOperator,
+  CondOperator,
+  QueryFields,
+  QueryFilter,
+  QueryJoin,
+  QuerySort,
+} from "../types";
+ 
+import {
+  isArrayOfStrings,
+  isArrayOfStringsFull,
+  isStringFull,
+} from "./checkers.helper";
+ 
+export const comparisonOperatorsList: string[] = [
+  ...keys(CondOperator).map(
+    (n: string) => CondOperator[n as keyof typeof CondOperator]
+  ),
+];
+ 
+export const sortOrdersList: string[] = ["ASC", "DESC"];
+ 
+const sortOrdersListStr: string = sortOrdersList.join();
+ 
+export function validateFields(fields: QueryFields): void {
+  if (!isArrayOfStrings(fields)) {
+    throw new RequestQueryException(
+      "Invalid fields. Array of strings expected"
+    );
+  }
+}
+ 
+export function validateCondition(
+  val: QueryFilter,
+  cond: "filter" | "or" | "search",
+  customOperators: CustomOperators
+): void {
+  if (!isObject(val) || !isStringFull(val.field)) {
+    throw new RequestQueryException(
+      `Invalid field type in ${cond} condition. String expected`
+    );
+  }
+  validateComparisonOperator(val.operator, customOperators);
+}
+ 
+export function validateComparisonOperator(
+  operator: ComparisonOperator,
+  customOperators: CustomOperators = {}
+): void {
+  const extendedComparisonOperatorsList = [
+    ...comparisonOperatorsList,
+    ...Object.keys(customOperators),
+  ];
+  if (!extendedComparisonOperatorsList.includes(operator)) {
+    throw new RequestQueryException(
+      `Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`
+    );
+  }
+}
+ 
+export function validateJoin(join: QueryJoin): void {
+  if (!isObject(join) || !isStringFull(join.field)) {
+    throw new RequestQueryException("Invalid join field. String expected");
+  }
+  if (!isUndefined(join.select) && !isArrayOfStringsFull(join.select)) {
+    throw new RequestQueryException(
+      "Invalid join select. Array of strings expected"
+    );
+  }
+}
+ 
+export function validateSort(sort: QuerySort): void {
+  if (!isObject(sort) || !isStringFull(sort.field)) {
+    throw new RequestQueryException("Invalid sort field. String expected");
+  }
+  if (
+    !isEqual(sort.order, sortOrdersList[0]) &&
+    !isEqual(sort.order, sortOrdersList[1])
+  ) {
+    throw new RequestQueryException(
+      `Invalid sort order. ${sortOrdersListStr} expected`
+    );
+  }
+}
+ 
+export function validateNumeric(
+  val: number,
+  num: "limit" | "offset" | "page" | "cache" | "include_deleted" | string
+): void {
+  if (!isNumber(val)) {
+    throw new RequestQueryException(`Invalid ${num}. Number expected`);
+  }
+}
+ 
+export function validateParamOption(
+  options: ParamsOptions,
+  name: string
+): void {
+  if (!isObject(options)) {
+    throw new RequestQueryException(
+      `Invalid param ${name}. Invalid crud options`
+    );
+  }
+  const option: ParamOption = options[name];
+  if (option && option.disabled) {
+    return;
+  }
+  if (!isObject(option) || isNil(option.field) || isNil(option.type)) {
+    throw new RequestQueryException(`Invalid param option in Crud`);
+  }
+}
+ 
+export function validateUUID(str: string, name: string): void {
+  const uuid: RegExp =
+    /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
+  const uuidV4: RegExp =
+    /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
+  if (!uuidV4.test(str) && !uuid.test(str)) {
+    throw new RequestQueryException(
+      `Invalid param ${name}. UUID string expected`
+    );
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/safe-require.helper.ts.html b/coverage/packages/crudx/src/helpers/safe-require.helper.ts.html new file mode 100644 index 000000000..f856a96b3 --- /dev/null +++ b/coverage/packages/crudx/src/helpers/safe-require.helper.ts.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for src/helpers/safe-require.helper.ts + + + + + + + + + +
+
+

All files / src/helpers safe-require.helper.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +811x +12x +12x +  +1x +  +  + 
export function safeRequire<T = any>(path: string, loader?: () => T): T | null {
+  try {
+    return loader ? loader() : require(path);
+  } catch (_) {
+    return null;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/serialize.helper.ts.html b/coverage/packages/crudx/src/helpers/serialize.helper.ts.html new file mode 100644 index 000000000..8e2e6a2d7 --- /dev/null +++ b/coverage/packages/crudx/src/helpers/serialize.helper.ts.html @@ -0,0 +1,229 @@ + + + + + + Code coverage report for src/helpers/serialize.helper.ts + + + + + + + + + +
+
+

All files / src/helpers serialize.helper.ts

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +4911x +  +11x +  +11x +  +  +  +1x +  +17x +  +  +  +17x +  +  +  +17x +  +  +  +17x +  +  +  +17x +  +  +17x +  +  +  +  +17x +  +  +  +  +  +1x +  +  +  +  +1x +  +  + 
import { Type } from "class-transformer";
+import { GetManyDefaultResponse } from "../interfaces";
+import { ApiProperty } from "@nestjs/swagger";
+ 
+export class SerializeHelper {
+  static createGetManyDto(dto: any, resourceName: string): any {
+    class GetManyResponseDto implements GetManyDefaultResponse<any> {
+      @ApiProperty({ type: dto, isArray: true })
+      @Type(() => dto)
+      // @ts-ignore
+      data: any[];
+ 
+      @ApiProperty({ type: "number" })
+      // @ts-ignore
+      count: number;
+ 
+      @ApiProperty({ type: "number" })
+      // @ts-ignore
+      total: number;
+ 
+      @ApiProperty({ type: "number" })
+      // @ts-ignore
+      page: number;
+ 
+      @ApiProperty({ type: "number" })
+      // @ts-ignore
+      pageCount: number;
+    }
+ 
+    Object.defineProperty(GetManyResponseDto, "name", {
+      writable: false,
+      value: `GetMany${resourceName}ResponseDto`,
+    });
+ 
+    return GetManyResponseDto;
+  }
+ 
+  static createGetOneResponseDto(resourceName: string): any {
+    class GetOneResponseDto {}
+ 
+    Object.defineProperty(GetOneResponseDto, "name", {
+      writable: false,
+      value: `${resourceName}ResponseDto`,
+    });
+ 
+    return GetOneResponseDto;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/helpers/swagger.helper.ts.html b/coverage/packages/crudx/src/helpers/swagger.helper.ts.html new file mode 100644 index 000000000..406bde57f --- /dev/null +++ b/coverage/packages/crudx/src/helpers/swagger.helper.ts.html @@ -0,0 +1,1474 @@ + + + + + + Code coverage report for src/helpers/swagger.helper.ts + + + + + + + + + +
+
+

All files / src/helpers swagger.helper.ts

+
+ +
+ 100% + Statements + 72/72 +
+ + +
+ 80% + Branches + 60/75 +
+ + +
+ 100% + Functions + 19/19 +
+ + +
+ 100% + Lines + 72/72 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +46411x +11x +11x +  +  +  +  +  +  +11x +  +11x +11x +11x +  +  +11x +  +11x +11x +  +  +11x +  +109x +  +  +  +  +  +  +  +  +  +  +  +  +113x +113x +  +  +  +  +  +222x +222x +  +  +  +  +  +17x +17x +17x +  +  +119x +119x +  +17x +  +  +  +  +  +  +  +  +  +113x +113x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +109x +  +109x +  +17x +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +16x +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +30x +30x +  +  +  +  +  +  +  +  +  +109x +69x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +109x +102x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +7x +  +77x +  +7x +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +7x +  +7x +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +7x +  +7x +  +  +  +  +  +  +7x +  +7x +  +  +  +  +  +  +7x +  +7x +  +  +  +  +  +  +7x +  +  +  +  +7x +  +  +  +  +  +  +7x +  +  +  +  +7x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +5x +  +  +  +  +  +7x +7x +77x +77x +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { HttpStatus } from "@nestjs/common";
+import { QueryBuilderService } from "../services";
+import { get, isArray, isString, keys } from "lodash";
+import {
+  MergedCrudOptions,
+  ParamsOptions,
+  RequestQueryBuilderOptions,
+} from '../interfaces';
+import { BaseRouteName } from '../types';
+import { R } from './reflection.helper';
+ 
+import { safeRequire } from './safe-require.helper';
+import * as SWAGGER_CONSTANTS from '@nestjs/swagger/dist/constants';
+import { getSchemaPath } from '@nestjs/swagger';
+ 
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const pluralize = require("pluralize");
+ 
+export const swaggerPkgJson = safeRequire("@nestjs/swagger/package.json", () =>
+  require("@nestjs/swagger/package.json")
+);
+ 
+export class Swagger {
+  static operationsMap(modelName: string): { [key in BaseRouteName]: string } {
+    return {
+      getManyBase: `Retrieve multiple ${pluralize(modelName)}`,
+      getOneBase: `Retrieve a single ${modelName}`,
+      createManyBase: `Create multiple ${pluralize(modelName)}`,
+      createOneBase: `Create a single ${modelName}`,
+      updateOneBase: `Update a single ${modelName}`,
+      replaceOneBase: `Replace a single ${modelName}`,
+      deleteOneBase: `Delete a single ${modelName}`,
+      recoverOneBase: `Recover one ${modelName}`,
+    };
+  }
+ 
+  static setOperation(metadata: any, func: Function) {
+    if (SWAGGER_CONSTANTS) {
+      R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func);
+    }
+  }
+ 
+  static setParams(metadata: any, func: Function) {
+    /* istanbul ignore else */
+    if (SWAGGER_CONSTANTS) {
+      R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func);
+    }
+  }
+ 
+  static setExtraModels(swaggerModels: any) {
+    /* istanbul ignore else */
+    if (SWAGGER_CONSTANTS) {
+      const meta = Swagger.getExtraModels(swaggerModels.get);
+      const models: any[] = [
+        ...meta,
+        ...keys(swaggerModels)
+          .map((name) => swaggerModels[name])
+          .filter((one) => one && one.name !== swaggerModels.get.name),
+      ];
+      R.set(
+        SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS,
+        models,
+        swaggerModels.get
+      );
+    }
+  }
+ 
+  static setResponseOk(metadata: any, func: Function) {
+    /* istanbul ignore else */
+    if (SWAGGER_CONSTANTS) {
+      R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func);
+    }
+  }
+ 
+  static getOperation(func: Function): any {
+    /* istanbul ignore next */
+    return SWAGGER_CONSTANTS
+      ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {}
+      : {};
+  }
+ 
+  static getParams(func: Function): any[] {
+    /* istanbul ignore next */
+    return SWAGGER_CONSTANTS
+      ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || []
+      : [];
+  }
+ 
+  static getExtraModels(target: any): any[] {
+    /* istanbul ignore next */
+    return SWAGGER_CONSTANTS
+      ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || []
+      : [];
+  }
+ 
+  static getResponseOk(func: Function): any {
+    /* istanbul ignore next */
+    return SWAGGER_CONSTANTS
+      ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {}
+      : {};
+  }
+ 
+  static createResponseMeta(
+    name: BaseRouteName,
+    options: MergedCrudOptions,
+    swaggerModels: any
+  ): any {
+    const { routes, query } = options;
+ 
+    switch (name) {
+      case "getOneBase":
+        return {
+          [HttpStatus.OK]: {
+            description: "Get one base response",
+            type: swaggerModels.get,
+          },
+        };
+      case "getManyBase":
+        return {
+          [HttpStatus.OK]: query?.alwaysPaginate
+            ? {
+                description: "Get paginated response",
+                type: swaggerModels.getMany,
+              }
+            : {
+                description: "Get many base response",
+                schema: {
+                  oneOf: [
+                    {
+                      $ref: getSchemaPath(swaggerModels.getMany.name),
+                    },
+                    {
+                      type: "array",
+                      items: {
+                        $ref: getSchemaPath(swaggerModels.get.name),
+                      },
+                    },
+                  ],
+                },
+              },
+        };
+      case "createOneBase":
+        return {
+          [HttpStatus.CREATED]: {
+            description: "Get create one base response",
+            schema: {
+              $ref: getSchemaPath(swaggerModels.create.name),
+            },
+          },
+        };
+      case "createManyBase":
+        return {
+          [HttpStatus.CREATED]: swaggerModels.createMany
+            ? {
+                description: "Get create many base response",
+                schema: {
+                  $ref: getSchemaPath(swaggerModels.createMany.name),
+                },
+              }
+            : {
+                description: "Get create many base response",
+                schema: {
+                  type: "array",
+                  items: {
+                    $ref: getSchemaPath(swaggerModels.create.name),
+                  },
+                },
+              },
+        };
+      case "deleteOneBase":
+        return {
+          [HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted
+            ? {
+                description: "Delete one base response",
+                schema: {
+                  $ref: getSchemaPath(swaggerModels.delete.name),
+                },
+              }
+            : {
+                description: "Delete one base response",
+              },
+        };
+      case "recoverOneBase":
+        return {
+          [HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered
+            ? {
+                description: "Recover one base response",
+                schema: {
+                  $ref: getSchemaPath(swaggerModels.recover.name),
+                },
+              }
+            : {
+                description: "Recover one base response",
+              },
+        };
+      default:
+        const dto = swaggerModels[name.split("OneBase")[0]];
+        return {
+          [HttpStatus.OK]: {
+            description: "Response",
+            schema: { $ref: getSchemaPath(dto.name) },
+          },
+        };
+    }
+  }
+ 
+  static createPathParamsMeta(options: ParamsOptions): any[] {
+    return SWAGGER_CONSTANTS
+      ? keys(options).map((param) => ({
+          name: param,
+          required: true,
+          in: "path",
+          type: options[param].type === "number" ? Number : String,
+          enum: isArray(options[param]?.enum)
+            ? Object.values(<Array<string>>options[param].enum)
+            : undefined,
+        }))
+      : [];
+  }
+ 
+  static createQueryParamsMeta(
+    name: BaseRouteName,
+    options: MergedCrudOptions
+  ) {
+    if (options.swagger === undefined || options.swagger.enabled) {
+      return [];
+    }
+ 
+    const {
+      delim: d,
+      delimStr: coma,
+      fields,
+      search,
+      filter,
+      or,
+      join,
+      sort,
+      limit,
+      offset,
+      page,
+      cache,
+      includeDeleted,
+    } = Swagger.getQueryParamsNames();
+    const docsLink = (a: string) =>
+      // TODO: to modify
+      `<a href="https://github.com/2am.tech/crudx/wiki/Requests#${a}" target="_blank">Docs</a>`;
+ 
+    const fieldsMetaBase = {
+      name: fields,
+      description: `Selects resource fields. ${docsLink("select")}`,
+      required: false,
+      in: "query",
+    };
+    const fieldsMeta = {
+      ...fieldsMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: false,
+    };
+ 
+    const searchMetaBase = {
+      name: search,
+      description: `Adds search condition. ${docsLink("search")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const searchMeta = { ...searchMetaBase, schema: { type: "string" } };
+ 
+    const filterMetaBase = {
+      name: filter,
+      description: `Adds filter condition. ${docsLink("filter")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const filterMeta = {
+      ...filterMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const orMetaBase = {
+      name: or,
+      description: `Adds OR condition. ${docsLink("or")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const orMeta = {
+      ...orMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const sortMetaBase = {
+      name: sort,
+      description: `Adds sort by field. ${docsLink("sort")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const sortMeta = {
+      ...sortMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const joinMetaBase = {
+      name: join,
+      description: `Adds relational resources. ${docsLink("join")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const joinMeta = {
+      ...joinMetaBase,
+      schema: {
+        type: "array",
+        items: {
+          type: "string",
+        },
+      },
+      style: "form",
+      explode: true,
+    };
+ 
+    const limitMetaBase = {
+      name: limit,
+      description: `Limit amount of resources. ${docsLink("limit")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const limitMeta = { ...limitMetaBase, schema: { type: "integer" } };
+ 
+    const offsetMetaBase = {
+      name: offset,
+      description: `Offset amount of resources. ${docsLink("offset")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const offsetMeta = { ...offsetMetaBase, schema: { type: "integer" } };
+ 
+    const pageMetaBase = {
+      name: page,
+      description: `Page portion of resources. ${docsLink("page")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const pageMeta = { ...pageMetaBase, schema: { type: "integer" } };
+ 
+    const cacheMetaBase = {
+      name: cache,
+      description: `Reset cache (if was enabled). ${docsLink("cache")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const cacheMeta = {
+      ...cacheMetaBase,
+      schema: { type: "integer", minimum: 0, maximum: 1 },
+    };
+ 
+    const includeDeletedMetaBase = {
+      name: includeDeleted,
+      description: `Include deleted. ${docsLink("includeDeleted")}`,
+      required: false,
+      in: "query",
+    };
+ 
+    const includeDeletedMeta = {
+      ...includeDeletedMetaBase,
+      schema: { type: "integer", minimum: 0, maximum: 1 },
+    };
+ 
+    switch (name) {
+      case "getManyBase":
+        return options.query?.softDelete
+          ? [
+              fieldsMeta,
+              searchMeta,
+              filterMeta,
+              orMeta,
+              sortMeta,
+              joinMeta,
+              limitMeta,
+              offsetMeta,
+              pageMeta,
+              cacheMeta,
+              includeDeletedMeta,
+            ]
+          : [
+              fieldsMeta,
+              searchMeta,
+              filterMeta,
+              orMeta,
+              sortMeta,
+              joinMeta,
+              limitMeta,
+              offsetMeta,
+              pageMeta,
+              cacheMeta,
+            ];
+      case "getOneBase":
+        return options.query?.softDelete
+          ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta]
+          : [fieldsMeta, joinMeta, cacheMeta];
+      default:
+        return [];
+    }
+  }
+ 
+  static getQueryParamsNames() {
+    const qbOptions: RequestQueryBuilderOptions =
+      QueryBuilderService.getOptions();
+    const name = (n: any) => {
+      const selected = get(qbOptions, `paramNamesMap[${n}]`);
+      return isString(selected) ? selected : selected?.[0];
+    };
+ 
+    return {
+      delim: qbOptions.delim,
+      delimStr: qbOptions.delimStr,
+      fields: name("fields"),
+      search: name("search"),
+      filter: name("filter"),
+      or: name("or"),
+      join: name("join"),
+      sort: name("sort"),
+      limit: name("limit"),
+      offset: name("offset"),
+      page: name("page"),
+      cache: name("cache"),
+      includeDeleted: name("includeDeleted"),
+    };
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/index.html b/coverage/packages/crudx/src/index.html new file mode 100644 index 000000000..c7f285609 --- /dev/null +++ b/coverage/packages/crudx/src/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
constants.ts +
+
100%10/10100%0/0100%0/0100%10/10
index.ts +
+
100%9/9100%0/0100%0/0100%9/9
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/index.ts.html b/coverage/packages/crudx/src/index.ts.html new file mode 100644 index 000000000..e2478189b --- /dev/null +++ b/coverage/packages/crudx/src/index.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for src/index.ts + + + + + + + + + +
+
+

All files / src index.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +1011x +11x +11x +11x +11x +11x +11x +11x +11x + 
export * from "./decorators";
+export * from "./constants";
+export * from "./enums";
+export * from "./exceptions";
+export * from "./helpers";
+export * from "./interceptors";
+export * from "./interfaces";
+export * from "./services";
+export * from "./types";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/interceptors/crud-base.interceptor.ts.html b/coverage/packages/crudx/src/interceptors/crud-base.interceptor.ts.html new file mode 100644 index 000000000..194173486 --- /dev/null +++ b/coverage/packages/crudx/src/interceptors/crud-base.interceptor.ts.html @@ -0,0 +1,166 @@ + + + + + + Code coverage report for src/interceptors/crud-base.interceptor.ts + + + + + + + + + +
+
+

All files / src/interceptors crud-base.interceptor.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28  +11x +  +  +  +11x +  +  +  +  +  +109x +109x +109x +109x +  +  +  +  +  +  +  +109x +  +109x +  +  + 
import { ExecutionContext, Type } from "@nestjs/common";
+import { R } from "../helpers";
+import { CrudActions } from "../enums";
+import { MergedCrudOptions } from "../interfaces";
+ 
+export class CrudBaseInterceptor {
+  protected getCrudInfo(context: ExecutionContext): {
+    ctrlOptions: MergedCrudOptions;
+    crudOptions: Partial<MergedCrudOptions>;
+    action: CrudActions;
+  } {
+    const ctrl: Type<any> = context.getClass();
+    const handler = context.getHandler();
+    const ctrlOptions: MergedCrudOptions = R.getCrudOptions(ctrl);
+    const crudOptions = ctrlOptions
+      ? ctrlOptions
+      : {
+          query: {},
+          routes: {},
+          params: {},
+          operators: {},
+        };
+    const action: CrudActions = R.getAction(handler);
+ 
+    return { ctrlOptions, crudOptions, action };
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/interceptors/crud-request.interceptor.ts.html b/coverage/packages/crudx/src/interceptors/crud-request.interceptor.ts.html new file mode 100644 index 000000000..2b923c943 --- /dev/null +++ b/coverage/packages/crudx/src/interceptors/crud-request.interceptor.ts.html @@ -0,0 +1,754 @@ + + + + + + Code coverage report for src/interceptors/crud-request.interceptor.ts + + + + + + + + + +
+
+

All files / src/interceptors crud-request.interceptor.ts

+
+ +
+ 97.05% + Statements + 66/68 +
+ + +
+ 80.76% + Branches + 63/78 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 97.01% + Lines + 65/67 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +22411x +  +  +  +  +  +  +  +11x +11x +11x +11x +  +  +11x +11x +  +11x +  +  +  +11x +  +  +  +  +56x +  +56x +  +56x +56x +56x +  +56x +  +56x +56x +56x +  +  +  +  +  +55x +55x +  +  +  +  +  +  +55x +  +  +  +  +  +  +55x +  +1x +  +  +  +  +  +  +  +  +  +  +55x +55x +55x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +56x +  +  +55x +  +1x +  +  +  +  +1x +  +  +  +54x +  +  +  +  +  +54x +  +54x +20x +34x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +32x +1x +  +31x +2x +  +  +  +  +  +  +  +  +  +  +54x +  +  +  +  +  +  +  +56x +56x +  +55x +  +  +  +  +  +  +  +  +  +  +  +  +  +55x +  +  +55x +55x +  +  +  +55x +2x +1x +1x +  +  +1x +  +  +  +55x +1x +  +  +55x +2x +  +  +55x +2x +  +  +55x +55x +1x +  +  +  +  +  +55x +1x +  +55x +  +  +55x +  +  + 
import {
+  BadRequestException,
+  CallHandler,
+  ExecutionContext,
+  Injectable,
+  NestInterceptor,
+} from "@nestjs/common";
+import { QueryFilter, QueryFilterFunction, SCondition } from "../types";
+import { RequestQueryException } from "../exceptions";
+import { QueryParserService } from "../services";
+import { isArrayFull } from "../helpers";
+import { isFunction, isNil } from "lodash";
+import { ClassTransformOptions } from "class-transformer";
+ 
+import { PARSED_CRUD_REQUEST_KEY } from "../constants";
+import { CrudActions } from "../enums";
+import { CrudRequest, MergedCrudOptions, ParamsOptions } from "../interfaces";
+import { CrudBaseInterceptor } from "./crud-base.interceptor";
+import { Observable } from "rxjs";
+ 
+@Injectable()
+export class CrudRequestInterceptor
+  extends CrudBaseInterceptor
+  implements NestInterceptor
+{
+  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
+    const req = context.switchToHttp().getRequest();
+ 
+    try {
+      /* istanbul ignore else */
+      if (!req[PARSED_CRUD_REQUEST_KEY]) {
+        const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context);
+        const parser = QueryParserService.create();
+ 
+        parser.parseQuery(req.query, crudOptions.operators?.custom);
+ 
+        let auth = null;
+        if (!isNil(ctrlOptions)) {
+          const search = this.getSearch(
+            parser,
+            crudOptions,
+            action,
+            req.params
+          );
+          auth = this.getAuth(parser, crudOptions, req);
+          parser.search = auth.or
+            ? { $or: [auth.or, { $and: search }] }
+            : { $and: [auth.filter, ...search] };
+        } else E{
+          parser.search = { $and: this.getSearch(parser, crudOptions, action) };
+        }
+ 
+        req[PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(
+          parser,
+          crudOptions,
+          auth?.auth
+        );
+      }
+ 
+      return next.handle();
+    } catch (error) {
+      throw error instanceof RequestQueryException
+        ? new BadRequestException(error.message)
+        : error;
+    }
+  }
+ 
+  getCrudRequest(
+    parser: QueryParserService,
+    crudOptions: Partial<MergedCrudOptions>,
+    auth?: any
+  ): CrudRequest {
+    const parsed = parser.getParsed();
+    const { query, routes, params, operators } = crudOptions;
+    return {
+      parsed,
+      options: {
+        query,
+        routes,
+        params,
+        operators,
+      },
+      auth,
+    };
+  }
+ 
+  getSearch(
+    parser: QueryParserService,
+    crudOptions: Partial<MergedCrudOptions>,
+    action: CrudActions,
+    params?: any
+  ): SCondition[] {
+    // params condition
+    const paramsSearch = this.getParamsSearch(parser, crudOptions, params);
+ 
+    // if `CrudOptions.query.filter` is a function then return transformed query search conditions
+    if (isFunction(crudOptions.query?.filter)) {
+      const filterCond: SCondition =
+        (crudOptions.query?.filter as QueryFilterFunction)(
+          parser.search,
+          action === CrudActions.ReadAll
+        ) || {};
+ 
+      return [...paramsSearch, filterCond];
+    }
+ 
+    // if `CrudOptions.query.filter` is array or search condition type
+    const optionsFilter = isArrayFull(crudOptions.query?.filter)
+      ? (crudOptions.query?.filter as QueryFilter[]).map(
+          parser.convertFilterToSearch
+        )
+      : [(crudOptions.query?.filter as SCondition) || {}];
+ 
+    let search: SCondition[] = [];
+ 
+    if (parser.search) {
+      search = [parser.search];
+    } else if (parser.filter.length > 0 && parser.or.length > 0) {
+      search =
+        parser.filter.length === 1 && parser.or.length === 1
+          ? [
+              {
+                $or: [
+                  parser.convertFilterToSearch(parser.filter[0]),
+                  parser.convertFilterToSearch(parser.or[0]),
+                ],
+              },
+            ]
+          : [
+              {
+                $or: [
+                  { $and: parser.filter.map(parser.convertFilterToSearch) },
+                  { $and: parser.or.map(parser.convertFilterToSearch) },
+                ],
+              },
+            ];
+    } else if (parser.filter.length > 0) {
+      search = parser.filter.map(parser.convertFilterToSearch);
+    } else {
+      if (parser.or.length > 0) {
+        search =
+          parser.or.length === 1
+            ? [parser.convertFilterToSearch(parser.or[0])]
+            : [
+                {
+                  $or: parser.or.map(parser.convertFilterToSearch),
+                },
+              ];
+      }
+    }
+ 
+    return [...paramsSearch, ...optionsFilter, ...search];
+  }
+ 
+  getParamsSearch(
+    parser: QueryParserService,
+    crudOptions: Partial<MergedCrudOptions>,
+    params?: any
+  ): SCondition[] {
+    if (params) {
+      parser.parseParams(params, <ParamsOptions>crudOptions.params);
+ 
+      return isArrayFull(parser.paramsFilter)
+        ? // @ts-ignore
+          parser.paramsFilter.map(parser.convertFilterToSearch)
+        : [];
+    }
+ 
+    return [];
+  }
+ 
+  getAuth(
+    parser: QueryParserService,
+    crudOptions: Partial<MergedCrudOptions>,
+    req: any
+  ): { filter?: any; or?: any; auth?: any } {
+    const auth: any = {};
+ 
+    /* istanbul ignore else */
+    if (crudOptions.auth) {
+      const userOrRequest = crudOptions.auth.property
+        ? req[crudOptions.auth.property]
+        : req;
+ 
+      if (crudOptions.auth.property && req[crudOptions.auth.property]) {
+        if (typeof req[crudOptions.auth.property] === "object") {
+          if (Object.keys(req[crudOptions.auth.property]).length > 0) {
+            auth.auth = req[crudOptions.auth.property];
+          }
+        } else {
+          auth.auth = req[crudOptions.auth.property];
+        }
+      }
+ 
+      if (isFunction(crudOptions.auth.or)) {
+        auth.or = crudOptions.auth.or(userOrRequest);
+      }
+ 
+      if (isFunction(crudOptions.auth.filter) && !auth.or) {
+        auth.filter = crudOptions.auth.filter(userOrRequest) || {};
+      }
+ 
+      if (isFunction(crudOptions.auth.persist)) {
+        parser.setAuthPersist(crudOptions.auth.persist(userOrRequest));
+      }
+ 
+      const options: ClassTransformOptions = {};
+      if (isFunction(crudOptions.auth.classTransformOptions)) {
+        Object.assign(
+          options,
+          crudOptions.auth.classTransformOptions(userOrRequest)
+        );
+      }
+ 
+      if (isFunction(crudOptions.auth.groups)) {
+        options.groups = crudOptions.auth.groups(userOrRequest);
+      }
+      parser.setClassTransformOptions(options);
+    }
+ 
+    return auth;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/interceptors/crud-response.interceptor.ts.html b/coverage/packages/crudx/src/interceptors/crud-response.interceptor.ts.html new file mode 100644 index 000000000..b65ed4f8c --- /dev/null +++ b/coverage/packages/crudx/src/interceptors/crud-response.interceptor.ts.html @@ -0,0 +1,382 @@ + + + + + + Code coverage report for src/interceptors/crud-response.interceptor.ts + + + + + + + + + +
+
+

All files / src/interceptors crud-response.interceptor.ts

+
+ +
+ 100% + Statements + 36/36 +
+ + +
+ 77.55% + Branches + 38/49 +
+ + +
+ 100% + Functions + 6/6 +
+ + +
+ 100% + Lines + 34/34 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +10011x +  +  +  +  +  +11x +11x +11x +  +11x +11x +  +11x +11x +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +55x +  +  +  +100x +2x +  +  +98x +5x +  +  +  +  +93x +  +  +  +  +  +  +53x +53x +53x +  +53x +53x +  +53x +  +53x +1x +  +  +1x +  +  +  +  +  +53x +1x +  +  +1x +  +  +53x +  +33x +  +76x +  +  +  +2x +4x +  +  +18x +  +  +  + 
import {
+  CallHandler,
+  ExecutionContext,
+  Injectable,
+  NestInterceptor,
+} from "@nestjs/common";
+import { isPlainObject, isEmpty, isFunction } from "lodash";
+import { isFalse } from "../helpers";
+import { ClassTransformOptions, instanceToPlain } from "class-transformer";
+import { Observable } from "rxjs";
+import { map } from "rxjs/operators";
+import { CrudActions } from "../enums";
+import { MergedCrudOptions, SerializeOptions } from "../interfaces";
+import { CrudBaseInterceptor } from "./crud-base.interceptor";
+import { isObject } from "class-validator";
+ 
+const actionToDtoNameMap: {
+  [key in CrudActions]: keyof SerializeOptions;
+} = {
+  [CrudActions.ReadAll]: "getMany",
+  [CrudActions.ReadOne]: "get",
+  [CrudActions.CreateMany]: "createMany",
+  [CrudActions.CreateOne]: "create",
+  [CrudActions.UpdateOne]: "update",
+  [CrudActions.ReplaceOne]: "replace",
+  [CrudActions.DeleteAll]: "delete",
+  [CrudActions.DeleteOne]: "delete",
+  [CrudActions.RecoverOne]: "recover",
+};
+ 
+@Injectable()
+export class CrudResponseInterceptor
+  extends CrudBaseInterceptor
+  implements NestInterceptor
+{
+  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
+    return next.handle().pipe(map((data) => this.serialize(context, data)));
+  }
+ 
+  protected transform(dto: any, data: any, options: ClassTransformOptions) {
+    if (!isObject(data) || isFalse(dto)) {
+      return data;
+    }
+ 
+    if (!isFunction(dto)) {
+      return data.constructor !== Object
+        ? instanceToPlain(data, options)
+        : data;
+    }
+ 
+    return data instanceof dto
+      ? instanceToPlain(data, options)
+      : /* @ts-ignore */
+        instanceToPlain(Object.assign(new dto(), data), options);
+  }
+ 
+  protected serialize(context: ExecutionContext, data: any): any {
+    const req = context.switchToHttp().getRequest();
+    const { crudOptions, action } = this.getCrudInfo(context);
+    const { serialize } = <Partial<MergedCrudOptions>>crudOptions;
+    /* @ts-ignore */
+    const dto = serialize[actionToDtoNameMap[action]];
+    const isArray: boolean = Array.isArray(data);
+ 
+    const options: ClassTransformOptions = {};
+ 
+    if (isFunction(crudOptions.auth?.classTransformOptions)) {
+      const userOrRequest = crudOptions.auth?.property
+        ? req[crudOptions.auth.property]
+        : req;
+      Object.assign(
+        options,
+        crudOptions.auth?.classTransformOptions(userOrRequest)
+      );
+    }
+ 
+    if (isFunction(crudOptions.auth?.groups)) {
+      const userOrRequest = crudOptions.auth?.property
+        ? req[crudOptions.auth.property]
+        : req;
+      options.groups = crudOptions.auth?.groups(userOrRequest);
+    }
+ 
+    switch (action) {
+      case CrudActions.ReadAll:
+        return isArray
+          ? (data as any[]).map((item) =>
+              this.transform(serialize?.get, item, options)
+            )
+          : this.transform(dto, data, options);
+      case CrudActions.CreateMany:
+        return isArray
+          ? (data as any[]).map((item) => this.transform(dto, item, options))
+          : this.transform(dto, data, options);
+      default:
+        return this.transform(dto, data, options);
+    }
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/interceptors/index.html b/coverage/packages/crudx/src/interceptors/index.html new file mode 100644 index 000000000..ab362b71a --- /dev/null +++ b/coverage/packages/crudx/src/interceptors/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for src/interceptors + + + + + + + + + +
+
+

All files src/interceptors

+
+ +
+ 98.24% + Statements + 112/114 +
+ + +
+ 79.06% + Branches + 102/129 +
+ + +
+ 100% + Functions + 12/12 +
+ + +
+ 98.19% + Lines + 109/111 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
crud-base.interceptor.ts +
+
100%8/850%1/2100%1/1100%8/8
crud-request.interceptor.ts +
+
97.05%66/6880.76%63/78100%5/597.01%65/67
crud-response.interceptor.ts +
+
100%36/3677.55%38/49100%6/6100%34/34
index.ts +
+
100%2/2100%0/0100%0/0100%2/2
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/interceptors/index.ts.html b/coverage/packages/crudx/src/interceptors/index.ts.html new file mode 100644 index 000000000..182811e3f --- /dev/null +++ b/coverage/packages/crudx/src/interceptors/index.ts.html @@ -0,0 +1,91 @@ + + + + + + Code coverage report for src/interceptors/index.ts + + + + + + + + + +
+
+

All files / src/interceptors index.ts

+
+ +
+ 100% + Statements + 2/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 2/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +311x +11x + 
export * from "./crud-request.interceptor";
+export * from "./crud-response.interceptor";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/interfaces/index.html b/coverage/packages/crudx/src/interfaces/index.html new file mode 100644 index 000000000..cbcea9a3e --- /dev/null +++ b/coverage/packages/crudx/src/interfaces/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/interfaces + + + + + + + + + +
+
+

All files src/interfaces

+
+ +
+ 100% + Statements + 18/18 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 18/18 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%18/18100%0/0100%0/0100%18/18
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/interfaces/index.ts.html b/coverage/packages/crudx/src/interfaces/index.ts.html new file mode 100644 index 000000000..f0d0bce3a --- /dev/null +++ b/coverage/packages/crudx/src/interfaces/index.ts.html @@ -0,0 +1,139 @@ + + + + + + Code coverage report for src/interfaces/index.ts + + + + + + + + + +
+
+

All files / src/interfaces index.ts

+
+ +
+ 100% + Statements + 18/18 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 18/18 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +1911x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x + 
export * from "./auth-options.interface";
+export * from "./base-route.interface";
+export * from "./create-many-dto.interface";
+export * from "./create-query-params.interface";
+export * from "./crud-controller.interface";
+export * from "./crud-global-config.interface";
+export * from "./crud-options.interface";
+export * from "./crud-request.interface";
+export * from "./dto-options.interface";
+export * from "./get-many-default-response.interface";
+export * from "./model-options.interface";
+export * from "./operators-options.interface";
+export * from "./params-options.interface";
+export * from "./parsed-request.interface";
+export * from "./query-options.interface";
+export * from "./request-query-builder-options.interface";
+export * from "./routes-options.interface";
+export * from "./serialize-options.interface";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/abstract-crud.service.ts.html b/coverage/packages/crudx/src/services/abstract-crud.service.ts.html new file mode 100644 index 000000000..80fbd6342 --- /dev/null +++ b/coverage/packages/crudx/src/services/abstract-crud.service.ts.html @@ -0,0 +1,472 @@ + + + + + + Code coverage report for src/services/abstract-crud.service.ts + + + + + + + + + +
+
+

All files / src/services abstract-crud.service.ts

+
+ +
+ 100% + Statements + 17/17 +
+ + +
+ 75% + Branches + 21/28 +
+ + +
+ 100% + Functions + 9/9 +
+ + +
+ 100% + Lines + 17/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +13011x +11x +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +33x +  +  +  +  +  +  +  +  +  +  +  +  +51x +1x +  +  +  +  +  +  +50x +  +  +  +  +  +  +  +49x +  +  +  +  +  +  +  +  +51x +  +  +  +  +  +  +  +  +  +  +  +5x +1x +  +  +4x +5x +4x +  +  + 
import { BadRequestException, NotFoundException } from "@nestjs/common";
+import { get, isEmpty, keys } from "lodash";
+ 
+import {
+  CreateManyDto,
+  CrudRequest,
+  CrudRequestOptions,
+  GetManyDefaultResponse,
+  ParsedRequestParams,
+  QueryOptions,
+} from "../interfaces";
+ 
+export abstract class CrudService<T, DTO = T> {
+  abstract getMany(req: CrudRequest): Promise<GetManyDefaultResponse<T> | T[]>;
+ 
+  abstract getOne(req: CrudRequest): Promise<T>;
+ 
+  abstract createOne(req: CrudRequest, dto: DTO): Promise<T>;
+ 
+  abstract createMany(req: CrudRequest, dto: CreateManyDto): Promise<T[]>;
+ 
+  abstract updateOne(req: CrudRequest, dto: DTO): Promise<T>;
+ 
+  abstract replaceOne(req: CrudRequest, dto: DTO): Promise<T>;
+ 
+  abstract deleteOne(req: CrudRequest): Promise<void | T>;
+ 
+  abstract recoverOne(req: CrudRequest): Promise<void | T>;
+ 
+  throwBadRequestException(msg?: any): BadRequestException {
+    throw new BadRequestException(msg);
+  }
+ 
+  throwNotFoundException(name: string): NotFoundException {
+    throw new NotFoundException(`${name} not found`);
+  }
+ 
+  /**
+   * Wrap page into page-info
+   * override this method to create custom page-info response
+   * or set custom `serialize.getMany` dto in the controller's CrudOption
+   * @param data
+   * @param total
+   * @param limit
+   * @param offset
+   */
+  createPageInfo(
+    data: T[],
+    total: number,
+    limit: number,
+    offset: number
+  ): GetManyDefaultResponse<T> {
+    return {
+      data,
+      count: data.length,
+      total,
+      page: limit ? Math.floor(offset / limit) + 1 : 1,
+      pageCount: limit && total ? Math.ceil(total / limit) : 1,
+    };
+  }
+ 
+  /**
+   * Determine if need paging
+   * @param parsed
+   * @param options
+   */
+  decidePagination(
+    parsed: ParsedRequestParams,
+    options: CrudRequestOptions
+  ): boolean {
+    return (
+      options.query?.alwaysPaginate ||
+      ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) &&
+        !!this.getTake(parsed, <QueryOptions>options.query))
+    );
+  }
+ 
+  /**
+   * Get number of resources to be fetched
+   * @param query
+   * @param options
+   */
+  getTake(query: ParsedRequestParams, options: QueryOptions): number | null {
+    if (query.limit) {
+      return options.maxLimit
+        ? query.limit <= options.maxLimit
+          ? query.limit
+          : options.maxLimit
+        : query.limit;
+    }
+    /* istanbul ignore if */
+    if (options.limit) {
+      return options.maxLimit
+        ? options.limit <= options.maxLimit
+          ? options.limit
+          : options.maxLimit
+        : options.limit;
+    }
+ 
+    return options.maxLimit ? options.maxLimit : null;
+  }
+ 
+  /**
+   * Get number of resources to be skipped
+   * @param query
+   * @param take
+   */
+  getSkip(query: ParsedRequestParams, take: number): number | null {
+    return query.page && take
+      ? take * (query.page - 1)
+      : query.offset
+      ? query.offset
+      : null;
+  }
+ 
+  /**
+   * Get primary param name from CrudOptions
+   * @param options
+   */
+  getPrimaryParams(options: CrudRequestOptions): string[] {
+    if (isEmpty(options.params)) {
+      return [];
+    }
+    // @ts-ignore
+    return keys(options.params)
+      .filter((n: string) => get(options, `params[${n}].primary`, false))
+      .map((p: string) => get(options, `params[${p}].field`));
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/crud-config.service.ts.html b/coverage/packages/crudx/src/services/crud-config.service.ts.html new file mode 100644 index 000000000..d49c9a4b3 --- /dev/null +++ b/coverage/packages/crudx/src/services/crud-config.service.ts.html @@ -0,0 +1,277 @@ + + + + + + Code coverage report for src/services/crud-config.service.ts + + + + + + + + + +
+
+

All files / src/services crud-config.service.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 50% + Branches + 7/14 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +6511x +  +  +11x +  +  +11x +  +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +1x +1x +1x +  +1x +1x +  +  +  +  +1x +  +  +  +37x +  +  +  + 
import { isObjectFull } from "../helpers";
+import { CrudGlobalConfig, RequestQueryBuilderOptions } from "../interfaces";
+ 
+import { QueryBuilderService } from "./query-builder.service";
+ 
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const deepmerge = require('deepmerge');
+ 
+export class CrudConfigService {
+  static config: CrudGlobalConfig = {
+    auth: {},
+    query: {
+      alwaysPaginate: false,
+    },
+    operators: {},
+    routes: {
+      getManyBase: { interceptors: [], decorators: [] },
+      getOneBase: { interceptors: [], decorators: [] },
+      createOneBase: { interceptors: [], decorators: [], returnShallow: false },
+      createManyBase: { interceptors: [], decorators: [] },
+      updateOneBase: {
+        interceptors: [],
+        decorators: [],
+        allowParamsOverride: false,
+        returnShallow: false,
+      },
+      replaceOneBase: {
+        interceptors: [],
+        decorators: [],
+        allowParamsOverride: false,
+        returnShallow: false,
+      },
+      deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false },
+      recoverOneBase: {
+        interceptors: [],
+        decorators: [],
+        returnRecovered: false,
+      },
+    },
+    params: {},
+  };
+ 
+  static load(config: CrudGlobalConfig = {}): void {
+    const auth = isObjectFull(config.auth) ? config.auth : {};
+    const query = isObjectFull(config.query) ? config.query : {};
+    const routes = isObjectFull(config.routes) ? config.routes : {};
+    const operators = isObjectFull(config.operators) ? config.operators : {};
+    const params = isObjectFull(config.params) ? config.params : {};
+    const serialize = isObjectFull(config.serialize) ? config.serialize : {};
+ 
+    if (isObjectFull(config.queryParser)) {
+      QueryBuilderService.setOptions(<RequestQueryBuilderOptions>{
+        ...config.queryParser,
+      });
+    }
+ 
+    CrudConfigService.config = deepmerge(
+      CrudConfigService.config,
+      { auth, query, routes, operators, params, serialize },
+      // @ts-ignore
+      { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }
+    );
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/index.html b/coverage/packages/crudx/src/services/index.html new file mode 100644 index 000000000..b3e00f16e --- /dev/null +++ b/coverage/packages/crudx/src/services/index.html @@ -0,0 +1,206 @@ + + + + + + Code coverage report for src/services + + + + + + + + + +
+
+

All files src/services

+
+ +
+ 96.3% + Statements + 860/893 +
+ + +
+ 78.88% + Branches + 594/753 +
+ + +
+ 97.15% + Functions + 205/211 +
+ + +
+ 96.25% + Lines + 849/882 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
abstract-crud.service.ts +
+
100%17/1775%21/28100%9/9100%17/17
crud-config.service.ts +
+
100%15/1550%7/14100%2/2100%15/15
index.ts +
+
100%6/6100%0/0100%0/0100%6/6
query-builder.service.ts +
+
100%92/9279.31%46/58100%29/29100%92/92
query-parser.service.ts +
+
86.2%125/14563.63%35/5588.88%32/3685.91%122/142
routes-factory.service.ts +
+
100%212/21278.5%179/228100%57/57100%210/210
type-orm-crud.service.ts +
+
96.79%393/40682.7%306/37097.43%76/7896.75%387/400
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/index.ts.html b/coverage/packages/crudx/src/services/index.ts.html new file mode 100644 index 000000000..390c906aa --- /dev/null +++ b/coverage/packages/crudx/src/services/index.ts.html @@ -0,0 +1,103 @@ + + + + + + Code coverage report for src/services/index.ts + + + + + + + + + +
+
+

All files / src/services index.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +711x +11x +11x +11x +11x +11x + 
export * from "./abstract-crud.service";
+export * from "./crud-config.service";
+export * from "./query-builder.service";
+export * from "./query-parser.service";
+export * from "./routes-factory.service";
+export * from "./type-orm-crud.service";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/query-builder.service.ts.html b/coverage/packages/crudx/src/services/query-builder.service.ts.html new file mode 100644 index 000000000..1c48e3cab --- /dev/null +++ b/coverage/packages/crudx/src/services/query-builder.service.ts.html @@ -0,0 +1,1057 @@ + + + + + + Code coverage report for src/services/query-builder.service.ts + + + + + + + + + +
+
+

All files / src/services query-builder.service.ts

+
+ +
+ 100% + Statements + 92/92 +
+ + +
+ 79.31% + Branches + 46/58 +
+ + +
+ 100% + Functions + 29/29 +
+ + +
+ 100% + Lines + 92/92 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +32511x +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +11x +  +33x +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +33x +  +  +33x +33x +  +  +3x +  +  +  +  +  +  +  +  +  +  +427x +  +  +  +  +  +  +33x +33x +  +  +  +  +  +36x +  +  +  +33x +33x +  +396x +396x +  +  +  +  +  +  +  +  +33x +22x +22x +  +33x +33x +  +  +  +27x +4x +4x +  +  +  +27x +  +  +  +28x +21x +  +28x +  +  +  +  +  +  +  +  +  +  +27x +27x +  +  +  +  +  +  +  +  +  +  +27x +27x +  +  +  +  +  +29x +5x +5x +  +  +6x +  +  +  +29x +  +  +  +  +  +29x +4x +4x +  +  +6x +  +  +  +29x +  +  +  +27x +27x +  +  +  +27x +27x +  +  +  +27x +27x +  +  +  +1x +1x +  +  +  +27x +27x +  +  +  +  +  +  +  +11x +  +  +11x +11x +  +11x +  +  +  +  +  +  +  +  +7x +  +  +7x +7x +7x +  +7x +  +  +  +  +  +  +7x +7x +7x +  +7x +  +  +  +  +  +  +27x +27x +27x +27x +27x +27x +27x +27x +27x +27x +1x +  +27x +27x +  +  +  +  +  +  +17x +17x +17x +  +17x +  +  +  +  +  +  +  +  +  +  +  +54x +8x +8x +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +109x +1x +1x +  +  +  + 
import { get, isNil, isObject, isString, isUndefined } from "lodash";
+ 
+import { stringify } from "qs";
+ 
+import {
+  CreateQueryParams,
+  CustomOperators,
+  ParamsNamesMap,
+  RequestQueryBuilderOptions,
+} from "../interfaces";
+ 
+import {
+  QueryFields,
+  QueryFilter,
+  QueryFilterArr,
+  QueryJoin,
+  QueryJoinArr,
+  QuerySort,
+  QuerySortArr,
+  SCondition,
+} from "../types";
+ 
+import {
+  hasValue,
+  isArrayFull,
+  validateCondition,
+  validateFields,
+  validateJoin,
+  validateNumeric,
+  validateSort,
+} from "../helpers";
+ 
+import {
+  REQUEST_DELIM,
+  REQUEST_DELIM_STR,
+  REQUEST_PREFIX_EXTRA,
+} from "../constants";
+ 
+export class QueryBuilderService {
+  constructor() {
+    this.setParamNames();
+  }
+ 
+  private static _options: RequestQueryBuilderOptions = {
+    delim: REQUEST_DELIM,
+    delimStr: REQUEST_DELIM_STR,
+    paramNamesMap: <ParamsNamesMap>{
+      fields: ["fields", "select"],
+      search: "s",
+      filter: "filter",
+      or: "or",
+      join: "join",
+      sort: "sort",
+      limit: ["limit", "per_page"],
+      offset: "offset",
+      page: "page",
+      cache: "cache",
+      includeDeleted: "include_deleted",
+      extra: REQUEST_PREFIX_EXTRA,
+    },
+  };
+  private paramNames: {
+    [key in keyof ParamsNamesMap as string]: string;
+  } = {};
+  public queryObject: { [key: string]: any } = {};
+  public queryString: string = "";
+ 
+  static setOptions(options: RequestQueryBuilderOptions) {
+    QueryBuilderService._options = {
+      ...QueryBuilderService._options,
+      ...options,
+      paramNamesMap: {
+        ...QueryBuilderService._options.paramNamesMap,
+        ...(options.paramNamesMap ? options.paramNamesMap : {}),
+      },
+    };
+  }
+ 
+  static getOptions(): RequestQueryBuilderOptions {
+    return QueryBuilderService._options;
+  }
+ 
+  static create(
+    params?: CreateQueryParams,
+    customOperators: CustomOperators = {}
+  ): QueryBuilderService {
+    const qb: QueryBuilderService = new QueryBuilderService();
+    return isObject(params)
+      ? qb.createFromParams(<CreateQueryParams>params, customOperators)
+      : qb;
+  }
+ 
+  get options(): RequestQueryBuilderOptions {
+    return QueryBuilderService._options;
+  }
+ 
+  setParamNames(): void {
+    if (QueryBuilderService._options.paramNamesMap) {
+      Object.keys(QueryBuilderService._options.paramNamesMap).forEach(
+        (key: string): void => {
+          const name = get(QueryBuilderService._options.paramNamesMap, key);
+          this.paramNames[key] = isString(name)
+            ? (name as string)
+            : (name[0] as string);
+        }
+      );
+    }
+  }
+ 
+  query(encode = true): string {
+    if (this.queryObject[this.paramNames["search"]]) {
+      this.queryObject[this.paramNames["filter"]] = undefined;
+      this.queryObject[this.paramNames["or"]] = undefined;
+    }
+    this.queryString = stringify(this.queryObject, { encode });
+    return this.queryString;
+  }
+ 
+  select(fields?: QueryFields): this {
+    if (!isNil(fields) && isArrayFull(fields)) {
+      validateFields(fields);
+      this.queryObject[this.paramNames["fields"]] = fields.join(
+        this.options.delimStr
+      );
+    }
+    return this;
+  }
+ 
+  search(s?: SCondition) {
+    if (!isNil(s) && isObject(s)) {
+      this.queryObject[this.paramNames["search"]] = JSON.stringify(s);
+    }
+    return this;
+  }
+ 
+  setFilter(
+    f:
+      | QueryFilter
+      | QueryFilterArr
+      | Array<QueryFilter | QueryFilterArr>
+      | undefined,
+    customOperators: CustomOperators = {}
+  ): this {
+    this.setCondition(f, "filter", customOperators);
+    return this;
+  }
+ 
+  setOr(
+    f:
+      | QueryFilter
+      | QueryFilterArr
+      | Array<QueryFilter | QueryFilterArr>
+      | undefined,
+    customOperators: CustomOperators = {}
+  ): this {
+    this.setCondition(f, "or", customOperators);
+    return this;
+  }
+ 
+  setJoin(
+    j: QueryJoin | QueryJoinArr | Array<QueryJoin | QueryJoinArr> | undefined
+  ): this {
+    if (!isNil(j)) {
+      const param: string = this.checkQueryObjectParam("join", []);
+      this.queryObject[param] = [
+        ...this.queryObject[param],
+        ...(Array.isArray(j) && !isString(j[0])
+          ? (j as Array<QueryJoin | QueryJoinArr>).map((o) => this.addJoin(o))
+          : [this.addJoin(j as QueryJoin | QueryJoinArr)]),
+      ];
+    }
+    return this;
+  }
+ 
+  sortBy(
+    s: QuerySort | QuerySortArr | Array<QuerySort | QuerySortArr> | undefined
+  ): this {
+    if (!isNil(s)) {
+      const param = this.checkQueryObjectParam("sort", []);
+      this.queryObject[param] = [
+        ...this.queryObject[param],
+        ...(Array.isArray(s) && !isString(s[0])
+          ? (s as Array<QuerySort | QuerySortArr>).map((o) => this.addSortBy(o))
+          : [this.addSortBy(s as QuerySort | QuerySortArr)]),
+      ];
+    }
+    return this;
+  }
+ 
+  setLimit(n: number | undefined): this {
+    this.setNumeric(n, "limit");
+    return this;
+  }
+ 
+  setOffset(n: number | undefined): this {
+    this.setNumeric(n, "offset");
+    return this;
+  }
+ 
+  setPage(n: number | undefined): this {
+    this.setNumeric(n, "page");
+    return this;
+  }
+ 
+  resetCache(): this {
+    this.setNumeric(0, "cache");
+    return this;
+  }
+ 
+  setIncludeDeleted(n: number | undefined): this {
+    this.setNumeric(n, "includeDeleted");
+    return this;
+  }
+ 
+  cond(
+    f: QueryFilter | QueryFilterArr,
+    cond: "filter" | "or" | "search" = "search",
+    customOperators: CustomOperators = {}
+  ): string {
+    const filter = Array.isArray(f)
+      ? { field: f[0], operator: f[1], value: f[2] }
+      : f;
+    validateCondition(filter, cond, customOperators);
+    const d = this.options.delim;
+ 
+    return (
+      filter.field +
+      d +
+      filter.operator +
+      (hasValue(filter.value) ? d + filter.value : "")
+    );
+  }
+ 
+  private addJoin(j: QueryJoin | QueryJoinArr): string {
+    const join: QueryJoin = Array.isArray(j)
+      ? { field: j[0], select: j[1] }
+      : j;
+    validateJoin(join);
+    const d: string | undefined = this.options.delim;
+    const ds: string | undefined = this.options.delimStr;
+ 
+    return (
+      join.field +
+      (isArrayFull(join.select) ? d + (join.select?.join(ds) ?? "") : "")
+    );
+  }
+ 
+  private addSortBy(s: QuerySort | QuerySortArr): string {
+    const sort: QuerySort = Array.isArray(s) ? { field: s[0], order: s[1] } : s;
+    validateSort(sort);
+    const ds: string | undefined = this.options.delimStr;
+ 
+    return sort.field + ds + sort.order;
+  }
+ 
+  private createFromParams(
+    params: CreateQueryParams,
+    customOperators: CustomOperators
+  ): this {
+    this.select(params.fields);
+    this.search(params.search);
+    this.setFilter(params.filter, customOperators);
+    this.setOr(params.or, customOperators);
+    this.setJoin(params.join);
+    this.setLimit(params.limit);
+    this.setOffset(params.offset);
+    this.setPage(params.page);
+    this.sortBy(params.sort);
+    if (params.resetCache) {
+      this.resetCache();
+    }
+    this.setIncludeDeleted(params.includeDeleted);
+    return this;
+  }
+ 
+  private checkQueryObjectParam(
+    cond: keyof ParamsNamesMap,
+    defaults: any
+  ): string {
+    const param = this.paramNames[cond];
+    if (isNil(this.queryObject[param]) && !isUndefined(defaults)) {
+      this.queryObject[param] = defaults;
+    }
+    return param;
+  }
+ 
+  private setCondition(
+    f:
+      | QueryFilter
+      | QueryFilterArr
+      | Array<QueryFilter | QueryFilterArr>
+      | undefined,
+    cond: "filter" | "or",
+    customOperators: CustomOperators
+  ): void {
+    if (!isNil(f)) {
+      const param = this.checkQueryObjectParam(cond, []);
+      this.queryObject[param] = [
+        ...this.queryObject[param],
+        ...(Array.isArray(f) && !isString(f[0])
+          ? (f as Array<QueryFilter | QueryFilterArr>).map((o) =>
+              this.cond(o, cond, customOperators)
+            )
+          : [
+              this.cond(
+                f as QueryFilter | QueryFilterArr,
+                cond,
+                customOperators
+              ),
+            ]),
+      ];
+    }
+  }
+ 
+  private setNumeric(
+    n: number | undefined,
+    cond: "limit" | "offset" | "page" | "cache" | "includeDeleted"
+  ): void {
+    if (!isNil(n)) {
+      validateNumeric(n, cond);
+      this.queryObject[this.paramNames[cond]] = n;
+    }
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/query-parser.service.ts.html b/coverage/packages/crudx/src/services/query-parser.service.ts.html new file mode 100644 index 000000000..e99db6f33 --- /dev/null +++ b/coverage/packages/crudx/src/services/query-parser.service.ts.html @@ -0,0 +1,1411 @@ + + + + + + Code coverage report for src/services/query-parser.service.ts + + + + + + + + + +
+
+

All files / src/services query-parser.service.ts

+
+ +
+ 86.2% + Statements + 125/145 +
+ + +
+ 63.63% + Branches + 35/55 +
+ + +
+ 88.88% + Functions + 32/36 +
+ + +
+ 85.91% + Lines + 122/142 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +44311x +  +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +11x +56x +56x +56x +  +56x +  +56x +56x +56x +56x +56x +  +  +  +  +  +56x +  +  +  +56x +56x +  +  +419x +  +  +  +56x +  +  +  +55x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +55x +  +  +  +23x +  +  +  +  +23x +  +  +  +  +  +  +  +  +  +  +  +56x +56x +  +56x +27x +27x +27x +27x +27x +7x +  +  +  +7x +  +  +  +  +27x +  +27x +27x +27x +  +  +  +27x +  +  +  +27x +  +  +  +27x +  +  +  +27x +  +  +  +  +27x +  +  +  +56x +  +  +  +56x +56x +  +56x +56x +56x +56x +15x +14x +  +  +  +55x +  +  +  +257x +366x +  +  +  +  +366x +  +148x +  +  +  +  +18x +6x +  +  +12x +18x +  +  +  +  +  +  +230x +  +230x +  +18x +  +18x +  +  +  +  +  +  +  +212x +  +  +  +27x +  +  +  +  +27x +  +  +27x +38x +  +  +  +  +  +27x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +26x +26x +  +  +25x +  +  +  +  +  +  +  +25x +  +1x +  +  +1x +  +  +  +  +9x +  +  +  +  +  +27x +7x +  +20x +20x +  +20x +  +  +  +20x +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +9x +9x +9x +9x +  +45x +  +  +  +  +9x +  +9x +18x +  +  +  +  +  +9x +9x +  +9x +  +  +  +  +5x +  +5x +  +  +  +  +  +  +5x +  +5x +  +  +  +4x +4x +  +  +  +4x +  +4x +  +  +  +  +  +  +3x +3x +  +3x +  +  +  +15x +15x +  +15x +  +  +  +15x +  +15x +  +14x +14x +13x +  +1x +1x +  +  +  +  +14x +  +  + 
import {
+  get,
+  has,
+  isDate,
+  isEmpty,
+  isNil,
+  isObject,
+  isString,
+  keys,
+  set,
+} from "lodash";
+ 
+import { RequestQueryException } from "../exceptions";
+ 
+import {
+  CustomOperators,
+  ParamOption,
+  ParamsNamesMap,
+  ParamsOptions,
+  ParsedRequestParams,
+  RequestQueryBuilderOptions,
+} from "../interfaces";
+ 
+import {
+  ComparisonOperator,
+  CondOperator,
+  ObjectLiteral,
+  QueryExtra,
+  QueryFields,
+  QueryFilter,
+  QueryJoin,
+  QuerySort,
+  SCondition,
+  SConditionAND,
+  SFields,
+} from "../types";
+ 
+import { ClassTransformOptions } from "class-transformer";
+ 
+import { QueryBuilderService } from "./query-builder.service";
+import {
+  hasValue,
+  isArrayFull,
+  isDateString,
+  isStringFull,
+  validateCondition,
+  validateJoin,
+  validateNumeric,
+  validateParamOption,
+  validateSort,
+  validateUUID,
+} from "../helpers";
+ 
+import { REQUEST_PREFIX_EXTRA } from "../constants";
+ 
+export class QueryParserService implements ParsedRequestParams {
+  public fields: QueryFields = [];
+  public paramsFilter: (QueryFilter | undefined)[] = [];
+  public authPersist: ObjectLiteral | undefined = undefined;
+ 
+  public classTransformOptions: ClassTransformOptions | undefined = undefined;
+ 
+  public search: SCondition | undefined = undefined;
+  public filter: QueryFilter[] = [];
+  public or: QueryFilter[] = [];
+  public join: QueryJoin[] = [];
+  public sort: QuerySort[] = [];
+  public limit: number | undefined;
+  public offset: number | undefined;
+  public page: number | undefined;
+  public cache: number | undefined;
+  public includeDeleted: number | undefined;
+  public extra: QueryExtra = {};
+ 
+  private _params: any;
+  private _query: any;
+  private _paramNames: string[] = [];
+  private _paramsOptions: ParamsOptions = {};
+ 
+  private get _options(): RequestQueryBuilderOptions {
+    return QueryBuilderService.getOptions();
+  }
+ 
+  static create(): QueryParserService {
+    return new QueryParserService();
+  }
+ 
+  getParsed(): ParsedRequestParams {
+    return {
+      fields: this.fields,
+      paramsFilter: this.paramsFilter,
+      authPersist: this.authPersist,
+      classTransformOptions: this.classTransformOptions,
+      search: this.search,
+      filter: this.filter,
+      or: this.or,
+      join: this.join,
+      sort: this.sort,
+      limit: this.limit,
+      offset: this.offset,
+      page: this.page,
+      cache: this.cache,
+      includeDeleted: this.includeDeleted,
+      extra: this.extra,
+    };
+  }
+ 
+  setAuthPersist(persist: ObjectLiteral = {}) {
+    this.authPersist = persist || /* istanbul ignore next */ {};
+  }
+ 
+  setClassTransformOptions(options: ClassTransformOptions = {}) {
+    this.classTransformOptions = options || /* istanbul ignore next */ {};
+  }
+ 
+  convertFilterToSearch(filter: QueryFilter): SFields | SConditionAND {
+    const isEmptyValue = {
+      isnull: true,
+      notnull: true,
+    };
+ 
+    return filter
+      ? {
+          [filter.field]: {
+            [filter.operator]: has(isEmptyValue, filter.operator)
+              ? get(isEmptyValue, filter.operator)
+              : filter.value,
+          },
+        }
+      : /* istanbul ignore next */ {};
+  }
+ 
+  parseQuery(query: any, customOperators: CustomOperators = {}): this {
+    if (isObject(query)) {
+      const paramNames: string[] = keys(query);
+ 
+      if (!isEmpty(paramNames)) {
+        this._query = query;
+        this._paramNames = paramNames;
+        const searchData = this._query[this.getParamNames("search")[0]];
+        this.search = this.parseSearchQueryParam(searchData) as any;
+        if (isNil(this.search)) {
+          this.filter = this.parseQueryParam(
+            "filter",
+            this.conditionParser.bind(this, "filter", customOperators)
+          );
+          this.or = this.parseQueryParam(
+            "or",
+            this.conditionParser.bind(this, "or", customOperators)
+          );
+        }
+        this.fields =
+          this.parseQueryParam("fields", this.fieldsParser.bind(this))[0] || [];
+        this.join = this.parseQueryParam("join", this.joinParser.bind(this));
+        this.sort = this.parseQueryParam("sort", this.sortParser.bind(this));
+        this.limit = this.parseQueryParam(
+          "limit",
+          this.numericParser.bind(this, "limit")
+        )[0];
+        this.offset = this.parseQueryParam(
+          "offset",
+          this.numericParser.bind(this, "offset")
+        )[0];
+        this.page = this.parseQueryParam(
+          "page",
+          this.numericParser.bind(this, "page")
+        )[0];
+        this.cache = this.parseQueryParam(
+          "cache",
+          this.numericParser.bind(this, "cache")
+        )[0];
+        this.includeDeleted = this.parseQueryParam(
+          "includeDeleted",
+          this.numericParser.bind(this, "includeDeleted")
+        )[0];
+ 
+        this.extra = this.parseExtraFromQueryParam();
+      }
+    }
+ 
+    return this;
+  }
+ 
+  parseParams(params: any, options: ParamsOptions): this {
+    if (isObject(params)) {
+      const paramNames: string[] = keys(params);
+ 
+      if (!isNil(paramNames)) {
+        this._params = params;
+        this._paramsOptions = options;
+        this.paramsFilter = paramNames
+          .map((name: string) => this.paramParser(name))
+          .filter((filter: QueryFilter | undefined) => filter);
+      }
+    }
+ 
+    return this;
+  }
+ 
+  private getParamNames(type: keyof ParamsNamesMap): string[] {
+    return this._paramNames.filter((p: string): boolean => {
+      const name: string | string[] = get(
+        this._options.paramNamesMap,
+        type,
+        ""
+      );
+      return isString(name)
+        ? name === p
+        : (name as string[]).some((m: string): boolean => m === p);
+    });
+  }
+ 
+  private getParamValues(value: string | string[], parser: Function): any[] {
+    if (isStringFull(value)) {
+      return [parser.call(this, value)];
+    }
+ 
+    if (isArrayFull(value)) {
+      return (value as string[]).map((val: string) => parser(val));
+    }
+ 
+    return [];
+  }
+ 
+  private parseQueryParam(type: keyof ParamsNamesMap, parser: Function): any[] {
+    const param: string[] = this.getParamNames(type);
+ 
+    if (isArrayFull(param)) {
+      // @ts-ignore
+      return param.reduce(
+        // @ts-ignore
+        (a: [], name: string): string[] => [
+          ...a,
+          ...this.getParamValues(this._query[name], parser),
+        ],
+        []
+      );
+    }
+ 
+    return [];
+  }
+ 
+  private parseExtraFromQueryParam(): QueryExtra {
+    const extraParam: string | string[] | [] = get(
+      this._options.paramNamesMap,
+      "extra",
+      []
+    );
+    const params: string[] = Array.isArray(extraParam)
+      ? extraParam
+      : [extraParam];
+    const extraKeys: {} = keys(this._query || {})
+      .filter((k: string) => params.find((p: string) => k?.startsWith(p)))
+      .reduce((o: {}, k: string) => {
+        const key: string = k.replace(REQUEST_PREFIX_EXTRA, "");
+        this.parseDotChainToObject(this._query[k], key, o);
+        return o;
+      }, {});
+    return keys(extraKeys).length > 0 ? extraKeys : undefined;
+  }
+ 
+  /**
+   * Build an object from data and composite key.
+   *
+   * @param data to used on parse workflow
+   * @param key composite key as 'foo.bar.hero'
+   * @param result object with parsed "data" and "key" structure
+   * @private
+   */
+  private parseDotChainToObject(data: any, key: string, result: {} = {}): void {
+    if (key.includes(".")) {
+      const keys: string[] = key.split(".");
+      const firstKey: string | undefined = keys.shift();
+      set(result, firstKey as string, {});
+      this.parseDotChainToObject(
+        data,
+        keys.join("."),
+        get(result, firstKey as string)
+      );
+    } else {
+      set(result, key, this.parseValue(data));
+    }
+  }
+ 
+  private parseValue(val: any) {
+    try {
+      const parsed = JSON.parse(val);
+ 
+      // throw new Error('Don\'t support object now')
+      Iif (
+        (!isDate(parsed) && isObject(parsed)) ||
+        // JS cannot handle big numbers. Leave it as a string to prevent data loss
+        (typeof parsed === "number" &&
+          parsed.toLocaleString("fullwide", { useGrouping: false }) !== val)
+      ) {
+        return val;
+      }
+      return parsed;
+    } catch (_) {
+      Iif (isDateString(val)) {
+        return new Date(val);
+      }
+      return val;
+    }
+  }
+ 
+  private parseValues(values: any) {
+    return isArrayFull(values)
+      ? values.map((v: any) => this.parseValue(v))
+      : this.parseValue(values);
+  }
+ 
+  private parseSearchQueryParam(d: any): SCondition | undefined {
+    if (isNil(d)) {
+      return undefined;
+    }
+    try {
+      const data = JSON.parse(d);
+ 
+      Iif (!isObject(data)) {
+        throw new Error();
+      }
+ 
+      return data;
+    } catch (_) {
+      throw new RequestQueryException("Invalid search param. JSON expected");
+    }
+  }
+ 
+  private fieldsParser(data: string): QueryFields {
+    // @ts-ignore
+    return data.split(this._options.delimStr);
+  }
+ 
+  private conditionParser(
+    cond: "filter" | "or" | "search",
+    customOperators: CustomOperators,
+    data: string
+  ): QueryFilter {
+    const isArrayValue: string[] = [
+      CondOperator.IN as string,
+      CondOperator.NOT_IN as string,
+      CondOperator.BETWEEN as string,
+      CondOperator.IN_LOW as string,
+      CondOperator.NOT_IN_LOW as string,
+    ].concat(
+      Object.keys(customOperators).filter(
+        (op: string) => customOperators[op].isArray
+      )
+    );
+    const isEmptyValue: string[] = [
+      CondOperator.IS_NULL as string,
+      CondOperator.NOT_NULL as string,
+    ];
+    // @ts-ignore
+    const param: string[] = data.split(this._options.delim);
+    const field: string = param[0];
+    const operator: string = param[1] as ComparisonOperator;
+    let value: string = param[2] || "";
+ 
+    Iif (isArrayValue.some((name: string): boolean => name === operator)) {
+      // @ts-ignore
+      value = value.split(this._options.delimStr) as any;
+    }
+ 
+    value = this.parseValues(value);
+ 
+    Iif (
+      !isEmptyValue.some((name: string): boolean => name === operator) &&
+      !hasValue(value)
+    ) {
+      throw new RequestQueryException(`Invalid ${cond} value`);
+    }
+ 
+    const condition: QueryFilter = { field, operator, value };
+    validateCondition(condition, cond, customOperators);
+ 
+    return condition;
+  }
+ 
+  private joinParser(data: string): QueryJoin {
+    // @ts-ignore
+    const param: string[] = data.split(this._options.delim);
+ 
+    const join: QueryJoin = {
+      field: param[0],
+      select: isStringFull(param[1])
+        ? // @ts-ignore
+          param[1].split(this._options.delimStr)
+        : undefined,
+    };
+    validateJoin(join);
+ 
+    return join;
+  }
+ 
+  private sortParser(data: string): QuerySort {
+    const param: string[] = data.split(this._options.delimStr);
+    const sort: QuerySort = {
+      field: param[0],
+      order: param[1] as any,
+    };
+    validateSort(sort);
+ 
+    return sort;
+  }
+ 
+  private numericParser(
+    num: "limit" | "offset" | "page" | "cache" | "includeDeleted",
+    data: string
+  ): number {
+    const val = this.parseValue(data);
+    validateNumeric(val, num);
+ 
+    return val;
+  }
+ 
+  private paramParser(name: string): QueryFilter | undefined {
+    validateParamOption(this._paramsOptions, name);
+    const option: ParamOption = this._paramsOptions[name];
+ 
+    Iif (option.disabled) {
+      return undefined;
+    }
+ 
+    let value = this._params[name];
+ 
+    switch (option.type) {
+      case "number":
+        value = this.parseValue(value);
+        validateNumeric(value, `param ${name}`);
+        break;
+      case "uuid":
+        validateUUID(value, name);
+        break;
+      default:
+        break;
+    }
+ 
+    return { field: option.field as string, operator: "$eq", value };
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/routes-factory.service.ts.html b/coverage/packages/crudx/src/services/routes-factory.service.ts.html new file mode 100644 index 000000000..b8822ef65 --- /dev/null +++ b/coverage/packages/crudx/src/services/routes-factory.service.ts.html @@ -0,0 +1,2137 @@ + + + + + + Code coverage report for src/services/routes-factory.service.ts + + + + + + + + + +
+
+

All files / src/services routes-factory.service.ts

+
+ +
+ 100% + Statements + 212/212 +
+ + +
+ 78.5% + Branches + 179/228 +
+ + +
+ 100% + Functions + 57/57 +
+ + +
+ 100% + Lines + 210/210 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +68511x +11x +11x +11x +  +  +  +  +  +  +  +  +  +  +  +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +  +11x +  +  +11x +  +11x +  +17x +  +17x +17x +17x +  +  +  +  +  +  +  +  +1738x +  +  +  +235x +  +  +  +145x +  +  +  +109x +  +  +  +  +  +  +  +  +  +  +  +  +17x +17x +17x +17x +17x +17x +  +  +  +  +17x +17x +17x +14x +  +17x +16x +  +17x +  +16x +  +  +  +  +17x +  +  +  +17x +  +  +17x +  +  +17x +  +  +  +  +284x +  +  +  +  +17x +  +  +  +  +17x +  +  +  +  +  +  +  +17x +  +  +  +  +17x +17x +  +12x +  +  +  +  +  +  +  +17x +17x +  +  +  +17x +  +  +17x +  +  +  +17x +  +  +17x +  +  +  +  +  +  +  +  +  +17x +  +  +17x +  +  +17x +  +  +17x +  +  +  +  +  +17x +  +17x +  +  +  +17x +17x +  +  +  +17x +15x +  +15x +  +  +2x +1x +  +1x +  +  +1x +  +1x +  +  +  +17x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +15x +34x +  +  +  +  +17x +6x +  +  +  +  +16x +  +  +  +4x +  +  +  +  +15x +  +  +  +2x +  +  +  +  +15x +  +  +  +2x +  +  +  +  +15x +  +  +  +2x +  +  +  +  +15x +2x +  +  +  +  +1x +1x +  +  +  +  +136x +136x +  +  +136x +16x +  +  +120x +  +29x +  +  +106x +  +14x +  +  +92x +  +  +  +17x +  +  +17x +  +  +17x +  +  +17x +  +  +17x +  +  +17x +  +  +17x +  +  +17x +  +  +17x +  +  +  +17x +17x +  +  +17x +136x +  +109x +109x +  +109x +  +  +136x +80x +  +  +16x +  +  +64x +  +  +  +  +  +  +17x +  +132x +  +  +132x +1034x +  +  +132x +  +4x +4x +  +  +4x +  +  +4x +4x +  +  +4x +4x +  +  +4x +4x +  +  +  +4x +  +  +  +4x +4x +  +  +  +4x +  +  +  +4x +  +  +  +4x +  +4x +4x +  +  +  +  +  +  +17x +136x +105x +  +  +  +  +  +4x +  +  +  +  +  +4x +4x +  +4x +2x +2x +2x +2x +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +1x +1x +  +1x +1x +  +  +  +1x +1x +1x +  +  +  +  +  +  +34x +  +24x +  +  +  +  +109x +109x +109x +109x +109x +109x +109x +109x +  +109x +  +  +  +109x +109x +  +  +  +  +  +  +109x +61x +61x +61x +61x +  +  +  +  +  +61x +  +  +  +61x +  +  +109x +  +  +  +109x +  +15x +15x +15x +  +46x +46x +46x +46x +  +48x +  +  +  +  +109x +109x +  +  +  +  +  +  +  +  +  +  +109x +109x +  +  +  +  +  +  +  +109x +  +  +  +109x +  +109x +109x +  +  +  +109x +109x +  +  +  +  +  +109x +109x +116x +  +  +115x +  +69x +  +109x +109x +  +  +  +109x +109x +109x +  +  +  +  +  +  +109x +  +109x +109x +  +  +  +  +  +  +107x +  +  + 
import { RequestMethod } from "@nestjs/common";
+import { RouteParamtypes } from "@nestjs/common/enums/route-paramtypes.enum";
+import { get, isEqual, isFunction, isNil, isUndefined, keys } from "lodash";
+import {
+  createBulkDto,
+  getValidationPipe,
+  isArrayFull,
+  isFalse,
+  isIn,
+  isObjectFull,
+  R,
+  SerializeHelper,
+  Swagger,
+} from "../helpers";
+ 
+import { CrudActions, CrudValidationGroups } from "../enums";
+import {
+  CrudRequestInterceptor,
+  CrudResponseInterceptor,
+} from "../interceptors";
+ 
+import {
+  AuthOptions,
+  BaseRoute,
+  CrudOptions,
+  CrudRequest,
+  MergedCrudOptions,
+  OperatorsOptions,
+  ParamsOptions,
+  QueryOptions,
+  RoutesOptions,
+  SwaggerOptions,
+} from "../interfaces";
+import { CrudConfigService } from "../services";
+import { BaseRouteName } from "../types";
+ 
+import * as SWAGGER_CONSTANTS from '@nestjs/swagger/dist/constants';
+ 
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const deepmerge = require('deepmerge');
+ 
+export class RoutesFactoryService {
+  protected options: MergedCrudOptions;
+  protected swaggerModels: any = {};
+ 
+  constructor(protected target: any, options: CrudOptions) {
+    this.options = options;
+    this.create();
+  }
+ 
+  /* istanbul ignore next */
+  static create(target: any, options: CrudOptions): RoutesFactoryService {
+    return new RoutesFactoryService(target, options);
+  }
+ 
+  protected get targetProto(): any {
+    return this.target.prototype;
+  }
+ 
+  protected get modelName(): string {
+    return this.options.model.type.name;
+  }
+ 
+  protected get modelType(): any {
+    return this.options.model.type;
+  }
+ 
+  protected get actionsMap(): { [key in BaseRouteName]: CrudActions } {
+    return {
+      getManyBase: CrudActions.ReadAll,
+      getOneBase: CrudActions.ReadOne,
+      createManyBase: CrudActions.CreateMany,
+      createOneBase: CrudActions.CreateOne,
+      updateOneBase: CrudActions.UpdateOne,
+      deleteOneBase: CrudActions.DeleteOne,
+      replaceOneBase: CrudActions.ReplaceOne,
+      recoverOneBase: CrudActions.RecoverOne,
+    };
+  }
+ 
+  protected create(): void {
+    const routesSchema: BaseRoute[] = this.getRoutesSchema();
+    this.mergeOptions();
+    this.setResponseModels();
+    this.createRoutes(routesSchema);
+    this.overrideRoutes(routesSchema);
+    this.enableRoutes(routesSchema);
+  }
+ 
+  protected mergeOptions(): void {
+    // merge auth config
+    const authOptions: AuthOptions = R.getCrudAuthOptions(this.target);
+    this.options.auth = isObjectFull(authOptions) ? authOptions : {};
+    if (isUndefined(this.options.auth.property)) {
+      this.options.auth.property = CrudConfigService.config?.auth?.property;
+    }
+    if (isUndefined(this.options.auth.groups)) {
+      this.options.auth.groups = CrudConfigService.config?.auth?.groups;
+    }
+    if (isUndefined(this.options.auth.classTransformOptions)) {
+      // @ts-ignore
+      this.options.auth.classTransformOptions =
+        CrudConfigService.config.auth?.classTransformOptions;
+    }
+ 
+    // merge query config
+    const query: QueryOptions | {} = isObjectFull(this.options.query)
+      ? <QueryOptions>this.options.query
+      : {};
+ 
+    this.options.query = { ...CrudConfigService.config.query, ...query };
+ 
+    // merge routes config
+    const routes: RoutesOptions | {} = isObjectFull(this.options.routes)
+      ? <RoutesOptions>this.options.routes
+      : {};
+    this.options.routes = deepmerge(
+      CrudConfigService.config.routes || {},
+      routes,
+      {
+        // @ts-ignore
+        arrayMerge: (a, b, c) => b,
+      }
+    );
+ 
+    // merge operators config
+    const operators: OperatorsOptions | {} = isObjectFull(
+      this.options.operators
+    )
+      ? <OperatorsOptions>this.options.operators
+      : {};
+    this.options.operators = <OperatorsOptions>(
+      deepmerge(
+        <OperatorsOptions>CrudConfigService.config?.operators,
+        operators
+      )
+    );
+ 
+    // set params
+    this.options.params = <ParamsOptions | {}>isObjectFull(this.options.params)
+      ? this.options.params
+      : isObjectFull(CrudConfigService.config.params)
+      ? CrudConfigService.config.params
+      : {};
+    const hasPrimary: boolean = this.getPrimaryParams().length > 0;
+    if (!hasPrimary) {
+      // @ts-ignore
+      this.options.params["id"] = {
+        field: "id",
+        type: "number",
+        primary: true,
+      };
+    }
+ 
+    // set dto
+    if (!isObjectFull(this.options.dto)) {
+      this.options.dto = {};
+    }
+ 
+    // set serialize
+    const serialize = isObjectFull(this.options.serialize)
+      ? this.options.serialize
+      : {};
+    this.options.serialize = {
+      ...CrudConfigService.config.serialize,
+      ...serialize,
+    };
+    this.options.serialize.get = isFalse(this.options.serialize.get)
+      ? false
+      : this.options.serialize.get || this.modelType;
+    this.options.serialize.getMany = isFalse(this.options.serialize.getMany)
+      ? false
+      : this.options.serialize.getMany
+      ? this.options.serialize.getMany
+      : isFalse(this.options.serialize.get)
+      ? false
+      : SerializeHelper.createGetManyDto(
+          this.options.serialize.get,
+          this.modelName
+        );
+    this.options.serialize.create = isFalse(this.options.serialize.create)
+      ? false
+      : this.options.serialize.create || this.modelType;
+    this.options.serialize.update = isFalse(this.options.serialize.update)
+      ? false
+      : this.options.serialize.update || this.modelType;
+    this.options.serialize.replace = isFalse(this.options.serialize.replace)
+      ? false
+      : this.options.serialize.replace || this.modelType;
+    this.options.serialize.delete =
+      isFalse(this.options.serialize.delete) ||
+      !this.options.routes?.deleteOneBase?.returnDeleted
+        ? false
+        : this.options.serialize.delete || this.modelType;
+ 
+    this.options.swagger = this.getSwaggerOptions();
+ 
+    R.setCrudOptions(this.options, this.target);
+  }
+ 
+  protected getSwaggerOptions(): SwaggerOptions {
+    const isSwaggerDefined = SWAGGER_CONSTANTS !== undefined && SWAGGER_CONSTANTS !== null;
+    const options = <SwaggerOptions>{
+      enabled: false,
+    }
+ 
+    if (this.options.swagger === undefined) {
+      options.enabled = true && isSwaggerDefined;
+ 
+      return options;
+    }
+ 
+    if (isFalse(this.options.swagger!.enabled)) {
+      options.enabled = false;
+ 
+      return options;
+    }
+    
+    options.enabled = isSwaggerDefined;
+ 
+    return options;
+  }
+ 
+  protected getRoutesSchema(): BaseRoute[] {
+    return [
+      {
+        name: "getOneBase",
+        path: "/",
+        method: RequestMethod.GET,
+        enable: false,
+        override: false,
+        withParams: true,
+      },
+      {
+        name: "getManyBase",
+        path: "/",
+        method: RequestMethod.GET,
+        enable: false,
+        override: false,
+        withParams: false,
+      },
+      {
+        name: "createOneBase",
+        path: "/",
+        method: RequestMethod.POST,
+        enable: false,
+        override: false,
+        withParams: false,
+      },
+      {
+        name: "createManyBase",
+        path: "/bulk",
+        method: RequestMethod.POST,
+        enable: false,
+        override: false,
+        withParams: false,
+      },
+      {
+        name: "updateOneBase",
+        path: "/",
+        method: RequestMethod.PATCH,
+        enable: false,
+        override: false,
+        withParams: true,
+      },
+      {
+        name: "replaceOneBase",
+        path: "/",
+        method: RequestMethod.PUT,
+        enable: false,
+        override: false,
+        withParams: true,
+      },
+      {
+        name: "deleteOneBase",
+        path: "/",
+        method: RequestMethod.DELETE,
+        enable: false,
+        override: false,
+        withParams: true,
+      },
+      {
+        name: "recoverOneBase",
+        path: "/recover",
+        method: RequestMethod.PATCH,
+        enable: false,
+        override: false,
+        withParams: true,
+      },
+    ];
+  }
+ 
+  protected getManyBase(name: BaseRouteName) {
+    this.targetProto[name] = function getManyBase(req: CrudRequest) {
+      return this.service.getMany(req);
+    };
+  }
+ 
+  protected getOneBase(name: BaseRouteName) {
+    this.targetProto[name] = function getOneBase(req: CrudRequest) {
+      return this.service.getOne(req);
+    };
+  }
+ 
+  protected createOneBase(name: BaseRouteName) {
+    this.targetProto[name] = function createOneBase(
+      req: CrudRequest,
+      dto: any
+    ) {
+      return this.service.createOne(req, dto);
+    };
+  }
+ 
+  protected createManyBase(name: BaseRouteName) {
+    this.targetProto[name] = function createManyBase(
+      req: CrudRequest,
+      dto: any
+    ) {
+      return this.service.createMany(req, dto);
+    };
+  }
+ 
+  protected updateOneBase(name: BaseRouteName) {
+    this.targetProto[name] = function updateOneBase(
+      req: CrudRequest,
+      dto: any
+    ) {
+      return this.service.updateOne(req, dto);
+    };
+  }
+ 
+  protected replaceOneBase(name: BaseRouteName) {
+    this.targetProto[name] = function replaceOneBase(
+      req: CrudRequest,
+      dto: any
+    ) {
+      return this.service.replaceOne(req, dto);
+    };
+  }
+ 
+  protected deleteOneBase(name: BaseRouteName) {
+    this.targetProto[name] = function deleteOneBase(req: CrudRequest) {
+      return this.service.deleteOne(req);
+    };
+  }
+ 
+  protected recoverOneBase(name: BaseRouteName) {
+    this.targetProto[name] = function recoverOneBase(req: CrudRequest) {
+      return this.service.recoverOne(req);
+    };
+  }
+ 
+  protected canCreateRoute(name: BaseRouteName) {
+    const only: BaseRouteName[] | undefined = this.options.routes?.only;
+    const exclude: BaseRouteName[] | undefined = this.options.routes?.exclude;
+ 
+    // include recover route only for models with soft delete option
+    if (name === "recoverOneBase" && this.options.query?.softDelete !== true) {
+      return false;
+    }
+ 
+    if (isArrayFull(only)) {
+      // @ts-ignore
+      return only.some((route: BaseRouteName): boolean => route === name);
+    }
+ 
+    if (isArrayFull(exclude)) {
+      // @ts-ignore
+      return !exclude.some((route: BaseRouteName): boolean => route === name);
+    }
+ 
+    return true;
+  }
+ 
+  protected setResponseModels() {
+    const modelType = isFunction(this.modelType)
+      ? this.modelType
+      : SerializeHelper.createGetOneResponseDto(this.modelName);
+    this.swaggerModels.get = isFunction(this.options.serialize?.get)
+      ? this.options.serialize?.get
+      : modelType;
+    this.swaggerModels.getMany =
+      this.options.serialize?.getMany ||
+      SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName);
+    this.swaggerModels.create = isFunction(this.options.serialize?.create)
+      ? this.options.serialize?.create
+      : modelType;
+    this.swaggerModels.update = isFunction(this.options.serialize?.update)
+      ? this.options.serialize?.update
+      : modelType;
+    this.swaggerModels.replace = isFunction(this.options.serialize?.replace)
+      ? this.options.serialize?.replace
+      : modelType;
+    this.swaggerModels.delete = isFunction(this.options.serialize?.delete)
+      ? this.options.serialize?.delete
+      : modelType;
+    this.swaggerModels.recover = isFunction(this.options.serialize?.recover)
+      ? this.options.serialize?.recover
+      : modelType;
+    Swagger.setExtraModels(this.swaggerModels);
+  }
+ 
+  protected createRoutes(routesSchema: BaseRoute[]) {
+    const primaryParams: string[] = this.getPrimaryParams().filter(
+      (param: string) => !this.options.params?.[param]?.disabled
+    );
+ 
+    routesSchema.forEach((route) => {
+      if (this.canCreateRoute(route.name)) {
+        // create base method
+        this[route.name](route.name);
+        route.enable = true;
+        // set metadata
+        this.setBaseRouteMeta(route.name);
+      }
+ 
+      if (route.withParams && primaryParams.length > 0) {
+        route.path =
+          route.path !== "/"
+            ? `${primaryParams
+                .map((param: string): string => `/:${param}`)
+                .join("")}${route.path}`
+            : primaryParams
+                .map((param: string): string => `/:${param}`)
+                .join("");
+      }
+    });
+  }
+ 
+  protected overrideRoutes(routesSchema: BaseRoute[]): void {
+    Object.getOwnPropertyNames(this.targetProto).forEach(
+      (name: string): void => {
+        const override: BaseRouteName = R.getOverrideRoute(
+          this.targetProto[name]
+        );
+        const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) =>
+          isEqual(r.name, override)
+        );
+ 
+        if (override && route && route.enable) {
+          // get metadata
+          const interceptors: any[] = R.getInterceptors(this.targetProto[name]);
+          const baseInterceptors: any[] = R.getInterceptors(
+            this.targetProto[override]
+          );
+          const baseAction: CrudActions = R.getAction(
+            this.targetProto[override]
+          );
+          const operation = Swagger.getOperation(this.targetProto[name]);
+          const baseOperation = Swagger.getOperation(
+            this.targetProto[override]
+          );
+          const swaggerParams = Swagger.getParams(this.targetProto[name]);
+          const baseSwaggerParams = Swagger.getParams(
+            this.targetProto[override]
+          );
+          const responseOk = Swagger.getResponseOk(this.targetProto[name]);
+          const baseResponseOk = Swagger.getResponseOk(
+            this.targetProto[override]
+          );
+          // set metadata
+          R.setInterceptors(
+            [...baseInterceptors, ...interceptors],
+            this.targetProto[name]
+          );
+          R.setAction(baseAction, this.targetProto[name]);
+          Swagger.setOperation(
+            { ...baseOperation, ...operation },
+            this.targetProto[name]
+          );
+          Swagger.setParams(
+            [...baseSwaggerParams, ...swaggerParams],
+            this.targetProto[name]
+          );
+          Swagger.setResponseOk(
+            { ...baseResponseOk, ...responseOk },
+            this.targetProto[name]
+          );
+          this.overrideParsedBodyDecorator(override, name);
+          // enable route
+          R.setRoute(route, this.targetProto[name]);
+          route.override = true;
+        }
+      }
+    );
+  }
+ 
+  protected enableRoutes(routesSchema: BaseRoute[]) {
+    routesSchema.forEach((route) => {
+      if (!route.override && route.enable) {
+        R.setRoute(route, this.targetProto[route.name]);
+      }
+    });
+  }
+ 
+  protected overrideParsedBodyDecorator(override: BaseRouteName, name: string) {
+    const allowed: BaseRouteName[] = [
+      "createManyBase",
+      "createOneBase",
+      "updateOneBase",
+      "replaceOneBase",
+    ] as BaseRouteName[];
+    const withBody: Boolean = isIn(override, allowed);
+    const parsedBody = R.getParsedBody(this.targetProto[name]);
+ 
+    if (withBody && parsedBody) {
+      const baseKey: string = `${RouteParamtypes.BODY}:1`;
+      const key: string = `${RouteParamtypes.BODY}:${parsedBody.index}`;
+      const baseRouteArgs = R.getRouteArgs(this.target, override);
+      const routeArgs = R.getRouteArgs(this.target, name);
+      const baseBodyArg = baseRouteArgs[baseKey];
+      R.setRouteArgs(
+        {
+          ...routeArgs,
+          [key]: {
+            ...baseBodyArg,
+            index: parsedBody.index,
+          },
+        },
+        this.target,
+        name
+      );
+ 
+      /* istanbul ignore else */
+      if (isEqual(override, "createManyBase")) {
+        const paramTypes: any[] = R.getRouteArgsTypes(this.targetProto, name);
+        const metatype = paramTypes[parsedBody.index];
+        const types = [String, Boolean, Number, Array, Object];
+        const toCopy: boolean = isIn(metatype, types) || isNil(metatype);
+ 
+        if (toCopy) {
+          const baseParamTypes: any[] = R.getRouteArgsTypes(
+            this.targetProto,
+            override
+          );
+          const baseMetatype = baseParamTypes[1];
+          paramTypes.splice(parsedBody.index, 1, baseMetatype);
+          R.setRouteArgsTypes(paramTypes, this.targetProto, name);
+        }
+      }
+    }
+  }
+ 
+  protected getPrimaryParams(): string[] {
+    return keys(this.options.params).filter(
+      (param: string) =>
+        this.options.params?.[param] && this.options.params[param].primary
+    );
+  }
+ 
+  protected setBaseRouteMeta(name: BaseRouteName) {
+    this.setRouteArgs(name);
+    this.setRouteArgsTypes(name);
+    this.setInterceptors(name);
+    this.setAction(name);
+    this.setSwaggerOperation(name);
+    this.setSwaggerPathParams(name);
+    this.setSwaggerQueryParams(name);
+    this.setSwaggerResponseOk(name);
+    // set decorators after Swagger so metadata can be overwritten
+    this.setDecorators(name);
+  }
+ 
+  protected setRouteArgs(name: BaseRouteName) {
+    let rest = {};
+    const routes: BaseRouteName[] = [
+      "createManyBase",
+      "createOneBase",
+      "updateOneBase",
+      "replaceOneBase",
+    ];
+ 
+    if (isIn(name, routes)) {
+      const action: string = this.routeNameAction(name);
+      const hasDto: boolean = !isNil(get(this.options, `dto.${action}`));
+      const { UPDATE, CREATE } = CrudValidationGroups;
+      const groupEnum: CrudValidationGroups = isIn(name, [
+        "updateOneBase",
+        "replaceOneBase",
+      ])
+        ? UPDATE
+        : CREATE;
+      const group: CrudValidationGroups | undefined = !hasDto
+        ? groupEnum
+        : undefined;
+ 
+      rest = R.setBodyArg(1, [getValidationPipe(this.options, group)]);
+    }
+ 
+    R.setRouteArgs({ ...R.setParsedRequestArg(0), ...rest }, this.target, name);
+  }
+ 
+  protected setRouteArgsTypes(name: BaseRouteName): void {
+    switch (true) {
+      case isEqual(name, "createManyBase"):
+        const bulkDto = createBulkDto(this.options);
+        R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name);
+        break;
+      case isIn(name, ["createOneBase", "updateOneBase", "replaceOneBase"]):
+        const action: string = this.routeNameAction(name);
+        const dto = get(this.options, `dto.${action}`, this.modelType);
+        R.setRouteArgsTypes([Object, dto], this.targetProto, name);
+        break;
+      default:
+        R.setRouteArgsTypes([Object], this.targetProto, name);
+    }
+  }
+ 
+  protected setInterceptors(name: BaseRouteName): void {
+    const interceptors = get(this.options, `routes.${name}.interceptors`, []);
+    R.setInterceptors(
+      [
+        CrudRequestInterceptor,
+        CrudResponseInterceptor,
+        ...(isArrayFull(interceptors) ? interceptors : []),
+      ],
+      this.targetProto[name]
+    );
+  }
+ 
+  protected setDecorators(name: BaseRouteName): void {
+    const decorators = get(this.options, `routes.${name}.decorators`, []);
+    R.setDecorators(
+      isArrayFull(decorators) ? decorators : [],
+      this.targetProto,
+      name
+    );
+  }
+ 
+  protected setAction(name: BaseRouteName): void {
+    R.setAction(this.actionsMap[name], this.targetProto[name]);
+  }
+ 
+  protected setSwaggerOperation(name: BaseRouteName) {
+    const summary: string = Swagger.operationsMap(this.modelName)[name];
+    const operationId: string =
+      name + this.targetProto.constructor.name + this.modelName;
+    Swagger.setOperation({ summary, operationId }, this.targetProto[name]);
+  }
+ 
+  protected setSwaggerPathParams(name: BaseRouteName): void {
+    const metadata: any[] = Swagger.getParams(this.targetProto[name]);
+    const withoutPrimary: BaseRouteName[] = [
+      "createManyBase",
+      "createOneBase",
+      "getManyBase",
+    ];
+ 
+    const removePrimary: boolean = isIn(name, withoutPrimary);
+    const params: {} = keys(this.options.params)
+      .filter((key: string) => !get(this.options, `params.${key}.disabled`))
+      .filter(
+        (key: string) =>
+          !(removePrimary && get(this.options, `params.${key}.primary`))
+      )
+      .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {});
+ 
+    const pathParamsMeta: any[] = Swagger.createPathParamsMeta(params);
+    Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]);
+  }
+ 
+  protected setSwaggerQueryParams(name: BaseRouteName): void {
+    const metadata: any[] = Swagger.getParams(this.targetProto[name]);
+    const queryParamsMeta = Swagger.createQueryParamsMeta(name, this.options);
+    Swagger.setParams(
+      [...metadata, ...queryParamsMeta],
+      this.targetProto[name]
+    );
+  }
+ 
+  protected setSwaggerResponseOk(name: BaseRouteName): void {
+    const metadata = Swagger.getResponseOk(this.targetProto[name]);
+    const metadataToAdd =
+      Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {};
+    Swagger.setResponseOk(
+      { ...metadata, ...metadataToAdd },
+      this.targetProto[name]
+    );
+  }
+ 
+  protected routeNameAction(name: BaseRouteName): string {
+    return name.split("OneBase")[0] || name.split("ManyBase")[0];
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/services/type-orm-crud.service.ts.html b/coverage/packages/crudx/src/services/type-orm-crud.service.ts.html new file mode 100644 index 000000000..364a6024a --- /dev/null +++ b/coverage/packages/crudx/src/services/type-orm-crud.service.ts.html @@ -0,0 +1,4141 @@ + + + + + + Code coverage report for src/services/type-orm-crud.service.ts + + + + + + + + + +
+
+

All files / src/services type-orm-crud.service.ts

+
+ +
+ 96.79% + Statements + 393/406 +
+ + +
+ 82.7% + Branches + 306/370 +
+ + +
+ 97.43% + Functions + 76/78 +
+ + +
+ 96.75% + Lines + 387/400 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353  +  +11x +11x +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +11x +  +  +  +  +  +  +24x +24x +24x +24x +  +  +  +  +  +  +24x +24x +  +24x +24x +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +1x +  +  +  +21x +  +  +  +515x +  +  +  +  +  +  +  +  +  +34x +34x +  +  +  +  +33x +  +  +  +  +  +  +  +6x +  +  +  +  +  +  +  +  +  +4x +4x +  +  +4x +  +  +  +4x +  +4x +1x +  +3x +  +3x +  +  +  +  +  +3x +3x +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +2x +4x +4x +  +  +2x +  +  +  +2x +  +  +  +  +  +  +  +  +  +2x +  +2x +  +  +2x +2x +  +2x +  +  +2x +  +  +  +  +  +  +  +2x +1x +  +1x +  +1x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +2x +  +2x +  +  +2x +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +2x +1x +  +1x +  +  +1x +  +  +  +1x +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +2x +  +  +  +2x +2x +2x +  +  +  +  +  +  +  +  +2x +  +  +  +2x +  +  +  +5x +  +5x +5x +  +5x +  +  +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +52x +  +  +  +52x +  +52x +  +  +52x +3x +2x +  +  +  +  +52x +  +  +  +  +  +  +52x +52x +  +52x +30x +  +30x +109x +4x +2x +  +  +  +4x +4x +  +  +  +30x +5x +7x +6x +  +  +  +  +  +52x +  +52x +51x +  +  +51x +  +51x +2x +  +  +  +51x +  +51x +1x +  +  +  +  +  +51x +2x +  +  +51x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +33x +2x +2x +2x +  +2x +  +  +31x +  +  +  +24x +  +  +112x +16x +16x +  +96x +96x +  +  +24x +112x +24x +24x +112x +  +  +  +  +  +  +  +  +18x +18x +  +  +  +18x +3x +  +  +  +  +  +  +18x +  +  +  +18x +1x +  +  +17x +  +  +  +  +  +  +  +8x +  +  +  +8x +1x +  +1x +  +  +  +  +8x +  +  +  +8x +  +  +  +  +  +  +  +  +  +  +  +  +60x +  +  +  +  +218x +400x +  +  +40x +  +  +  +  +  +  +  +  +  +13x +  +  +4x +4x +  +  +4x +  +  +  +  +  +  +8x +  +8x +  +8x +4x +  +4x +4x +  +  +  +  +4x +  +3x +3x +  +  +3x +3x +3x +3x +  +  +1x +1x +  +1x +  +  +2x +  +  +2x +  +  +2x +2x +  +  +2x +  +2x +1x +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +4x +  +4x +  +4x +  +1x +  +1x +1x +  +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +8x +8x +  +  +  +8x +  +  +  +  +8x +  +8x +2x +  +  +8x +  +  +  +  +  +  +  +  +  +  +  +  +10x +  +10x +2x +  +  +  +  +  +  +2x +  +  +8x +  +  +  +  +8x +  +  +  +8x +8x +  +8x +  +8x +7x +  +6x +14x +  +  +  +  +7x +  +  +  +  +22x +  +7x +  +  +  +  +  +  +  +  +  +59x +  +  +  +  +59x +  +  +  +  +  +  +  +  +12x +  +  +  +  +12x +  +  +  +  +  +  +  +  +209x +164x +  +164x +  +  +114x +1x +  +  +  +  +1x +1x +  +  +  +  +  +  +113x +  +51x +3x +  +  +  +  +  +  +  +  +48x +  +  +  +48x +134x +  +  +  +  +  +  +62x +  +8x +  +6x +1x +  +  +  +  +  +  +  +  +5x +  +  +  +5x +11x +  +  +  +  +  +  +  +2x +  +  +  +2x +4x +  +2x +2x +1x +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +1x +  +  +  +1x +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +54x +49x +  +49x +49x +17x +  +  +  +  +  +  +  +32x +  +  +  +  +  +  +  +  +  +  +5x +  +  +  +5x +  +10x +10x +3x +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +70x +  +  +  +1x +  +1x +  +1x +  +1x +  +1x +  +1x +  +  +1x +  +1x +  +1x +  +  +  +  +  +1x +1x +  +  +  +  +  +  +69x +68x +  +1x +  +  +  +  +  +  +  +  +  +  +  +71x +  +  +  +  +  +71x +71x +  +71x +  +  +  +  +  +71x +  +71x +  +  +  +  +  +  +  +  +  +40x +40x +  +40x +32x +32x +  +32x +  +  +  +  +  +  +  +  +  +32x +  +  +  +  +  +  +  +  +  +8x +8x +  +  +  +8x +18x +  +18x +18x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +52x +  +  +  +  +52x +  +25x +  +  +52x +  +  +  +  +  +382x +  +  +  +52x +  +  +  +  +  +  +  +76x +76x +  +76x +  +74x +3x +  +  +  +71x +  +  +  +71x +  +1x +  +1x +  +  +  +  +3x +  +3x +5x +5x +4x +  +  +2x +  +  +  +  +  +  +  +71x +71x +  +  +  +71x +1x +  +  +71x +  +40x +40x +  +  +2x +2x +  +  +1x +1x +  +  +1x +1x +  +  +2x +2x +  +  +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +6x +6x +6x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +3x +3x +3x +  +  +1x +1x +1x +  +  +  +1x +  +  +  +1x +1x +  +  +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +1x +1x +1x +  +  +  +  +  +71x +53x +  +  +71x +  +  +  +  +5x +  +  +  +  +  +  +  +  +  +5x +5x +17x +1x +  +  +  +  +4x +  +  + 
 
+ 
+import { oO } from "@zmotivat0r/o0";
+import { plainToInstance } from "class-transformer";
+import { isEmpty, isNil, isNull, isUndefined } from "lodash";
+import {
+  BaseEntity,
+  Brackets,
+  ConnectionOptions,
+  DeepPartial,
+  EntityMetadata,
+  ObjectLiteral,
+  Repository,
+  SelectQueryBuilder,
+  WhereExpressionBuilder,
+} from "typeorm";
+import { ColumnMetadata } from "typeorm/metadata/ColumnMetadata";
+import { RelationMetadata } from "typeorm/metadata/RelationMetadata";
+ 
+import { isArrayFull, isObject } from "../helpers";
+import {
+  CreateManyDto,
+  CrudRequest,
+  CrudRequestOptions,
+  CustomOperators,
+  DeleteOneRouteOptions,
+  GetManyDefaultResponse,
+  JoinOption,
+  JoinOptions,
+  ParsedRequestParams,
+  QueryOptions,
+  ReplaceOneRouteOptions,
+  UpdateOneRouteOptions,
+} from "../interfaces";
+import {
+  ClassType,
+  ComparisonOperator,
+  CondOperator,
+  QueryFilter,
+  QueryJoin,
+  QuerySort,
+  SCondition,
+  SConditionKey,
+} from "../types";
+ 
+import { CrudService } from "./abstract-crud.service";
+ 
+interface IAllowedRelation {
+  alias?: string;
+  nested: boolean;
+  name: string;
+  path: string;
+  columns: string[];
+  primaryColumns: string[];
+  allowedColumns: string[];
+}
+ 
+export class TypeOrmCrudService<T extends BaseEntity> extends CrudService<
+  T,
+  DeepPartial<T>
+> {
+  protected dbName: ConnectionOptions["type"];
+  protected entityColumns: string[] | undefined;
+  protected entityPrimaryColumns: string[] | undefined;
+  protected entityHasDeleteColumn = false;
+  protected entityColumnsHash: ObjectLiteral = {};
+  protected entityRelationsHash: Map<string, IAllowedRelation> = new Map();
+  protected sqlInjectionRegEx: RegExp[] = [
+    /(%27)|(')|(--)|(%23)|(#)/gi,
+    /((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))/gi,
+    /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi,
+    /((%27)|('))union/gi,
+  ];
+ 
+  constructor(protected repo: Repository<T>) {
+    super();
+ 
+    this.dbName = this.repo.metadata.connection.options.type;
+    this.onInitMapEntityColumns();
+  }
+ 
+  public get findOne(): Repository<T>["findOne"] {
+    return this.repo.findOne.bind(this.repo);
+  }
+ 
+  public get findOneBy(): Repository<T>["findOneBy"] {
+    return this.repo.findOneBy.bind(this.repo);
+  }
+ 
+  public get find(): Repository<T>["find"] {
+    return this.repo.find.bind(this.repo);
+  }
+ 
+  public get count(): Repository<T>["count"] {
+    return this.repo.count.bind(this.repo);
+  }
+ 
+  protected get entityType(): ClassType<T> {
+    return this.repo.target as ClassType<T>;
+  }
+ 
+  protected get alias(): string {
+    return this.repo.metadata.targetName;
+  }
+ 
+  /**
+   * Get many
+   * @param req
+   */
+  public async getMany(
+    req: CrudRequest
+  ): Promise<GetManyDefaultResponse<T> | T[]> {
+    const { parsed, options } = req;
+    const builder: SelectQueryBuilder<T> = await this.createBuilder(
+      parsed,
+      options
+    );
+ 
+    return this.doGetMany(builder, parsed, options);
+  }
+ 
+  /**
+   * Get one
+   * @param req
+   */
+  public async getOne(req: CrudRequest): Promise<T> {
+    return this.getOneOrFail(req);
+  }
+ 
+  /**
+   * Create one
+   * @param req
+   * @param dto
+   */
+  public async createOne(req: CrudRequest, dto: DeepPartial<T>): Promise<T> {
+    // @ts-ignore
+    const { returnShallow } = req.options.routes?.createOneBase;
+    const entity = this.prepareEntityBeforeSave(dto, req.parsed);
+ 
+    /* istanbul ignore if */
+    if (!entity) {
+      this.throwBadRequestException(`Empty data. Nothing to save.`);
+    }
+ 
+    const saved = await this.repo.save<any>(entity);
+ 
+    if (returnShallow) {
+      return saved;
+    } else {
+      const primaryParams = this.getPrimaryParams(req.options);
+ 
+      Iif (
+        isEmpty(primaryParams) &&
+        primaryParams.some((p) => isNil(saved[p]))
+      ) {
+        return saved;
+      } else {
+        req.parsed.search = primaryParams.reduce(
+          (acc, p) => ({ ...acc, [p]: saved[p] }),
+          {}
+        );
+        return this.getOneOrFail(req);
+      }
+    }
+  }
+ 
+  /**
+   * Create many
+   * @param req
+   * @param dto
+   */
+  public async createMany(
+    req: CrudRequest,
+    dto: CreateManyDto<DeepPartial<T>>
+  ): Promise<T[]> {
+    /* istanbul ignore if */
+    if (!isObject(dto) || !isArrayFull(dto.bulk)) {
+      this.throwBadRequestException(`Empty data. Nothing to save.`);
+    }
+ 
+    const bulk = dto.bulk
+      .map((one) => this.prepareEntityBeforeSave(one, req.parsed))
+      .filter((d) => !isUndefined(d));
+ 
+    /* istanbul ignore if */
+    if (!bulk.length) {
+      this.throwBadRequestException(`Empty data. Nothing to save.`);
+    }
+ 
+    return this.repo.save<any>(bulk, { chunk: 50 });
+  }
+ 
+  /**
+   * Update one
+   * @param req
+   * @param dto
+   */
+  public async updateOne(req: CrudRequest, dto: DeepPartial<T>): Promise<T> {
+    const { allowParamsOverride, returnShallow } = <UpdateOneRouteOptions>(
+      req.options.routes?.updateOneBase
+    );
+    const paramsFilters = this.getParamFilters(req.parsed);
+    // disable cache while updating
+    // @ts-ignore
+    req.options.query.cache = false;
+    const found = await this.getOneOrFail(req, returnShallow);
+ 
+    const toSave = !allowParamsOverride
+      ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist }
+      : { ...found, ...dto, ...req.parsed.authPersist };
+    const updated = await this.repo.save(
+      plainToInstance(
+        this.entityType,
+        toSave,
+        req.parsed.classTransformOptions
+      ) as unknown as DeepPartial<T>
+    );
+ 
+    if (returnShallow) {
+      return updated;
+    } else {
+      req.parsed.paramsFilter.forEach((filter) => {
+        // @ts-ignore
+        filter.value = updated[filter.field];
+      });
+ 
+      return this.getOneOrFail(req);
+    }
+  }
+ 
+  /**
+   * Recover one
+   * @param req
+   * @param dto
+   */
+  public async recoverOne(req: CrudRequest): Promise<T> {
+    // disable cache while recovering
+    // @ts-ignore
+    req.options.query.cache = false;
+    const found = await this.getOneOrFail(req, false, true);
+    return this.repo.recover(found as DeepPartial<T>);
+  }
+ 
+  /**
+   * Replace one
+   * @param req
+   * @param dto
+   */
+  public async replaceOne(req: CrudRequest, dto: DeepPartial<T>): Promise<T> {
+    const { allowParamsOverride, returnShallow } = <ReplaceOneRouteOptions>(
+      req.options.routes?.replaceOneBase
+    );
+    const paramsFilters = this.getParamFilters(req.parsed);
+    // disable cache while replacing
+    // @ts-ignore
+    req.options.query.cache = false;
+    const [_, found] = await oO(this.getOneOrFail(req, returnShallow));
+    const toSave = !allowParamsOverride
+      ? {
+          ...(found || {}),
+          ...dto,
+          ...paramsFilters,
+          ...req.parsed.authPersist,
+        }
+      : {
+          ...(found || {}),
+          ...paramsFilters,
+          ...dto,
+          ...req.parsed.authPersist,
+        };
+    const replaced = await this.repo.save(
+      plainToInstance(
+        this.entityType,
+        toSave,
+        req.parsed.classTransformOptions
+      ) as unknown as DeepPartial<T>
+    );
+ 
+    if (returnShallow) {
+      return replaced;
+    } else {
+      const primaryParams: string[] = this.getPrimaryParams(req.options);
+ 
+      /* istanbul ignore if */
+      if (!primaryParams.length) {
+        return replaced;
+      }
+ 
+      req.parsed.search = primaryParams.reduce(
+        (acc: {}, p: string) => ({
+          ...acc,
+          // @ts-ignore
+          [p]: replaced[p],
+        }),
+        {}
+      );
+      return this.getOneOrFail(req);
+    }
+  }
+ 
+  /**
+   * Delete one
+   * @param req
+   */
+  public async deleteOne(req: CrudRequest): Promise<void | T> {
+    const { returnDeleted } = <DeleteOneRouteOptions>(
+      req.options.routes?.deleteOneBase
+    );
+    // disable cache while deleting
+    // @ts-ignore
+    req.options.query.cache = false;
+    const found: T = await this.getOneOrFail(req, returnDeleted);
+    const toReturn: T | undefined = returnDeleted
+      ? plainToInstance(
+          this.entityType,
+          { ...found },
+          req.parsed.classTransformOptions
+        )
+      : undefined;
+ 
+    const deleted: DeepPartial<T> & T =
+      req.options.query?.softDelete === true
+        ? await this.repo.softRemove(found as DeepPartial<T>)
+        : await this.repo.remove(found);
+ 
+    return toReturn;
+  }
+ 
+  public getParamFilters(parsed: CrudRequest["parsed"]): ObjectLiteral {
+    const filters = {};
+ 
+    if (!isEmpty(parsed.paramsFilter)) {
+      for (const filter of parsed.paramsFilter) {
+        // @ts-ignore
+        filters[filter.field] = filter.value;
+      }
+    }
+ 
+    return filters;
+  }
+ 
+  /**
+   * Create TypeOrm QueryBuilder
+   * @param parsed
+   * @param options
+   * @param many
+   * @param withDeleted
+   */
+  public async createBuilder(
+    parsed: ParsedRequestParams,
+    options: CrudRequestOptions,
+    many = true,
+    withDeleted = false
+  ): Promise<SelectQueryBuilder<T>> {
+    // create query builder
+    const builder: SelectQueryBuilder<T> = this.repo.createQueryBuilder(
+      this.alias
+    );
+    // get select fields
+    const select: string[] = this.getSelect(parsed, options.query || {});
+    // select fields
+    builder.select(select);
+ 
+    // if soft deleted is enabled add where statement to filter deleted records
+    if (options.query?.softDelete) {
+      if (parsed.includeDeleted === 1 || withDeleted) {
+        builder.withDeleted();
+      }
+    }
+ 
+    // search
+    this.setSearchCondition(
+      builder,
+      parsed.search || {},
+      options.operators?.custom || {}
+    );
+ 
+    // set joins
+    const joinOptions: JoinOptions = options.query?.join || {};
+    const allowedJoins: string[] = Object.keys(joinOptions);
+ 
+    if (!isEmpty(allowedJoins)) {
+      const eagerJoins: any = {};
+ 
+      for (let i = 0; i < allowedJoins.length; i++) {
+        if (joinOptions[allowedJoins[i]].eager) {
+          const cond: QueryJoin = parsed.join.find(
+            (j: QueryJoin) => j && j.field === allowedJoins[i]
+          ) || {
+            field: allowedJoins[i],
+          };
+          this.setJoin(cond, joinOptions, builder);
+          eagerJoins[allowedJoins[i]] = true;
+        }
+      }
+ 
+      if (isArrayFull(parsed.join)) {
+        for (let i = 0; i < parsed.join.length; i++) {
+          if (!eagerJoins[parsed.join[i].field]) {
+            this.setJoin(parsed.join[i], joinOptions, builder);
+          }
+        }
+      }
+    }
+ 
+    if (many) {
+      // set sort (order by)
+      const sort = this.getSort(parsed, options.query || {});
+      builder.orderBy(sort);
+ 
+      // set take
+      const take = this.getTake(parsed, options.query || {});
+ 
+      if (take && isFinite(take)) {
+        builder.take(take);
+      }
+ 
+      // set skip
+      const skip = this.getSkip(parsed, take || 0);
+ 
+      if (skip && isFinite(skip)) {
+        builder.skip(skip);
+      }
+    }
+ 
+    // set cache
+ 
+    if (options.query?.cache && parsed.cache !== 0) {
+      builder.cache(options.query.cache);
+    }
+ 
+    return builder;
+  }
+ 
+  /**
+   * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount`
+   * helpful for overriding `TypeOrmCrudService#getMany`
+   * @see getMany
+   * @see SelectQueryBuilder#getMany
+   * @see SelectQueryBuilder#getManyAndCount
+   * @param builder
+   * @param query
+   * @param options
+   */
+  protected async doGetMany(
+    builder: SelectQueryBuilder<T>,
+    query: ParsedRequestParams,
+    options: CrudRequestOptions
+  ): Promise<GetManyDefaultResponse<T> | T[]> {
+    if (this.decidePagination(query, options)) {
+      const [data, total] = await builder.getManyAndCount();
+      const limit: number | undefined = builder.expressionMap.take;
+      const offset: number | undefined = builder.expressionMap.skip;
+ 
+      return this.createPageInfo(data, total, limit || total, offset || 0);
+    }
+ 
+    return builder.getMany();
+  }
+ 
+  protected onInitMapEntityColumns(): void {
+    this.entityColumns = this.repo.metadata.columns.map(
+      (prop: ColumnMetadata): string => {
+        // In case column is an embedded, use the propertyPath to get complete path
+        if (prop.embeddedMetadata) {
+          this.entityColumnsHash[prop.propertyPath] = prop.databasePath;
+          return prop.propertyPath;
+        }
+        this.entityColumnsHash[prop.propertyName] = prop.databasePath;
+        return prop.propertyName;
+      }
+    );
+    this.entityPrimaryColumns = this.repo.metadata.columns
+      .filter((prop: ColumnMetadata) => prop.isPrimary)
+      .map((prop: ColumnMetadata) => prop.propertyName);
+    this.entityHasDeleteColumn = this.repo.metadata.columns.some(
+      (prop: ColumnMetadata) => !isEmpty(prop.isDeleteDate)
+    );
+  }
+ 
+  protected async getOneOrFail(
+    req: CrudRequest,
+    shallow = false,
+    withDeleted = false
+  ): Promise<T> {
+    const { parsed, options } = req;
+    const builder: SelectQueryBuilder<T> = shallow
+      ? this.repo.createQueryBuilder(this.alias)
+      : await this.createBuilder(parsed, options, true, withDeleted);
+ 
+    if (shallow) {
+      this.setSearchCondition(
+        builder,
+        parsed.search || null,
+        <CustomOperators>options.operators?.custom
+      );
+    }
+ 
+    const found: T | null = withDeleted
+      ? await builder.withDeleted().getOne()
+      : await builder.getOne();
+ 
+    if (!found) {
+      this.throwNotFoundException(this.alias);
+    }
+ 
+    return <T>found;
+  }
+ 
+  protected prepareEntityBeforeSave(
+    dto: DeepPartial<T>,
+    parsed: CrudRequest["parsed"]
+  ): T | undefined {
+    /* istanbul ignore if */
+    if (!isObject(dto)) {
+      return undefined;
+    }
+ 
+    if (!isEmpty(parsed.paramsFilter)) {
+      for (const filter of parsed.paramsFilter) {
+        // @ts-ignore
+        dto[filter.field] = filter.value;
+      }
+    }
+ 
+    /* istanbul ignore if */
+    if (isEmpty(Object.keys(dto))) {
+      return undefined;
+    }
+ 
+    return dto instanceof this.entityType
+      ? Object.assign(dto, parsed.authPersist)
+      : plainToInstance(
+          this.entityType,
+          { ...dto, ...parsed.authPersist },
+          parsed.classTransformOptions
+        );
+  }
+ 
+  protected getAllowedColumns(
+    columns: string[],
+    options: QueryOptions
+  ): string[] {
+    return (!options.exclude || !options.exclude.length) &&
+      (!options.allow || !options.allow.length)
+      ? columns
+      : columns.filter(
+          (column: string) =>
+            (options.exclude && options.exclude.length
+              ? !options.exclude.some((col: string) => col === column)
+              : true) &&
+            (options.allow && options.allow.length
+              ? options.allow.some((col) => col === column)
+              : true)
+        );
+  }
+ 
+  protected getEntityColumns(entityMetadata: EntityMetadata): {
+    columns: string[];
+    primaryColumns: string[];
+  } {
+    const columns: string[] =
+      entityMetadata.columns.map((prop: ColumnMetadata) => prop.propertyPath) ||
+      [];
+    const primaryColumns: string[] =
+      entityMetadata.primaryColumns.map(
+        (prop: ColumnMetadata) => prop.propertyPath
+      ) || [];
+ 
+    return { columns, primaryColumns };
+  }
+ 
+  protected getRelationMetadata(
+    field: string,
+    options: JoinOption
+  ): IAllowedRelation | null {
+    try {
+      let allowedRelation;
+      let nested = false;
+ 
+      if (this.entityRelationsHash.has(field)) {
+        allowedRelation = this.entityRelationsHash.get(field);
+      } else {
+        const fields: string[] = field.split(".");
+        let relationMetadata: EntityMetadata | null = null;
+        let name: string | undefined;
+        let path: string | undefined;
+        let parentPath: string | undefined;
+ 
+        if (fields.length === 1) {
+          const found: RelationMetadata | undefined =
+            this.repo.metadata.relations.find(
+              (one: RelationMetadata): boolean => one.propertyName === fields[0]
+            );
+ 
+          if (found) {
+            name = fields[0];
+            path = `${this.alias}.${fields[0]}`;
+            relationMetadata = found.inverseEntityMetadata;
+          }
+        } else {
+          nested = true;
+          parentPath = "";
+ 
+          const reduced = fields.reduce(
+            // @ts-ignore
+            (res, propertyName: string, i) => {
+              const found = res.relations?.length
+                ? res.relations.find(
+                    (one: RelationMetadata): boolean =>
+                      one.propertyName === propertyName
+                  )
+                : null;
+              relationMetadata = found ? found.inverseEntityMetadata : null;
+              const relations: RelationMetadata[] = relationMetadata
+                ? relationMetadata.relations
+                : [];
+              name = propertyName;
+ 
+              if (i !== fields.length - 1) {
+                parentPath = !parentPath
+                  ? propertyName
+                  : `${parentPath}.${propertyName}`;
+              }
+ 
+              return {
+                relations,
+                relationMetadata,
+              };
+            },
+            {
+              relations: this.repo.metadata.relations,
+              relationMetadata: null,
+            }
+          );
+ 
+          // @ts-ignore
+          relationMetadata = reduced.relationMetadata;
+        }
+ 
+        // @ts-ignore
+        if (relationMetadata) {
+          const { columns, primaryColumns } =
+            this.getEntityColumns(relationMetadata);
+ 
+          if (!path && parentPath) {
+            const parentAllowedRelation: IAllowedRelation | undefined =
+              this.entityRelationsHash.get(parentPath);
+ 
+            if (parentAllowedRelation) {
+              path = parentAllowedRelation.alias
+                ? `${parentAllowedRelation.alias}.${name}`
+                : field;
+            }
+          }
+ 
+          allowedRelation = {
+            alias: options.alias,
+            name,
+            path,
+            columns,
+            nested,
+            primaryColumns,
+          };
+        }
+      }
+ 
+      if (allowedRelation) {
+        const allowedColumns: string[] = this.getAllowedColumns(
+          allowedRelation.columns,
+          options
+        );
+        const toSave: IAllowedRelation = <IAllowedRelation>{
+          ...allowedRelation,
+          allowedColumns,
+        };
+ 
+        this.entityRelationsHash.set(field, toSave);
+ 
+        if (options.alias) {
+          this.entityRelationsHash.set(options.alias, toSave);
+        }
+ 
+        return toSave;
+      }
+    } catch (_) {
+      return null;
+    }
+    return null;
+  }
+ 
+  protected setJoin(
+    cond: QueryJoin,
+    joinOptions: JoinOptions,
+    builder: SelectQueryBuilder<T>
+  ): undefined | void {
+    const options: JoinOption = joinOptions[cond.field] ?? null;
+ 
+    if (!options) {
+      console.warn(
+        'relation "' +
+          cond.field +
+          '" not found in allowed relations in the controller. Did you mean to use one of these? [' +
+          Object.keys(joinOptions).join(", ") +
+          "]"
+      );
+      return;
+    }
+ 
+    const allowedRelation: IAllowedRelation | null = this.getRelationMetadata(
+      cond.field,
+      options
+    );
+ 
+    Iif (!allowedRelation) {
+      return;
+    }
+ 
+    const relationType = options.required ? "innerJoin" : "leftJoin";
+    const alias: string = options.alias ? options.alias : allowedRelation.name;
+ 
+    builder[relationType](allowedRelation.path, alias);
+ 
+    if (options.select !== false) {
+      const columns = isArrayFull(cond.select)
+        ? cond.select?.filter((column: string) =>
+            allowedRelation.allowedColumns.some(
+              (allowed: string): boolean => allowed === column
+            )
+          ) || []
+        : allowedRelation.allowedColumns || [];
+ 
+      const select: string[] = [
+        ...allowedRelation.primaryColumns,
+        // @ts-ignore
+        ...(isArrayFull(options.persist) ? options.persist : []),
+        ...columns,
+      ].map((col): string => `${alias}.${col}`);
+ 
+      builder.addSelect(Array.from(new Set(select)));
+    }
+  }
+ 
+  protected setAndWhere(
+    cond: QueryFilter,
+    i: any,
+    builder: SelectQueryBuilder<T> | WhereExpressionBuilder,
+    customOperators: CustomOperators
+  ): void {
+    const { str, params } = this.mapOperatorsToQuery(
+      cond,
+      `andWhere${i}`,
+      customOperators
+    );
+    builder.andWhere(str, params);
+  }
+ 
+  protected setOrWhere(
+    cond: QueryFilter,
+    i: any,
+    builder: SelectQueryBuilder<T> | WhereExpressionBuilder,
+    customOperators: CustomOperators
+  ): void {
+    const { str, params } = this.mapOperatorsToQuery(
+      cond,
+      `orWhere${i}`,
+      customOperators
+    );
+    builder.orWhere(str, params);
+  }
+ 
+  protected setSearchCondition(
+    builder: SelectQueryBuilder<T>,
+    search: SCondition | null,
+    customOperators: CustomOperators,
+    condition: SConditionKey = "$and"
+  ): void {
+    if (isObject(search)) {
+      const keys = Object.keys(<SCondition>search);
+ 
+      if (keys.length) {
+        // search: {$ne: [...]}
+        // @ts-ignore
+        if (isArrayFull(search?.$ne)) {
+          this.builderAddBrackets(
+            builder,
+            condition,
+            new Brackets((qb: any): void => {
+              // @ts-ignore
+              search.$not.forEach((item: any): void => {
+                this.setSearchCondition(qb, item, customOperators, "$and");
+              });
+            }),
+            true
+          );
+        }
+        // search: {$and: [...], ...}
+        else if (isArrayFull(search?.$and)) {
+          // search: {$and: [{}]}
+          if (search?.$and?.length === 1) {
+            this.setSearchCondition(
+              builder,
+              search.$and[0],
+              customOperators,
+              condition
+            );
+          }
+          // search: {$and: [{}, {}, ...]}
+          else {
+            this.builderAddBrackets(
+              builder,
+              condition,
+              new Brackets((qb: any): void => {
+                search?.$and?.forEach((item: any): void => {
+                  this.setSearchCondition(qb, item, customOperators, "$and");
+                });
+              })
+            );
+          }
+        }
+        // search: {$or: [...], ...}
+        else if (isArrayFull(search?.$or)) {
+          // search: {$or: [...]}
+          if (keys.length === 1) {
+            // search: {$or: [{}]}
+            if (search?.$or?.length === 1) {
+              this.setSearchCondition(
+                builder,
+                search.$or[0],
+                customOperators,
+                condition
+              );
+            }
+            // search: {$or: [{}, {}, ...]}
+            else {
+              this.builderAddBrackets(
+                builder,
+                condition,
+                new Brackets((qb: any) => {
+                  search?.$or?.forEach((item: any) => {
+                    this.setSearchCondition(qb, item, customOperators, "$or");
+                  });
+                })
+              );
+            }
+          }
+          // search: {$or: [...], foo, ...}
+          else {
+            this.builderAddBrackets(
+              builder,
+              condition,
+              new Brackets((qb: any): void => {
+                keys.forEach((field: string): void => {
+                  if (field !== "$or") {
+                    // @ts-ignore
+                    const value = search[field];
+                    if (!isObject(value)) {
+                      this.builderSetWhere(
+                        qb,
+                        "$and",
+                        field,
+                        value,
+                        customOperators
+                      );
+                    } else {
+                      this.setSearchFieldObjectCondition(
+                        qb,
+                        "$and",
+                        field,
+                        value,
+                        customOperators
+                      );
+                    }
+                  } else {
+                    if (search?.$or?.length === 1) {
+                      this.setSearchCondition(
+                        builder,
+                        search.$or[0],
+                        customOperators,
+                        "$and"
+                      );
+                    } else {
+                      this.builderAddBrackets(
+                        qb,
+                        "$and",
+                        new Brackets((qb2: any) => {
+                          search?.$or?.forEach((item: any) => {
+                            this.setSearchCondition(
+                              qb2,
+                              item,
+                              customOperators,
+                              "$or"
+                            );
+                          });
+                        })
+                      );
+                    }
+                  }
+                });
+              })
+            );
+          }
+        }
+        // search: {...}
+        else {
+          // search: {foo}
+          if (keys.length === 1) {
+            const field: string = keys[0];
+            // @ts-ignore
+            const value = search[field];
+            if (!isObject(value)) {
+              this.builderSetWhere(
+                builder,
+                condition,
+                field,
+                value,
+                customOperators
+              );
+            } else {
+              this.setSearchFieldObjectCondition(
+                builder,
+                condition,
+                field,
+                value,
+                customOperators
+              );
+            }
+          }
+          // search: {foo, ...}
+          else {
+            this.builderAddBrackets(
+              builder,
+              condition,
+              new Brackets((qb: any) => {
+                keys.forEach((field: string) => {
+                  // @ts-ignore
+                  const value = search[field];
+                  if (!isObject(value)) {
+                    this.builderSetWhere(
+                      qb,
+                      "$and",
+                      field,
+                      value,
+                      customOperators
+                    );
+                  } else {
+                    this.setSearchFieldObjectCondition(
+                      qb,
+                      "$and",
+                      field,
+                      value,
+                      customOperators
+                    );
+                  }
+                });
+              })
+            );
+          }
+        }
+      }
+    }
+  }
+ 
+  protected builderAddBrackets(
+    builder: SelectQueryBuilder<T>,
+    condition: SConditionKey,
+    brackets: Brackets,
+    negated = false
+  ) {
+    if (negated) {
+      // No builtin support for not, this is copied from QueryBuilder.getWhereCondition
+ 
+      const whereQueryBuilder: SelectQueryBuilder<T> =
+        builder.createQueryBuilder();
+ 
+      (whereQueryBuilder as any).parentQueryBuilder = builder;
+ 
+      whereQueryBuilder.expressionMap.mainAlias =
+        builder.expressionMap.mainAlias;
+      whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled =
+        builder.expressionMap.aliasNamePrefixingEnabled;
+      whereQueryBuilder.expressionMap.parameters =
+        builder.expressionMap.parameters;
+      whereQueryBuilder.expressionMap.nativeParameters =
+        builder.expressionMap.nativeParameters;
+ 
+      whereQueryBuilder.expressionMap.wheres = [];
+ 
+      brackets.whereFactory(whereQueryBuilder as any);
+ 
+      const wheres = {
+        operator: "brackets",
+        condition: whereQueryBuilder.expressionMap.wheres,
+      };
+ 
+      const type =
+        condition === "$and" ? "and" : condition === "$or" ? "or" : "simple";
+      builder.expressionMap.wheres.push({
+        type,
+        condition: {
+          operator: "not",
+          condition: wheres as any,
+        },
+      });
+    } else if (condition === "$and") {
+      builder.andWhere(brackets);
+    } else {
+      builder.orWhere(brackets);
+    }
+  }
+ 
+  protected builderSetWhere(
+    builder: SelectQueryBuilder<T>,
+    condition: SConditionKey,
+    field: string,
+    value: any,
+    customOperators: CustomOperators,
+    operator: ComparisonOperator = "$eq"
+  ): void {
+    const time = process.hrtime();
+    // const index = `${field}${time[0]}${time[1]}`;
+    /**
+     * Correcting the Error [Invalid Column Name] or [ syntax error at or near \":\".]
+     * When using filter or search in relational/nested entities.
+     */
+    const safeFieldName = field.replace(/./g, "_");
+    const index = `${safeFieldName}${time[0]}${time[1]}`;
+ 
+    const args = [
+      { field, operator: isNull(value) ? "$isnull" : operator, value },
+      index,
+      builder,
+      customOperators,
+    ];
+    const fn = condition === "$and" ? this.setAndWhere : this.setOrWhere;
+    // @ts-ignore
+    fn.apply(this, args);
+  }
+ 
+  protected setSearchFieldObjectCondition(
+    builder: SelectQueryBuilder<T>,
+    condition: SConditionKey,
+    field: string,
+    object: any,
+    customOperators: CustomOperators
+  ): void {
+    if (isObject(object)) {
+      const operators: string[] = Object.keys(object);
+ 
+      if (operators.length === 1) {
+        const operator: string = operators[0] as ComparisonOperator;
+        const value = object[operator];
+ 
+        Iif (isObject(object.$or)) {
+          const orKeys: string[] = Object.keys(object.$or);
+          this.setSearchFieldObjectCondition(
+            builder,
+            orKeys.length === 1 ? condition : "$or",
+            field,
+            object.$or,
+            customOperators
+          );
+        } else {
+          this.builderSetWhere(
+            builder,
+            condition,
+            field,
+            value,
+            customOperators,
+            operator
+          );
+        }
+      } else {
+        if (operators.length > 1) {
+          this.builderAddBrackets(
+            builder,
+            condition,
+            new Brackets((qb: any): void => {
+              operators.forEach((operator: ComparisonOperator): void => {
+                const value = object[operator];
+ 
+                if (operator !== "$or") {
+                  this.builderSetWhere(
+                    qb,
+                    condition,
+                    field,
+                    value,
+                    customOperators,
+                    operator
+                  );
+                } else E{
+                  const orKeys: string[] = Object.keys(object.$or);
+ 
+                  if (orKeys.length === 1) {
+                    this.setSearchFieldObjectCondition(
+                      qb,
+                      condition,
+                      field,
+                      object.$or,
+                      customOperators
+                    );
+                  } else {
+                    this.builderAddBrackets(
+                      qb,
+                      condition,
+                      new Brackets((qb2: any) => {
+                        this.setSearchFieldObjectCondition(
+                          qb2,
+                          "$or",
+                          field,
+                          object.$or,
+                          customOperators
+                        );
+                      })
+                    );
+                  }
+                }
+              });
+            })
+          );
+        }
+      }
+    }
+  }
+ 
+  protected getSelect(
+    query: ParsedRequestParams,
+    options: QueryOptions
+  ): string[] {
+    const allowed: string[] = this.getAllowedColumns(
+      this.entityColumns || [],
+      options
+    );
+    const columns =
+      query.fields && query.fields.length
+        ? query.fields.filter((field) =>
+            allowed.some((col: string): boolean => field === col)
+          )
+        : allowed;
+    return [
+      ...new Set([
+        ...(options.persist && options.persist.length ? options.persist : []),
+        ...columns,
+        ...(this.entityPrimaryColumns || []),
+      ]),
+    ].map((col): string => `${this.alias}.${col}`);
+  }
+ 
+  protected getSort(query: ParsedRequestParams, options: QueryOptions) {
+    return query.sort && query.sort.length
+      ? this.mapSort(query.sort)
+      : options.sort && options.sort.length
+      ? this.mapSort(options.sort)
+      : {};
+  }
+ 
+  protected getFieldWithAlias(field: string, sort = false) {
+    const i = ["mysql", "mariadb"].includes(this.dbName) ? "`" : '"';
+    const cols = field.split(".");
+ 
+    switch (cols.length) {
+      case 1:
+        if (sort) {
+          return `${this.alias}.${field}`;
+        }
+ 
+        const dbColName =
+          this.entityColumnsHash[field] !== field
+            ? this.entityColumnsHash[field]
+            : field;
+ 
+        return `${i}${this.alias}${i}.${i}${dbColName}${i}`;
+      case 2:
+        return field;
+      default:
+        return cols.slice(cols.length - 2, cols.length).join(".");
+    }
+  }
+ 
+  protected mapSort(sort: QuerySort[]) {
+    const params: ObjectLiteral = {};
+ 
+    for (let i = 0; i < sort.length; i++) {
+      const field = this.getFieldWithAlias(sort[i].field, true);
+      const checkedFiled = this.checkSqlInjection(field);
+      params[checkedFiled] = sort[i].order;
+    }
+ 
+    return params;
+  }
+ 
+  protected mapOperatorsToQuery(
+    cond: QueryFilter,
+    param: any,
+    customOperators: CustomOperators = {}
+  ): { str: string; params: ObjectLiteral } {
+    const field: string = this.getFieldWithAlias(cond.field);
+    const likeOperator = this.dbName === "postgres" ? "ILIKE" : "LIKE";
+    let str: string | undefined;
+    let params: ObjectLiteral | undefined;
+ 
+    if (cond.operator[0] !== "$") {
+      cond.operator = ("$" + cond.operator) as ComparisonOperator;
+    }
+ 
+    switch (cond.operator) {
+      case CondOperator.EQUALS:
+        str = `${field} = :${param}`;
+        break;
+ 
+      case CondOperator.NOT_EQUALS:
+        str = `${field} != :${param}`;
+        break;
+ 
+      case CondOperator.GREATER_THAN:
+        str = `${field} > :${param}`;
+        break;
+ 
+      case CondOperator.LOWER_THAN:
+        str = `${field} < :${param}`;
+        break;
+ 
+      case CondOperator.GREATER_THAN_EQUALS:
+        str = `${field} >= :${param}`;
+        break;
+ 
+      case CondOperator.LOWER_THAN_EQUALS:
+        str = `${field} <= :${param}`;
+        break;
+ 
+      case CondOperator.STARTS:
+        str = `${field} LIKE :${param}`;
+        params = { [param]: `${cond.value}%` };
+        break;
+ 
+      case CondOperator.ENDS:
+        str = `${field} LIKE :${param}`;
+        params = { [param]: `%${cond.value}` };
+        break;
+ 
+      case CondOperator.CONTAINS:
+        str = `${field} LIKE :${param}`;
+        params = { [param]: `%${cond.value}%` };
+        break;
+ 
+      case CondOperator.EXCLUDES:
+        str = `${field} NOT LIKE :${param}`;
+        params = { [param]: `%${cond.value}%` };
+        break;
+ 
+      case CondOperator.IN:
+        this.checkFilterIsArray(cond);
+        str = `${field} IN (:...${param})`;
+        break;
+ 
+      case CondOperator.NOT_IN:
+        this.checkFilterIsArray(cond);
+        str = `${field} NOT IN (:...${param})`;
+        break;
+ 
+      case CondOperator.IS_NULL:
+        str = `${field} IS NULL`;
+        params = {};
+        break;
+ 
+      case CondOperator.NOT_NULL:
+        str = `${field} IS NOT NULL`;
+        params = {};
+        break;
+ 
+      case CondOperator.BETWEEN:
+        this.checkFilterIsArray(cond, cond.value.length !== 2);
+        str = `${field} BETWEEN :${param}0 AND :${param}1`;
+        params = {
+          [`${param}0`]: cond.value[0],
+          [`${param}1`]: cond.value[1],
+        };
+        break;
+ 
+      // case insensitive
+      case CondOperator.EQUALS_LOW:
+        str = `LOWER(${field}) = :${param}`;
+        break;
+ 
+      case CondOperator.NOT_EQUALS_LOW:
+        str = `LOWER(${field}) != :${param}`;
+        break;
+ 
+      case CondOperator.STARTS_LOW:
+        str = `LOWER(${field}) ${likeOperator} :${param}`;
+        params = { [param]: `${cond.value}%` };
+        break;
+ 
+      case CondOperator.ENDS_LOW:
+        str = `LOWER(${field}) ${likeOperator} :${param}`;
+        params = { [param]: `%${cond.value}` };
+        break;
+ 
+      case CondOperator.CONTAINS_LOW:
+        str = `LOWER(${field}) ${likeOperator} :${param}`;
+        params = { [param]: `%${cond.value}%` };
+        break;
+ 
+      case CondOperator.EXCLUDES_LOW:
+        str = `LOWER(${field}) NOT ${likeOperator} :${param}`;
+        params = { [param]: `%${cond.value}%` };
+        break;
+ 
+      case CondOperator.IN_LOW:
+        this.checkFilterIsArray(cond);
+        str = `LOWER(${field}) IN (:...${param})`;
+        break;
+ 
+      case CondOperator.NOT_IN_LOW:
+        this.checkFilterIsArray(cond);
+        str = `LOWER(${field}) NOT IN (:...${param})`;
+        break;
+ 
+      default:
+        break;
+    }
+ 
+    if (typeof params === "undefined") {
+      params = { [param]: cond.value };
+    }
+ 
+    return { str: <string>str, params };
+  }
+ 
+  protected checkFilterIsArray(cond: QueryFilter, withLength?: boolean) {
+    /* istanbul ignore if */
+    if (
+      !Array.isArray(cond.value) ||
+      !cond.value.length ||
+      (!isNil(withLength) ? withLength : false)
+    ) {
+      this.throwBadRequestException(`Invalid column '${cond.field}' value`);
+    }
+  }
+ 
+  protected checkSqlInjection(field: string): string {
+    if (this.sqlInjectionRegEx.length) {
+      for (let i = 0; i < this.sqlInjectionRegEx.length; i++) {
+        if (this.sqlInjectionRegEx[i].test(field)) {
+          this.throwBadRequestException(`SQL injection detected: "${field}"`);
+        }
+      }
+    }
+ 
+    return field;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/types/index.html b/coverage/packages/crudx/src/types/index.html new file mode 100644 index 000000000..9c6215771 --- /dev/null +++ b/coverage/packages/crudx/src/types/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/types + + + + + + + + + +
+
+

All files src/types

+
+ +
+ 100% + Statements + 28/28 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 28/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
100%4/4100%0/0100%0/0100%4/4
request-query.types.ts +
+
100%24/24100%2/2100%1/1100%24/24
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/types/index.ts.html b/coverage/packages/crudx/src/types/index.ts.html new file mode 100644 index 000000000..4de07700b --- /dev/null +++ b/coverage/packages/crudx/src/types/index.ts.html @@ -0,0 +1,97 @@ + + + + + + Code coverage report for src/types/index.ts + + + + + + + + + +
+
+

All files / src/types index.ts

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +511x +11x +11x +11x + 
export * from "./common.types";
+export * from "./crud.types";
+export * from "./request-param.types";
+export * from "./request-query.types";
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/src/types/request-query.types.ts.html b/coverage/packages/crudx/src/types/request-query.types.ts.html new file mode 100644 index 000000000..31ff98394 --- /dev/null +++ b/coverage/packages/crudx/src/types/request-query.types.ts.html @@ -0,0 +1,418 @@ + + + + + + Code coverage report for src/types/request-query.types.ts + + + + + + + + + +
+
+

All files / src/types request-query.types.ts

+
+ +
+ 100% + Statements + 24/24 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { ObjectLiteral } from "./common.types";
+ 
+export type QueryFields = string[];
+ 
+export interface QueryFilter {
+  field: string;
+  operator: ComparisonOperator;
+  value?: any;
+}
+ 
+export type QueryFilterArr = [string, ComparisonOperator, any?];
+ 
+export interface QueryJoin {
+  field: string;
+  select?: QueryFields;
+}
+ 
+export type QueryJoinArr = [string, QueryFields?];
+ 
+export interface QuerySort {
+  field: string;
+  order: QuerySortOperator;
+}
+ 
+/** Extra object or null */
+export type QueryExtra = ObjectLiteral | undefined;
+ 
+export type QuerySortArr = [string, QuerySortOperator];
+ 
+export type QuerySortOperator = "ASC" | "DESC";
+ 
+export enum CondOperator {
+  EQUALS = "$eq",
+  NOT_EQUALS = "$ne",
+  GREATER_THAN = "$gt",
+  LOWER_THAN = "$lt",
+  GREATER_THAN_EQUALS = "$gte",
+  LOWER_THAN_EQUALS = "$lte",
+  STARTS = "$starts",
+  ENDS = "$ends",
+  CONTAINS = "$cont",
+  EXCLUDES = "$excl",
+  IN = "$in",
+  NOT_IN = "$notin",
+  IS_NULL = "$isnull",
+  NOT_NULL = "$notnull",
+  BETWEEN = "$between",
+  EQUALS_LOW = "$eqL",
+  NOT_EQUALS_LOW = "$neL",
+  STARTS_LOW = "$startsL",
+  ENDS_LOW = "$endsL",
+  CONTAINS_LOW = "$contL",
+  EXCLUDES_LOW = "$exclL",
+  IN_LOW = "$inL",
+  NOT_IN_LOW = "$notinL",
+}
+ 
+export type ComparisonOperator = keyof SFieldOperator | string;
+ 
+// new search
+export type SPrimitivesVal = string | number | boolean;
+ 
+export type SFiledValues = SPrimitivesVal | SPrimitivesVal[];
+ 
+export interface SFieldOperator {
+  $eq?: SFiledValues;
+  $ne?: SFiledValues;
+  $gt?: SFiledValues;
+  $lt?: SFiledValues;
+  $gte?: SFiledValues;
+  $lte?: SFiledValues;
+  $starts?: SFiledValues;
+  $ends?: SFiledValues;
+  $cont?: SFiledValues;
+  $excl?: SFiledValues;
+  $in?: SFiledValues;
+  $notin?: SFiledValues;
+  $between?: SFiledValues;
+  $isnull?: SFiledValues;
+  $notnull?: SFiledValues;
+  $eqL?: SFiledValues;
+  $neL?: SFiledValues;
+  $startsL?: SFiledValues;
+  $endsL?: SFiledValues;
+  $contL?: SFiledValues;
+  $exclL?: SFiledValues;
+  $inL?: SFiledValues;
+  $notinL?: SFiledValues;
+  $or?: SFieldOperator;
+  $and?: never;
+}
+ 
+export type SField =
+  | SPrimitivesVal
+  | SFieldOperator
+  | { [$custom: string]: SFiledValues };
+ 
+export interface SFields {
+  [key: string]: SField | Array<SFields | SConditionAND> | undefined;
+  $or?: Array<SFields | SConditionAND>;
+  $and?: never;
+}
+ 
+export interface SConditionAND {
+  $and?: Array<SFields | SConditionAND>;
+  $or?: never;
+}
+ 
+export type SConditionKey = "$and" | "$or";
+ 
+export type SCondition = SFields | SConditionAND;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/database.config.ts.html b/coverage/packages/crudx/tests/__fixture__/database.config.ts.html new file mode 100644 index 000000000..37aecf6f7 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/database.config.ts.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for tests/__fixture__/database.config.ts + + + + + + + + + +
+
+

All files / tests/__fixture__ database.config.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +208x +  +8x +8x +8x +8x +8x +  +8x +  +  +  +  +  +  +  +  +  +  + 
import { registerAs } from "@nestjs/config";
+ 
+import { IdentityType } from "./model/identity-type.model";
+import { Nested } from "./model/nested.model";
+import { RelationTest } from "./model/relation-test.model";
+import { TestingModel } from "./model/testing-model.model";
+import { UuidModel } from "./model/uuid.model";
+ 
+export const databaseConfig = registerAs("database", () => ({
+  type: process.env['DB_TYPE'],
+  host: process.env['DB_HOST'],
+  port: process.env['DB_PORT'],
+  username: process.env['DB_USERNAME'],
+  password: process.env['DB_PASSWORD'],
+  database: process.env['DB_DATABASE'],
+  entities: [TestingModel, RelationTest, Nested, IdentityType, UuidModel],
+  synchronize: true,
+  autoLoadEntities: true,
+  encoding: process.env['DB_CHARSET'],
+}));
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/exception.ts.html b/coverage/packages/crudx/tests/__fixture__/exception.ts.html new file mode 100644 index 000000000..a9bced161 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/exception.ts.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for tests/__fixture__/exception.ts + + + + + + + + + +
+
+

All files / tests/__fixture__ exception.ts

+
+ +
+ 50% + Statements + 4/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 42.85% + Lines + 3/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +161x +  +1x +  +  +1x +  +  +  +  +  +  +  +  +  + 
import { ArgumentsHost, Catch, ExceptionFilter, HttpStatus } from '@nestjs/common';
+ 
+import { RequestQueryException } from '../../src';
+ 
+@Catch(RequestQueryException)
+export class HttpExceptionFilter implements ExceptionFilter {
+  catch(exception: RequestQueryException, host: ArgumentsHost) {
+    const ctx = host.switchToHttp();
+    const response = ctx.getResponse();
+    console.log('handling response', exception.message)
+    response.status(400).json({
+      statusCode: HttpStatus.BAD_REQUEST,
+      message: exception.message,
+    });
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/guards/acl.guard.ts.html b/coverage/packages/crudx/tests/__fixture__/guards/acl.guard.ts.html new file mode 100644 index 000000000..d61690a2f --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/guards/acl.guard.ts.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for tests/__fixture__/guards/acl.guard.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/guards acl.guard.ts

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +261x +  +  +1x +  +1x +1x +  +  +  +  +2x +2x +  +2x +2x +  +2x +  +2x +1x +  +  +1x +  + 
import { CanActivate, ExecutionContext, UnauthorizedException } from "@nestjs/common";
+import { Observable } from "rxjs";
+ 
+import { getAction, getFeature } from "../../../src";
+ 
+export class ACLGuard implements CanActivate {
+  private ALLOWED_ACTIONS = [
+    'readMe-Read-One'
+  ];
+ 
+  canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
+    const handler = context.getHandler();
+    const controller = context.getClass();
+ 
+    const feature = getFeature(controller);
+    const action = getAction(handler);
+ 
+    const filteredActions = this.ALLOWED_ACTIONS.filter((actionItem) => actionItem === `${feature}-${action}`)
+    
+    if (filteredActions.length === 0) {
+      throw new UnauthorizedException()
+    }
+ 
+    return true;
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/guards/index.html b/coverage/packages/crudx/tests/__fixture__/guards/index.html new file mode 100644 index 000000000..6bee1b739 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/guards/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for tests/__fixture__/guards + + + + + + + + + +
+
+

All files tests/__fixture__/guards

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
acl.guard.ts +
+
100%13/13100%1/1100%3/3100%12/12
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/index.html b/coverage/packages/crudx/tests/__fixture__/index.html new file mode 100644 index 000000000..dedeb1478 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for tests/__fixture__ + + + + + + + + + +
+
+

All files tests/__fixture__

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
database.config.ts +
+
100%8/8100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/model/embeded-dates.ts.html b/coverage/packages/crudx/tests/__fixture__/model/embeded-dates.ts.html new file mode 100644 index 000000000..1e4473355 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/model/embeded-dates.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for tests/__fixture__/model/embeded-dates.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/model embeded-dates.ts

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +99x +  +9x +  +297x +  +  +297x + 
import { Column, CreateDateColumn, UpdateDateColumn } from "typeorm";
+ 
+export class EmbededDates {
+  @CreateDateColumn({ type: "timestamp", name: 'created_at' })
+  createdAt: Date | null = null;
+ 
+  @UpdateDateColumn({ type: "timestamp", name: 'updated_at' })
+  updatedAt: Date | null = null;
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/model/identity-type.model.ts.html b/coverage/packages/crudx/tests/__fixture__/model/identity-type.model.ts.html new file mode 100644 index 000000000..ccdbe2168 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/model/identity-type.model.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for tests/__fixture__/model/identity-type.model.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/model identity-type.model.ts

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +109x +  +  +9x +  +9x +  +  +9x + 
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm"
+ 
+@Entity()
+export class IdentityType extends BaseEntity {
+  @PrimaryGeneratedColumn()
+  id: number = 0;
+ 
+  @Column({ type: 'varchar', length: 200 })
+  type: string = '';
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/model/index.html b/coverage/packages/crudx/tests/__fixture__/model/index.html new file mode 100644 index 000000000..52fb61a0c --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/model/index.html @@ -0,0 +1,191 @@ + + + + + + Code coverage report for tests/__fixture__/model + + + + + + + + + +
+
+

All files tests/__fixture__/model

+
+ +
+ 100% + Statements + 71/71 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 13/13 +
+ + +
+ 100% + Lines + 43/43 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
embeded-dates.ts +
+
100%6/6100%0/0100%1/1100%4/4
identity-type.model.ts +
+
100%7/7100%0/0100%1/1100%4/4
nested.model.ts +
+
100%14/14100%0/0100%3/3100%8/8
relation-test.model.ts +
+
100%14/14100%0/0100%3/3100%8/8
testing-model.model.ts +
+
100%22/22100%0/0100%4/4100%14/14
uuid.model.ts +
+
100%8/8100%0/0100%1/1100%5/5
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/model/nested.model.ts.html b/coverage/packages/crudx/tests/__fixture__/model/nested.model.ts.html new file mode 100644 index 000000000..b13883e9f --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/model/nested.model.ts.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for tests/__fixture__/model/nested.model.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/model nested.model.ts

+
+ +
+ 100% + Statements + 14/14 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +269x +  +9x +  +  +9x +  +11x +  +  +11x +  +  +11x +  +8x +  +  +  +  +  +  +  +  +11x + 
import { BaseEntity, Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
+ 
+import { IdentityType } from "./identity-type.model";
+ 
+@Entity()
+export class Nested extends BaseEntity {
+  @PrimaryGeneratedColumn()
+  id = 0;
+ 
+  @Column({ type: 'varchar', length: 200 })
+  identity = '';
+ 
+  @Column({ name: 'identity_type', type: 'integer', nullable: true })
+  typeId: number | null = null;;
+ 
+  @ManyToOne(() => IdentityType, (type) => type.id, {
+    cascade: true,
+    onDelete: 'CASCADE',
+    nullable: true,
+  })
+  @JoinColumn({
+    name: 'identity_type_id',
+    referencedColumnName: 'id',
+  })
+  type: IdentityType | null = null;
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/model/relation-test.model.ts.html b/coverage/packages/crudx/tests/__fixture__/model/relation-test.model.ts.html new file mode 100644 index 000000000..d7588a074 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/model/relation-test.model.ts.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for tests/__fixture__/model/relation-test.model.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/model relation-test.model.ts

+
+ +
+ 100% + Statements + 14/14 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +269x +  +9x +  +  +9x +  +20x +  +  +20x +  +  +20x +  +8x +  +  +  +  +  +  +  +  +20x + 
import { BaseEntity, Column, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
+ 
+import { Nested } from './nested.model';
+ 
+@Entity()
+export class RelationTest extends BaseEntity {
+  @PrimaryGeneratedColumn()
+  id = 0;
+ 
+  @Column({ type: 'varchar', length: 200 })
+  name = '';
+ 
+  @Column({ type: 'integer', name: 'nested_id', nullable: true })
+  nestedId: number | null = null;
+ 
+  @ManyToOne(() => Nested, (nested) => nested.id, {
+    cascade: true,
+    onDelete: 'CASCADE',
+    nullable: true,
+  })
+  @JoinColumn({
+    name: 'nested_id',
+    referencedColumnName: 'id',
+  })
+  nested: Nested | null = null;
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/model/testing-model.model.ts.html b/coverage/packages/crudx/tests/__fixture__/model/testing-model.model.ts.html new file mode 100644 index 000000000..c6a13188b --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/model/testing-model.model.ts.html @@ -0,0 +1,199 @@ + + + + + + Code coverage report for tests/__fixture__/model/testing-model.model.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/model testing-model.model.ts

+
+ +
+ 100% + Statements + 22/22 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +399x +9x +9x +  +  +9x +  +189x +  +  +189x +  +  +189x +  +  +189x +  +  +189x +  +8x +  +  +  +  +  +  +  +  +  +189x +  +  +9x +  +8x +9x + 
import { BaseEntity, Column, DeleteDateColumn, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";
+import { RelationTest } from "./relation-test.model";
+import { EmbededDates } from "./embeded-dates";
+ 
+@Entity()
+export class TestingModel extends BaseEntity {
+  @PrimaryGeneratedColumn()
+  id: number = 0;
+ 
+  @Column({ name: 'first_name', type: 'varchar', length: 100})
+  firstName: string = '';
+ 
+  @Column({ name: 'last_name', type: 'varchar', length: 100})
+  lastName: string = '';
+ 
+  @Column({ type: 'integer'})
+  age: number = 0;
+ 
+  @Column({ type: 'int', name: 'relation_id', nullable: true })
+  relationTestId: number | null = null;
+ 
+  @ManyToOne(() => RelationTest, (relationTest) => relationTest.id, {
+    cascade: true,
+    onDelete: 'CASCADE',
+    nullable: true,
+  })
+  @JoinColumn({
+    name: 'relation_id',
+    referencedColumnName: 'id',
+    foreignKeyConstraintName: 'testing-relation-fk',
+  })
+  relationTest: RelationTest | null = null;
+ 
+  @DeleteDateColumn({ name: 'deleted_at', nullable: true })
+  deletedAt?: Date;
+ 
+  @Column(() => EmbededDates)
+  dates?: EmbededDates;
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/model/uuid.model.ts.html b/coverage/packages/crudx/tests/__fixture__/model/uuid.model.ts.html new file mode 100644 index 000000000..95e08c2e4 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/model/uuid.model.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for tests/__fixture__/model/uuid.model.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/model uuid.model.ts

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +138x +  +  +8x +  +8x +  +  +14x +  +  +14x + 
import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm";
+ 
+@Entity()
+export class UuidModel extends BaseEntity {
+  @PrimaryGeneratedColumn("uuid")
+  id: string | any;
+ 
+  @Column({ type: 'varchar', nullable: true, length: 255 })
+  name: string | null = null;
+ 
+  @Column({ type: 'integer', nullable: true })
+  age: number | null = null;
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/module/index.html b/coverage/packages/crudx/tests/__fixture__/module/index.html new file mode 100644 index 000000000..2269bbf37 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/module/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for tests/__fixture__/module + + + + + + + + + +
+
+

All files tests/__fixture__/module

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
test-module.module.ts +
+
100%15/15100%0/0100%1/1100%14/14
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/module/test-module.module.ts.html b/coverage/packages/crudx/tests/__fixture__/module/test-module.module.ts.html new file mode 100644 index 000000000..339e53492 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/module/test-module.module.ts.html @@ -0,0 +1,202 @@ + + + + + + Code coverage report for tests/__fixture__/module/test-module.module.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/module test-module.module.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +408x +8x +8x +  +8x +8x +8x +8x +8x +8x +8x +8x +8x +  +  +  +  +  +  +  +  +  +8x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +8x
import { Module } from "@nestjs/common";
+import { ConfigModule, ConfigService } from "@nestjs/config";
+import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm";
+ 
+import { databaseConfig } from "../database.config";
+import { IdentityType } from "../model/identity-type.model";
+import { Nested } from "../model/nested.model";
+import { RelationTest } from "../model/relation-test.model";
+import { TestingModel } from "../model/testing-model.model";
+import { UuidModel } from "../model/uuid.model";
+import { RelationTestService } from "../service/relation.test.service";
+import { TestingService } from "../service/testing-service.service";
+import { UuidService } from "../service/uuid.service";
+ 
+@Module({
+  imports: [
+    ConfigModule.forRoot({
+      isGlobal: true,
+      load: [databaseConfig],
+    }),
+    TypeOrmModule.forRootAsync({
+      useFactory: (config: ConfigService) =>
+        <TypeOrmModuleOptions>{
+          type: config.get<string>("database.type"),
+          host: config.get<string>("database.host"),
+          port: config.get<number>("database.port"),
+          username: config.get<string>("database.username"),
+          password: config.get<string>("database.password"),
+          database: config.get<string>("database.database"),
+          entities: config.get<string[]>("database.entities"),
+          synchronize: config.get<boolean>("database.synchronize"),
+        },
+      inject: [ConfigService],
+    }),
+    TypeOrmModule.forFeature([TestingModel, RelationTest, Nested, IdentityType, UuidModel]),
+  ],
+  providers: [TestingService, RelationTestService, UuidService],
+  exports: [TestingService, RelationTestService, UuidService],
+})
+export class TestModule {}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/service/index.html b/coverage/packages/crudx/tests/__fixture__/service/index.html new file mode 100644 index 000000000..9fceeb943 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/service/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for tests/__fixture__/service + + + + + + + + + +
+
+

All files tests/__fixture__/service

+
+ +
+ 100% + Statements + 27/27 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 24/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
relation.test.service.ts +
+
100%9/9100%0/0100%1/1100%8/8
testing-service.service.ts +
+
100%9/9100%0/0100%1/1100%8/8
uuid.service.ts +
+
100%9/9100%0/0100%1/1100%8/8
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/service/relation.test.service.ts.html b/coverage/packages/crudx/tests/__fixture__/service/relation.test.service.ts.html new file mode 100644 index 000000000..9064d2721 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/service/relation.test.service.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for tests/__fixture__/service/relation.test.service.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/service relation.test.service.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +138x +8x +8x +  +8x +8x +  +  +8x +8x +8x +  + 
import { Injectable } from "@nestjs/common";
+import { InjectRepository } from "@nestjs/typeorm";
+import { Repository } from "typeorm";
+ 
+import { TypeOrmCrudService } from "../../../src";
+import { RelationTest } from "../model/relation-test.model";
+ 
+@Injectable()
+export class RelationTestService extends TypeOrmCrudService<RelationTest> {
+  constructor(@InjectRepository(RelationTest) override repo: Repository<RelationTest>) {
+    super(repo)
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/service/testing-service.service.ts.html b/coverage/packages/crudx/tests/__fixture__/service/testing-service.service.ts.html new file mode 100644 index 000000000..04261d202 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/service/testing-service.service.ts.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for tests/__fixture__/service/testing-service.service.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/service testing-service.service.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +148x +8x +  +8x +8x +8x +  +  +  +8x +8x +8x +  + 
import { Catch, Injectable } from "@nestjs/common";
+import { InjectRepository } from "@nestjs/typeorm";
+ 
+import { TypeOrmCrudService } from "@2amtech/crudx";
+import { TestingModel } from "../model/testing-model.model";
+import { Repository } from "typeorm";
+import { RequestQueryException } from "../../../src";
+ 
+@Injectable()
+export class TestingService extends TypeOrmCrudService<TestingModel> {
+  constructor(@InjectRepository(TestingModel) override repo: Repository<TestingModel>) {
+    super(repo)
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/coverage/packages/crudx/tests/__fixture__/service/uuid.service.ts.html b/coverage/packages/crudx/tests/__fixture__/service/uuid.service.ts.html new file mode 100644 index 000000000..5777406c5 --- /dev/null +++ b/coverage/packages/crudx/tests/__fixture__/service/uuid.service.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for tests/__fixture__/service/uuid.service.ts + + + + + + + + + +
+
+

All files / tests/__fixture__/service uuid.service.ts

+
+ +
+ 100% + Statements + 9/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +138x +8x +8x +  +8x +8x +  +  +8x +8x +8x +  + 
import { Injectable } from "@nestjs/common";
+import { InjectRepository } from "@nestjs/typeorm";
+import { Repository } from "typeorm";
+ 
+import { TypeOrmCrudService } from "../../../src";
+import { UuidModel } from "../model/uuid.model";
+ 
+@Injectable()
+export class UuidService extends TypeOrmCrudService<UuidModel> {
+  constructor(@InjectRepository(UuidModel) override repo: Repository<UuidModel>) {
+    super(repo);
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/dist/packages/crudx-demo/assets/.gitkeep b/dist/packages/crudx-demo/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/dist/packages/crudx-demo/main.js b/dist/packages/crudx-demo/main.js new file mode 100644 index 000000000..d86550256 --- /dev/null +++ b/dist/packages/crudx-demo/main.js @@ -0,0 +1,5495 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(3), exports); +tslib_1.__exportStar(__webpack_require__(22), exports); +tslib_1.__exportStar(__webpack_require__(13), exports); +tslib_1.__exportStar(__webpack_require__(24), exports); +tslib_1.__exportStar(__webpack_require__(10), exports); +tslib_1.__exportStar(__webpack_require__(43), exports); +tslib_1.__exportStar(__webpack_require__(56), exports); +tslib_1.__exportStar(__webpack_require__(5), exports); +tslib_1.__exportStar(__webpack_require__(26), exports); + + +/***/ }), +/* 2 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("tslib"); + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(4), exports); +tslib_1.__exportStar(__webpack_require__(51), exports); +tslib_1.__exportStar(__webpack_require__(52), exports); +tslib_1.__exportStar(__webpack_require__(53), exports); +tslib_1.__exportStar(__webpack_require__(54), exports); +tslib_1.__exportStar(__webpack_require__(55), exports); + + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Crud = void 0; +const services_1 = __webpack_require__(5); +const Crud = (options) => (target) => { + const factoryMethod = options.routesFactory || services_1.RoutesFactoryService; + let factory = new factoryMethod(target, options); +}; +exports.Crud = Crud; + + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(6), exports); +tslib_1.__exportStar(__webpack_require__(9), exports); +tslib_1.__exportStar(__webpack_require__(38), exports); +tslib_1.__exportStar(__webpack_require__(41), exports); +tslib_1.__exportStar(__webpack_require__(42), exports); +tslib_1.__exportStar(__webpack_require__(48), exports); + + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudService = void 0; +const common_1 = __webpack_require__(7); +const lodash_1 = __webpack_require__(8); +class CrudService { + throwBadRequestException(msg) { + throw new common_1.BadRequestException(msg); + } + throwNotFoundException(name) { + throw new common_1.NotFoundException(`${name} not found`); + } + /** + * Wrap page into page-info + * override this method to create custom page-info response + * or set custom `serialize.getMany` dto in the controller's CrudOption + * @param data + * @param total + * @param limit + * @param offset + */ + createPageInfo(data, total, limit, offset) { + return { + data, + count: data.length, + total, + page: limit ? Math.floor(offset / limit) + 1 : 1, + pageCount: limit && total ? Math.ceil(total / limit) : 1, + }; + } + /** + * Determine if need paging + * @param parsed + * @param options + */ + decidePagination(parsed, options) { + return (options.query?.alwaysPaginate || + ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) && + !!this.getTake(parsed, options.query))); + } + /** + * Get number of resources to be fetched + * @param query + * @param options + */ + getTake(query, options) { + if (query.limit) { + return options.maxLimit + ? query.limit <= options.maxLimit + ? query.limit + : options.maxLimit + : query.limit; + } + /* istanbul ignore if */ + if (options.limit) { + return options.maxLimit + ? options.limit <= options.maxLimit + ? options.limit + : options.maxLimit + : options.limit; + } + return options.maxLimit ? options.maxLimit : null; + } + /** + * Get number of resources to be skipped + * @param query + * @param take + */ + getSkip(query, take) { + return query.page && take + ? take * (query.page - 1) + : query.offset + ? query.offset + : null; + } + /** + * Get primary param name from CrudOptions + * @param options + */ + getPrimaryParams(options) { + if ((0, lodash_1.isEmpty)(options.params)) { + return []; + } + // @ts-ignore + return (0, lodash_1.keys)(options.params) + .filter((n) => (0, lodash_1.get)(options, `params[${n}].primary`, false)) + .map((p) => (0, lodash_1.get)(options, `params[${p}].field`)); + } +} +exports.CrudService = CrudService; + + +/***/ }), +/* 7 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common"); + +/***/ }), +/* 8 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("lodash"); + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudConfigService = void 0; +const helpers_1 = __webpack_require__(10); +const query_builder_service_1 = __webpack_require__(38); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = __webpack_require__(40); +class CrudConfigService { + static load(config = {}) { + const auth = (0, helpers_1.isObjectFull)(config.auth) ? config.auth : {}; + const query = (0, helpers_1.isObjectFull)(config.query) ? config.query : {}; + const routes = (0, helpers_1.isObjectFull)(config.routes) ? config.routes : {}; + const operators = (0, helpers_1.isObjectFull)(config.operators) ? config.operators : {}; + const params = (0, helpers_1.isObjectFull)(config.params) ? config.params : {}; + const serialize = (0, helpers_1.isObjectFull)(config.serialize) ? config.serialize : {}; + if ((0, helpers_1.isObjectFull)(config.queryParser)) { + query_builder_service_1.QueryBuilderService.setOptions({ + ...config.queryParser, + }); + } + CrudConfigService.config = deepmerge(CrudConfigService.config, { auth, query, routes, operators, params, serialize }, + // @ts-ignore + { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }); + } +} +exports.CrudConfigService = CrudConfigService; +CrudConfigService.config = { + auth: {}, + query: { + alwaysPaginate: false, + }, + operators: {}, + routes: { + getManyBase: { interceptors: [], decorators: [] }, + getOneBase: { interceptors: [], decorators: [] }, + createOneBase: { interceptors: [], decorators: [], returnShallow: false }, + createManyBase: { interceptors: [], decorators: [] }, + updateOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + replaceOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false }, + recoverOneBase: { + interceptors: [], + decorators: [], + returnRecovered: false, + }, + }, + params: {}, +}; + + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(11), exports); +tslib_1.__exportStar(__webpack_require__(12), exports); +tslib_1.__exportStar(__webpack_require__(19), exports); +tslib_1.__exportStar(__webpack_require__(23), exports); +tslib_1.__exportStar(__webpack_require__(31), exports); +tslib_1.__exportStar(__webpack_require__(32), exports); + + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isObjectFull = exports.isObject = exports.isIn = exports.isTrue = exports.isFalse = exports.isDateString = exports.hasValue = exports.isValue = exports.isArrayOfStringsFull = exports.isStringFull = exports.isArrayFull = exports.isArrayOfStrings = void 0; +const lodash_1 = __webpack_require__(8); +const isArrayOfStrings = (arr) => { + return (0, lodash_1.isArray)(arr) && (0, lodash_1.every)(arr, lodash_1.isString); +}; +exports.isArrayOfStrings = isArrayOfStrings; +const isArrayFull = (val) => Array.isArray(val) && !(0, lodash_1.isEmpty)(val); +exports.isArrayFull = isArrayFull; +const isStringFull = (val) => (0, lodash_1.isString)(val) && !(0, lodash_1.isEmpty)(val); +exports.isStringFull = isStringFull; +const isArrayOfStringsFull = (val) => (0, exports.isArrayFull)(val) && val.every((v) => (0, exports.isStringFull)(v)); +exports.isArrayOfStringsFull = isArrayOfStringsFull; +const isValue = (val) => (0, exports.isStringFull)(val) || (0, lodash_1.isNumber)(val) || (0, lodash_1.isBoolean)(val) || (0, lodash_1.isDate)(val); +exports.isValue = isValue; +const hasValue = (val) => (0, exports.isArrayFull)(val) ? val.every((o) => (0, exports.isValue)(o)) : (0, exports.isValue)(val); +exports.hasValue = hasValue; +const isDateString = (val) => { + const timestamp = Date.parse(val); + return !isNaN(timestamp) && (0, lodash_1.isDate)(new Date(timestamp)); +}; +exports.isDateString = isDateString; +const isFalse = (val) => val === false; +exports.isFalse = isFalse; +const isTrue = (val) => val === true; +exports.isTrue = isTrue; +const isIn = (val, arr = []) => arr.some((o) => (0, lodash_1.isEqual)(val, o)); +exports.isIn = isIn; +const isObject = (val) => typeof val === "object" && !(0, lodash_1.isNil)(val); +exports.isObject = isObject; +const isObjectFull = (val) => (0, exports.isObject)(val) && (0, lodash_1.keys)(val).length > 0; +exports.isObjectFull = isObjectFull; + + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.createBulkDto = exports.getValidationPipe = exports.BulkDto = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const helpers_1 = __webpack_require__(10); +const lodash_1 = __webpack_require__(8); +const enums_1 = __webpack_require__(13); +const swagger_1 = __webpack_require__(16); +const class_validator_1 = __webpack_require__(17); +const class_transformer_1 = __webpack_require__(18); +class BulkDto { +} +exports.BulkDto = BulkDto; +const getValidationPipe = (options, group) => { + return !(0, helpers_1.isFalse)(options.validation) + ? new common_1.ValidationPipe({ + ...(options.validation || {}), + groups: group ? [group] : undefined, + }) + : undefined; +}; +exports.getValidationPipe = getValidationPipe; +const createBulkDto = (options) => { + if (!(0, helpers_1.isFalse)(options.validation)) { + const hasDto = !(0, lodash_1.isNil)(options.dto?.create); + const groups = !hasDto + ? [enums_1.CrudValidationGroups.CREATE] + : undefined; + const always = hasDto ? true : undefined; + const Model = hasDto ? options.dto?.create : options.model.type; + class BulkDtoImpl { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: Model, isArray: true }), + (0, class_validator_1.IsArray)({ groups, always }), + (0, class_validator_1.ArrayNotEmpty)({ groups, always }), + (0, class_validator_1.ValidateNested)({ each: true, groups, always }), + (0, class_transformer_1.Type)(() => Model) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], BulkDtoImpl.prototype, "bulk", void 0); + Object.defineProperty(BulkDtoImpl, "name", { + writable: false, + value: `CreateMany${options.model.type.name}Dto`, + }); + return BulkDtoImpl; + } + else { + return BulkDto; + } +}; +exports.createBulkDto = createBulkDto; + + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(14), exports); +tslib_1.__exportStar(__webpack_require__(15), exports); + + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudActions = void 0; +var CrudActions; +(function (CrudActions) { + CrudActions["ReadAll"] = "Read-All"; + CrudActions["ReadOne"] = "Read-One"; + CrudActions["CreateOne"] = "Create-One"; + CrudActions["CreateMany"] = "Create-Many"; + CrudActions["UpdateOne"] = "Update-One"; + CrudActions["ReplaceOne"] = "Replace-One"; + CrudActions["DeleteOne"] = "Delete-One"; + CrudActions["DeleteAll"] = "Delete-All"; + CrudActions["RecoverOne"] = "Recover-One"; +})(CrudActions || (exports.CrudActions = CrudActions = {})); + + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudValidationGroups = void 0; +var CrudValidationGroups; +(function (CrudValidationGroups) { + CrudValidationGroups["CREATE"] = "CRUD-CREATE"; + CrudValidationGroups["UPDATE"] = "CRUD-UPDATE"; +})(CrudValidationGroups || (exports.CrudValidationGroups = CrudValidationGroups = {})); + + +/***/ }), +/* 16 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger"); + +/***/ }), +/* 17 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("class-validator"); + +/***/ }), +/* 18 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("class-transformer"); + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.R = void 0; +const route_paramtypes_enum_1 = __webpack_require__(20); +const constants_1 = __webpack_require__(21); +const lodash_1 = __webpack_require__(8); +const constants_2 = __webpack_require__(22); +class R { + static set(metadataKey, metadataValue, target, propertyKey = undefined) { + if (propertyKey) { + Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey); + } + else { + Reflect.defineMetadata(metadataKey, metadataValue, target); + } + } + static get(metadataKey, target, propertyKey = undefined) { + return propertyKey + ? Reflect.getMetadata(metadataKey, target, propertyKey) + : Reflect.getMetadata(metadataKey, target); + } + static createCustomRouteArg(paramType, index, pipes = [], data = undefined) { + // @ts-ignore + return { + [`${paramType}${constants_1.CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: { + index, + factory: (_, ctx) => R.getContextRequest(ctx)[paramType], + data, + pipes, + }, + }; + } + static createRouteArg(paramTypes, index, pipes = [], data = undefined) { + return { + [`${paramTypes}:${index}`]: { + index, + pipes, + data, + }, + }; + } + static setDecorators(decorators, target, name) { + // this makes metadata decorator works + const decoratedDescriptor = Reflect.decorate(decorators, target, name, Reflect.getOwnPropertyDescriptor(target, name)); + // this makes proxy decorator works + Reflect.defineProperty(target, name, decoratedDescriptor); + } + static setParsedRequestArg(index) { + return R.createCustomRouteArg(constants_2.PARSED_CRUD_REQUEST_KEY, index); + } + static setBodyArg(index, pipes = []) { + return R.createRouteArg(route_paramtypes_enum_1.RouteParamtypes.BODY, index, pipes); + } + static setCrudOptions(options, target) { + R.set(constants_2.CRUD_OPTIONS_METADATA, options, target); + } + static setRoute(route, func) { + R.set(constants_1.PATH_METADATA, route.path, func); + R.set(constants_1.METHOD_METADATA, route.method, func); + } + static setInterceptors(interceptors, func) { + R.set(constants_1.INTERCEPTORS_METADATA, interceptors, func); + } + static setRouteArgs(metadata, target, name) { + R.set(constants_1.ROUTE_ARGS_METADATA, metadata, target, name); + } + static setRouteArgsTypes(metadata, target, name) { + R.set(constants_1.PARAMTYPES_METADATA, metadata, target, name); + } + static setAction(action, func) { + R.set(constants_2.ACTION_NAME_METADATA, action, func); + } + static setCrudAuthOptions(metadata, target) { + R.set(constants_2.CRUD_AUTH_OPTIONS_METADATA, metadata, target); + } + static getCrudAuthOptions(target) { + return R.get(constants_2.CRUD_AUTH_OPTIONS_METADATA, target); + } + static getCrudOptions(target) { + return R.get(constants_2.CRUD_OPTIONS_METADATA, target); + } + static getAction(func) { + return R.get(constants_2.ACTION_NAME_METADATA, func); + } + static getOverrideRoute(func) { + return R.get(constants_2.OVERRIDE_METHOD_METADATA, func); + } + static getInterceptors(func) { + return R.get(constants_1.INTERCEPTORS_METADATA, func) || []; + } + static getRouteArgs(target, name) { + return R.get(constants_1.ROUTE_ARGS_METADATA, target, name); + } + static getRouteArgsTypes(target, name) { + return R.get(constants_1.PARAMTYPES_METADATA, target, name) || []; + } + static getParsedBody(func) { + return R.get(constants_2.PARSED_BODY_METADATA, func); + } + static getContextRequest(ctx) { + return (0, lodash_1.isFunction)(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx; + } +} +exports.R = R; + + +/***/ }), +/* 20 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common/enums/route-paramtypes.enum"); + +/***/ }), +/* 21 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common/constants"); + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CRUD_AUTH_OPTIONS_METADATA = exports.CRUD_OPTIONS_METADATA = exports.PARSED_CRUD_REQUEST_KEY = exports.PARSED_BODY_METADATA = exports.OVERRIDE_METHOD_METADATA = exports.ACTION_NAME_METADATA = exports.FEATURE_NAME_METADATA = exports.REQUEST_PREFIX_EXTRA = exports.REQUEST_DELIM_STR = exports.REQUEST_DELIM = void 0; +exports.REQUEST_DELIM = "||"; +exports.REQUEST_DELIM_STR = ","; +exports.REQUEST_PREFIX_EXTRA = "extra."; +exports.FEATURE_NAME_METADATA = "CRUDX_FEATURE_NAME_METADATA"; +exports.ACTION_NAME_METADATA = "CRUDX_ACTION_NAME_METADATA"; +exports.OVERRIDE_METHOD_METADATA = "CRUDX_OVERRIDE_METHOD_METADATA"; +exports.PARSED_BODY_METADATA = "CRUDX_PARSED_BODY_METADATA"; +exports.PARSED_CRUD_REQUEST_KEY = "CRUDX_PARSED_CRUD_REQUEST_KEY"; +exports.CRUD_OPTIONS_METADATA = "CRUDX_CRUD_OPTIONS_METADATA"; +exports.CRUD_AUTH_OPTIONS_METADATA = "CRUDX_CRUD_AUTH_OPTIONS_METADATA"; + + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.validateUUID = exports.validateParamOption = exports.validateNumeric = exports.validateSort = exports.validateJoin = exports.validateComparisonOperator = exports.validateCondition = exports.validateFields = exports.sortOrdersList = exports.comparisonOperatorsList = void 0; +const lodash_1 = __webpack_require__(8); +const exceptions_1 = __webpack_require__(24); +const types_1 = __webpack_require__(26); +const checkers_helper_1 = __webpack_require__(11); +exports.comparisonOperatorsList = [ + ...(0, lodash_1.keys)(types_1.CondOperator).map((n) => types_1.CondOperator[n]), +]; +exports.sortOrdersList = ["ASC", "DESC"]; +const sortOrdersListStr = exports.sortOrdersList.join(); +function validateFields(fields) { + if (!(0, checkers_helper_1.isArrayOfStrings)(fields)) { + throw new exceptions_1.RequestQueryException("Invalid fields. Array of strings expected"); + } +} +exports.validateFields = validateFields; +function validateCondition(val, cond, customOperators) { + if (!(0, lodash_1.isObject)(val) || !(0, checkers_helper_1.isStringFull)(val.field)) { + throw new exceptions_1.RequestQueryException(`Invalid field type in ${cond} condition. String expected`); + } + validateComparisonOperator(val.operator, customOperators); +} +exports.validateCondition = validateCondition; +function validateComparisonOperator(operator, customOperators = {}) { + const extendedComparisonOperatorsList = [ + ...exports.comparisonOperatorsList, + ...Object.keys(customOperators), + ]; + if (!extendedComparisonOperatorsList.includes(operator)) { + throw new exceptions_1.RequestQueryException(`Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`); + } +} +exports.validateComparisonOperator = validateComparisonOperator; +function validateJoin(join) { + if (!(0, lodash_1.isObject)(join) || !(0, checkers_helper_1.isStringFull)(join.field)) { + throw new exceptions_1.RequestQueryException("Invalid join field. String expected"); + } + if (!(0, lodash_1.isUndefined)(join.select) && !(0, checkers_helper_1.isArrayOfStringsFull)(join.select)) { + throw new exceptions_1.RequestQueryException("Invalid join select. Array of strings expected"); + } +} +exports.validateJoin = validateJoin; +function validateSort(sort) { + if (!(0, lodash_1.isObject)(sort) || !(0, checkers_helper_1.isStringFull)(sort.field)) { + throw new exceptions_1.RequestQueryException("Invalid sort field. String expected"); + } + if (!(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[0]) && + !(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[1])) { + throw new exceptions_1.RequestQueryException(`Invalid sort order. ${sortOrdersListStr} expected`); + } +} +exports.validateSort = validateSort; +function validateNumeric(val, num) { + if (!(0, lodash_1.isNumber)(val)) { + throw new exceptions_1.RequestQueryException(`Invalid ${num}. Number expected`); + } +} +exports.validateNumeric = validateNumeric; +function validateParamOption(options, name) { + if (!(0, lodash_1.isObject)(options)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. Invalid crud options`); + } + const option = options[name]; + if (option && option.disabled) { + return; + } + if (!(0, lodash_1.isObject)(option) || (0, lodash_1.isNil)(option.field) || (0, lodash_1.isNil)(option.type)) { + throw new exceptions_1.RequestQueryException(`Invalid param option in Crud`); + } +} +exports.validateParamOption = validateParamOption; +function validateUUID(str, name) { + const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + const uuidV4 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + if (!uuidV4.test(str) && !uuid.test(str)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. UUID string expected`); + } +} +exports.validateUUID = validateUUID; + + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(25), exports); + + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RequestQueryException = void 0; +class RequestQueryException extends Error { + constructor(msg) { + super(msg); + } +} +exports.RequestQueryException = RequestQueryException; + + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(27), exports); +tslib_1.__exportStar(__webpack_require__(28), exports); +tslib_1.__exportStar(__webpack_require__(29), exports); +tslib_1.__exportStar(__webpack_require__(30), exports); + + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CondOperator = void 0; +var CondOperator; +(function (CondOperator) { + CondOperator["EQUALS"] = "$eq"; + CondOperator["NOT_EQUALS"] = "$ne"; + CondOperator["GREATER_THAN"] = "$gt"; + CondOperator["LOWER_THAN"] = "$lt"; + CondOperator["GREATER_THAN_EQUALS"] = "$gte"; + CondOperator["LOWER_THAN_EQUALS"] = "$lte"; + CondOperator["STARTS"] = "$starts"; + CondOperator["ENDS"] = "$ends"; + CondOperator["CONTAINS"] = "$cont"; + CondOperator["EXCLUDES"] = "$excl"; + CondOperator["IN"] = "$in"; + CondOperator["NOT_IN"] = "$notin"; + CondOperator["IS_NULL"] = "$isnull"; + CondOperator["NOT_NULL"] = "$notnull"; + CondOperator["BETWEEN"] = "$between"; + CondOperator["EQUALS_LOW"] = "$eqL"; + CondOperator["NOT_EQUALS_LOW"] = "$neL"; + CondOperator["STARTS_LOW"] = "$startsL"; + CondOperator["ENDS_LOW"] = "$endsL"; + CondOperator["CONTAINS_LOW"] = "$contL"; + CondOperator["EXCLUDES_LOW"] = "$exclL"; + CondOperator["IN_LOW"] = "$inL"; + CondOperator["NOT_IN_LOW"] = "$notinL"; +})(CondOperator || (exports.CondOperator = CondOperator = {})); + + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SerializeHelper = void 0; +const tslib_1 = __webpack_require__(2); +const class_transformer_1 = __webpack_require__(18); +const swagger_1 = __webpack_require__(16); +class SerializeHelper { + static createGetManyDto(dto, resourceName) { + class GetManyResponseDto { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: dto, isArray: true }), + (0, class_transformer_1.Type)(() => dto) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], GetManyResponseDto.prototype, "data", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "count", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "total", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "page", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "pageCount", void 0); + Object.defineProperty(GetManyResponseDto, "name", { + writable: false, + value: `GetMany${resourceName}ResponseDto`, + }); + return GetManyResponseDto; + } + static createGetOneResponseDto(resourceName) { + class GetOneResponseDto { + } + Object.defineProperty(GetOneResponseDto, "name", { + writable: false, + value: `${resourceName}ResponseDto`, + }); + return GetOneResponseDto; + } +} +exports.SerializeHelper = SerializeHelper; + + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Swagger = exports.swaggerPkgJson = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const services_1 = __webpack_require__(5); +const lodash_1 = __webpack_require__(8); +const reflection_helper_1 = __webpack_require__(19); +const safe_require_helper_1 = __webpack_require__(33); +const SWAGGER_CONSTANTS = tslib_1.__importStar(__webpack_require__(35)); +const swagger_1 = __webpack_require__(16); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const pluralize = __webpack_require__(36); +exports.swaggerPkgJson = (0, safe_require_helper_1.safeRequire)("@nestjs/swagger/package.json", () => __webpack_require__(37)); +class Swagger { + static operationsMap(modelName) { + return { + getManyBase: `Retrieve multiple ${pluralize(modelName)}`, + getOneBase: `Retrieve a single ${modelName}`, + createManyBase: `Create multiple ${pluralize(modelName)}`, + createOneBase: `Create a single ${modelName}`, + updateOneBase: `Update a single ${modelName}`, + replaceOneBase: `Replace a single ${modelName}`, + deleteOneBase: `Delete a single ${modelName}`, + recoverOneBase: `Recover one ${modelName}`, + }; + } + static setOperation(metadata, func) { + if (SWAGGER_CONSTANTS) { + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func); + } + } + static setParams(metadata, func) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func); + } + } + static setExtraModels(swaggerModels) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + const meta = Swagger.getExtraModels(swaggerModels.get); + const models = [ + ...meta, + ...(0, lodash_1.keys)(swaggerModels) + .map((name) => swaggerModels[name]) + .filter((one) => one && one.name !== swaggerModels.get.name), + ]; + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, models, swaggerModels.get); + } + } + static setResponseOk(metadata, func) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func); + } + } + static getOperation(func) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {} + : {}; + } + static getParams(func) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || [] + : []; + } + static getExtraModels(target) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || [] + : []; + } + static getResponseOk(func) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {} + : {}; + } + static createResponseMeta(name, options, swaggerModels) { + const { routes, query } = options; + switch (name) { + case "getOneBase": + return { + [common_1.HttpStatus.OK]: { + description: "Get one base response", + type: swaggerModels.get, + }, + }; + case "getManyBase": + return { + [common_1.HttpStatus.OK]: query?.alwaysPaginate + ? { + description: "Get paginated response", + type: swaggerModels.getMany, + } + : { + description: "Get many base response", + schema: { + oneOf: [ + { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.getMany.name), + }, + { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.get.name), + }, + }, + ], + }, + }, + }; + case "createOneBase": + return { + [common_1.HttpStatus.CREATED]: { + description: "Get create one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }; + case "createManyBase": + return { + [common_1.HttpStatus.CREATED]: swaggerModels.createMany + ? { + description: "Get create many base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.createMany.name), + }, + } + : { + description: "Get create many base response", + schema: { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }, + }; + case "deleteOneBase": + return { + [common_1.HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted + ? { + description: "Delete one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.delete.name), + }, + } + : { + description: "Delete one base response", + }, + }; + case "recoverOneBase": + return { + [common_1.HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered + ? { + description: "Recover one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.recover.name), + }, + } + : { + description: "Recover one base response", + }, + }; + default: + const dto = swaggerModels[name.split("OneBase")[0]]; + return { + [common_1.HttpStatus.OK]: { + description: "Response", + schema: { $ref: (0, swagger_1.getSchemaPath)(dto.name) }, + }, + }; + } + } + static createPathParamsMeta(options) { + return SWAGGER_CONSTANTS + ? (0, lodash_1.keys)(options).map((param) => ({ + name: param, + required: true, + in: "path", + type: options[param].type === "number" ? Number : String, + enum: (0, lodash_1.isArray)(options[param]?.enum) + ? Object.values(options[param].enum) + : undefined, + })) + : []; + } + static createQueryParamsMeta(name, options) { + if (options.swagger === undefined || options.swagger.enabled) { + return []; + } + const { delim: d, delimStr: coma, fields, search, filter, or, join, sort, limit, offset, page, cache, includeDeleted, } = Swagger.getQueryParamsNames(); + const docsLink = (a) => + // TODO: to modify + `Docs`; + const fieldsMetaBase = { + name: fields, + description: `Selects resource fields. ${docsLink("select")}`, + required: false, + in: "query", + }; + const fieldsMeta = { + ...fieldsMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: false, + }; + const searchMetaBase = { + name: search, + description: `Adds search condition. ${docsLink("search")}`, + required: false, + in: "query", + }; + const searchMeta = { ...searchMetaBase, schema: { type: "string" } }; + const filterMetaBase = { + name: filter, + description: `Adds filter condition. ${docsLink("filter")}`, + required: false, + in: "query", + }; + const filterMeta = { + ...filterMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const orMetaBase = { + name: or, + description: `Adds OR condition. ${docsLink("or")}`, + required: false, + in: "query", + }; + const orMeta = { + ...orMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const sortMetaBase = { + name: sort, + description: `Adds sort by field. ${docsLink("sort")}`, + required: false, + in: "query", + }; + const sortMeta = { + ...sortMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const joinMetaBase = { + name: join, + description: `Adds relational resources. ${docsLink("join")}`, + required: false, + in: "query", + }; + const joinMeta = { + ...joinMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const limitMetaBase = { + name: limit, + description: `Limit amount of resources. ${docsLink("limit")}`, + required: false, + in: "query", + }; + const limitMeta = { ...limitMetaBase, schema: { type: "integer" } }; + const offsetMetaBase = { + name: offset, + description: `Offset amount of resources. ${docsLink("offset")}`, + required: false, + in: "query", + }; + const offsetMeta = { ...offsetMetaBase, schema: { type: "integer" } }; + const pageMetaBase = { + name: page, + description: `Page portion of resources. ${docsLink("page")}`, + required: false, + in: "query", + }; + const pageMeta = { ...pageMetaBase, schema: { type: "integer" } }; + const cacheMetaBase = { + name: cache, + description: `Reset cache (if was enabled). ${docsLink("cache")}`, + required: false, + in: "query", + }; + const cacheMeta = { + ...cacheMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + const includeDeletedMetaBase = { + name: includeDeleted, + description: `Include deleted. ${docsLink("includeDeleted")}`, + required: false, + in: "query", + }; + const includeDeletedMeta = { + ...includeDeletedMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + switch (name) { + case "getManyBase": + return options.query?.softDelete + ? [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + includeDeletedMeta, + ] + : [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + ]; + case "getOneBase": + return options.query?.softDelete + ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta] + : [fieldsMeta, joinMeta, cacheMeta]; + default: + return []; + } + } + static getQueryParamsNames() { + const qbOptions = services_1.QueryBuilderService.getOptions(); + const name = (n) => { + const selected = (0, lodash_1.get)(qbOptions, `paramNamesMap[${n}]`); + return (0, lodash_1.isString)(selected) ? selected : selected?.[0]; + }; + return { + delim: qbOptions.delim, + delimStr: qbOptions.delimStr, + fields: name("fields"), + search: name("search"), + filter: name("filter"), + or: name("or"), + join: name("join"), + sort: name("sort"), + limit: name("limit"), + offset: name("offset"), + page: name("page"), + cache: name("cache"), + includeDeleted: name("includeDeleted"), + }; + } +} +exports.Swagger = Swagger; + + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.safeRequire = void 0; +function safeRequire(path, loader) { + try { + return loader ? loader() : __webpack_require__(34)(path); + } + catch (_) { + return null; + } +} +exports.safeRequire = safeRequire; + + +/***/ }), +/* 34 */ +/***/ ((module) => { + +function webpackEmptyContext(req) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; +} +webpackEmptyContext.keys = () => ([]); +webpackEmptyContext.resolve = webpackEmptyContext; +webpackEmptyContext.id = 34; +module.exports = webpackEmptyContext; + +/***/ }), +/* 35 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger/dist/constants"); + +/***/ }), +/* 36 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("pluralize"); + +/***/ }), +/* 37 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger/package.json"); + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.QueryBuilderService = void 0; +const lodash_1 = __webpack_require__(8); +const qs_1 = __webpack_require__(39); +const helpers_1 = __webpack_require__(10); +const constants_1 = __webpack_require__(22); +class QueryBuilderService { + constructor() { + this.paramNames = {}; + this.queryObject = {}; + this.queryString = ""; + this.setParamNames(); + } + static setOptions(options) { + QueryBuilderService._options = { + ...QueryBuilderService._options, + ...options, + paramNamesMap: { + ...QueryBuilderService._options.paramNamesMap, + ...(options.paramNamesMap ? options.paramNamesMap : {}), + }, + }; + } + static getOptions() { + return QueryBuilderService._options; + } + static create(params, customOperators = {}) { + const qb = new QueryBuilderService(); + return (0, lodash_1.isObject)(params) + ? qb.createFromParams(params, customOperators) + : qb; + } + get options() { + return QueryBuilderService._options; + } + setParamNames() { + if (QueryBuilderService._options.paramNamesMap) { + Object.keys(QueryBuilderService._options.paramNamesMap).forEach((key) => { + const name = (0, lodash_1.get)(QueryBuilderService._options.paramNamesMap, key); + this.paramNames[key] = (0, lodash_1.isString)(name) + ? name + : name[0]; + }); + } + } + query(encode = true) { + if (this.queryObject[this.paramNames["search"]]) { + this.queryObject[this.paramNames["filter"]] = undefined; + this.queryObject[this.paramNames["or"]] = undefined; + } + this.queryString = (0, qs_1.stringify)(this.queryObject, { encode }); + return this.queryString; + } + select(fields) { + if (!(0, lodash_1.isNil)(fields) && (0, helpers_1.isArrayFull)(fields)) { + (0, helpers_1.validateFields)(fields); + this.queryObject[this.paramNames["fields"]] = fields.join(this.options.delimStr); + } + return this; + } + search(s) { + if (!(0, lodash_1.isNil)(s) && (0, lodash_1.isObject)(s)) { + this.queryObject[this.paramNames["search"]] = JSON.stringify(s); + } + return this; + } + setFilter(f, customOperators = {}) { + this.setCondition(f, "filter", customOperators); + return this; + } + setOr(f, customOperators = {}) { + this.setCondition(f, "or", customOperators); + return this; + } + setJoin(j) { + if (!(0, lodash_1.isNil)(j)) { + const param = this.checkQueryObjectParam("join", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(j) && !(0, lodash_1.isString)(j[0]) + ? j.map((o) => this.addJoin(o)) + : [this.addJoin(j)]), + ]; + } + return this; + } + sortBy(s) { + if (!(0, lodash_1.isNil)(s)) { + const param = this.checkQueryObjectParam("sort", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(s) && !(0, lodash_1.isString)(s[0]) + ? s.map((o) => this.addSortBy(o)) + : [this.addSortBy(s)]), + ]; + } + return this; + } + setLimit(n) { + this.setNumeric(n, "limit"); + return this; + } + setOffset(n) { + this.setNumeric(n, "offset"); + return this; + } + setPage(n) { + this.setNumeric(n, "page"); + return this; + } + resetCache() { + this.setNumeric(0, "cache"); + return this; + } + setIncludeDeleted(n) { + this.setNumeric(n, "includeDeleted"); + return this; + } + cond(f, cond = "search", customOperators = {}) { + const filter = Array.isArray(f) + ? { field: f[0], operator: f[1], value: f[2] } + : f; + (0, helpers_1.validateCondition)(filter, cond, customOperators); + const d = this.options.delim; + return (filter.field + + d + + filter.operator + + ((0, helpers_1.hasValue)(filter.value) ? d + filter.value : "")); + } + addJoin(j) { + const join = Array.isArray(j) + ? { field: j[0], select: j[1] } + : j; + (0, helpers_1.validateJoin)(join); + const d = this.options.delim; + const ds = this.options.delimStr; + return (join.field + + ((0, helpers_1.isArrayFull)(join.select) ? d + (join.select?.join(ds) ?? "") : "")); + } + addSortBy(s) { + const sort = Array.isArray(s) ? { field: s[0], order: s[1] } : s; + (0, helpers_1.validateSort)(sort); + const ds = this.options.delimStr; + return sort.field + ds + sort.order; + } + createFromParams(params, customOperators) { + this.select(params.fields); + this.search(params.search); + this.setFilter(params.filter, customOperators); + this.setOr(params.or, customOperators); + this.setJoin(params.join); + this.setLimit(params.limit); + this.setOffset(params.offset); + this.setPage(params.page); + this.sortBy(params.sort); + if (params.resetCache) { + this.resetCache(); + } + this.setIncludeDeleted(params.includeDeleted); + return this; + } + checkQueryObjectParam(cond, defaults) { + const param = this.paramNames[cond]; + if ((0, lodash_1.isNil)(this.queryObject[param]) && !(0, lodash_1.isUndefined)(defaults)) { + this.queryObject[param] = defaults; + } + return param; + } + setCondition(f, cond, customOperators) { + if (!(0, lodash_1.isNil)(f)) { + const param = this.checkQueryObjectParam(cond, []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(f) && !(0, lodash_1.isString)(f[0]) + ? f.map((o) => this.cond(o, cond, customOperators)) + : [ + this.cond(f, cond, customOperators), + ]), + ]; + } + } + setNumeric(n, cond) { + if (!(0, lodash_1.isNil)(n)) { + (0, helpers_1.validateNumeric)(n, cond); + this.queryObject[this.paramNames[cond]] = n; + } + } +} +exports.QueryBuilderService = QueryBuilderService; +QueryBuilderService._options = { + delim: constants_1.REQUEST_DELIM, + delimStr: constants_1.REQUEST_DELIM_STR, + paramNamesMap: { + fields: ["fields", "select"], + search: "s", + filter: "filter", + or: "or", + join: "join", + sort: "sort", + limit: ["limit", "per_page"], + offset: "offset", + page: "page", + cache: "cache", + includeDeleted: "include_deleted", + extra: constants_1.REQUEST_PREFIX_EXTRA, + }, +}; + + +/***/ }), +/* 39 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("qs"); + +/***/ }), +/* 40 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("deepmerge"); + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.QueryParserService = void 0; +const lodash_1 = __webpack_require__(8); +const exceptions_1 = __webpack_require__(24); +const types_1 = __webpack_require__(26); +const query_builder_service_1 = __webpack_require__(38); +const helpers_1 = __webpack_require__(10); +const constants_1 = __webpack_require__(22); +class QueryParserService { + constructor() { + this.fields = []; + this.paramsFilter = []; + this.authPersist = undefined; + this.classTransformOptions = undefined; + this.search = undefined; + this.filter = []; + this.or = []; + this.join = []; + this.sort = []; + this.extra = {}; + this._paramNames = []; + this._paramsOptions = {}; + } + get _options() { + return query_builder_service_1.QueryBuilderService.getOptions(); + } + static create() { + return new QueryParserService(); + } + getParsed() { + return { + fields: this.fields, + paramsFilter: this.paramsFilter, + authPersist: this.authPersist, + classTransformOptions: this.classTransformOptions, + search: this.search, + filter: this.filter, + or: this.or, + join: this.join, + sort: this.sort, + limit: this.limit, + offset: this.offset, + page: this.page, + cache: this.cache, + includeDeleted: this.includeDeleted, + extra: this.extra, + }; + } + setAuthPersist(persist = {}) { + this.authPersist = persist || /* istanbul ignore next */ {}; + } + setClassTransformOptions(options = {}) { + this.classTransformOptions = options || /* istanbul ignore next */ {}; + } + convertFilterToSearch(filter) { + const isEmptyValue = { + isnull: true, + notnull: true, + }; + return filter + ? { + [filter.field]: { + [filter.operator]: (0, lodash_1.has)(isEmptyValue, filter.operator) + ? (0, lodash_1.get)(isEmptyValue, filter.operator) + : filter.value, + }, + } + : /* istanbul ignore next */ {}; + } + parseQuery(query, customOperators = {}) { + if ((0, lodash_1.isObject)(query)) { + const paramNames = (0, lodash_1.keys)(query); + if (!(0, lodash_1.isEmpty)(paramNames)) { + this._query = query; + this._paramNames = paramNames; + const searchData = this._query[this.getParamNames("search")[0]]; + this.search = this.parseSearchQueryParam(searchData); + if ((0, lodash_1.isNil)(this.search)) { + this.filter = this.parseQueryParam("filter", this.conditionParser.bind(this, "filter", customOperators)); + this.or = this.parseQueryParam("or", this.conditionParser.bind(this, "or", customOperators)); + } + this.fields = + this.parseQueryParam("fields", this.fieldsParser.bind(this))[0] || []; + this.join = this.parseQueryParam("join", this.joinParser.bind(this)); + this.sort = this.parseQueryParam("sort", this.sortParser.bind(this)); + this.limit = this.parseQueryParam("limit", this.numericParser.bind(this, "limit"))[0]; + this.offset = this.parseQueryParam("offset", this.numericParser.bind(this, "offset"))[0]; + this.page = this.parseQueryParam("page", this.numericParser.bind(this, "page"))[0]; + this.cache = this.parseQueryParam("cache", this.numericParser.bind(this, "cache"))[0]; + this.includeDeleted = this.parseQueryParam("includeDeleted", this.numericParser.bind(this, "includeDeleted"))[0]; + this.extra = this.parseExtraFromQueryParam(); + } + } + return this; + } + parseParams(params, options) { + if ((0, lodash_1.isObject)(params)) { + const paramNames = (0, lodash_1.keys)(params); + if (!(0, lodash_1.isNil)(paramNames)) { + this._params = params; + this._paramsOptions = options; + this.paramsFilter = paramNames + .map((name) => this.paramParser(name)) + .filter((filter) => filter); + } + } + return this; + } + getParamNames(type) { + return this._paramNames.filter((p) => { + const name = (0, lodash_1.get)(this._options.paramNamesMap, type, ""); + return (0, lodash_1.isString)(name) + ? name === p + : name.some((m) => m === p); + }); + } + getParamValues(value, parser) { + if ((0, helpers_1.isStringFull)(value)) { + return [parser.call(this, value)]; + } + if ((0, helpers_1.isArrayFull)(value)) { + return value.map((val) => parser(val)); + } + return []; + } + parseQueryParam(type, parser) { + const param = this.getParamNames(type); + if ((0, helpers_1.isArrayFull)(param)) { + // @ts-ignore + return param.reduce( + // @ts-ignore + (a, name) => [ + ...a, + ...this.getParamValues(this._query[name], parser), + ], []); + } + return []; + } + parseExtraFromQueryParam() { + const extraParam = (0, lodash_1.get)(this._options.paramNamesMap, "extra", []); + const params = Array.isArray(extraParam) + ? extraParam + : [extraParam]; + const extraKeys = (0, lodash_1.keys)(this._query || {}) + .filter((k) => params.find((p) => k?.startsWith(p))) + .reduce((o, k) => { + const key = k.replace(constants_1.REQUEST_PREFIX_EXTRA, ""); + this.parseDotChainToObject(this._query[k], key, o); + return o; + }, {}); + return (0, lodash_1.keys)(extraKeys).length > 0 ? extraKeys : undefined; + } + /** + * Build an object from data and composite key. + * + * @param data to used on parse workflow + * @param key composite key as 'foo.bar.hero' + * @param result object with parsed "data" and "key" structure + * @private + */ + parseDotChainToObject(data, key, result = {}) { + if (key.includes(".")) { + const keys = key.split("."); + const firstKey = keys.shift(); + (0, lodash_1.set)(result, firstKey, {}); + this.parseDotChainToObject(data, keys.join("."), (0, lodash_1.get)(result, firstKey)); + } + else { + (0, lodash_1.set)(result, key, this.parseValue(data)); + } + } + parseValue(val) { + try { + const parsed = JSON.parse(val); + // throw new Error('Don\'t support object now') + if ((!(0, lodash_1.isDate)(parsed) && (0, lodash_1.isObject)(parsed)) || + // JS cannot handle big numbers. Leave it as a string to prevent data loss + (typeof parsed === "number" && + parsed.toLocaleString("fullwide", { useGrouping: false }) !== val)) { + return val; + } + return parsed; + } + catch (_) { + if ((0, helpers_1.isDateString)(val)) { + return new Date(val); + } + return val; + } + } + parseValues(values) { + return (0, helpers_1.isArrayFull)(values) + ? values.map((v) => this.parseValue(v)) + : this.parseValue(values); + } + parseSearchQueryParam(d) { + if ((0, lodash_1.isNil)(d)) { + return undefined; + } + try { + const data = JSON.parse(d); + if (!(0, lodash_1.isObject)(data)) { + throw new Error(); + } + return data; + } + catch (_) { + throw new exceptions_1.RequestQueryException("Invalid search param. JSON expected"); + } + } + fieldsParser(data) { + // @ts-ignore + return data.split(this._options.delimStr); + } + conditionParser(cond, customOperators, data) { + const isArrayValue = [ + types_1.CondOperator.IN, + types_1.CondOperator.NOT_IN, + types_1.CondOperator.BETWEEN, + types_1.CondOperator.IN_LOW, + types_1.CondOperator.NOT_IN_LOW, + ].concat(Object.keys(customOperators).filter((op) => customOperators[op].isArray)); + const isEmptyValue = [ + types_1.CondOperator.IS_NULL, + types_1.CondOperator.NOT_NULL, + ]; + // @ts-ignore + const param = data.split(this._options.delim); + const field = param[0]; + const operator = param[1]; + let value = param[2] || ""; + if (isArrayValue.some((name) => name === operator)) { + // @ts-ignore + value = value.split(this._options.delimStr); + } + value = this.parseValues(value); + if (!isEmptyValue.some((name) => name === operator) && + !(0, helpers_1.hasValue)(value)) { + throw new exceptions_1.RequestQueryException(`Invalid ${cond} value`); + } + const condition = { field, operator, value }; + (0, helpers_1.validateCondition)(condition, cond, customOperators); + return condition; + } + joinParser(data) { + // @ts-ignore + const param = data.split(this._options.delim); + const join = { + field: param[0], + select: (0, helpers_1.isStringFull)(param[1]) + ? // @ts-ignore + param[1].split(this._options.delimStr) + : undefined, + }; + (0, helpers_1.validateJoin)(join); + return join; + } + sortParser(data) { + const param = data.split(this._options.delimStr); + const sort = { + field: param[0], + order: param[1], + }; + (0, helpers_1.validateSort)(sort); + return sort; + } + numericParser(num, data) { + const val = this.parseValue(data); + (0, helpers_1.validateNumeric)(val, num); + return val; + } + paramParser(name) { + (0, helpers_1.validateParamOption)(this._paramsOptions, name); + const option = this._paramsOptions[name]; + if (option.disabled) { + return undefined; + } + let value = this._params[name]; + switch (option.type) { + case "number": + value = this.parseValue(value); + (0, helpers_1.validateNumeric)(value, `param ${name}`); + break; + case "uuid": + (0, helpers_1.validateUUID)(value, name); + break; + default: + break; + } + return { field: option.field, operator: "$eq", value }; + } +} +exports.QueryParserService = QueryParserService; + + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RoutesFactoryService = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const route_paramtypes_enum_1 = __webpack_require__(20); +const lodash_1 = __webpack_require__(8); +const helpers_1 = __webpack_require__(10); +const enums_1 = __webpack_require__(13); +const interceptors_1 = __webpack_require__(43); +const services_1 = __webpack_require__(5); +const SWAGGER_CONSTANTS = tslib_1.__importStar(__webpack_require__(35)); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = __webpack_require__(40); +class RoutesFactoryService { + constructor(target, options) { + this.target = target; + this.swaggerModels = {}; + this.options = options; + this.create(); + } + /* istanbul ignore next */ + static create(target, options) { + return new RoutesFactoryService(target, options); + } + get targetProto() { + return this.target.prototype; + } + get modelName() { + return this.options.model.type.name; + } + get modelType() { + return this.options.model.type; + } + get actionsMap() { + return { + getManyBase: enums_1.CrudActions.ReadAll, + getOneBase: enums_1.CrudActions.ReadOne, + createManyBase: enums_1.CrudActions.CreateMany, + createOneBase: enums_1.CrudActions.CreateOne, + updateOneBase: enums_1.CrudActions.UpdateOne, + deleteOneBase: enums_1.CrudActions.DeleteOne, + replaceOneBase: enums_1.CrudActions.ReplaceOne, + recoverOneBase: enums_1.CrudActions.RecoverOne, + }; + } + create() { + const routesSchema = this.getRoutesSchema(); + this.mergeOptions(); + this.setResponseModels(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + mergeOptions() { + // merge auth config + const authOptions = helpers_1.R.getCrudAuthOptions(this.target); + this.options.auth = (0, helpers_1.isObjectFull)(authOptions) ? authOptions : {}; + if ((0, lodash_1.isUndefined)(this.options.auth.property)) { + this.options.auth.property = services_1.CrudConfigService.config?.auth?.property; + } + if ((0, lodash_1.isUndefined)(this.options.auth.groups)) { + this.options.auth.groups = services_1.CrudConfigService.config?.auth?.groups; + } + if ((0, lodash_1.isUndefined)(this.options.auth.classTransformOptions)) { + // @ts-ignore + this.options.auth.classTransformOptions = + services_1.CrudConfigService.config.auth?.classTransformOptions; + } + // merge query config + const query = (0, helpers_1.isObjectFull)(this.options.query) + ? this.options.query + : {}; + this.options.query = { ...services_1.CrudConfigService.config.query, ...query }; + // merge routes config + const routes = (0, helpers_1.isObjectFull)(this.options.routes) + ? this.options.routes + : {}; + this.options.routes = deepmerge(services_1.CrudConfigService.config.routes || {}, routes, { + // @ts-ignore + arrayMerge: (a, b, c) => b, + }); + // merge operators config + const operators = (0, helpers_1.isObjectFull)(this.options.operators) + ? this.options.operators + : {}; + this.options.operators = (deepmerge(services_1.CrudConfigService.config?.operators, operators)); + // set params + this.options.params = (0, helpers_1.isObjectFull)(this.options.params) + ? this.options.params + : (0, helpers_1.isObjectFull)(services_1.CrudConfigService.config.params) + ? services_1.CrudConfigService.config.params + : {}; + const hasPrimary = this.getPrimaryParams().length > 0; + if (!hasPrimary) { + // @ts-ignore + this.options.params["id"] = { + field: "id", + type: "number", + primary: true, + }; + } + // set dto + if (!(0, helpers_1.isObjectFull)(this.options.dto)) { + this.options.dto = {}; + } + // set serialize + const serialize = (0, helpers_1.isObjectFull)(this.options.serialize) + ? this.options.serialize + : {}; + this.options.serialize = { + ...services_1.CrudConfigService.config.serialize, + ...serialize, + }; + this.options.serialize.get = (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : this.options.serialize.get || this.modelType; + this.options.serialize.getMany = (0, helpers_1.isFalse)(this.options.serialize.getMany) + ? false + : this.options.serialize.getMany + ? this.options.serialize.getMany + : (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : helpers_1.SerializeHelper.createGetManyDto(this.options.serialize.get, this.modelName); + this.options.serialize.create = (0, helpers_1.isFalse)(this.options.serialize.create) + ? false + : this.options.serialize.create || this.modelType; + this.options.serialize.update = (0, helpers_1.isFalse)(this.options.serialize.update) + ? false + : this.options.serialize.update || this.modelType; + this.options.serialize.replace = (0, helpers_1.isFalse)(this.options.serialize.replace) + ? false + : this.options.serialize.replace || this.modelType; + this.options.serialize.delete = + (0, helpers_1.isFalse)(this.options.serialize.delete) || + !this.options.routes?.deleteOneBase?.returnDeleted + ? false + : this.options.serialize.delete || this.modelType; + this.options.swagger = this.getSwaggerOptions(); + helpers_1.R.setCrudOptions(this.options, this.target); + } + getSwaggerOptions() { + const isSwaggerDefined = SWAGGER_CONSTANTS !== undefined && SWAGGER_CONSTANTS !== null; + const options = { + enabled: false, + }; + if (this.options.swagger === undefined) { + options.enabled = true && isSwaggerDefined; + return options; + } + if ((0, helpers_1.isFalse)(this.options.swagger.enabled)) { + options.enabled = false; + return options; + } + options.enabled = isSwaggerDefined; + return options; + } + getRoutesSchema() { + return [ + { + name: "getOneBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: true, + }, + { + name: "getManyBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: false, + }, + { + name: "createOneBase", + path: "/", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "createManyBase", + path: "/bulk", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "updateOneBase", + path: "/", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + { + name: "replaceOneBase", + path: "/", + method: common_1.RequestMethod.PUT, + enable: false, + override: false, + withParams: true, + }, + { + name: "deleteOneBase", + path: "/", + method: common_1.RequestMethod.DELETE, + enable: false, + override: false, + withParams: true, + }, + { + name: "recoverOneBase", + path: "/recover", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + ]; + } + getManyBase(name) { + this.targetProto[name] = function getManyBase(req) { + return this.service.getMany(req); + }; + } + getOneBase(name) { + this.targetProto[name] = function getOneBase(req) { + return this.service.getOne(req); + }; + } + createOneBase(name) { + this.targetProto[name] = function createOneBase(req, dto) { + return this.service.createOne(req, dto); + }; + } + createManyBase(name) { + this.targetProto[name] = function createManyBase(req, dto) { + return this.service.createMany(req, dto); + }; + } + updateOneBase(name) { + this.targetProto[name] = function updateOneBase(req, dto) { + return this.service.updateOne(req, dto); + }; + } + replaceOneBase(name) { + this.targetProto[name] = function replaceOneBase(req, dto) { + return this.service.replaceOne(req, dto); + }; + } + deleteOneBase(name) { + this.targetProto[name] = function deleteOneBase(req) { + return this.service.deleteOne(req); + }; + } + recoverOneBase(name) { + this.targetProto[name] = function recoverOneBase(req) { + return this.service.recoverOne(req); + }; + } + canCreateRoute(name) { + const only = this.options.routes?.only; + const exclude = this.options.routes?.exclude; + // include recover route only for models with soft delete option + if (name === "recoverOneBase" && this.options.query?.softDelete !== true) { + return false; + } + if ((0, helpers_1.isArrayFull)(only)) { + // @ts-ignore + return only.some((route) => route === name); + } + if ((0, helpers_1.isArrayFull)(exclude)) { + // @ts-ignore + return !exclude.some((route) => route === name); + } + return true; + } + setResponseModels() { + const modelType = (0, lodash_1.isFunction)(this.modelType) + ? this.modelType + : helpers_1.SerializeHelper.createGetOneResponseDto(this.modelName); + this.swaggerModels.get = (0, lodash_1.isFunction)(this.options.serialize?.get) + ? this.options.serialize?.get + : modelType; + this.swaggerModels.getMany = + this.options.serialize?.getMany || + helpers_1.SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName); + this.swaggerModels.create = (0, lodash_1.isFunction)(this.options.serialize?.create) + ? this.options.serialize?.create + : modelType; + this.swaggerModels.update = (0, lodash_1.isFunction)(this.options.serialize?.update) + ? this.options.serialize?.update + : modelType; + this.swaggerModels.replace = (0, lodash_1.isFunction)(this.options.serialize?.replace) + ? this.options.serialize?.replace + : modelType; + this.swaggerModels.delete = (0, lodash_1.isFunction)(this.options.serialize?.delete) + ? this.options.serialize?.delete + : modelType; + this.swaggerModels.recover = (0, lodash_1.isFunction)(this.options.serialize?.recover) + ? this.options.serialize?.recover + : modelType; + helpers_1.Swagger.setExtraModels(this.swaggerModels); + } + createRoutes(routesSchema) { + const primaryParams = this.getPrimaryParams().filter((param) => !this.options.params?.[param]?.disabled); + routesSchema.forEach((route) => { + if (this.canCreateRoute(route.name)) { + // create base method + this[route.name](route.name); + route.enable = true; + // set metadata + this.setBaseRouteMeta(route.name); + } + if (route.withParams && primaryParams.length > 0) { + route.path = + route.path !== "/" + ? `${primaryParams + .map((param) => `/:${param}`) + .join("")}${route.path}` + : primaryParams + .map((param) => `/:${param}`) + .join(""); + } + }); + } + overrideRoutes(routesSchema) { + Object.getOwnPropertyNames(this.targetProto).forEach((name) => { + const override = helpers_1.R.getOverrideRoute(this.targetProto[name]); + const route = routesSchema.find((r) => (0, lodash_1.isEqual)(r.name, override)); + if (override && route && route.enable) { + // get metadata + const interceptors = helpers_1.R.getInterceptors(this.targetProto[name]); + const baseInterceptors = helpers_1.R.getInterceptors(this.targetProto[override]); + const baseAction = helpers_1.R.getAction(this.targetProto[override]); + const operation = helpers_1.Swagger.getOperation(this.targetProto[name]); + const baseOperation = helpers_1.Swagger.getOperation(this.targetProto[override]); + const swaggerParams = helpers_1.Swagger.getParams(this.targetProto[name]); + const baseSwaggerParams = helpers_1.Swagger.getParams(this.targetProto[override]); + const responseOk = helpers_1.Swagger.getResponseOk(this.targetProto[name]); + const baseResponseOk = helpers_1.Swagger.getResponseOk(this.targetProto[override]); + // set metadata + helpers_1.R.setInterceptors([...baseInterceptors, ...interceptors], this.targetProto[name]); + helpers_1.R.setAction(baseAction, this.targetProto[name]); + helpers_1.Swagger.setOperation({ ...baseOperation, ...operation }, this.targetProto[name]); + helpers_1.Swagger.setParams([...baseSwaggerParams, ...swaggerParams], this.targetProto[name]); + helpers_1.Swagger.setResponseOk({ ...baseResponseOk, ...responseOk }, this.targetProto[name]); + this.overrideParsedBodyDecorator(override, name); + // enable route + helpers_1.R.setRoute(route, this.targetProto[name]); + route.override = true; + } + }); + } + enableRoutes(routesSchema) { + routesSchema.forEach((route) => { + if (!route.override && route.enable) { + helpers_1.R.setRoute(route, this.targetProto[route.name]); + } + }); + } + overrideParsedBodyDecorator(override, name) { + const allowed = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + const withBody = (0, helpers_1.isIn)(override, allowed); + const parsedBody = helpers_1.R.getParsedBody(this.targetProto[name]); + if (withBody && parsedBody) { + const baseKey = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:1`; + const key = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:${parsedBody.index}`; + const baseRouteArgs = helpers_1.R.getRouteArgs(this.target, override); + const routeArgs = helpers_1.R.getRouteArgs(this.target, name); + const baseBodyArg = baseRouteArgs[baseKey]; + helpers_1.R.setRouteArgs({ + ...routeArgs, + [key]: { + ...baseBodyArg, + index: parsedBody.index, + }, + }, this.target, name); + /* istanbul ignore else */ + if ((0, lodash_1.isEqual)(override, "createManyBase")) { + const paramTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, name); + const metatype = paramTypes[parsedBody.index]; + const types = [String, Boolean, Number, Array, Object]; + const toCopy = (0, helpers_1.isIn)(metatype, types) || (0, lodash_1.isNil)(metatype); + if (toCopy) { + const baseParamTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, override); + const baseMetatype = baseParamTypes[1]; + paramTypes.splice(parsedBody.index, 1, baseMetatype); + helpers_1.R.setRouteArgsTypes(paramTypes, this.targetProto, name); + } + } + } + } + getPrimaryParams() { + return (0, lodash_1.keys)(this.options.params).filter((param) => this.options.params?.[param] && this.options.params[param].primary); + } + setBaseRouteMeta(name) { + this.setRouteArgs(name); + this.setRouteArgsTypes(name); + this.setInterceptors(name); + this.setAction(name); + this.setSwaggerOperation(name); + this.setSwaggerPathParams(name); + this.setSwaggerQueryParams(name); + this.setSwaggerResponseOk(name); + // set decorators after Swagger so metadata can be overwritten + this.setDecorators(name); + } + setRouteArgs(name) { + let rest = {}; + const routes = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + if ((0, helpers_1.isIn)(name, routes)) { + const action = this.routeNameAction(name); + const hasDto = !(0, lodash_1.isNil)((0, lodash_1.get)(this.options, `dto.${action}`)); + const { UPDATE, CREATE } = enums_1.CrudValidationGroups; + const groupEnum = (0, helpers_1.isIn)(name, [ + "updateOneBase", + "replaceOneBase", + ]) + ? UPDATE + : CREATE; + const group = !hasDto + ? groupEnum + : undefined; + rest = helpers_1.R.setBodyArg(1, [(0, helpers_1.getValidationPipe)(this.options, group)]); + } + helpers_1.R.setRouteArgs({ ...helpers_1.R.setParsedRequestArg(0), ...rest }, this.target, name); + } + setRouteArgsTypes(name) { + switch (true) { + case (0, lodash_1.isEqual)(name, "createManyBase"): + const bulkDto = (0, helpers_1.createBulkDto)(this.options); + helpers_1.R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name); + break; + case (0, helpers_1.isIn)(name, ["createOneBase", "updateOneBase", "replaceOneBase"]): + const action = this.routeNameAction(name); + const dto = (0, lodash_1.get)(this.options, `dto.${action}`, this.modelType); + helpers_1.R.setRouteArgsTypes([Object, dto], this.targetProto, name); + break; + default: + helpers_1.R.setRouteArgsTypes([Object], this.targetProto, name); + } + } + setInterceptors(name) { + const interceptors = (0, lodash_1.get)(this.options, `routes.${name}.interceptors`, []); + helpers_1.R.setInterceptors([ + interceptors_1.CrudRequestInterceptor, + interceptors_1.CrudResponseInterceptor, + ...((0, helpers_1.isArrayFull)(interceptors) ? interceptors : []), + ], this.targetProto[name]); + } + setDecorators(name) { + const decorators = (0, lodash_1.get)(this.options, `routes.${name}.decorators`, []); + helpers_1.R.setDecorators((0, helpers_1.isArrayFull)(decorators) ? decorators : [], this.targetProto, name); + } + setAction(name) { + helpers_1.R.setAction(this.actionsMap[name], this.targetProto[name]); + } + setSwaggerOperation(name) { + const summary = helpers_1.Swagger.operationsMap(this.modelName)[name]; + const operationId = name + this.targetProto.constructor.name + this.modelName; + helpers_1.Swagger.setOperation({ summary, operationId }, this.targetProto[name]); + } + setSwaggerPathParams(name) { + const metadata = helpers_1.Swagger.getParams(this.targetProto[name]); + const withoutPrimary = [ + "createManyBase", + "createOneBase", + "getManyBase", + ]; + const removePrimary = (0, helpers_1.isIn)(name, withoutPrimary); + const params = (0, lodash_1.keys)(this.options.params) + .filter((key) => !(0, lodash_1.get)(this.options, `params.${key}.disabled`)) + .filter((key) => !(removePrimary && (0, lodash_1.get)(this.options, `params.${key}.primary`))) + .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {}); + const pathParamsMeta = helpers_1.Swagger.createPathParamsMeta(params); + helpers_1.Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]); + } + setSwaggerQueryParams(name) { + const metadata = helpers_1.Swagger.getParams(this.targetProto[name]); + const queryParamsMeta = helpers_1.Swagger.createQueryParamsMeta(name, this.options); + helpers_1.Swagger.setParams([...metadata, ...queryParamsMeta], this.targetProto[name]); + } + setSwaggerResponseOk(name) { + const metadata = helpers_1.Swagger.getResponseOk(this.targetProto[name]); + const metadataToAdd = helpers_1.Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {}; + helpers_1.Swagger.setResponseOk({ ...metadata, ...metadataToAdd }, this.targetProto[name]); + } + routeNameAction(name) { + return name.split("OneBase")[0] || name.split("ManyBase")[0]; + } +} +exports.RoutesFactoryService = RoutesFactoryService; + + +/***/ }), +/* 43 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(44), exports); +tslib_1.__exportStar(__webpack_require__(46), exports); + + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudRequestInterceptor = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const exceptions_1 = __webpack_require__(24); +const services_1 = __webpack_require__(5); +const helpers_1 = __webpack_require__(10); +const lodash_1 = __webpack_require__(8); +const constants_1 = __webpack_require__(22); +const enums_1 = __webpack_require__(13); +const crud_base_interceptor_1 = __webpack_require__(45); +let CrudRequestInterceptor = exports.CrudRequestInterceptor = class CrudRequestInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + const req = context.switchToHttp().getRequest(); + try { + /* istanbul ignore else */ + if (!req[constants_1.PARSED_CRUD_REQUEST_KEY]) { + const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context); + const parser = services_1.QueryParserService.create(); + parser.parseQuery(req.query, crudOptions.operators?.custom); + let auth = null; + if (!(0, lodash_1.isNil)(ctrlOptions)) { + const search = this.getSearch(parser, crudOptions, action, req.params); + auth = this.getAuth(parser, crudOptions, req); + parser.search = auth.or + ? { $or: [auth.or, { $and: search }] } + : { $and: [auth.filter, ...search] }; + } + else { + parser.search = { $and: this.getSearch(parser, crudOptions, action) }; + } + req[constants_1.PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(parser, crudOptions, auth?.auth); + } + return next.handle(); + } + catch (error) { + throw error instanceof exceptions_1.RequestQueryException + ? new common_1.BadRequestException(error.message) + : error; + } + } + getCrudRequest(parser, crudOptions, auth) { + const parsed = parser.getParsed(); + const { query, routes, params, operators } = crudOptions; + return { + parsed, + options: { + query, + routes, + params, + operators, + }, + auth, + }; + } + getSearch(parser, crudOptions, action, params) { + // params condition + const paramsSearch = this.getParamsSearch(parser, crudOptions, params); + // if `CrudOptions.query.filter` is a function then return transformed query search conditions + if ((0, lodash_1.isFunction)(crudOptions.query?.filter)) { + const filterCond = (crudOptions.query?.filter)(parser.search, action === enums_1.CrudActions.ReadAll) || {}; + return [...paramsSearch, filterCond]; + } + // if `CrudOptions.query.filter` is array or search condition type + const optionsFilter = (0, helpers_1.isArrayFull)(crudOptions.query?.filter) + ? (crudOptions.query?.filter).map(parser.convertFilterToSearch) + : [crudOptions.query?.filter || {}]; + let search = []; + if (parser.search) { + search = [parser.search]; + } + else if (parser.filter.length > 0 && parser.or.length > 0) { + search = + parser.filter.length === 1 && parser.or.length === 1 + ? [ + { + $or: [ + parser.convertFilterToSearch(parser.filter[0]), + parser.convertFilterToSearch(parser.or[0]), + ], + }, + ] + : [ + { + $or: [ + { $and: parser.filter.map(parser.convertFilterToSearch) }, + { $and: parser.or.map(parser.convertFilterToSearch) }, + ], + }, + ]; + } + else if (parser.filter.length > 0) { + search = parser.filter.map(parser.convertFilterToSearch); + } + else { + if (parser.or.length > 0) { + search = + parser.or.length === 1 + ? [parser.convertFilterToSearch(parser.or[0])] + : [ + { + $or: parser.or.map(parser.convertFilterToSearch), + }, + ]; + } + } + return [...paramsSearch, ...optionsFilter, ...search]; + } + getParamsSearch(parser, crudOptions, params) { + if (params) { + parser.parseParams(params, crudOptions.params); + return (0, helpers_1.isArrayFull)(parser.paramsFilter) + ? // @ts-ignore + parser.paramsFilter.map(parser.convertFilterToSearch) + : []; + } + return []; + } + getAuth(parser, crudOptions, req) { + const auth = {}; + /* istanbul ignore else */ + if (crudOptions.auth) { + const userOrRequest = crudOptions.auth.property + ? req[crudOptions.auth.property] + : req; + if (crudOptions.auth.property && req[crudOptions.auth.property]) { + if (typeof req[crudOptions.auth.property] === "object") { + if (Object.keys(req[crudOptions.auth.property]).length > 0) { + auth.auth = req[crudOptions.auth.property]; + } + } + else { + auth.auth = req[crudOptions.auth.property]; + } + } + if ((0, lodash_1.isFunction)(crudOptions.auth.or)) { + auth.or = crudOptions.auth.or(userOrRequest); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.filter) && !auth.or) { + auth.filter = crudOptions.auth.filter(userOrRequest) || {}; + } + if ((0, lodash_1.isFunction)(crudOptions.auth.persist)) { + parser.setAuthPersist(crudOptions.auth.persist(userOrRequest)); + } + const options = {}; + if ((0, lodash_1.isFunction)(crudOptions.auth.classTransformOptions)) { + Object.assign(options, crudOptions.auth.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.groups)) { + options.groups = crudOptions.auth.groups(userOrRequest); + } + parser.setClassTransformOptions(options); + } + return auth; + } +}; +exports.CrudRequestInterceptor = CrudRequestInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudRequestInterceptor); + + +/***/ }), +/* 45 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudBaseInterceptor = void 0; +const helpers_1 = __webpack_require__(10); +class CrudBaseInterceptor { + getCrudInfo(context) { + const ctrl = context.getClass(); + const handler = context.getHandler(); + const ctrlOptions = helpers_1.R.getCrudOptions(ctrl); + const crudOptions = ctrlOptions + ? ctrlOptions + : { + query: {}, + routes: {}, + params: {}, + operators: {}, + }; + const action = helpers_1.R.getAction(handler); + return { ctrlOptions, crudOptions, action }; + } +} +exports.CrudBaseInterceptor = CrudBaseInterceptor; + + +/***/ }), +/* 46 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudResponseInterceptor = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const lodash_1 = __webpack_require__(8); +const helpers_1 = __webpack_require__(10); +const class_transformer_1 = __webpack_require__(18); +const operators_1 = __webpack_require__(47); +const enums_1 = __webpack_require__(13); +const crud_base_interceptor_1 = __webpack_require__(45); +const class_validator_1 = __webpack_require__(17); +const actionToDtoNameMap = { + [enums_1.CrudActions.ReadAll]: "getMany", + [enums_1.CrudActions.ReadOne]: "get", + [enums_1.CrudActions.CreateMany]: "createMany", + [enums_1.CrudActions.CreateOne]: "create", + [enums_1.CrudActions.UpdateOne]: "update", + [enums_1.CrudActions.ReplaceOne]: "replace", + [enums_1.CrudActions.DeleteAll]: "delete", + [enums_1.CrudActions.DeleteOne]: "delete", + [enums_1.CrudActions.RecoverOne]: "recover", +}; +let CrudResponseInterceptor = exports.CrudResponseInterceptor = class CrudResponseInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + return next.handle().pipe((0, operators_1.map)((data) => this.serialize(context, data))); + } + transform(dto, data, options) { + if (!(0, class_validator_1.isObject)(data) || (0, helpers_1.isFalse)(dto)) { + return data; + } + if (!(0, lodash_1.isFunction)(dto)) { + return data.constructor !== Object + ? (0, class_transformer_1.instanceToPlain)(data, options) + : data; + } + return data instanceof dto + ? (0, class_transformer_1.instanceToPlain)(data, options) + : /* @ts-ignore */ + (0, class_transformer_1.instanceToPlain)(Object.assign(new dto(), data), options); + } + serialize(context, data) { + const req = context.switchToHttp().getRequest(); + const { crudOptions, action } = this.getCrudInfo(context); + const { serialize } = crudOptions; + /* @ts-ignore */ + const dto = serialize[actionToDtoNameMap[action]]; + const isArray = Array.isArray(data); + const options = {}; + if ((0, lodash_1.isFunction)(crudOptions.auth?.classTransformOptions)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + Object.assign(options, crudOptions.auth?.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)(crudOptions.auth?.groups)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + options.groups = crudOptions.auth?.groups(userOrRequest); + } + switch (action) { + case enums_1.CrudActions.ReadAll: + return isArray + ? data.map((item) => this.transform(serialize?.get, item, options)) + : this.transform(dto, data, options); + case enums_1.CrudActions.CreateMany: + return isArray + ? data.map((item) => this.transform(dto, item, options)) + : this.transform(dto, data, options); + default: + return this.transform(dto, data, options); + } + } +}; +exports.CrudResponseInterceptor = CrudResponseInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudResponseInterceptor); + + +/***/ }), +/* 47 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("rxjs/operators"); + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TypeOrmCrudService = void 0; +const o0_1 = __webpack_require__(49); +const class_transformer_1 = __webpack_require__(18); +const lodash_1 = __webpack_require__(8); +const typeorm_1 = __webpack_require__(50); +const helpers_1 = __webpack_require__(10); +const types_1 = __webpack_require__(26); +const abstract_crud_service_1 = __webpack_require__(6); +class TypeOrmCrudService extends abstract_crud_service_1.CrudService { + constructor(repo) { + super(); + this.repo = repo; + this.entityHasDeleteColumn = false; + this.entityColumnsHash = {}; + this.entityRelationsHash = new Map(); + this.sqlInjectionRegEx = [ + /(%27)|(')|(--)|(%23)|(#)/gi, + /((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))/gi, + /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi, + /((%27)|('))union/gi, + ]; + this.dbName = this.repo.metadata.connection.options.type; + this.onInitMapEntityColumns(); + } + get findOne() { + return this.repo.findOne.bind(this.repo); + } + get findOneBy() { + return this.repo.findOneBy.bind(this.repo); + } + get find() { + return this.repo.find.bind(this.repo); + } + get count() { + return this.repo.count.bind(this.repo); + } + get entityType() { + return this.repo.target; + } + get alias() { + return this.repo.metadata.targetName; + } + /** + * Get many + * @param req + */ + async getMany(req) { + const { parsed, options } = req; + const builder = await this.createBuilder(parsed, options); + return this.doGetMany(builder, parsed, options); + } + /** + * Get one + * @param req + */ + async getOne(req) { + return this.getOneOrFail(req); + } + /** + * Create one + * @param req + * @param dto + */ + async createOne(req, dto) { + // @ts-ignore + const { returnShallow } = req.options.routes?.createOneBase; + const entity = this.prepareEntityBeforeSave(dto, req.parsed); + /* istanbul ignore if */ + if (!entity) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const saved = await this.repo.save(entity); + if (returnShallow) { + return saved; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + if ((0, lodash_1.isEmpty)(primaryParams) && + primaryParams.some((p) => (0, lodash_1.isNil)(saved[p]))) { + return saved; + } + else { + req.parsed.search = primaryParams.reduce((acc, p) => ({ ...acc, [p]: saved[p] }), {}); + return this.getOneOrFail(req); + } + } + } + /** + * Create many + * @param req + * @param dto + */ + async createMany(req, dto) { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto) || !(0, helpers_1.isArrayFull)(dto.bulk)) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const bulk = dto.bulk + .map((one) => this.prepareEntityBeforeSave(one, req.parsed)) + .filter((d) => !(0, lodash_1.isUndefined)(d)); + /* istanbul ignore if */ + if (!bulk.length) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + return this.repo.save(bulk, { chunk: 50 }); + } + /** + * Update one + * @param req + * @param dto + */ + async updateOne(req, dto) { + const { allowParamsOverride, returnShallow } = (req.options.routes?.updateOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while updating + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, returnShallow); + const toSave = !allowParamsOverride + ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist } + : { ...found, ...dto, ...req.parsed.authPersist }; + const updated = await this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return updated; + } + else { + req.parsed.paramsFilter.forEach((filter) => { + // @ts-ignore + filter.value = updated[filter.field]; + }); + return this.getOneOrFail(req); + } + } + /** + * Recover one + * @param req + * @param dto + */ + async recoverOne(req) { + // disable cache while recovering + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, false, true); + return this.repo.recover(found); + } + /** + * Replace one + * @param req + * @param dto + */ + async replaceOne(req, dto) { + const { allowParamsOverride, returnShallow } = (req.options.routes?.replaceOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while replacing + // @ts-ignore + req.options.query.cache = false; + const [_, found] = await (0, o0_1.oO)(this.getOneOrFail(req, returnShallow)); + const toSave = !allowParamsOverride + ? { + ...(found || {}), + ...dto, + ...paramsFilters, + ...req.parsed.authPersist, + } + : { + ...(found || {}), + ...paramsFilters, + ...dto, + ...req.parsed.authPersist, + }; + const replaced = await this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return replaced; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + /* istanbul ignore if */ + if (!primaryParams.length) { + return replaced; + } + req.parsed.search = primaryParams.reduce((acc, p) => ({ + ...acc, + // @ts-ignore + [p]: replaced[p], + }), {}); + return this.getOneOrFail(req); + } + } + /** + * Delete one + * @param req + */ + async deleteOne(req) { + const { returnDeleted } = (req.options.routes?.deleteOneBase); + // disable cache while deleting + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, returnDeleted); + const toReturn = returnDeleted + ? (0, class_transformer_1.plainToInstance)(this.entityType, { ...found }, req.parsed.classTransformOptions) + : undefined; + const deleted = req.options.query?.softDelete === true + ? await this.repo.softRemove(found) + : await this.repo.remove(found); + return toReturn; + } + getParamFilters(parsed) { + const filters = {}; + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + filters[filter.field] = filter.value; + } + } + return filters; + } + /** + * Create TypeOrm QueryBuilder + * @param parsed + * @param options + * @param many + * @param withDeleted + */ + async createBuilder(parsed, options, many = true, withDeleted = false) { + // create query builder + const builder = this.repo.createQueryBuilder(this.alias); + // get select fields + const select = this.getSelect(parsed, options.query || {}); + // select fields + builder.select(select); + // if soft deleted is enabled add where statement to filter deleted records + if (options.query?.softDelete) { + if (parsed.includeDeleted === 1 || withDeleted) { + builder.withDeleted(); + } + } + // search + this.setSearchCondition(builder, parsed.search || {}, options.operators?.custom || {}); + // set joins + const joinOptions = options.query?.join || {}; + const allowedJoins = Object.keys(joinOptions); + if (!(0, lodash_1.isEmpty)(allowedJoins)) { + const eagerJoins = {}; + for (let i = 0; i < allowedJoins.length; i++) { + if (joinOptions[allowedJoins[i]].eager) { + const cond = parsed.join.find((j) => j && j.field === allowedJoins[i]) || { + field: allowedJoins[i], + }; + this.setJoin(cond, joinOptions, builder); + eagerJoins[allowedJoins[i]] = true; + } + } + if ((0, helpers_1.isArrayFull)(parsed.join)) { + for (let i = 0; i < parsed.join.length; i++) { + if (!eagerJoins[parsed.join[i].field]) { + this.setJoin(parsed.join[i], joinOptions, builder); + } + } + } + } + if (many) { + // set sort (order by) + const sort = this.getSort(parsed, options.query || {}); + builder.orderBy(sort); + // set take + const take = this.getTake(parsed, options.query || {}); + if (take && isFinite(take)) { + builder.take(take); + } + // set skip + const skip = this.getSkip(parsed, take || 0); + if (skip && isFinite(skip)) { + builder.skip(skip); + } + } + // set cache + if (options.query?.cache && parsed.cache !== 0) { + builder.cache(options.query.cache); + } + return builder; + } + /** + * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount` + * helpful for overriding `TypeOrmCrudService#getMany` + * @see getMany + * @see SelectQueryBuilder#getMany + * @see SelectQueryBuilder#getManyAndCount + * @param builder + * @param query + * @param options + */ + async doGetMany(builder, query, options) { + if (this.decidePagination(query, options)) { + const [data, total] = await builder.getManyAndCount(); + const limit = builder.expressionMap.take; + const offset = builder.expressionMap.skip; + return this.createPageInfo(data, total, limit || total, offset || 0); + } + return builder.getMany(); + } + onInitMapEntityColumns() { + this.entityColumns = this.repo.metadata.columns.map((prop) => { + // In case column is an embedded, use the propertyPath to get complete path + if (prop.embeddedMetadata) { + this.entityColumnsHash[prop.propertyPath] = prop.databasePath; + return prop.propertyPath; + } + this.entityColumnsHash[prop.propertyName] = prop.databasePath; + return prop.propertyName; + }); + this.entityPrimaryColumns = this.repo.metadata.columns + .filter((prop) => prop.isPrimary) + .map((prop) => prop.propertyName); + this.entityHasDeleteColumn = this.repo.metadata.columns.some((prop) => !(0, lodash_1.isEmpty)(prop.isDeleteDate)); + } + async getOneOrFail(req, shallow = false, withDeleted = false) { + const { parsed, options } = req; + const builder = shallow + ? this.repo.createQueryBuilder(this.alias) + : await this.createBuilder(parsed, options, true, withDeleted); + if (shallow) { + this.setSearchCondition(builder, parsed.search || null, options.operators?.custom); + } + const found = withDeleted + ? await builder.withDeleted().getOne() + : await builder.getOne(); + if (!found) { + this.throwNotFoundException(this.alias); + } + return found; + } + prepareEntityBeforeSave(dto, parsed) { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto)) { + return undefined; + } + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + dto[filter.field] = filter.value; + } + } + /* istanbul ignore if */ + if ((0, lodash_1.isEmpty)(Object.keys(dto))) { + return undefined; + } + return dto instanceof this.entityType + ? Object.assign(dto, parsed.authPersist) + : (0, class_transformer_1.plainToInstance)(this.entityType, { ...dto, ...parsed.authPersist }, parsed.classTransformOptions); + } + getAllowedColumns(columns, options) { + return (!options.exclude || !options.exclude.length) && + (!options.allow || !options.allow.length) + ? columns + : columns.filter((column) => (options.exclude && options.exclude.length + ? !options.exclude.some((col) => col === column) + : true) && + (options.allow && options.allow.length + ? options.allow.some((col) => col === column) + : true)); + } + getEntityColumns(entityMetadata) { + const columns = entityMetadata.columns.map((prop) => prop.propertyPath) || + []; + const primaryColumns = entityMetadata.primaryColumns.map((prop) => prop.propertyPath) || []; + return { columns, primaryColumns }; + } + getRelationMetadata(field, options) { + try { + let allowedRelation; + let nested = false; + if (this.entityRelationsHash.has(field)) { + allowedRelation = this.entityRelationsHash.get(field); + } + else { + const fields = field.split("."); + let relationMetadata = null; + let name; + let path; + let parentPath; + if (fields.length === 1) { + const found = this.repo.metadata.relations.find((one) => one.propertyName === fields[0]); + if (found) { + name = fields[0]; + path = `${this.alias}.${fields[0]}`; + relationMetadata = found.inverseEntityMetadata; + } + } + else { + nested = true; + parentPath = ""; + const reduced = fields.reduce( + // @ts-ignore + (res, propertyName, i) => { + const found = res.relations?.length + ? res.relations.find((one) => one.propertyName === propertyName) + : null; + relationMetadata = found ? found.inverseEntityMetadata : null; + const relations = relationMetadata + ? relationMetadata.relations + : []; + name = propertyName; + if (i !== fields.length - 1) { + parentPath = !parentPath + ? propertyName + : `${parentPath}.${propertyName}`; + } + return { + relations, + relationMetadata, + }; + }, { + relations: this.repo.metadata.relations, + relationMetadata: null, + }); + // @ts-ignore + relationMetadata = reduced.relationMetadata; + } + // @ts-ignore + if (relationMetadata) { + const { columns, primaryColumns } = this.getEntityColumns(relationMetadata); + if (!path && parentPath) { + const parentAllowedRelation = this.entityRelationsHash.get(parentPath); + if (parentAllowedRelation) { + path = parentAllowedRelation.alias + ? `${parentAllowedRelation.alias}.${name}` + : field; + } + } + allowedRelation = { + alias: options.alias, + name, + path, + columns, + nested, + primaryColumns, + }; + } + } + if (allowedRelation) { + const allowedColumns = this.getAllowedColumns(allowedRelation.columns, options); + const toSave = { + ...allowedRelation, + allowedColumns, + }; + this.entityRelationsHash.set(field, toSave); + if (options.alias) { + this.entityRelationsHash.set(options.alias, toSave); + } + return toSave; + } + } + catch (_) { + return null; + } + return null; + } + setJoin(cond, joinOptions, builder) { + const options = joinOptions[cond.field] ?? null; + if (!options) { + console.warn('relation "' + + cond.field + + '" not found in allowed relations in the controller. Did you mean to use one of these? [' + + Object.keys(joinOptions).join(", ") + + "]"); + return; + } + const allowedRelation = this.getRelationMetadata(cond.field, options); + if (!allowedRelation) { + return; + } + const relationType = options.required ? "innerJoin" : "leftJoin"; + const alias = options.alias ? options.alias : allowedRelation.name; + builder[relationType](allowedRelation.path, alias); + if (options.select !== false) { + const columns = (0, helpers_1.isArrayFull)(cond.select) + ? cond.select?.filter((column) => allowedRelation.allowedColumns.some((allowed) => allowed === column)) || [] + : allowedRelation.allowedColumns || []; + const select = [ + ...allowedRelation.primaryColumns, + // @ts-ignore + ...((0, helpers_1.isArrayFull)(options.persist) ? options.persist : []), + ...columns, + ].map((col) => `${alias}.${col}`); + builder.addSelect(Array.from(new Set(select))); + } + } + setAndWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `andWhere${i}`, customOperators); + builder.andWhere(str, params); + } + setOrWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `orWhere${i}`, customOperators); + builder.orWhere(str, params); + } + setSearchCondition(builder, search, customOperators, condition = "$and") { + if ((0, helpers_1.isObject)(search)) { + const keys = Object.keys(search); + if (keys.length) { + // search: {$ne: [...]} + // @ts-ignore + if ((0, helpers_1.isArrayFull)(search?.$ne)) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + // @ts-ignore + search.$not.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + }), true); + } + // search: {$and: [...], ...} + else if ((0, helpers_1.isArrayFull)(search?.$and)) { + // search: {$and: [{}]} + if (search?.$and?.length === 1) { + this.setSearchCondition(builder, search.$and[0], customOperators, condition); + } + // search: {$and: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + search?.$and?.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + })); + } + } + // search: {$or: [...], ...} + else if ((0, helpers_1.isArrayFull)(search?.$or)) { + // search: {$or: [...]} + if (keys.length === 1) { + // search: {$or: [{}]} + if (search?.$or?.length === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, condition); + } + // search: {$or: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + search?.$or?.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$or"); + }); + })); + } + } + // search: {$or: [...], foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + if (field !== "$or") { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + } + else { + if (search?.$or?.length === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, "$and"); + } + else { + this.builderAddBrackets(qb, "$and", new typeorm_1.Brackets((qb2) => { + search?.$or?.forEach((item) => { + this.setSearchCondition(qb2, item, customOperators, "$or"); + }); + })); + } + } + }); + })); + } + } + // search: {...} + else { + // search: {foo} + if (keys.length === 1) { + const field = keys[0]; + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(builder, condition, field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(builder, condition, field, value, customOperators); + } + } + // search: {foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + }); + })); + } + } + } + } + } + builderAddBrackets(builder, condition, brackets, negated = false) { + if (negated) { + // No builtin support for not, this is copied from QueryBuilder.getWhereCondition + const whereQueryBuilder = builder.createQueryBuilder(); + whereQueryBuilder.parentQueryBuilder = builder; + whereQueryBuilder.expressionMap.mainAlias = + builder.expressionMap.mainAlias; + whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = + builder.expressionMap.aliasNamePrefixingEnabled; + whereQueryBuilder.expressionMap.parameters = + builder.expressionMap.parameters; + whereQueryBuilder.expressionMap.nativeParameters = + builder.expressionMap.nativeParameters; + whereQueryBuilder.expressionMap.wheres = []; + brackets.whereFactory(whereQueryBuilder); + const wheres = { + operator: "brackets", + condition: whereQueryBuilder.expressionMap.wheres, + }; + const type = condition === "$and" ? "and" : condition === "$or" ? "or" : "simple"; + builder.expressionMap.wheres.push({ + type, + condition: { + operator: "not", + condition: wheres, + }, + }); + } + else if (condition === "$and") { + builder.andWhere(brackets); + } + else { + builder.orWhere(brackets); + } + } + builderSetWhere(builder, condition, field, value, customOperators, operator = "$eq") { + const time = process.hrtime(); + // const index = `${field}${time[0]}${time[1]}`; + /** + * Correcting the Error [Invalid Column Name] or [ syntax error at or near \":\".] + * When using filter or search in relational/nested entities. + */ + const safeFieldName = field.replace(/./g, "_"); + const index = `${safeFieldName}${time[0]}${time[1]}`; + const args = [ + { field, operator: (0, lodash_1.isNull)(value) ? "$isnull" : operator, value }, + index, + builder, + customOperators, + ]; + const fn = condition === "$and" ? this.setAndWhere : this.setOrWhere; + // @ts-ignore + fn.apply(this, args); + } + setSearchFieldObjectCondition(builder, condition, field, object, customOperators) { + if ((0, helpers_1.isObject)(object)) { + const operators = Object.keys(object); + if (operators.length === 1) { + const operator = operators[0]; + const value = object[operator]; + if ((0, helpers_1.isObject)(object.$or)) { + const orKeys = Object.keys(object.$or); + this.setSearchFieldObjectCondition(builder, orKeys.length === 1 ? condition : "$or", field, object.$or, customOperators); + } + else { + this.builderSetWhere(builder, condition, field, value, customOperators, operator); + } + } + else { + if (operators.length > 1) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + operators.forEach((operator) => { + const value = object[operator]; + if (operator !== "$or") { + this.builderSetWhere(qb, condition, field, value, customOperators, operator); + } + else { + const orKeys = Object.keys(object.$or); + if (orKeys.length === 1) { + this.setSearchFieldObjectCondition(qb, condition, field, object.$or, customOperators); + } + else { + this.builderAddBrackets(qb, condition, new typeorm_1.Brackets((qb2) => { + this.setSearchFieldObjectCondition(qb2, "$or", field, object.$or, customOperators); + })); + } + } + }); + })); + } + } + } + } + getSelect(query, options) { + const allowed = this.getAllowedColumns(this.entityColumns || [], options); + const columns = query.fields && query.fields.length + ? query.fields.filter((field) => allowed.some((col) => field === col)) + : allowed; + return [ + ...new Set([ + ...(options.persist && options.persist.length ? options.persist : []), + ...columns, + ...(this.entityPrimaryColumns || []), + ]), + ].map((col) => `${this.alias}.${col}`); + } + getSort(query, options) { + return query.sort && query.sort.length + ? this.mapSort(query.sort) + : options.sort && options.sort.length + ? this.mapSort(options.sort) + : {}; + } + getFieldWithAlias(field, sort = false) { + const i = ["mysql", "mariadb"].includes(this.dbName) ? "`" : '"'; + const cols = field.split("."); + switch (cols.length) { + case 1: + if (sort) { + return `${this.alias}.${field}`; + } + const dbColName = this.entityColumnsHash[field] !== field + ? this.entityColumnsHash[field] + : field; + return `${i}${this.alias}${i}.${i}${dbColName}${i}`; + case 2: + return field; + default: + return cols.slice(cols.length - 2, cols.length).join("."); + } + } + mapSort(sort) { + const params = {}; + for (let i = 0; i < sort.length; i++) { + const field = this.getFieldWithAlias(sort[i].field, true); + const checkedFiled = this.checkSqlInjection(field); + params[checkedFiled] = sort[i].order; + } + return params; + } + mapOperatorsToQuery(cond, param, customOperators = {}) { + const field = this.getFieldWithAlias(cond.field); + const likeOperator = this.dbName === "postgres" ? "ILIKE" : "LIKE"; + let str; + let params; + if (cond.operator[0] !== "$") { + cond.operator = ("$" + cond.operator); + } + switch (cond.operator) { + case types_1.CondOperator.EQUALS: + str = `${field} = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS: + str = `${field} != :${param}`; + break; + case types_1.CondOperator.GREATER_THAN: + str = `${field} > :${param}`; + break; + case types_1.CondOperator.LOWER_THAN: + str = `${field} < :${param}`; + break; + case types_1.CondOperator.GREATER_THAN_EQUALS: + str = `${field} >= :${param}`; + break; + case types_1.CondOperator.LOWER_THAN_EQUALS: + str = `${field} <= :${param}`; + break; + case types_1.CondOperator.STARTS: + str = `${field} LIKE :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES: + str = `${field} NOT LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN: + this.checkFilterIsArray(cond); + str = `${field} IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN: + this.checkFilterIsArray(cond); + str = `${field} NOT IN (:...${param})`; + break; + case types_1.CondOperator.IS_NULL: + str = `${field} IS NULL`; + params = {}; + break; + case types_1.CondOperator.NOT_NULL: + str = `${field} IS NOT NULL`; + params = {}; + break; + case types_1.CondOperator.BETWEEN: + this.checkFilterIsArray(cond, cond.value.length !== 2); + str = `${field} BETWEEN :${param}0 AND :${param}1`; + params = { + [`${param}0`]: cond.value[0], + [`${param}1`]: cond.value[1], + }; + break; + // case insensitive + case types_1.CondOperator.EQUALS_LOW: + str = `LOWER(${field}) = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS_LOW: + str = `LOWER(${field}) != :${param}`; + break; + case types_1.CondOperator.STARTS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES_LOW: + str = `LOWER(${field}) NOT ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) NOT IN (:...${param})`; + break; + default: + break; + } + if (typeof params === "undefined") { + params = { [param]: cond.value }; + } + return { str: str, params }; + } + checkFilterIsArray(cond, withLength) { + /* istanbul ignore if */ + if (!Array.isArray(cond.value) || + !cond.value.length || + (!(0, lodash_1.isNil)(withLength) ? withLength : false)) { + this.throwBadRequestException(`Invalid column '${cond.field}' value`); + } + } + checkSqlInjection(field) { + if (this.sqlInjectionRegEx.length) { + for (let i = 0; i < this.sqlInjectionRegEx.length; i++) { + if (this.sqlInjectionRegEx[i].test(field)) { + this.throwBadRequestException(`SQL injection detected: "${field}"`); + } + } + } + return field; + } +} +exports.TypeOrmCrudService = TypeOrmCrudService; + + +/***/ }), +/* 49 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@zmotivat0r/o0"); + +/***/ }), +/* 50 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("typeorm"); + +/***/ }), +/* 51 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudAuth = void 0; +const helpers_1 = __webpack_require__(10); +const CrudAuth = (options) => (target) => { + helpers_1.R.setCrudAuthOptions(options, target); +}; +exports.CrudAuth = CrudAuth; + + +/***/ }), +/* 52 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Override = void 0; +const constants_1 = __webpack_require__(22); +const Override = (name) => (target, key, descriptor) => { + Reflect.defineMetadata(constants_1.OVERRIDE_METHOD_METADATA, name || `${key}Base`, target[key]); + return descriptor; +}; +exports.Override = Override; + + +/***/ }), +/* 53 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ParsedRequest = void 0; +const common_1 = __webpack_require__(7); +const constants_1 = __webpack_require__(22); +const helpers_1 = __webpack_require__(10); +exports.ParsedRequest = (0, common_1.createParamDecorator)((_, ctx) => { + return helpers_1.R.getContextRequest(ctx)[constants_1.PARSED_CRUD_REQUEST_KEY]; +}); + + +/***/ }), +/* 54 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ParsedBody = void 0; +const constants_1 = __webpack_require__(22); +const ParsedBody = () => (target, key, index) => { + Reflect.defineMetadata(constants_1.PARSED_BODY_METADATA, { index }, target[key]); +}; +exports.ParsedBody = ParsedBody; + + +/***/ }), +/* 55 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getAction = exports.getFeature = exports.Action = exports.Feature = void 0; +const common_1 = __webpack_require__(7); +const constants_1 = __webpack_require__(22); +const Feature = (name) => (0, common_1.SetMetadata)(constants_1.FEATURE_NAME_METADATA, name); +exports.Feature = Feature; +const Action = (name) => (0, common_1.SetMetadata)(constants_1.ACTION_NAME_METADATA, name); +exports.Action = Action; +const getFeature = (target) => Reflect.getMetadata(constants_1.FEATURE_NAME_METADATA, target); +exports.getFeature = getFeature; +const getAction = (target) => Reflect.getMetadata(constants_1.ACTION_NAME_METADATA, target); +exports.getAction = getAction; + + +/***/ }), +/* 56 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(57), exports); +tslib_1.__exportStar(__webpack_require__(58), exports); +tslib_1.__exportStar(__webpack_require__(59), exports); +tslib_1.__exportStar(__webpack_require__(60), exports); +tslib_1.__exportStar(__webpack_require__(61), exports); +tslib_1.__exportStar(__webpack_require__(62), exports); +tslib_1.__exportStar(__webpack_require__(63), exports); +tslib_1.__exportStar(__webpack_require__(64), exports); +tslib_1.__exportStar(__webpack_require__(65), exports); +tslib_1.__exportStar(__webpack_require__(66), exports); +tslib_1.__exportStar(__webpack_require__(67), exports); +tslib_1.__exportStar(__webpack_require__(68), exports); +tslib_1.__exportStar(__webpack_require__(69), exports); +tslib_1.__exportStar(__webpack_require__(70), exports); +tslib_1.__exportStar(__webpack_require__(71), exports); +tslib_1.__exportStar(__webpack_require__(72), exports); +tslib_1.__exportStar(__webpack_require__(73), exports); +tslib_1.__exportStar(__webpack_require__(74), exports); + + +/***/ }), +/* 57 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 58 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 59 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 60 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 61 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 62 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 63 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 64 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 65 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 66 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 67 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 68 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 69 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 70 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 71 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 72 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 73 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 74 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 75 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/core"); + +/***/ }), +/* 76 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const user_email_already_exists_constraint_1 = __webpack_require__(78); +const user_controller_1 = __webpack_require__(87); +const user_entity_1 = __webpack_require__(80); +const user_service_1 = __webpack_require__(79); +let UserModule = exports.UserModule = class UserModule { +}; +exports.UserModule = UserModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([user_entity_1.User])], + controllers: [user_controller_1.UserController], + providers: [user_service_1.UserService, user_email_already_exists_constraint_1.IsEmailUserAlreadyExistConstraint], + exports: [user_service_1.UserService, user_email_already_exists_constraint_1.IsEmailUserAlreadyExistConstraint], + }) +], UserModule); + + +/***/ }), +/* 77 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/typeorm"); + +/***/ }), +/* 78 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.IsEmailUserAlreadyExist = exports.IsEmailUserAlreadyExistConstraint = void 0; +const tslib_1 = __webpack_require__(2); +/* eslint-disable @typescript-eslint/no-explicit-any, import/named */ +const common_1 = __webpack_require__(7); +const class_validator_1 = __webpack_require__(17); +const user_service_1 = __webpack_require__(79); +let IsEmailUserAlreadyExistConstraint = exports.IsEmailUserAlreadyExistConstraint = class IsEmailUserAlreadyExistConstraint { + constructor(userService) { + this.userService = userService; + } + async validate(text) { + return !(await this.userService.userExists({ email: text })); + } +}; +exports.IsEmailUserAlreadyExistConstraint = IsEmailUserAlreadyExistConstraint = tslib_1.__decorate([ + (0, class_validator_1.ValidatorConstraint)({ name: "isEmailUserAlreadyExist", async: true }), + (0, common_1.Injectable)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object]) +], IsEmailUserAlreadyExistConstraint); +function IsEmailUserAlreadyExist(validationOptions) { + return function (object, propertyName) { + (0, class_validator_1.registerDecorator)({ + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: [], + validator: IsEmailUserAlreadyExistConstraint, + }); + }; +} +exports.IsEmailUserAlreadyExist = IsEmailUserAlreadyExist; + + +/***/ }), +/* 79 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const user_entity_1 = __webpack_require__(80); +let UserService = exports.UserService = class UserService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } + async userExists(dto) { + const user = await this.repo.findOneBy(dto); + return Boolean(user); + } +}; +exports.UserService = UserService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(user_entity_1.User)), + tslib_1.__metadata("design:paramtypes", [Object]) +], UserService); + + +/***/ }), +/* 80 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b, _c, _d, _e, _f; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.User = void 0; +const tslib_1 = __webpack_require__(2); +const bcrypt = tslib_1.__importStar(__webpack_require__(81)); +const class_transformer_1 = __webpack_require__(18); +const typeorm_1 = __webpack_require__(50); +const address_entity_1 = __webpack_require__(82); +const contract_entity_1 = __webpack_require__(85); +const phone_entity_1 = __webpack_require__(86); +let User = exports.User = class User extends typeorm_1.BaseEntity { + async hashPassword() { + this.password = await bcrypt.hash(this.password, 10); + } + loadTempPassword() { + this.tempPassword = this.password; + } + async encryptPassword() { + if (this.tempPassword !== null && this.tempPassword !== this.password) { + try { + await this.hashPassword(); + // After changed, temp password should be reassigned to new one, so if we try to save again, + // it does not change the password wrongly + this.tempPassword = this.password; + } + catch (error) { + if (error instanceof Error) { + throw new Error("Unable to encrypt password: " + error.message); + } + } + } + } +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)("uuid"), + tslib_1.__metadata("design:type", String) +], User.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ unique: true, length: 125 }), + tslib_1.__metadata("design:type", String) +], User.prototype, "email", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "timestamp", nullable: true }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], User.prototype, "emailConfirmedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: true }), + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", String) +], User.prototype, "emailToken", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", length: 80 }), + (0, class_transformer_1.Exclude)({ toClassOnly: false, toPlainOnly: true }), + tslib_1.__metadata("design:type", String) +], User.prototype, "password", void 0); +tslib_1.__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: "timestamp" }), + tslib_1.__metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], User.prototype, "createdAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.UpdateDateColumn)({ type: "timestamp" }), + tslib_1.__metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) +], User.prototype, "updatedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => phone_entity_1.Phone, (phone) => phone.user, { + cascade: true, + onDelete: "CASCADE", + }), + tslib_1.__metadata("design:type", Array) +], User.prototype, "phones", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => contract_entity_1.Contract, (contract) => contract.user, { + cascade: true, + onDelete: "CASCADE", + }), + tslib_1.__metadata("design:type", Array) +], User.prototype, "contracts", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => address_entity_1.Address, (address) => address.user, { + cascade: true, + onDelete: "CASCADE", + }), + tslib_1.__metadata("design:type", Array) +], User.prototype, "addresses", void 0); +tslib_1.__decorate([ + (0, typeorm_1.DeleteDateColumn)(), + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", typeof (_d = typeof Date !== "undefined" && Date) === "function" ? _d : Object) +], User.prototype, "deletedAt", void 0); +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", String) +], User.prototype, "tempPassword", void 0); +tslib_1.__decorate([ + (0, typeorm_1.BeforeInsert)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", typeof (_e = typeof Promise !== "undefined" && Promise) === "function" ? _e : Object) +], User.prototype, "hashPassword", null); +tslib_1.__decorate([ + (0, typeorm_1.AfterLoad)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", void 0) +], User.prototype, "loadTempPassword", null); +tslib_1.__decorate([ + (0, typeorm_1.BeforeUpdate)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", typeof (_f = typeof Promise !== "undefined" && Promise) === "function" ? _f : Object) +], User.prototype, "encryptPassword", null); +exports.User = User = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], User); + + +/***/ }), +/* 81 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("bcryptjs"); + +/***/ }), +/* 82 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b, _c; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Address = void 0; +const tslib_1 = __webpack_require__(2); +const typeorm_1 = __webpack_require__(50); +const bson_typings_1 = __webpack_require__(83); +const user_entity_1 = __webpack_require__(80); +const address_type_entity_1 = __webpack_require__(84); +let Address = exports.Address = class Address extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)("uuid"), + tslib_1.__metadata("design:type", Number) +], Address.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Address.prototype, "street", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "int", nullable: true }), + tslib_1.__metadata("design:type", Number) +], Address.prototype, "number", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Address.prototype, "city", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false, length: 2 }), + tslib_1.__metadata("design:type", String) +], Address.prototype, "state", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "user_id", type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", typeof (_a = typeof bson_typings_1.UUID !== "undefined" && bson_typings_1.UUID) === "function" ? _a : Object) +], Address.prototype, "userId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "is_active", type: "boolean", default: true }), + tslib_1.__metadata("design:type", Boolean) +], Address.prototype, "isActive", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "type_id", type: "int", nullable: false }), + tslib_1.__metadata("design:type", Number) +], Address.prototype, "typeId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)(() => user_entity_1.User, (user) => user.id), + (0, typeorm_1.JoinColumn)({ + name: "user_id", + referencedColumnName: "id", + foreignKeyConstraintName: "address_user", + }), + tslib_1.__metadata("design:type", typeof (_b = typeof user_entity_1.User !== "undefined" && user_entity_1.User) === "function" ? _b : Object) +], Address.prototype, "user", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)(() => address_type_entity_1.AddressType, (addressType) => addressType.id, { + cascade: true, + onDelete: "CASCADE", + }), + (0, typeorm_1.JoinColumn)({ + name: "type_id", + referencedColumnName: "id", + foreignKeyConstraintName: "address_addresstype", + }), + tslib_1.__metadata("design:type", typeof (_c = typeof address_type_entity_1.AddressType !== "undefined" && address_type_entity_1.AddressType) === "function" ? _c : Object) +], Address.prototype, "type", void 0); +exports.Address = Address = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Address); + + +/***/ }), +/* 83 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("typeorm/driver/mongodb/bson.typings"); + +/***/ }), +/* 84 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressType = void 0; +const tslib_1 = __webpack_require__(2); +const typeorm_1 = __webpack_require__(50); +const address_entity_1 = __webpack_require__(82); +let AddressType = exports.AddressType = class AddressType extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + tslib_1.__metadata("design:type", Number) +], AddressType.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], AddressType.prototype, "type", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "is_active", type: "boolean", default: true }), + tslib_1.__metadata("design:type", Boolean) +], AddressType.prototype, "isActive", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => address_entity_1.Address, (address) => address.type), + tslib_1.__metadata("design:type", typeof (_a = typeof address_entity_1.Address !== "undefined" && address_entity_1.Address) === "function" ? _a : Object) +], AddressType.prototype, "address", void 0); +exports.AddressType = AddressType = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], AddressType); + + +/***/ }), +/* 85 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Contract = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_transformer_1 = __webpack_require__(18); +const class_validator_1 = __webpack_require__(17); +const typeorm_1 = __webpack_require__(50); +const user_entity_1 = __webpack_require__(80); +const { CREATE, UPDATE } = crudx_1.CrudValidationGroups; +let Contract = exports.Contract = class Contract extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + tslib_1.__metadata("design:type", Number) +], Contract.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "userId" }), + (0, class_transformer_1.Exclude)({ toPlainOnly: true }), + tslib_1.__metadata("design:type", String) +], Contract.prototype, "userId", void 0); +tslib_1.__decorate([ + (0, class_validator_1.MaxLength)(60), + (0, typeorm_1.Column)({ name: "contractNumber", type: "varchar", length: 60 }), + tslib_1.__metadata("design:type", String) +], Contract.prototype, "contractNumber", void 0); +tslib_1.__decorate([ + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.IsDateString)(), + (0, typeorm_1.Column)({ name: "startedAt", type: "date" }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], Contract.prototype, "startedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "note", type: "varchar", length: "11", default: "" }), + (0, class_validator_1.IsOptional)({ groups: [UPDATE] }), + (0, class_validator_1.IsString)(), + tslib_1.__metadata("design:type", String) +], Contract.prototype, "note", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)((type) => user_entity_1.User, (user) => user.id), + (0, typeorm_1.JoinColumn)({ + referencedColumnName: "id", + foreignKeyConstraintName: "contact_user", + }), + tslib_1.__metadata("design:type", typeof (_b = typeof user_entity_1.User !== "undefined" && user_entity_1.User) === "function" ? _b : Object) +], Contract.prototype, "user", void 0); +exports.Contract = Contract = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Contract); + + +/***/ }), +/* 86 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Phone = void 0; +const tslib_1 = __webpack_require__(2); +const class_transformer_1 = __webpack_require__(18); +const typeorm_1 = __webpack_require__(50); +const user_entity_1 = __webpack_require__(80); +let Phone = exports.Phone = class Phone extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)(), + (0, typeorm_1.PrimaryGeneratedColumn)("uuid"), + tslib_1.__metadata("design:type", String) +], Phone.prototype, "id", void 0); +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)({ toPlainOnly: true }), + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Phone.prototype, "userId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Phone.prototype, "phoneNumber", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)((type) => user_entity_1.User, (user) => user.id), + (0, typeorm_1.JoinColumn)({ + referencedColumnName: "id", + foreignKeyConstraintName: "UserId", + }), + tslib_1.__metadata("design:type", typeof (_a = typeof user_entity_1.User !== "undefined" && user_entity_1.User) === "function" ? _a : Object) +], Phone.prototype, "user", void 0); +exports.Phone = Phone = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Phone); + + +/***/ }), +/* 87 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const user_dto_1 = __webpack_require__(88); +const user_entity_1 = __webpack_require__(80); +const user_service_1 = __webpack_require__(79); +let UserController = exports.UserController = class UserController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } + async emails(req) { + return this.service.find({ select: ["email"] }); + } +}; +tslib_1.__decorate([ + (0, common_1.UseInterceptors)(crudx_1.CrudRequestInterceptor), + (0, common_1.Get)("/emails"), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _b : Object]), + tslib_1.__metadata("design:returntype", Promise) +], UserController.prototype, "emails", null); +exports.UserController = UserController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: user_entity_1.User, + }, + dto: { + create: user_dto_1.UserDto, + update: user_dto_1.UserDto, + }, + params: { + id: { + type: "uuid", + field: "id", + primary: true, + }, + }, + }), + (0, common_1.Controller)("users"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object]) +], UserController); + + +/***/ }), +/* 88 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserDto = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_validator_1 = __webpack_require__(17); +const lodash_1 = __webpack_require__(8); +const user_email_already_exists_constraint_1 = __webpack_require__(78); +const { CREATE } = crudx_1.CrudValidationGroups; +class UserDto { +} +exports.UserDto = UserDto; +tslib_1.__decorate([ + (0, class_validator_1.ValidateIf)((o) => !(0, lodash_1.isEmpty)(o.email)), + (0, class_validator_1.IsEmail)(), + (0, user_email_already_exists_constraint_1.IsEmailUserAlreadyExist)({ + message: "Email already exists", + groups: [CREATE], + }), + tslib_1.__metadata("design:type", String) +], UserDto.prototype, "email", void 0); +tslib_1.__decorate([ + (0, class_validator_1.ValidateIf)((o) => !(0, lodash_1.isEmpty)(o.email)), + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.MaxLength)(32, { message: "Password is too long" }), + (0, class_validator_1.MinLength)(8, { + message: "Password must be at least 8 characters long", + }), + tslib_1.__metadata("design:type", String) +], UserDto.prototype, "password", void 0); + + +/***/ }), +/* 89 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const config_1 = __webpack_require__(90); +const typeorm_1 = __webpack_require__(77); +const config_2 = __webpack_require__(91); +const address_module_1 = __webpack_require__(94); +const app_controller_1 = __webpack_require__(98); +const app_service_1 = __webpack_require__(99); +const auth_module_1 = __webpack_require__(100); +const claim_module_1 = __webpack_require__(107); +const contract_module_1 = __webpack_require__(110); +const phone_module_1 = __webpack_require__(115); +const user_module_1 = __webpack_require__(76); +let AppModule = exports.AppModule = class AppModule { +}; +exports.AppModule = AppModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [ + config_1.ConfigModule.forRoot({ + isGlobal: true, + load: [config_2.databaseConfig], + envFilePath: ['.env.testing'] + }), + typeorm_1.TypeOrmModule.forRootAsync({ + useFactory: (config) => ({ + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }), + inject: [config_1.ConfigService], + }), + user_module_1.UserModule, + phone_module_1.PhoneModule, + auth_module_1.AuthModule, + contract_module_1.ContractModule, + claim_module_1.ClaimModule, + address_module_1.AddressModule, + ], + controllers: [app_controller_1.AppController], + providers: [app_service_1.AppService], + }) +], AppModule); + + +/***/ }), +/* 90 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/config"); + +/***/ }), +/* 91 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(92), exports); + + +/***/ }), +/* 92 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.databaseConfig = void 0; +const config_1 = __webpack_require__(90); +const address_type_entity_1 = __webpack_require__(84); +const address_entity_1 = __webpack_require__(82); +const claim_entity_1 = __webpack_require__(93); +const contract_entity_1 = __webpack_require__(85); +const phone_entity_1 = __webpack_require__(86); +const user_entity_1 = __webpack_require__(80); +exports.databaseConfig = (0, config_1.registerAs)("database", () => ({ + type: process.env.DB_TYPE, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + username: process.env.DB_USERNAME, + password: process.env.DB_PASSWORD, + database: process.env.DB_DATABASE, + entities: [user_entity_1.User, phone_entity_1.Phone, contract_entity_1.Contract, claim_entity_1.Claim, address_entity_1.Address, address_type_entity_1.AddressType], + synchronize: true, + autoLoadEntities: true, + encoding: process.env.DB_CHARSET, +})); + + +/***/ }), +/* 93 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Claim = void 0; +const tslib_1 = __webpack_require__(2); +const typeorm_1 = __webpack_require__(50); +const contract_entity_1 = __webpack_require__(85); +let Claim = exports.Claim = class Claim extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + tslib_1.__metadata("design:type", Number) +], Claim.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "amount", type: "double" }), + tslib_1.__metadata("design:type", Number) +], Claim.prototype, "amount", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "date", type: "date" }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], Claim.prototype, "date", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "contractId", type: "int" }), + tslib_1.__metadata("design:type", Number) +], Claim.prototype, "contractId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)((type) => contract_entity_1.Contract, (contract) => contract.id, { + cascade: true, + onDelete: "CASCADE", + }), + (0, typeorm_1.JoinColumn)({ + referencedColumnName: "id", + name: "contractId", + }), + tslib_1.__metadata("design:type", typeof (_b = typeof contract_entity_1.Contract !== "undefined" && contract_entity_1.Contract) === "function" ? _b : Object) +], Claim.prototype, "contract", void 0); +exports.Claim = Claim = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Claim); + + +/***/ }), +/* 94 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const address_type_entity_1 = __webpack_require__(84); +const address_type_service_1 = __webpack_require__(95); +const address_controller_1 = __webpack_require__(96); +const address_entity_1 = __webpack_require__(82); +const address_service_1 = __webpack_require__(97); +let AddressModule = exports.AddressModule = class AddressModule { +}; +exports.AddressModule = AddressModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [ + typeorm_1.TypeOrmModule.forFeature([address_entity_1.Address]), + typeorm_1.TypeOrmModule.forFeature([address_type_entity_1.AddressType]), + ], + controllers: [address_controller_1.AddressController], + providers: [address_service_1.AddressService, address_type_service_1.AddressTypeService], + exports: [address_service_1.AddressService, address_type_service_1.AddressTypeService], + }) +], AddressModule); + + +/***/ }), +/* 95 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressTypeService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const address_type_entity_1 = __webpack_require__(84); +let AddressTypeService = exports.AddressTypeService = class AddressTypeService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.AddressTypeService = AddressTypeService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(address_type_entity_1.AddressType)), + tslib_1.__metadata("design:paramtypes", [Object]) +], AddressTypeService); + + +/***/ }), +/* 96 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const address_entity_1 = __webpack_require__(82); +const address_service_1 = __webpack_require__(97); +let AddressController = exports.AddressController = class AddressController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.AddressController = AddressController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: address_entity_1.Address, + }, + params: { + userId: { + type: "uuid", + field: "userId", + }, + }, + query: { + exclude: ["userId", "typeId"], + join: { + type: { + allow: ["id", "type"], + required: true, + eager: true, + }, + }, + filter: { + isActive: { + $eq: true, + }, + }, + }, + }), + (0, common_1.Controller)("/users/:userId/addresses"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof address_service_1.AddressService !== "undefined" && address_service_1.AddressService) === "function" ? _a : Object]) +], AddressController); + + +/***/ }), +/* 97 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const address_entity_1 = __webpack_require__(82); +let AddressService = exports.AddressService = class AddressService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.AddressService = AddressService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(address_entity_1.Address)), + tslib_1.__metadata("design:paramtypes", [Object]) +], AddressService); + + +/***/ }), +/* 98 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppController = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const app_service_1 = __webpack_require__(99); +let AppController = exports.AppController = class AppController { + constructor(appService) { + this.appService = appService; + } + getData() { + return this.appService.getData(); + } +}; +tslib_1.__decorate([ + (0, common_1.Get)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", void 0) +], AppController.prototype, "getData", null); +exports.AppController = AppController = tslib_1.__decorate([ + (0, common_1.Controller)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof app_service_1.AppService !== "undefined" && app_service_1.AppService) === "function" ? _a : Object]) +], AppController); + + +/***/ }), +/* 99 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppService = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +let AppService = exports.AppService = class AppService { + getData() { + return { message: "Hello API" }; + } +}; +exports.AppService = AppService = tslib_1.__decorate([ + (0, common_1.Injectable)() +], AppService); + + +/***/ }), +/* 100 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const jwt_1 = __webpack_require__(101); +const typeorm_1 = __webpack_require__(77); +const user_entity_1 = __webpack_require__(80); +const user_module_1 = __webpack_require__(76); +const user_service_1 = __webpack_require__(79); +const auth_controller_1 = __webpack_require__(102); +const auth_service_1 = __webpack_require__(103); +const constants_1 = __webpack_require__(104); +const me_controller_1 = __webpack_require__(105); +let AuthModule = exports.AuthModule = class AuthModule { +}; +exports.AuthModule = AuthModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [ + user_module_1.UserModule, + typeorm_1.TypeOrmModule.forFeature([user_entity_1.User]), + jwt_1.JwtModule.register({ + global: true, + secret: constants_1.jwtConstants.secret, + signOptions: { expiresIn: "60s" }, + }), + ], + controllers: [auth_controller_1.AuthController, me_controller_1.MeController], + providers: [auth_service_1.AuthService, user_service_1.UserService], + exports: [auth_service_1.AuthService], + }) +], AuthModule); + + +/***/ }), +/* 101 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/jwt"); + +/***/ }), +/* 102 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthController = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const auth_service_1 = __webpack_require__(103); +let AuthController = exports.AuthController = class AuthController { + constructor(authService) { + this.authService = authService; + } + async signIn(body) { + return this.authService.signIn(body.email, body.pass); + } +}; +tslib_1.__decorate([ + (0, common_1.HttpCode)(common_1.HttpStatus.OK), + (0, common_1.Post)("sign-in"), + tslib_1.__param(0, (0, common_1.Body)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof Record !== "undefined" && Record) === "function" ? _b : Object]), + tslib_1.__metadata("design:returntype", Promise) +], AuthController.prototype, "signIn", null); +exports.AuthController = AuthController = tslib_1.__decorate([ + (0, common_1.Controller)("auth"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof auth_service_1.AuthService !== "undefined" && auth_service_1.AuthService) === "function" ? _a : Object]) +], AuthController); + + +/***/ }), +/* 103 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthService = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const jwt_1 = __webpack_require__(101); +const bcrypt = tslib_1.__importStar(__webpack_require__(81)); +const user_service_1 = __webpack_require__(79); +let AuthService = exports.AuthService = class AuthService { + constructor(service, jwtService) { + this.service = service; + this.jwtService = jwtService; + } + async signIn(email, pass) { + const user = await this.service.findOne({ where: { email: email } }); + if (!bcrypt.compareSync(pass, user?.password)) { + throw new common_1.UnauthorizedException(); + } + const payload = { sub: user.id, username: user.email }; + return { + access_token: await this.jwtService.signAsync(payload), + }; + } +}; +exports.AuthService = AuthService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object, typeof (_b = typeof jwt_1.JwtService !== "undefined" && jwt_1.JwtService) === "function" ? _b : Object]) +], AuthService); + + +/***/ }), +/* 104 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.jwtConstants = void 0; +exports.jwtConstants = { + secret: "some well defined secret key", +}; + + +/***/ }), +/* 105 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.MeController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const user_entity_1 = __webpack_require__(80); +const user_service_1 = __webpack_require__(79); +const auth_guard_1 = __webpack_require__(106); +let MeController = exports.MeController = class MeController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.MeController = MeController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: user_entity_1.User, + }, + routes: { + only: ["getOneBase"], + }, + params: { + id: { + primary: true, + disabled: true, + }, + }, + }), + (0, crudx_1.CrudAuth)({ + property: "user", + filter: (user) => ({ + id: user.sub, + }), + }), + (0, common_1.Controller)("me"), + (0, crudx_1.Feature)("GetMyInfo"), + (0, common_1.UseGuards)(auth_guard_1.AuthGuard), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object]) +], MeController); + + +/***/ }), +/* 106 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthGuard = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const core_1 = __webpack_require__(75); +const jwt_1 = __webpack_require__(101); +const constants_1 = __webpack_require__(104); +let AuthGuard = exports.AuthGuard = class AuthGuard { + constructor(jwtService, reflector) { + this.jwtService = jwtService; + this.reflector = reflector; + } + async canActivate(context) { + const request = context.switchToHttp().getRequest(); + const token = this.extractTokenFromHeader(request); + if (!token) { + throw new common_1.UnauthorizedException(); + } + try { + const payload = await this.jwtService.verifyAsync(token, { + secret: constants_1.jwtConstants.secret, + }); + request["user"] = payload; + } + catch { + throw new common_1.UnauthorizedException(); + } + // up here, it's a simple auth guard with jwt + // + const handler = context.getHandler(); + const controller = context.getClass(); + const feature = (0, crudx_1.getFeature)(controller); + const action = (0, crudx_1.getAction)(handler); + console.log(`${feature}-${action}`); // e.g "GetMyInfo-Read-One" + // write custom acl rule + return true; + } + extractTokenFromHeader(request) { + const [type, token] = request.headers["authorization"]?.split(" ") ?? []; + return type === "Bearer" ? token : undefined; + } +}; +exports.AuthGuard = AuthGuard = tslib_1.__decorate([ + (0, common_1.Injectable)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof jwt_1.JwtService !== "undefined" && jwt_1.JwtService) === "function" ? _a : Object, typeof (_b = typeof core_1.Reflector !== "undefined" && core_1.Reflector) === "function" ? _b : Object]) +], AuthGuard); + + +/***/ }), +/* 107 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClaimModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const claim_controller_1 = __webpack_require__(108); +const claim_entity_1 = __webpack_require__(93); +const claim_service_1 = __webpack_require__(109); +let ClaimModule = exports.ClaimModule = class ClaimModule { +}; +exports.ClaimModule = ClaimModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([claim_entity_1.Claim])], + providers: [claim_service_1.ClaimService], + controllers: [claim_controller_1.ClaimController], + exports: [claim_service_1.ClaimService], + }) +], ClaimModule); + + +/***/ }), +/* 108 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClaimController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const claim_entity_1 = __webpack_require__(93); +const claim_service_1 = __webpack_require__(109); +let ClaimController = exports.ClaimController = class ClaimController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.ClaimController = ClaimController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: claim_entity_1.Claim, + }, + params: { + contractId: { + type: "number", + field: "contractId", + }, + }, + query: { + allow: ["id", "amount", "date"], + persist: ["id"], + limit: 5, + maxLimit: 5, + alwaysPaginate: true, + sort: [ + { + field: "id", + order: "DESC", + }, + ], + cache: 2000, + join: { + contract: { + eager: true, + }, + }, + }, + }), + (0, common_1.Controller)("/contracts/:contractId/claims"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof claim_service_1.ClaimService !== "undefined" && claim_service_1.ClaimService) === "function" ? _a : Object]) +], ClaimController); + + +/***/ }), +/* 109 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClaimService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const claim_entity_1 = __webpack_require__(93); +let ClaimService = exports.ClaimService = class ClaimService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.ClaimService = ClaimService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(claim_entity_1.Claim)), + tslib_1.__metadata("design:paramtypes", [Object]) +], ClaimService); + + +/***/ }), +/* 110 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const contract_controller_1 = __webpack_require__(111); +const contract_entity_1 = __webpack_require__(85); +const contract_service_1 = __webpack_require__(114); +let ContractModule = exports.ContractModule = class ContractModule { +}; +exports.ContractModule = ContractModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([contract_entity_1.Contract])], + providers: [contract_service_1.ContractService], + controllers: [contract_controller_1.ContractController], + exports: [contract_service_1.ContractService], + }) +], ContractModule); + + +/***/ }), +/* 111 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const contract_create_dto_1 = __webpack_require__(112); +const contract_create_response_dto_1 = __webpack_require__(113); +const contract_entity_1 = __webpack_require__(85); +const contract_service_1 = __webpack_require__(114); +let ContractController = exports.ContractController = class ContractController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.ContractController = ContractController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: contract_entity_1.Contract, + }, + dto: { + create: contract_create_dto_1.ContractCreateDto, + }, + routes: { + exclude: ["deleteOneBase"], + }, + params: { + userId: { + field: "userId", + type: "uuid", + }, + }, + serialize: { + create: contract_create_response_dto_1.ContractCreateResponseDto, + }, + }), + (0, common_1.Controller)("/users/:userId/contracts"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof contract_service_1.ContractService !== "undefined" && contract_service_1.ContractService) === "function" ? _a : Object]) +], ContractController); + + +/***/ }), +/* 112 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractCreateDto = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_validator_1 = __webpack_require__(17); +const typeorm_1 = __webpack_require__(50); +const { CREATE, UPDATE } = crudx_1.CrudValidationGroups; +class ContractCreateDto { +} +exports.ContractCreateDto = ContractCreateDto; +tslib_1.__decorate([ + (0, class_validator_1.MaxLength)(60), + (0, typeorm_1.Column)({ name: "contractNumber", type: "varchar", length: 60 }), + tslib_1.__metadata("design:type", String) +], ContractCreateDto.prototype, "contractNumber", void 0); +tslib_1.__decorate([ + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.IsDateString)(), + (0, typeorm_1.Column)({ name: "startedAt", type: "date" }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], ContractCreateDto.prototype, "startedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "note", type: "varchar", length: "11", default: "" }), + (0, class_validator_1.IsOptional)({ groups: [UPDATE] }), + (0, class_validator_1.IsString)(), + tslib_1.__metadata("design:type", String) +], ContractCreateDto.prototype, "note", void 0); + + +/***/ }), +/* 113 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractCreateResponseDto = void 0; +const tslib_1 = __webpack_require__(2); +const class_transformer_1 = __webpack_require__(18); +class ContractCreateResponseDto { +} +exports.ContractCreateResponseDto = ContractCreateResponseDto; +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", String) +], ContractCreateResponseDto.prototype, "userId", void 0); + + +/***/ }), +/* 114 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const contract_entity_1 = __webpack_require__(85); +let ContractService = exports.ContractService = class ContractService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.ContractService = ContractService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(contract_entity_1.Contract)), + tslib_1.__metadata("design:paramtypes", [Object]) +], ContractService); + + +/***/ }), +/* 115 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const phone_controller_1 = __webpack_require__(116); +const phone_entity_1 = __webpack_require__(86); +const phone_service_1 = __webpack_require__(118); +let PhoneModule = exports.PhoneModule = class PhoneModule { +}; +exports.PhoneModule = PhoneModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([phone_entity_1.Phone])], + exports: [phone_service_1.PhoneService], + providers: [phone_service_1.PhoneService], + controllers: [phone_controller_1.PhoneController], + }) +], PhoneModule); + + +/***/ }), +/* 116 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const phone_dto_1 = __webpack_require__(117); +const phone_entity_1 = __webpack_require__(86); +const phone_service_1 = __webpack_require__(118); +let PhoneController = exports.PhoneController = class PhoneController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } + async createOne(req, dto) { + const response = await Promise.resolve(this.base.createOneBase(req, dto)); + response["customProp"] = "custom added property"; + return response; + } + async createMany(req, dto) { + const response = await Promise.resolve(this.base.createManyBase(req, dto)); + response.forEach((res) => { + res["customProp"] = "custom added property"; + }); + return response; + } + async getOne(req) { + const response = await Promise.resolve(this.base.getOneBase(req)); + response["customProp"] = "custom added property"; + return response; + } + async getMany(req) { + const response = (await this.base.getManyBase(req)); + response.data.forEach((res) => { + res["customProp"] = "custom added property"; + }); + return response; + } +}; +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__param(1, (0, crudx_1.ParsedBody)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _b : Object, Object]), + tslib_1.__metadata("design:returntype", typeof (_c = typeof Promise !== "undefined" && Promise) === "function" ? _c : Object) +], PhoneController.prototype, "createOne", null); +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__param(1, (0, crudx_1.ParsedBody)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_d = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _d : Object, typeof (_e = typeof crudx_1.CreateManyDto !== "undefined" && crudx_1.CreateManyDto) === "function" ? _e : Object]), + tslib_1.__metadata("design:returntype", typeof (_f = typeof Promise !== "undefined" && Promise) === "function" ? _f : Object) +], PhoneController.prototype, "createMany", null); +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_g = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _g : Object]), + tslib_1.__metadata("design:returntype", typeof (_h = typeof Promise !== "undefined" && Promise) === "function" ? _h : Object) +], PhoneController.prototype, "getOne", null); +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_j = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _j : Object]), + tslib_1.__metadata("design:returntype", typeof (_k = typeof Promise !== "undefined" && Promise) === "function" ? _k : Object) +], PhoneController.prototype, "getMany", null); +exports.PhoneController = PhoneController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: phone_entity_1.Phone, + }, + dto: { + create: phone_dto_1.PhoneDto, + update: phone_dto_1.PhoneDto, + }, + params: { + id: { + field: "id", + type: "uuid", + primary: true, + }, + userId: { + field: "userId", + type: "uuid", + }, + }, + query: { + limit: 25, + cache: 2000, + alwaysPaginate: true, + }, + }), + (0, common_1.Controller)("/users/:userId/phones"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof phone_service_1.PhoneService !== "undefined" && phone_service_1.PhoneService) === "function" ? _a : Object]) +], PhoneController); + + +/***/ }), +/* 117 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneDto = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_transformer_1 = __webpack_require__(18); +const class_validator_1 = __webpack_require__(17); +const { CREATE } = crudx_1.CrudValidationGroups; +class PhoneDto { +} +exports.PhoneDto = PhoneDto; +tslib_1.__decorate([ + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.IsString)(), + (0, class_transformer_1.Expose)(), + tslib_1.__metadata("design:type", String) +], PhoneDto.prototype, "phoneNumber", void 0); + + +/***/ }), +/* 118 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const phone_entity_1 = __webpack_require__(86); +let PhoneService = exports.PhoneService = class PhoneService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.PhoneService = PhoneService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(phone_entity_1.Phone)), + tslib_1.__metadata("design:paramtypes", [Object]) +], PhoneService); + + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +var exports = __webpack_exports__; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +/** + * This is not a production server yet! + * This is only a minimal backend to get started. + */ +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const core_1 = __webpack_require__(75); +const class_validator_1 = __webpack_require__(17); +const user_module_1 = __webpack_require__(76); +/* + * Default configuration for CRUD, can be overridden in each module. + * Must be loaded before importing AppModule. + */ +crudx_1.CrudConfigService.load({ + query: { + limit: 25, + cache: 2000, + alwaysPaginate: true, + }, + routes: { + updateOneBase: { + allowParamsOverride: true, + }, + deleteOneBase: { + returnDeleted: true, + }, + }, +}); +crudx_1.QueryBuilderService.setOptions({ + paramNamesMap: { + search: "s", + join: ["join[]", "join", "include[]", "include"], + }, +}); +const app_module_1 = __webpack_require__(89); +async function bootstrap() { + const app = await core_1.NestFactory.create(app_module_1.AppModule); + const globalPrefix = "v1"; + app.setGlobalPrefix(globalPrefix); + app.enableCors(); + (0, class_validator_1.useContainer)(app.select(user_module_1.UserModule), { fallbackOnErrors: true }); + const port = process.env.PORT || 3000; + await app.listen(port); + common_1.Logger.log(`🚀 Application is running on: http://localhost:${port}/${globalPrefix}`); +} +bootstrap(); + +})(); + +var __webpack_export_target__ = exports; +for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i]; +if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true }); +/******/ })() +; +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/dist/packages/crudx-demo/main.js.map b/dist/packages/crudx-demo/main.js.map new file mode 100644 index 000000000..f40ae6533 --- /dev/null +++ b/dist/packages/crudx-demo/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","mappings":"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","sources":["webpack:///../../src/index.ts","webpack:///external commonjs \"tslib\"","webpack:///../../src/decorators/index.ts","webpack:///../../src/decorators/crud.decorator.ts","webpack:///../../src/services/index.ts","webpack:///../../src/services/abstract-crud.service.ts","webpack:///external commonjs \"@nestjs/common\"","webpack:///external commonjs \"lodash\"","webpack:///../../src/services/crud-config.service.ts","webpack:///../../src/helpers/index.ts","webpack:///../../src/helpers/checkers.helper.ts","webpack:///../../src/helpers/crud-validation.helper.ts","webpack:///../../src/enums/index.ts","webpack:///../../src/enums/crud-actions.enum.ts","webpack:///../../src/enums/crud-validation-groups.enum.ts","webpack:///external commonjs \"@nestjs/swagger\"","webpack:///external commonjs \"class-validator\"","webpack:///external commonjs \"class-transformer\"","webpack:///../../src/helpers/reflection.helper.ts","webpack:///external commonjs \"@nestjs/common/enums/route-paramtypes.enum\"","webpack:///external commonjs \"@nestjs/common/constants\"","webpack:///../../src/constants.ts","webpack:///../../src/helpers/request-validation.helper.ts","webpack:///../../src/exceptions/index.ts","webpack:///../../src/exceptions/request-query.exception.ts","webpack:///../../src/types/index.ts","webpack:///../../src/types/common.types.ts","webpack:///../../src/types/crud.types.ts","webpack:///../../src/types/request-param.types.ts","webpack:///../../src/types/request-query.types.ts","webpack:///../../src/helpers/serialize.helper.ts","webpack:///../../src/helpers/swagger.helper.ts","webpack:///../../src/helpers/safe-require.helper.ts","webpack:///../../src/helpers/ sync","webpack:///external commonjs \"@nestjs/swagger/dist/constants\"","webpack:///external commonjs \"pluralize\"","webpack:///external commonjs \"@nestjs/swagger/package.json\"","webpack:///../../src/services/query-builder.service.ts","webpack:///external commonjs \"qs\"","webpack:///external commonjs \"deepmerge\"","webpack:///../../src/services/query-parser.service.ts","webpack:///../../src/services/routes-factory.service.ts","webpack:///../../src/interceptors/index.ts","webpack:///../../src/interceptors/crud-request.interceptor.ts","webpack:///../../src/interceptors/crud-base.interceptor.ts","webpack:///../../src/interceptors/crud-response.interceptor.ts","webpack:///external commonjs \"rxjs/operators\"","webpack:///../../src/services/type-orm-crud.service.ts","webpack:///external commonjs \"@zmotivat0r/o0\"","webpack:///external commonjs \"typeorm\"","webpack:///../../src/decorators/crud-auth.decorator.ts","webpack:///../../src/decorators/override.decorator.ts","webpack:///../../src/decorators/parsed-request.decorator.ts","webpack:///../../src/decorators/parsed-body.decorator.ts","webpack:///../../src/decorators/feature-action.decorator.ts","webpack:///../../src/interfaces/index.ts","webpack:///../../src/interfaces/auth-options.interface.ts","webpack:///../../src/interfaces/base-route.interface.ts","webpack:///../../src/interfaces/create-many-dto.interface.ts","webpack:///../../src/interfaces/create-query-params.interface.ts","webpack:///../../src/interfaces/crud-controller.interface.ts","webpack:///../../src/interfaces/crud-global-config.interface.ts","webpack:///../../src/interfaces/crud-options.interface.ts","webpack:///../../src/interfaces/crud-request.interface.ts","webpack:///../../src/interfaces/dto-options.interface.ts","webpack:///../../src/interfaces/get-many-default-response.interface.ts","webpack:///../../src/interfaces/model-options.interface.ts","webpack:///../../src/interfaces/operators-options.interface.ts","webpack:///../../src/interfaces/params-options.interface.ts","webpack:///../../src/interfaces/parsed-request.interface.ts","webpack:///../../src/interfaces/query-options.interface.ts","webpack:///../../src/interfaces/request-query-builder-options.interface.ts","webpack:///../../src/interfaces/routes-options.interface.ts","webpack:///../../src/interfaces/serialize-options.interface.ts","webpack:///external commonjs \"@nestjs/core\"","webpack:///./src/app/user/user.module.ts","webpack:///external commonjs \"@nestjs/typeorm\"","webpack:///./src/app/user/user-email-already-exists.constraint.ts","webpack:///./src/app/user/user.service.ts","webpack:///./src/app/user/user.entity.ts","webpack:///external commonjs \"bcryptjs\"","webpack:///./src/app/address/address.entity.ts","webpack:///external commonjs \"typeorm/driver/mongodb/bson.typings\"","webpack:///./src/app/address/address-type.entity.ts","webpack:///./src/app/contract/contract.entity.ts","webpack:///./src/app/phone/phone.entity.ts","webpack:///./src/app/user/user.controller.ts","webpack:///./src/app/user/user.dto.ts","webpack:///./src/app/app.module.ts","webpack:///external commonjs \"@nestjs/config\"","webpack:///./src/config/index.ts","webpack:///./src/config/database.config.ts","webpack:///./src/app/claims/claim.entity.ts","webpack:///./src/app/address/address.module.ts","webpack:///./src/app/address/address-type.service.ts","webpack:///./src/app/address/address.controller.ts","webpack:///./src/app/address/address.service.ts","webpack:///./src/app/app.controller.ts","webpack:///./src/app/app.service.ts","webpack:///./src/app/auth/auth.module.ts","webpack:///external commonjs \"@nestjs/jwt\"","webpack:///./src/app/auth/auth.controller.ts","webpack:///./src/app/auth/auth.service.ts","webpack:///./src/app/auth/constants.ts","webpack:///./src/app/auth/me.controller.ts","webpack:///./src/app/auth/auth.guard.ts","webpack:///./src/app/claims/claim.module.ts","webpack:///./src/app/claims/claim.controller.ts","webpack:///./src/app/claims/claim.service.ts","webpack:///./src/app/contract/contract.module.ts","webpack:///./src/app/contract/contract.controller.ts","webpack:///./src/app/contract/contract.create.dto.ts","webpack:///./src/app/contract/contract.create.response.dto.ts","webpack:///./src/app/contract/contract.service.ts","webpack:///./src/app/phone/phone.module.ts","webpack:///./src/app/phone/phone.controller.ts","webpack:///./src/app/phone/phone.dto.ts","webpack:///./src/app/phone/phone.service.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/main.ts"],"sourcesContent":["export * from \"./decorators\";\nexport * from \"./constants\";\nexport * from \"./enums\";\nexport * from \"./exceptions\";\nexport * from \"./helpers\";\nexport * from \"./interceptors\";\nexport * from \"./interfaces\";\nexport * from \"./services\";\nexport * from \"./types\";\n","module.exports = require(\"tslib\");","export * from \"./crud.decorator\";\nexport * from \"./crud-auth.decorator\";\nexport * from \"./override.decorator\";\nexport * from \"./parsed-request.decorator\";\nexport * from \"./parsed-body.decorator\";\nexport * from \"./feature-action.decorator\";\n","import { RoutesFactoryService } from \"../services\";\nimport { CrudOptions } from \"../interfaces\";\n\nexport const Crud =\n (options: CrudOptions) =>\n (target: Object): void => {\n const factoryMethod = options.routesFactory || RoutesFactoryService;\n let factory: RoutesFactoryService = new factoryMethod(target, options);\n };\n","export * from \"./abstract-crud.service\";\nexport * from \"./crud-config.service\";\nexport * from \"./query-builder.service\";\nexport * from \"./query-parser.service\";\nexport * from \"./routes-factory.service\";\nexport * from \"./type-orm-crud.service\";\n","import { BadRequestException, NotFoundException } from \"@nestjs/common\";\nimport { get, isEmpty, keys } from \"lodash\";\n\nimport {\n CreateManyDto,\n CrudRequest,\n CrudRequestOptions,\n GetManyDefaultResponse,\n ParsedRequestParams,\n QueryOptions,\n} from \"../interfaces\";\n\nexport abstract class CrudService {\n abstract getMany(req: CrudRequest): Promise | T[]>;\n\n abstract getOne(req: CrudRequest): Promise;\n\n abstract createOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract createMany(req: CrudRequest, dto: CreateManyDto): Promise;\n\n abstract updateOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract replaceOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract deleteOne(req: CrudRequest): Promise;\n\n abstract recoverOne(req: CrudRequest): Promise;\n\n throwBadRequestException(msg?: any): BadRequestException {\n throw new BadRequestException(msg);\n }\n\n throwNotFoundException(name: string): NotFoundException {\n throw new NotFoundException(`${name} not found`);\n }\n\n /**\n * Wrap page into page-info\n * override this method to create custom page-info response\n * or set custom `serialize.getMany` dto in the controller's CrudOption\n * @param data\n * @param total\n * @param limit\n * @param offset\n */\n createPageInfo(\n data: T[],\n total: number,\n limit: number,\n offset: number\n ): GetManyDefaultResponse {\n return {\n data,\n count: data.length,\n total,\n page: limit ? Math.floor(offset / limit) + 1 : 1,\n pageCount: limit && total ? Math.ceil(total / limit) : 1,\n };\n }\n\n /**\n * Determine if need paging\n * @param parsed\n * @param options\n */\n decidePagination(\n parsed: ParsedRequestParams,\n options: CrudRequestOptions\n ): boolean {\n return (\n options.query?.alwaysPaginate ||\n ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) &&\n !!this.getTake(parsed, options.query))\n );\n }\n\n /**\n * Get number of resources to be fetched\n * @param query\n * @param options\n */\n getTake(query: ParsedRequestParams, options: QueryOptions): number | null {\n if (query.limit) {\n return options.maxLimit\n ? query.limit <= options.maxLimit\n ? query.limit\n : options.maxLimit\n : query.limit;\n }\n /* istanbul ignore if */\n if (options.limit) {\n return options.maxLimit\n ? options.limit <= options.maxLimit\n ? options.limit\n : options.maxLimit\n : options.limit;\n }\n\n return options.maxLimit ? options.maxLimit : null;\n }\n\n /**\n * Get number of resources to be skipped\n * @param query\n * @param take\n */\n getSkip(query: ParsedRequestParams, take: number): number | null {\n return query.page && take\n ? take * (query.page - 1)\n : query.offset\n ? query.offset\n : null;\n }\n\n /**\n * Get primary param name from CrudOptions\n * @param options\n */\n getPrimaryParams(options: CrudRequestOptions): string[] {\n if (isEmpty(options.params)) {\n return [];\n }\n // @ts-ignore\n return keys(options.params)\n .filter((n: string) => get(options, `params[${n}].primary`, false))\n .map((p: string) => get(options, `params[${p}].field`));\n }\n}\n","module.exports = require(\"@nestjs/common\");","module.exports = require(\"lodash\");","import { isObjectFull } from \"../helpers\";\nimport { CrudGlobalConfig, RequestQueryBuilderOptions } from \"../interfaces\";\n\nimport { QueryBuilderService } from \"./query-builder.service\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst deepmerge = require('deepmerge');\n\nexport class CrudConfigService {\n static config: CrudGlobalConfig = {\n auth: {},\n query: {\n alwaysPaginate: false,\n },\n operators: {},\n routes: {\n getManyBase: { interceptors: [], decorators: [] },\n getOneBase: { interceptors: [], decorators: [] },\n createOneBase: { interceptors: [], decorators: [], returnShallow: false },\n createManyBase: { interceptors: [], decorators: [] },\n updateOneBase: {\n interceptors: [],\n decorators: [],\n allowParamsOverride: false,\n returnShallow: false,\n },\n replaceOneBase: {\n interceptors: [],\n decorators: [],\n allowParamsOverride: false,\n returnShallow: false,\n },\n deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false },\n recoverOneBase: {\n interceptors: [],\n decorators: [],\n returnRecovered: false,\n },\n },\n params: {},\n };\n\n static load(config: CrudGlobalConfig = {}): void {\n const auth = isObjectFull(config.auth) ? config.auth : {};\n const query = isObjectFull(config.query) ? config.query : {};\n const routes = isObjectFull(config.routes) ? config.routes : {};\n const operators = isObjectFull(config.operators) ? config.operators : {};\n const params = isObjectFull(config.params) ? config.params : {};\n const serialize = isObjectFull(config.serialize) ? config.serialize : {};\n\n if (isObjectFull(config.queryParser)) {\n QueryBuilderService.setOptions({\n ...config.queryParser,\n });\n }\n\n CrudConfigService.config = deepmerge(\n CrudConfigService.config,\n { auth, query, routes, operators, params, serialize },\n // @ts-ignore\n { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }\n );\n }\n}\n","export * from \"./checkers.helper\";\nexport * from \"./crud-validation.helper\";\nexport * from \"./reflection.helper\";\nexport * from \"./request-validation.helper\";\nexport * from \"./serialize.helper\";\nexport * from \"./swagger.helper\";\n","import {\n every,\n isEqual,\n isArray,\n isBoolean,\n isDate,\n isEmpty,\n isNumber,\n isString,\n keys,\n isNil,\n} from \"lodash\";\n\nexport const isArrayOfStrings = (arr: unknown[]): boolean => {\n return isArray(arr) && every(arr, isString);\n};\nexport const isArrayFull = (val: any): boolean =>\n Array.isArray(val) && !isEmpty(val);\n\nexport const isStringFull = (val: unknown): boolean =>\n isString(val) && !isEmpty(val);\n\nexport const isArrayOfStringsFull = (val: any): boolean =>\n isArrayFull(val) && (val as string[]).every((v: string) => isStringFull(v));\n\nexport const isValue = (val: any): boolean =>\n isStringFull(val) || isNumber(val) || isBoolean(val) || isDate(val);\nexport const hasValue = (val: any): boolean =>\n isArrayFull(val) ? (val as any[]).every((o) => isValue(o)) : isValue(val);\n\nexport const isDateString = (val: any): boolean => {\n const timestamp: number = Date.parse(val);\n return !isNaN(timestamp) && isDate(new Date(timestamp));\n};\n\nexport const isFalse = (val: any): boolean => val === false;\n\nexport const isTrue = (val: any): boolean => val === true;\n\nexport const isIn = (val: any, arr: any[] = []): boolean =>\n arr.some((o) => isEqual(val, o));\n\nexport const isObject = (val: any): boolean =>\n typeof val === \"object\" && !isNil(val);\nexport const isObjectFull = (val: any) => isObject(val) && keys(val).length > 0;\n","import { ValidationPipe } from \"@nestjs/common\";\nimport { isFalse } from \"../helpers\";\nimport { isNil } from \"lodash\";\nimport { CrudValidationGroups } from \"../enums\";\nimport { CreateManyDto, CrudOptions, MergedCrudOptions } from \"../interfaces\";\nimport { ApiProperty } from \"@nestjs/swagger\";\nimport { IsArray, ArrayNotEmpty, ValidateNested } from \"class-validator\";\nimport { Type } from \"class-transformer\";\n\nexport class BulkDto implements CreateManyDto {\n // @ts-ignore\n bulk: T[];\n}\n\nexport const getValidationPipe = (\n options: CrudOptions,\n group?: CrudValidationGroups\n): ValidationPipe | undefined => {\n return !isFalse(options.validation)\n ? new ValidationPipe({\n ...(options.validation || {}),\n groups: group ? [group] : undefined,\n })\n : undefined;\n};\n\nexport const createBulkDto = (options: MergedCrudOptions): any => {\n if (!isFalse(options.validation)) {\n const hasDto: boolean = !isNil(options.dto?.create);\n const groups: CrudValidationGroups[] | undefined = !hasDto\n ? [CrudValidationGroups.CREATE]\n : undefined;\n const always: boolean | undefined = hasDto ? true : undefined;\n const Model = hasDto ? options.dto?.create : options.model.type;\n\n class BulkDtoImpl implements CreateManyDto {\n @ApiProperty({ type: Model, isArray: true })\n @IsArray({ groups, always })\n @ArrayNotEmpty({ groups, always })\n @ValidateNested({ each: true, groups, always })\n @Type(() => Model)\n // @ts-ignore\n bulk: T[];\n }\n\n Object.defineProperty(BulkDtoImpl, \"name\", {\n writable: false,\n value: `CreateMany${options.model.type.name}Dto`,\n });\n\n return BulkDtoImpl;\n } else {\n return BulkDto;\n }\n};\n","export * from \"./crud-actions.enum\";\nexport * from \"./crud-validation-groups.enum\";\n","export enum CrudActions {\n ReadAll = \"Read-All\",\n ReadOne = \"Read-One\",\n CreateOne = \"Create-One\",\n CreateMany = \"Create-Many\",\n UpdateOne = \"Update-One\",\n ReplaceOne = \"Replace-One\",\n DeleteOne = \"Delete-One\",\n DeleteAll = \"Delete-All\",\n RecoverOne = \"Recover-One\",\n}\n","export enum CrudValidationGroups {\n CREATE = \"CRUD-CREATE\",\n UPDATE = \"CRUD-UPDATE\",\n}\n","module.exports = require(\"@nestjs/swagger\");","module.exports = require(\"class-validator\");","module.exports = require(\"class-transformer\");","import { RouteParamtypes } from \"@nestjs/common/enums/route-paramtypes.enum\";\nimport {\n CUSTOM_ROUTE_ARGS_METADATA,\n INTERCEPTORS_METADATA,\n METHOD_METADATA,\n PARAMTYPES_METADATA,\n PATH_METADATA,\n ROUTE_ARGS_METADATA,\n} from \"@nestjs/common/constants\";\nimport { ArgumentsHost } from \"@nestjs/common\";\nimport { isFunction } from \"lodash\";\nimport { BaseRoute, MergedCrudOptions, AuthOptions } from \"../interfaces\";\nimport { BaseRouteName } from \"../types\";\nimport {\n CRUD_OPTIONS_METADATA,\n ACTION_NAME_METADATA,\n PARSED_CRUD_REQUEST_KEY,\n PARSED_BODY_METADATA,\n OVERRIDE_METHOD_METADATA,\n CRUD_AUTH_OPTIONS_METADATA,\n} from \"../constants\";\nimport { CrudActions } from \"../enums\";\n\nexport class R {\n static set(\n metadataKey: any,\n metadataValue: any,\n target: Object,\n propertyKey: string | symbol | undefined = undefined\n ): void {\n if (propertyKey) {\n Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);\n } else {\n Reflect.defineMetadata(metadataKey, metadataValue, target);\n }\n }\n\n static get(\n metadataKey: any,\n target: Object,\n propertyKey: string | symbol | undefined = undefined\n ): T {\n return propertyKey\n ? Reflect.getMetadata(metadataKey, target, propertyKey)\n : Reflect.getMetadata(metadataKey, target);\n }\n\n static createCustomRouteArg(\n paramType: string,\n index: number,\n pipes: any[] = [],\n data: any = undefined\n ): any {\n // @ts-ignore\n return {\n [`${paramType}${CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: {\n index,\n factory: (_: any, ctx: ArgumentsHost) =>\n R.getContextRequest(ctx)[paramType],\n data,\n pipes,\n },\n };\n }\n\n static createRouteArg(\n paramTypes: RouteParamtypes,\n index: number,\n pipes: any[] = [],\n data: any = undefined\n ): any {\n return {\n [`${paramTypes}:${index}`]: {\n index,\n pipes,\n data,\n },\n };\n }\n\n static setDecorators(\n decorators: (PropertyDecorator | MethodDecorator)[],\n target: object,\n name: string\n ): void {\n // this makes metadata decorator works\n const decoratedDescriptor: PropertyDescriptor = Reflect.decorate(\n decorators,\n target,\n name,\n Reflect.getOwnPropertyDescriptor(target, name)\n );\n\n // this makes proxy decorator works\n Reflect.defineProperty(target, name, decoratedDescriptor);\n }\n\n static setParsedRequestArg(index: number) {\n return R.createCustomRouteArg(PARSED_CRUD_REQUEST_KEY, index);\n }\n\n static setBodyArg(index: number, pipes: any[] = []) {\n return R.createRouteArg(RouteParamtypes.BODY, index, pipes);\n }\n\n static setCrudOptions(options: MergedCrudOptions, target: any) {\n R.set(CRUD_OPTIONS_METADATA, options, target);\n }\n\n static setRoute(route: BaseRoute, func: Function) {\n R.set(PATH_METADATA, route.path, func);\n R.set(METHOD_METADATA, route.method, func);\n }\n\n static setInterceptors(interceptors: any[], func: Function) {\n R.set(INTERCEPTORS_METADATA, interceptors, func);\n }\n\n static setRouteArgs(metadata: any, target: any, name: string) {\n R.set(ROUTE_ARGS_METADATA, metadata, target, name);\n }\n\n static setRouteArgsTypes(metadata: any, target: any, name: string) {\n R.set(PARAMTYPES_METADATA, metadata, target, name);\n }\n\n static setAction(action: CrudActions, func: Function) {\n R.set(ACTION_NAME_METADATA, action, func);\n }\n\n static setCrudAuthOptions(metadata: any, target: any) {\n R.set(CRUD_AUTH_OPTIONS_METADATA, metadata, target);\n }\n\n static getCrudAuthOptions(target: any): AuthOptions {\n return R.get(CRUD_AUTH_OPTIONS_METADATA, target);\n }\n\n static getCrudOptions(target: any): MergedCrudOptions {\n return R.get(CRUD_OPTIONS_METADATA, target);\n }\n\n static getAction(func: Function): CrudActions {\n return R.get(ACTION_NAME_METADATA, func);\n }\n\n static getOverrideRoute(func: Function): BaseRouteName {\n return R.get(OVERRIDE_METHOD_METADATA, func);\n }\n\n static getInterceptors(func: Function): any[] {\n return R.get(INTERCEPTORS_METADATA, func) || [];\n }\n\n static getRouteArgs(target: any, name: string): any {\n return R.get(ROUTE_ARGS_METADATA, target, name);\n }\n\n static getRouteArgsTypes(target: any, name: string): any[] {\n return R.get(PARAMTYPES_METADATA, target, name) || [];\n }\n\n static getParsedBody(func: Function): any {\n return R.get(PARSED_BODY_METADATA, func);\n }\n\n static getContextRequest(ctx: ArgumentsHost): any {\n return isFunction(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx;\n }\n}\n","module.exports = require(\"@nestjs/common/enums/route-paramtypes.enum\");","module.exports = require(\"@nestjs/common/constants\");","export const REQUEST_DELIM: string = \"||\";\nexport const REQUEST_DELIM_STR: string = \",\";\nexport const REQUEST_PREFIX_EXTRA: string = \"extra.\";\nexport const FEATURE_NAME_METADATA: string = \"CRUDX_FEATURE_NAME_METADATA\";\nexport const ACTION_NAME_METADATA: string = \"CRUDX_ACTION_NAME_METADATA\";\nexport const OVERRIDE_METHOD_METADATA: string =\n \"CRUDX_OVERRIDE_METHOD_METADATA\";\nexport const PARSED_BODY_METADATA: string = \"CRUDX_PARSED_BODY_METADATA\";\nexport const PARSED_CRUD_REQUEST_KEY: string = \"CRUDX_PARSED_CRUD_REQUEST_KEY\";\nexport const CRUD_OPTIONS_METADATA: string = \"CRUDX_CRUD_OPTIONS_METADATA\";\nexport const CRUD_AUTH_OPTIONS_METADATA: string =\n \"CRUDX_CRUD_AUTH_OPTIONS_METADATA\";\n","import { isEqual, isNil, isNumber, isObject, isUndefined, keys } from \"lodash\";\nimport { RequestQueryException } from \"../exceptions\";\nimport { CustomOperators, ParamOption, ParamsOptions } from \"../interfaces\";\n\nimport {\n ComparisonOperator,\n CondOperator,\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n} from \"../types\";\n\nimport {\n isArrayOfStrings,\n isArrayOfStringsFull,\n isStringFull,\n} from \"./checkers.helper\";\n\nexport const comparisonOperatorsList: string[] = [\n ...keys(CondOperator).map(\n (n: string) => CondOperator[n as keyof typeof CondOperator]\n ),\n];\n\nexport const sortOrdersList: string[] = [\"ASC\", \"DESC\"];\n\nconst sortOrdersListStr: string = sortOrdersList.join();\n\nexport function validateFields(fields: QueryFields): void {\n if (!isArrayOfStrings(fields)) {\n throw new RequestQueryException(\n \"Invalid fields. Array of strings expected\"\n );\n }\n}\n\nexport function validateCondition(\n val: QueryFilter,\n cond: \"filter\" | \"or\" | \"search\",\n customOperators: CustomOperators\n): void {\n if (!isObject(val) || !isStringFull(val.field)) {\n throw new RequestQueryException(\n `Invalid field type in ${cond} condition. String expected`\n );\n }\n validateComparisonOperator(val.operator, customOperators);\n}\n\nexport function validateComparisonOperator(\n operator: ComparisonOperator,\n customOperators: CustomOperators = {}\n): void {\n const extendedComparisonOperatorsList = [\n ...comparisonOperatorsList,\n ...Object.keys(customOperators),\n ];\n if (!extendedComparisonOperatorsList.includes(operator)) {\n throw new RequestQueryException(\n `Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`\n );\n }\n}\n\nexport function validateJoin(join: QueryJoin): void {\n if (!isObject(join) || !isStringFull(join.field)) {\n throw new RequestQueryException(\"Invalid join field. String expected\");\n }\n if (!isUndefined(join.select) && !isArrayOfStringsFull(join.select)) {\n throw new RequestQueryException(\n \"Invalid join select. Array of strings expected\"\n );\n }\n}\n\nexport function validateSort(sort: QuerySort): void {\n if (!isObject(sort) || !isStringFull(sort.field)) {\n throw new RequestQueryException(\"Invalid sort field. String expected\");\n }\n if (\n !isEqual(sort.order, sortOrdersList[0]) &&\n !isEqual(sort.order, sortOrdersList[1])\n ) {\n throw new RequestQueryException(\n `Invalid sort order. ${sortOrdersListStr} expected`\n );\n }\n}\n\nexport function validateNumeric(\n val: number,\n num: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"include_deleted\" | string\n): void {\n if (!isNumber(val)) {\n throw new RequestQueryException(`Invalid ${num}. Number expected`);\n }\n}\n\nexport function validateParamOption(\n options: ParamsOptions,\n name: string\n): void {\n if (!isObject(options)) {\n throw new RequestQueryException(\n `Invalid param ${name}. Invalid crud options`\n );\n }\n const option: ParamOption = options[name];\n if (option && option.disabled) {\n return;\n }\n if (!isObject(option) || isNil(option.field) || isNil(option.type)) {\n throw new RequestQueryException(`Invalid param option in Crud`);\n }\n}\n\nexport function validateUUID(str: string, name: string): void {\n const uuid: RegExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n const uuidV4: RegExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n if (!uuidV4.test(str) && !uuid.test(str)) {\n throw new RequestQueryException(\n `Invalid param ${name}. UUID string expected`\n );\n }\n}\n","export * from \"./request-query.exception\";\n","export class RequestQueryException extends Error {\n constructor(msg: string) {\n super(msg);\n }\n}\n","export * from \"./common.types\";\nexport * from \"./crud.types\";\nexport * from \"./request-param.types\";\nexport * from \"./request-query.types\";\n","export type ClassType = {\n new (...args: any[]): T;\n};\n\nexport type ObjectLiteral = {\n [key: string]: any;\n};\n","import { SCondition, QueryFilter } from \"./request-query.types\";\n\nexport type BaseRouteName =\n | \"getManyBase\"\n | \"getOneBase\"\n | \"createOneBase\"\n | \"createManyBase\"\n | \"updateOneBase\"\n | \"replaceOneBase\"\n | \"deleteOneBase\"\n | \"recoverOneBase\";\n\nexport type QueryFilterFunction = (\n search?: SCondition,\n getMany?: boolean\n) => SCondition | void;\n\nexport type QueryFilterOption =\n | QueryFilter[]\n | SCondition\n | QueryFilterFunction;\n","export type ParamOptionType = \"number\" | \"string\" | \"uuid\";\n","import { ObjectLiteral } from \"./common.types\";\n\nexport type QueryFields = string[];\n\nexport interface QueryFilter {\n field: string;\n operator: ComparisonOperator;\n value?: any;\n}\n\nexport type QueryFilterArr = [string, ComparisonOperator, any?];\n\nexport interface QueryJoin {\n field: string;\n select?: QueryFields;\n}\n\nexport type QueryJoinArr = [string, QueryFields?];\n\nexport interface QuerySort {\n field: string;\n order: QuerySortOperator;\n}\n\n/** Extra object or null */\nexport type QueryExtra = ObjectLiteral | undefined;\n\nexport type QuerySortArr = [string, QuerySortOperator];\n\nexport type QuerySortOperator = \"ASC\" | \"DESC\";\n\nexport enum CondOperator {\n EQUALS = \"$eq\",\n NOT_EQUALS = \"$ne\",\n GREATER_THAN = \"$gt\",\n LOWER_THAN = \"$lt\",\n GREATER_THAN_EQUALS = \"$gte\",\n LOWER_THAN_EQUALS = \"$lte\",\n STARTS = \"$starts\",\n ENDS = \"$ends\",\n CONTAINS = \"$cont\",\n EXCLUDES = \"$excl\",\n IN = \"$in\",\n NOT_IN = \"$notin\",\n IS_NULL = \"$isnull\",\n NOT_NULL = \"$notnull\",\n BETWEEN = \"$between\",\n EQUALS_LOW = \"$eqL\",\n NOT_EQUALS_LOW = \"$neL\",\n STARTS_LOW = \"$startsL\",\n ENDS_LOW = \"$endsL\",\n CONTAINS_LOW = \"$contL\",\n EXCLUDES_LOW = \"$exclL\",\n IN_LOW = \"$inL\",\n NOT_IN_LOW = \"$notinL\",\n}\n\nexport type ComparisonOperator = keyof SFieldOperator | string;\n\n// new search\nexport type SPrimitivesVal = string | number | boolean;\n\nexport type SFiledValues = SPrimitivesVal | SPrimitivesVal[];\n\nexport interface SFieldOperator {\n $eq?: SFiledValues;\n $ne?: SFiledValues;\n $gt?: SFiledValues;\n $lt?: SFiledValues;\n $gte?: SFiledValues;\n $lte?: SFiledValues;\n $starts?: SFiledValues;\n $ends?: SFiledValues;\n $cont?: SFiledValues;\n $excl?: SFiledValues;\n $in?: SFiledValues;\n $notin?: SFiledValues;\n $between?: SFiledValues;\n $isnull?: SFiledValues;\n $notnull?: SFiledValues;\n $eqL?: SFiledValues;\n $neL?: SFiledValues;\n $startsL?: SFiledValues;\n $endsL?: SFiledValues;\n $contL?: SFiledValues;\n $exclL?: SFiledValues;\n $inL?: SFiledValues;\n $notinL?: SFiledValues;\n $or?: SFieldOperator;\n $and?: never;\n}\n\nexport type SField =\n | SPrimitivesVal\n | SFieldOperator\n | { [$custom: string]: SFiledValues };\n\nexport interface SFields {\n [key: string]: SField | Array | undefined;\n $or?: Array;\n $and?: never;\n}\n\nexport interface SConditionAND {\n $and?: Array;\n $or?: never;\n}\n\nexport type SConditionKey = \"$and\" | \"$or\";\n\nexport type SCondition = SFields | SConditionAND;\n","import { Type } from \"class-transformer\";\nimport { GetManyDefaultResponse } from \"../interfaces\";\nimport { ApiProperty } from \"@nestjs/swagger\";\n\nexport class SerializeHelper {\n static createGetManyDto(dto: any, resourceName: string): any {\n class GetManyResponseDto implements GetManyDefaultResponse {\n @ApiProperty({ type: dto, isArray: true })\n @Type(() => dto)\n // @ts-ignore\n data: any[];\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n count: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n total: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n page: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n pageCount: number;\n }\n\n Object.defineProperty(GetManyResponseDto, \"name\", {\n writable: false,\n value: `GetMany${resourceName}ResponseDto`,\n });\n\n return GetManyResponseDto;\n }\n\n static createGetOneResponseDto(resourceName: string): any {\n class GetOneResponseDto {}\n\n Object.defineProperty(GetOneResponseDto, \"name\", {\n writable: false,\n value: `${resourceName}ResponseDto`,\n });\n\n return GetOneResponseDto;\n }\n}\n","import { HttpStatus } from \"@nestjs/common\";\nimport { QueryBuilderService } from \"../services\";\nimport { get, isArray, isString, keys } from \"lodash\";\nimport {\n MergedCrudOptions,\n ParamsOptions,\n RequestQueryBuilderOptions,\n} from '../interfaces';\nimport { BaseRouteName } from '../types';\nimport { R } from './reflection.helper';\n\nimport { safeRequire } from './safe-require.helper';\nimport * as SWAGGER_CONSTANTS from '@nestjs/swagger/dist/constants';\nimport { getSchemaPath } from '@nestjs/swagger';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pluralize = require(\"pluralize\");\n\nexport const swaggerPkgJson = safeRequire(\"@nestjs/swagger/package.json\", () =>\n require(\"@nestjs/swagger/package.json\")\n);\n\nexport class Swagger {\n static operationsMap(modelName: string): { [key in BaseRouteName]: string } {\n return {\n getManyBase: `Retrieve multiple ${pluralize(modelName)}`,\n getOneBase: `Retrieve a single ${modelName}`,\n createManyBase: `Create multiple ${pluralize(modelName)}`,\n createOneBase: `Create a single ${modelName}`,\n updateOneBase: `Update a single ${modelName}`,\n replaceOneBase: `Replace a single ${modelName}`,\n deleteOneBase: `Delete a single ${modelName}`,\n recoverOneBase: `Recover one ${modelName}`,\n };\n }\n\n static setOperation(metadata: any, func: Function) {\n if (SWAGGER_CONSTANTS) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func);\n }\n }\n\n static setParams(metadata: any, func: Function) {\n /* istanbul ignore else */\n if (SWAGGER_CONSTANTS) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func);\n }\n }\n\n static setExtraModels(swaggerModels: any) {\n /* istanbul ignore else */\n if (SWAGGER_CONSTANTS) {\n const meta = Swagger.getExtraModels(swaggerModels.get);\n const models: any[] = [\n ...meta,\n ...keys(swaggerModels)\n .map((name) => swaggerModels[name])\n .filter((one) => one && one.name !== swaggerModels.get.name),\n ];\n R.set(\n SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS,\n models,\n swaggerModels.get\n );\n }\n }\n\n static setResponseOk(metadata: any, func: Function) {\n /* istanbul ignore else */\n if (SWAGGER_CONSTANTS) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func);\n }\n }\n\n static getOperation(func: Function): any {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {}\n : {};\n }\n\n static getParams(func: Function): any[] {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || []\n : [];\n }\n\n static getExtraModels(target: any): any[] {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || []\n : [];\n }\n\n static getResponseOk(func: Function): any {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {}\n : {};\n }\n\n static createResponseMeta(\n name: BaseRouteName,\n options: MergedCrudOptions,\n swaggerModels: any\n ): any {\n const { routes, query } = options;\n\n switch (name) {\n case \"getOneBase\":\n return {\n [HttpStatus.OK]: {\n description: \"Get one base response\",\n type: swaggerModels.get,\n },\n };\n case \"getManyBase\":\n return {\n [HttpStatus.OK]: query?.alwaysPaginate\n ? {\n description: \"Get paginated response\",\n type: swaggerModels.getMany,\n }\n : {\n description: \"Get many base response\",\n schema: {\n oneOf: [\n {\n $ref: getSchemaPath(swaggerModels.getMany.name),\n },\n {\n type: \"array\",\n items: {\n $ref: getSchemaPath(swaggerModels.get.name),\n },\n },\n ],\n },\n },\n };\n case \"createOneBase\":\n return {\n [HttpStatus.CREATED]: {\n description: \"Get create one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.create.name),\n },\n },\n };\n case \"createManyBase\":\n return {\n [HttpStatus.CREATED]: swaggerModels.createMany\n ? {\n description: \"Get create many base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.createMany.name),\n },\n }\n : {\n description: \"Get create many base response\",\n schema: {\n type: \"array\",\n items: {\n $ref: getSchemaPath(swaggerModels.create.name),\n },\n },\n },\n };\n case \"deleteOneBase\":\n return {\n [HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted\n ? {\n description: \"Delete one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.delete.name),\n },\n }\n : {\n description: \"Delete one base response\",\n },\n };\n case \"recoverOneBase\":\n return {\n [HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered\n ? {\n description: \"Recover one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.recover.name),\n },\n }\n : {\n description: \"Recover one base response\",\n },\n };\n default:\n const dto = swaggerModels[name.split(\"OneBase\")[0]];\n return {\n [HttpStatus.OK]: {\n description: \"Response\",\n schema: { $ref: getSchemaPath(dto.name) },\n },\n };\n }\n }\n\n static createPathParamsMeta(options: ParamsOptions): any[] {\n return SWAGGER_CONSTANTS\n ? keys(options).map((param) => ({\n name: param,\n required: true,\n in: \"path\",\n type: options[param].type === \"number\" ? Number : String,\n enum: isArray(options[param]?.enum)\n ? Object.values(>options[param].enum)\n : undefined,\n }))\n : [];\n }\n\n static createQueryParamsMeta(\n name: BaseRouteName,\n options: MergedCrudOptions\n ) {\n if (options.swagger === undefined || options.swagger.enabled) {\n return [];\n }\n\n const {\n delim: d,\n delimStr: coma,\n fields,\n search,\n filter,\n or,\n join,\n sort,\n limit,\n offset,\n page,\n cache,\n includeDeleted,\n } = Swagger.getQueryParamsNames();\n const docsLink = (a: string) =>\n // TODO: to modify\n `Docs`;\n\n const fieldsMetaBase = {\n name: fields,\n description: `Selects resource fields. ${docsLink(\"select\")}`,\n required: false,\n in: \"query\",\n };\n const fieldsMeta = {\n ...fieldsMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: false,\n };\n\n const searchMetaBase = {\n name: search,\n description: `Adds search condition. ${docsLink(\"search\")}`,\n required: false,\n in: \"query\",\n };\n\n const searchMeta = { ...searchMetaBase, schema: { type: \"string\" } };\n\n const filterMetaBase = {\n name: filter,\n description: `Adds filter condition. ${docsLink(\"filter\")}`,\n required: false,\n in: \"query\",\n };\n\n const filterMeta = {\n ...filterMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const orMetaBase = {\n name: or,\n description: `Adds OR condition. ${docsLink(\"or\")}`,\n required: false,\n in: \"query\",\n };\n\n const orMeta = {\n ...orMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const sortMetaBase = {\n name: sort,\n description: `Adds sort by field. ${docsLink(\"sort\")}`,\n required: false,\n in: \"query\",\n };\n\n const sortMeta = {\n ...sortMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const joinMetaBase = {\n name: join,\n description: `Adds relational resources. ${docsLink(\"join\")}`,\n required: false,\n in: \"query\",\n };\n\n const joinMeta = {\n ...joinMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const limitMetaBase = {\n name: limit,\n description: `Limit amount of resources. ${docsLink(\"limit\")}`,\n required: false,\n in: \"query\",\n };\n\n const limitMeta = { ...limitMetaBase, schema: { type: \"integer\" } };\n\n const offsetMetaBase = {\n name: offset,\n description: `Offset amount of resources. ${docsLink(\"offset\")}`,\n required: false,\n in: \"query\",\n };\n\n const offsetMeta = { ...offsetMetaBase, schema: { type: \"integer\" } };\n\n const pageMetaBase = {\n name: page,\n description: `Page portion of resources. ${docsLink(\"page\")}`,\n required: false,\n in: \"query\",\n };\n\n const pageMeta = { ...pageMetaBase, schema: { type: \"integer\" } };\n\n const cacheMetaBase = {\n name: cache,\n description: `Reset cache (if was enabled). ${docsLink(\"cache\")}`,\n required: false,\n in: \"query\",\n };\n\n const cacheMeta = {\n ...cacheMetaBase,\n schema: { type: \"integer\", minimum: 0, maximum: 1 },\n };\n\n const includeDeletedMetaBase = {\n name: includeDeleted,\n description: `Include deleted. ${docsLink(\"includeDeleted\")}`,\n required: false,\n in: \"query\",\n };\n\n const includeDeletedMeta = {\n ...includeDeletedMetaBase,\n schema: { type: \"integer\", minimum: 0, maximum: 1 },\n };\n\n switch (name) {\n case \"getManyBase\":\n return options.query?.softDelete\n ? [\n fieldsMeta,\n searchMeta,\n filterMeta,\n orMeta,\n sortMeta,\n joinMeta,\n limitMeta,\n offsetMeta,\n pageMeta,\n cacheMeta,\n includeDeletedMeta,\n ]\n : [\n fieldsMeta,\n searchMeta,\n filterMeta,\n orMeta,\n sortMeta,\n joinMeta,\n limitMeta,\n offsetMeta,\n pageMeta,\n cacheMeta,\n ];\n case \"getOneBase\":\n return options.query?.softDelete\n ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta]\n : [fieldsMeta, joinMeta, cacheMeta];\n default:\n return [];\n }\n }\n\n static getQueryParamsNames() {\n const qbOptions: RequestQueryBuilderOptions =\n QueryBuilderService.getOptions();\n const name = (n: any) => {\n const selected = get(qbOptions, `paramNamesMap[${n}]`);\n return isString(selected) ? selected : selected?.[0];\n };\n\n return {\n delim: qbOptions.delim,\n delimStr: qbOptions.delimStr,\n fields: name(\"fields\"),\n search: name(\"search\"),\n filter: name(\"filter\"),\n or: name(\"or\"),\n join: name(\"join\"),\n sort: name(\"sort\"),\n limit: name(\"limit\"),\n offset: name(\"offset\"),\n page: name(\"page\"),\n cache: name(\"cache\"),\n includeDeleted: name(\"includeDeleted\"),\n };\n }\n}\n","export function safeRequire(path: string, loader?: () => T): T | null {\n try {\n return loader ? loader() : require(path);\n } catch (_) {\n return null;\n }\n}\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 34;\nmodule.exports = webpackEmptyContext;","module.exports = require(\"@nestjs/swagger/dist/constants\");","module.exports = require(\"pluralize\");","module.exports = require(\"@nestjs/swagger/package.json\");","import { get, isNil, isObject, isString, isUndefined } from \"lodash\";\n\nimport { stringify } from \"qs\";\n\nimport {\n CreateQueryParams,\n CustomOperators,\n ParamsNamesMap,\n RequestQueryBuilderOptions,\n} from \"../interfaces\";\n\nimport {\n QueryFields,\n QueryFilter,\n QueryFilterArr,\n QueryJoin,\n QueryJoinArr,\n QuerySort,\n QuerySortArr,\n SCondition,\n} from \"../types\";\n\nimport {\n hasValue,\n isArrayFull,\n validateCondition,\n validateFields,\n validateJoin,\n validateNumeric,\n validateSort,\n} from \"../helpers\";\n\nimport {\n REQUEST_DELIM,\n REQUEST_DELIM_STR,\n REQUEST_PREFIX_EXTRA,\n} from \"../constants\";\n\nexport class QueryBuilderService {\n constructor() {\n this.setParamNames();\n }\n\n private static _options: RequestQueryBuilderOptions = {\n delim: REQUEST_DELIM,\n delimStr: REQUEST_DELIM_STR,\n paramNamesMap: {\n fields: [\"fields\", \"select\"],\n search: \"s\",\n filter: \"filter\",\n or: \"or\",\n join: \"join\",\n sort: \"sort\",\n limit: [\"limit\", \"per_page\"],\n offset: \"offset\",\n page: \"page\",\n cache: \"cache\",\n includeDeleted: \"include_deleted\",\n extra: REQUEST_PREFIX_EXTRA,\n },\n };\n private paramNames: {\n [key in keyof ParamsNamesMap as string]: string;\n } = {};\n public queryObject: { [key: string]: any } = {};\n public queryString: string = \"\";\n\n static setOptions(options: RequestQueryBuilderOptions) {\n QueryBuilderService._options = {\n ...QueryBuilderService._options,\n ...options,\n paramNamesMap: {\n ...QueryBuilderService._options.paramNamesMap,\n ...(options.paramNamesMap ? options.paramNamesMap : {}),\n },\n };\n }\n\n static getOptions(): RequestQueryBuilderOptions {\n return QueryBuilderService._options;\n }\n\n static create(\n params?: CreateQueryParams,\n customOperators: CustomOperators = {}\n ): QueryBuilderService {\n const qb: QueryBuilderService = new QueryBuilderService();\n return isObject(params)\n ? qb.createFromParams(params, customOperators)\n : qb;\n }\n\n get options(): RequestQueryBuilderOptions {\n return QueryBuilderService._options;\n }\n\n setParamNames(): void {\n if (QueryBuilderService._options.paramNamesMap) {\n Object.keys(QueryBuilderService._options.paramNamesMap).forEach(\n (key: string): void => {\n const name = get(QueryBuilderService._options.paramNamesMap, key);\n this.paramNames[key] = isString(name)\n ? (name as string)\n : (name[0] as string);\n }\n );\n }\n }\n\n query(encode = true): string {\n if (this.queryObject[this.paramNames[\"search\"]]) {\n this.queryObject[this.paramNames[\"filter\"]] = undefined;\n this.queryObject[this.paramNames[\"or\"]] = undefined;\n }\n this.queryString = stringify(this.queryObject, { encode });\n return this.queryString;\n }\n\n select(fields?: QueryFields): this {\n if (!isNil(fields) && isArrayFull(fields)) {\n validateFields(fields);\n this.queryObject[this.paramNames[\"fields\"]] = fields.join(\n this.options.delimStr\n );\n }\n return this;\n }\n\n search(s?: SCondition) {\n if (!isNil(s) && isObject(s)) {\n this.queryObject[this.paramNames[\"search\"]] = JSON.stringify(s);\n }\n return this;\n }\n\n setFilter(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n customOperators: CustomOperators = {}\n ): this {\n this.setCondition(f, \"filter\", customOperators);\n return this;\n }\n\n setOr(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n customOperators: CustomOperators = {}\n ): this {\n this.setCondition(f, \"or\", customOperators);\n return this;\n }\n\n setJoin(\n j: QueryJoin | QueryJoinArr | Array | undefined\n ): this {\n if (!isNil(j)) {\n const param: string = this.checkQueryObjectParam(\"join\", []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(j) && !isString(j[0])\n ? (j as Array).map((o) => this.addJoin(o))\n : [this.addJoin(j as QueryJoin | QueryJoinArr)]),\n ];\n }\n return this;\n }\n\n sortBy(\n s: QuerySort | QuerySortArr | Array | undefined\n ): this {\n if (!isNil(s)) {\n const param = this.checkQueryObjectParam(\"sort\", []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(s) && !isString(s[0])\n ? (s as Array).map((o) => this.addSortBy(o))\n : [this.addSortBy(s as QuerySort | QuerySortArr)]),\n ];\n }\n return this;\n }\n\n setLimit(n: number | undefined): this {\n this.setNumeric(n, \"limit\");\n return this;\n }\n\n setOffset(n: number | undefined): this {\n this.setNumeric(n, \"offset\");\n return this;\n }\n\n setPage(n: number | undefined): this {\n this.setNumeric(n, \"page\");\n return this;\n }\n\n resetCache(): this {\n this.setNumeric(0, \"cache\");\n return this;\n }\n\n setIncludeDeleted(n: number | undefined): this {\n this.setNumeric(n, \"includeDeleted\");\n return this;\n }\n\n cond(\n f: QueryFilter | QueryFilterArr,\n cond: \"filter\" | \"or\" | \"search\" = \"search\",\n customOperators: CustomOperators = {}\n ): string {\n const filter = Array.isArray(f)\n ? { field: f[0], operator: f[1], value: f[2] }\n : f;\n validateCondition(filter, cond, customOperators);\n const d = this.options.delim;\n\n return (\n filter.field +\n d +\n filter.operator +\n (hasValue(filter.value) ? d + filter.value : \"\")\n );\n }\n\n private addJoin(j: QueryJoin | QueryJoinArr): string {\n const join: QueryJoin = Array.isArray(j)\n ? { field: j[0], select: j[1] }\n : j;\n validateJoin(join);\n const d: string | undefined = this.options.delim;\n const ds: string | undefined = this.options.delimStr;\n\n return (\n join.field +\n (isArrayFull(join.select) ? d + (join.select?.join(ds) ?? \"\") : \"\")\n );\n }\n\n private addSortBy(s: QuerySort | QuerySortArr): string {\n const sort: QuerySort = Array.isArray(s) ? { field: s[0], order: s[1] } : s;\n validateSort(sort);\n const ds: string | undefined = this.options.delimStr;\n\n return sort.field + ds + sort.order;\n }\n\n private createFromParams(\n params: CreateQueryParams,\n customOperators: CustomOperators\n ): this {\n this.select(params.fields);\n this.search(params.search);\n this.setFilter(params.filter, customOperators);\n this.setOr(params.or, customOperators);\n this.setJoin(params.join);\n this.setLimit(params.limit);\n this.setOffset(params.offset);\n this.setPage(params.page);\n this.sortBy(params.sort);\n if (params.resetCache) {\n this.resetCache();\n }\n this.setIncludeDeleted(params.includeDeleted);\n return this;\n }\n\n private checkQueryObjectParam(\n cond: keyof ParamsNamesMap,\n defaults: any\n ): string {\n const param = this.paramNames[cond];\n if (isNil(this.queryObject[param]) && !isUndefined(defaults)) {\n this.queryObject[param] = defaults;\n }\n return param;\n }\n\n private setCondition(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n cond: \"filter\" | \"or\",\n customOperators: CustomOperators\n ): void {\n if (!isNil(f)) {\n const param = this.checkQueryObjectParam(cond, []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(f) && !isString(f[0])\n ? (f as Array).map((o) =>\n this.cond(o, cond, customOperators)\n )\n : [\n this.cond(\n f as QueryFilter | QueryFilterArr,\n cond,\n customOperators\n ),\n ]),\n ];\n }\n }\n\n private setNumeric(\n n: number | undefined,\n cond: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"includeDeleted\"\n ): void {\n if (!isNil(n)) {\n validateNumeric(n, cond);\n this.queryObject[this.paramNames[cond]] = n;\n }\n }\n}\n","module.exports = require(\"qs\");","module.exports = require(\"deepmerge\");","import {\n get,\n has,\n isDate,\n isEmpty,\n isNil,\n isObject,\n isString,\n keys,\n set,\n} from \"lodash\";\n\nimport { RequestQueryException } from \"../exceptions\";\n\nimport {\n CustomOperators,\n ParamOption,\n ParamsNamesMap,\n ParamsOptions,\n ParsedRequestParams,\n RequestQueryBuilderOptions,\n} from \"../interfaces\";\n\nimport {\n ComparisonOperator,\n CondOperator,\n ObjectLiteral,\n QueryExtra,\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n SConditionAND,\n SFields,\n} from \"../types\";\n\nimport { ClassTransformOptions } from \"class-transformer\";\n\nimport { QueryBuilderService } from \"./query-builder.service\";\nimport {\n hasValue,\n isArrayFull,\n isDateString,\n isStringFull,\n validateCondition,\n validateJoin,\n validateNumeric,\n validateParamOption,\n validateSort,\n validateUUID,\n} from \"../helpers\";\n\nimport { REQUEST_PREFIX_EXTRA } from \"../constants\";\n\nexport class QueryParserService implements ParsedRequestParams {\n public fields: QueryFields = [];\n public paramsFilter: (QueryFilter | undefined)[] = [];\n public authPersist: ObjectLiteral | undefined = undefined;\n\n public classTransformOptions: ClassTransformOptions | undefined = undefined;\n\n public search: SCondition | undefined = undefined;\n public filter: QueryFilter[] = [];\n public or: QueryFilter[] = [];\n public join: QueryJoin[] = [];\n public sort: QuerySort[] = [];\n public limit: number | undefined;\n public offset: number | undefined;\n public page: number | undefined;\n public cache: number | undefined;\n public includeDeleted: number | undefined;\n public extra: QueryExtra = {};\n\n private _params: any;\n private _query: any;\n private _paramNames: string[] = [];\n private _paramsOptions: ParamsOptions = {};\n\n private get _options(): RequestQueryBuilderOptions {\n return QueryBuilderService.getOptions();\n }\n\n static create(): QueryParserService {\n return new QueryParserService();\n }\n\n getParsed(): ParsedRequestParams {\n return {\n fields: this.fields,\n paramsFilter: this.paramsFilter,\n authPersist: this.authPersist,\n classTransformOptions: this.classTransformOptions,\n search: this.search,\n filter: this.filter,\n or: this.or,\n join: this.join,\n sort: this.sort,\n limit: this.limit,\n offset: this.offset,\n page: this.page,\n cache: this.cache,\n includeDeleted: this.includeDeleted,\n extra: this.extra,\n };\n }\n\n setAuthPersist(persist: ObjectLiteral = {}) {\n this.authPersist = persist || /* istanbul ignore next */ {};\n }\n\n setClassTransformOptions(options: ClassTransformOptions = {}) {\n this.classTransformOptions = options || /* istanbul ignore next */ {};\n }\n\n convertFilterToSearch(filter: QueryFilter): SFields | SConditionAND {\n const isEmptyValue = {\n isnull: true,\n notnull: true,\n };\n\n return filter\n ? {\n [filter.field]: {\n [filter.operator]: has(isEmptyValue, filter.operator)\n ? get(isEmptyValue, filter.operator)\n : filter.value,\n },\n }\n : /* istanbul ignore next */ {};\n }\n\n parseQuery(query: any, customOperators: CustomOperators = {}): this {\n if (isObject(query)) {\n const paramNames: string[] = keys(query);\n\n if (!isEmpty(paramNames)) {\n this._query = query;\n this._paramNames = paramNames;\n const searchData = this._query[this.getParamNames(\"search\")[0]];\n this.search = this.parseSearchQueryParam(searchData) as any;\n if (isNil(this.search)) {\n this.filter = this.parseQueryParam(\n \"filter\",\n this.conditionParser.bind(this, \"filter\", customOperators)\n );\n this.or = this.parseQueryParam(\n \"or\",\n this.conditionParser.bind(this, \"or\", customOperators)\n );\n }\n this.fields =\n this.parseQueryParam(\"fields\", this.fieldsParser.bind(this))[0] || [];\n this.join = this.parseQueryParam(\"join\", this.joinParser.bind(this));\n this.sort = this.parseQueryParam(\"sort\", this.sortParser.bind(this));\n this.limit = this.parseQueryParam(\n \"limit\",\n this.numericParser.bind(this, \"limit\")\n )[0];\n this.offset = this.parseQueryParam(\n \"offset\",\n this.numericParser.bind(this, \"offset\")\n )[0];\n this.page = this.parseQueryParam(\n \"page\",\n this.numericParser.bind(this, \"page\")\n )[0];\n this.cache = this.parseQueryParam(\n \"cache\",\n this.numericParser.bind(this, \"cache\")\n )[0];\n this.includeDeleted = this.parseQueryParam(\n \"includeDeleted\",\n this.numericParser.bind(this, \"includeDeleted\")\n )[0];\n\n this.extra = this.parseExtraFromQueryParam();\n }\n }\n\n return this;\n }\n\n parseParams(params: any, options: ParamsOptions): this {\n if (isObject(params)) {\n const paramNames: string[] = keys(params);\n\n if (!isNil(paramNames)) {\n this._params = params;\n this._paramsOptions = options;\n this.paramsFilter = paramNames\n .map((name: string) => this.paramParser(name))\n .filter((filter: QueryFilter | undefined) => filter);\n }\n }\n\n return this;\n }\n\n private getParamNames(type: keyof ParamsNamesMap): string[] {\n return this._paramNames.filter((p: string): boolean => {\n const name: string | string[] = get(\n this._options.paramNamesMap,\n type,\n \"\"\n );\n return isString(name)\n ? name === p\n : (name as string[]).some((m: string): boolean => m === p);\n });\n }\n\n private getParamValues(value: string | string[], parser: Function): any[] {\n if (isStringFull(value)) {\n return [parser.call(this, value)];\n }\n\n if (isArrayFull(value)) {\n return (value as string[]).map((val: string) => parser(val));\n }\n\n return [];\n }\n\n private parseQueryParam(type: keyof ParamsNamesMap, parser: Function): any[] {\n const param: string[] = this.getParamNames(type);\n\n if (isArrayFull(param)) {\n // @ts-ignore\n return param.reduce(\n // @ts-ignore\n (a: [], name: string): string[] => [\n ...a,\n ...this.getParamValues(this._query[name], parser),\n ],\n []\n );\n }\n\n return [];\n }\n\n private parseExtraFromQueryParam(): QueryExtra {\n const extraParam: string | string[] | [] = get(\n this._options.paramNamesMap,\n \"extra\",\n []\n );\n const params: string[] = Array.isArray(extraParam)\n ? extraParam\n : [extraParam];\n const extraKeys: {} = keys(this._query || {})\n .filter((k: string) => params.find((p: string) => k?.startsWith(p)))\n .reduce((o: {}, k: string) => {\n const key: string = k.replace(REQUEST_PREFIX_EXTRA, \"\");\n this.parseDotChainToObject(this._query[k], key, o);\n return o;\n }, {});\n return keys(extraKeys).length > 0 ? extraKeys : undefined;\n }\n\n /**\n * Build an object from data and composite key.\n *\n * @param data to used on parse workflow\n * @param key composite key as 'foo.bar.hero'\n * @param result object with parsed \"data\" and \"key\" structure\n * @private\n */\n private parseDotChainToObject(data: any, key: string, result: {} = {}): void {\n if (key.includes(\".\")) {\n const keys: string[] = key.split(\".\");\n const firstKey: string | undefined = keys.shift();\n set(result, firstKey as string, {});\n this.parseDotChainToObject(\n data,\n keys.join(\".\"),\n get(result, firstKey as string)\n );\n } else {\n set(result, key, this.parseValue(data));\n }\n }\n\n private parseValue(val: any) {\n try {\n const parsed = JSON.parse(val);\n\n // throw new Error('Don\\'t support object now')\n if (\n (!isDate(parsed) && isObject(parsed)) ||\n // JS cannot handle big numbers. Leave it as a string to prevent data loss\n (typeof parsed === \"number\" &&\n parsed.toLocaleString(\"fullwide\", { useGrouping: false }) !== val)\n ) {\n return val;\n }\n return parsed;\n } catch (_) {\n if (isDateString(val)) {\n return new Date(val);\n }\n return val;\n }\n }\n\n private parseValues(values: any) {\n return isArrayFull(values)\n ? values.map((v: any) => this.parseValue(v))\n : this.parseValue(values);\n }\n\n private parseSearchQueryParam(d: any): SCondition | undefined {\n if (isNil(d)) {\n return undefined;\n }\n try {\n const data = JSON.parse(d);\n\n if (!isObject(data)) {\n throw new Error();\n }\n\n return data;\n } catch (_) {\n throw new RequestQueryException(\"Invalid search param. JSON expected\");\n }\n }\n\n private fieldsParser(data: string): QueryFields {\n // @ts-ignore\n return data.split(this._options.delimStr);\n }\n\n private conditionParser(\n cond: \"filter\" | \"or\" | \"search\",\n customOperators: CustomOperators,\n data: string\n ): QueryFilter {\n const isArrayValue: string[] = [\n CondOperator.IN as string,\n CondOperator.NOT_IN as string,\n CondOperator.BETWEEN as string,\n CondOperator.IN_LOW as string,\n CondOperator.NOT_IN_LOW as string,\n ].concat(\n Object.keys(customOperators).filter(\n (op: string) => customOperators[op].isArray\n )\n );\n const isEmptyValue: string[] = [\n CondOperator.IS_NULL as string,\n CondOperator.NOT_NULL as string,\n ];\n // @ts-ignore\n const param: string[] = data.split(this._options.delim);\n const field: string = param[0];\n const operator: string = param[1] as ComparisonOperator;\n let value: string = param[2] || \"\";\n\n if (isArrayValue.some((name: string): boolean => name === operator)) {\n // @ts-ignore\n value = value.split(this._options.delimStr) as any;\n }\n\n value = this.parseValues(value);\n\n if (\n !isEmptyValue.some((name: string): boolean => name === operator) &&\n !hasValue(value)\n ) {\n throw new RequestQueryException(`Invalid ${cond} value`);\n }\n\n const condition: QueryFilter = { field, operator, value };\n validateCondition(condition, cond, customOperators);\n\n return condition;\n }\n\n private joinParser(data: string): QueryJoin {\n // @ts-ignore\n const param: string[] = data.split(this._options.delim);\n\n const join: QueryJoin = {\n field: param[0],\n select: isStringFull(param[1])\n ? // @ts-ignore\n param[1].split(this._options.delimStr)\n : undefined,\n };\n validateJoin(join);\n\n return join;\n }\n\n private sortParser(data: string): QuerySort {\n const param: string[] = data.split(this._options.delimStr);\n const sort: QuerySort = {\n field: param[0],\n order: param[1] as any,\n };\n validateSort(sort);\n\n return sort;\n }\n\n private numericParser(\n num: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"includeDeleted\",\n data: string\n ): number {\n const val = this.parseValue(data);\n validateNumeric(val, num);\n\n return val;\n }\n\n private paramParser(name: string): QueryFilter | undefined {\n validateParamOption(this._paramsOptions, name);\n const option: ParamOption = this._paramsOptions[name];\n\n if (option.disabled) {\n return undefined;\n }\n\n let value = this._params[name];\n\n switch (option.type) {\n case \"number\":\n value = this.parseValue(value);\n validateNumeric(value, `param ${name}`);\n break;\n case \"uuid\":\n validateUUID(value, name);\n break;\n default:\n break;\n }\n\n return { field: option.field as string, operator: \"$eq\", value };\n }\n}\n","import { RequestMethod } from \"@nestjs/common\";\nimport { RouteParamtypes } from \"@nestjs/common/enums/route-paramtypes.enum\";\nimport { get, isEqual, isFunction, isNil, isUndefined, keys } from \"lodash\";\nimport {\n createBulkDto,\n getValidationPipe,\n isArrayFull,\n isFalse,\n isIn,\n isObjectFull,\n R,\n SerializeHelper,\n Swagger,\n} from \"../helpers\";\n\nimport { CrudActions, CrudValidationGroups } from \"../enums\";\nimport {\n CrudRequestInterceptor,\n CrudResponseInterceptor,\n} from \"../interceptors\";\n\nimport {\n AuthOptions,\n BaseRoute,\n CrudOptions,\n CrudRequest,\n MergedCrudOptions,\n OperatorsOptions,\n ParamsOptions,\n QueryOptions,\n RoutesOptions,\n SwaggerOptions,\n} from \"../interfaces\";\nimport { CrudConfigService } from \"../services\";\nimport { BaseRouteName } from \"../types\";\n\nimport * as SWAGGER_CONSTANTS from '@nestjs/swagger/dist/constants';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst deepmerge = require('deepmerge');\n\nexport class RoutesFactoryService {\n protected options: MergedCrudOptions;\n protected swaggerModels: any = {};\n\n constructor(protected target: any, options: CrudOptions) {\n this.options = options;\n this.create();\n }\n\n /* istanbul ignore next */\n static create(target: any, options: CrudOptions): RoutesFactoryService {\n return new RoutesFactoryService(target, options);\n }\n\n protected get targetProto(): any {\n return this.target.prototype;\n }\n\n protected get modelName(): string {\n return this.options.model.type.name;\n }\n\n protected get modelType(): any {\n return this.options.model.type;\n }\n\n protected get actionsMap(): { [key in BaseRouteName]: CrudActions } {\n return {\n getManyBase: CrudActions.ReadAll,\n getOneBase: CrudActions.ReadOne,\n createManyBase: CrudActions.CreateMany,\n createOneBase: CrudActions.CreateOne,\n updateOneBase: CrudActions.UpdateOne,\n deleteOneBase: CrudActions.DeleteOne,\n replaceOneBase: CrudActions.ReplaceOne,\n recoverOneBase: CrudActions.RecoverOne,\n };\n }\n\n protected create(): void {\n const routesSchema: BaseRoute[] = this.getRoutesSchema();\n this.mergeOptions();\n this.setResponseModels();\n this.createRoutes(routesSchema);\n this.overrideRoutes(routesSchema);\n this.enableRoutes(routesSchema);\n }\n\n protected mergeOptions(): void {\n // merge auth config\n const authOptions: AuthOptions = R.getCrudAuthOptions(this.target);\n this.options.auth = isObjectFull(authOptions) ? authOptions : {};\n if (isUndefined(this.options.auth.property)) {\n this.options.auth.property = CrudConfigService.config?.auth?.property;\n }\n if (isUndefined(this.options.auth.groups)) {\n this.options.auth.groups = CrudConfigService.config?.auth?.groups;\n }\n if (isUndefined(this.options.auth.classTransformOptions)) {\n // @ts-ignore\n this.options.auth.classTransformOptions =\n CrudConfigService.config.auth?.classTransformOptions;\n }\n\n // merge query config\n const query: QueryOptions | {} = isObjectFull(this.options.query)\n ? this.options.query\n : {};\n\n this.options.query = { ...CrudConfigService.config.query, ...query };\n\n // merge routes config\n const routes: RoutesOptions | {} = isObjectFull(this.options.routes)\n ? this.options.routes\n : {};\n this.options.routes = deepmerge(\n CrudConfigService.config.routes || {},\n routes,\n {\n // @ts-ignore\n arrayMerge: (a, b, c) => b,\n }\n );\n\n // merge operators config\n const operators: OperatorsOptions | {} = isObjectFull(\n this.options.operators\n )\n ? this.options.operators\n : {};\n this.options.operators = (\n deepmerge(\n CrudConfigService.config?.operators,\n operators\n )\n );\n\n // set params\n this.options.params = isObjectFull(this.options.params)\n ? this.options.params\n : isObjectFull(CrudConfigService.config.params)\n ? CrudConfigService.config.params\n : {};\n const hasPrimary: boolean = this.getPrimaryParams().length > 0;\n if (!hasPrimary) {\n // @ts-ignore\n this.options.params[\"id\"] = {\n field: \"id\",\n type: \"number\",\n primary: true,\n };\n }\n\n // set dto\n if (!isObjectFull(this.options.dto)) {\n this.options.dto = {};\n }\n\n // set serialize\n const serialize = isObjectFull(this.options.serialize)\n ? this.options.serialize\n : {};\n this.options.serialize = {\n ...CrudConfigService.config.serialize,\n ...serialize,\n };\n this.options.serialize.get = isFalse(this.options.serialize.get)\n ? false\n : this.options.serialize.get || this.modelType;\n this.options.serialize.getMany = isFalse(this.options.serialize.getMany)\n ? false\n : this.options.serialize.getMany\n ? this.options.serialize.getMany\n : isFalse(this.options.serialize.get)\n ? false\n : SerializeHelper.createGetManyDto(\n this.options.serialize.get,\n this.modelName\n );\n this.options.serialize.create = isFalse(this.options.serialize.create)\n ? false\n : this.options.serialize.create || this.modelType;\n this.options.serialize.update = isFalse(this.options.serialize.update)\n ? false\n : this.options.serialize.update || this.modelType;\n this.options.serialize.replace = isFalse(this.options.serialize.replace)\n ? false\n : this.options.serialize.replace || this.modelType;\n this.options.serialize.delete =\n isFalse(this.options.serialize.delete) ||\n !this.options.routes?.deleteOneBase?.returnDeleted\n ? false\n : this.options.serialize.delete || this.modelType;\n\n this.options.swagger = this.getSwaggerOptions();\n\n R.setCrudOptions(this.options, this.target);\n }\n\n protected getSwaggerOptions(): SwaggerOptions {\n const isSwaggerDefined = SWAGGER_CONSTANTS !== undefined && SWAGGER_CONSTANTS !== null;\n const options = {\n enabled: false,\n }\n\n if (this.options.swagger === undefined) {\n options.enabled = true && isSwaggerDefined;\n\n return options;\n }\n\n if (isFalse(this.options.swagger!.enabled)) {\n options.enabled = false;\n\n return options;\n }\n \n options.enabled = isSwaggerDefined;\n\n return options;\n }\n\n protected getRoutesSchema(): BaseRoute[] {\n return [\n {\n name: \"getOneBase\",\n path: \"/\",\n method: RequestMethod.GET,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"getManyBase\",\n path: \"/\",\n method: RequestMethod.GET,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"createOneBase\",\n path: \"/\",\n method: RequestMethod.POST,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"createManyBase\",\n path: \"/bulk\",\n method: RequestMethod.POST,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"updateOneBase\",\n path: \"/\",\n method: RequestMethod.PATCH,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"replaceOneBase\",\n path: \"/\",\n method: RequestMethod.PUT,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"deleteOneBase\",\n path: \"/\",\n method: RequestMethod.DELETE,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"recoverOneBase\",\n path: \"/recover\",\n method: RequestMethod.PATCH,\n enable: false,\n override: false,\n withParams: true,\n },\n ];\n }\n\n protected getManyBase(name: BaseRouteName) {\n this.targetProto[name] = function getManyBase(req: CrudRequest) {\n return this.service.getMany(req);\n };\n }\n\n protected getOneBase(name: BaseRouteName) {\n this.targetProto[name] = function getOneBase(req: CrudRequest) {\n return this.service.getOne(req);\n };\n }\n\n protected createOneBase(name: BaseRouteName) {\n this.targetProto[name] = function createOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.createOne(req, dto);\n };\n }\n\n protected createManyBase(name: BaseRouteName) {\n this.targetProto[name] = function createManyBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.createMany(req, dto);\n };\n }\n\n protected updateOneBase(name: BaseRouteName) {\n this.targetProto[name] = function updateOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.updateOne(req, dto);\n };\n }\n\n protected replaceOneBase(name: BaseRouteName) {\n this.targetProto[name] = function replaceOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.replaceOne(req, dto);\n };\n }\n\n protected deleteOneBase(name: BaseRouteName) {\n this.targetProto[name] = function deleteOneBase(req: CrudRequest) {\n return this.service.deleteOne(req);\n };\n }\n\n protected recoverOneBase(name: BaseRouteName) {\n this.targetProto[name] = function recoverOneBase(req: CrudRequest) {\n return this.service.recoverOne(req);\n };\n }\n\n protected canCreateRoute(name: BaseRouteName) {\n const only: BaseRouteName[] | undefined = this.options.routes?.only;\n const exclude: BaseRouteName[] | undefined = this.options.routes?.exclude;\n\n // include recover route only for models with soft delete option\n if (name === \"recoverOneBase\" && this.options.query?.softDelete !== true) {\n return false;\n }\n\n if (isArrayFull(only)) {\n // @ts-ignore\n return only.some((route: BaseRouteName): boolean => route === name);\n }\n\n if (isArrayFull(exclude)) {\n // @ts-ignore\n return !exclude.some((route: BaseRouteName): boolean => route === name);\n }\n\n return true;\n }\n\n protected setResponseModels() {\n const modelType = isFunction(this.modelType)\n ? this.modelType\n : SerializeHelper.createGetOneResponseDto(this.modelName);\n this.swaggerModels.get = isFunction(this.options.serialize?.get)\n ? this.options.serialize?.get\n : modelType;\n this.swaggerModels.getMany =\n this.options.serialize?.getMany ||\n SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName);\n this.swaggerModels.create = isFunction(this.options.serialize?.create)\n ? this.options.serialize?.create\n : modelType;\n this.swaggerModels.update = isFunction(this.options.serialize?.update)\n ? this.options.serialize?.update\n : modelType;\n this.swaggerModels.replace = isFunction(this.options.serialize?.replace)\n ? this.options.serialize?.replace\n : modelType;\n this.swaggerModels.delete = isFunction(this.options.serialize?.delete)\n ? this.options.serialize?.delete\n : modelType;\n this.swaggerModels.recover = isFunction(this.options.serialize?.recover)\n ? this.options.serialize?.recover\n : modelType;\n Swagger.setExtraModels(this.swaggerModels);\n }\n\n protected createRoutes(routesSchema: BaseRoute[]) {\n const primaryParams: string[] = this.getPrimaryParams().filter(\n (param: string) => !this.options.params?.[param]?.disabled\n );\n\n routesSchema.forEach((route) => {\n if (this.canCreateRoute(route.name)) {\n // create base method\n this[route.name](route.name);\n route.enable = true;\n // set metadata\n this.setBaseRouteMeta(route.name);\n }\n\n if (route.withParams && primaryParams.length > 0) {\n route.path =\n route.path !== \"/\"\n ? `${primaryParams\n .map((param: string): string => `/:${param}`)\n .join(\"\")}${route.path}`\n : primaryParams\n .map((param: string): string => `/:${param}`)\n .join(\"\");\n }\n });\n }\n\n protected overrideRoutes(routesSchema: BaseRoute[]): void {\n Object.getOwnPropertyNames(this.targetProto).forEach(\n (name: string): void => {\n const override: BaseRouteName = R.getOverrideRoute(\n this.targetProto[name]\n );\n const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) =>\n isEqual(r.name, override)\n );\n\n if (override && route && route.enable) {\n // get metadata\n const interceptors: any[] = R.getInterceptors(this.targetProto[name]);\n const baseInterceptors: any[] = R.getInterceptors(\n this.targetProto[override]\n );\n const baseAction: CrudActions = R.getAction(\n this.targetProto[override]\n );\n const operation = Swagger.getOperation(this.targetProto[name]);\n const baseOperation = Swagger.getOperation(\n this.targetProto[override]\n );\n const swaggerParams = Swagger.getParams(this.targetProto[name]);\n const baseSwaggerParams = Swagger.getParams(\n this.targetProto[override]\n );\n const responseOk = Swagger.getResponseOk(this.targetProto[name]);\n const baseResponseOk = Swagger.getResponseOk(\n this.targetProto[override]\n );\n // set metadata\n R.setInterceptors(\n [...baseInterceptors, ...interceptors],\n this.targetProto[name]\n );\n R.setAction(baseAction, this.targetProto[name]);\n Swagger.setOperation(\n { ...baseOperation, ...operation },\n this.targetProto[name]\n );\n Swagger.setParams(\n [...baseSwaggerParams, ...swaggerParams],\n this.targetProto[name]\n );\n Swagger.setResponseOk(\n { ...baseResponseOk, ...responseOk },\n this.targetProto[name]\n );\n this.overrideParsedBodyDecorator(override, name);\n // enable route\n R.setRoute(route, this.targetProto[name]);\n route.override = true;\n }\n }\n );\n }\n\n protected enableRoutes(routesSchema: BaseRoute[]) {\n routesSchema.forEach((route) => {\n if (!route.override && route.enable) {\n R.setRoute(route, this.targetProto[route.name]);\n }\n });\n }\n\n protected overrideParsedBodyDecorator(override: BaseRouteName, name: string) {\n const allowed: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"updateOneBase\",\n \"replaceOneBase\",\n ] as BaseRouteName[];\n const withBody: Boolean = isIn(override, allowed);\n const parsedBody = R.getParsedBody(this.targetProto[name]);\n\n if (withBody && parsedBody) {\n const baseKey: string = `${RouteParamtypes.BODY}:1`;\n const key: string = `${RouteParamtypes.BODY}:${parsedBody.index}`;\n const baseRouteArgs = R.getRouteArgs(this.target, override);\n const routeArgs = R.getRouteArgs(this.target, name);\n const baseBodyArg = baseRouteArgs[baseKey];\n R.setRouteArgs(\n {\n ...routeArgs,\n [key]: {\n ...baseBodyArg,\n index: parsedBody.index,\n },\n },\n this.target,\n name\n );\n\n /* istanbul ignore else */\n if (isEqual(override, \"createManyBase\")) {\n const paramTypes: any[] = R.getRouteArgsTypes(this.targetProto, name);\n const metatype = paramTypes[parsedBody.index];\n const types = [String, Boolean, Number, Array, Object];\n const toCopy: boolean = isIn(metatype, types) || isNil(metatype);\n\n if (toCopy) {\n const baseParamTypes: any[] = R.getRouteArgsTypes(\n this.targetProto,\n override\n );\n const baseMetatype = baseParamTypes[1];\n paramTypes.splice(parsedBody.index, 1, baseMetatype);\n R.setRouteArgsTypes(paramTypes, this.targetProto, name);\n }\n }\n }\n }\n\n protected getPrimaryParams(): string[] {\n return keys(this.options.params).filter(\n (param: string) =>\n this.options.params?.[param] && this.options.params[param].primary\n );\n }\n\n protected setBaseRouteMeta(name: BaseRouteName) {\n this.setRouteArgs(name);\n this.setRouteArgsTypes(name);\n this.setInterceptors(name);\n this.setAction(name);\n this.setSwaggerOperation(name);\n this.setSwaggerPathParams(name);\n this.setSwaggerQueryParams(name);\n this.setSwaggerResponseOk(name);\n // set decorators after Swagger so metadata can be overwritten\n this.setDecorators(name);\n }\n\n protected setRouteArgs(name: BaseRouteName) {\n let rest = {};\n const routes: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"updateOneBase\",\n \"replaceOneBase\",\n ];\n\n if (isIn(name, routes)) {\n const action: string = this.routeNameAction(name);\n const hasDto: boolean = !isNil(get(this.options, `dto.${action}`));\n const { UPDATE, CREATE } = CrudValidationGroups;\n const groupEnum: CrudValidationGroups = isIn(name, [\n \"updateOneBase\",\n \"replaceOneBase\",\n ])\n ? UPDATE\n : CREATE;\n const group: CrudValidationGroups | undefined = !hasDto\n ? groupEnum\n : undefined;\n\n rest = R.setBodyArg(1, [getValidationPipe(this.options, group)]);\n }\n\n R.setRouteArgs({ ...R.setParsedRequestArg(0), ...rest }, this.target, name);\n }\n\n protected setRouteArgsTypes(name: BaseRouteName): void {\n switch (true) {\n case isEqual(name, \"createManyBase\"):\n const bulkDto = createBulkDto(this.options);\n R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name);\n break;\n case isIn(name, [\"createOneBase\", \"updateOneBase\", \"replaceOneBase\"]):\n const action: string = this.routeNameAction(name);\n const dto = get(this.options, `dto.${action}`, this.modelType);\n R.setRouteArgsTypes([Object, dto], this.targetProto, name);\n break;\n default:\n R.setRouteArgsTypes([Object], this.targetProto, name);\n }\n }\n\n protected setInterceptors(name: BaseRouteName): void {\n const interceptors = get(this.options, `routes.${name}.interceptors`, []);\n R.setInterceptors(\n [\n CrudRequestInterceptor,\n CrudResponseInterceptor,\n ...(isArrayFull(interceptors) ? interceptors : []),\n ],\n this.targetProto[name]\n );\n }\n\n protected setDecorators(name: BaseRouteName): void {\n const decorators = get(this.options, `routes.${name}.decorators`, []);\n R.setDecorators(\n isArrayFull(decorators) ? decorators : [],\n this.targetProto,\n name\n );\n }\n\n protected setAction(name: BaseRouteName): void {\n R.setAction(this.actionsMap[name], this.targetProto[name]);\n }\n\n protected setSwaggerOperation(name: BaseRouteName) {\n const summary: string = Swagger.operationsMap(this.modelName)[name];\n const operationId: string =\n name + this.targetProto.constructor.name + this.modelName;\n Swagger.setOperation({ summary, operationId }, this.targetProto[name]);\n }\n\n protected setSwaggerPathParams(name: BaseRouteName): void {\n const metadata: any[] = Swagger.getParams(this.targetProto[name]);\n const withoutPrimary: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"getManyBase\",\n ];\n\n const removePrimary: boolean = isIn(name, withoutPrimary);\n const params: {} = keys(this.options.params)\n .filter((key: string) => !get(this.options, `params.${key}.disabled`))\n .filter(\n (key: string) =>\n !(removePrimary && get(this.options, `params.${key}.primary`))\n )\n .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {});\n\n const pathParamsMeta: any[] = Swagger.createPathParamsMeta(params);\n Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]);\n }\n\n protected setSwaggerQueryParams(name: BaseRouteName): void {\n const metadata: any[] = Swagger.getParams(this.targetProto[name]);\n const queryParamsMeta = Swagger.createQueryParamsMeta(name, this.options);\n Swagger.setParams(\n [...metadata, ...queryParamsMeta],\n this.targetProto[name]\n );\n }\n\n protected setSwaggerResponseOk(name: BaseRouteName): void {\n const metadata = Swagger.getResponseOk(this.targetProto[name]);\n const metadataToAdd =\n Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {};\n Swagger.setResponseOk(\n { ...metadata, ...metadataToAdd },\n this.targetProto[name]\n );\n }\n\n protected routeNameAction(name: BaseRouteName): string {\n return name.split(\"OneBase\")[0] || name.split(\"ManyBase\")[0];\n }\n}\n","export * from \"./crud-request.interceptor\";\nexport * from \"./crud-response.interceptor\";\n","import {\n BadRequestException,\n CallHandler,\n ExecutionContext,\n Injectable,\n NestInterceptor,\n} from \"@nestjs/common\";\nimport { QueryFilter, QueryFilterFunction, SCondition } from \"../types\";\nimport { RequestQueryException } from \"../exceptions\";\nimport { QueryParserService } from \"../services\";\nimport { isArrayFull } from \"../helpers\";\nimport { isFunction, isNil } from \"lodash\";\nimport { ClassTransformOptions } from \"class-transformer\";\n\nimport { PARSED_CRUD_REQUEST_KEY } from \"../constants\";\nimport { CrudActions } from \"../enums\";\nimport { CrudRequest, MergedCrudOptions, ParamsOptions } from \"../interfaces\";\nimport { CrudBaseInterceptor } from \"./crud-base.interceptor\";\nimport { Observable } from \"rxjs\";\n\n@Injectable()\nexport class CrudRequestInterceptor\n extends CrudBaseInterceptor\n implements NestInterceptor\n{\n intercept(context: ExecutionContext, next: CallHandler): Observable {\n const req = context.switchToHttp().getRequest();\n\n try {\n /* istanbul ignore else */\n if (!req[PARSED_CRUD_REQUEST_KEY]) {\n const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context);\n const parser = QueryParserService.create();\n\n parser.parseQuery(req.query, crudOptions.operators?.custom);\n\n let auth = null;\n if (!isNil(ctrlOptions)) {\n const search = this.getSearch(\n parser,\n crudOptions,\n action,\n req.params\n );\n auth = this.getAuth(parser, crudOptions, req);\n parser.search = auth.or\n ? { $or: [auth.or, { $and: search }] }\n : { $and: [auth.filter, ...search] };\n } else {\n parser.search = { $and: this.getSearch(parser, crudOptions, action) };\n }\n\n req[PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(\n parser,\n crudOptions,\n auth?.auth\n );\n }\n\n return next.handle();\n } catch (error) {\n throw error instanceof RequestQueryException\n ? new BadRequestException(error.message)\n : error;\n }\n }\n\n getCrudRequest(\n parser: QueryParserService,\n crudOptions: Partial,\n auth?: any\n ): CrudRequest {\n const parsed = parser.getParsed();\n const { query, routes, params, operators } = crudOptions;\n return {\n parsed,\n options: {\n query,\n routes,\n params,\n operators,\n },\n auth,\n };\n }\n\n getSearch(\n parser: QueryParserService,\n crudOptions: Partial,\n action: CrudActions,\n params?: any\n ): SCondition[] {\n // params condition\n const paramsSearch = this.getParamsSearch(parser, crudOptions, params);\n\n // if `CrudOptions.query.filter` is a function then return transformed query search conditions\n if (isFunction(crudOptions.query?.filter)) {\n const filterCond: SCondition =\n (crudOptions.query?.filter as QueryFilterFunction)(\n parser.search,\n action === CrudActions.ReadAll\n ) || {};\n\n return [...paramsSearch, filterCond];\n }\n\n // if `CrudOptions.query.filter` is array or search condition type\n const optionsFilter = isArrayFull(crudOptions.query?.filter)\n ? (crudOptions.query?.filter as QueryFilter[]).map(\n parser.convertFilterToSearch\n )\n : [(crudOptions.query?.filter as SCondition) || {}];\n\n let search: SCondition[] = [];\n\n if (parser.search) {\n search = [parser.search];\n } else if (parser.filter.length > 0 && parser.or.length > 0) {\n search =\n parser.filter.length === 1 && parser.or.length === 1\n ? [\n {\n $or: [\n parser.convertFilterToSearch(parser.filter[0]),\n parser.convertFilterToSearch(parser.or[0]),\n ],\n },\n ]\n : [\n {\n $or: [\n { $and: parser.filter.map(parser.convertFilterToSearch) },\n { $and: parser.or.map(parser.convertFilterToSearch) },\n ],\n },\n ];\n } else if (parser.filter.length > 0) {\n search = parser.filter.map(parser.convertFilterToSearch);\n } else {\n if (parser.or.length > 0) {\n search =\n parser.or.length === 1\n ? [parser.convertFilterToSearch(parser.or[0])]\n : [\n {\n $or: parser.or.map(parser.convertFilterToSearch),\n },\n ];\n }\n }\n\n return [...paramsSearch, ...optionsFilter, ...search];\n }\n\n getParamsSearch(\n parser: QueryParserService,\n crudOptions: Partial,\n params?: any\n ): SCondition[] {\n if (params) {\n parser.parseParams(params, crudOptions.params);\n\n return isArrayFull(parser.paramsFilter)\n ? // @ts-ignore\n parser.paramsFilter.map(parser.convertFilterToSearch)\n : [];\n }\n\n return [];\n }\n\n getAuth(\n parser: QueryParserService,\n crudOptions: Partial,\n req: any\n ): { filter?: any; or?: any; auth?: any } {\n const auth: any = {};\n\n /* istanbul ignore else */\n if (crudOptions.auth) {\n const userOrRequest = crudOptions.auth.property\n ? req[crudOptions.auth.property]\n : req;\n\n if (crudOptions.auth.property && req[crudOptions.auth.property]) {\n if (typeof req[crudOptions.auth.property] === \"object\") {\n if (Object.keys(req[crudOptions.auth.property]).length > 0) {\n auth.auth = req[crudOptions.auth.property];\n }\n } else {\n auth.auth = req[crudOptions.auth.property];\n }\n }\n\n if (isFunction(crudOptions.auth.or)) {\n auth.or = crudOptions.auth.or(userOrRequest);\n }\n\n if (isFunction(crudOptions.auth.filter) && !auth.or) {\n auth.filter = crudOptions.auth.filter(userOrRequest) || {};\n }\n\n if (isFunction(crudOptions.auth.persist)) {\n parser.setAuthPersist(crudOptions.auth.persist(userOrRequest));\n }\n\n const options: ClassTransformOptions = {};\n if (isFunction(crudOptions.auth.classTransformOptions)) {\n Object.assign(\n options,\n crudOptions.auth.classTransformOptions(userOrRequest)\n );\n }\n\n if (isFunction(crudOptions.auth.groups)) {\n options.groups = crudOptions.auth.groups(userOrRequest);\n }\n parser.setClassTransformOptions(options);\n }\n\n return auth;\n }\n}\n","import { ExecutionContext, Type } from \"@nestjs/common\";\nimport { R } from \"../helpers\";\nimport { CrudActions } from \"../enums\";\nimport { MergedCrudOptions } from \"../interfaces\";\n\nexport class CrudBaseInterceptor {\n protected getCrudInfo(context: ExecutionContext): {\n ctrlOptions: MergedCrudOptions;\n crudOptions: Partial;\n action: CrudActions;\n } {\n const ctrl: Type = context.getClass();\n const handler = context.getHandler();\n const ctrlOptions: MergedCrudOptions = R.getCrudOptions(ctrl);\n const crudOptions = ctrlOptions\n ? ctrlOptions\n : {\n query: {},\n routes: {},\n params: {},\n operators: {},\n };\n const action: CrudActions = R.getAction(handler);\n\n return { ctrlOptions, crudOptions, action };\n }\n}\n","import {\n CallHandler,\n ExecutionContext,\n Injectable,\n NestInterceptor,\n} from \"@nestjs/common\";\nimport { isPlainObject, isEmpty, isFunction } from \"lodash\";\nimport { isFalse } from \"../helpers\";\nimport { ClassTransformOptions, instanceToPlain } from \"class-transformer\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { CrudActions } from \"../enums\";\nimport { MergedCrudOptions, SerializeOptions } from \"../interfaces\";\nimport { CrudBaseInterceptor } from \"./crud-base.interceptor\";\nimport { isObject } from \"class-validator\";\n\nconst actionToDtoNameMap: {\n [key in CrudActions]: keyof SerializeOptions;\n} = {\n [CrudActions.ReadAll]: \"getMany\",\n [CrudActions.ReadOne]: \"get\",\n [CrudActions.CreateMany]: \"createMany\",\n [CrudActions.CreateOne]: \"create\",\n [CrudActions.UpdateOne]: \"update\",\n [CrudActions.ReplaceOne]: \"replace\",\n [CrudActions.DeleteAll]: \"delete\",\n [CrudActions.DeleteOne]: \"delete\",\n [CrudActions.RecoverOne]: \"recover\",\n};\n\n@Injectable()\nexport class CrudResponseInterceptor\n extends CrudBaseInterceptor\n implements NestInterceptor\n{\n intercept(context: ExecutionContext, next: CallHandler): Observable {\n return next.handle().pipe(map((data) => this.serialize(context, data)));\n }\n\n protected transform(dto: any, data: any, options: ClassTransformOptions) {\n if (!isObject(data) || isFalse(dto)) {\n return data;\n }\n\n if (!isFunction(dto)) {\n return data.constructor !== Object\n ? instanceToPlain(data, options)\n : data;\n }\n\n return data instanceof dto\n ? instanceToPlain(data, options)\n : /* @ts-ignore */\n instanceToPlain(Object.assign(new dto(), data), options);\n }\n\n protected serialize(context: ExecutionContext, data: any): any {\n const req = context.switchToHttp().getRequest();\n const { crudOptions, action } = this.getCrudInfo(context);\n const { serialize } = >crudOptions;\n /* @ts-ignore */\n const dto = serialize[actionToDtoNameMap[action]];\n const isArray: boolean = Array.isArray(data);\n\n const options: ClassTransformOptions = {};\n\n if (isFunction(crudOptions.auth?.classTransformOptions)) {\n const userOrRequest = crudOptions.auth?.property\n ? req[crudOptions.auth.property]\n : req;\n Object.assign(\n options,\n crudOptions.auth?.classTransformOptions(userOrRequest)\n );\n }\n\n if (isFunction(crudOptions.auth?.groups)) {\n const userOrRequest = crudOptions.auth?.property\n ? req[crudOptions.auth.property]\n : req;\n options.groups = crudOptions.auth?.groups(userOrRequest);\n }\n\n switch (action) {\n case CrudActions.ReadAll:\n return isArray\n ? (data as any[]).map((item) =>\n this.transform(serialize?.get, item, options)\n )\n : this.transform(dto, data, options);\n case CrudActions.CreateMany:\n return isArray\n ? (data as any[]).map((item) => this.transform(dto, item, options))\n : this.transform(dto, data, options);\n default:\n return this.transform(dto, data, options);\n }\n }\n}\n","module.exports = require(\"rxjs/operators\");","\n\nimport { oO } from \"@zmotivat0r/o0\";\nimport { plainToInstance } from \"class-transformer\";\nimport { isEmpty, isNil, isNull, isUndefined } from \"lodash\";\nimport {\n BaseEntity,\n Brackets,\n ConnectionOptions,\n DeepPartial,\n EntityMetadata,\n ObjectLiteral,\n Repository,\n SelectQueryBuilder,\n WhereExpressionBuilder,\n} from \"typeorm\";\nimport { ColumnMetadata } from \"typeorm/metadata/ColumnMetadata\";\nimport { RelationMetadata } from \"typeorm/metadata/RelationMetadata\";\n\nimport { isArrayFull, isObject } from \"../helpers\";\nimport {\n CreateManyDto,\n CrudRequest,\n CrudRequestOptions,\n CustomOperators,\n DeleteOneRouteOptions,\n GetManyDefaultResponse,\n JoinOption,\n JoinOptions,\n ParsedRequestParams,\n QueryOptions,\n ReplaceOneRouteOptions,\n UpdateOneRouteOptions,\n} from \"../interfaces\";\nimport {\n ClassType,\n ComparisonOperator,\n CondOperator,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n SConditionKey,\n} from \"../types\";\n\nimport { CrudService } from \"./abstract-crud.service\";\n\ninterface IAllowedRelation {\n alias?: string;\n nested: boolean;\n name: string;\n path: string;\n columns: string[];\n primaryColumns: string[];\n allowedColumns: string[];\n}\n\nexport class TypeOrmCrudService extends CrudService<\n T,\n DeepPartial\n> {\n protected dbName: ConnectionOptions[\"type\"];\n protected entityColumns: string[] | undefined;\n protected entityPrimaryColumns: string[] | undefined;\n protected entityHasDeleteColumn = false;\n protected entityColumnsHash: ObjectLiteral = {};\n protected entityRelationsHash: Map = new Map();\n protected sqlInjectionRegEx: RegExp[] = [\n /(%27)|(')|(--)|(%23)|(#)/gi,\n /((%3D)|(=))[^\\n]*((%27)|(')|(--)|(%3B)|(;))/gi,\n /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi,\n /((%27)|('))union/gi,\n ];\n\n constructor(protected repo: Repository) {\n super();\n\n this.dbName = this.repo.metadata.connection.options.type;\n this.onInitMapEntityColumns();\n }\n\n public get findOne(): Repository[\"findOne\"] {\n return this.repo.findOne.bind(this.repo);\n }\n\n public get findOneBy(): Repository[\"findOneBy\"] {\n return this.repo.findOneBy.bind(this.repo);\n }\n\n public get find(): Repository[\"find\"] {\n return this.repo.find.bind(this.repo);\n }\n\n public get count(): Repository[\"count\"] {\n return this.repo.count.bind(this.repo);\n }\n\n protected get entityType(): ClassType {\n return this.repo.target as ClassType;\n }\n\n protected get alias(): string {\n return this.repo.metadata.targetName;\n }\n\n /**\n * Get many\n * @param req\n */\n public async getMany(\n req: CrudRequest\n ): Promise | T[]> {\n const { parsed, options } = req;\n const builder: SelectQueryBuilder = await this.createBuilder(\n parsed,\n options\n );\n\n return this.doGetMany(builder, parsed, options);\n }\n\n /**\n * Get one\n * @param req\n */\n public async getOne(req: CrudRequest): Promise {\n return this.getOneOrFail(req);\n }\n\n /**\n * Create one\n * @param req\n * @param dto\n */\n public async createOne(req: CrudRequest, dto: DeepPartial): Promise {\n // @ts-ignore\n const { returnShallow } = req.options.routes?.createOneBase;\n const entity = this.prepareEntityBeforeSave(dto, req.parsed);\n\n /* istanbul ignore if */\n if (!entity) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n const saved = await this.repo.save(entity);\n\n if (returnShallow) {\n return saved;\n } else {\n const primaryParams = this.getPrimaryParams(req.options);\n\n if (\n isEmpty(primaryParams) &&\n primaryParams.some((p) => isNil(saved[p]))\n ) {\n return saved;\n } else {\n req.parsed.search = primaryParams.reduce(\n (acc, p) => ({ ...acc, [p]: saved[p] }),\n {}\n );\n return this.getOneOrFail(req);\n }\n }\n }\n\n /**\n * Create many\n * @param req\n * @param dto\n */\n public async createMany(\n req: CrudRequest,\n dto: CreateManyDto>\n ): Promise {\n /* istanbul ignore if */\n if (!isObject(dto) || !isArrayFull(dto.bulk)) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n const bulk = dto.bulk\n .map((one) => this.prepareEntityBeforeSave(one, req.parsed))\n .filter((d) => !isUndefined(d));\n\n /* istanbul ignore if */\n if (!bulk.length) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n return this.repo.save(bulk, { chunk: 50 });\n }\n\n /**\n * Update one\n * @param req\n * @param dto\n */\n public async updateOne(req: CrudRequest, dto: DeepPartial): Promise {\n const { allowParamsOverride, returnShallow } = (\n req.options.routes?.updateOneBase\n );\n const paramsFilters = this.getParamFilters(req.parsed);\n // disable cache while updating\n // @ts-ignore\n req.options.query.cache = false;\n const found = await this.getOneOrFail(req, returnShallow);\n\n const toSave = !allowParamsOverride\n ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist }\n : { ...found, ...dto, ...req.parsed.authPersist };\n const updated = await this.repo.save(\n plainToInstance(\n this.entityType,\n toSave,\n req.parsed.classTransformOptions\n ) as unknown as DeepPartial\n );\n\n if (returnShallow) {\n return updated;\n } else {\n req.parsed.paramsFilter.forEach((filter) => {\n // @ts-ignore\n filter.value = updated[filter.field];\n });\n\n return this.getOneOrFail(req);\n }\n }\n\n /**\n * Recover one\n * @param req\n * @param dto\n */\n public async recoverOne(req: CrudRequest): Promise {\n // disable cache while recovering\n // @ts-ignore\n req.options.query.cache = false;\n const found = await this.getOneOrFail(req, false, true);\n return this.repo.recover(found as DeepPartial);\n }\n\n /**\n * Replace one\n * @param req\n * @param dto\n */\n public async replaceOne(req: CrudRequest, dto: DeepPartial): Promise {\n const { allowParamsOverride, returnShallow } = (\n req.options.routes?.replaceOneBase\n );\n const paramsFilters = this.getParamFilters(req.parsed);\n // disable cache while replacing\n // @ts-ignore\n req.options.query.cache = false;\n const [_, found] = await oO(this.getOneOrFail(req, returnShallow));\n const toSave = !allowParamsOverride\n ? {\n ...(found || {}),\n ...dto,\n ...paramsFilters,\n ...req.parsed.authPersist,\n }\n : {\n ...(found || {}),\n ...paramsFilters,\n ...dto,\n ...req.parsed.authPersist,\n };\n const replaced = await this.repo.save(\n plainToInstance(\n this.entityType,\n toSave,\n req.parsed.classTransformOptions\n ) as unknown as DeepPartial\n );\n\n if (returnShallow) {\n return replaced;\n } else {\n const primaryParams: string[] = this.getPrimaryParams(req.options);\n\n /* istanbul ignore if */\n if (!primaryParams.length) {\n return replaced;\n }\n\n req.parsed.search = primaryParams.reduce(\n (acc: {}, p: string) => ({\n ...acc,\n // @ts-ignore\n [p]: replaced[p],\n }),\n {}\n );\n return this.getOneOrFail(req);\n }\n }\n\n /**\n * Delete one\n * @param req\n */\n public async deleteOne(req: CrudRequest): Promise {\n const { returnDeleted } = (\n req.options.routes?.deleteOneBase\n );\n // disable cache while deleting\n // @ts-ignore\n req.options.query.cache = false;\n const found: T = await this.getOneOrFail(req, returnDeleted);\n const toReturn: T | undefined = returnDeleted\n ? plainToInstance(\n this.entityType,\n { ...found },\n req.parsed.classTransformOptions\n )\n : undefined;\n\n const deleted: DeepPartial & T =\n req.options.query?.softDelete === true\n ? await this.repo.softRemove(found as DeepPartial)\n : await this.repo.remove(found);\n\n return toReturn;\n }\n\n public getParamFilters(parsed: CrudRequest[\"parsed\"]): ObjectLiteral {\n const filters = {};\n\n if (!isEmpty(parsed.paramsFilter)) {\n for (const filter of parsed.paramsFilter) {\n // @ts-ignore\n filters[filter.field] = filter.value;\n }\n }\n\n return filters;\n }\n\n /**\n * Create TypeOrm QueryBuilder\n * @param parsed\n * @param options\n * @param many\n * @param withDeleted\n */\n public async createBuilder(\n parsed: ParsedRequestParams,\n options: CrudRequestOptions,\n many = true,\n withDeleted = false\n ): Promise> {\n // create query builder\n const builder: SelectQueryBuilder = this.repo.createQueryBuilder(\n this.alias\n );\n // get select fields\n const select: string[] = this.getSelect(parsed, options.query || {});\n // select fields\n builder.select(select);\n\n // if soft deleted is enabled add where statement to filter deleted records\n if (options.query?.softDelete) {\n if (parsed.includeDeleted === 1 || withDeleted) {\n builder.withDeleted();\n }\n }\n\n // search\n this.setSearchCondition(\n builder,\n parsed.search || {},\n options.operators?.custom || {}\n );\n\n // set joins\n const joinOptions: JoinOptions = options.query?.join || {};\n const allowedJoins: string[] = Object.keys(joinOptions);\n\n if (!isEmpty(allowedJoins)) {\n const eagerJoins: any = {};\n\n for (let i = 0; i < allowedJoins.length; i++) {\n if (joinOptions[allowedJoins[i]].eager) {\n const cond: QueryJoin = parsed.join.find(\n (j: QueryJoin) => j && j.field === allowedJoins[i]\n ) || {\n field: allowedJoins[i],\n };\n this.setJoin(cond, joinOptions, builder);\n eagerJoins[allowedJoins[i]] = true;\n }\n }\n\n if (isArrayFull(parsed.join)) {\n for (let i = 0; i < parsed.join.length; i++) {\n if (!eagerJoins[parsed.join[i].field]) {\n this.setJoin(parsed.join[i], joinOptions, builder);\n }\n }\n }\n }\n\n if (many) {\n // set sort (order by)\n const sort = this.getSort(parsed, options.query || {});\n builder.orderBy(sort);\n\n // set take\n const take = this.getTake(parsed, options.query || {});\n\n if (take && isFinite(take)) {\n builder.take(take);\n }\n\n // set skip\n const skip = this.getSkip(parsed, take || 0);\n\n if (skip && isFinite(skip)) {\n builder.skip(skip);\n }\n }\n\n // set cache\n\n if (options.query?.cache && parsed.cache !== 0) {\n builder.cache(options.query.cache);\n }\n\n return builder;\n }\n\n /**\n * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount`\n * helpful for overriding `TypeOrmCrudService#getMany`\n * @see getMany\n * @see SelectQueryBuilder#getMany\n * @see SelectQueryBuilder#getManyAndCount\n * @param builder\n * @param query\n * @param options\n */\n protected async doGetMany(\n builder: SelectQueryBuilder,\n query: ParsedRequestParams,\n options: CrudRequestOptions\n ): Promise | T[]> {\n if (this.decidePagination(query, options)) {\n const [data, total] = await builder.getManyAndCount();\n const limit: number | undefined = builder.expressionMap.take;\n const offset: number | undefined = builder.expressionMap.skip;\n\n return this.createPageInfo(data, total, limit || total, offset || 0);\n }\n\n return builder.getMany();\n }\n\n protected onInitMapEntityColumns(): void {\n this.entityColumns = this.repo.metadata.columns.map(\n (prop: ColumnMetadata): string => {\n // In case column is an embedded, use the propertyPath to get complete path\n if (prop.embeddedMetadata) {\n this.entityColumnsHash[prop.propertyPath] = prop.databasePath;\n return prop.propertyPath;\n }\n this.entityColumnsHash[prop.propertyName] = prop.databasePath;\n return prop.propertyName;\n }\n );\n this.entityPrimaryColumns = this.repo.metadata.columns\n .filter((prop: ColumnMetadata) => prop.isPrimary)\n .map((prop: ColumnMetadata) => prop.propertyName);\n this.entityHasDeleteColumn = this.repo.metadata.columns.some(\n (prop: ColumnMetadata) => !isEmpty(prop.isDeleteDate)\n );\n }\n\n protected async getOneOrFail(\n req: CrudRequest,\n shallow = false,\n withDeleted = false\n ): Promise {\n const { parsed, options } = req;\n const builder: SelectQueryBuilder = shallow\n ? this.repo.createQueryBuilder(this.alias)\n : await this.createBuilder(parsed, options, true, withDeleted);\n\n if (shallow) {\n this.setSearchCondition(\n builder,\n parsed.search || null,\n options.operators?.custom\n );\n }\n\n const found: T | null = withDeleted\n ? await builder.withDeleted().getOne()\n : await builder.getOne();\n\n if (!found) {\n this.throwNotFoundException(this.alias);\n }\n\n return found;\n }\n\n protected prepareEntityBeforeSave(\n dto: DeepPartial,\n parsed: CrudRequest[\"parsed\"]\n ): T | undefined {\n /* istanbul ignore if */\n if (!isObject(dto)) {\n return undefined;\n }\n\n if (!isEmpty(parsed.paramsFilter)) {\n for (const filter of parsed.paramsFilter) {\n // @ts-ignore\n dto[filter.field] = filter.value;\n }\n }\n\n /* istanbul ignore if */\n if (isEmpty(Object.keys(dto))) {\n return undefined;\n }\n\n return dto instanceof this.entityType\n ? Object.assign(dto, parsed.authPersist)\n : plainToInstance(\n this.entityType,\n { ...dto, ...parsed.authPersist },\n parsed.classTransformOptions\n );\n }\n\n protected getAllowedColumns(\n columns: string[],\n options: QueryOptions\n ): string[] {\n return (!options.exclude || !options.exclude.length) &&\n (!options.allow || !options.allow.length)\n ? columns\n : columns.filter(\n (column: string) =>\n (options.exclude && options.exclude.length\n ? !options.exclude.some((col: string) => col === column)\n : true) &&\n (options.allow && options.allow.length\n ? options.allow.some((col) => col === column)\n : true)\n );\n }\n\n protected getEntityColumns(entityMetadata: EntityMetadata): {\n columns: string[];\n primaryColumns: string[];\n } {\n const columns: string[] =\n entityMetadata.columns.map((prop: ColumnMetadata) => prop.propertyPath) ||\n [];\n const primaryColumns: string[] =\n entityMetadata.primaryColumns.map(\n (prop: ColumnMetadata) => prop.propertyPath\n ) || [];\n\n return { columns, primaryColumns };\n }\n\n protected getRelationMetadata(\n field: string,\n options: JoinOption\n ): IAllowedRelation | null {\n try {\n let allowedRelation;\n let nested = false;\n\n if (this.entityRelationsHash.has(field)) {\n allowedRelation = this.entityRelationsHash.get(field);\n } else {\n const fields: string[] = field.split(\".\");\n let relationMetadata: EntityMetadata | null = null;\n let name: string | undefined;\n let path: string | undefined;\n let parentPath: string | undefined;\n\n if (fields.length === 1) {\n const found: RelationMetadata | undefined =\n this.repo.metadata.relations.find(\n (one: RelationMetadata): boolean => one.propertyName === fields[0]\n );\n\n if (found) {\n name = fields[0];\n path = `${this.alias}.${fields[0]}`;\n relationMetadata = found.inverseEntityMetadata;\n }\n } else {\n nested = true;\n parentPath = \"\";\n\n const reduced = fields.reduce(\n // @ts-ignore\n (res, propertyName: string, i) => {\n const found = res.relations?.length\n ? res.relations.find(\n (one: RelationMetadata): boolean =>\n one.propertyName === propertyName\n )\n : null;\n relationMetadata = found ? found.inverseEntityMetadata : null;\n const relations: RelationMetadata[] = relationMetadata\n ? relationMetadata.relations\n : [];\n name = propertyName;\n\n if (i !== fields.length - 1) {\n parentPath = !parentPath\n ? propertyName\n : `${parentPath}.${propertyName}`;\n }\n\n return {\n relations,\n relationMetadata,\n };\n },\n {\n relations: this.repo.metadata.relations,\n relationMetadata: null,\n }\n );\n\n // @ts-ignore\n relationMetadata = reduced.relationMetadata;\n }\n\n // @ts-ignore\n if (relationMetadata) {\n const { columns, primaryColumns } =\n this.getEntityColumns(relationMetadata);\n\n if (!path && parentPath) {\n const parentAllowedRelation: IAllowedRelation | undefined =\n this.entityRelationsHash.get(parentPath);\n\n if (parentAllowedRelation) {\n path = parentAllowedRelation.alias\n ? `${parentAllowedRelation.alias}.${name}`\n : field;\n }\n }\n\n allowedRelation = {\n alias: options.alias,\n name,\n path,\n columns,\n nested,\n primaryColumns,\n };\n }\n }\n\n if (allowedRelation) {\n const allowedColumns: string[] = this.getAllowedColumns(\n allowedRelation.columns,\n options\n );\n const toSave: IAllowedRelation = {\n ...allowedRelation,\n allowedColumns,\n };\n\n this.entityRelationsHash.set(field, toSave);\n\n if (options.alias) {\n this.entityRelationsHash.set(options.alias, toSave);\n }\n\n return toSave;\n }\n } catch (_) {\n return null;\n }\n return null;\n }\n\n protected setJoin(\n cond: QueryJoin,\n joinOptions: JoinOptions,\n builder: SelectQueryBuilder\n ): undefined | void {\n const options: JoinOption = joinOptions[cond.field] ?? null;\n\n if (!options) {\n console.warn(\n 'relation \"' +\n cond.field +\n '\" not found in allowed relations in the controller. Did you mean to use one of these? [' +\n Object.keys(joinOptions).join(\", \") +\n \"]\"\n );\n return;\n }\n\n const allowedRelation: IAllowedRelation | null = this.getRelationMetadata(\n cond.field,\n options\n );\n\n if (!allowedRelation) {\n return;\n }\n\n const relationType = options.required ? \"innerJoin\" : \"leftJoin\";\n const alias: string = options.alias ? options.alias : allowedRelation.name;\n\n builder[relationType](allowedRelation.path, alias);\n\n if (options.select !== false) {\n const columns = isArrayFull(cond.select)\n ? cond.select?.filter((column: string) =>\n allowedRelation.allowedColumns.some(\n (allowed: string): boolean => allowed === column\n )\n ) || []\n : allowedRelation.allowedColumns || [];\n\n const select: string[] = [\n ...allowedRelation.primaryColumns,\n // @ts-ignore\n ...(isArrayFull(options.persist) ? options.persist : []),\n ...columns,\n ].map((col): string => `${alias}.${col}`);\n\n builder.addSelect(Array.from(new Set(select)));\n }\n }\n\n protected setAndWhere(\n cond: QueryFilter,\n i: any,\n builder: SelectQueryBuilder | WhereExpressionBuilder,\n customOperators: CustomOperators\n ): void {\n const { str, params } = this.mapOperatorsToQuery(\n cond,\n `andWhere${i}`,\n customOperators\n );\n builder.andWhere(str, params);\n }\n\n protected setOrWhere(\n cond: QueryFilter,\n i: any,\n builder: SelectQueryBuilder | WhereExpressionBuilder,\n customOperators: CustomOperators\n ): void {\n const { str, params } = this.mapOperatorsToQuery(\n cond,\n `orWhere${i}`,\n customOperators\n );\n builder.orWhere(str, params);\n }\n\n protected setSearchCondition(\n builder: SelectQueryBuilder,\n search: SCondition | null,\n customOperators: CustomOperators,\n condition: SConditionKey = \"$and\"\n ): void {\n if (isObject(search)) {\n const keys = Object.keys(search);\n\n if (keys.length) {\n // search: {$ne: [...]}\n // @ts-ignore\n if (isArrayFull(search?.$ne)) {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n // @ts-ignore\n search.$not.forEach((item: any): void => {\n this.setSearchCondition(qb, item, customOperators, \"$and\");\n });\n }),\n true\n );\n }\n // search: {$and: [...], ...}\n else if (isArrayFull(search?.$and)) {\n // search: {$and: [{}]}\n if (search?.$and?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$and[0],\n customOperators,\n condition\n );\n }\n // search: {$and: [{}, {}, ...]}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n search?.$and?.forEach((item: any): void => {\n this.setSearchCondition(qb, item, customOperators, \"$and\");\n });\n })\n );\n }\n }\n // search: {$or: [...], ...}\n else if (isArrayFull(search?.$or)) {\n // search: {$or: [...]}\n if (keys.length === 1) {\n // search: {$or: [{}]}\n if (search?.$or?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$or[0],\n customOperators,\n condition\n );\n }\n // search: {$or: [{}, {}, ...]}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any) => {\n search?.$or?.forEach((item: any) => {\n this.setSearchCondition(qb, item, customOperators, \"$or\");\n });\n })\n );\n }\n }\n // search: {$or: [...], foo, ...}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n keys.forEach((field: string): void => {\n if (field !== \"$or\") {\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n }\n } else {\n if (search?.$or?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$or[0],\n customOperators,\n \"$and\"\n );\n } else {\n this.builderAddBrackets(\n qb,\n \"$and\",\n new Brackets((qb2: any) => {\n search?.$or?.forEach((item: any) => {\n this.setSearchCondition(\n qb2,\n item,\n customOperators,\n \"$or\"\n );\n });\n })\n );\n }\n }\n });\n })\n );\n }\n }\n // search: {...}\n else {\n // search: {foo}\n if (keys.length === 1) {\n const field: string = keys[0];\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n builder,\n condition,\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n builder,\n condition,\n field,\n value,\n customOperators\n );\n }\n }\n // search: {foo, ...}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any) => {\n keys.forEach((field: string) => {\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n }\n });\n })\n );\n }\n }\n }\n }\n }\n\n protected builderAddBrackets(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n brackets: Brackets,\n negated = false\n ) {\n if (negated) {\n // No builtin support for not, this is copied from QueryBuilder.getWhereCondition\n\n const whereQueryBuilder: SelectQueryBuilder =\n builder.createQueryBuilder();\n\n (whereQueryBuilder as any).parentQueryBuilder = builder;\n\n whereQueryBuilder.expressionMap.mainAlias =\n builder.expressionMap.mainAlias;\n whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled =\n builder.expressionMap.aliasNamePrefixingEnabled;\n whereQueryBuilder.expressionMap.parameters =\n builder.expressionMap.parameters;\n whereQueryBuilder.expressionMap.nativeParameters =\n builder.expressionMap.nativeParameters;\n\n whereQueryBuilder.expressionMap.wheres = [];\n\n brackets.whereFactory(whereQueryBuilder as any);\n\n const wheres = {\n operator: \"brackets\",\n condition: whereQueryBuilder.expressionMap.wheres,\n };\n\n const type =\n condition === \"$and\" ? \"and\" : condition === \"$or\" ? \"or\" : \"simple\";\n builder.expressionMap.wheres.push({\n type,\n condition: {\n operator: \"not\",\n condition: wheres as any,\n },\n });\n } else if (condition === \"$and\") {\n builder.andWhere(brackets);\n } else {\n builder.orWhere(brackets);\n }\n }\n\n protected builderSetWhere(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n field: string,\n value: any,\n customOperators: CustomOperators,\n operator: ComparisonOperator = \"$eq\"\n ): void {\n const time = process.hrtime();\n // const index = `${field}${time[0]}${time[1]}`;\n /**\n * Correcting the Error [Invalid Column Name] or [ syntax error at or near \\\":\\\".]\n * When using filter or search in relational/nested entities.\n */\n const safeFieldName = field.replace(/./g, \"_\");\n const index = `${safeFieldName}${time[0]}${time[1]}`;\n\n const args = [\n { field, operator: isNull(value) ? \"$isnull\" : operator, value },\n index,\n builder,\n customOperators,\n ];\n const fn = condition === \"$and\" ? this.setAndWhere : this.setOrWhere;\n // @ts-ignore\n fn.apply(this, args);\n }\n\n protected setSearchFieldObjectCondition(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n field: string,\n object: any,\n customOperators: CustomOperators\n ): void {\n if (isObject(object)) {\n const operators: string[] = Object.keys(object);\n\n if (operators.length === 1) {\n const operator: string = operators[0] as ComparisonOperator;\n const value = object[operator];\n\n if (isObject(object.$or)) {\n const orKeys: string[] = Object.keys(object.$or);\n this.setSearchFieldObjectCondition(\n builder,\n orKeys.length === 1 ? condition : \"$or\",\n field,\n object.$or,\n customOperators\n );\n } else {\n this.builderSetWhere(\n builder,\n condition,\n field,\n value,\n customOperators,\n operator\n );\n }\n } else {\n if (operators.length > 1) {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n operators.forEach((operator: ComparisonOperator): void => {\n const value = object[operator];\n\n if (operator !== \"$or\") {\n this.builderSetWhere(\n qb,\n condition,\n field,\n value,\n customOperators,\n operator\n );\n } else {\n const orKeys: string[] = Object.keys(object.$or);\n\n if (orKeys.length === 1) {\n this.setSearchFieldObjectCondition(\n qb,\n condition,\n field,\n object.$or,\n customOperators\n );\n } else {\n this.builderAddBrackets(\n qb,\n condition,\n new Brackets((qb2: any) => {\n this.setSearchFieldObjectCondition(\n qb2,\n \"$or\",\n field,\n object.$or,\n customOperators\n );\n })\n );\n }\n }\n });\n })\n );\n }\n }\n }\n }\n\n protected getSelect(\n query: ParsedRequestParams,\n options: QueryOptions\n ): string[] {\n const allowed: string[] = this.getAllowedColumns(\n this.entityColumns || [],\n options\n );\n const columns =\n query.fields && query.fields.length\n ? query.fields.filter((field) =>\n allowed.some((col: string): boolean => field === col)\n )\n : allowed;\n return [\n ...new Set([\n ...(options.persist && options.persist.length ? options.persist : []),\n ...columns,\n ...(this.entityPrimaryColumns || []),\n ]),\n ].map((col): string => `${this.alias}.${col}`);\n }\n\n protected getSort(query: ParsedRequestParams, options: QueryOptions) {\n return query.sort && query.sort.length\n ? this.mapSort(query.sort)\n : options.sort && options.sort.length\n ? this.mapSort(options.sort)\n : {};\n }\n\n protected getFieldWithAlias(field: string, sort = false) {\n const i = [\"mysql\", \"mariadb\"].includes(this.dbName) ? \"`\" : '\"';\n const cols = field.split(\".\");\n\n switch (cols.length) {\n case 1:\n if (sort) {\n return `${this.alias}.${field}`;\n }\n\n const dbColName =\n this.entityColumnsHash[field] !== field\n ? this.entityColumnsHash[field]\n : field;\n\n return `${i}${this.alias}${i}.${i}${dbColName}${i}`;\n case 2:\n return field;\n default:\n return cols.slice(cols.length - 2, cols.length).join(\".\");\n }\n }\n\n protected mapSort(sort: QuerySort[]) {\n const params: ObjectLiteral = {};\n\n for (let i = 0; i < sort.length; i++) {\n const field = this.getFieldWithAlias(sort[i].field, true);\n const checkedFiled = this.checkSqlInjection(field);\n params[checkedFiled] = sort[i].order;\n }\n\n return params;\n }\n\n protected mapOperatorsToQuery(\n cond: QueryFilter,\n param: any,\n customOperators: CustomOperators = {}\n ): { str: string; params: ObjectLiteral } {\n const field: string = this.getFieldWithAlias(cond.field);\n const likeOperator = this.dbName === \"postgres\" ? \"ILIKE\" : \"LIKE\";\n let str: string | undefined;\n let params: ObjectLiteral | undefined;\n\n if (cond.operator[0] !== \"$\") {\n cond.operator = (\"$\" + cond.operator) as ComparisonOperator;\n }\n\n switch (cond.operator) {\n case CondOperator.EQUALS:\n str = `${field} = :${param}`;\n break;\n\n case CondOperator.NOT_EQUALS:\n str = `${field} != :${param}`;\n break;\n\n case CondOperator.GREATER_THAN:\n str = `${field} > :${param}`;\n break;\n\n case CondOperator.LOWER_THAN:\n str = `${field} < :${param}`;\n break;\n\n case CondOperator.GREATER_THAN_EQUALS:\n str = `${field} >= :${param}`;\n break;\n\n case CondOperator.LOWER_THAN_EQUALS:\n str = `${field} <= :${param}`;\n break;\n\n case CondOperator.STARTS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `${cond.value}%` };\n break;\n\n case CondOperator.ENDS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `%${cond.value}` };\n break;\n\n case CondOperator.CONTAINS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.EXCLUDES:\n str = `${field} NOT LIKE :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.IN:\n this.checkFilterIsArray(cond);\n str = `${field} IN (:...${param})`;\n break;\n\n case CondOperator.NOT_IN:\n this.checkFilterIsArray(cond);\n str = `${field} NOT IN (:...${param})`;\n break;\n\n case CondOperator.IS_NULL:\n str = `${field} IS NULL`;\n params = {};\n break;\n\n case CondOperator.NOT_NULL:\n str = `${field} IS NOT NULL`;\n params = {};\n break;\n\n case CondOperator.BETWEEN:\n this.checkFilterIsArray(cond, cond.value.length !== 2);\n str = `${field} BETWEEN :${param}0 AND :${param}1`;\n params = {\n [`${param}0`]: cond.value[0],\n [`${param}1`]: cond.value[1],\n };\n break;\n\n // case insensitive\n case CondOperator.EQUALS_LOW:\n str = `LOWER(${field}) = :${param}`;\n break;\n\n case CondOperator.NOT_EQUALS_LOW:\n str = `LOWER(${field}) != :${param}`;\n break;\n\n case CondOperator.STARTS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `${cond.value}%` };\n break;\n\n case CondOperator.ENDS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}` };\n break;\n\n case CondOperator.CONTAINS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.EXCLUDES_LOW:\n str = `LOWER(${field}) NOT ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.IN_LOW:\n this.checkFilterIsArray(cond);\n str = `LOWER(${field}) IN (:...${param})`;\n break;\n\n case CondOperator.NOT_IN_LOW:\n this.checkFilterIsArray(cond);\n str = `LOWER(${field}) NOT IN (:...${param})`;\n break;\n\n default:\n break;\n }\n\n if (typeof params === \"undefined\") {\n params = { [param]: cond.value };\n }\n\n return { str: str, params };\n }\n\n protected checkFilterIsArray(cond: QueryFilter, withLength?: boolean) {\n /* istanbul ignore if */\n if (\n !Array.isArray(cond.value) ||\n !cond.value.length ||\n (!isNil(withLength) ? withLength : false)\n ) {\n this.throwBadRequestException(`Invalid column '${cond.field}' value`);\n }\n }\n\n protected checkSqlInjection(field: string): string {\n if (this.sqlInjectionRegEx.length) {\n for (let i = 0; i < this.sqlInjectionRegEx.length; i++) {\n if (this.sqlInjectionRegEx[i].test(field)) {\n this.throwBadRequestException(`SQL injection detected: \"${field}\"`);\n }\n }\n }\n\n return field;\n }\n}\n","module.exports = require(\"@zmotivat0r/o0\");","module.exports = require(\"typeorm\");","import { R } from \"../helpers\";\nimport { AuthOptions } from \"../interfaces\";\n\nexport const CrudAuth =\n (options: AuthOptions) =>\n (target: Object): void => {\n R.setCrudAuthOptions(options, target);\n };\n","import { BaseRouteName } from \"../types\";\nimport { OVERRIDE_METHOD_METADATA } from \"../constants\";\n\nexport const Override =\n (name?: BaseRouteName) =>\n (target: any, key: any, descriptor: PropertyDescriptor) => {\n Reflect.defineMetadata(\n OVERRIDE_METHOD_METADATA,\n name || `${key}Base`,\n target[key]\n );\n return descriptor;\n };\n","import { createParamDecorator } from \"@nestjs/common\";\n\nimport { PARSED_CRUD_REQUEST_KEY } from \"../constants\";\nimport { R } from \"../helpers\";\n\nexport const ParsedRequest = createParamDecorator(\n (_, ctx): ParameterDecorator => {\n return R.getContextRequest(ctx)[PARSED_CRUD_REQUEST_KEY];\n }\n);\n","import { PARSED_BODY_METADATA } from \"../constants\";\n\nexport const ParsedBody =\n () =>\n (target: any, key: string, index: any): void => {\n Reflect.defineMetadata(PARSED_BODY_METADATA, { index }, target[key]);\n };\n","import { SetMetadata, Type } from \"@nestjs/common\";\n\nimport { ACTION_NAME_METADATA, FEATURE_NAME_METADATA } from \"../constants\";\n\nexport const Feature = (name: string) =>\n SetMetadata(FEATURE_NAME_METADATA, name);\nexport const Action = (name: string) => SetMetadata(ACTION_NAME_METADATA, name);\n\nexport const getFeature = (target: Type) =>\n Reflect.getMetadata(FEATURE_NAME_METADATA, target);\nexport const getAction = (target: Function) =>\n Reflect.getMetadata(ACTION_NAME_METADATA, target);\n","export * from \"./auth-options.interface\";\nexport * from \"./base-route.interface\";\nexport * from \"./create-many-dto.interface\";\nexport * from \"./create-query-params.interface\";\nexport * from \"./crud-controller.interface\";\nexport * from \"./crud-global-config.interface\";\nexport * from \"./crud-options.interface\";\nexport * from \"./crud-request.interface\";\nexport * from \"./dto-options.interface\";\nexport * from \"./get-many-default-response.interface\";\nexport * from \"./model-options.interface\";\nexport * from \"./operators-options.interface\";\nexport * from \"./params-options.interface\";\nexport * from \"./parsed-request.interface\";\nexport * from \"./query-options.interface\";\nexport * from \"./request-query-builder-options.interface\";\nexport * from \"./routes-options.interface\";\nexport * from \"./serialize-options.interface\";\n","import { SCondition } from \"../types\";\nimport { ObjectLiteral } from \"../types\";\nimport { ClassTransformOptions } from \"class-transformer\";\n\nexport interface AuthGlobalOptions {\n property?: string;\n /** Get options for the `classToPlain` function (response) */\n classTransformOptions?: (req: any) => ClassTransformOptions;\n /** Get `groups` value for the `classToPlain` function options (response) */\n groups?: (req: any) => string[];\n}\n\nexport interface AuthOptions {\n property?: string;\n /** Get options for the `classToPlain` function (response) */\n classTransformOptions?: (req: any) => ClassTransformOptions;\n /** Get `groups` value for the `classToPlain` function options (response) */\n groups?: (req: any) => string[];\n filter?: (req: any) => SCondition | void;\n or?: (req: any) => SCondition | void;\n persist?: (req: any) => ObjectLiteral;\n}\n","import { RequestMethod } from \"@nestjs/common\";\n\nimport { BaseRouteName } from \"../types\";\n\nexport interface BaseRoute {\n name: BaseRouteName;\n path: string;\n method: RequestMethod;\n enable: boolean;\n override: boolean;\n withParams: boolean;\n}\n","export interface CreateManyDto {\n bulk: T[];\n}\n","import {\n QueryExtra,\n QueryFields,\n QueryFilter,\n QueryFilterArr,\n QueryJoin,\n QueryJoinArr,\n QuerySort,\n QuerySortArr,\n SCondition,\n} from \"../types\";\n\nexport interface CreateQueryParams {\n fields?: QueryFields;\n search?: SCondition;\n filter?: QueryFilter | QueryFilterArr | Array;\n or?: QueryFilter | QueryFilterArr | Array;\n join?: QueryJoin | QueryJoinArr | Array;\n sort?: QuerySort | QuerySortArr | Array;\n limit?: number;\n offset?: number;\n page?: number;\n resetCache?: boolean;\n includeDeleted?: number;\n extra?: QueryExtra;\n}\n","import { CreateManyDto } from \"./create-many-dto.interface\";\nimport { CrudRequest } from \"./crud-request.interface\";\nimport { GetManyDefaultResponse } from \"./get-many-default-response.interface\";\n\nimport { CrudService } from \"../services\";\n\nexport interface CrudController {\n service: CrudService;\n getManyBase?(req: CrudRequest): Promise | T[]>;\n getOneBase?(req: CrudRequest): Promise;\n createOneBase?(req: CrudRequest, dto: T): Promise;\n createManyBase?(req: CrudRequest, dto: CreateManyDto): Promise;\n updateOneBase?(req: CrudRequest, dto: Partial): Promise;\n replaceOneBase?(req: CrudRequest, dto: T): Promise;\n deleteOneBase?(req: CrudRequest): Promise;\n recoverOneBase?(req: CrudRequest): Promise;\n}\n","import { RequestQueryBuilderOptions } from \"./request-query-builder-options.interface\";\nimport { AuthGlobalOptions } from \"./auth-options.interface\";\nimport { OperatorsOptions } from \"./operators-options.interface\";\nimport { ParamsOptions } from \"./params-options.interface\";\nimport { RoutesOptions } from \"./routes-options.interface\";\n\nexport interface CrudGlobalConfig {\n queryParser?: RequestQueryBuilderOptions;\n auth?: AuthGlobalOptions;\n routes?: RoutesOptions;\n params?: ParamsOptions;\n operators?: OperatorsOptions;\n query?: {\n limit?: number;\n maxLimit?: number;\n cache?: number | false;\n alwaysPaginate?: boolean;\n softDelete?: boolean;\n };\n serialize?: {\n getMany?: false;\n get?: false;\n create?: false;\n createMany?: false;\n update?: false;\n replace?: false;\n delete?: false;\n recover?: false;\n };\n}\n","import { ValidationPipeOptions } from \"@nestjs/common\";\n\nimport { RoutesFactoryService } from \"../services\";\n\nimport { AuthOptions } from \"./auth-options.interface\";\nimport { DtoOptions } from \"./dto-options.interface\";\nimport { ModelOptions } from \"./model-options.interface\";\nimport { OperatorsOptions } from \"./operators-options.interface\";\nimport { ParamsOptions } from \"./params-options.interface\";\nimport { QueryOptions } from \"./query-options.interface\";\nimport { RoutesOptions } from \"./routes-options.interface\";\nimport { SerializeOptions } from \"./serialize-options.interface\";\n\nexport interface CrudRequestOptions {\n query?: QueryOptions;\n routes?: RoutesOptions;\n params?: ParamsOptions;\n operators?: OperatorsOptions;\n}\n\nexport interface CrudOptions {\n model: ModelOptions;\n dto?: DtoOptions;\n serialize?: SerializeOptions;\n query?: QueryOptions;\n routes?: RoutesOptions;\n routesFactory?: typeof RoutesFactoryService;\n params?: ParamsOptions;\n validation?: ValidationPipeOptions | false;\n operators?: OperatorsOptions;\n swagger?: SwaggerOptions;\n}\n\nexport interface MergedCrudOptions extends CrudOptions {\n auth?: AuthOptions;\n}\n\nexport interface SwaggerOptions {\n enabled: boolean | true;\n}","import { ParsedRequestParams } from \"./parsed-request.interface\";\nimport { CrudRequestOptions } from \"./crud-options.interface\";\n\nexport interface CrudRequest {\n parsed: ParsedRequestParams;\n options: CrudRequestOptions;\n /** authenticated user's from request */\n auth?: {};\n}\n","export interface DtoOptions {\n create?: any;\n update?: any;\n replace?: any;\n}\n","export interface GetManyDefaultResponse {\n data: T[];\n count: number;\n total: number;\n page: number;\n pageCount: number;\n}\n","export interface ModelOptions {\n type: any;\n}\n","export interface OperatorsOptions {\n custom?: CustomOperators;\n}\n\nexport type CustomOperatorQuery = (field: string, param: string) => string;\n\nexport interface CustomOperators {\n [key: string]: {\n query: CustomOperatorQuery;\n params?: { [field: string]: any };\n isArray?: boolean;\n };\n}\n","import { ParamOptionType } from \"../types\";\n\nexport interface ParamsOptions {\n [key: string]: ParamOption;\n}\n\nexport interface ParamOption {\n field?: string;\n type?: ParamOptionType;\n primary?: boolean;\n disabled?: boolean;\n enum?: [];\n}\n","import { ClassTransformOptions } from \"class-transformer\";\nimport {\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n ObjectLiteral,\n} from \"../types\";\n\nexport interface ParsedRequestParams {\n fields: QueryFields;\n paramsFilter: (QueryFilter | undefined)[];\n authPersist: ObjectLiteral | undefined;\n classTransformOptions: ClassTransformOptions | undefined;\n search: SCondition | undefined;\n filter: QueryFilter[];\n or: QueryFilter[];\n join: QueryJoin[];\n sort: QuerySort[];\n limit: number | undefined;\n offset: number | undefined;\n page: number | undefined;\n cache: number | undefined;\n includeDeleted: number | undefined;\n /**\n * Extra options.\n *\n * Custom extra option come from Request and can be used anywhere you want for your business rules.\n * CrudRequest lib. do not evaluate this attribute.\n */\n extra: ObjectLiteral | undefined;\n}\n","import { QueryFields, QuerySort, QueryFilterOption } from \"../types\";\n\nexport interface QueryOptions {\n allow?: QueryFields;\n exclude?: QueryFields;\n persist?: QueryFields;\n filter?: QueryFilterOption;\n join?: JoinOptions;\n sort?: QuerySort[];\n limit?: number;\n maxLimit?: number;\n cache?: number | false;\n alwaysPaginate?: boolean;\n softDelete?: boolean;\n}\n\nexport interface JoinOptions {\n [key: string]: JoinOption;\n}\n\nexport interface JoinOption {\n alias?: string;\n allow?: QueryFields;\n eager?: boolean;\n exclude?: QueryFields;\n persist?: QueryFields;\n select?: boolean;\n required?: boolean;\n}\n","export interface ParamsNamesMap {\n fields?: string | string[];\n search?: string | string[];\n filter?: string | string[];\n or?: string | string[];\n join?: string | string[];\n sort?: string | string[];\n limit?: string | string[];\n offset?: string | string[];\n page?: string | string[];\n cache?: string | string[];\n includeDeleted?: string | string[];\n extra?: string | string[];\n}\nexport interface RequestQueryBuilderOptions {\n delim: string;\n delimStr: string;\n paramNamesMap?: ParamsNamesMap;\n}\n","import { BaseRouteName } from \"../types\";\n\nexport interface RoutesOptions {\n exclude?: BaseRouteName[];\n only?: BaseRouteName[];\n getManyBase?: GetManyRouteOptions;\n getOneBase?: GetOneRouteOptions;\n createOneBase?: CreateOneRouteOptions;\n createManyBase?: CreateManyRouteOptions;\n updateOneBase?: UpdateOneRouteOptions;\n replaceOneBase?: ReplaceOneRouteOptions;\n deleteOneBase?: DeleteOneRouteOptions;\n recoverOneBase?: RecoverOneRouteOptions;\n}\n\nexport interface BaseRouteOptions {\n interceptors?: any[];\n decorators?: (PropertyDecorator | MethodDecorator)[];\n}\n\nexport interface GetManyRouteOptions extends BaseRouteOptions {}\n\nexport interface GetOneRouteOptions extends BaseRouteOptions {}\n\nexport interface CreateOneRouteOptions extends BaseRouteOptions {\n returnShallow?: boolean;\n}\n\nexport interface CreateManyRouteOptions extends BaseRouteOptions {}\n\nexport interface ReplaceOneRouteOptions extends BaseRouteOptions {\n allowParamsOverride?: boolean;\n returnShallow?: boolean;\n}\n\nexport interface UpdateOneRouteOptions extends BaseRouteOptions {\n allowParamsOverride?: boolean;\n returnShallow?: boolean;\n}\n\nexport interface DeleteOneRouteOptions extends BaseRouteOptions {\n returnDeleted?: boolean;\n}\n\nexport interface RecoverOneRouteOptions extends BaseRouteOptions {\n returnRecovered?: boolean;\n}\n","import { Type } from \"@nestjs/common\";\n\nexport interface SerializeOptions {\n getMany?: Type | false;\n get?: Type | false;\n create?: Type | false;\n createMany?: Type | false;\n update?: Type | false;\n replace?: Type | false;\n delete?: Type | false;\n recover?: Type | false;\n}\n","module.exports = require(\"@nestjs/core\");","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { IsEmailUserAlreadyExistConstraint } from \"./user-email-already-exists.constraint\";\nimport { UserController } from \"./user.controller\";\nimport { User } from \"./user.entity\";\nimport { UserService } from \"./user.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([User])],\n controllers: [UserController],\n providers: [UserService, IsEmailUserAlreadyExistConstraint],\n exports: [UserService, IsEmailUserAlreadyExistConstraint],\n})\nexport class UserModule {}\n","module.exports = require(\"@nestjs/typeorm\");","/* eslint-disable @typescript-eslint/no-explicit-any, import/named */\nimport { Injectable } from \"@nestjs/common\";\nimport {\n registerDecorator,\n ValidationOptions,\n ValidatorConstraint,\n ValidatorConstraintInterface,\n} from \"class-validator\";\n\nimport { UserService } from \"./user.service\";\n\n@ValidatorConstraint({ name: \"isEmailUserAlreadyExist\", async: true })\n@Injectable()\nexport class IsEmailUserAlreadyExistConstraint\n implements ValidatorConstraintInterface\n{\n constructor(protected readonly userService: UserService) {}\n\n async validate(text: string) {\n return !(await this.userService.userExists({ email: text }));\n }\n}\n\nexport function IsEmailUserAlreadyExist(validationOptions?: ValidationOptions) {\n return function (object: any, propertyName: string) {\n registerDecorator({\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n constraints: [],\n validator: IsEmailUserAlreadyExistConstraint,\n });\n };\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { UserDto } from \"./user.dto\";\nimport { User } from \"./user.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class UserService extends TypeOrmCrudService {\n constructor(@InjectRepository(User) readonly repo) {\n super(repo);\n }\n\n async userExists(dto: Partial): Promise {\n const user: User = await this.repo.findOneBy(dto);\n return Boolean(user);\n }\n}\n","import * as bcrypt from \"bcryptjs\";\nimport { Exclude } from \"class-transformer\";\nimport {\n AfterLoad,\n BaseEntity,\n BeforeInsert,\n BeforeUpdate,\n Column,\n CreateDateColumn,\n DeleteDateColumn,\n Entity,\n OneToMany,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from \"typeorm\";\n\nimport { Address } from \"../address/address.entity\";\nimport { Contract } from \"../contract/contract.entity\";\nimport { Phone } from \"../phone/phone.entity\";\n\n@Entity()\nexport class User extends BaseEntity {\n @PrimaryGeneratedColumn(\"uuid\")\n id: string;\n\n @Column({ unique: true, length: 125 })\n email: string;\n\n @Column({ type: \"timestamp\", nullable: true })\n emailConfirmedAt: Date;\n\n @Column({ type: \"varchar\", nullable: true })\n @Exclude()\n emailToken: string;\n\n @Column({ type: \"varchar\", length: 80 })\n @Exclude({ toClassOnly: false, toPlainOnly: true })\n password: string;\n\n @CreateDateColumn({ type: \"timestamp\" })\n createdAt: Date;\n\n @UpdateDateColumn({ type: \"timestamp\" })\n updatedAt: Date;\n\n @OneToMany(() => Phone, (phone) => phone.user, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n phones: Phone[];\n\n @OneToMany(() => Contract, (contract) => contract.user, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n contracts: Contract[];\n\n @OneToMany(() => Address, (address) => address.user, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n addresses: Address[];\n\n @DeleteDateColumn()\n @Exclude()\n deletedAt: Date;\n\n @Exclude()\n private tempPassword?: string;\n\n @BeforeInsert()\n private async hashPassword(): Promise {\n this.password = await bcrypt.hash(this.password, 10);\n }\n\n @AfterLoad()\n private loadTempPassword(): void {\n this.tempPassword = this.password;\n }\n\n @BeforeUpdate()\n private async encryptPassword(): Promise {\n if (this.tempPassword !== null && this.tempPassword !== this.password) {\n try {\n await this.hashPassword();\n // After changed, temp password should be reassigned to new one, so if we try to save again,\n // it does not change the password wrongly\n this.tempPassword = this.password;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(\"Unable to encrypt password: \" + error.message);\n }\n }\n }\n }\n}\n","module.exports = require(\"bcryptjs\");","import {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\nimport { UUID } from \"typeorm/driver/mongodb/bson.typings\";\n\nimport { User } from \"../user/user.entity\";\n\nimport { AddressType } from \"./address-type.entity\";\n\n@Entity()\nexport class Address extends BaseEntity {\n @PrimaryGeneratedColumn(\"uuid\")\n id: number;\n\n @Column({ type: \"varchar\", nullable: false })\n street: string;\n\n @Column({ type: \"int\", nullable: true })\n number: number;\n\n @Column({ type: \"varchar\", nullable: false })\n city: string;\n\n @Column({ type: \"varchar\", nullable: false, length: 2 })\n state: string;\n\n @Column({ name: \"user_id\", type: \"varchar\", nullable: false })\n userId: UUID;\n\n @Column({ name: \"is_active\", type: \"boolean\", default: true })\n isActive: boolean;\n\n @Column({ name: \"type_id\", type: \"int\", nullable: false })\n typeId: number;\n\n @ManyToOne(() => User, (user) => user.id)\n @JoinColumn({\n name: \"user_id\",\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"address_user\",\n })\n user: User;\n\n @ManyToOne(() => AddressType, (addressType) => addressType.id, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n @JoinColumn({\n name: \"type_id\",\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"address_addresstype\",\n })\n type: AddressType;\n}\n","module.exports = require(\"typeorm/driver/mongodb/bson.typings\");","import {\n BaseEntity,\n Column,\n Entity,\n OneToMany,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { Address } from \"./address.entity\";\n\n@Entity()\nexport class AddressType extends BaseEntity {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ type: \"varchar\", nullable: false })\n type: string;\n\n @Column({ name: \"is_active\", type: \"boolean\", default: true })\n isActive: boolean;\n\n @OneToMany(() => Address, (address) => address.type)\n address: Address;\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport { Exclude } from \"class-transformer\";\nimport {\n IsDateString,\n IsNotEmpty,\n IsOptional,\n IsString,\n MaxLength,\n} from \"class-validator\";\nimport {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { User } from \"../user/user.entity\";\n\nconst { CREATE, UPDATE } = CrudValidationGroups;\n\n@Entity()\nexport class Contract extends BaseEntity {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ name: \"userId\" })\n @Exclude({ toPlainOnly: true })\n userId: string;\n\n @MaxLength(60)\n @Column({ name: \"contractNumber\", type: \"varchar\", length: 60 })\n contractNumber: string;\n\n @IsNotEmpty()\n @IsDateString()\n @Column({ name: \"startedAt\", type: \"date\" })\n startedAt: Date;\n\n @Column({ name: \"note\", type: \"varchar\", length: \"11\", default: \"\" })\n @IsOptional({ groups: [UPDATE] })\n @IsString()\n note: string;\n\n @ManyToOne((type) => User, (user) => user.id)\n @JoinColumn({\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"contact_user\",\n })\n user: User;\n}\n","import { Exclude } from \"class-transformer\";\nimport {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { User } from \"../user/user.entity\";\n\n@Entity()\nexport class Phone extends BaseEntity {\n @Exclude()\n @PrimaryGeneratedColumn(\"uuid\")\n id: string;\n\n @Exclude({ toPlainOnly: true })\n @Column({ type: \"varchar\", nullable: false })\n userId: string;\n\n @Column({ type: \"varchar\", nullable: false })\n phoneNumber: string;\n\n @ManyToOne((type) => User, (user) => user.id)\n @JoinColumn({\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"UserId\",\n })\n user: User;\n}\n","import {\n Crud,\n CrudController,\n CrudRequest,\n CrudRequestInterceptor,\n ParsedRequest,\n} from \"@2amtech/crudx\";\nimport { Controller, Get, UseInterceptors } from \"@nestjs/common\";\n\nimport { UserDto } from \"./user.dto\";\nimport { User } from \"./user.entity\";\nimport { UserService } from \"./user.service\";\n\n@Crud({\n model: {\n type: User,\n },\n dto: {\n create: UserDto,\n update: UserDto,\n },\n params: {\n id: {\n type: \"uuid\",\n field: \"id\",\n primary: true,\n },\n },\n})\n@Controller(\"users\")\nexport class UserController implements CrudController {\n constructor(public service: UserService) {}\n\n get base(): CrudController {\n return this;\n }\n\n @UseInterceptors(CrudRequestInterceptor)\n @Get(\"/emails\")\n async emails(@ParsedRequest() req: CrudRequest) {\n return this.service.find({ select: [\"email\"] });\n }\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport {\n IsEmail,\n IsNotEmpty,\n IsString,\n MaxLength,\n MinLength,\n ValidateIf,\n} from \"class-validator\";\nimport { isEmpty } from \"lodash\";\n\nimport { PhoneDto } from \"../phone/phone.dto\";\n\nimport { IsEmailUserAlreadyExist } from \"./user-email-already-exists.constraint\";\n\nconst { CREATE } = CrudValidationGroups;\n\nexport class UserDto {\n @ValidateIf((o) => !isEmpty(o.email))\n @IsEmail()\n @IsEmailUserAlreadyExist({\n message: \"Email already exists\",\n groups: [CREATE],\n })\n email: string;\n\n @ValidateIf((o) => !isEmpty(o.email))\n @IsString()\n @IsNotEmpty()\n @MaxLength(32, { message: \"Password is too long\" })\n @MinLength(8, {\n message: \"Password must be at least 8 characters long\",\n })\n password: string;\n\n phone: PhoneDto | [];\n}\n","import { Module } from \"@nestjs/common\";\nimport { ConfigModule, ConfigService } from \"@nestjs/config\";\nimport { TypeOrmModule, TypeOrmModuleOptions } from \"@nestjs/typeorm\";\n\nimport { databaseConfig } from \"../config\";\n\nimport { AddressModule } from \"./address/address.module\";\nimport { AppController } from \"./app.controller\";\nimport { AppService } from \"./app.service\";\nimport { AuthModule } from \"./auth/auth.module\";\nimport { ClaimModule } from \"./claims/claim.module\";\nimport { ContractModule } from \"./contract/contract.module\";\nimport { PhoneModule } from \"./phone/phone.module\";\nimport { UserModule } from \"./user/user.module\";\n\n@Module({\n imports: [\n ConfigModule.forRoot({\n isGlobal: true,\n load: [databaseConfig],\n envFilePath: ['.env.testing']\n }),\n TypeOrmModule.forRootAsync({\n useFactory: (config: ConfigService) =>\n {\n type: config.get(\"database.type\"),\n host: config.get(\"database.host\"),\n port: config.get(\"database.port\"),\n username: config.get(\"database.username\"),\n password: config.get(\"database.password\"),\n database: config.get(\"database.database\"),\n entities: config.get(\"database.entities\"),\n synchronize: config.get(\"database.synchronize\"),\n },\n inject: [ConfigService],\n }),\n UserModule,\n PhoneModule,\n AuthModule,\n ContractModule,\n ClaimModule,\n AddressModule,\n ],\n controllers: [AppController],\n providers: [AppService],\n})\nexport class AppModule {}\n","module.exports = require(\"@nestjs/config\");","export * from \"./database.config\";\n","import { registerAs } from \"@nestjs/config\";\n\nimport { AddressType } from \"../app/address/address-type.entity\";\nimport { Address } from \"../app/address/address.entity\";\nimport { Claim } from \"../app/claims/claim.entity\";\nimport { Contract } from \"../app/contract/contract.entity\";\nimport { Phone } from \"../app/phone/phone.entity\";\nimport { User } from \"../app/user/user.entity\";\n\nexport const databaseConfig = registerAs(\"database\", () => ({\n type: process.env.DB_TYPE,\n host: process.env.DB_HOST,\n port: process.env.DB_PORT,\n username: process.env.DB_USERNAME,\n password: process.env.DB_PASSWORD,\n database: process.env.DB_DATABASE,\n entities: [User, Phone, Contract, Claim, Address, AddressType],\n synchronize: true,\n autoLoadEntities: true,\n encoding: process.env.DB_CHARSET,\n}));\n","import {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { Contract } from \"../contract/contract.entity\";\n\n@Entity()\nexport class Claim extends BaseEntity {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ name: \"amount\", type: \"double\" })\n amount: number;\n\n @Column({ name: \"date\", type: \"date\" })\n date: Date;\n\n @Column({ name: \"contractId\", type: \"int\" })\n contractId: number;\n\n @ManyToOne((type) => Contract, (contract) => contract.id, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n @JoinColumn({\n referencedColumnName: \"id\",\n name: \"contractId\",\n })\n contract: Contract;\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { AddressType } from \"./address-type.entity\";\nimport { AddressTypeService } from \"./address-type.service\";\nimport { AddressController } from \"./address.controller\";\nimport { Address } from \"./address.entity\";\nimport { AddressService } from \"./address.service\";\n\n@Module({\n imports: [\n TypeOrmModule.forFeature([Address]),\n TypeOrmModule.forFeature([AddressType]),\n ],\n controllers: [AddressController],\n providers: [AddressService, AddressTypeService],\n exports: [AddressService, AddressTypeService],\n})\nexport class AddressModule {}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { AddressType } from \"./address-type.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class AddressTypeService extends TypeOrmCrudService {\n constructor(@InjectRepository(AddressType) readonly repo) {\n super(repo);\n }\n}\n","import { Crud, CrudController } from \"@2amtech/crudx\";\nimport { Controller } from \"@nestjs/common\";\n\nimport { Address } from \"./address.entity\";\nimport { AddressService } from \"./address.service\";\n\n@Crud({\n model: {\n type: Address,\n },\n params: {\n userId: {\n type: \"uuid\",\n field: \"userId\",\n },\n },\n query: {\n exclude: [\"userId\", \"typeId\"],\n join: {\n type: {\n allow: [\"id\", \"type\"],\n required: true,\n eager: true,\n },\n },\n filter: {\n isActive: {\n $eq: true,\n },\n },\n },\n})\n@Controller(\"/users/:userId/addresses\")\nexport class AddressController implements CrudController
{\n constructor(public service: AddressService) {}\n\n get base(): CrudController
{\n return this;\n }\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Address } from \"./address.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class AddressService extends TypeOrmCrudService
{\n constructor(@InjectRepository(Address) readonly repo) {\n super(repo);\n }\n}\n","import { Controller, Get } from \"@nestjs/common\";\n\nimport { AppService } from \"./app.service\";\n\n@Controller()\nexport class AppController {\n constructor(private readonly appService: AppService) {}\n\n @Get()\n getData() {\n return this.appService.getData();\n }\n}\n","import { Injectable } from \"@nestjs/common\";\n\n@Injectable()\nexport class AppService {\n getData(): { message: string } {\n return { message: \"Hello API\" };\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { JwtModule } from \"@nestjs/jwt\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { User } from \"../user/user.entity\";\nimport { UserModule } from \"../user/user.module\";\nimport { UserService } from \"../user/user.service\";\n\nimport { AuthController } from \"./auth.controller\";\nimport { AuthService } from \"./auth.service\";\nimport { jwtConstants } from \"./constants\";\nimport { MeController } from \"./me.controller\";\n\n@Module({\n imports: [\n UserModule,\n TypeOrmModule.forFeature([User]),\n JwtModule.register({\n global: true,\n secret: jwtConstants.secret,\n signOptions: { expiresIn: \"60s\" },\n }),\n ],\n controllers: [AuthController, MeController],\n providers: [AuthService, UserService],\n exports: [AuthService],\n})\nexport class AuthModule {}\n","module.exports = require(\"@nestjs/jwt\");","import {\n Body,\n Controller,\n HttpCode,\n HttpStatus,\n Param,\n Post,\n} from \"@nestjs/common\";\n\nimport { AuthService } from \"./auth.service\";\n\n@Controller(\"auth\")\nexport class AuthController {\n constructor(private authService: AuthService) {}\n\n @HttpCode(HttpStatus.OK)\n @Post(\"sign-in\")\n async signIn(@Body() body: Record) {\n return this.authService.signIn(body.email, body.pass);\n }\n}\n","import { Injectable, UnauthorizedException } from \"@nestjs/common\";\nimport { JwtService } from \"@nestjs/jwt\";\nimport * as bcrypt from \"bcryptjs\";\n\nimport { UserService } from \"../user/user.service\";\n\n@Injectable()\nexport class AuthService {\n constructor(private service: UserService, private jwtService: JwtService) {}\n\n async signIn(email: string, pass: string): Promise<{ access_token: string }> {\n const user = await this.service.findOne({ where: { email: email } });\n\n if (!bcrypt.compareSync(pass, user?.password)) {\n throw new UnauthorizedException();\n }\n\n const payload = { sub: user.id, username: user.email };\n\n return {\n access_token: await this.jwtService.signAsync(payload),\n };\n }\n}\n","export const jwtConstants = {\n secret: \"some well defined secret key\",\n};\n","import { Crud, CrudAuth, CrudController, Feature } from \"@2amtech/crudx\";\nimport { Controller, UseGuards, UseInterceptors } from \"@nestjs/common\";\n\nimport { User } from \"../user/user.entity\";\nimport { UserService } from \"../user/user.service\";\n\nimport { AuthGuard } from \"./auth.guard\";\n\n@Crud({\n model: {\n type: User,\n },\n routes: {\n only: [\"getOneBase\"],\n },\n params: {\n id: {\n primary: true,\n disabled: true,\n },\n },\n})\n@CrudAuth({\n property: \"user\",\n filter: (user: any) => ({\n id: user.sub,\n }),\n})\n@Controller(\"me\")\n@Feature(\"GetMyInfo\")\n@UseGuards(AuthGuard)\nexport class MeController implements CrudController {\n constructor(public service: UserService) {}\n\n get base(): CrudController {\n return this;\n }\n}\n","import { getAction, getFeature } from \"@2amtech/crudx\";\nimport {\n CanActivate,\n ExecutionContext,\n Injectable,\n UnauthorizedException,\n} from \"@nestjs/common\";\nimport { Reflector } from \"@nestjs/core\";\nimport { JwtService } from \"@nestjs/jwt\";\n\nimport { jwtConstants } from \"./constants\";\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n constructor(private jwtService: JwtService, private reflector: Reflector) {}\n\n async canActivate(context: ExecutionContext): Promise {\n const request = context.switchToHttp().getRequest();\n const token = this.extractTokenFromHeader(request);\n if (!token) {\n throw new UnauthorizedException();\n }\n try {\n const payload = await this.jwtService.verifyAsync(token, {\n secret: jwtConstants.secret,\n });\n\n request[\"user\"] = payload;\n } catch {\n throw new UnauthorizedException();\n }\n\n // up here, it's a simple auth guard with jwt\n\n //\n\n const handler = context.getHandler();\n const controller = context.getClass();\n\n const feature = getFeature(controller);\n const action = getAction(handler);\n\n console.log(`${feature}-${action}`); // e.g \"GetMyInfo-Read-One\"\n // write custom acl rule\n\n return true;\n }\n\n private extractTokenFromHeader(request: Request): string | undefined {\n const [type, token] = request.headers[\"authorization\"]?.split(\" \") ?? [];\n return type === \"Bearer\" ? token : undefined;\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { ClaimController } from \"./claim.controller\";\nimport { Claim } from \"./claim.entity\";\nimport { ClaimService } from \"./claim.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([Claim])],\n providers: [ClaimService],\n controllers: [ClaimController],\n exports: [ClaimService],\n})\nexport class ClaimModule {}\n","import { Crud, CrudController } from \"@2amtech/crudx\";\nimport { Controller } from \"@nestjs/common\";\n\nimport { Claim } from \"./claim.entity\";\nimport { ClaimService } from \"./claim.service\";\n\n@Crud({\n model: {\n type: Claim,\n },\n params: {\n contractId: {\n type: \"number\",\n field: \"contractId\",\n },\n },\n query: {\n allow: [\"id\", \"amount\", \"date\"],\n persist: [\"id\"],\n limit: 5,\n maxLimit: 5,\n alwaysPaginate: true,\n sort: [\n {\n field: \"id\",\n order: \"DESC\",\n },\n ],\n cache: 2000,\n join: {\n contract: {\n eager: true,\n },\n },\n },\n})\n@Controller(\"/contracts/:contractId/claims\")\nexport class ClaimController implements CrudController {\n constructor(public service: ClaimService) {}\n\n get base(): CrudController {\n return this;\n }\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Claim } from \"./claim.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class ClaimService extends TypeOrmCrudService {\n constructor(@InjectRepository(Claim) readonly repo) {\n super(repo);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { ContractController } from \"./contract.controller\";\nimport { Contract } from \"./contract.entity\";\nimport { ContractService } from \"./contract.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([Contract])],\n providers: [ContractService],\n controllers: [ContractController],\n exports: [ContractService],\n})\nexport class ContractModule {}\n","import { Crud, CrudController, SerializeOptions } from \"@2amtech/crudx\";\nimport { Controller, Type } from \"@nestjs/common\";\n\nimport { ContractCreateDto } from \"./contract.create.dto\";\nimport { ContractCreateResponseDto } from \"./contract.create.response.dto\";\nimport { Contract } from \"./contract.entity\";\nimport { ContractService } from \"./contract.service\";\n\n@Crud({\n model: {\n type: Contract,\n },\n dto: {\n create: ContractCreateDto,\n },\n routes: {\n exclude: [\"deleteOneBase\"],\n },\n params: {\n userId: {\n field: \"userId\",\n type: \"uuid\",\n },\n },\n serialize: {\n create: ContractCreateResponseDto,\n },\n})\n@Controller(\"/users/:userId/contracts\")\nexport class ContractController implements CrudController {\n constructor(public service: ContractService) {}\n\n get base(): CrudController {\n return this;\n }\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport {\n IsDateString,\n IsNotEmpty,\n IsOptional,\n IsString,\n MaxLength,\n} from \"class-validator\";\nimport { Column } from \"typeorm\";\n\nconst { CREATE, UPDATE } = CrudValidationGroups;\n\nexport class ContractCreateDto {\n @MaxLength(60)\n @Column({ name: \"contractNumber\", type: \"varchar\", length: 60 })\n contractNumber: string;\n\n @IsNotEmpty()\n @IsDateString()\n @Column({ name: \"startedAt\", type: \"date\" })\n startedAt: Date;\n\n @Column({ name: \"note\", type: \"varchar\", length: \"11\", default: \"\" })\n @IsOptional({ groups: [UPDATE] })\n @IsString()\n note: string;\n}\n","import { Exclude } from \"class-transformer\";\n\nexport class ContractCreateResponseDto {\n readonly id: number;\n\n @Exclude()\n readonly userId: string;\n\n readonly contractNumber: string;\n readonly startedAt: string;\n readonly note: string;\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Contract } from \"./contract.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class ContractService extends TypeOrmCrudService {\n constructor(@InjectRepository(Contract) readonly repo) {\n super(repo);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { PhoneController } from \"./phone.controller\";\nimport { Phone } from \"./phone.entity\";\nimport { PhoneService } from \"./phone.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([Phone])],\n exports: [PhoneService],\n providers: [PhoneService],\n controllers: [PhoneController],\n})\nexport class PhoneModule {}\n","import {\n CreateManyDto,\n Crud,\n CrudController,\n CrudRequest,\n GetManyDefaultResponse,\n Override,\n ParsedBody,\n ParsedRequest,\n} from \"@2amtech/crudx\";\nimport { Controller } from \"@nestjs/common\";\n\nimport { PhoneDto } from \"./phone.dto\";\nimport { Phone } from \"./phone.entity\";\nimport { PhoneService } from \"./phone.service\";\n\n@Crud({\n model: {\n type: Phone,\n },\n dto: {\n create: PhoneDto,\n update: PhoneDto,\n },\n params: {\n id: {\n field: \"id\",\n type: \"uuid\",\n primary: true,\n },\n userId: {\n field: \"userId\",\n type: \"uuid\",\n },\n },\n query: {\n limit: 25,\n cache: 2000,\n alwaysPaginate: true,\n },\n})\n@Controller(\"/users/:userId/phones\")\nexport class PhoneController implements CrudController {\n constructor(public service: PhoneService) {}\n\n get base(): CrudController {\n return this;\n }\n\n @Override()\n async createOne(\n @ParsedRequest() req: CrudRequest,\n @ParsedBody() dto\n ): Promise {\n const response = await Promise.resolve(this.base.createOneBase(req, dto));\n\n response[\"customProp\"] = \"custom added property\";\n\n return response;\n }\n\n @Override()\n async createMany(\n @ParsedRequest() req: CrudRequest,\n @ParsedBody() dto: CreateManyDto\n ): Promise {\n const response = await Promise.resolve(this.base.createManyBase(req, dto));\n response.forEach((res) => {\n res[\"customProp\"] = \"custom added property\";\n });\n\n return response;\n }\n\n @Override()\n async getOne(@ParsedRequest() req: CrudRequest): Promise {\n const response = await Promise.resolve(this.base.getOneBase(req));\n\n response[\"customProp\"] = \"custom added property\";\n\n return response;\n }\n\n @Override()\n async getMany(\n @ParsedRequest() req: CrudRequest\n ): Promise | Phone[]> {\n const response = >(\n await this.base.getManyBase(req)\n );\n\n response.data.forEach((res) => {\n res[\"customProp\"] = \"custom added property\";\n });\n\n return response;\n }\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport { Exclude, Expose } from \"class-transformer\";\nimport {\n IsNotEmpty,\n IsString,\n ValidateIf,\n isEmpty,\n isNotEmpty,\n isString,\n isUUID,\n} from \"class-validator\";\n\nconst { CREATE } = CrudValidationGroups;\n\nexport class PhoneDto {\n @IsNotEmpty()\n @IsString()\n @Expose()\n phoneNumber: string;\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Phone } from \"./phone.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class PhoneService extends TypeOrmCrudService {\n constructor(@InjectRepository(Phone) readonly repo) {\n super(repo);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * This is not a production server yet!\n * This is only a minimal backend to get started.\n */\nimport {\n CrudConfigService,\n QueryBuilderService,\n RequestQueryBuilderOptions,\n} from \"@2amtech/crudx\";\nimport { Logger } from \"@nestjs/common\";\nimport { NestFactory } from \"@nestjs/core\";\nimport { useContainer } from \"class-validator\";\n\nimport { UserModule } from \"./app/user/user.module\";\n\n/*\n * Default configuration for CRUD, can be overridden in each module.\n * Must be loaded before importing AppModule.\n */\nCrudConfigService.load({\n query: {\n limit: 25,\n cache: 2000,\n alwaysPaginate: true,\n },\n routes: {\n updateOneBase: {\n allowParamsOverride: true,\n },\n deleteOneBase: {\n returnDeleted: true,\n },\n },\n});\n\nQueryBuilderService.setOptions({\n paramNamesMap: {\n search: \"s\",\n join: [\"join[]\", \"join\", \"include[]\", \"include\"],\n },\n});\n\nimport { AppModule } from \"./app/app.module\";\n\nasync function bootstrap() {\n const app = await NestFactory.create(AppModule);\n const globalPrefix = \"v1\";\n app.setGlobalPrefix(globalPrefix);\n app.enableCors();\n useContainer(app.select(UserModule), { fallbackOnErrors: true });\n const port = process.env.PORT || 3000;\n await app.listen(port);\n Logger.log(\n `🚀 Application is running on: http://localhost:${port}/${globalPrefix}`\n );\n}\n\nbootstrap();\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/packages/crudx-swagger/CHANGELOG.md b/dist/packages/crudx-swagger/CHANGELOG.md new file mode 100644 index 000000000..f15846180 --- /dev/null +++ b/dist/packages/crudx-swagger/CHANGELOG.md @@ -0,0 +1,5 @@ +# Change Log + +# [1.0.0](#) (2024-07-15) + +### initial release diff --git a/dist/packages/crudx-swagger/README.md b/dist/packages/crudx-swagger/README.md new file mode 100644 index 000000000..15180567e --- /dev/null +++ b/dist/packages/crudx-swagger/README.md @@ -0,0 +1,88 @@ +# @2amtech/crudx-swagger + +NestJS provides great support to swagger through its package [@nestjs/swagger](https://docs.nestjs.com/openapi/introduction). + +As a library built to empower the CRUD endpoints creation, the `@2amtech/crudx` fulfills this step proving the `@2amtech/crudx-swagger`, a handy one-step setup module to add relevant meta-data for the auto-generated endpoints CRUD endpoints. + +With this package, you will have defined default descriptions in your swagger docs for all your CRUD routes, being able to replace/extend them, by simply overriding the desired route, and adding your own description using the `@nestjs/swagger` decorators. + +## Install + +```bash +$ npm install @2amtech/crudx-swagger +``` + +## Configure + +To configure the package, you will only have to set the `CrudxSwaggerRoutesFactory` to the `routesFactory` option into your application Global Option: + +```typescript +import { CrudConfigService } from "@2amtech/crudx"; +import { NestFactory } from "@nestjs/core"; +import { CrudxSwaggerRoutesFactory } from "@2amtech/crudx-swagger" + +CrudConfigService.load({ + ... + routesFactory: CrudxSwaggerRoutesFactory, +}); + +import { AppModule } from "./app/app.module"; +... +``` + +Then, you have to create a swagger document and the app itself, as it's usually done: + +```typescript +async function bootstrap() { + const app = await NestFactory.create(AppModule); + const globalPrefix = "api"; + app.setGlobalPrefix(globalPrefix); + + const port = process.env.PORT || 3000; + + const config = new DocumentBuilder().setTitle("Crudx Swagger").setDescription("Crudx-Swagger").setVersion("1.0").addTag("crudx-swagger").build(); + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup("api/docs", app, document); + + await app.listen(port); +} + +bootstrap(); +``` + +## Overring docs + +If you want to change the default docs or update some route docs with your own description, all you have to do is override the route, and then apply your decorators: + +```typescript +... + +@Crud({ + model: { + type: User, + }, +}) +@Controller('/user') +export class UserController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + } + + @Override() + @ApiResponse({ + status: 200, + description: "Overriden description", + }) + async getOne(req: CrudRequest): Promise { + return this.base.getOneBase(req); + } +} +``` + +
+
+ web development has never been so fun
+ www.2am.tech +
diff --git a/dist/packages/crudx-swagger/demo/crudx-swagger-demo/assets/.gitkeep b/dist/packages/crudx-swagger/demo/crudx-swagger-demo/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js b/dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js new file mode 100644 index 000000000..78ed8c5bc --- /dev/null +++ b/dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js @@ -0,0 +1,4113 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(3), exports); +tslib_1.__exportStar(__webpack_require__(22), exports); +tslib_1.__exportStar(__webpack_require__(13), exports); +tslib_1.__exportStar(__webpack_require__(24), exports); +tslib_1.__exportStar(__webpack_require__(10), exports); +tslib_1.__exportStar(__webpack_require__(39), exports); +tslib_1.__exportStar(__webpack_require__(52), exports); +tslib_1.__exportStar(__webpack_require__(6), exports); +tslib_1.__exportStar(__webpack_require__(26), exports); + + +/***/ }), +/* 2 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("tslib"); + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(4), exports); +tslib_1.__exportStar(__webpack_require__(47), exports); +tslib_1.__exportStar(__webpack_require__(48), exports); +tslib_1.__exportStar(__webpack_require__(49), exports); +tslib_1.__exportStar(__webpack_require__(50), exports); +tslib_1.__exportStar(__webpack_require__(51), exports); + + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Crud = void 0; +const lodash_1 = __webpack_require__(5); +const services_1 = __webpack_require__(6); +const Crud = (options) => (target) => { + const factoryMethod = options.routesFactory || services_1.RoutesFactoryService; + const factory = (0, lodash_1.isUndefined)(services_1.CrudConfigService.config?.routesFactory) + ? new factoryMethod(target, options) + : new services_1.CrudConfigService.config.routesFactory(target, options); +}; +exports.Crud = Crud; + + +/***/ }), +/* 5 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("lodash"); + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(7), exports); +tslib_1.__exportStar(__webpack_require__(9), exports); +tslib_1.__exportStar(__webpack_require__(34), exports); +tslib_1.__exportStar(__webpack_require__(37), exports); +tslib_1.__exportStar(__webpack_require__(38), exports); +tslib_1.__exportStar(__webpack_require__(44), exports); + + +/***/ }), +/* 7 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudService = void 0; +const common_1 = __webpack_require__(8); +const lodash_1 = __webpack_require__(5); +class CrudService { + throwBadRequestException(msg) { + throw new common_1.BadRequestException(msg); + } + throwNotFoundException(name) { + throw new common_1.NotFoundException(`${name} not found`); + } + /** + * Wrap page into page-info + * override this method to create custom page-info response + * or set custom `serialize.getMany` dto in the controller's CrudOption + * @param data + * @param total + * @param limit + * @param offset + */ + createPageInfo(data, total, limit, offset) { + return { + data, + count: data.length, + total, + page: limit ? Math.floor(offset / limit) + 1 : 1, + pageCount: limit && total ? Math.ceil(total / limit) : 1, + }; + } + /** + * Determine if need paging + * @param parsed + * @param options + */ + decidePagination(parsed, options) { + return (options.query?.alwaysPaginate || + ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) && + !!this.getTake(parsed, options.query))); + } + /** + * Get number of resources to be fetched + * @param query + * @param options + */ + getTake(query, options) { + if (query.limit) { + return options.maxLimit + ? query.limit <= options.maxLimit + ? query.limit + : options.maxLimit + : query.limit; + } + /* istanbul ignore if */ + if (options.limit) { + return options.maxLimit + ? options.limit <= options.maxLimit + ? options.limit + : options.maxLimit + : options.limit; + } + return options.maxLimit ? options.maxLimit : null; + } + /** + * Get number of resources to be skipped + * @param query + * @param take + */ + getSkip(query, take) { + return query.page && take + ? take * (query.page - 1) + : query.offset + ? query.offset + : null; + } + /** + * Get primary param name from CrudOptions + * @param options + */ + getPrimaryParams(options) { + if ((0, lodash_1.isEmpty)(options.params)) { + return []; + } + // @ts-ignore + return (0, lodash_1.keys)(options.params) + .filter((n) => (0, lodash_1.get)(options, `params[${n}].primary`, false)) + .map((p) => (0, lodash_1.get)(options, `params[${p}].field`)); + } +} +exports.CrudService = CrudService; + + +/***/ }), +/* 8 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common"); + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudConfigService = void 0; +const lodash_1 = __webpack_require__(5); +const helpers_1 = __webpack_require__(10); +const query_builder_service_1 = __webpack_require__(34); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = __webpack_require__(36); +class CrudConfigService { + static load(config = {}) { + const auth = (0, helpers_1.isObjectFull)(config.auth) ? config.auth : {}; + const query = (0, helpers_1.isObjectFull)(config.query) ? config.query : {}; + const routes = (0, helpers_1.isObjectFull)(config.routes) ? config.routes : {}; + const operators = (0, helpers_1.isObjectFull)(config.operators) ? config.operators : {}; + const params = (0, helpers_1.isObjectFull)(config.params) ? config.params : {}; + const serialize = (0, helpers_1.isObjectFull)(config.serialize) ? config.serialize : {}; + const routesFactory = !(0, lodash_1.isUndefined)(config.routesFactory) ? config.routesFactory : undefined; + if ((0, helpers_1.isObjectFull)(config.queryParser)) { + query_builder_service_1.QueryBuilderService.setOptions({ + ...config.queryParser, + }); + } + CrudConfigService.config = deepmerge(CrudConfigService.config, { auth, query, routes, operators, params, serialize, routesFactory }, + // @ts-ignore + { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }); + } +} +exports.CrudConfigService = CrudConfigService; +CrudConfigService.config = { + auth: {}, + query: { + alwaysPaginate: false, + }, + operators: {}, + routes: { + getManyBase: { interceptors: [], decorators: [] }, + getOneBase: { interceptors: [], decorators: [] }, + createOneBase: { interceptors: [], decorators: [], returnShallow: false }, + createManyBase: { interceptors: [], decorators: [] }, + updateOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + replaceOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false }, + recoverOneBase: { + interceptors: [], + decorators: [], + returnRecovered: false, + }, + }, + params: {}, + routesFactory: undefined, +}; + + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(11), exports); +tslib_1.__exportStar(__webpack_require__(12), exports); +tslib_1.__exportStar(__webpack_require__(19), exports); +tslib_1.__exportStar(__webpack_require__(23), exports); +tslib_1.__exportStar(__webpack_require__(31), exports); +tslib_1.__exportStar(__webpack_require__(32), exports); + + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isObjectFull = exports.isObject = exports.isIn = exports.isTrue = exports.isFalse = exports.isDateString = exports.hasValue = exports.isValue = exports.isArrayOfStringsFull = exports.isStringFull = exports.isArrayFull = exports.isArrayOfStrings = void 0; +const lodash_1 = __webpack_require__(5); +const isArrayOfStrings = (arr) => { + return (0, lodash_1.isArray)(arr) && (0, lodash_1.every)(arr, lodash_1.isString); +}; +exports.isArrayOfStrings = isArrayOfStrings; +const isArrayFull = (val) => Array.isArray(val) && !(0, lodash_1.isEmpty)(val); +exports.isArrayFull = isArrayFull; +const isStringFull = (val) => (0, lodash_1.isString)(val) && !(0, lodash_1.isEmpty)(val); +exports.isStringFull = isStringFull; +const isArrayOfStringsFull = (val) => (0, exports.isArrayFull)(val) && val.every((v) => (0, exports.isStringFull)(v)); +exports.isArrayOfStringsFull = isArrayOfStringsFull; +const isValue = (val) => (0, exports.isStringFull)(val) || (0, lodash_1.isNumber)(val) || (0, lodash_1.isBoolean)(val) || (0, lodash_1.isDate)(val); +exports.isValue = isValue; +const hasValue = (val) => (0, exports.isArrayFull)(val) ? val.every((o) => (0, exports.isValue)(o)) : (0, exports.isValue)(val); +exports.hasValue = hasValue; +const isDateString = (val) => { + const timestamp = Date.parse(val); + return !isNaN(timestamp) && (0, lodash_1.isDate)(new Date(timestamp)); +}; +exports.isDateString = isDateString; +const isFalse = (val) => val === false; +exports.isFalse = isFalse; +const isTrue = (val) => val === true; +exports.isTrue = isTrue; +const isIn = (val, arr = []) => arr.some((o) => (0, lodash_1.isEqual)(val, o)); +exports.isIn = isIn; +const isObject = (val) => typeof val === "object" && !(0, lodash_1.isNil)(val); +exports.isObject = isObject; +const isObjectFull = (val) => (0, exports.isObject)(val) && (0, lodash_1.keys)(val).length > 0; +exports.isObjectFull = isObjectFull; + + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.createBulkDto = exports.getValidationPipe = exports.BulkDto = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(8); +const helpers_1 = __webpack_require__(10); +const lodash_1 = __webpack_require__(5); +const enums_1 = __webpack_require__(13); +const swagger_1 = __webpack_require__(16); +const class_validator_1 = __webpack_require__(17); +const class_transformer_1 = __webpack_require__(18); +class BulkDto { +} +exports.BulkDto = BulkDto; +const getValidationPipe = (options, group) => { + return !(0, helpers_1.isFalse)(options.validation) + ? new common_1.ValidationPipe({ + ...(options.validation || {}), + groups: group ? [group] : undefined, + }) + : undefined; +}; +exports.getValidationPipe = getValidationPipe; +const createBulkDto = (options) => { + if (!(0, helpers_1.isFalse)(options.validation)) { + const hasDto = !(0, lodash_1.isNil)(options.dto?.create); + const groups = !hasDto + ? [enums_1.CrudValidationGroups.CREATE] + : undefined; + const always = hasDto ? true : undefined; + const Model = hasDto ? options.dto?.create : options.model.type; + class BulkDtoImpl { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: Model, isArray: true }), + (0, class_validator_1.IsArray)({ groups, always }), + (0, class_validator_1.ArrayNotEmpty)({ groups, always }), + (0, class_validator_1.ValidateNested)({ each: true, groups, always }), + (0, class_transformer_1.Type)(() => Model) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], BulkDtoImpl.prototype, "bulk", void 0); + Object.defineProperty(BulkDtoImpl, "name", { + writable: false, + value: `CreateMany${options.model.type.name}Dto`, + }); + return BulkDtoImpl; + } + else { + return BulkDto; + } +}; +exports.createBulkDto = createBulkDto; + + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(14), exports); +tslib_1.__exportStar(__webpack_require__(15), exports); + + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudActions = void 0; +var CrudActions; +(function (CrudActions) { + CrudActions["ReadAll"] = "Read-All"; + CrudActions["ReadOne"] = "Read-One"; + CrudActions["CreateOne"] = "Create-One"; + CrudActions["CreateMany"] = "Create-Many"; + CrudActions["UpdateOne"] = "Update-One"; + CrudActions["ReplaceOne"] = "Replace-One"; + CrudActions["DeleteOne"] = "Delete-One"; + CrudActions["DeleteAll"] = "Delete-All"; + CrudActions["RecoverOne"] = "Recover-One"; +})(CrudActions || (exports.CrudActions = CrudActions = {})); + + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudValidationGroups = void 0; +var CrudValidationGroups; +(function (CrudValidationGroups) { + CrudValidationGroups["CREATE"] = "CRUD-CREATE"; + CrudValidationGroups["UPDATE"] = "CRUD-UPDATE"; +})(CrudValidationGroups || (exports.CrudValidationGroups = CrudValidationGroups = {})); + + +/***/ }), +/* 16 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger"); + +/***/ }), +/* 17 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("class-validator"); + +/***/ }), +/* 18 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("class-transformer"); + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.R = void 0; +const route_paramtypes_enum_1 = __webpack_require__(20); +const constants_1 = __webpack_require__(21); +const lodash_1 = __webpack_require__(5); +const constants_2 = __webpack_require__(22); +class R { + static set(metadataKey, metadataValue, target, propertyKey = undefined) { + if (propertyKey) { + Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey); + } + else { + Reflect.defineMetadata(metadataKey, metadataValue, target); + } + } + static get(metadataKey, target, propertyKey = undefined) { + return propertyKey + ? Reflect.getMetadata(metadataKey, target, propertyKey) + : Reflect.getMetadata(metadataKey, target); + } + static createCustomRouteArg(paramType, index, pipes = [], data = undefined) { + // @ts-ignore + return { + [`${paramType}${constants_1.CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: { + index, + factory: (_, ctx) => R.getContextRequest(ctx)[paramType], + data, + pipes, + }, + }; + } + static createRouteArg(paramTypes, index, pipes = [], data = undefined) { + return { + [`${paramTypes}:${index}`]: { + index, + pipes, + data, + }, + }; + } + static setDecorators(decorators, target, name) { + // this makes metadata decorator works + const decoratedDescriptor = Reflect.decorate(decorators, target, name, Reflect.getOwnPropertyDescriptor(target, name)); + // this makes proxy decorator works + Reflect.defineProperty(target, name, decoratedDescriptor); + } + static setParsedRequestArg(index) { + return R.createCustomRouteArg(constants_2.PARSED_CRUD_REQUEST_KEY, index); + } + static setBodyArg(index, pipes = []) { + return R.createRouteArg(route_paramtypes_enum_1.RouteParamtypes.BODY, index, pipes); + } + static setCrudOptions(options, target) { + R.set(constants_2.CRUD_OPTIONS_METADATA, options, target); + } + static setRoute(route, func) { + R.set(constants_1.PATH_METADATA, route.path, func); + R.set(constants_1.METHOD_METADATA, route.method, func); + } + static setInterceptors(interceptors, func) { + R.set(constants_1.INTERCEPTORS_METADATA, interceptors, func); + } + static setRouteArgs(metadata, target, name) { + R.set(constants_1.ROUTE_ARGS_METADATA, metadata, target, name); + } + static setRouteArgsTypes(metadata, target, name) { + R.set(constants_1.PARAMTYPES_METADATA, metadata, target, name); + } + static setAction(action, func) { + R.set(constants_2.ACTION_NAME_METADATA, action, func); + } + static setCrudAuthOptions(metadata, target) { + R.set(constants_2.CRUD_AUTH_OPTIONS_METADATA, metadata, target); + } + static getCrudAuthOptions(target) { + return R.get(constants_2.CRUD_AUTH_OPTIONS_METADATA, target); + } + static getCrudOptions(target) { + return R.get(constants_2.CRUD_OPTIONS_METADATA, target); + } + static getAction(func) { + return R.get(constants_2.ACTION_NAME_METADATA, func); + } + static getOverrideRoute(func) { + return R.get(constants_2.OVERRIDE_METHOD_METADATA, func); + } + static getInterceptors(func) { + return R.get(constants_1.INTERCEPTORS_METADATA, func) || []; + } + static getRouteArgs(target, name) { + return R.get(constants_1.ROUTE_ARGS_METADATA, target, name); + } + static getRouteArgsTypes(target, name) { + return R.get(constants_1.PARAMTYPES_METADATA, target, name) || []; + } + static getParsedBody(func) { + return R.get(constants_2.PARSED_BODY_METADATA, func); + } + static getContextRequest(ctx) { + return (0, lodash_1.isFunction)(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx; + } +} +exports.R = R; + + +/***/ }), +/* 20 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common/enums/route-paramtypes.enum"); + +/***/ }), +/* 21 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common/constants"); + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CRUD_AUTH_OPTIONS_METADATA = exports.CRUD_OPTIONS_METADATA = exports.PARSED_CRUD_REQUEST_KEY = exports.PARSED_BODY_METADATA = exports.OVERRIDE_METHOD_METADATA = exports.ACTION_NAME_METADATA = exports.FEATURE_NAME_METADATA = exports.REQUEST_PREFIX_EXTRA = exports.REQUEST_DELIM_STR = exports.REQUEST_DELIM = void 0; +exports.REQUEST_DELIM = "||"; +exports.REQUEST_DELIM_STR = ","; +exports.REQUEST_PREFIX_EXTRA = "extra."; +exports.FEATURE_NAME_METADATA = "CRUDX_FEATURE_NAME_METADATA"; +exports.ACTION_NAME_METADATA = "CRUDX_ACTION_NAME_METADATA"; +exports.OVERRIDE_METHOD_METADATA = "CRUDX_OVERRIDE_METHOD_METADATA"; +exports.PARSED_BODY_METADATA = "CRUDX_PARSED_BODY_METADATA"; +exports.PARSED_CRUD_REQUEST_KEY = "CRUDX_PARSED_CRUD_REQUEST_KEY"; +exports.CRUD_OPTIONS_METADATA = "CRUDX_CRUD_OPTIONS_METADATA"; +exports.CRUD_AUTH_OPTIONS_METADATA = "CRUDX_CRUD_AUTH_OPTIONS_METADATA"; + + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.validateUUID = exports.validateParamOption = exports.validateNumeric = exports.validateSort = exports.validateJoin = exports.validateComparisonOperator = exports.validateCondition = exports.validateFields = exports.sortOrdersList = exports.comparisonOperatorsList = void 0; +const lodash_1 = __webpack_require__(5); +const exceptions_1 = __webpack_require__(24); +const types_1 = __webpack_require__(26); +const checkers_helper_1 = __webpack_require__(11); +exports.comparisonOperatorsList = [ + ...(0, lodash_1.keys)(types_1.CondOperator).map((n) => types_1.CondOperator[n]), +]; +exports.sortOrdersList = ["ASC", "DESC"]; +const sortOrdersListStr = exports.sortOrdersList.join(); +function validateFields(fields) { + if (!(0, checkers_helper_1.isArrayOfStrings)(fields)) { + throw new exceptions_1.RequestQueryException("Invalid fields. Array of strings expected"); + } +} +exports.validateFields = validateFields; +function validateCondition(val, cond, customOperators) { + if (!(0, lodash_1.isObject)(val) || !(0, checkers_helper_1.isStringFull)(val.field)) { + throw new exceptions_1.RequestQueryException(`Invalid field type in ${cond} condition. String expected`); + } + validateComparisonOperator(val.operator, customOperators); +} +exports.validateCondition = validateCondition; +function validateComparisonOperator(operator, customOperators = {}) { + const extendedComparisonOperatorsList = [ + ...exports.comparisonOperatorsList, + ...Object.keys(customOperators), + ]; + if (!extendedComparisonOperatorsList.includes(operator)) { + throw new exceptions_1.RequestQueryException(`Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`); + } +} +exports.validateComparisonOperator = validateComparisonOperator; +function validateJoin(join) { + if (!(0, lodash_1.isObject)(join) || !(0, checkers_helper_1.isStringFull)(join.field)) { + throw new exceptions_1.RequestQueryException("Invalid join field. String expected"); + } + if (!(0, lodash_1.isUndefined)(join.select) && !(0, checkers_helper_1.isArrayOfStringsFull)(join.select)) { + throw new exceptions_1.RequestQueryException("Invalid join select. Array of strings expected"); + } +} +exports.validateJoin = validateJoin; +function validateSort(sort) { + if (!(0, lodash_1.isObject)(sort) || !(0, checkers_helper_1.isStringFull)(sort.field)) { + throw new exceptions_1.RequestQueryException("Invalid sort field. String expected"); + } + if (!(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[0]) && + !(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[1])) { + throw new exceptions_1.RequestQueryException(`Invalid sort order. ${sortOrdersListStr} expected`); + } +} +exports.validateSort = validateSort; +function validateNumeric(val, num) { + if (!(0, lodash_1.isNumber)(val)) { + throw new exceptions_1.RequestQueryException(`Invalid ${num}. Number expected`); + } +} +exports.validateNumeric = validateNumeric; +function validateParamOption(options, name) { + if (!(0, lodash_1.isObject)(options)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. Invalid crud options`); + } + const option = options[name]; + if (option && option.disabled) { + return; + } + if (!(0, lodash_1.isObject)(option) || (0, lodash_1.isNil)(option.field) || (0, lodash_1.isNil)(option.type)) { + throw new exceptions_1.RequestQueryException(`Invalid param option in Crud`); + } +} +exports.validateParamOption = validateParamOption; +function validateUUID(str, name) { + const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + const uuidV4 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + if (!uuidV4.test(str) && !uuid.test(str)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. UUID string expected`); + } +} +exports.validateUUID = validateUUID; + + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(25), exports); + + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RequestQueryException = void 0; +class RequestQueryException extends Error { + constructor(msg) { + super(msg); + } +} +exports.RequestQueryException = RequestQueryException; + + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(27), exports); +tslib_1.__exportStar(__webpack_require__(28), exports); +tslib_1.__exportStar(__webpack_require__(29), exports); +tslib_1.__exportStar(__webpack_require__(30), exports); + + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CondOperator = void 0; +var CondOperator; +(function (CondOperator) { + CondOperator["EQUALS"] = "$eq"; + CondOperator["NOT_EQUALS"] = "$ne"; + CondOperator["GREATER_THAN"] = "$gt"; + CondOperator["LOWER_THAN"] = "$lt"; + CondOperator["GREATER_THAN_EQUALS"] = "$gte"; + CondOperator["LOWER_THAN_EQUALS"] = "$lte"; + CondOperator["STARTS"] = "$starts"; + CondOperator["ENDS"] = "$ends"; + CondOperator["CONTAINS"] = "$cont"; + CondOperator["EXCLUDES"] = "$excl"; + CondOperator["IN"] = "$in"; + CondOperator["NOT_IN"] = "$notin"; + CondOperator["IS_NULL"] = "$isnull"; + CondOperator["NOT_NULL"] = "$notnull"; + CondOperator["BETWEEN"] = "$between"; + CondOperator["EQUALS_LOW"] = "$eqL"; + CondOperator["NOT_EQUALS_LOW"] = "$neL"; + CondOperator["STARTS_LOW"] = "$startsL"; + CondOperator["ENDS_LOW"] = "$endsL"; + CondOperator["CONTAINS_LOW"] = "$contL"; + CondOperator["EXCLUDES_LOW"] = "$exclL"; + CondOperator["IN_LOW"] = "$inL"; + CondOperator["NOT_IN_LOW"] = "$notinL"; +})(CondOperator || (exports.CondOperator = CondOperator = {})); + + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SerializeHelper = void 0; +const tslib_1 = __webpack_require__(2); +const class_transformer_1 = __webpack_require__(18); +const swagger_1 = __webpack_require__(16); +class SerializeHelper { + static createGetManyDto(dto, resourceName) { + class GetManyResponseDto { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: dto, isArray: true }), + (0, class_transformer_1.Type)(() => dto) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], GetManyResponseDto.prototype, "data", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "count", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "total", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "page", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "pageCount", void 0); + Object.defineProperty(GetManyResponseDto, "name", { + writable: false, + value: `GetMany${resourceName}ResponseDto`, + }); + return GetManyResponseDto; + } + static createGetOneResponseDto(resourceName) { + class GetOneResponseDto { + } + Object.defineProperty(GetOneResponseDto, "name", { + writable: false, + value: `${resourceName}ResponseDto`, + }); + return GetOneResponseDto; + } +} +exports.SerializeHelper = SerializeHelper; + + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.safeRequire = void 0; +function safeRequire(path, loader) { + try { + return loader ? loader() : __webpack_require__(33)(path); + } + catch (_) { + return null; + } +} +exports.safeRequire = safeRequire; + + +/***/ }), +/* 33 */ +/***/ ((module) => { + +function webpackEmptyContext(req) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; +} +webpackEmptyContext.keys = () => ([]); +webpackEmptyContext.resolve = webpackEmptyContext; +webpackEmptyContext.id = 33; +module.exports = webpackEmptyContext; + +/***/ }), +/* 34 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.QueryBuilderService = void 0; +const lodash_1 = __webpack_require__(5); +const qs_1 = __webpack_require__(35); +const helpers_1 = __webpack_require__(10); +const constants_1 = __webpack_require__(22); +class QueryBuilderService { + constructor() { + this.paramNames = {}; + this.queryObject = {}; + this.queryString = ""; + this.setParamNames(); + } + static setOptions(options) { + QueryBuilderService._options = { + ...QueryBuilderService._options, + ...options, + paramNamesMap: { + ...QueryBuilderService._options.paramNamesMap, + ...(options.paramNamesMap ? options.paramNamesMap : {}), + }, + }; + } + static getOptions() { + return QueryBuilderService._options; + } + static create(params, customOperators = {}) { + const qb = new QueryBuilderService(); + return (0, lodash_1.isObject)(params) + ? qb.createFromParams(params, customOperators) + : qb; + } + get options() { + return QueryBuilderService._options; + } + setParamNames() { + if (QueryBuilderService._options.paramNamesMap) { + Object.keys(QueryBuilderService._options.paramNamesMap).forEach((key) => { + const name = (0, lodash_1.get)(QueryBuilderService._options.paramNamesMap, key); + this.paramNames[key] = (0, lodash_1.isString)(name) + ? name + : name[0]; + }); + } + } + query(encode = true) { + if (this.queryObject[this.paramNames["search"]]) { + this.queryObject[this.paramNames["filter"]] = undefined; + this.queryObject[this.paramNames["or"]] = undefined; + } + this.queryString = (0, qs_1.stringify)(this.queryObject, { encode }); + return this.queryString; + } + select(fields) { + if (!(0, lodash_1.isNil)(fields) && (0, helpers_1.isArrayFull)(fields)) { + (0, helpers_1.validateFields)(fields); + this.queryObject[this.paramNames["fields"]] = fields.join(this.options.delimStr); + } + return this; + } + search(s) { + if (!(0, lodash_1.isNil)(s) && (0, lodash_1.isObject)(s)) { + this.queryObject[this.paramNames["search"]] = JSON.stringify(s); + } + return this; + } + setFilter(f, customOperators = {}) { + this.setCondition(f, "filter", customOperators); + return this; + } + setOr(f, customOperators = {}) { + this.setCondition(f, "or", customOperators); + return this; + } + setJoin(j) { + if (!(0, lodash_1.isNil)(j)) { + const param = this.checkQueryObjectParam("join", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(j) && !(0, lodash_1.isString)(j[0]) + ? j.map((o) => this.addJoin(o)) + : [this.addJoin(j)]), + ]; + } + return this; + } + sortBy(s) { + if (!(0, lodash_1.isNil)(s)) { + const param = this.checkQueryObjectParam("sort", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(s) && !(0, lodash_1.isString)(s[0]) + ? s.map((o) => this.addSortBy(o)) + : [this.addSortBy(s)]), + ]; + } + return this; + } + setLimit(n) { + this.setNumeric(n, "limit"); + return this; + } + setOffset(n) { + this.setNumeric(n, "offset"); + return this; + } + setPage(n) { + this.setNumeric(n, "page"); + return this; + } + resetCache() { + this.setNumeric(0, "cache"); + return this; + } + setIncludeDeleted(n) { + this.setNumeric(n, "includeDeleted"); + return this; + } + cond(f, cond = "search", customOperators = {}) { + const filter = Array.isArray(f) + ? { field: f[0], operator: f[1], value: f[2] } + : f; + (0, helpers_1.validateCondition)(filter, cond, customOperators); + const d = this.options.delim; + return (filter.field + + d + + filter.operator + + ((0, helpers_1.hasValue)(filter.value) ? d + filter.value : "")); + } + addJoin(j) { + const join = Array.isArray(j) + ? { field: j[0], select: j[1] } + : j; + (0, helpers_1.validateJoin)(join); + const d = this.options.delim; + const ds = this.options.delimStr; + return (join.field + + ((0, helpers_1.isArrayFull)(join.select) ? d + (join.select?.join(ds) ?? "") : "")); + } + addSortBy(s) { + const sort = Array.isArray(s) ? { field: s[0], order: s[1] } : s; + (0, helpers_1.validateSort)(sort); + const ds = this.options.delimStr; + return sort.field + ds + sort.order; + } + createFromParams(params, customOperators) { + this.select(params.fields); + this.search(params.search); + this.setFilter(params.filter, customOperators); + this.setOr(params.or, customOperators); + this.setJoin(params.join); + this.setLimit(params.limit); + this.setOffset(params.offset); + this.setPage(params.page); + this.sortBy(params.sort); + if (params.resetCache) { + this.resetCache(); + } + this.setIncludeDeleted(params.includeDeleted); + return this; + } + checkQueryObjectParam(cond, defaults) { + const param = this.paramNames[cond]; + if ((0, lodash_1.isNil)(this.queryObject[param]) && !(0, lodash_1.isUndefined)(defaults)) { + this.queryObject[param] = defaults; + } + return param; + } + setCondition(f, cond, customOperators) { + if (!(0, lodash_1.isNil)(f)) { + const param = this.checkQueryObjectParam(cond, []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(f) && !(0, lodash_1.isString)(f[0]) + ? f.map((o) => this.cond(o, cond, customOperators)) + : [ + this.cond(f, cond, customOperators), + ]), + ]; + } + } + setNumeric(n, cond) { + if (!(0, lodash_1.isNil)(n)) { + (0, helpers_1.validateNumeric)(n, cond); + this.queryObject[this.paramNames[cond]] = n; + } + } +} +exports.QueryBuilderService = QueryBuilderService; +QueryBuilderService._options = { + delim: constants_1.REQUEST_DELIM, + delimStr: constants_1.REQUEST_DELIM_STR, + paramNamesMap: { + fields: ["fields", "select"], + search: "s", + filter: "filter", + or: "or", + join: "join", + sort: "sort", + limit: ["limit", "per_page"], + offset: "offset", + page: "page", + cache: "cache", + includeDeleted: "include_deleted", + extra: constants_1.REQUEST_PREFIX_EXTRA, + }, +}; + + +/***/ }), +/* 35 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("qs"); + +/***/ }), +/* 36 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("deepmerge"); + +/***/ }), +/* 37 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.QueryParserService = void 0; +const lodash_1 = __webpack_require__(5); +const exceptions_1 = __webpack_require__(24); +const types_1 = __webpack_require__(26); +const query_builder_service_1 = __webpack_require__(34); +const helpers_1 = __webpack_require__(10); +const constants_1 = __webpack_require__(22); +class QueryParserService { + constructor() { + this.fields = []; + this.paramsFilter = []; + this.authPersist = undefined; + this.classTransformOptions = undefined; + this.search = undefined; + this.filter = []; + this.or = []; + this.join = []; + this.sort = []; + this.extra = {}; + this._paramNames = []; + this._paramsOptions = {}; + } + get _options() { + return query_builder_service_1.QueryBuilderService.getOptions(); + } + static create() { + return new QueryParserService(); + } + getParsed() { + return { + fields: this.fields, + paramsFilter: this.paramsFilter, + authPersist: this.authPersist, + classTransformOptions: this.classTransformOptions, + search: this.search, + filter: this.filter, + or: this.or, + join: this.join, + sort: this.sort, + limit: this.limit, + offset: this.offset, + page: this.page, + cache: this.cache, + includeDeleted: this.includeDeleted, + extra: this.extra, + }; + } + setAuthPersist(persist = {}) { + this.authPersist = persist || /* istanbul ignore next */ {}; + } + setClassTransformOptions(options = {}) { + this.classTransformOptions = options || /* istanbul ignore next */ {}; + } + convertFilterToSearch(filter) { + const isEmptyValue = { + isnull: true, + notnull: true, + }; + return filter + ? { + [filter.field]: { + [filter.operator]: (0, lodash_1.has)(isEmptyValue, filter.operator) + ? (0, lodash_1.get)(isEmptyValue, filter.operator) + : filter.value, + }, + } + : /* istanbul ignore next */ {}; + } + parseQuery(query, customOperators = {}) { + if ((0, lodash_1.isObject)(query)) { + const paramNames = (0, lodash_1.keys)(query); + if (!(0, lodash_1.isEmpty)(paramNames)) { + this._query = query; + this._paramNames = paramNames; + const searchData = this._query[this.getParamNames("search")[0]]; + this.search = this.parseSearchQueryParam(searchData); + if ((0, lodash_1.isNil)(this.search)) { + this.filter = this.parseQueryParam("filter", this.conditionParser.bind(this, "filter", customOperators)); + this.or = this.parseQueryParam("or", this.conditionParser.bind(this, "or", customOperators)); + } + this.fields = + this.parseQueryParam("fields", this.fieldsParser.bind(this))[0] || []; + this.join = this.parseQueryParam("join", this.joinParser.bind(this)); + this.sort = this.parseQueryParam("sort", this.sortParser.bind(this)); + this.limit = this.parseQueryParam("limit", this.numericParser.bind(this, "limit"))[0]; + this.offset = this.parseQueryParam("offset", this.numericParser.bind(this, "offset"))[0]; + this.page = this.parseQueryParam("page", this.numericParser.bind(this, "page"))[0]; + this.cache = this.parseQueryParam("cache", this.numericParser.bind(this, "cache"))[0]; + this.includeDeleted = this.parseQueryParam("includeDeleted", this.numericParser.bind(this, "includeDeleted"))[0]; + this.extra = this.parseExtraFromQueryParam(); + } + } + return this; + } + parseParams(params, options) { + if ((0, lodash_1.isObject)(params)) { + const paramNames = (0, lodash_1.keys)(params); + if (!(0, lodash_1.isNil)(paramNames)) { + this._params = params; + this._paramsOptions = options; + this.paramsFilter = paramNames + .map((name) => this.paramParser(name)) + .filter((filter) => filter); + } + } + return this; + } + getParamNames(type) { + return this._paramNames.filter((p) => { + const name = (0, lodash_1.get)(this._options.paramNamesMap, type, ""); + return (0, lodash_1.isString)(name) + ? name === p + : name.some((m) => m === p); + }); + } + getParamValues(value, parser) { + if ((0, helpers_1.isStringFull)(value)) { + return [parser.call(this, value)]; + } + if ((0, helpers_1.isArrayFull)(value)) { + return value.map((val) => parser(val)); + } + return []; + } + parseQueryParam(type, parser) { + const param = this.getParamNames(type); + if ((0, helpers_1.isArrayFull)(param)) { + // @ts-ignore + return param.reduce( + // @ts-ignore + (a, name) => [ + ...a, + ...this.getParamValues(this._query[name], parser), + ], []); + } + return []; + } + parseExtraFromQueryParam() { + const extraParam = (0, lodash_1.get)(this._options.paramNamesMap, "extra", []); + const params = Array.isArray(extraParam) + ? extraParam + : [extraParam]; + const extraKeys = (0, lodash_1.keys)(this._query || {}) + .filter((k) => params.find((p) => k?.startsWith(p))) + .reduce((o, k) => { + const key = k.replace(constants_1.REQUEST_PREFIX_EXTRA, ""); + this.parseDotChainToObject(this._query[k], key, o); + return o; + }, {}); + return (0, lodash_1.keys)(extraKeys).length > 0 ? extraKeys : undefined; + } + /** + * Build an object from data and composite key. + * + * @param data to used on parse workflow + * @param key composite key as 'foo.bar.hero' + * @param result object with parsed "data" and "key" structure + * @private + */ + parseDotChainToObject(data, key, result = {}) { + if (key.includes(".")) { + const keys = key.split("."); + const firstKey = keys.shift(); + (0, lodash_1.set)(result, firstKey, {}); + this.parseDotChainToObject(data, keys.join("."), (0, lodash_1.get)(result, firstKey)); + } + else { + (0, lodash_1.set)(result, key, this.parseValue(data)); + } + } + parseValue(val) { + try { + const parsed = JSON.parse(val); + // throw new Error('Don\'t support object now') + if ((!(0, lodash_1.isDate)(parsed) && (0, lodash_1.isObject)(parsed)) || + // JS cannot handle big numbers. Leave it as a string to prevent data loss + (typeof parsed === "number" && + parsed.toLocaleString("fullwide", { useGrouping: false }) !== val)) { + return val; + } + return parsed; + } + catch (_) { + if ((0, helpers_1.isDateString)(val)) { + return new Date(val); + } + return val; + } + } + parseValues(values) { + return (0, helpers_1.isArrayFull)(values) + ? values.map((v) => this.parseValue(v)) + : this.parseValue(values); + } + parseSearchQueryParam(d) { + if ((0, lodash_1.isNil)(d)) { + return undefined; + } + try { + const data = JSON.parse(d); + if (!(0, lodash_1.isObject)(data)) { + throw new Error(); + } + return data; + } + catch (_) { + throw new exceptions_1.RequestQueryException("Invalid search param. JSON expected"); + } + } + fieldsParser(data) { + // @ts-ignore + return data.split(this._options.delimStr); + } + conditionParser(cond, customOperators, data) { + const isArrayValue = [ + types_1.CondOperator.IN, + types_1.CondOperator.NOT_IN, + types_1.CondOperator.BETWEEN, + types_1.CondOperator.IN_LOW, + types_1.CondOperator.NOT_IN_LOW, + ].concat(Object.keys(customOperators).filter((op) => customOperators[op].isArray)); + const isEmptyValue = [ + types_1.CondOperator.IS_NULL, + types_1.CondOperator.NOT_NULL, + ]; + // @ts-ignore + const param = data.split(this._options.delim); + const field = param[0]; + const operator = param[1]; + let value = param[2] || ""; + if (isArrayValue.some((name) => name === operator)) { + // @ts-ignore + value = value.split(this._options.delimStr); + } + value = this.parseValues(value); + if (!isEmptyValue.some((name) => name === operator) && + !(0, helpers_1.hasValue)(value)) { + throw new exceptions_1.RequestQueryException(`Invalid ${cond} value`); + } + const condition = { field, operator, value }; + (0, helpers_1.validateCondition)(condition, cond, customOperators); + return condition; + } + joinParser(data) { + // @ts-ignore + const param = data.split(this._options.delim); + const join = { + field: param[0], + select: (0, helpers_1.isStringFull)(param[1]) + ? // @ts-ignore + param[1].split(this._options.delimStr) + : undefined, + }; + (0, helpers_1.validateJoin)(join); + return join; + } + sortParser(data) { + const param = data.split(this._options.delimStr); + const sort = { + field: param[0], + order: param[1], + }; + (0, helpers_1.validateSort)(sort); + return sort; + } + numericParser(num, data) { + const val = this.parseValue(data); + (0, helpers_1.validateNumeric)(val, num); + return val; + } + paramParser(name) { + (0, helpers_1.validateParamOption)(this._paramsOptions, name); + const option = this._paramsOptions[name]; + if (option.disabled) { + return undefined; + } + let value = this._params[name]; + switch (option.type) { + case "number": + value = this.parseValue(value); + (0, helpers_1.validateNumeric)(value, `param ${name}`); + break; + case "uuid": + (0, helpers_1.validateUUID)(value, name); + break; + default: + break; + } + return { field: option.field, operator: "$eq", value }; + } +} +exports.QueryParserService = QueryParserService; + + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RoutesFactoryService = void 0; +const common_1 = __webpack_require__(8); +const route_paramtypes_enum_1 = __webpack_require__(20); +const lodash_1 = __webpack_require__(5); +const helpers_1 = __webpack_require__(10); +const enums_1 = __webpack_require__(13); +const interceptors_1 = __webpack_require__(39); +const services_1 = __webpack_require__(6); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = __webpack_require__(36); +class RoutesFactoryService { + constructor(target, options) { + this.target = target; + this.options = options; + this.create(); + } + /* istanbul ignore next */ + static create(target, options) { + return new RoutesFactoryService(target, options); + } + get targetProto() { + return this.target.prototype; + } + get modelName() { + return this.options.model.type.name; + } + get modelType() { + return this.options.model.type; + } + get actionsMap() { + return { + getManyBase: enums_1.CrudActions.ReadAll, + getOneBase: enums_1.CrudActions.ReadOne, + createManyBase: enums_1.CrudActions.CreateMany, + createOneBase: enums_1.CrudActions.CreateOne, + updateOneBase: enums_1.CrudActions.UpdateOne, + deleteOneBase: enums_1.CrudActions.DeleteOne, + replaceOneBase: enums_1.CrudActions.ReplaceOne, + recoverOneBase: enums_1.CrudActions.RecoverOne, + }; + } + create() { + const routesSchema = this.getRoutesSchema(); + this.mergeOptions(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + mergeOptions() { + // merge auth config + const authOptions = helpers_1.R.getCrudAuthOptions(this.target); + this.options.auth = (0, helpers_1.isObjectFull)(authOptions) ? authOptions : {}; + if ((0, lodash_1.isUndefined)(this.options.auth.property)) { + this.options.auth.property = services_1.CrudConfigService.config?.auth?.property; + } + if ((0, lodash_1.isUndefined)(this.options.auth.groups)) { + this.options.auth.groups = services_1.CrudConfigService.config?.auth?.groups; + } + if ((0, lodash_1.isUndefined)(this.options.auth.classTransformOptions)) { + // @ts-ignore + this.options.auth.classTransformOptions = + services_1.CrudConfigService.config.auth?.classTransformOptions; + } + // merge query config + const query = (0, helpers_1.isObjectFull)(this.options.query) + ? this.options.query + : {}; + this.options.query = { ...services_1.CrudConfigService.config.query, ...query }; + // merge routes config + const routes = (0, helpers_1.isObjectFull)(this.options.routes) + ? this.options.routes + : {}; + this.options.routes = deepmerge(services_1.CrudConfigService.config.routes || {}, routes, { + // @ts-ignore + arrayMerge: (a, b, c) => b, + }); + // merge operators config + const operators = (0, helpers_1.isObjectFull)(this.options.operators) + ? this.options.operators + : {}; + this.options.operators = (deepmerge(services_1.CrudConfigService.config?.operators, operators)); + // set params + this.options.params = (0, helpers_1.isObjectFull)(this.options.params) + ? this.options.params + : (0, helpers_1.isObjectFull)(services_1.CrudConfigService.config.params) + ? services_1.CrudConfigService.config.params + : {}; + const hasPrimary = this.getPrimaryParams().length > 0; + if (!hasPrimary) { + // @ts-ignore + this.options.params["id"] = { + field: "id", + type: "number", + primary: true, + }; + } + // set dto + if (!(0, helpers_1.isObjectFull)(this.options.dto)) { + this.options.dto = {}; + } + // set serialize + const serialize = (0, helpers_1.isObjectFull)(this.options.serialize) + ? this.options.serialize + : {}; + this.options.serialize = { + ...services_1.CrudConfigService.config.serialize, + ...serialize, + }; + this.options.serialize.get = (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : this.options.serialize.get || this.modelType; + this.options.serialize.getMany = (0, helpers_1.isFalse)(this.options.serialize.getMany) + ? false + : this.options.serialize.getMany + ? this.options.serialize.getMany + : (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : helpers_1.SerializeHelper.createGetManyDto(this.options.serialize.get, this.modelName); + this.options.serialize.create = (0, helpers_1.isFalse)(this.options.serialize.create) + ? false + : this.options.serialize.create || this.modelType; + this.options.serialize.update = (0, helpers_1.isFalse)(this.options.serialize.update) + ? false + : this.options.serialize.update || this.modelType; + this.options.serialize.replace = (0, helpers_1.isFalse)(this.options.serialize.replace) + ? false + : this.options.serialize.replace || this.modelType; + this.options.serialize.delete = + (0, helpers_1.isFalse)(this.options.serialize.delete) || + !this.options.routes?.deleteOneBase?.returnDeleted + ? false + : this.options.serialize.delete || this.modelType; + helpers_1.R.setCrudOptions(this.options, this.target); + } + getRoutesSchema() { + return [ + { + name: "getOneBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: true, + }, + { + name: "getManyBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: false, + }, + { + name: "createOneBase", + path: "/", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "createManyBase", + path: "/bulk", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "updateOneBase", + path: "/", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + { + name: "replaceOneBase", + path: "/", + method: common_1.RequestMethod.PUT, + enable: false, + override: false, + withParams: true, + }, + { + name: "deleteOneBase", + path: "/", + method: common_1.RequestMethod.DELETE, + enable: false, + override: false, + withParams: true, + }, + { + name: "recoverOneBase", + path: "/recover", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + ]; + } + getManyBase(name) { + this.targetProto[name] = function getManyBase(req) { + return this.service.getMany(req); + }; + } + getOneBase(name) { + this.targetProto[name] = function getOneBase(req) { + return this.service.getOne(req); + }; + } + createOneBase(name) { + this.targetProto[name] = function createOneBase(req, dto) { + return this.service.createOne(req, dto); + }; + } + createManyBase(name) { + this.targetProto[name] = function createManyBase(req, dto) { + return this.service.createMany(req, dto); + }; + } + updateOneBase(name) { + this.targetProto[name] = function updateOneBase(req, dto) { + return this.service.updateOne(req, dto); + }; + } + replaceOneBase(name) { + this.targetProto[name] = function replaceOneBase(req, dto) { + return this.service.replaceOne(req, dto); + }; + } + deleteOneBase(name) { + this.targetProto[name] = function deleteOneBase(req) { + return this.service.deleteOne(req); + }; + } + recoverOneBase(name) { + this.targetProto[name] = function recoverOneBase(req) { + return this.service.recoverOne(req); + }; + } + canCreateRoute(name) { + const only = this.options.routes?.only; + const exclude = this.options.routes?.exclude; + // include recover route only for models with soft delete option + if (name === "recoverOneBase" && this.options.query?.softDelete !== true) { + return false; + } + if ((0, helpers_1.isArrayFull)(only)) { + // @ts-ignore + return only.some((route) => route === name); + } + if ((0, helpers_1.isArrayFull)(exclude)) { + // @ts-ignore + return !exclude.some((route) => route === name); + } + return true; + } + createRoutes(routesSchema) { + const primaryParams = this.getPrimaryParams().filter((param) => !this.options.params?.[param]?.disabled); + routesSchema.forEach((route) => { + if (this.canCreateRoute(route.name)) { + // create base method + this[route.name](route.name); + route.enable = true; + // set metadata + this.setBaseRouteMeta(route.name); + } + if (route.withParams && primaryParams.length > 0) { + route.path = + route.path !== "/" + ? `${primaryParams + .map((param) => `/:${param}`) + .join("")}${route.path}` + : primaryParams + .map((param) => `/:${param}`) + .join(""); + } + }); + } + overrideRoutes(routesSchema) { + Object.getOwnPropertyNames(this.targetProto).forEach((name) => { + const override = helpers_1.R.getOverrideRoute(this.targetProto[name]); + const route = routesSchema.find((r) => (0, lodash_1.isEqual)(r.name, override)); + if (override && route && route.enable) { + // get metadata + const interceptors = helpers_1.R.getInterceptors(this.targetProto[name]); + const baseInterceptors = helpers_1.R.getInterceptors(this.targetProto[override]); + const baseAction = helpers_1.R.getAction(this.targetProto[override]); + // set metadata + helpers_1.R.setInterceptors([...baseInterceptors, ...interceptors], this.targetProto[name]); + helpers_1.R.setAction(baseAction, this.targetProto[name]); + this.overrideParsedBodyDecorator(override, name); + // enable route + helpers_1.R.setRoute(route, this.targetProto[name]); + route.override = true; + } + }); + } + enableRoutes(routesSchema) { + routesSchema.forEach((route) => { + if (!route.override && route.enable) { + helpers_1.R.setRoute(route, this.targetProto[route.name]); + } + }); + } + overrideParsedBodyDecorator(override, name) { + const allowed = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + const withBody = (0, helpers_1.isIn)(override, allowed); + const parsedBody = helpers_1.R.getParsedBody(this.targetProto[name]); + if (withBody && parsedBody) { + const baseKey = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:1`; + const key = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:${parsedBody.index}`; + const baseRouteArgs = helpers_1.R.getRouteArgs(this.target, override); + const routeArgs = helpers_1.R.getRouteArgs(this.target, name); + const baseBodyArg = baseRouteArgs[baseKey]; + helpers_1.R.setRouteArgs({ + ...routeArgs, + [key]: { + ...baseBodyArg, + index: parsedBody.index, + }, + }, this.target, name); + /* istanbul ignore else */ + if ((0, lodash_1.isEqual)(override, "createManyBase")) { + const paramTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, name); + const metatype = paramTypes[parsedBody.index]; + const types = [String, Boolean, Number, Array, Object]; + const toCopy = (0, helpers_1.isIn)(metatype, types) || (0, lodash_1.isNil)(metatype); + if (toCopy) { + const baseParamTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, override); + const baseMetatype = baseParamTypes[1]; + paramTypes.splice(parsedBody.index, 1, baseMetatype); + helpers_1.R.setRouteArgsTypes(paramTypes, this.targetProto, name); + } + } + } + } + getPrimaryParams() { + return (0, lodash_1.keys)(this.options.params).filter((param) => this.options.params?.[param] && this.options.params[param].primary); + } + setBaseRouteMeta(name) { + this.setRouteArgs(name); + this.setRouteArgsTypes(name); + this.setInterceptors(name); + this.setAction(name); + this.setDecorators(name); + } + setRouteArgs(name) { + let rest = {}; + const routes = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + if ((0, helpers_1.isIn)(name, routes)) { + const action = this.routeNameAction(name); + const hasDto = !(0, lodash_1.isNil)((0, lodash_1.get)(this.options, `dto.${action}`)); + const { UPDATE, CREATE } = enums_1.CrudValidationGroups; + const groupEnum = (0, helpers_1.isIn)(name, [ + "updateOneBase", + "replaceOneBase", + ]) + ? UPDATE + : CREATE; + const group = !hasDto + ? groupEnum + : undefined; + rest = helpers_1.R.setBodyArg(1, [(0, helpers_1.getValidationPipe)(this.options, group)]); + } + helpers_1.R.setRouteArgs({ ...helpers_1.R.setParsedRequestArg(0), ...rest }, this.target, name); + } + setRouteArgsTypes(name) { + switch (true) { + case (0, lodash_1.isEqual)(name, "createManyBase"): + const bulkDto = (0, helpers_1.createBulkDto)(this.options); + helpers_1.R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name); + break; + case (0, helpers_1.isIn)(name, ["createOneBase", "updateOneBase", "replaceOneBase"]): + const action = this.routeNameAction(name); + const dto = (0, lodash_1.get)(this.options, `dto.${action}`, this.modelType); + helpers_1.R.setRouteArgsTypes([Object, dto], this.targetProto, name); + break; + default: + helpers_1.R.setRouteArgsTypes([Object], this.targetProto, name); + } + } + setInterceptors(name) { + const interceptors = (0, lodash_1.get)(this.options, `routes.${name}.interceptors`, []); + helpers_1.R.setInterceptors([ + interceptors_1.CrudRequestInterceptor, + interceptors_1.CrudResponseInterceptor, + ...((0, helpers_1.isArrayFull)(interceptors) ? interceptors : []), + ], this.targetProto[name]); + } + setDecorators(name) { + const decorators = (0, lodash_1.get)(this.options, `routes.${name}.decorators`, []); + helpers_1.R.setDecorators((0, helpers_1.isArrayFull)(decorators) ? decorators : [], this.targetProto, name); + } + setAction(name) { + helpers_1.R.setAction(this.actionsMap[name], this.targetProto[name]); + } + routeNameAction(name) { + return name.split("OneBase")[0] || name.split("ManyBase")[0]; + } +} +exports.RoutesFactoryService = RoutesFactoryService; + + +/***/ }), +/* 39 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(40), exports); +tslib_1.__exportStar(__webpack_require__(42), exports); + + +/***/ }), +/* 40 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudRequestInterceptor = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(8); +const exceptions_1 = __webpack_require__(24); +const services_1 = __webpack_require__(6); +const helpers_1 = __webpack_require__(10); +const lodash_1 = __webpack_require__(5); +const constants_1 = __webpack_require__(22); +const enums_1 = __webpack_require__(13); +const crud_base_interceptor_1 = __webpack_require__(41); +let CrudRequestInterceptor = exports.CrudRequestInterceptor = class CrudRequestInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + const req = context.switchToHttp().getRequest(); + try { + /* istanbul ignore else */ + if (!req[constants_1.PARSED_CRUD_REQUEST_KEY]) { + const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context); + const parser = services_1.QueryParserService.create(); + parser.parseQuery(req.query, crudOptions.operators?.custom); + let auth = null; + if (!(0, lodash_1.isNil)(ctrlOptions)) { + const search = this.getSearch(parser, crudOptions, action, req.params); + auth = this.getAuth(parser, crudOptions, req); + parser.search = auth.or + ? { $or: [auth.or, { $and: search }] } + : { $and: [auth.filter, ...search] }; + } + else { + parser.search = { $and: this.getSearch(parser, crudOptions, action) }; + } + req[constants_1.PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(parser, crudOptions, auth?.auth); + } + return next.handle(); + } + catch (error) { + throw error instanceof exceptions_1.RequestQueryException + ? new common_1.BadRequestException(error.message) + : error; + } + } + getCrudRequest(parser, crudOptions, auth) { + const parsed = parser.getParsed(); + const { query, routes, params, operators } = crudOptions; + return { + parsed, + options: { + query, + routes, + params, + operators, + }, + auth, + }; + } + getSearch(parser, crudOptions, action, params) { + // params condition + const paramsSearch = this.getParamsSearch(parser, crudOptions, params); + // if `CrudOptions.query.filter` is a function then return transformed query search conditions + if ((0, lodash_1.isFunction)(crudOptions.query?.filter)) { + const filterCond = (crudOptions.query?.filter)(parser.search, action === enums_1.CrudActions.ReadAll) || {}; + return [...paramsSearch, filterCond]; + } + // if `CrudOptions.query.filter` is array or search condition type + const optionsFilter = (0, helpers_1.isArrayFull)(crudOptions.query?.filter) + ? (crudOptions.query?.filter).map(parser.convertFilterToSearch) + : [crudOptions.query?.filter || {}]; + let search = []; + if (parser.search) { + search = [parser.search]; + } + else if (parser.filter.length > 0 && parser.or.length > 0) { + search = + parser.filter.length === 1 && parser.or.length === 1 + ? [ + { + $or: [ + parser.convertFilterToSearch(parser.filter[0]), + parser.convertFilterToSearch(parser.or[0]), + ], + }, + ] + : [ + { + $or: [ + { $and: parser.filter.map(parser.convertFilterToSearch) }, + { $and: parser.or.map(parser.convertFilterToSearch) }, + ], + }, + ]; + } + else if (parser.filter.length > 0) { + search = parser.filter.map(parser.convertFilterToSearch); + } + else { + if (parser.or.length > 0) { + search = + parser.or.length === 1 + ? [parser.convertFilterToSearch(parser.or[0])] + : [ + { + $or: parser.or.map(parser.convertFilterToSearch), + }, + ]; + } + } + return [...paramsSearch, ...optionsFilter, ...search]; + } + getParamsSearch(parser, crudOptions, params) { + if (params) { + parser.parseParams(params, crudOptions.params); + return (0, helpers_1.isArrayFull)(parser.paramsFilter) + ? // @ts-ignore + parser.paramsFilter.map(parser.convertFilterToSearch) + : []; + } + return []; + } + getAuth(parser, crudOptions, req) { + const auth = {}; + /* istanbul ignore else */ + if (crudOptions.auth) { + const userOrRequest = crudOptions.auth.property + ? req[crudOptions.auth.property] + : req; + if (crudOptions.auth.property && req[crudOptions.auth.property]) { + if (typeof req[crudOptions.auth.property] === "object") { + if (Object.keys(req[crudOptions.auth.property]).length > 0) { + auth.auth = req[crudOptions.auth.property]; + } + } + else { + auth.auth = req[crudOptions.auth.property]; + } + } + if ((0, lodash_1.isFunction)(crudOptions.auth.or)) { + auth.or = crudOptions.auth.or(userOrRequest); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.filter) && !auth.or) { + auth.filter = crudOptions.auth.filter(userOrRequest) || {}; + } + if ((0, lodash_1.isFunction)(crudOptions.auth.persist)) { + parser.setAuthPersist(crudOptions.auth.persist(userOrRequest)); + } + const options = {}; + if ((0, lodash_1.isFunction)(crudOptions.auth.classTransformOptions)) { + Object.assign(options, crudOptions.auth.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.groups)) { + options.groups = crudOptions.auth.groups(userOrRequest); + } + parser.setClassTransformOptions(options); + } + return auth; + } +}; +exports.CrudRequestInterceptor = CrudRequestInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudRequestInterceptor); + + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudBaseInterceptor = void 0; +const helpers_1 = __webpack_require__(10); +class CrudBaseInterceptor { + getCrudInfo(context) { + const ctrl = context.getClass(); + const handler = context.getHandler(); + const ctrlOptions = helpers_1.R.getCrudOptions(ctrl); + const crudOptions = ctrlOptions + ? ctrlOptions + : { + query: {}, + routes: {}, + params: {}, + operators: {}, + }; + const action = helpers_1.R.getAction(handler); + return { ctrlOptions, crudOptions, action }; + } +} +exports.CrudBaseInterceptor = CrudBaseInterceptor; + + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudResponseInterceptor = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(8); +const lodash_1 = __webpack_require__(5); +const helpers_1 = __webpack_require__(10); +const class_transformer_1 = __webpack_require__(18); +const operators_1 = __webpack_require__(43); +const enums_1 = __webpack_require__(13); +const crud_base_interceptor_1 = __webpack_require__(41); +const class_validator_1 = __webpack_require__(17); +const actionToDtoNameMap = { + [enums_1.CrudActions.ReadAll]: "getMany", + [enums_1.CrudActions.ReadOne]: "get", + [enums_1.CrudActions.CreateMany]: "createMany", + [enums_1.CrudActions.CreateOne]: "create", + [enums_1.CrudActions.UpdateOne]: "update", + [enums_1.CrudActions.ReplaceOne]: "replace", + [enums_1.CrudActions.DeleteAll]: "delete", + [enums_1.CrudActions.DeleteOne]: "delete", + [enums_1.CrudActions.RecoverOne]: "recover", +}; +let CrudResponseInterceptor = exports.CrudResponseInterceptor = class CrudResponseInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + return next.handle().pipe((0, operators_1.map)((data) => this.serialize(context, data))); + } + transform(dto, data, options) { + if (!(0, class_validator_1.isObject)(data) || (0, helpers_1.isFalse)(dto)) { + return data; + } + if (!(0, lodash_1.isFunction)(dto)) { + return data.constructor !== Object + ? (0, class_transformer_1.instanceToPlain)(data, options) + : data; + } + return data instanceof dto + ? (0, class_transformer_1.instanceToPlain)(data, options) + : /* @ts-ignore */ + (0, class_transformer_1.instanceToPlain)(Object.assign(new dto(), data), options); + } + serialize(context, data) { + const req = context.switchToHttp().getRequest(); + const { crudOptions, action } = this.getCrudInfo(context); + const { serialize } = crudOptions; + /* @ts-ignore */ + const dto = serialize[actionToDtoNameMap[action]]; + const isArray = Array.isArray(data); + const options = {}; + if ((0, lodash_1.isFunction)(crudOptions.auth?.classTransformOptions)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + Object.assign(options, crudOptions.auth?.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)(crudOptions.auth?.groups)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + options.groups = crudOptions.auth?.groups(userOrRequest); + } + switch (action) { + case enums_1.CrudActions.ReadAll: + return isArray + ? data.map((item) => this.transform(serialize?.get, item, options)) + : this.transform(dto, data, options); + case enums_1.CrudActions.CreateMany: + return isArray + ? data.map((item) => this.transform(dto, item, options)) + : this.transform(dto, data, options); + default: + return this.transform(dto, data, options); + } + } +}; +exports.CrudResponseInterceptor = CrudResponseInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudResponseInterceptor); + + +/***/ }), +/* 43 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("rxjs/operators"); + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TypeOrmCrudService = void 0; +const o0_1 = __webpack_require__(45); +const class_transformer_1 = __webpack_require__(18); +const lodash_1 = __webpack_require__(5); +const typeorm_1 = __webpack_require__(46); +const helpers_1 = __webpack_require__(10); +const types_1 = __webpack_require__(26); +const abstract_crud_service_1 = __webpack_require__(7); +class TypeOrmCrudService extends abstract_crud_service_1.CrudService { + constructor(repo) { + super(); + this.repo = repo; + this.entityHasDeleteColumn = false; + this.entityColumnsHash = {}; + this.entityRelationsHash = new Map(); + this.sqlInjectionRegEx = [ + /(%27)|(')|(--)|(%23)|(#)/gi, + /((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))/gi, + /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi, + /((%27)|('))union/gi, + ]; + this.dbName = this.repo.metadata.connection.options.type; + this.onInitMapEntityColumns(); + } + get findOne() { + return this.repo.findOne.bind(this.repo); + } + get findOneBy() { + return this.repo.findOneBy.bind(this.repo); + } + get find() { + return this.repo.find.bind(this.repo); + } + get count() { + return this.repo.count.bind(this.repo); + } + get entityType() { + return this.repo.target; + } + get alias() { + return this.repo.metadata.targetName; + } + /** + * Get many + * @param req + */ + async getMany(req) { + const { parsed, options } = req; + const builder = await this.createBuilder(parsed, options); + return this.doGetMany(builder, parsed, options); + } + /** + * Get one + * @param req + */ + async getOne(req) { + return this.getOneOrFail(req); + } + /** + * Create one + * @param req + * @param dto + */ + async createOne(req, dto) { + // @ts-ignore + const { returnShallow } = req.options.routes?.createOneBase; + const entity = this.prepareEntityBeforeSave(dto, req.parsed); + /* istanbul ignore if */ + if (!entity) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const saved = await this.repo.save(entity); + if (returnShallow) { + return saved; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + if ((0, lodash_1.isEmpty)(primaryParams) && + primaryParams.some((p) => (0, lodash_1.isNil)(saved[p]))) { + return saved; + } + else { + req.parsed.search = primaryParams.reduce((acc, p) => ({ ...acc, [p]: saved[p] }), {}); + return this.getOneOrFail(req); + } + } + } + /** + * Create many + * @param req + * @param dto + */ + async createMany(req, dto) { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto) || !(0, helpers_1.isArrayFull)(dto.bulk)) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const bulk = dto.bulk + .map((one) => this.prepareEntityBeforeSave(one, req.parsed)) + .filter((d) => !(0, lodash_1.isUndefined)(d)); + /* istanbul ignore if */ + if (!bulk.length) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + return this.repo.save(bulk, { chunk: 50 }); + } + /** + * Update one + * @param req + * @param dto + */ + async updateOne(req, dto) { + const { allowParamsOverride, returnShallow } = (req.options.routes?.updateOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while updating + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, returnShallow); + const toSave = !allowParamsOverride + ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist } + : { ...found, ...dto, ...req.parsed.authPersist }; + const updated = await this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return updated; + } + else { + req.parsed.paramsFilter.forEach((filter) => { + // @ts-ignore + filter.value = updated[filter.field]; + }); + return this.getOneOrFail(req); + } + } + /** + * Recover one + * @param req + * @param dto + */ + async recoverOne(req) { + // disable cache while recovering + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, false, true); + return this.repo.recover(found); + } + /** + * Replace one + * @param req + * @param dto + */ + async replaceOne(req, dto) { + const { allowParamsOverride, returnShallow } = (req.options.routes?.replaceOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while replacing + // @ts-ignore + req.options.query.cache = false; + const [_, found] = await (0, o0_1.oO)(this.getOneOrFail(req, returnShallow)); + const toSave = !allowParamsOverride + ? { + ...(found || {}), + ...dto, + ...paramsFilters, + ...req.parsed.authPersist, + } + : { + ...(found || {}), + ...paramsFilters, + ...dto, + ...req.parsed.authPersist, + }; + const replaced = await this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return replaced; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + /* istanbul ignore if */ + if (!primaryParams.length) { + return replaced; + } + req.parsed.search = primaryParams.reduce((acc, p) => ({ + ...acc, + // @ts-ignore + [p]: replaced[p], + }), {}); + return this.getOneOrFail(req); + } + } + /** + * Delete one + * @param req + */ + async deleteOne(req) { + const { returnDeleted } = (req.options.routes?.deleteOneBase); + // disable cache while deleting + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, returnDeleted); + const toReturn = returnDeleted + ? (0, class_transformer_1.plainToInstance)(this.entityType, { ...found }, req.parsed.classTransformOptions) + : undefined; + const deleted = req.options.query?.softDelete === true + ? await this.repo.softRemove(found) + : await this.repo.remove(found); + return toReturn; + } + getParamFilters(parsed) { + const filters = {}; + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + filters[filter.field] = filter.value; + } + } + return filters; + } + /** + * Create TypeOrm QueryBuilder + * @param parsed + * @param options + * @param many + * @param withDeleted + */ + async createBuilder(parsed, options, many = true, withDeleted = false) { + // create query builder + const builder = this.repo.createQueryBuilder(this.alias); + // get select fields + const select = this.getSelect(parsed, options.query || {}); + // select fields + builder.select(select); + // if soft deleted is enabled add where statement to filter deleted records + if (options.query?.softDelete) { + if (parsed.includeDeleted === 1 || withDeleted) { + builder.withDeleted(); + } + } + // search + this.setSearchCondition(builder, parsed.search || {}, options.operators?.custom || {}); + // set joins + const joinOptions = options.query?.join || {}; + const allowedJoins = Object.keys(joinOptions); + if (!(0, lodash_1.isEmpty)(allowedJoins)) { + const eagerJoins = {}; + for (let i = 0; i < allowedJoins.length; i++) { + if (joinOptions[allowedJoins[i]].eager) { + const cond = parsed.join.find((j) => j && j.field === allowedJoins[i]) || { + field: allowedJoins[i], + }; + this.setJoin(cond, joinOptions, builder); + eagerJoins[allowedJoins[i]] = true; + } + } + if ((0, helpers_1.isArrayFull)(parsed.join)) { + for (let i = 0; i < parsed.join.length; i++) { + if (!eagerJoins[parsed.join[i].field]) { + this.setJoin(parsed.join[i], joinOptions, builder); + } + } + } + } + if (many) { + // set sort (order by) + const sort = this.getSort(parsed, options.query || {}); + builder.orderBy(sort); + // set take + const take = this.getTake(parsed, options.query || {}); + if (take && isFinite(take)) { + builder.take(take); + } + // set skip + const skip = this.getSkip(parsed, take || 0); + if (skip && isFinite(skip)) { + builder.skip(skip); + } + } + // set cache + if (options.query?.cache && parsed.cache !== 0) { + builder.cache(options.query.cache); + } + return builder; + } + /** + * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount` + * helpful for overriding `TypeOrmCrudService#getMany` + * @see getMany + * @see SelectQueryBuilder#getMany + * @see SelectQueryBuilder#getManyAndCount + * @param builder + * @param query + * @param options + */ + async doGetMany(builder, query, options) { + if (this.decidePagination(query, options)) { + const [data, total] = await builder.getManyAndCount(); + const limit = builder.expressionMap.take; + const offset = builder.expressionMap.skip; + return this.createPageInfo(data, total, limit || total, offset || 0); + } + return builder.getMany(); + } + onInitMapEntityColumns() { + this.entityColumns = this.repo.metadata.columns.map((prop) => { + // In case column is an embedded, use the propertyPath to get complete path + if (prop.embeddedMetadata) { + this.entityColumnsHash[prop.propertyPath] = prop.databasePath; + return prop.propertyPath; + } + this.entityColumnsHash[prop.propertyName] = prop.databasePath; + return prop.propertyName; + }); + this.entityPrimaryColumns = this.repo.metadata.columns + .filter((prop) => prop.isPrimary) + .map((prop) => prop.propertyName); + this.entityHasDeleteColumn = this.repo.metadata.columns.some((prop) => !(0, lodash_1.isEmpty)(prop.isDeleteDate)); + } + async getOneOrFail(req, shallow = false, withDeleted = false) { + const { parsed, options } = req; + const builder = shallow + ? this.repo.createQueryBuilder(this.alias) + : await this.createBuilder(parsed, options, true, withDeleted); + if (shallow) { + this.setSearchCondition(builder, parsed.search || null, options.operators?.custom); + } + const found = withDeleted + ? await builder.withDeleted().getOne() + : await builder.getOne(); + if (!found) { + this.throwNotFoundException(this.alias); + } + return found; + } + prepareEntityBeforeSave(dto, parsed) { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto)) { + return undefined; + } + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + dto[filter.field] = filter.value; + } + } + /* istanbul ignore if */ + if ((0, lodash_1.isEmpty)(Object.keys(dto))) { + return undefined; + } + return dto instanceof this.entityType + ? Object.assign(dto, parsed.authPersist) + : (0, class_transformer_1.plainToInstance)(this.entityType, { ...dto, ...parsed.authPersist }, parsed.classTransformOptions); + } + getAllowedColumns(columns, options) { + return (!options.exclude || !options.exclude.length) && + (!options.allow || !options.allow.length) + ? columns + : columns.filter((column) => (options.exclude && options.exclude.length + ? !options.exclude.some((col) => col === column) + : true) && + (options.allow && options.allow.length + ? options.allow.some((col) => col === column) + : true)); + } + getEntityColumns(entityMetadata) { + const columns = entityMetadata.columns.map((prop) => prop.propertyPath) || + []; + const primaryColumns = entityMetadata.primaryColumns.map((prop) => prop.propertyPath) || []; + return { columns, primaryColumns }; + } + getRelationMetadata(field, options) { + try { + let allowedRelation; + let nested = false; + if (this.entityRelationsHash.has(field)) { + allowedRelation = this.entityRelationsHash.get(field); + } + else { + const fields = field.split("."); + let relationMetadata = null; + let name; + let path; + let parentPath; + if (fields.length === 1) { + const found = this.repo.metadata.relations.find((one) => one.propertyName === fields[0]); + if (found) { + name = fields[0]; + path = `${this.alias}.${fields[0]}`; + relationMetadata = found.inverseEntityMetadata; + } + } + else { + nested = true; + parentPath = ""; + const reduced = fields.reduce( + // @ts-ignore + (res, propertyName, i) => { + const found = res.relations?.length + ? res.relations.find((one) => one.propertyName === propertyName) + : null; + relationMetadata = found ? found.inverseEntityMetadata : null; + const relations = relationMetadata + ? relationMetadata.relations + : []; + name = propertyName; + if (i !== fields.length - 1) { + parentPath = !parentPath + ? propertyName + : `${parentPath}.${propertyName}`; + } + return { + relations, + relationMetadata, + }; + }, { + relations: this.repo.metadata.relations, + relationMetadata: null, + }); + // @ts-ignore + relationMetadata = reduced.relationMetadata; + } + // @ts-ignore + if (relationMetadata) { + const { columns, primaryColumns } = this.getEntityColumns(relationMetadata); + if (!path && parentPath) { + const parentAllowedRelation = this.entityRelationsHash.get(parentPath); + if (parentAllowedRelation) { + path = parentAllowedRelation.alias + ? `${parentAllowedRelation.alias}.${name}` + : field; + } + } + allowedRelation = { + alias: options.alias, + name, + path, + columns, + nested, + primaryColumns, + }; + } + } + if (allowedRelation) { + const allowedColumns = this.getAllowedColumns(allowedRelation.columns, options); + const toSave = { + ...allowedRelation, + allowedColumns, + }; + this.entityRelationsHash.set(field, toSave); + if (options.alias) { + this.entityRelationsHash.set(options.alias, toSave); + } + return toSave; + } + } + catch (_) { + return null; + } + return null; + } + setJoin(cond, joinOptions, builder) { + const options = joinOptions[cond.field] ?? null; + if (!options) { + console.warn('relation "' + + cond.field + + '" not found in allowed relations in the controller. Did you mean to use one of these? [' + + Object.keys(joinOptions).join(", ") + + "]"); + return; + } + const allowedRelation = this.getRelationMetadata(cond.field, options); + if (!allowedRelation) { + return; + } + const relationType = options.required ? "innerJoin" : "leftJoin"; + const alias = options.alias ? options.alias : allowedRelation.name; + builder[relationType](allowedRelation.path, alias); + if (options.select !== false) { + const columns = (0, helpers_1.isArrayFull)(cond.select) + ? cond.select?.filter((column) => allowedRelation.allowedColumns.some((allowed) => allowed === column)) || [] + : allowedRelation.allowedColumns || []; + const select = [ + ...allowedRelation.primaryColumns, + // @ts-ignore + ...((0, helpers_1.isArrayFull)(options.persist) ? options.persist : []), + ...columns, + ].map((col) => `${alias}.${col}`); + builder.addSelect(Array.from(new Set(select))); + } + } + setAndWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `andWhere${i}`, customOperators); + builder.andWhere(str, params); + } + setOrWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `orWhere${i}`, customOperators); + builder.orWhere(str, params); + } + setSearchCondition(builder, search, customOperators, condition = "$and") { + if ((0, helpers_1.isObject)(search)) { + const keys = Object.keys(search); + if (keys.length) { + // search: {$ne: [...]} + // @ts-ignore + if ((0, helpers_1.isArrayFull)(search?.$ne)) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + // @ts-ignore + search.$not.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + }), true); + } + // search: {$and: [...], ...} + else if ((0, helpers_1.isArrayFull)(search?.$and)) { + // search: {$and: [{}]} + if (search?.$and?.length === 1) { + this.setSearchCondition(builder, search.$and[0], customOperators, condition); + } + // search: {$and: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + search?.$and?.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + })); + } + } + // search: {$or: [...], ...} + else if ((0, helpers_1.isArrayFull)(search?.$or)) { + // search: {$or: [...]} + if (keys.length === 1) { + // search: {$or: [{}]} + if (search?.$or?.length === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, condition); + } + // search: {$or: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + search?.$or?.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$or"); + }); + })); + } + } + // search: {$or: [...], foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + if (field !== "$or") { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + } + else { + if (search?.$or?.length === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, "$and"); + } + else { + this.builderAddBrackets(qb, "$and", new typeorm_1.Brackets((qb2) => { + search?.$or?.forEach((item) => { + this.setSearchCondition(qb2, item, customOperators, "$or"); + }); + })); + } + } + }); + })); + } + } + // search: {...} + else { + // search: {foo} + if (keys.length === 1) { + const field = keys[0]; + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(builder, condition, field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(builder, condition, field, value, customOperators); + } + } + // search: {foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + }); + })); + } + } + } + } + } + builderAddBrackets(builder, condition, brackets, negated = false) { + if (negated) { + // No builtin support for not, this is copied from QueryBuilder.getWhereCondition + const whereQueryBuilder = builder.createQueryBuilder(); + whereQueryBuilder.parentQueryBuilder = builder; + whereQueryBuilder.expressionMap.mainAlias = + builder.expressionMap.mainAlias; + whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = + builder.expressionMap.aliasNamePrefixingEnabled; + whereQueryBuilder.expressionMap.parameters = + builder.expressionMap.parameters; + whereQueryBuilder.expressionMap.nativeParameters = + builder.expressionMap.nativeParameters; + whereQueryBuilder.expressionMap.wheres = []; + brackets.whereFactory(whereQueryBuilder); + const wheres = { + operator: "brackets", + condition: whereQueryBuilder.expressionMap.wheres, + }; + const type = condition === "$and" ? "and" : condition === "$or" ? "or" : "simple"; + builder.expressionMap.wheres.push({ + type, + condition: { + operator: "not", + condition: wheres, + }, + }); + } + else if (condition === "$and") { + builder.andWhere(brackets); + } + else { + builder.orWhere(brackets); + } + } + builderSetWhere(builder, condition, field, value, customOperators, operator = "$eq") { + const time = process.hrtime(); + // const index = `${field}${time[0]}${time[1]}`; + /** + * Correcting the Error [Invalid Column Name] or [ syntax error at or near \":\".] + * When using filter or search in relational/nested entities. + */ + const safeFieldName = field.replace(/./g, "_"); + const index = `${safeFieldName}${time[0]}${time[1]}`; + const args = [ + { field, operator: (0, lodash_1.isNull)(value) ? "$isnull" : operator, value }, + index, + builder, + customOperators, + ]; + const fn = condition === "$and" ? this.setAndWhere : this.setOrWhere; + // @ts-ignore + fn.apply(this, args); + } + setSearchFieldObjectCondition(builder, condition, field, object, customOperators) { + if ((0, helpers_1.isObject)(object)) { + const operators = Object.keys(object); + if (operators.length === 1) { + const operator = operators[0]; + const value = object[operator]; + if ((0, helpers_1.isObject)(object.$or)) { + const orKeys = Object.keys(object.$or); + this.setSearchFieldObjectCondition(builder, orKeys.length === 1 ? condition : "$or", field, object.$or, customOperators); + } + else { + this.builderSetWhere(builder, condition, field, value, customOperators, operator); + } + } + else { + if (operators.length > 1) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + operators.forEach((operator) => { + const value = object[operator]; + if (operator !== "$or") { + this.builderSetWhere(qb, condition, field, value, customOperators, operator); + } + else { + const orKeys = Object.keys(object.$or); + if (orKeys.length === 1) { + this.setSearchFieldObjectCondition(qb, condition, field, object.$or, customOperators); + } + else { + this.builderAddBrackets(qb, condition, new typeorm_1.Brackets((qb2) => { + this.setSearchFieldObjectCondition(qb2, "$or", field, object.$or, customOperators); + })); + } + } + }); + })); + } + } + } + } + getSelect(query, options) { + const allowed = this.getAllowedColumns(this.entityColumns || [], options); + const columns = query.fields && query.fields.length + ? query.fields.filter((field) => allowed.some((col) => field === col)) + : allowed; + return [ + ...new Set([ + ...(options.persist && options.persist.length ? options.persist : []), + ...columns, + ...(this.entityPrimaryColumns || []), + ]), + ].map((col) => `${this.alias}.${col}`); + } + getSort(query, options) { + return query.sort && query.sort.length + ? this.mapSort(query.sort) + : options.sort && options.sort.length + ? this.mapSort(options.sort) + : {}; + } + getFieldWithAlias(field, sort = false) { + const i = ["mysql", "mariadb"].includes(this.dbName) ? "`" : '"'; + const cols = field.split("."); + switch (cols.length) { + case 1: + if (sort) { + return `${this.alias}.${field}`; + } + const dbColName = this.entityColumnsHash[field] !== field + ? this.entityColumnsHash[field] + : field; + return `${i}${this.alias}${i}.${i}${dbColName}${i}`; + case 2: + return field; + default: + return cols.slice(cols.length - 2, cols.length).join("."); + } + } + mapSort(sort) { + const params = {}; + for (let i = 0; i < sort.length; i++) { + const field = this.getFieldWithAlias(sort[i].field, true); + const checkedFiled = this.checkSqlInjection(field); + params[checkedFiled] = sort[i].order; + } + return params; + } + mapOperatorsToQuery(cond, param, customOperators = {}) { + const field = this.getFieldWithAlias(cond.field); + const likeOperator = this.dbName === "postgres" ? "ILIKE" : "LIKE"; + let str; + let params; + if (cond.operator[0] !== "$") { + cond.operator = ("$" + cond.operator); + } + switch (cond.operator) { + case types_1.CondOperator.EQUALS: + str = `${field} = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS: + str = `${field} != :${param}`; + break; + case types_1.CondOperator.GREATER_THAN: + str = `${field} > :${param}`; + break; + case types_1.CondOperator.LOWER_THAN: + str = `${field} < :${param}`; + break; + case types_1.CondOperator.GREATER_THAN_EQUALS: + str = `${field} >= :${param}`; + break; + case types_1.CondOperator.LOWER_THAN_EQUALS: + str = `${field} <= :${param}`; + break; + case types_1.CondOperator.STARTS: + str = `${field} LIKE :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES: + str = `${field} NOT LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN: + this.checkFilterIsArray(cond); + str = `${field} IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN: + this.checkFilterIsArray(cond); + str = `${field} NOT IN (:...${param})`; + break; + case types_1.CondOperator.IS_NULL: + str = `${field} IS NULL`; + params = {}; + break; + case types_1.CondOperator.NOT_NULL: + str = `${field} IS NOT NULL`; + params = {}; + break; + case types_1.CondOperator.BETWEEN: + this.checkFilterIsArray(cond, cond.value.length !== 2); + str = `${field} BETWEEN :${param}0 AND :${param}1`; + params = { + [`${param}0`]: cond.value[0], + [`${param}1`]: cond.value[1], + }; + break; + // case insensitive + case types_1.CondOperator.EQUALS_LOW: + str = `LOWER(${field}) = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS_LOW: + str = `LOWER(${field}) != :${param}`; + break; + case types_1.CondOperator.STARTS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES_LOW: + str = `LOWER(${field}) NOT ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) NOT IN (:...${param})`; + break; + default: + const customOperator = customOperators[cond.operator]; + if (!customOperator) { + str = `${field} = :${param}`; + break; + } + try { + if (customOperator.isArray) { + this.checkFilterIsArray(cond); + } + str = customOperator.query(field, param); + params = customOperator.params || {}; + } + catch (error) { + this.throwBadRequestException(`Invalid custom operator '${field}' query`); + } + break; + } + if (typeof params === "undefined") { + params = { [param]: cond.value }; + } + return { str: str, params }; + } + checkFilterIsArray(cond, withLength) { + /* istanbul ignore if */ + if (!Array.isArray(cond.value) || + !cond.value.length || + (!(0, lodash_1.isNil)(withLength) ? withLength : false)) { + this.throwBadRequestException(`Invalid column '${cond.field}' value`); + } + } + checkSqlInjection(field) { + if (this.sqlInjectionRegEx.length) { + for (let i = 0; i < this.sqlInjectionRegEx.length; i++) { + if (this.sqlInjectionRegEx[i].test(field)) { + this.throwBadRequestException(`SQL injection detected: "${field}"`); + } + } + } + return field; + } +} +exports.TypeOrmCrudService = TypeOrmCrudService; + + +/***/ }), +/* 45 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@zmotivat0r/o0"); + +/***/ }), +/* 46 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("typeorm"); + +/***/ }), +/* 47 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudAuth = void 0; +const helpers_1 = __webpack_require__(10); +const CrudAuth = (options) => (target) => { + helpers_1.R.setCrudAuthOptions(options, target); +}; +exports.CrudAuth = CrudAuth; + + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Override = void 0; +const constants_1 = __webpack_require__(22); +const Override = (name) => (target, key, descriptor) => { + Reflect.defineMetadata(constants_1.OVERRIDE_METHOD_METADATA, name || `${key}Base`, target[key]); + return descriptor; +}; +exports.Override = Override; + + +/***/ }), +/* 49 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ParsedRequest = void 0; +const common_1 = __webpack_require__(8); +const constants_1 = __webpack_require__(22); +const helpers_1 = __webpack_require__(10); +exports.ParsedRequest = (0, common_1.createParamDecorator)((_, ctx) => { + return helpers_1.R.getContextRequest(ctx)[constants_1.PARSED_CRUD_REQUEST_KEY]; +}); + + +/***/ }), +/* 50 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ParsedBody = void 0; +const constants_1 = __webpack_require__(22); +const ParsedBody = () => (target, key, index) => { + Reflect.defineMetadata(constants_1.PARSED_BODY_METADATA, { index }, target[key]); +}; +exports.ParsedBody = ParsedBody; + + +/***/ }), +/* 51 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getAction = exports.getFeature = exports.Action = exports.Feature = void 0; +const common_1 = __webpack_require__(8); +const constants_1 = __webpack_require__(22); +const Feature = (name) => (0, common_1.SetMetadata)(constants_1.FEATURE_NAME_METADATA, name); +exports.Feature = Feature; +const Action = (name) => (0, common_1.SetMetadata)(constants_1.ACTION_NAME_METADATA, name); +exports.Action = Action; +const getFeature = (target) => Reflect.getMetadata(constants_1.FEATURE_NAME_METADATA, target); +exports.getFeature = getFeature; +const getAction = (target) => Reflect.getMetadata(constants_1.ACTION_NAME_METADATA, target); +exports.getAction = getAction; + + +/***/ }), +/* 52 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(53), exports); +tslib_1.__exportStar(__webpack_require__(54), exports); +tslib_1.__exportStar(__webpack_require__(55), exports); +tslib_1.__exportStar(__webpack_require__(56), exports); +tslib_1.__exportStar(__webpack_require__(57), exports); +tslib_1.__exportStar(__webpack_require__(58), exports); +tslib_1.__exportStar(__webpack_require__(59), exports); +tslib_1.__exportStar(__webpack_require__(60), exports); +tslib_1.__exportStar(__webpack_require__(61), exports); +tslib_1.__exportStar(__webpack_require__(62), exports); +tslib_1.__exportStar(__webpack_require__(63), exports); +tslib_1.__exportStar(__webpack_require__(64), exports); +tslib_1.__exportStar(__webpack_require__(65), exports); +tslib_1.__exportStar(__webpack_require__(66), exports); +tslib_1.__exportStar(__webpack_require__(67), exports); +tslib_1.__exportStar(__webpack_require__(68), exports); +tslib_1.__exportStar(__webpack_require__(69), exports); +tslib_1.__exportStar(__webpack_require__(70), exports); + + +/***/ }), +/* 53 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 54 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 55 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 56 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 57 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 58 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 59 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 60 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 61 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 62 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 63 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 64 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 65 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 66 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 67 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 68 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 69 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 70 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 71 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/core"); + +/***/ }), +/* 72 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudxSwaggerRoutesFactory = void 0; +const crudx_1 = __webpack_require__(1); +const lodash_1 = __webpack_require__(5); +const swagger_helper_1 = __webpack_require__(73); +class CrudxSwaggerRoutesFactory extends crudx_1.RoutesFactoryService { + constructor(target, options) { + super(target, options); + this.target = target; + this.swaggerModels = {}; + } + create() { + const routesSchema = this.getRoutesSchema(); + this.mergeOptions(); + this.setResponseModels(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + setBaseRouteMeta(name) { + super.setBaseRouteMeta(name); + this.setSwaggerOperation(name); + this.setSwaggerPathParams(name); + this.setSwaggerQueryParams(name); + this.setSwaggerResponseOk(name); + // set decorators after Swagger so metadata can be overwritten + this.setDecorators(name); + } + setSwaggerOperation(name) { + const summary = swagger_helper_1.Swagger.operationsMap(this.modelName)[name]; + const operationId = name + this.targetProto.constructor.name + this.modelName; + swagger_helper_1.Swagger.setOperation({ summary, operationId }, this.targetProto[name]); + } + setSwaggerPathParams(name) { + const metadata = swagger_helper_1.Swagger.getParams(this.targetProto[name]); + const withoutPrimary = [ + "createManyBase", + "createOneBase", + "getManyBase", + ]; + const removePrimary = (0, crudx_1.isIn)(name, withoutPrimary); + const params = (0, lodash_1.keys)(this.options.params) + .filter((key) => !(0, lodash_1.get)(this.options, `params.${key}.disabled`)) + .filter((key) => !(removePrimary && (0, lodash_1.get)(this.options, `params.${key}.primary`))) + .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {}); + const pathParamsMeta = swagger_helper_1.Swagger.createPathParamsMeta(params); + swagger_helper_1.Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]); + } + setSwaggerQueryParams(name) { + const metadata = swagger_helper_1.Swagger.getParams(this.targetProto[name]); + const queryParamsMeta = swagger_helper_1.Swagger.createQueryParamsMeta(name, this.options); + swagger_helper_1.Swagger.setParams([...metadata, ...queryParamsMeta], this.targetProto[name]); + } + setSwaggerResponseOk(name) { + const metadata = swagger_helper_1.Swagger.getResponseOk(this.targetProto[name]); + const metadataToAdd = swagger_helper_1.Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {}; + swagger_helper_1.Swagger.setResponseOk({ ...metadata, ...metadataToAdd }, this.targetProto[name]); + } + setResponseModels() { + const modelType = (0, lodash_1.isFunction)(this.modelType) + ? this.modelType + : crudx_1.SerializeHelper.createGetOneResponseDto(this.modelName); + this.swaggerModels = {}; + this.swaggerModels.get = (0, lodash_1.isFunction)(this.options.serialize?.get) + ? this.options.serialize?.get + : modelType; + this.swaggerModels.getMany = + this.options.serialize?.getMany || + crudx_1.SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName); + this.swaggerModels.create = (0, lodash_1.isFunction)(this.options.serialize?.create) + ? this.options.serialize?.create + : modelType; + this.swaggerModels.update = (0, lodash_1.isFunction)(this.options.serialize?.update) + ? this.options.serialize?.update + : modelType; + this.swaggerModels.replace = (0, lodash_1.isFunction)(this.options.serialize?.replace) + ? this.options.serialize?.replace + : modelType; + this.swaggerModels.delete = (0, lodash_1.isFunction)(this.options.serialize?.delete) + ? this.options.serialize?.delete + : modelType; + this.swaggerModels.recover = (0, lodash_1.isFunction)(this.options.serialize?.recover) + ? this.options.serialize?.recover + : modelType; + swagger_helper_1.Swagger.setExtraModels(this.swaggerModels); + } + overrideRoutes(routesSchema) { + super.overrideRoutes(routesSchema); + Object.getOwnPropertyNames(this.targetProto).forEach((name) => { + const override = crudx_1.R.getOverrideRoute(this.targetProto[name]); + const route = routesSchema.find((r) => (0, lodash_1.isEqual)(r.name, override)); + if (override && route && route.enable) { + const operation = swagger_helper_1.Swagger.getOperation(this.targetProto[name]); + const baseOperation = swagger_helper_1.Swagger.getOperation(this.targetProto[override]); + const swaggerParams = swagger_helper_1.Swagger.getParams(this.targetProto[name]); + const baseSwaggerParams = swagger_helper_1.Swagger.getParams(this.targetProto[override]); + const responseOk = swagger_helper_1.Swagger.getResponseOk(this.targetProto[name]); + const baseResponseOk = swagger_helper_1.Swagger.getResponseOk(this.targetProto[override]); + swagger_helper_1.Swagger.setOperation({ ...baseOperation, ...operation }, this.targetProto[name]); + swagger_helper_1.Swagger.setParams([...baseSwaggerParams, ...swaggerParams], this.targetProto[name]); + swagger_helper_1.Swagger.setResponseOk({ ...baseResponseOk, ...responseOk }, this.targetProto[name]); + } + }); + } +} +exports.CrudxSwaggerRoutesFactory = CrudxSwaggerRoutesFactory; + + +/***/ }), +/* 73 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Swagger = exports.swaggerPkgJson = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const crudx_2 = __webpack_require__(1); +const crudx_3 = __webpack_require__(1); +const common_1 = __webpack_require__(8); +const swagger_1 = __webpack_require__(16); +const SWAGGER_CONSTANTS = tslib_1.__importStar(__webpack_require__(74)); +const lodash_1 = __webpack_require__(5); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const pluralize = __webpack_require__(75); +exports.swaggerPkgJson = (0, crudx_3.safeRequire)("@nestjs/swagger/package.json", () => __webpack_require__(76)); +class Swagger { + static operationsMap(modelName) { + return { + getManyBase: `Retrieve multiple ${pluralize(modelName)}`, + getOneBase: `Retrieve a single ${modelName}`, + createManyBase: `Create multiple ${pluralize(modelName)}`, + createOneBase: `Create a single ${modelName}`, + updateOneBase: `Update a single ${modelName}`, + replaceOneBase: `Replace a single ${modelName}`, + deleteOneBase: `Delete a single ${modelName}`, + recoverOneBase: `Recover one ${modelName}`, + }; + } + static setOperation(metadata, func) { + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func); + } + static setParams(metadata, func) { + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func); + } + static setExtraModels(swaggerModels) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + const meta = Swagger.getExtraModels(swaggerModels.get); + const models = [ + ...meta, + ...(0, lodash_1.keys)(swaggerModels) + .map((name) => swaggerModels[name]) + .filter((one) => one && one.name !== swaggerModels.get.name), + ]; + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, models, swaggerModels.get); + } + } + static setResponseOk(metadata, func) { + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func); + } + static getOperation(func) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {}; + } + static getParams(func) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || []; + } + static getExtraModels(target) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || []; + } + static getResponseOk(func) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {}; + } + static createResponseMeta(name, options, swaggerModels) { + const { routes, query } = options; + switch (name) { + case "getOneBase": + return { + [common_1.HttpStatus.OK]: { + description: "Get one base response", + type: swaggerModels?.get ?? {}, + }, + }; + case "getManyBase": + return { + [common_1.HttpStatus.OK]: query?.alwaysPaginate + ? { + description: "Get paginated response", + type: swaggerModels.getMany, + } + : { + description: "Get many base response", + schema: { + oneOf: [ + { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.getMany.name), + }, + { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.get.name), + }, + }, + ], + }, + }, + }; + case "createOneBase": + return { + [common_1.HttpStatus.CREATED]: { + description: "Get create one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }; + case "createManyBase": + return { + [common_1.HttpStatus.CREATED]: swaggerModels.createMany + ? { + description: "Get create many base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.createMany.name), + }, + } + : { + description: "Get create many base response", + schema: { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }, + }; + case "deleteOneBase": + return { + [common_1.HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted + ? { + description: "Delete one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.delete.name), + }, + } + : { + description: "Delete one base response", + }, + }; + case "recoverOneBase": + return { + [common_1.HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered + ? { + description: "Recover one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.recover.name), + }, + } + : { + description: "Recover one base response", + }, + }; + default: + const dto = swaggerModels[name.split("OneBase")[0]]; + return { + [common_1.HttpStatus.OK]: { + description: "Response", + schema: { $ref: (0, swagger_1.getSchemaPath)(dto.name) }, + }, + }; + } + } + static createPathParamsMeta(options) { + return SWAGGER_CONSTANTS + ? (0, lodash_1.keys)(options).map((param) => ({ + name: param, + required: true, + in: "path", + type: options[param].type === "number" ? Number : String, + enum: (0, lodash_1.isArray)(options[param]?.enum) + ? Object.values(options[param].enum) + : undefined, + })) + : []; + } + static createQueryParamsMeta(name, options) { + const { delim: d, delimStr: coma, fields, search, filter, or, join, sort, limit, offset, page, cache, includeDeleted, } = Swagger.getQueryParamsNames(); + const docsLink = (a) => + // TODO: to modify + `Docs`; + const fieldsMetaBase = { + name: fields, + description: `Selects resource fields. ${docsLink("select")}`, + required: false, + in: "query", + }; + const fieldsMeta = { + ...fieldsMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: false, + }; + const searchMetaBase = { + name: search, + description: `Adds search condition. ${docsLink("search")}`, + required: false, + in: "query", + }; + const searchMeta = { ...searchMetaBase, schema: { type: "string" } }; + const filterMetaBase = { + name: filter, + description: `Adds filter condition. ${docsLink("filter")}`, + required: false, + in: "query", + }; + const filterMeta = { + ...filterMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const orMetaBase = { + name: or, + description: `Adds OR condition. ${docsLink("or")}`, + required: false, + in: "query", + }; + const orMeta = { + ...orMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const sortMetaBase = { + name: sort, + description: `Adds sort by field. ${docsLink("sort")}`, + required: false, + in: "query", + }; + const sortMeta = { + ...sortMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const joinMetaBase = { + name: join, + description: `Adds relational resources. ${docsLink("join")}`, + required: false, + in: "query", + }; + const joinMeta = { + ...joinMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const limitMetaBase = { + name: limit, + description: `Limit amount of resources. ${docsLink("limit")}`, + required: false, + in: "query", + }; + const limitMeta = { ...limitMetaBase, schema: { type: "integer" } }; + const offsetMetaBase = { + name: offset, + description: `Offset amount of resources. ${docsLink("offset")}`, + required: false, + in: "query", + }; + const offsetMeta = { ...offsetMetaBase, schema: { type: "integer" } }; + const pageMetaBase = { + name: page, + description: `Page portion of resources. ${docsLink("page")}`, + required: false, + in: "query", + }; + const pageMeta = { ...pageMetaBase, schema: { type: "integer" } }; + const cacheMetaBase = { + name: cache, + description: `Reset cache (if was enabled). ${docsLink("cache")}`, + required: false, + in: "query", + }; + const cacheMeta = { + ...cacheMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + const includeDeletedMetaBase = { + name: includeDeleted, + description: `Include deleted. ${docsLink("includeDeleted")}`, + required: false, + in: "query", + }; + const includeDeletedMeta = { + ...includeDeletedMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + switch (name) { + case "getManyBase": + return options.query?.softDelete + ? [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + includeDeletedMeta, + ] + : [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + ]; + case "getOneBase": + return options.query?.softDelete + ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta] + : [fieldsMeta, joinMeta, cacheMeta]; + default: + return []; + } + } + static getQueryParamsNames() { + const qbOptions = crudx_1.QueryBuilderService.getOptions(); + const name = (n) => { + const selected = (0, lodash_1.get)(qbOptions, `paramNamesMap[${n}]`); + return (0, lodash_1.isString)(selected) ? selected : selected?.[0]; + }; + return { + delim: qbOptions.delim, + delimStr: qbOptions.delimStr, + fields: name("fields"), + search: name("search"), + filter: name("filter"), + or: name("or"), + join: name("join"), + sort: name("sort"), + limit: name("limit"), + offset: name("offset"), + page: name("page"), + cache: name("cache"), + includeDeleted: name("includeDeleted"), + }; + } +} +exports.Swagger = Swagger; + + +/***/ }), +/* 74 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger/dist/constants"); + +/***/ }), +/* 75 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("pluralize"); + +/***/ }), +/* 76 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger/package.json"); + +/***/ }), +/* 77 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(8); +const app_controller_1 = __webpack_require__(78); +const app_service_1 = __webpack_require__(79); +const config_1 = __webpack_require__(82); +const typeorm_1 = __webpack_require__(81); +const database_config_1 = __webpack_require__(83); +const user_model_1 = __webpack_require__(80); +let AppModule = exports.AppModule = class AppModule { +}; +exports.AppModule = AppModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [ + config_1.ConfigModule.forRoot({ + isGlobal: true, + envFilePath: [".env.testing"], + load: [database_config_1.databaseConfig], + }), + typeorm_1.TypeOrmModule.forRootAsync({ + useFactory: (config) => ({ + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }), + inject: [config_1.ConfigService], + }), + typeorm_1.TypeOrmModule.forFeature([user_model_1.User]), + ], + controllers: [app_controller_1.AppController], + providers: [app_service_1.AppService], + }) +], AppModule); + + +/***/ }), +/* 78 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b, _c; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppController = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(8); +const app_service_1 = __webpack_require__(79); +const user_model_1 = __webpack_require__(80); +const crudx_1 = __webpack_require__(1); +const swagger_1 = __webpack_require__(16); +let AppController = exports.AppController = class AppController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } + async getOneOverride(req) { + return this.base.getOneBase(req); + } +}; +tslib_1.__decorate([ + (0, crudx_1.Override)("getOneBase"), + (0, swagger_1.ApiResponse)({ + status: 200, + description: "Overriden description", + }), + (0, swagger_1.ApiOperation)({ + summary: "Overriden Summary", + }), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _b : Object]), + tslib_1.__metadata("design:returntype", typeof (_c = typeof Promise !== "undefined" && Promise) === "function" ? _c : Object) +], AppController.prototype, "getOneOverride", null); +exports.AppController = AppController = tslib_1.__decorate([ + (0, swagger_1.ApiTags)("v1"), + (0, crudx_1.Crud)({ + model: { + type: user_model_1.User, + }, + }), + (0, common_1.Controller)("/user"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof app_service_1.AppService !== "undefined" && app_service_1.AppService) === "function" ? _a : Object]) +], AppController); + + +/***/ }), +/* 79 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppService = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(8); +const user_model_1 = __webpack_require__(80); +const crudx_1 = __webpack_require__(1); +const typeorm_1 = __webpack_require__(81); +const typeorm_2 = __webpack_require__(46); +const class_validator_1 = __webpack_require__(17); +let AppService = exports.AppService = class AppService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.AppService = AppService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(user_model_1.User)), + tslib_1.__metadata("design:paramtypes", [Object]) +], AppService); + + +/***/ }), +/* 80 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.User = void 0; +const tslib_1 = __webpack_require__(2); +const swagger_1 = __webpack_require__(16); +const typeorm_1 = __webpack_require__(46); +let User = exports.User = class User extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, swagger_1.ApiProperty)(), + (0, typeorm_1.PrimaryGeneratedColumn)(), + tslib_1.__metadata("design:type", Number) +], User.prototype, "id", void 0); +tslib_1.__decorate([ + (0, swagger_1.ApiProperty)(), + (0, typeorm_1.Column)({ type: "varchar", length: 150 }), + tslib_1.__metadata("design:type", String) +], User.prototype, "name", void 0); +tslib_1.__decorate([ + (0, swagger_1.ApiProperty)(), + (0, typeorm_1.Column)({ type: "integer", nullable: true }), + tslib_1.__metadata("design:type", Number) +], User.prototype, "age", void 0); +exports.User = User = tslib_1.__decorate([ + (0, typeorm_1.Entity)("user_swagger") +], User); + + +/***/ }), +/* 81 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/typeorm"); + +/***/ }), +/* 82 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/config"); + +/***/ }), +/* 83 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.databaseConfig = void 0; +const config_1 = __webpack_require__(82); +const user_model_1 = __webpack_require__(80); +exports.databaseConfig = (0, config_1.registerAs)("database", () => ({ + type: process.env["DB_TYPE"], + host: process.env["DB_HOST"], + port: process.env["DB_PORT"], + username: process.env["DB_USERNAME"], + password: process.env["DB_PASSWORD"], + database: process.env["DB_DATABASE"], + entities: [user_model_1.User], + synchronize: true, + autoLoadEntities: true, + encoding: process.env["DB_CHARSET"], +})); + + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +var exports = __webpack_exports__; + +/** + * This is not a production server yet! + * This is only a minimal backend to get started. + */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(8); +const core_1 = __webpack_require__(71); +const swagger_1 = __webpack_require__(16); +const crudx_swagger_routes_factory_1 = __webpack_require__(72); +crudx_1.CrudConfigService.load({ + query: { + limit: 20, + }, + routesFactory: crudx_swagger_routes_factory_1.CrudxSwaggerRoutesFactory, +}); +const app_module_1 = __webpack_require__(77); +async function bootstrap() { + const app = await core_1.NestFactory.create(app_module_1.AppModule); + const globalPrefix = "api"; + app.setGlobalPrefix(globalPrefix); + const port = process.env.PORT || 3000; + const config = new swagger_1.DocumentBuilder() + .setTitle("Crudx Swagger") + .setDescription("The Crudx-Swagger API Demo") + .setVersion("1.0") + .addTag("crudx-swagger") + .build(); + const document = swagger_1.SwaggerModule.createDocument(app, config); + swagger_1.SwaggerModule.setup("api/docs", app, document); + await app.listen(port); + common_1.Logger.log(`🚀 Application is running on: http://localhost:${port}/${globalPrefix}`); +} +bootstrap(); + +})(); + +var __webpack_export_target__ = exports; +for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i]; +if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true }); +/******/ })() +; +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js.map b/dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js.map new file mode 100644 index 000000000..f609858d7 --- /dev/null +++ b/dist/packages/crudx-swagger/demo/crudx-swagger-demo/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","mappings":"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","sources":["webpack:///../../../crudx/src/index.ts","webpack:///external commonjs \"tslib\"","webpack:///../../../crudx/src/decorators/index.ts","webpack:///../../../crudx/src/decorators/crud.decorator.ts","webpack:///external commonjs \"lodash\"","webpack:///../../../crudx/src/services/index.ts","webpack:///../../../crudx/src/services/abstract-crud.service.ts","webpack:///external commonjs \"@nestjs/common\"","webpack:///../../../crudx/src/services/crud-config.service.ts","webpack:///../../../crudx/src/helpers/index.ts","webpack:///../../../crudx/src/helpers/checkers.helper.ts","webpack:///../../../crudx/src/helpers/crud-validation.helper.ts","webpack:///../../../crudx/src/enums/index.ts","webpack:///../../../crudx/src/enums/crud-actions.enum.ts","webpack:///../../../crudx/src/enums/crud-validation-groups.enum.ts","webpack:///external commonjs \"@nestjs/swagger\"","webpack:///external commonjs \"class-validator\"","webpack:///external commonjs \"class-transformer\"","webpack:///../../../crudx/src/helpers/reflection.helper.ts","webpack:///external commonjs \"@nestjs/common/enums/route-paramtypes.enum\"","webpack:///external commonjs \"@nestjs/common/constants\"","webpack:///../../../crudx/src/constants.ts","webpack:///../../../crudx/src/helpers/request-validation.helper.ts","webpack:///../../../crudx/src/exceptions/index.ts","webpack:///../../../crudx/src/exceptions/request-query.exception.ts","webpack:///../../../crudx/src/types/index.ts","webpack:///../../../crudx/src/types/common.types.ts","webpack:///../../../crudx/src/types/crud.types.ts","webpack:///../../../crudx/src/types/request-param.types.ts","webpack:///../../../crudx/src/types/request-query.types.ts","webpack:///../../../crudx/src/helpers/serialize.helper.ts","webpack:///../../../crudx/src/helpers/safe-require.helper.ts","webpack:///../../../crudx/src/helpers/ sync","webpack:///../../../crudx/src/services/query-builder.service.ts","webpack:///external commonjs \"qs\"","webpack:///external commonjs \"deepmerge\"","webpack:///../../../crudx/src/services/query-parser.service.ts","webpack:///../../../crudx/src/services/routes-factory.service.ts","webpack:///../../../crudx/src/interceptors/index.ts","webpack:///../../../crudx/src/interceptors/crud-request.interceptor.ts","webpack:///../../../crudx/src/interceptors/crud-base.interceptor.ts","webpack:///../../../crudx/src/interceptors/crud-response.interceptor.ts","webpack:///external commonjs \"rxjs/operators\"","webpack:///../../../crudx/src/services/type-orm-crud.service.ts","webpack:///external commonjs \"@zmotivat0r/o0\"","webpack:///external commonjs \"typeorm\"","webpack:///../../../crudx/src/decorators/crud-auth.decorator.ts","webpack:///../../../crudx/src/decorators/override.decorator.ts","webpack:///../../../crudx/src/decorators/parsed-request.decorator.ts","webpack:///../../../crudx/src/decorators/parsed-body.decorator.ts","webpack:///../../../crudx/src/decorators/feature-action.decorator.ts","webpack:///../../../crudx/src/interfaces/index.ts","webpack:///../../../crudx/src/interfaces/auth-options.interface.ts","webpack:///../../../crudx/src/interfaces/base-route.interface.ts","webpack:///../../../crudx/src/interfaces/create-many-dto.interface.ts","webpack:///../../../crudx/src/interfaces/create-query-params.interface.ts","webpack:///../../../crudx/src/interfaces/crud-controller.interface.ts","webpack:///../../../crudx/src/interfaces/crud-global-config.interface.ts","webpack:///../../../crudx/src/interfaces/crud-options.interface.ts","webpack:///../../../crudx/src/interfaces/crud-request.interface.ts","webpack:///../../../crudx/src/interfaces/dto-options.interface.ts","webpack:///../../../crudx/src/interfaces/get-many-default-response.interface.ts","webpack:///../../../crudx/src/interfaces/model-options.interface.ts","webpack:///../../../crudx/src/interfaces/operators-options.interface.ts","webpack:///../../../crudx/src/interfaces/params-options.interface.ts","webpack:///../../../crudx/src/interfaces/parsed-request.interface.ts","webpack:///../../../crudx/src/interfaces/query-options.interface.ts","webpack:///../../../crudx/src/interfaces/request-query-builder-options.interface.ts","webpack:///../../../crudx/src/interfaces/routes-options.interface.ts","webpack:///../../../crudx/src/interfaces/serialize-options.interface.ts","webpack:///external commonjs \"@nestjs/core\"","webpack:///../../src/services/crudx.swagger.routes.factory.ts","webpack:///../../src/lib/swagger.helper.ts","webpack:///external commonjs \"@nestjs/swagger/dist/constants\"","webpack:///external commonjs \"pluralize\"","webpack:///external commonjs \"@nestjs/swagger/package.json\"","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.controller.ts","webpack:///./src/app/app.service.ts","webpack:///./src/app/user.model.ts","webpack:///external commonjs \"@nestjs/typeorm\"","webpack:///external commonjs \"@nestjs/config\"","webpack:///./src/database.config.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/main.ts"],"sourcesContent":["export * from \"./decorators\";\nexport * from \"./constants\";\nexport * from \"./enums\";\nexport * from \"./exceptions\";\nexport * from \"./helpers\";\nexport * from \"./interceptors\";\nexport * from \"./interfaces\";\nexport * from \"./services\";\nexport * from \"./types\";\n","module.exports = require(\"tslib\");","export * from \"./crud.decorator\";\nexport * from \"./crud-auth.decorator\";\nexport * from \"./override.decorator\";\nexport * from \"./parsed-request.decorator\";\nexport * from \"./parsed-body.decorator\";\nexport * from \"./feature-action.decorator\";\n","import { isUndefined } from \"lodash\";\n\nimport { CrudOptions } from \"../interfaces\";\nimport { CrudConfigService, RoutesFactoryService } from \"../services\";\n\nexport const Crud =\n (options: CrudOptions) =>\n (target: Object): void => {\n const factoryMethod = options.routesFactory || RoutesFactoryService;\n const factory: RoutesFactoryService = isUndefined(CrudConfigService.config?.routesFactory) \n ? new factoryMethod(target, options)\n : new CrudConfigService.config.routesFactory(target, options);\n };\n","module.exports = require(\"lodash\");","export * from \"./abstract-crud.service\";\nexport * from \"./crud-config.service\";\nexport * from \"./query-builder.service\";\nexport * from \"./query-parser.service\";\nexport * from \"./routes-factory.service\";\nexport * from \"./type-orm-crud.service\";\n","import { BadRequestException, NotFoundException } from \"@nestjs/common\";\nimport { get, isEmpty, keys } from \"lodash\";\n\nimport {\n CreateManyDto,\n CrudRequest,\n CrudRequestOptions,\n GetManyDefaultResponse,\n ParsedRequestParams,\n QueryOptions,\n} from \"../interfaces\";\n\nexport abstract class CrudService {\n abstract getMany(req: CrudRequest): Promise | T[]>;\n\n abstract getOne(req: CrudRequest): Promise;\n\n abstract createOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract createMany(req: CrudRequest, dto: CreateManyDto): Promise;\n\n abstract updateOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract replaceOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract deleteOne(req: CrudRequest): Promise;\n\n abstract recoverOne(req: CrudRequest): Promise;\n\n throwBadRequestException(msg?: any): BadRequestException {\n throw new BadRequestException(msg);\n }\n\n throwNotFoundException(name: string): NotFoundException {\n throw new NotFoundException(`${name} not found`);\n }\n\n /**\n * Wrap page into page-info\n * override this method to create custom page-info response\n * or set custom `serialize.getMany` dto in the controller's CrudOption\n * @param data\n * @param total\n * @param limit\n * @param offset\n */\n createPageInfo(\n data: T[],\n total: number,\n limit: number,\n offset: number\n ): GetManyDefaultResponse {\n return {\n data,\n count: data.length,\n total,\n page: limit ? Math.floor(offset / limit) + 1 : 1,\n pageCount: limit && total ? Math.ceil(total / limit) : 1,\n };\n }\n\n /**\n * Determine if need paging\n * @param parsed\n * @param options\n */\n decidePagination(\n parsed: ParsedRequestParams,\n options: CrudRequestOptions\n ): boolean {\n return (\n options.query?.alwaysPaginate ||\n ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) &&\n !!this.getTake(parsed, options.query))\n );\n }\n\n /**\n * Get number of resources to be fetched\n * @param query\n * @param options\n */\n getTake(query: ParsedRequestParams, options: QueryOptions): number | null {\n if (query.limit) {\n return options.maxLimit\n ? query.limit <= options.maxLimit\n ? query.limit\n : options.maxLimit\n : query.limit;\n }\n /* istanbul ignore if */\n if (options.limit) {\n return options.maxLimit\n ? options.limit <= options.maxLimit\n ? options.limit\n : options.maxLimit\n : options.limit;\n }\n\n return options.maxLimit ? options.maxLimit : null;\n }\n\n /**\n * Get number of resources to be skipped\n * @param query\n * @param take\n */\n getSkip(query: ParsedRequestParams, take: number): number | null {\n return query.page && take\n ? take * (query.page - 1)\n : query.offset\n ? query.offset\n : null;\n }\n\n /**\n * Get primary param name from CrudOptions\n * @param options\n */\n getPrimaryParams(options: CrudRequestOptions): string[] {\n if (isEmpty(options.params)) {\n return [];\n }\n // @ts-ignore\n return keys(options.params)\n .filter((n: string) => get(options, `params[${n}].primary`, false))\n .map((p: string) => get(options, `params[${p}].field`));\n }\n}\n","module.exports = require(\"@nestjs/common\");","import { isUndefined } from \"lodash\";\nimport { isObjectFull } from \"../helpers\";\nimport { CrudGlobalConfig, RequestQueryBuilderOptions } from \"../interfaces\";\n\nimport { QueryBuilderService } from \"./query-builder.service\";\nimport { RoutesFactoryService } from \"./routes-factory.service\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst deepmerge = require('deepmerge');\n\nexport class CrudConfigService {\n static config: CrudGlobalConfig = {\n auth: {},\n query: {\n alwaysPaginate: false,\n },\n operators: {},\n routes: {\n getManyBase: { interceptors: [], decorators: [] },\n getOneBase: { interceptors: [], decorators: [] },\n createOneBase: { interceptors: [], decorators: [], returnShallow: false },\n createManyBase: { interceptors: [], decorators: [] },\n updateOneBase: {\n interceptors: [],\n decorators: [],\n allowParamsOverride: false,\n returnShallow: false,\n },\n replaceOneBase: {\n interceptors: [],\n decorators: [],\n allowParamsOverride: false,\n returnShallow: false,\n },\n deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false },\n recoverOneBase: {\n interceptors: [],\n decorators: [],\n returnRecovered: false,\n },\n },\n params: {},\n routesFactory: undefined,\n };\n\n static load(config: CrudGlobalConfig = {}): void {\n const auth = isObjectFull(config.auth) ? config.auth : {};\n const query = isObjectFull(config.query) ? config.query : {};\n const routes = isObjectFull(config.routes) ? config.routes : {};\n const operators = isObjectFull(config.operators) ? config.operators : {};\n const params = isObjectFull(config.params) ? config.params : {};\n const serialize = isObjectFull(config.serialize) ? config.serialize : {};\n const routesFactory = ! isUndefined(config.routesFactory) ? config.routesFactory : undefined;\n\n if (isObjectFull(config.queryParser)) {\n QueryBuilderService.setOptions({\n ...config.queryParser,\n });\n }\n\n CrudConfigService.config = deepmerge(\n CrudConfigService.config,\n { auth, query, routes, operators, params, serialize, routesFactory },\n // @ts-ignore\n { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }\n );\n }\n}\n","export * from \"./checkers.helper\";\nexport * from \"./crud-validation.helper\";\nexport * from \"./reflection.helper\";\nexport * from \"./request-validation.helper\";\nexport * from \"./serialize.helper\";\nexport * from \"./safe-require.helper\";","import {\n every,\n isEqual,\n isArray,\n isBoolean,\n isDate,\n isEmpty,\n isNumber,\n isString,\n keys,\n isNil,\n} from \"lodash\";\n\nexport const isArrayOfStrings = (arr: unknown[]): boolean => {\n return isArray(arr) && every(arr, isString);\n};\nexport const isArrayFull = (val: any): boolean =>\n Array.isArray(val) && !isEmpty(val);\n\nexport const isStringFull = (val: unknown): boolean =>\n isString(val) && !isEmpty(val);\n\nexport const isArrayOfStringsFull = (val: any): boolean =>\n isArrayFull(val) && (val as string[]).every((v: string) => isStringFull(v));\n\nexport const isValue = (val: any): boolean =>\n isStringFull(val) || isNumber(val) || isBoolean(val) || isDate(val);\nexport const hasValue = (val: any): boolean =>\n isArrayFull(val) ? (val as any[]).every((o) => isValue(o)) : isValue(val);\n\nexport const isDateString = (val: any): boolean => {\n const timestamp: number = Date.parse(val);\n return !isNaN(timestamp) && isDate(new Date(timestamp));\n};\n\nexport const isFalse = (val: any): boolean => val === false;\n\nexport const isTrue = (val: any): boolean => val === true;\n\nexport const isIn = (val: any, arr: any[] = []): boolean =>\n arr.some((o) => isEqual(val, o));\n\nexport const isObject = (val: any): boolean =>\n typeof val === \"object\" && !isNil(val);\nexport const isObjectFull = (val: any) => isObject(val) && keys(val).length > 0;\n","import { ValidationPipe } from \"@nestjs/common\";\nimport { isFalse } from \"../helpers\";\nimport { isNil } from \"lodash\";\nimport { CrudValidationGroups } from \"../enums\";\nimport { CreateManyDto, CrudOptions, MergedCrudOptions } from \"../interfaces\";\nimport { ApiProperty } from \"@nestjs/swagger\";\nimport { IsArray, ArrayNotEmpty, ValidateNested } from \"class-validator\";\nimport { Type } from \"class-transformer\";\n\nexport class BulkDto implements CreateManyDto {\n // @ts-ignore\n bulk: T[];\n}\n\nexport const getValidationPipe = (\n options: CrudOptions,\n group?: CrudValidationGroups\n): ValidationPipe | undefined => {\n return !isFalse(options.validation)\n ? new ValidationPipe({\n ...(options.validation || {}),\n groups: group ? [group] : undefined,\n })\n : undefined;\n};\n\nexport const createBulkDto = (options: MergedCrudOptions): any => {\n if (!isFalse(options.validation)) {\n const hasDto: boolean = !isNil(options.dto?.create);\n const groups: CrudValidationGroups[] | undefined = !hasDto\n ? [CrudValidationGroups.CREATE]\n : undefined;\n const always: boolean | undefined = hasDto ? true : undefined;\n const Model = hasDto ? options.dto?.create : options.model.type;\n\n class BulkDtoImpl implements CreateManyDto {\n @ApiProperty({ type: Model, isArray: true })\n @IsArray({ groups, always })\n @ArrayNotEmpty({ groups, always })\n @ValidateNested({ each: true, groups, always })\n @Type(() => Model)\n // @ts-ignore\n bulk: T[];\n }\n\n Object.defineProperty(BulkDtoImpl, \"name\", {\n writable: false,\n value: `CreateMany${options.model.type.name}Dto`,\n });\n\n return BulkDtoImpl;\n } else {\n return BulkDto;\n }\n};\n","export * from \"./crud-actions.enum\";\nexport * from \"./crud-validation-groups.enum\";\n","export enum CrudActions {\n ReadAll = \"Read-All\",\n ReadOne = \"Read-One\",\n CreateOne = \"Create-One\",\n CreateMany = \"Create-Many\",\n UpdateOne = \"Update-One\",\n ReplaceOne = \"Replace-One\",\n DeleteOne = \"Delete-One\",\n DeleteAll = \"Delete-All\",\n RecoverOne = \"Recover-One\",\n}\n","export enum CrudValidationGroups {\n CREATE = \"CRUD-CREATE\",\n UPDATE = \"CRUD-UPDATE\",\n}\n","module.exports = require(\"@nestjs/swagger\");","module.exports = require(\"class-validator\");","module.exports = require(\"class-transformer\");","import { RouteParamtypes } from \"@nestjs/common/enums/route-paramtypes.enum\";\nimport {\n CUSTOM_ROUTE_ARGS_METADATA,\n INTERCEPTORS_METADATA,\n METHOD_METADATA,\n PARAMTYPES_METADATA,\n PATH_METADATA,\n ROUTE_ARGS_METADATA,\n} from \"@nestjs/common/constants\";\nimport { ArgumentsHost } from \"@nestjs/common\";\nimport { isFunction } from \"lodash\";\nimport { BaseRoute, MergedCrudOptions, AuthOptions } from \"../interfaces\";\nimport { BaseRouteName } from \"../types\";\nimport {\n CRUD_OPTIONS_METADATA,\n ACTION_NAME_METADATA,\n PARSED_CRUD_REQUEST_KEY,\n PARSED_BODY_METADATA,\n OVERRIDE_METHOD_METADATA,\n CRUD_AUTH_OPTIONS_METADATA,\n} from \"../constants\";\nimport { CrudActions } from \"../enums\";\n\nexport class R {\n static set(\n metadataKey: any,\n metadataValue: any,\n target: Object,\n propertyKey: string | symbol | undefined = undefined\n ): void {\n if (propertyKey) {\n Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);\n } else {\n Reflect.defineMetadata(metadataKey, metadataValue, target);\n }\n }\n\n static get(\n metadataKey: any,\n target: Object,\n propertyKey: string | symbol | undefined = undefined\n ): T {\n return propertyKey\n ? Reflect.getMetadata(metadataKey, target, propertyKey)\n : Reflect.getMetadata(metadataKey, target);\n }\n\n static createCustomRouteArg(\n paramType: string,\n index: number,\n pipes: any[] = [],\n data: any = undefined\n ): any {\n // @ts-ignore\n return {\n [`${paramType}${CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: {\n index,\n factory: (_: any, ctx: ArgumentsHost) =>\n R.getContextRequest(ctx)[paramType],\n data,\n pipes,\n },\n };\n }\n\n static createRouteArg(\n paramTypes: RouteParamtypes,\n index: number,\n pipes: any[] = [],\n data: any = undefined\n ): any {\n return {\n [`${paramTypes}:${index}`]: {\n index,\n pipes,\n data,\n },\n };\n }\n\n static setDecorators(\n decorators: (PropertyDecorator | MethodDecorator)[],\n target: object,\n name: string\n ): void {\n // this makes metadata decorator works\n const decoratedDescriptor: PropertyDescriptor = Reflect.decorate(\n decorators,\n target,\n name,\n Reflect.getOwnPropertyDescriptor(target, name)\n );\n\n // this makes proxy decorator works\n Reflect.defineProperty(target, name, decoratedDescriptor);\n }\n\n static setParsedRequestArg(index: number) {\n return R.createCustomRouteArg(PARSED_CRUD_REQUEST_KEY, index);\n }\n\n static setBodyArg(index: number, pipes: any[] = []) {\n return R.createRouteArg(RouteParamtypes.BODY, index, pipes);\n }\n\n static setCrudOptions(options: MergedCrudOptions, target: any) {\n R.set(CRUD_OPTIONS_METADATA, options, target);\n }\n\n static setRoute(route: BaseRoute, func: Function) {\n R.set(PATH_METADATA, route.path, func);\n R.set(METHOD_METADATA, route.method, func);\n }\n\n static setInterceptors(interceptors: any[], func: Function) {\n R.set(INTERCEPTORS_METADATA, interceptors, func);\n }\n\n static setRouteArgs(metadata: any, target: any, name: string) {\n R.set(ROUTE_ARGS_METADATA, metadata, target, name);\n }\n\n static setRouteArgsTypes(metadata: any, target: any, name: string) {\n R.set(PARAMTYPES_METADATA, metadata, target, name);\n }\n\n static setAction(action: CrudActions, func: Function) {\n R.set(ACTION_NAME_METADATA, action, func);\n }\n\n static setCrudAuthOptions(metadata: any, target: any) {\n R.set(CRUD_AUTH_OPTIONS_METADATA, metadata, target);\n }\n\n static getCrudAuthOptions(target: any): AuthOptions {\n return R.get(CRUD_AUTH_OPTIONS_METADATA, target);\n }\n\n static getCrudOptions(target: any): MergedCrudOptions {\n return R.get(CRUD_OPTIONS_METADATA, target);\n }\n\n static getAction(func: Function): CrudActions {\n return R.get(ACTION_NAME_METADATA, func);\n }\n\n static getOverrideRoute(func: Function): BaseRouteName {\n return R.get(OVERRIDE_METHOD_METADATA, func);\n }\n\n static getInterceptors(func: Function): any[] {\n return R.get(INTERCEPTORS_METADATA, func) || [];\n }\n\n static getRouteArgs(target: any, name: string): any {\n return R.get(ROUTE_ARGS_METADATA, target, name);\n }\n\n static getRouteArgsTypes(target: any, name: string): any[] {\n return R.get(PARAMTYPES_METADATA, target, name) || [];\n }\n\n static getParsedBody(func: Function): any {\n return R.get(PARSED_BODY_METADATA, func);\n }\n\n static getContextRequest(ctx: ArgumentsHost): any {\n return isFunction(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx;\n }\n}\n","module.exports = require(\"@nestjs/common/enums/route-paramtypes.enum\");","module.exports = require(\"@nestjs/common/constants\");","export const REQUEST_DELIM: string = \"||\";\nexport const REQUEST_DELIM_STR: string = \",\";\nexport const REQUEST_PREFIX_EXTRA: string = \"extra.\";\nexport const FEATURE_NAME_METADATA: string = \"CRUDX_FEATURE_NAME_METADATA\";\nexport const ACTION_NAME_METADATA: string = \"CRUDX_ACTION_NAME_METADATA\";\nexport const OVERRIDE_METHOD_METADATA: string =\n \"CRUDX_OVERRIDE_METHOD_METADATA\";\nexport const PARSED_BODY_METADATA: string = \"CRUDX_PARSED_BODY_METADATA\";\nexport const PARSED_CRUD_REQUEST_KEY: string = \"CRUDX_PARSED_CRUD_REQUEST_KEY\";\nexport const CRUD_OPTIONS_METADATA: string = \"CRUDX_CRUD_OPTIONS_METADATA\";\nexport const CRUD_AUTH_OPTIONS_METADATA: string =\n \"CRUDX_CRUD_AUTH_OPTIONS_METADATA\";\n","import { isEqual, isNil, isNumber, isObject, isUndefined, keys } from \"lodash\";\nimport { RequestQueryException } from \"../exceptions\";\nimport { CustomOperators, ParamOption, ParamsOptions } from \"../interfaces\";\n\nimport {\n ComparisonOperator,\n CondOperator,\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n} from \"../types\";\n\nimport {\n isArrayOfStrings,\n isArrayOfStringsFull,\n isStringFull,\n} from \"./checkers.helper\";\n\nexport const comparisonOperatorsList: string[] = [\n ...keys(CondOperator).map(\n (n: string) => CondOperator[n as keyof typeof CondOperator]\n ),\n];\n\nexport const sortOrdersList: string[] = [\"ASC\", \"DESC\"];\n\nconst sortOrdersListStr: string = sortOrdersList.join();\n\nexport function validateFields(fields: QueryFields): void {\n if (!isArrayOfStrings(fields)) {\n throw new RequestQueryException(\n \"Invalid fields. Array of strings expected\"\n );\n }\n}\n\nexport function validateCondition(\n val: QueryFilter,\n cond: \"filter\" | \"or\" | \"search\",\n customOperators: CustomOperators\n): void {\n if (!isObject(val) || !isStringFull(val.field)) {\n throw new RequestQueryException(\n `Invalid field type in ${cond} condition. String expected`\n );\n }\n validateComparisonOperator(val.operator, customOperators);\n}\n\nexport function validateComparisonOperator(\n operator: ComparisonOperator,\n customOperators: CustomOperators = {}\n): void {\n const extendedComparisonOperatorsList = [\n ...comparisonOperatorsList,\n ...Object.keys(customOperators),\n ];\n if (!extendedComparisonOperatorsList.includes(operator)) {\n throw new RequestQueryException(\n `Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`\n );\n }\n}\n\nexport function validateJoin(join: QueryJoin): void {\n if (!isObject(join) || !isStringFull(join.field)) {\n throw new RequestQueryException(\"Invalid join field. String expected\");\n }\n if (!isUndefined(join.select) && !isArrayOfStringsFull(join.select)) {\n throw new RequestQueryException(\n \"Invalid join select. Array of strings expected\"\n );\n }\n}\n\nexport function validateSort(sort: QuerySort): void {\n if (!isObject(sort) || !isStringFull(sort.field)) {\n throw new RequestQueryException(\"Invalid sort field. String expected\");\n }\n if (\n !isEqual(sort.order, sortOrdersList[0]) &&\n !isEqual(sort.order, sortOrdersList[1])\n ) {\n throw new RequestQueryException(\n `Invalid sort order. ${sortOrdersListStr} expected`\n );\n }\n}\n\nexport function validateNumeric(\n val: number,\n num: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"include_deleted\" | string\n): void {\n if (!isNumber(val)) {\n throw new RequestQueryException(`Invalid ${num}. Number expected`);\n }\n}\n\nexport function validateParamOption(\n options: ParamsOptions,\n name: string\n): void {\n if (!isObject(options)) {\n throw new RequestQueryException(\n `Invalid param ${name}. Invalid crud options`\n );\n }\n const option: ParamOption = options[name];\n if (option && option.disabled) {\n return;\n }\n if (!isObject(option) || isNil(option.field) || isNil(option.type)) {\n throw new RequestQueryException(`Invalid param option in Crud`);\n }\n}\n\nexport function validateUUID(str: string, name: string): void {\n const uuid: RegExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n const uuidV4: RegExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n if (!uuidV4.test(str) && !uuid.test(str)) {\n throw new RequestQueryException(\n `Invalid param ${name}. UUID string expected`\n );\n }\n}\n","export * from \"./request-query.exception\";\n","export class RequestQueryException extends Error {\n constructor(msg: string) {\n super(msg);\n }\n}\n","export * from \"./common.types\";\nexport * from \"./crud.types\";\nexport * from \"./request-param.types\";\nexport * from \"./request-query.types\";\n","export type ClassType = {\n new (...args: any[]): T;\n};\n\nexport type ObjectLiteral = {\n [key: string]: any;\n};\n","import { SCondition, QueryFilter } from \"./request-query.types\";\n\nexport type BaseRouteName =\n | \"getManyBase\"\n | \"getOneBase\"\n | \"createOneBase\"\n | \"createManyBase\"\n | \"updateOneBase\"\n | \"replaceOneBase\"\n | \"deleteOneBase\"\n | \"recoverOneBase\";\n\nexport type QueryFilterFunction = (\n search?: SCondition,\n getMany?: boolean\n) => SCondition | void;\n\nexport type QueryFilterOption =\n | QueryFilter[]\n | SCondition\n | QueryFilterFunction;\n","export type ParamOptionType = \"number\" | \"string\" | \"uuid\";\n","import { ObjectLiteral } from \"./common.types\";\n\nexport type QueryFields = string[];\n\nexport interface QueryFilter {\n field: string;\n operator: ComparisonOperator;\n value?: any;\n}\n\nexport type QueryFilterArr = [string, ComparisonOperator, any?];\n\nexport interface QueryJoin {\n field: string;\n select?: QueryFields;\n}\n\nexport type QueryJoinArr = [string, QueryFields?];\n\nexport interface QuerySort {\n field: string;\n order: QuerySortOperator;\n}\n\n/** Extra object or null */\nexport type QueryExtra = ObjectLiteral | undefined;\n\nexport type QuerySortArr = [string, QuerySortOperator];\n\nexport type QuerySortOperator = \"ASC\" | \"DESC\";\n\nexport enum CondOperator {\n EQUALS = \"$eq\",\n NOT_EQUALS = \"$ne\",\n GREATER_THAN = \"$gt\",\n LOWER_THAN = \"$lt\",\n GREATER_THAN_EQUALS = \"$gte\",\n LOWER_THAN_EQUALS = \"$lte\",\n STARTS = \"$starts\",\n ENDS = \"$ends\",\n CONTAINS = \"$cont\",\n EXCLUDES = \"$excl\",\n IN = \"$in\",\n NOT_IN = \"$notin\",\n IS_NULL = \"$isnull\",\n NOT_NULL = \"$notnull\",\n BETWEEN = \"$between\",\n EQUALS_LOW = \"$eqL\",\n NOT_EQUALS_LOW = \"$neL\",\n STARTS_LOW = \"$startsL\",\n ENDS_LOW = \"$endsL\",\n CONTAINS_LOW = \"$contL\",\n EXCLUDES_LOW = \"$exclL\",\n IN_LOW = \"$inL\",\n NOT_IN_LOW = \"$notinL\",\n}\n\nexport type ComparisonOperator = keyof SFieldOperator | string;\n\n// new search\nexport type SPrimitivesVal = string | number | boolean;\n\nexport type SFiledValues = SPrimitivesVal | SPrimitivesVal[];\n\nexport interface SFieldOperator {\n $eq?: SFiledValues;\n $ne?: SFiledValues;\n $gt?: SFiledValues;\n $lt?: SFiledValues;\n $gte?: SFiledValues;\n $lte?: SFiledValues;\n $starts?: SFiledValues;\n $ends?: SFiledValues;\n $cont?: SFiledValues;\n $excl?: SFiledValues;\n $in?: SFiledValues;\n $notin?: SFiledValues;\n $between?: SFiledValues;\n $isnull?: SFiledValues;\n $notnull?: SFiledValues;\n $eqL?: SFiledValues;\n $neL?: SFiledValues;\n $startsL?: SFiledValues;\n $endsL?: SFiledValues;\n $contL?: SFiledValues;\n $exclL?: SFiledValues;\n $inL?: SFiledValues;\n $notinL?: SFiledValues;\n $or?: SFieldOperator;\n $and?: never;\n}\n\nexport type SField =\n | SPrimitivesVal\n | SFieldOperator\n | { [$custom: string]: SFiledValues };\n\nexport interface SFields {\n [key: string]: SField | Array | undefined;\n $or?: Array;\n $and?: never;\n}\n\nexport interface SConditionAND {\n $and?: Array;\n $or?: never;\n}\n\nexport type SConditionKey = \"$and\" | \"$or\";\n\nexport type SCondition = SFields | SConditionAND;\n","import { Type } from \"class-transformer\";\nimport { GetManyDefaultResponse } from \"../interfaces\";\nimport { ApiProperty } from \"@nestjs/swagger\";\n\nexport class SerializeHelper {\n static createGetManyDto(dto: any, resourceName: string): any {\n class GetManyResponseDto implements GetManyDefaultResponse {\n @ApiProperty({ type: dto, isArray: true })\n @Type(() => dto)\n // @ts-ignore\n data: any[];\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n count: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n total: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n page: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n pageCount: number;\n }\n\n Object.defineProperty(GetManyResponseDto, \"name\", {\n writable: false,\n value: `GetMany${resourceName}ResponseDto`,\n });\n\n return GetManyResponseDto;\n }\n\n static createGetOneResponseDto(resourceName: string): any {\n class GetOneResponseDto {}\n\n Object.defineProperty(GetOneResponseDto, \"name\", {\n writable: false,\n value: `${resourceName}ResponseDto`,\n });\n\n return GetOneResponseDto;\n }\n}\n","export function safeRequire(path: string, loader?: () => T): T | null {\n try {\n return loader ? loader() : require(path);\n } catch (_) {\n return null;\n }\n}\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 33;\nmodule.exports = webpackEmptyContext;","import { get, isNil, isObject, isString, isUndefined } from \"lodash\";\n\nimport { stringify } from \"qs\";\n\nimport {\n CreateQueryParams,\n CustomOperators,\n ParamsNamesMap,\n RequestQueryBuilderOptions,\n} from \"../interfaces\";\n\nimport {\n QueryFields,\n QueryFilter,\n QueryFilterArr,\n QueryJoin,\n QueryJoinArr,\n QuerySort,\n QuerySortArr,\n SCondition,\n} from \"../types\";\n\nimport {\n hasValue,\n isArrayFull,\n validateCondition,\n validateFields,\n validateJoin,\n validateNumeric,\n validateSort,\n} from \"../helpers\";\n\nimport {\n REQUEST_DELIM,\n REQUEST_DELIM_STR,\n REQUEST_PREFIX_EXTRA,\n} from \"../constants\";\n\nexport class QueryBuilderService {\n constructor() {\n this.setParamNames();\n }\n\n private static _options: RequestQueryBuilderOptions = {\n delim: REQUEST_DELIM,\n delimStr: REQUEST_DELIM_STR,\n paramNamesMap: {\n fields: [\"fields\", \"select\"],\n search: \"s\",\n filter: \"filter\",\n or: \"or\",\n join: \"join\",\n sort: \"sort\",\n limit: [\"limit\", \"per_page\"],\n offset: \"offset\",\n page: \"page\",\n cache: \"cache\",\n includeDeleted: \"include_deleted\",\n extra: REQUEST_PREFIX_EXTRA,\n },\n };\n private paramNames: {\n [key in keyof ParamsNamesMap as string]: string;\n } = {};\n public queryObject: { [key: string]: any } = {};\n public queryString: string = \"\";\n\n static setOptions(options: RequestQueryBuilderOptions) {\n QueryBuilderService._options = {\n ...QueryBuilderService._options,\n ...options,\n paramNamesMap: {\n ...QueryBuilderService._options.paramNamesMap,\n ...(options.paramNamesMap ? options.paramNamesMap : {}),\n },\n };\n }\n\n static getOptions(): RequestQueryBuilderOptions {\n return QueryBuilderService._options;\n }\n\n static create(\n params?: CreateQueryParams,\n customOperators: CustomOperators = {}\n ): QueryBuilderService {\n const qb: QueryBuilderService = new QueryBuilderService();\n return isObject(params)\n ? qb.createFromParams(params, customOperators)\n : qb;\n }\n\n get options(): RequestQueryBuilderOptions {\n return QueryBuilderService._options;\n }\n\n setParamNames(): void {\n if (QueryBuilderService._options.paramNamesMap) {\n Object.keys(QueryBuilderService._options.paramNamesMap).forEach(\n (key: string): void => {\n const name = get(QueryBuilderService._options.paramNamesMap, key);\n this.paramNames[key] = isString(name)\n ? (name as string)\n : (name[0] as string);\n }\n );\n }\n }\n\n query(encode = true): string {\n if (this.queryObject[this.paramNames[\"search\"]]) {\n this.queryObject[this.paramNames[\"filter\"]] = undefined;\n this.queryObject[this.paramNames[\"or\"]] = undefined;\n }\n this.queryString = stringify(this.queryObject, { encode });\n return this.queryString;\n }\n\n select(fields?: QueryFields): this {\n if (!isNil(fields) && isArrayFull(fields)) {\n validateFields(fields);\n this.queryObject[this.paramNames[\"fields\"]] = fields.join(\n this.options.delimStr\n );\n }\n return this;\n }\n\n search(s?: SCondition) {\n if (!isNil(s) && isObject(s)) {\n this.queryObject[this.paramNames[\"search\"]] = JSON.stringify(s);\n }\n return this;\n }\n\n setFilter(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n customOperators: CustomOperators = {}\n ): this {\n this.setCondition(f, \"filter\", customOperators);\n return this;\n }\n\n setOr(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n customOperators: CustomOperators = {}\n ): this {\n this.setCondition(f, \"or\", customOperators);\n return this;\n }\n\n setJoin(\n j: QueryJoin | QueryJoinArr | Array | undefined\n ): this {\n if (!isNil(j)) {\n const param: string = this.checkQueryObjectParam(\"join\", []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(j) && !isString(j[0])\n ? (j as Array).map((o) => this.addJoin(o))\n : [this.addJoin(j as QueryJoin | QueryJoinArr)]),\n ];\n }\n return this;\n }\n\n sortBy(\n s: QuerySort | QuerySortArr | Array | undefined\n ): this {\n if (!isNil(s)) {\n const param = this.checkQueryObjectParam(\"sort\", []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(s) && !isString(s[0])\n ? (s as Array).map((o) => this.addSortBy(o))\n : [this.addSortBy(s as QuerySort | QuerySortArr)]),\n ];\n }\n return this;\n }\n\n setLimit(n: number | undefined): this {\n this.setNumeric(n, \"limit\");\n return this;\n }\n\n setOffset(n: number | undefined): this {\n this.setNumeric(n, \"offset\");\n return this;\n }\n\n setPage(n: number | undefined): this {\n this.setNumeric(n, \"page\");\n return this;\n }\n\n resetCache(): this {\n this.setNumeric(0, \"cache\");\n return this;\n }\n\n setIncludeDeleted(n: number | undefined): this {\n this.setNumeric(n, \"includeDeleted\");\n return this;\n }\n\n cond(\n f: QueryFilter | QueryFilterArr,\n cond: \"filter\" | \"or\" | \"search\" = \"search\",\n customOperators: CustomOperators = {}\n ): string {\n const filter = Array.isArray(f)\n ? { field: f[0], operator: f[1], value: f[2] }\n : f;\n validateCondition(filter, cond, customOperators);\n const d = this.options.delim;\n\n return (\n filter.field +\n d +\n filter.operator +\n (hasValue(filter.value) ? d + filter.value : \"\")\n );\n }\n\n private addJoin(j: QueryJoin | QueryJoinArr): string {\n const join: QueryJoin = Array.isArray(j)\n ? { field: j[0], select: j[1] }\n : j;\n validateJoin(join);\n const d: string | undefined = this.options.delim;\n const ds: string | undefined = this.options.delimStr;\n\n return (\n join.field +\n (isArrayFull(join.select) ? d + (join.select?.join(ds) ?? \"\") : \"\")\n );\n }\n\n private addSortBy(s: QuerySort | QuerySortArr): string {\n const sort: QuerySort = Array.isArray(s) ? { field: s[0], order: s[1] } : s;\n validateSort(sort);\n const ds: string | undefined = this.options.delimStr;\n\n return sort.field + ds + sort.order;\n }\n\n private createFromParams(\n params: CreateQueryParams,\n customOperators: CustomOperators\n ): this {\n this.select(params.fields);\n this.search(params.search);\n this.setFilter(params.filter, customOperators);\n this.setOr(params.or, customOperators);\n this.setJoin(params.join);\n this.setLimit(params.limit);\n this.setOffset(params.offset);\n this.setPage(params.page);\n this.sortBy(params.sort);\n if (params.resetCache) {\n this.resetCache();\n }\n this.setIncludeDeleted(params.includeDeleted);\n return this;\n }\n\n private checkQueryObjectParam(\n cond: keyof ParamsNamesMap,\n defaults: any\n ): string {\n const param = this.paramNames[cond];\n if (isNil(this.queryObject[param]) && !isUndefined(defaults)) {\n this.queryObject[param] = defaults;\n }\n return param;\n }\n\n private setCondition(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n cond: \"filter\" | \"or\",\n customOperators: CustomOperators\n ): void {\n if (!isNil(f)) {\n const param = this.checkQueryObjectParam(cond, []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(f) && !isString(f[0])\n ? (f as Array).map((o) =>\n this.cond(o, cond, customOperators)\n )\n : [\n this.cond(\n f as QueryFilter | QueryFilterArr,\n cond,\n customOperators\n ),\n ]),\n ];\n }\n }\n\n private setNumeric(\n n: number | undefined,\n cond: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"includeDeleted\"\n ): void {\n if (!isNil(n)) {\n validateNumeric(n, cond);\n this.queryObject[this.paramNames[cond]] = n;\n }\n }\n}\n","module.exports = require(\"qs\");","module.exports = require(\"deepmerge\");","import {\n get,\n has,\n isDate,\n isEmpty,\n isNil,\n isObject,\n isString,\n keys,\n set,\n} from \"lodash\";\n\nimport { RequestQueryException } from \"../exceptions\";\n\nimport {\n CustomOperators,\n ParamOption,\n ParamsNamesMap,\n ParamsOptions,\n ParsedRequestParams,\n RequestQueryBuilderOptions,\n} from \"../interfaces\";\n\nimport {\n ComparisonOperator,\n CondOperator,\n ObjectLiteral,\n QueryExtra,\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n SConditionAND,\n SFields,\n} from \"../types\";\n\nimport { ClassTransformOptions } from \"class-transformer\";\n\nimport { QueryBuilderService } from \"./query-builder.service\";\nimport {\n hasValue,\n isArrayFull,\n isDateString,\n isStringFull,\n validateCondition,\n validateJoin,\n validateNumeric,\n validateParamOption,\n validateSort,\n validateUUID,\n} from \"../helpers\";\n\nimport { REQUEST_PREFIX_EXTRA } from \"../constants\";\n\nexport class QueryParserService implements ParsedRequestParams {\n public fields: QueryFields = [];\n public paramsFilter: (QueryFilter | undefined)[] = [];\n public authPersist: ObjectLiteral | undefined = undefined;\n\n public classTransformOptions: ClassTransformOptions | undefined = undefined;\n\n public search: SCondition | undefined = undefined;\n public filter: QueryFilter[] = [];\n public or: QueryFilter[] = [];\n public join: QueryJoin[] = [];\n public sort: QuerySort[] = [];\n public limit: number | undefined;\n public offset: number | undefined;\n public page: number | undefined;\n public cache: number | undefined;\n public includeDeleted: number | undefined;\n public extra: QueryExtra = {};\n\n private _params: any;\n private _query: any;\n private _paramNames: string[] = [];\n private _paramsOptions: ParamsOptions = {};\n\n private get _options(): RequestQueryBuilderOptions {\n return QueryBuilderService.getOptions();\n }\n\n static create(): QueryParserService {\n return new QueryParserService();\n }\n\n getParsed(): ParsedRequestParams {\n return {\n fields: this.fields,\n paramsFilter: this.paramsFilter,\n authPersist: this.authPersist,\n classTransformOptions: this.classTransformOptions,\n search: this.search,\n filter: this.filter,\n or: this.or,\n join: this.join,\n sort: this.sort,\n limit: this.limit,\n offset: this.offset,\n page: this.page,\n cache: this.cache,\n includeDeleted: this.includeDeleted,\n extra: this.extra,\n };\n }\n\n setAuthPersist(persist: ObjectLiteral = {}) {\n this.authPersist = persist || /* istanbul ignore next */ {};\n }\n\n setClassTransformOptions(options: ClassTransformOptions = {}) {\n this.classTransformOptions = options || /* istanbul ignore next */ {};\n }\n\n convertFilterToSearch(filter: QueryFilter): SFields | SConditionAND {\n const isEmptyValue = {\n isnull: true,\n notnull: true,\n };\n\n return filter\n ? {\n [filter.field]: {\n [filter.operator]: has(isEmptyValue, filter.operator)\n ? get(isEmptyValue, filter.operator)\n : filter.value,\n },\n }\n : /* istanbul ignore next */ {};\n }\n\n parseQuery(query: any, customOperators: CustomOperators = {}): this {\n if (isObject(query)) {\n const paramNames: string[] = keys(query);\n\n if (!isEmpty(paramNames)) {\n this._query = query;\n this._paramNames = paramNames;\n const searchData = this._query[this.getParamNames(\"search\")[0]];\n this.search = this.parseSearchQueryParam(searchData) as any;\n if (isNil(this.search)) {\n this.filter = this.parseQueryParam(\n \"filter\",\n this.conditionParser.bind(this, \"filter\", customOperators)\n );\n this.or = this.parseQueryParam(\n \"or\",\n this.conditionParser.bind(this, \"or\", customOperators)\n );\n }\n this.fields =\n this.parseQueryParam(\"fields\", this.fieldsParser.bind(this))[0] || [];\n this.join = this.parseQueryParam(\"join\", this.joinParser.bind(this));\n this.sort = this.parseQueryParam(\"sort\", this.sortParser.bind(this));\n this.limit = this.parseQueryParam(\n \"limit\",\n this.numericParser.bind(this, \"limit\")\n )[0];\n this.offset = this.parseQueryParam(\n \"offset\",\n this.numericParser.bind(this, \"offset\")\n )[0];\n this.page = this.parseQueryParam(\n \"page\",\n this.numericParser.bind(this, \"page\")\n )[0];\n this.cache = this.parseQueryParam(\n \"cache\",\n this.numericParser.bind(this, \"cache\")\n )[0];\n this.includeDeleted = this.parseQueryParam(\n \"includeDeleted\",\n this.numericParser.bind(this, \"includeDeleted\")\n )[0];\n\n this.extra = this.parseExtraFromQueryParam();\n }\n }\n\n return this;\n }\n\n parseParams(params: any, options: ParamsOptions): this {\n if (isObject(params)) {\n const paramNames: string[] = keys(params);\n\n if (!isNil(paramNames)) {\n this._params = params;\n this._paramsOptions = options;\n this.paramsFilter = paramNames\n .map((name: string) => this.paramParser(name))\n .filter((filter: QueryFilter | undefined) => filter);\n }\n }\n\n return this;\n }\n\n private getParamNames(type: keyof ParamsNamesMap): string[] {\n return this._paramNames.filter((p: string): boolean => {\n const name: string | string[] = get(\n this._options.paramNamesMap,\n type,\n \"\"\n );\n return isString(name)\n ? name === p\n : (name as string[]).some((m: string): boolean => m === p);\n });\n }\n\n private getParamValues(value: string | string[], parser: Function): any[] {\n if (isStringFull(value)) {\n return [parser.call(this, value)];\n }\n\n if (isArrayFull(value)) {\n return (value as string[]).map((val: string) => parser(val));\n }\n\n return [];\n }\n\n private parseQueryParam(type: keyof ParamsNamesMap, parser: Function): any[] {\n const param: string[] = this.getParamNames(type);\n\n if (isArrayFull(param)) {\n // @ts-ignore\n return param.reduce(\n // @ts-ignore\n (a: [], name: string): string[] => [\n ...a,\n ...this.getParamValues(this._query[name], parser),\n ],\n []\n );\n }\n\n return [];\n }\n\n private parseExtraFromQueryParam(): QueryExtra {\n const extraParam: string | string[] | [] = get(\n this._options.paramNamesMap,\n \"extra\",\n []\n );\n const params: string[] = Array.isArray(extraParam)\n ? extraParam\n : [extraParam];\n const extraKeys: {} = keys(this._query || {})\n .filter((k: string) => params.find((p: string) => k?.startsWith(p)))\n .reduce((o: {}, k: string) => {\n const key: string = k.replace(REQUEST_PREFIX_EXTRA, \"\");\n this.parseDotChainToObject(this._query[k], key, o);\n return o;\n }, {});\n return keys(extraKeys).length > 0 ? extraKeys : undefined;\n }\n\n /**\n * Build an object from data and composite key.\n *\n * @param data to used on parse workflow\n * @param key composite key as 'foo.bar.hero'\n * @param result object with parsed \"data\" and \"key\" structure\n * @private\n */\n private parseDotChainToObject(data: any, key: string, result: {} = {}): void {\n if (key.includes(\".\")) {\n const keys: string[] = key.split(\".\");\n const firstKey: string | undefined = keys.shift();\n set(result, firstKey as string, {});\n this.parseDotChainToObject(\n data,\n keys.join(\".\"),\n get(result, firstKey as string)\n );\n } else {\n set(result, key, this.parseValue(data));\n }\n }\n\n private parseValue(val: any) {\n try {\n const parsed = JSON.parse(val);\n\n // throw new Error('Don\\'t support object now')\n if (\n (!isDate(parsed) && isObject(parsed)) ||\n // JS cannot handle big numbers. Leave it as a string to prevent data loss\n (typeof parsed === \"number\" &&\n parsed.toLocaleString(\"fullwide\", { useGrouping: false }) !== val)\n ) {\n return val;\n }\n return parsed;\n } catch (_) {\n if (isDateString(val)) {\n return new Date(val);\n }\n return val;\n }\n }\n\n private parseValues(values: any) {\n return isArrayFull(values)\n ? values.map((v: any) => this.parseValue(v))\n : this.parseValue(values);\n }\n\n private parseSearchQueryParam(d: any): SCondition | undefined {\n if (isNil(d)) {\n return undefined;\n }\n try {\n const data = JSON.parse(d);\n\n if (!isObject(data)) {\n throw new Error();\n }\n\n return data;\n } catch (_) {\n throw new RequestQueryException(\"Invalid search param. JSON expected\");\n }\n }\n\n private fieldsParser(data: string): QueryFields {\n // @ts-ignore\n return data.split(this._options.delimStr);\n }\n\n private conditionParser(\n cond: \"filter\" | \"or\" | \"search\",\n customOperators: CustomOperators,\n data: string\n ): QueryFilter {\n const isArrayValue: string[] = [\n CondOperator.IN as string,\n CondOperator.NOT_IN as string,\n CondOperator.BETWEEN as string,\n CondOperator.IN_LOW as string,\n CondOperator.NOT_IN_LOW as string,\n ].concat(\n Object.keys(customOperators).filter(\n (op: string) => customOperators[op].isArray\n )\n );\n const isEmptyValue: string[] = [\n CondOperator.IS_NULL as string,\n CondOperator.NOT_NULL as string,\n ];\n // @ts-ignore\n const param: string[] = data.split(this._options.delim);\n const field: string = param[0];\n const operator: string = param[1] as ComparisonOperator;\n let value: string = param[2] || \"\";\n\n if (isArrayValue.some((name: string): boolean => name === operator)) {\n // @ts-ignore\n value = value.split(this._options.delimStr) as any;\n }\n\n value = this.parseValues(value);\n\n if (\n !isEmptyValue.some((name: string): boolean => name === operator) &&\n !hasValue(value)\n ) {\n throw new RequestQueryException(`Invalid ${cond} value`);\n }\n\n const condition: QueryFilter = { field, operator, value };\n validateCondition(condition, cond, customOperators);\n\n return condition;\n }\n\n private joinParser(data: string): QueryJoin {\n // @ts-ignore\n const param: string[] = data.split(this._options.delim);\n\n const join: QueryJoin = {\n field: param[0],\n select: isStringFull(param[1])\n ? // @ts-ignore\n param[1].split(this._options.delimStr)\n : undefined,\n };\n validateJoin(join);\n\n return join;\n }\n\n private sortParser(data: string): QuerySort {\n const param: string[] = data.split(this._options.delimStr);\n const sort: QuerySort = {\n field: param[0],\n order: param[1] as any,\n };\n validateSort(sort);\n\n return sort;\n }\n\n private numericParser(\n num: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"includeDeleted\",\n data: string\n ): number {\n const val = this.parseValue(data);\n validateNumeric(val, num);\n\n return val;\n }\n\n private paramParser(name: string): QueryFilter | undefined {\n validateParamOption(this._paramsOptions, name);\n const option: ParamOption = this._paramsOptions[name];\n\n if (option.disabled) {\n return undefined;\n }\n\n let value = this._params[name];\n\n switch (option.type) {\n case \"number\":\n value = this.parseValue(value);\n validateNumeric(value, `param ${name}`);\n break;\n case \"uuid\":\n validateUUID(value, name);\n break;\n default:\n break;\n }\n\n return { field: option.field as string, operator: \"$eq\", value };\n }\n}\n","import { RequestMethod } from \"@nestjs/common\";\nimport { RouteParamtypes } from \"@nestjs/common/enums/route-paramtypes.enum\";\nimport { get, isEqual, isNil, isUndefined, keys } from \"lodash\";\nimport {\n createBulkDto,\n getValidationPipe,\n isArrayFull,\n isFalse,\n isIn,\n isObjectFull,\n R,\n SerializeHelper,\n} from \"../helpers\";\n\nimport { CrudActions, CrudValidationGroups } from \"../enums\";\nimport {\n CrudRequestInterceptor,\n CrudResponseInterceptor,\n} from \"../interceptors\";\n\nimport {\n AuthOptions,\n BaseRoute,\n CrudOptions,\n CrudRequest,\n MergedCrudOptions,\n OperatorsOptions,\n ParamsOptions,\n QueryOptions,\n RoutesOptions,\n} from \"../interfaces\";\nimport { CrudConfigService } from \"../services\";\nimport { BaseRouteName } from \"../types\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst deepmerge = require('deepmerge');\n\nexport class RoutesFactoryService {\n protected options: MergedCrudOptions;\n\n constructor(protected target: any, options: CrudOptions) {\n this.options = options;\n this.create();\n }\n\n /* istanbul ignore next */\n static create(target: any, options: CrudOptions): RoutesFactoryService {\n return new RoutesFactoryService(target, options);\n }\n\n protected get targetProto(): any {\n return this.target.prototype;\n }\n\n protected get modelName(): string {\n return this.options.model.type.name;\n }\n\n protected get modelType(): any {\n return this.options.model.type;\n }\n\n protected get actionsMap(): { [key in BaseRouteName]: CrudActions } {\n return {\n getManyBase: CrudActions.ReadAll,\n getOneBase: CrudActions.ReadOne,\n createManyBase: CrudActions.CreateMany,\n createOneBase: CrudActions.CreateOne,\n updateOneBase: CrudActions.UpdateOne,\n deleteOneBase: CrudActions.DeleteOne,\n replaceOneBase: CrudActions.ReplaceOne,\n recoverOneBase: CrudActions.RecoverOne,\n };\n }\n\n protected create(): void {\n const routesSchema: BaseRoute[] = this.getRoutesSchema();\n this.mergeOptions();\n this.createRoutes(routesSchema);\n this.overrideRoutes(routesSchema);\n this.enableRoutes(routesSchema);\n }\n\n protected mergeOptions(): void {\n // merge auth config\n const authOptions: AuthOptions = R.getCrudAuthOptions(this.target);\n this.options.auth = isObjectFull(authOptions) ? authOptions : {};\n if (isUndefined(this.options.auth.property)) {\n this.options.auth.property = CrudConfigService.config?.auth?.property;\n }\n if (isUndefined(this.options.auth.groups)) {\n this.options.auth.groups = CrudConfigService.config?.auth?.groups;\n }\n if (isUndefined(this.options.auth.classTransformOptions)) {\n // @ts-ignore\n this.options.auth.classTransformOptions =\n CrudConfigService.config.auth?.classTransformOptions;\n }\n\n // merge query config\n const query: QueryOptions | {} = isObjectFull(this.options.query)\n ? this.options.query\n : {};\n\n this.options.query = { ...CrudConfigService.config.query, ...query };\n\n // merge routes config\n const routes: RoutesOptions | {} = isObjectFull(this.options.routes)\n ? this.options.routes\n : {};\n this.options.routes = deepmerge(\n CrudConfigService.config.routes || {},\n routes,\n {\n // @ts-ignore\n arrayMerge: (a, b, c) => b,\n }\n );\n\n // merge operators config\n const operators: OperatorsOptions | {} = isObjectFull(\n this.options.operators\n )\n ? this.options.operators\n : {};\n this.options.operators = (\n deepmerge(\n CrudConfigService.config?.operators,\n operators\n )\n );\n\n // set params\n this.options.params = isObjectFull(this.options.params)\n ? this.options.params\n : isObjectFull(CrudConfigService.config.params)\n ? CrudConfigService.config.params\n : {};\n const hasPrimary: boolean = this.getPrimaryParams().length > 0;\n if (!hasPrimary) {\n // @ts-ignore\n this.options.params[\"id\"] = {\n field: \"id\",\n type: \"number\",\n primary: true,\n };\n }\n\n // set dto\n if (!isObjectFull(this.options.dto)) {\n this.options.dto = {};\n }\n\n // set serialize\n const serialize = isObjectFull(this.options.serialize)\n ? this.options.serialize\n : {};\n this.options.serialize = {\n ...CrudConfigService.config.serialize,\n ...serialize,\n };\n this.options.serialize.get = isFalse(this.options.serialize.get)\n ? false\n : this.options.serialize.get || this.modelType;\n this.options.serialize.getMany = isFalse(this.options.serialize.getMany)\n ? false\n : this.options.serialize.getMany\n ? this.options.serialize.getMany\n : isFalse(this.options.serialize.get)\n ? false\n : SerializeHelper.createGetManyDto(\n this.options.serialize.get,\n this.modelName\n );\n this.options.serialize.create = isFalse(this.options.serialize.create)\n ? false\n : this.options.serialize.create || this.modelType;\n this.options.serialize.update = isFalse(this.options.serialize.update)\n ? false\n : this.options.serialize.update || this.modelType;\n this.options.serialize.replace = isFalse(this.options.serialize.replace)\n ? false\n : this.options.serialize.replace || this.modelType;\n this.options.serialize.delete =\n isFalse(this.options.serialize.delete) ||\n !this.options.routes?.deleteOneBase?.returnDeleted\n ? false\n : this.options.serialize.delete || this.modelType;\n\n R.setCrudOptions(this.options, this.target);\n }\n\n protected getRoutesSchema(): BaseRoute[] {\n return [\n {\n name: \"getOneBase\",\n path: \"/\",\n method: RequestMethod.GET,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"getManyBase\",\n path: \"/\",\n method: RequestMethod.GET,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"createOneBase\",\n path: \"/\",\n method: RequestMethod.POST,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"createManyBase\",\n path: \"/bulk\",\n method: RequestMethod.POST,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"updateOneBase\",\n path: \"/\",\n method: RequestMethod.PATCH,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"replaceOneBase\",\n path: \"/\",\n method: RequestMethod.PUT,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"deleteOneBase\",\n path: \"/\",\n method: RequestMethod.DELETE,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"recoverOneBase\",\n path: \"/recover\",\n method: RequestMethod.PATCH,\n enable: false,\n override: false,\n withParams: true,\n },\n ];\n }\n\n protected getManyBase(name: BaseRouteName) {\n this.targetProto[name] = function getManyBase(req: CrudRequest) {\n return this.service.getMany(req);\n };\n }\n\n protected getOneBase(name: BaseRouteName) {\n this.targetProto[name] = function getOneBase(req: CrudRequest) {\n return this.service.getOne(req);\n };\n }\n\n protected createOneBase(name: BaseRouteName) {\n this.targetProto[name] = function createOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.createOne(req, dto);\n };\n }\n\n protected createManyBase(name: BaseRouteName) {\n this.targetProto[name] = function createManyBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.createMany(req, dto);\n };\n }\n\n protected updateOneBase(name: BaseRouteName) {\n this.targetProto[name] = function updateOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.updateOne(req, dto);\n };\n }\n\n protected replaceOneBase(name: BaseRouteName) {\n this.targetProto[name] = function replaceOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.replaceOne(req, dto);\n };\n }\n\n protected deleteOneBase(name: BaseRouteName) {\n this.targetProto[name] = function deleteOneBase(req: CrudRequest) {\n return this.service.deleteOne(req);\n };\n }\n\n protected recoverOneBase(name: BaseRouteName) {\n this.targetProto[name] = function recoverOneBase(req: CrudRequest) {\n return this.service.recoverOne(req);\n };\n }\n\n protected canCreateRoute(name: BaseRouteName) {\n const only: BaseRouteName[] | undefined = this.options.routes?.only;\n const exclude: BaseRouteName[] | undefined = this.options.routes?.exclude;\n\n // include recover route only for models with soft delete option\n if (name === \"recoverOneBase\" && this.options.query?.softDelete !== true) {\n return false;\n }\n\n if (isArrayFull(only)) {\n // @ts-ignore\n return only.some((route: BaseRouteName): boolean => route === name);\n }\n\n if (isArrayFull(exclude)) {\n // @ts-ignore\n return !exclude.some((route: BaseRouteName): boolean => route === name);\n }\n\n return true;\n }\n\n protected createRoutes(routesSchema: BaseRoute[]) {\n const primaryParams: string[] = this.getPrimaryParams().filter(\n (param: string) => !this.options.params?.[param]?.disabled\n );\n\n routesSchema.forEach((route) => {\n if (this.canCreateRoute(route.name)) {\n // create base method\n this[route.name](route.name);\n route.enable = true;\n // set metadata\n this.setBaseRouteMeta(route.name);\n }\n\n if (route.withParams && primaryParams.length > 0) {\n route.path =\n route.path !== \"/\"\n ? `${primaryParams\n .map((param: string): string => `/:${param}`)\n .join(\"\")}${route.path}`\n : primaryParams\n .map((param: string): string => `/:${param}`)\n .join(\"\");\n }\n });\n }\n\n protected overrideRoutes(routesSchema: BaseRoute[]): void {\n Object.getOwnPropertyNames(this.targetProto).forEach(\n (name: string): void => {\n const override: BaseRouteName = R.getOverrideRoute(\n this.targetProto[name]\n );\n const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) =>\n isEqual(r.name, override)\n );\n\n if (override && route && route.enable) {\n // get metadata\n const interceptors: any[] = R.getInterceptors(this.targetProto[name]);\n const baseInterceptors: any[] = R.getInterceptors(\n this.targetProto[override]\n );\n const baseAction: CrudActions = R.getAction(\n this.targetProto[override]\n );\n // set metadata\n R.setInterceptors(\n [...baseInterceptors, ...interceptors],\n this.targetProto[name]\n );\n R.setAction(baseAction, this.targetProto[name]);\n this.overrideParsedBodyDecorator(override, name);\n // enable route\n R.setRoute(route, this.targetProto[name]);\n route.override = true;\n }\n }\n );\n }\n\n protected enableRoutes(routesSchema: BaseRoute[]) {\n routesSchema.forEach((route) => {\n if (!route.override && route.enable) {\n R.setRoute(route, this.targetProto[route.name]);\n }\n });\n }\n\n protected overrideParsedBodyDecorator(override: BaseRouteName, name: string) {\n const allowed: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"updateOneBase\",\n \"replaceOneBase\",\n ] as BaseRouteName[];\n const withBody: Boolean = isIn(override, allowed);\n const parsedBody = R.getParsedBody(this.targetProto[name]);\n\n if (withBody && parsedBody) {\n const baseKey: string = `${RouteParamtypes.BODY}:1`;\n const key: string = `${RouteParamtypes.BODY}:${parsedBody.index}`;\n const baseRouteArgs = R.getRouteArgs(this.target, override);\n const routeArgs = R.getRouteArgs(this.target, name);\n const baseBodyArg = baseRouteArgs[baseKey];\n R.setRouteArgs(\n {\n ...routeArgs,\n [key]: {\n ...baseBodyArg,\n index: parsedBody.index,\n },\n },\n this.target,\n name\n );\n\n /* istanbul ignore else */\n if (isEqual(override, \"createManyBase\")) {\n const paramTypes: any[] = R.getRouteArgsTypes(this.targetProto, name);\n const metatype = paramTypes[parsedBody.index];\n const types = [String, Boolean, Number, Array, Object];\n const toCopy: boolean = isIn(metatype, types) || isNil(metatype);\n\n if (toCopy) {\n const baseParamTypes: any[] = R.getRouteArgsTypes(\n this.targetProto,\n override\n );\n const baseMetatype = baseParamTypes[1];\n paramTypes.splice(parsedBody.index, 1, baseMetatype);\n R.setRouteArgsTypes(paramTypes, this.targetProto, name);\n }\n }\n }\n }\n\n protected getPrimaryParams(): string[] {\n return keys(this.options.params).filter(\n (param: string) =>\n this.options.params?.[param] && this.options.params[param].primary\n );\n }\n\n protected setBaseRouteMeta(name: BaseRouteName) {\n this.setRouteArgs(name);\n this.setRouteArgsTypes(name);\n this.setInterceptors(name);\n this.setAction(name);\n this.setDecorators(name);\n }\n\n protected setRouteArgs(name: BaseRouteName) {\n let rest = {};\n const routes: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"updateOneBase\",\n \"replaceOneBase\",\n ];\n\n if (isIn(name, routes)) {\n const action: string = this.routeNameAction(name);\n const hasDto: boolean = !isNil(get(this.options, `dto.${action}`));\n const { UPDATE, CREATE } = CrudValidationGroups;\n const groupEnum: CrudValidationGroups = isIn(name, [\n \"updateOneBase\",\n \"replaceOneBase\",\n ])\n ? UPDATE\n : CREATE;\n const group: CrudValidationGroups | undefined = !hasDto\n ? groupEnum\n : undefined;\n\n rest = R.setBodyArg(1, [getValidationPipe(this.options, group)]);\n }\n\n R.setRouteArgs({ ...R.setParsedRequestArg(0), ...rest }, this.target, name);\n }\n\n protected setRouteArgsTypes(name: BaseRouteName): void {\n switch (true) {\n case isEqual(name, \"createManyBase\"):\n const bulkDto = createBulkDto(this.options);\n R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name);\n break;\n case isIn(name, [\"createOneBase\", \"updateOneBase\", \"replaceOneBase\"]):\n const action: string = this.routeNameAction(name);\n const dto = get(this.options, `dto.${action}`, this.modelType);\n R.setRouteArgsTypes([Object, dto], this.targetProto, name);\n break;\n default:\n R.setRouteArgsTypes([Object], this.targetProto, name);\n }\n }\n\n protected setInterceptors(name: BaseRouteName): void {\n const interceptors = get(this.options, `routes.${name}.interceptors`, []);\n R.setInterceptors(\n [\n CrudRequestInterceptor,\n CrudResponseInterceptor,\n ...(isArrayFull(interceptors) ? interceptors : []),\n ],\n this.targetProto[name]\n );\n }\n\n protected setDecorators(name: BaseRouteName): void {\n const decorators = get(this.options, `routes.${name}.decorators`, []);\n R.setDecorators(\n isArrayFull(decorators) ? decorators : [],\n this.targetProto,\n name\n );\n }\n\n protected setAction(name: BaseRouteName): void {\n R.setAction(this.actionsMap[name], this.targetProto[name]);\n }\n\n protected routeNameAction(name: BaseRouteName): string {\n return name.split(\"OneBase\")[0] || name.split(\"ManyBase\")[0];\n }\n}\n","export * from \"./crud-request.interceptor\";\nexport * from \"./crud-response.interceptor\";\n","import {\n BadRequestException,\n CallHandler,\n ExecutionContext,\n Injectable,\n NestInterceptor,\n} from \"@nestjs/common\";\nimport { QueryFilter, QueryFilterFunction, SCondition } from \"../types\";\nimport { RequestQueryException } from \"../exceptions\";\nimport { QueryParserService } from \"../services\";\nimport { isArrayFull } from \"../helpers\";\nimport { isFunction, isNil } from \"lodash\";\nimport { ClassTransformOptions } from \"class-transformer\";\n\nimport { PARSED_CRUD_REQUEST_KEY } from \"../constants\";\nimport { CrudActions } from \"../enums\";\nimport { CrudRequest, MergedCrudOptions, ParamsOptions } from \"../interfaces\";\nimport { CrudBaseInterceptor } from \"./crud-base.interceptor\";\nimport { Observable } from \"rxjs\";\n\n@Injectable()\nexport class CrudRequestInterceptor\n extends CrudBaseInterceptor\n implements NestInterceptor\n{\n intercept(context: ExecutionContext, next: CallHandler): Observable {\n const req = context.switchToHttp().getRequest();\n\n try {\n /* istanbul ignore else */\n if (!req[PARSED_CRUD_REQUEST_KEY]) {\n const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context);\n const parser = QueryParserService.create();\n\n parser.parseQuery(req.query, crudOptions.operators?.custom);\n\n let auth = null;\n if (!isNil(ctrlOptions)) {\n const search = this.getSearch(\n parser,\n crudOptions,\n action,\n req.params\n );\n auth = this.getAuth(parser, crudOptions, req);\n parser.search = auth.or\n ? { $or: [auth.or, { $and: search }] }\n : { $and: [auth.filter, ...search] };\n } else {\n parser.search = { $and: this.getSearch(parser, crudOptions, action) };\n }\n\n req[PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(\n parser,\n crudOptions,\n auth?.auth\n );\n }\n\n return next.handle();\n } catch (error) {\n throw error instanceof RequestQueryException\n ? new BadRequestException(error.message)\n : error;\n }\n }\n\n getCrudRequest(\n parser: QueryParserService,\n crudOptions: Partial,\n auth?: any\n ): CrudRequest {\n const parsed = parser.getParsed();\n const { query, routes, params, operators } = crudOptions;\n return {\n parsed,\n options: {\n query,\n routes,\n params,\n operators,\n },\n auth,\n };\n }\n\n getSearch(\n parser: QueryParserService,\n crudOptions: Partial,\n action: CrudActions,\n params?: any\n ): SCondition[] {\n // params condition\n const paramsSearch = this.getParamsSearch(parser, crudOptions, params);\n\n // if `CrudOptions.query.filter` is a function then return transformed query search conditions\n if (isFunction(crudOptions.query?.filter)) {\n const filterCond: SCondition =\n (crudOptions.query?.filter as QueryFilterFunction)(\n parser.search,\n action === CrudActions.ReadAll\n ) || {};\n\n return [...paramsSearch, filterCond];\n }\n\n // if `CrudOptions.query.filter` is array or search condition type\n const optionsFilter = isArrayFull(crudOptions.query?.filter)\n ? (crudOptions.query?.filter as QueryFilter[]).map(\n parser.convertFilterToSearch\n )\n : [(crudOptions.query?.filter as SCondition) || {}];\n\n let search: SCondition[] = [];\n\n if (parser.search) {\n search = [parser.search];\n } else if (parser.filter.length > 0 && parser.or.length > 0) {\n search =\n parser.filter.length === 1 && parser.or.length === 1\n ? [\n {\n $or: [\n parser.convertFilterToSearch(parser.filter[0]),\n parser.convertFilterToSearch(parser.or[0]),\n ],\n },\n ]\n : [\n {\n $or: [\n { $and: parser.filter.map(parser.convertFilterToSearch) },\n { $and: parser.or.map(parser.convertFilterToSearch) },\n ],\n },\n ];\n } else if (parser.filter.length > 0) {\n search = parser.filter.map(parser.convertFilterToSearch);\n } else {\n if (parser.or.length > 0) {\n search =\n parser.or.length === 1\n ? [parser.convertFilterToSearch(parser.or[0])]\n : [\n {\n $or: parser.or.map(parser.convertFilterToSearch),\n },\n ];\n }\n }\n\n return [...paramsSearch, ...optionsFilter, ...search];\n }\n\n getParamsSearch(\n parser: QueryParserService,\n crudOptions: Partial,\n params?: any\n ): SCondition[] {\n if (params) {\n parser.parseParams(params, crudOptions.params);\n\n return isArrayFull(parser.paramsFilter)\n ? // @ts-ignore\n parser.paramsFilter.map(parser.convertFilterToSearch)\n : [];\n }\n\n return [];\n }\n\n getAuth(\n parser: QueryParserService,\n crudOptions: Partial,\n req: any\n ): { filter?: any; or?: any; auth?: any } {\n const auth: any = {};\n\n /* istanbul ignore else */\n if (crudOptions.auth) {\n const userOrRequest = crudOptions.auth.property\n ? req[crudOptions.auth.property]\n : req;\n\n if (crudOptions.auth.property && req[crudOptions.auth.property]) {\n if (typeof req[crudOptions.auth.property] === \"object\") {\n if (Object.keys(req[crudOptions.auth.property]).length > 0) {\n auth.auth = req[crudOptions.auth.property];\n }\n } else {\n auth.auth = req[crudOptions.auth.property];\n }\n }\n\n if (isFunction(crudOptions.auth.or)) {\n auth.or = crudOptions.auth.or(userOrRequest);\n }\n\n if (isFunction(crudOptions.auth.filter) && !auth.or) {\n auth.filter = crudOptions.auth.filter(userOrRequest) || {};\n }\n\n if (isFunction(crudOptions.auth.persist)) {\n parser.setAuthPersist(crudOptions.auth.persist(userOrRequest));\n }\n\n const options: ClassTransformOptions = {};\n if (isFunction(crudOptions.auth.classTransformOptions)) {\n Object.assign(\n options,\n crudOptions.auth.classTransformOptions(userOrRequest)\n );\n }\n\n if (isFunction(crudOptions.auth.groups)) {\n options.groups = crudOptions.auth.groups(userOrRequest);\n }\n parser.setClassTransformOptions(options);\n }\n\n return auth;\n }\n}\n","import { ExecutionContext, Type } from \"@nestjs/common\";\nimport { R } from \"../helpers\";\nimport { CrudActions } from \"../enums\";\nimport { MergedCrudOptions } from \"../interfaces\";\n\nexport class CrudBaseInterceptor {\n protected getCrudInfo(context: ExecutionContext): {\n ctrlOptions: MergedCrudOptions;\n crudOptions: Partial;\n action: CrudActions;\n } {\n const ctrl: Type = context.getClass();\n const handler = context.getHandler();\n const ctrlOptions: MergedCrudOptions = R.getCrudOptions(ctrl);\n const crudOptions = ctrlOptions\n ? ctrlOptions\n : {\n query: {},\n routes: {},\n params: {},\n operators: {},\n };\n const action: CrudActions = R.getAction(handler);\n\n return { ctrlOptions, crudOptions, action };\n }\n}\n","import {\n CallHandler,\n ExecutionContext,\n Injectable,\n NestInterceptor,\n} from \"@nestjs/common\";\nimport { isPlainObject, isEmpty, isFunction } from \"lodash\";\nimport { isFalse } from \"../helpers\";\nimport { ClassTransformOptions, instanceToPlain } from \"class-transformer\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { CrudActions } from \"../enums\";\nimport { MergedCrudOptions, SerializeOptions } from \"../interfaces\";\nimport { CrudBaseInterceptor } from \"./crud-base.interceptor\";\nimport { isObject } from \"class-validator\";\n\nconst actionToDtoNameMap: {\n [key in CrudActions]: keyof SerializeOptions;\n} = {\n [CrudActions.ReadAll]: \"getMany\",\n [CrudActions.ReadOne]: \"get\",\n [CrudActions.CreateMany]: \"createMany\",\n [CrudActions.CreateOne]: \"create\",\n [CrudActions.UpdateOne]: \"update\",\n [CrudActions.ReplaceOne]: \"replace\",\n [CrudActions.DeleteAll]: \"delete\",\n [CrudActions.DeleteOne]: \"delete\",\n [CrudActions.RecoverOne]: \"recover\",\n};\n\n@Injectable()\nexport class CrudResponseInterceptor\n extends CrudBaseInterceptor\n implements NestInterceptor\n{\n intercept(context: ExecutionContext, next: CallHandler): Observable {\n return next.handle().pipe(map((data) => this.serialize(context, data)));\n }\n\n protected transform(dto: any, data: any, options: ClassTransformOptions) {\n if (!isObject(data) || isFalse(dto)) {\n return data;\n }\n\n if (!isFunction(dto)) {\n return data.constructor !== Object\n ? instanceToPlain(data, options)\n : data;\n }\n\n return data instanceof dto\n ? instanceToPlain(data, options)\n : /* @ts-ignore */\n instanceToPlain(Object.assign(new dto(), data), options);\n }\n\n protected serialize(context: ExecutionContext, data: any): any {\n const req = context.switchToHttp().getRequest();\n const { crudOptions, action } = this.getCrudInfo(context);\n const { serialize } = >crudOptions;\n /* @ts-ignore */\n const dto = serialize[actionToDtoNameMap[action]];\n const isArray: boolean = Array.isArray(data);\n\n const options: ClassTransformOptions = {};\n\n if (isFunction(crudOptions.auth?.classTransformOptions)) {\n const userOrRequest = crudOptions.auth?.property\n ? req[crudOptions.auth.property]\n : req;\n Object.assign(\n options,\n crudOptions.auth?.classTransformOptions(userOrRequest)\n );\n }\n\n if (isFunction(crudOptions.auth?.groups)) {\n const userOrRequest = crudOptions.auth?.property\n ? req[crudOptions.auth.property]\n : req;\n options.groups = crudOptions.auth?.groups(userOrRequest);\n }\n\n switch (action) {\n case CrudActions.ReadAll:\n return isArray\n ? (data as any[]).map((item) =>\n this.transform(serialize?.get, item, options)\n )\n : this.transform(dto, data, options);\n case CrudActions.CreateMany:\n return isArray\n ? (data as any[]).map((item) => this.transform(dto, item, options))\n : this.transform(dto, data, options);\n default:\n return this.transform(dto, data, options);\n }\n }\n}\n","module.exports = require(\"rxjs/operators\");","\n\nimport { oO } from \"@zmotivat0r/o0\";\nimport { plainToInstance } from \"class-transformer\";\nimport { isEmpty, isNil, isNull, isUndefined } from \"lodash\";\nimport {\n BaseEntity,\n Brackets,\n ConnectionOptions,\n DeepPartial,\n EntityMetadata,\n ObjectLiteral,\n Repository,\n SelectQueryBuilder,\n WhereExpressionBuilder,\n} from \"typeorm\";\nimport { ColumnMetadata } from \"typeorm/metadata/ColumnMetadata\";\nimport { RelationMetadata } from \"typeorm/metadata/RelationMetadata\";\n\nimport { isArrayFull, isObject } from \"../helpers\";\nimport {\n CreateManyDto,\n CrudRequest,\n CrudRequestOptions,\n CustomOperators,\n DeleteOneRouteOptions,\n GetManyDefaultResponse,\n JoinOption,\n JoinOptions,\n ParsedRequestParams,\n QueryOptions,\n ReplaceOneRouteOptions,\n UpdateOneRouteOptions,\n} from \"../interfaces\";\nimport {\n ClassType,\n ComparisonOperator,\n CondOperator,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n SConditionKey,\n} from \"../types\";\n\nimport { CrudService } from \"./abstract-crud.service\";\n\ninterface IAllowedRelation {\n alias?: string;\n nested: boolean;\n name: string;\n path: string;\n columns: string[];\n primaryColumns: string[];\n allowedColumns: string[];\n}\n\nexport class TypeOrmCrudService extends CrudService<\n T,\n DeepPartial\n> {\n protected dbName: ConnectionOptions[\"type\"];\n protected entityColumns: string[] | undefined;\n protected entityPrimaryColumns: string[] | undefined;\n protected entityHasDeleteColumn = false;\n protected entityColumnsHash: ObjectLiteral = {};\n protected entityRelationsHash: Map = new Map();\n protected sqlInjectionRegEx: RegExp[] = [\n /(%27)|(')|(--)|(%23)|(#)/gi,\n /((%3D)|(=))[^\\n]*((%27)|(')|(--)|(%3B)|(;))/gi,\n /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi,\n /((%27)|('))union/gi,\n ];\n\n constructor(protected repo: Repository) {\n super();\n\n this.dbName = this.repo.metadata.connection.options.type;\n this.onInitMapEntityColumns();\n }\n\n public get findOne(): Repository[\"findOne\"] {\n return this.repo.findOne.bind(this.repo);\n }\n\n public get findOneBy(): Repository[\"findOneBy\"] {\n return this.repo.findOneBy.bind(this.repo);\n }\n\n public get find(): Repository[\"find\"] {\n return this.repo.find.bind(this.repo);\n }\n\n public get count(): Repository[\"count\"] {\n return this.repo.count.bind(this.repo);\n }\n\n protected get entityType(): ClassType {\n return this.repo.target as ClassType;\n }\n\n protected get alias(): string {\n return this.repo.metadata.targetName;\n }\n\n /**\n * Get many\n * @param req\n */\n public async getMany(\n req: CrudRequest\n ): Promise | T[]> {\n const { parsed, options } = req;\n const builder: SelectQueryBuilder = await this.createBuilder(\n parsed,\n options\n );\n\n return this.doGetMany(builder, parsed, options);\n }\n\n /**\n * Get one\n * @param req\n */\n public async getOne(req: CrudRequest): Promise {\n return this.getOneOrFail(req);\n }\n\n /**\n * Create one\n * @param req\n * @param dto\n */\n public async createOne(req: CrudRequest, dto: DeepPartial): Promise {\n // @ts-ignore\n const { returnShallow } = req.options.routes?.createOneBase;\n const entity = this.prepareEntityBeforeSave(dto, req.parsed);\n\n /* istanbul ignore if */\n if (!entity) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n const saved = await this.repo.save(entity);\n\n if (returnShallow) {\n return saved;\n } else {\n const primaryParams = this.getPrimaryParams(req.options);\n\n if (\n isEmpty(primaryParams) &&\n primaryParams.some((p) => isNil(saved[p]))\n ) {\n return saved;\n } else {\n req.parsed.search = primaryParams.reduce(\n (acc, p) => ({ ...acc, [p]: saved[p] }),\n {}\n );\n return this.getOneOrFail(req);\n }\n }\n }\n\n /**\n * Create many\n * @param req\n * @param dto\n */\n public async createMany(\n req: CrudRequest,\n dto: CreateManyDto>\n ): Promise {\n /* istanbul ignore if */\n if (!isObject(dto) || !isArrayFull(dto.bulk)) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n const bulk = dto.bulk\n .map((one) => this.prepareEntityBeforeSave(one, req.parsed))\n .filter((d) => !isUndefined(d));\n\n /* istanbul ignore if */\n if (!bulk.length) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n return this.repo.save(bulk, { chunk: 50 });\n }\n\n /**\n * Update one\n * @param req\n * @param dto\n */\n public async updateOne(req: CrudRequest, dto: DeepPartial): Promise {\n const { allowParamsOverride, returnShallow } = (\n req.options.routes?.updateOneBase\n );\n const paramsFilters = this.getParamFilters(req.parsed);\n // disable cache while updating\n // @ts-ignore\n req.options.query.cache = false;\n const found = await this.getOneOrFail(req, returnShallow);\n\n const toSave = !allowParamsOverride\n ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist }\n : { ...found, ...dto, ...req.parsed.authPersist };\n const updated = await this.repo.save(\n plainToInstance(\n this.entityType,\n toSave,\n req.parsed.classTransformOptions\n ) as unknown as DeepPartial\n );\n\n if (returnShallow) {\n return updated;\n } else {\n req.parsed.paramsFilter.forEach((filter) => {\n // @ts-ignore\n filter.value = updated[filter.field];\n });\n\n return this.getOneOrFail(req);\n }\n }\n\n /**\n * Recover one\n * @param req\n * @param dto\n */\n public async recoverOne(req: CrudRequest): Promise {\n // disable cache while recovering\n // @ts-ignore\n req.options.query.cache = false;\n const found = await this.getOneOrFail(req, false, true);\n return this.repo.recover(found as DeepPartial);\n }\n\n /**\n * Replace one\n * @param req\n * @param dto\n */\n public async replaceOne(req: CrudRequest, dto: DeepPartial): Promise {\n const { allowParamsOverride, returnShallow } = (\n req.options.routes?.replaceOneBase\n );\n const paramsFilters = this.getParamFilters(req.parsed);\n // disable cache while replacing\n // @ts-ignore\n req.options.query.cache = false;\n const [_, found] = await oO(this.getOneOrFail(req, returnShallow));\n const toSave = !allowParamsOverride\n ? {\n ...(found || {}),\n ...dto,\n ...paramsFilters,\n ...req.parsed.authPersist,\n }\n : {\n ...(found || {}),\n ...paramsFilters,\n ...dto,\n ...req.parsed.authPersist,\n };\n const replaced = await this.repo.save(\n plainToInstance(\n this.entityType,\n toSave,\n req.parsed.classTransformOptions\n ) as unknown as DeepPartial\n );\n\n if (returnShallow) {\n return replaced;\n } else {\n const primaryParams: string[] = this.getPrimaryParams(req.options);\n\n /* istanbul ignore if */\n if (!primaryParams.length) {\n return replaced;\n }\n\n req.parsed.search = primaryParams.reduce(\n (acc: {}, p: string) => ({\n ...acc,\n // @ts-ignore\n [p]: replaced[p],\n }),\n {}\n );\n return this.getOneOrFail(req);\n }\n }\n\n /**\n * Delete one\n * @param req\n */\n public async deleteOne(req: CrudRequest): Promise {\n const { returnDeleted } = (\n req.options.routes?.deleteOneBase\n );\n // disable cache while deleting\n // @ts-ignore\n req.options.query.cache = false;\n const found: T = await this.getOneOrFail(req, returnDeleted);\n const toReturn: T | undefined = returnDeleted\n ? plainToInstance(\n this.entityType,\n { ...found },\n req.parsed.classTransformOptions\n )\n : undefined;\n\n const deleted: DeepPartial & T =\n req.options.query?.softDelete === true\n ? await this.repo.softRemove(found as DeepPartial)\n : await this.repo.remove(found);\n\n return toReturn;\n }\n\n public getParamFilters(parsed: CrudRequest[\"parsed\"]): ObjectLiteral {\n const filters = {};\n\n if (!isEmpty(parsed.paramsFilter)) {\n for (const filter of parsed.paramsFilter) {\n // @ts-ignore\n filters[filter.field] = filter.value;\n }\n }\n\n return filters;\n }\n\n /**\n * Create TypeOrm QueryBuilder\n * @param parsed\n * @param options\n * @param many\n * @param withDeleted\n */\n public async createBuilder(\n parsed: ParsedRequestParams,\n options: CrudRequestOptions,\n many = true,\n withDeleted = false\n ): Promise> {\n // create query builder\n const builder: SelectQueryBuilder = this.repo.createQueryBuilder(\n this.alias\n );\n // get select fields\n const select: string[] = this.getSelect(parsed, options.query || {});\n // select fields\n builder.select(select);\n\n // if soft deleted is enabled add where statement to filter deleted records\n if (options.query?.softDelete) {\n if (parsed.includeDeleted === 1 || withDeleted) {\n builder.withDeleted();\n }\n }\n\n // search\n this.setSearchCondition(\n builder,\n parsed.search || {},\n options.operators?.custom || {}\n );\n\n // set joins\n const joinOptions: JoinOptions = options.query?.join || {};\n const allowedJoins: string[] = Object.keys(joinOptions);\n\n if (!isEmpty(allowedJoins)) {\n const eagerJoins: any = {};\n\n for (let i = 0; i < allowedJoins.length; i++) {\n if (joinOptions[allowedJoins[i]].eager) {\n const cond: QueryJoin = parsed.join.find(\n (j: QueryJoin) => j && j.field === allowedJoins[i]\n ) || {\n field: allowedJoins[i],\n };\n this.setJoin(cond, joinOptions, builder);\n eagerJoins[allowedJoins[i]] = true;\n }\n }\n\n if (isArrayFull(parsed.join)) {\n for (let i = 0; i < parsed.join.length; i++) {\n if (!eagerJoins[parsed.join[i].field]) {\n this.setJoin(parsed.join[i], joinOptions, builder);\n }\n }\n }\n }\n\n if (many) {\n // set sort (order by)\n const sort = this.getSort(parsed, options.query || {});\n builder.orderBy(sort);\n\n // set take\n const take = this.getTake(parsed, options.query || {});\n\n if (take && isFinite(take)) {\n builder.take(take);\n }\n\n // set skip\n const skip = this.getSkip(parsed, take || 0);\n\n if (skip && isFinite(skip)) {\n builder.skip(skip);\n }\n }\n\n // set cache\n\n if (options.query?.cache && parsed.cache !== 0) {\n builder.cache(options.query.cache);\n }\n\n return builder;\n }\n\n /**\n * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount`\n * helpful for overriding `TypeOrmCrudService#getMany`\n * @see getMany\n * @see SelectQueryBuilder#getMany\n * @see SelectQueryBuilder#getManyAndCount\n * @param builder\n * @param query\n * @param options\n */\n protected async doGetMany(\n builder: SelectQueryBuilder,\n query: ParsedRequestParams,\n options: CrudRequestOptions\n ): Promise | T[]> {\n if (this.decidePagination(query, options)) {\n const [data, total] = await builder.getManyAndCount();\n const limit: number | undefined = builder.expressionMap.take;\n const offset: number | undefined = builder.expressionMap.skip;\n\n return this.createPageInfo(data, total, limit || total, offset || 0);\n }\n\n return builder.getMany();\n }\n\n protected onInitMapEntityColumns(): void {\n this.entityColumns = this.repo.metadata.columns.map(\n (prop: ColumnMetadata): string => {\n // In case column is an embedded, use the propertyPath to get complete path\n if (prop.embeddedMetadata) {\n this.entityColumnsHash[prop.propertyPath] = prop.databasePath;\n return prop.propertyPath;\n }\n this.entityColumnsHash[prop.propertyName] = prop.databasePath;\n return prop.propertyName;\n }\n );\n this.entityPrimaryColumns = this.repo.metadata.columns\n .filter((prop: ColumnMetadata) => prop.isPrimary)\n .map((prop: ColumnMetadata) => prop.propertyName);\n this.entityHasDeleteColumn = this.repo.metadata.columns.some(\n (prop: ColumnMetadata) => !isEmpty(prop.isDeleteDate)\n );\n }\n\n protected async getOneOrFail(\n req: CrudRequest,\n shallow = false,\n withDeleted = false\n ): Promise {\n const { parsed, options } = req;\n const builder: SelectQueryBuilder = shallow\n ? this.repo.createQueryBuilder(this.alias)\n : await this.createBuilder(parsed, options, true, withDeleted);\n\n if (shallow) {\n this.setSearchCondition(\n builder,\n parsed.search || null,\n options.operators?.custom\n );\n }\n\n const found: T | null = withDeleted\n ? await builder.withDeleted().getOne()\n : await builder.getOne();\n\n if (!found) {\n this.throwNotFoundException(this.alias);\n }\n\n return found;\n }\n\n protected prepareEntityBeforeSave(\n dto: DeepPartial,\n parsed: CrudRequest[\"parsed\"]\n ): T | undefined {\n /* istanbul ignore if */\n if (!isObject(dto)) {\n return undefined;\n }\n\n if (!isEmpty(parsed.paramsFilter)) {\n for (const filter of parsed.paramsFilter) {\n // @ts-ignore\n dto[filter.field] = filter.value;\n }\n }\n\n /* istanbul ignore if */\n if (isEmpty(Object.keys(dto))) {\n return undefined;\n }\n\n return dto instanceof this.entityType\n ? Object.assign(dto, parsed.authPersist)\n : plainToInstance(\n this.entityType,\n { ...dto, ...parsed.authPersist },\n parsed.classTransformOptions\n );\n }\n\n protected getAllowedColumns(\n columns: string[],\n options: QueryOptions\n ): string[] {\n return (!options.exclude || !options.exclude.length) &&\n (!options.allow || !options.allow.length)\n ? columns\n : columns.filter(\n (column: string) =>\n (options.exclude && options.exclude.length\n ? !options.exclude.some((col: string) => col === column)\n : true) &&\n (options.allow && options.allow.length\n ? options.allow.some((col) => col === column)\n : true)\n );\n }\n\n protected getEntityColumns(entityMetadata: EntityMetadata): {\n columns: string[];\n primaryColumns: string[];\n } {\n const columns: string[] =\n entityMetadata.columns.map((prop: ColumnMetadata) => prop.propertyPath) ||\n [];\n const primaryColumns: string[] =\n entityMetadata.primaryColumns.map(\n (prop: ColumnMetadata) => prop.propertyPath\n ) || [];\n\n return { columns, primaryColumns };\n }\n\n protected getRelationMetadata(\n field: string,\n options: JoinOption\n ): IAllowedRelation | null {\n try {\n let allowedRelation;\n let nested = false;\n\n if (this.entityRelationsHash.has(field)) {\n allowedRelation = this.entityRelationsHash.get(field);\n } else {\n const fields: string[] = field.split(\".\");\n let relationMetadata: EntityMetadata | null = null;\n let name: string | undefined;\n let path: string | undefined;\n let parentPath: string | undefined;\n\n if (fields.length === 1) {\n const found: RelationMetadata | undefined =\n this.repo.metadata.relations.find(\n (one: RelationMetadata): boolean => one.propertyName === fields[0]\n );\n\n if (found) {\n name = fields[0];\n path = `${this.alias}.${fields[0]}`;\n relationMetadata = found.inverseEntityMetadata;\n }\n } else {\n nested = true;\n parentPath = \"\";\n\n const reduced = fields.reduce(\n // @ts-ignore\n (res, propertyName: string, i) => {\n const found = res.relations?.length\n ? res.relations.find(\n (one: RelationMetadata): boolean =>\n one.propertyName === propertyName\n )\n : null;\n relationMetadata = found ? found.inverseEntityMetadata : null;\n const relations: RelationMetadata[] = relationMetadata\n ? relationMetadata.relations\n : [];\n name = propertyName;\n\n if (i !== fields.length - 1) {\n parentPath = !parentPath\n ? propertyName\n : `${parentPath}.${propertyName}`;\n }\n\n return {\n relations,\n relationMetadata,\n };\n },\n {\n relations: this.repo.metadata.relations,\n relationMetadata: null,\n }\n );\n\n // @ts-ignore\n relationMetadata = reduced.relationMetadata;\n }\n\n // @ts-ignore\n if (relationMetadata) {\n const { columns, primaryColumns } =\n this.getEntityColumns(relationMetadata);\n\n if (!path && parentPath) {\n const parentAllowedRelation: IAllowedRelation | undefined =\n this.entityRelationsHash.get(parentPath);\n\n if (parentAllowedRelation) {\n path = parentAllowedRelation.alias\n ? `${parentAllowedRelation.alias}.${name}`\n : field;\n }\n }\n\n allowedRelation = {\n alias: options.alias,\n name,\n path,\n columns,\n nested,\n primaryColumns,\n };\n }\n }\n\n if (allowedRelation) {\n const allowedColumns: string[] = this.getAllowedColumns(\n allowedRelation.columns,\n options\n );\n const toSave: IAllowedRelation = {\n ...allowedRelation,\n allowedColumns,\n };\n\n this.entityRelationsHash.set(field, toSave);\n\n if (options.alias) {\n this.entityRelationsHash.set(options.alias, toSave);\n }\n\n return toSave;\n }\n } catch (_) {\n return null;\n }\n return null;\n }\n\n protected setJoin(\n cond: QueryJoin,\n joinOptions: JoinOptions,\n builder: SelectQueryBuilder\n ): undefined | void {\n const options: JoinOption = joinOptions[cond.field] ?? null;\n\n if (!options) {\n console.warn(\n 'relation \"' +\n cond.field +\n '\" not found in allowed relations in the controller. Did you mean to use one of these? [' +\n Object.keys(joinOptions).join(\", \") +\n \"]\"\n );\n return;\n }\n\n const allowedRelation: IAllowedRelation | null = this.getRelationMetadata(\n cond.field,\n options\n );\n\n if (!allowedRelation) {\n return;\n }\n\n const relationType = options.required ? \"innerJoin\" : \"leftJoin\";\n const alias: string = options.alias ? options.alias : allowedRelation.name;\n\n builder[relationType](allowedRelation.path, alias);\n\n if (options.select !== false) {\n const columns = isArrayFull(cond.select)\n ? cond.select?.filter((column: string) =>\n allowedRelation.allowedColumns.some(\n (allowed: string): boolean => allowed === column\n )\n ) || []\n : allowedRelation.allowedColumns || [];\n\n const select: string[] = [\n ...allowedRelation.primaryColumns,\n // @ts-ignore\n ...(isArrayFull(options.persist) ? options.persist : []),\n ...columns,\n ].map((col): string => `${alias}.${col}`);\n\n builder.addSelect(Array.from(new Set(select)));\n }\n }\n\n protected setAndWhere(\n cond: QueryFilter,\n i: any,\n builder: SelectQueryBuilder | WhereExpressionBuilder,\n customOperators: CustomOperators\n ): void {\n const { str, params } = this.mapOperatorsToQuery(\n cond,\n `andWhere${i}`,\n customOperators\n );\n builder.andWhere(str, params);\n }\n\n protected setOrWhere(\n cond: QueryFilter,\n i: any,\n builder: SelectQueryBuilder | WhereExpressionBuilder,\n customOperators: CustomOperators\n ): void {\n const { str, params } = this.mapOperatorsToQuery(\n cond,\n `orWhere${i}`,\n customOperators\n );\n builder.orWhere(str, params);\n }\n\n protected setSearchCondition(\n builder: SelectQueryBuilder,\n search: SCondition | null,\n customOperators: CustomOperators,\n condition: SConditionKey = \"$and\"\n ): void {\n if (isObject(search)) {\n const keys = Object.keys(search);\n\n if (keys.length) {\n // search: {$ne: [...]}\n // @ts-ignore\n if (isArrayFull(search?.$ne)) {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n // @ts-ignore\n search.$not.forEach((item: any): void => {\n this.setSearchCondition(qb, item, customOperators, \"$and\");\n });\n }),\n true\n );\n }\n // search: {$and: [...], ...}\n else if (isArrayFull(search?.$and)) {\n // search: {$and: [{}]}\n if (search?.$and?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$and[0],\n customOperators,\n condition\n );\n }\n // search: {$and: [{}, {}, ...]}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n search?.$and?.forEach((item: any): void => {\n this.setSearchCondition(qb, item, customOperators, \"$and\");\n });\n })\n );\n }\n }\n // search: {$or: [...], ...}\n else if (isArrayFull(search?.$or)) {\n // search: {$or: [...]}\n if (keys.length === 1) {\n // search: {$or: [{}]}\n if (search?.$or?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$or[0],\n customOperators,\n condition\n );\n }\n // search: {$or: [{}, {}, ...]}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any) => {\n search?.$or?.forEach((item: any) => {\n this.setSearchCondition(qb, item, customOperators, \"$or\");\n });\n })\n );\n }\n }\n // search: {$or: [...], foo, ...}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n keys.forEach((field: string): void => {\n if (field !== \"$or\") {\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n }\n } else {\n if (search?.$or?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$or[0],\n customOperators,\n \"$and\"\n );\n } else {\n this.builderAddBrackets(\n qb,\n \"$and\",\n new Brackets((qb2: any) => {\n search?.$or?.forEach((item: any) => {\n this.setSearchCondition(\n qb2,\n item,\n customOperators,\n \"$or\"\n );\n });\n })\n );\n }\n }\n });\n })\n );\n }\n }\n // search: {...}\n else {\n // search: {foo}\n if (keys.length === 1) {\n const field: string = keys[0];\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n builder,\n condition,\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n builder,\n condition,\n field,\n value,\n customOperators\n );\n }\n }\n // search: {foo, ...}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any) => {\n keys.forEach((field: string) => {\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n }\n });\n })\n );\n }\n }\n }\n }\n }\n\n protected builderAddBrackets(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n brackets: Brackets,\n negated = false\n ) {\n if (negated) {\n // No builtin support for not, this is copied from QueryBuilder.getWhereCondition\n\n const whereQueryBuilder: SelectQueryBuilder =\n builder.createQueryBuilder();\n\n (whereQueryBuilder as any).parentQueryBuilder = builder;\n\n whereQueryBuilder.expressionMap.mainAlias =\n builder.expressionMap.mainAlias;\n whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled =\n builder.expressionMap.aliasNamePrefixingEnabled;\n whereQueryBuilder.expressionMap.parameters =\n builder.expressionMap.parameters;\n whereQueryBuilder.expressionMap.nativeParameters =\n builder.expressionMap.nativeParameters;\n\n whereQueryBuilder.expressionMap.wheres = [];\n\n brackets.whereFactory(whereQueryBuilder as any);\n\n const wheres = {\n operator: \"brackets\",\n condition: whereQueryBuilder.expressionMap.wheres,\n };\n\n const type =\n condition === \"$and\" ? \"and\" : condition === \"$or\" ? \"or\" : \"simple\";\n builder.expressionMap.wheres.push({\n type,\n condition: {\n operator: \"not\",\n condition: wheres as any,\n },\n });\n } else if (condition === \"$and\") {\n builder.andWhere(brackets);\n } else {\n builder.orWhere(brackets);\n }\n }\n\n protected builderSetWhere(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n field: string,\n value: any,\n customOperators: CustomOperators,\n operator: ComparisonOperator = \"$eq\"\n ): void {\n const time = process.hrtime();\n // const index = `${field}${time[0]}${time[1]}`;\n /**\n * Correcting the Error [Invalid Column Name] or [ syntax error at or near \\\":\\\".]\n * When using filter or search in relational/nested entities.\n */\n const safeFieldName = field.replace(/./g, \"_\");\n const index = `${safeFieldName}${time[0]}${time[1]}`;\n\n const args = [\n { field, operator: isNull(value) ? \"$isnull\" : operator, value },\n index,\n builder,\n customOperators,\n ];\n const fn = condition === \"$and\" ? this.setAndWhere : this.setOrWhere;\n // @ts-ignore\n fn.apply(this, args);\n }\n\n protected setSearchFieldObjectCondition(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n field: string,\n object: any,\n customOperators: CustomOperators\n ): void {\n if (isObject(object)) {\n const operators: string[] = Object.keys(object);\n\n if (operators.length === 1) {\n const operator: string = operators[0] as ComparisonOperator;\n const value = object[operator];\n\n if (isObject(object.$or)) {\n const orKeys: string[] = Object.keys(object.$or);\n this.setSearchFieldObjectCondition(\n builder,\n orKeys.length === 1 ? condition : \"$or\",\n field,\n object.$or,\n customOperators\n );\n } else {\n this.builderSetWhere(\n builder,\n condition,\n field,\n value,\n customOperators,\n operator\n );\n }\n } else {\n if (operators.length > 1) {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n operators.forEach((operator: ComparisonOperator): void => {\n const value = object[operator];\n\n if (operator !== \"$or\") {\n this.builderSetWhere(\n qb,\n condition,\n field,\n value,\n customOperators,\n operator\n );\n } else {\n const orKeys: string[] = Object.keys(object.$or);\n\n if (orKeys.length === 1) {\n this.setSearchFieldObjectCondition(\n qb,\n condition,\n field,\n object.$or,\n customOperators\n );\n } else {\n this.builderAddBrackets(\n qb,\n condition,\n new Brackets((qb2: any) => {\n this.setSearchFieldObjectCondition(\n qb2,\n \"$or\",\n field,\n object.$or,\n customOperators\n );\n })\n );\n }\n }\n });\n })\n );\n }\n }\n }\n }\n\n protected getSelect(\n query: ParsedRequestParams,\n options: QueryOptions\n ): string[] {\n const allowed: string[] = this.getAllowedColumns(\n this.entityColumns || [],\n options\n );\n const columns =\n query.fields && query.fields.length\n ? query.fields.filter((field) =>\n allowed.some((col: string): boolean => field === col)\n )\n : allowed;\n return [\n ...new Set([\n ...(options.persist && options.persist.length ? options.persist : []),\n ...columns,\n ...(this.entityPrimaryColumns || []),\n ]),\n ].map((col): string => `${this.alias}.${col}`);\n }\n\n protected getSort(query: ParsedRequestParams, options: QueryOptions) {\n return query.sort && query.sort.length\n ? this.mapSort(query.sort)\n : options.sort && options.sort.length\n ? this.mapSort(options.sort)\n : {};\n }\n\n protected getFieldWithAlias(field: string, sort = false) {\n const i = [\"mysql\", \"mariadb\"].includes(this.dbName) ? \"`\" : '\"';\n const cols = field.split(\".\");\n\n switch (cols.length) {\n case 1:\n if (sort) {\n return `${this.alias}.${field}`;\n }\n\n const dbColName =\n this.entityColumnsHash[field] !== field\n ? this.entityColumnsHash[field]\n : field;\n\n return `${i}${this.alias}${i}.${i}${dbColName}${i}`;\n case 2:\n return field;\n default:\n return cols.slice(cols.length - 2, cols.length).join(\".\");\n }\n }\n\n protected mapSort(sort: QuerySort[]) {\n const params: ObjectLiteral = {};\n\n for (let i = 0; i < sort.length; i++) {\n const field = this.getFieldWithAlias(sort[i].field, true);\n const checkedFiled = this.checkSqlInjection(field);\n params[checkedFiled] = sort[i].order;\n }\n\n return params;\n }\n\n protected mapOperatorsToQuery(\n cond: QueryFilter,\n param: any,\n customOperators: CustomOperators = {}\n ): { str: string; params: ObjectLiteral } {\n const field: string = this.getFieldWithAlias(cond.field);\n const likeOperator = this.dbName === \"postgres\" ? \"ILIKE\" : \"LIKE\";\n let str: string | undefined;\n let params: ObjectLiteral | undefined;\n\n if (cond.operator[0] !== \"$\") {\n cond.operator = (\"$\" + cond.operator) as ComparisonOperator;\n }\n\n switch (cond.operator) {\n case CondOperator.EQUALS:\n str = `${field} = :${param}`;\n break;\n\n case CondOperator.NOT_EQUALS:\n str = `${field} != :${param}`;\n break;\n\n case CondOperator.GREATER_THAN:\n str = `${field} > :${param}`;\n break;\n\n case CondOperator.LOWER_THAN:\n str = `${field} < :${param}`;\n break;\n\n case CondOperator.GREATER_THAN_EQUALS:\n str = `${field} >= :${param}`;\n break;\n\n case CondOperator.LOWER_THAN_EQUALS:\n str = `${field} <= :${param}`;\n break;\n\n case CondOperator.STARTS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `${cond.value}%` };\n break;\n\n case CondOperator.ENDS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `%${cond.value}` };\n break;\n\n case CondOperator.CONTAINS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.EXCLUDES:\n str = `${field} NOT LIKE :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.IN:\n this.checkFilterIsArray(cond);\n str = `${field} IN (:...${param})`;\n break;\n\n case CondOperator.NOT_IN:\n this.checkFilterIsArray(cond);\n str = `${field} NOT IN (:...${param})`;\n break;\n\n case CondOperator.IS_NULL:\n str = `${field} IS NULL`;\n params = {};\n break;\n\n case CondOperator.NOT_NULL:\n str = `${field} IS NOT NULL`;\n params = {};\n break;\n\n case CondOperator.BETWEEN:\n this.checkFilterIsArray(cond, cond.value.length !== 2);\n str = `${field} BETWEEN :${param}0 AND :${param}1`;\n params = {\n [`${param}0`]: cond.value[0],\n [`${param}1`]: cond.value[1],\n };\n break;\n\n // case insensitive\n case CondOperator.EQUALS_LOW:\n str = `LOWER(${field}) = :${param}`;\n break;\n\n case CondOperator.NOT_EQUALS_LOW:\n str = `LOWER(${field}) != :${param}`;\n break;\n\n case CondOperator.STARTS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `${cond.value}%` };\n break;\n\n case CondOperator.ENDS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}` };\n break;\n\n case CondOperator.CONTAINS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.EXCLUDES_LOW:\n str = `LOWER(${field}) NOT ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.IN_LOW:\n this.checkFilterIsArray(cond);\n str = `LOWER(${field}) IN (:...${param})`;\n break;\n\n case CondOperator.NOT_IN_LOW:\n this.checkFilterIsArray(cond);\n str = `LOWER(${field}) NOT IN (:...${param})`;\n break;\n\n default:\n const customOperator = customOperators[cond.operator];\n\n if (!customOperator) {\n str = `${field} = :${param}`;\n break;\n }\n\n try {\n if (customOperator.isArray) {\n this.checkFilterIsArray(cond);\n }\n str = customOperator.query(field, param);\n params = customOperator.params || {};\n } catch (error) {\n this.throwBadRequestException(\n `Invalid custom operator '${field}' query`\n );\n }\n\n break;\n }\n\n if (typeof params === \"undefined\") {\n params = { [param]: cond.value };\n }\n\n return { str: str, params };\n }\n\n protected checkFilterIsArray(cond: QueryFilter, withLength?: boolean) {\n /* istanbul ignore if */\n if (\n !Array.isArray(cond.value) ||\n !cond.value.length ||\n (!isNil(withLength) ? withLength : false)\n ) {\n this.throwBadRequestException(`Invalid column '${cond.field}' value`);\n }\n }\n\n protected checkSqlInjection(field: string): string {\n if (this.sqlInjectionRegEx.length) {\n for (let i = 0; i < this.sqlInjectionRegEx.length; i++) {\n if (this.sqlInjectionRegEx[i].test(field)) {\n this.throwBadRequestException(`SQL injection detected: \"${field}\"`);\n }\n }\n }\n\n return field;\n }\n}\n","module.exports = require(\"@zmotivat0r/o0\");","module.exports = require(\"typeorm\");","import { R } from \"../helpers\";\nimport { AuthOptions } from \"../interfaces\";\n\nexport const CrudAuth =\n (options: AuthOptions) =>\n (target: Object): void => {\n R.setCrudAuthOptions(options, target);\n };\n","import { BaseRouteName } from \"../types\";\nimport { OVERRIDE_METHOD_METADATA } from \"../constants\";\n\nexport const Override =\n (name?: BaseRouteName) =>\n (target: any, key: any, descriptor: PropertyDescriptor) => {\n Reflect.defineMetadata(\n OVERRIDE_METHOD_METADATA,\n name || `${key}Base`,\n target[key]\n );\n return descriptor;\n };\n","import { createParamDecorator } from \"@nestjs/common\";\n\nimport { PARSED_CRUD_REQUEST_KEY } from \"../constants\";\nimport { R } from \"../helpers\";\n\nexport const ParsedRequest = createParamDecorator(\n (_, ctx): ParameterDecorator => {\n return R.getContextRequest(ctx)[PARSED_CRUD_REQUEST_KEY];\n }\n);\n","import { PARSED_BODY_METADATA } from \"../constants\";\n\nexport const ParsedBody =\n () =>\n (target: any, key: string, index: any): void => {\n Reflect.defineMetadata(PARSED_BODY_METADATA, { index }, target[key]);\n };\n","import { SetMetadata, Type } from \"@nestjs/common\";\n\nimport { ACTION_NAME_METADATA, FEATURE_NAME_METADATA } from \"../constants\";\n\nexport const Feature = (name: string) =>\n SetMetadata(FEATURE_NAME_METADATA, name);\nexport const Action = (name: string) => SetMetadata(ACTION_NAME_METADATA, name);\n\nexport const getFeature = (target: Type) =>\n Reflect.getMetadata(FEATURE_NAME_METADATA, target);\nexport const getAction = (target: Function) =>\n Reflect.getMetadata(ACTION_NAME_METADATA, target);\n","export * from \"./auth-options.interface\";\nexport * from \"./base-route.interface\";\nexport * from \"./create-many-dto.interface\";\nexport * from \"./create-query-params.interface\";\nexport * from \"./crud-controller.interface\";\nexport * from \"./crud-global-config.interface\";\nexport * from \"./crud-options.interface\";\nexport * from \"./crud-request.interface\";\nexport * from \"./dto-options.interface\";\nexport * from \"./get-many-default-response.interface\";\nexport * from \"./model-options.interface\";\nexport * from \"./operators-options.interface\";\nexport * from \"./params-options.interface\";\nexport * from \"./parsed-request.interface\";\nexport * from \"./query-options.interface\";\nexport * from \"./request-query-builder-options.interface\";\nexport * from \"./routes-options.interface\";\nexport * from \"./serialize-options.interface\";\n","import { SCondition } from \"../types\";\nimport { ObjectLiteral } from \"../types\";\nimport { ClassTransformOptions } from \"class-transformer\";\n\nexport interface AuthGlobalOptions {\n property?: string;\n /** Get options for the `classToPlain` function (response) */\n classTransformOptions?: (req: any) => ClassTransformOptions;\n /** Get `groups` value for the `classToPlain` function options (response) */\n groups?: (req: any) => string[];\n}\n\nexport interface AuthOptions {\n property?: string;\n /** Get options for the `classToPlain` function (response) */\n classTransformOptions?: (req: any) => ClassTransformOptions;\n /** Get `groups` value for the `classToPlain` function options (response) */\n groups?: (req: any) => string[];\n filter?: (req: any) => SCondition | void;\n or?: (req: any) => SCondition | void;\n persist?: (req: any) => ObjectLiteral;\n}\n","import { RequestMethod } from \"@nestjs/common\";\n\nimport { BaseRouteName } from \"../types\";\n\nexport interface BaseRoute {\n name: BaseRouteName;\n path: string;\n method: RequestMethod;\n enable: boolean;\n override: boolean;\n withParams: boolean;\n}\n","export interface CreateManyDto {\n bulk: T[];\n}\n","import {\n QueryExtra,\n QueryFields,\n QueryFilter,\n QueryFilterArr,\n QueryJoin,\n QueryJoinArr,\n QuerySort,\n QuerySortArr,\n SCondition,\n} from \"../types\";\n\nexport interface CreateQueryParams {\n fields?: QueryFields;\n search?: SCondition;\n filter?: QueryFilter | QueryFilterArr | Array;\n or?: QueryFilter | QueryFilterArr | Array;\n join?: QueryJoin | QueryJoinArr | Array;\n sort?: QuerySort | QuerySortArr | Array;\n limit?: number;\n offset?: number;\n page?: number;\n resetCache?: boolean;\n includeDeleted?: number;\n extra?: QueryExtra;\n}\n","import { CreateManyDto } from \"./create-many-dto.interface\";\nimport { CrudRequest } from \"./crud-request.interface\";\nimport { GetManyDefaultResponse } from \"./get-many-default-response.interface\";\n\nimport { CrudService } from \"../services\";\n\nexport interface CrudController {\n service: CrudService;\n getManyBase?(req: CrudRequest): Promise | T[]>;\n getOneBase?(req: CrudRequest): Promise;\n createOneBase?(req: CrudRequest, dto: T): Promise;\n createManyBase?(req: CrudRequest, dto: CreateManyDto): Promise;\n updateOneBase?(req: CrudRequest, dto: Partial): Promise;\n replaceOneBase?(req: CrudRequest, dto: T): Promise;\n deleteOneBase?(req: CrudRequest): Promise;\n recoverOneBase?(req: CrudRequest): Promise;\n}\n","import { RequestQueryBuilderOptions } from \"./request-query-builder-options.interface\";\nimport { AuthGlobalOptions } from \"./auth-options.interface\";\nimport { OperatorsOptions } from \"./operators-options.interface\";\nimport { ParamsOptions } from \"./params-options.interface\";\nimport { RoutesOptions } from \"./routes-options.interface\";\nimport { RoutesFactoryService } from \"../services\";\n\nexport interface CrudGlobalConfig {\n queryParser?: RequestQueryBuilderOptions;\n auth?: AuthGlobalOptions;\n routes?: RoutesOptions;\n params?: ParamsOptions;\n operators?: OperatorsOptions;\n query?: {\n limit?: number;\n maxLimit?: number;\n cache?: number | false;\n alwaysPaginate?: boolean;\n softDelete?: boolean;\n };\n serialize?: {\n getMany?: false;\n get?: false;\n create?: false;\n createMany?: false;\n update?: false;\n replace?: false;\n delete?: false;\n recover?: false;\n };\n routesFactory?: typeof RoutesFactoryService;\n}\n","import { ValidationPipeOptions } from \"@nestjs/common\";\n\nimport { RoutesFactoryService } from \"../services\";\n\nimport { AuthOptions } from \"./auth-options.interface\";\nimport { DtoOptions } from \"./dto-options.interface\";\nimport { ModelOptions } from \"./model-options.interface\";\nimport { OperatorsOptions } from \"./operators-options.interface\";\nimport { ParamsOptions } from \"./params-options.interface\";\nimport { QueryOptions } from \"./query-options.interface\";\nimport { RoutesOptions } from \"./routes-options.interface\";\nimport { SerializeOptions } from \"./serialize-options.interface\";\n\nexport interface CrudRequestOptions {\n query?: QueryOptions;\n routes?: RoutesOptions;\n params?: ParamsOptions;\n operators?: OperatorsOptions;\n}\n\nexport interface CrudOptions {\n model: ModelOptions;\n dto?: DtoOptions;\n serialize?: SerializeOptions;\n query?: QueryOptions;\n routes?: RoutesOptions;\n routesFactory?: typeof RoutesFactoryService;\n params?: ParamsOptions;\n validation?: ValidationPipeOptions | false;\n operators?: OperatorsOptions;\n}\n\nexport interface MergedCrudOptions extends CrudOptions {\n auth?: AuthOptions;\n}\n","import { ParsedRequestParams } from \"./parsed-request.interface\";\nimport { CrudRequestOptions } from \"./crud-options.interface\";\n\nexport interface CrudRequest {\n parsed: ParsedRequestParams;\n options: CrudRequestOptions;\n /** authenticated user's from request */\n auth?: {};\n}\n","export interface DtoOptions {\n create?: any;\n update?: any;\n replace?: any;\n}\n","export interface GetManyDefaultResponse {\n data: T[];\n count: number;\n total: number;\n page: number;\n pageCount: number;\n}\n","export interface ModelOptions {\n type: any;\n}\n","export interface OperatorsOptions {\n custom?: CustomOperators;\n}\n\nexport type CustomOperatorQuery = (field: string, param: string) => string;\n\nexport interface CustomOperators {\n [key: string]: {\n query: CustomOperatorQuery;\n params?: { [field: string]: any };\n isArray?: boolean;\n };\n}\n","import { ParamOptionType } from \"../types\";\n\nexport interface ParamsOptions {\n [key: string]: ParamOption;\n}\n\nexport interface ParamOption {\n field?: string;\n type?: ParamOptionType;\n primary?: boolean;\n disabled?: boolean;\n enum?: [];\n}\n","import { ClassTransformOptions } from \"class-transformer\";\nimport {\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n ObjectLiteral,\n} from \"../types\";\n\nexport interface ParsedRequestParams {\n fields: QueryFields;\n paramsFilter: (QueryFilter | undefined)[];\n authPersist: ObjectLiteral | undefined;\n classTransformOptions: ClassTransformOptions | undefined;\n search: SCondition | undefined;\n filter: QueryFilter[];\n or: QueryFilter[];\n join: QueryJoin[];\n sort: QuerySort[];\n limit: number | undefined;\n offset: number | undefined;\n page: number | undefined;\n cache: number | undefined;\n includeDeleted: number | undefined;\n /**\n * Extra options.\n *\n * Custom extra option come from Request and can be used anywhere you want for your business rules.\n * CrudRequest lib. do not evaluate this attribute.\n */\n extra: ObjectLiteral | undefined;\n}\n","import { QueryFields, QuerySort, QueryFilterOption } from \"../types\";\n\nexport interface QueryOptions {\n allow?: QueryFields;\n exclude?: QueryFields;\n persist?: QueryFields;\n filter?: QueryFilterOption;\n join?: JoinOptions;\n sort?: QuerySort[];\n limit?: number;\n maxLimit?: number;\n cache?: number | false;\n alwaysPaginate?: boolean;\n softDelete?: boolean;\n}\n\nexport interface JoinOptions {\n [key: string]: JoinOption;\n}\n\nexport interface JoinOption {\n alias?: string;\n allow?: QueryFields;\n eager?: boolean;\n exclude?: QueryFields;\n persist?: QueryFields;\n select?: boolean;\n required?: boolean;\n}\n","export interface ParamsNamesMap {\n fields?: string | string[];\n search?: string | string[];\n filter?: string | string[];\n or?: string | string[];\n join?: string | string[];\n sort?: string | string[];\n limit?: string | string[];\n offset?: string | string[];\n page?: string | string[];\n cache?: string | string[];\n includeDeleted?: string | string[];\n extra?: string | string[];\n}\nexport interface RequestQueryBuilderOptions {\n delim: string;\n delimStr: string;\n paramNamesMap?: ParamsNamesMap;\n}\n","import { BaseRouteName } from \"../types\";\n\nexport interface RoutesOptions {\n exclude?: BaseRouteName[];\n only?: BaseRouteName[];\n getManyBase?: GetManyRouteOptions;\n getOneBase?: GetOneRouteOptions;\n createOneBase?: CreateOneRouteOptions;\n createManyBase?: CreateManyRouteOptions;\n updateOneBase?: UpdateOneRouteOptions;\n replaceOneBase?: ReplaceOneRouteOptions;\n deleteOneBase?: DeleteOneRouteOptions;\n recoverOneBase?: RecoverOneRouteOptions;\n}\n\nexport interface BaseRouteOptions {\n interceptors?: any[];\n decorators?: (PropertyDecorator | MethodDecorator)[];\n}\n\nexport interface GetManyRouteOptions extends BaseRouteOptions {}\n\nexport interface GetOneRouteOptions extends BaseRouteOptions {}\n\nexport interface CreateOneRouteOptions extends BaseRouteOptions {\n returnShallow?: boolean;\n}\n\nexport interface CreateManyRouteOptions extends BaseRouteOptions {}\n\nexport interface ReplaceOneRouteOptions extends BaseRouteOptions {\n allowParamsOverride?: boolean;\n returnShallow?: boolean;\n}\n\nexport interface UpdateOneRouteOptions extends BaseRouteOptions {\n allowParamsOverride?: boolean;\n returnShallow?: boolean;\n}\n\nexport interface DeleteOneRouteOptions extends BaseRouteOptions {\n returnDeleted?: boolean;\n}\n\nexport interface RecoverOneRouteOptions extends BaseRouteOptions {\n returnRecovered?: boolean;\n}\n","import { Type } from \"@nestjs/common\";\n\nexport interface SerializeOptions {\n getMany?: Type | false;\n get?: Type | false;\n create?: Type | false;\n createMany?: Type | false;\n update?: Type | false;\n replace?: Type | false;\n delete?: Type | false;\n recover?: Type | false;\n}\n","module.exports = require(\"@nestjs/core\");","import {\n BaseRoute,\n BaseRouteName,\n CrudOptions,\n isIn,\n R,\n RoutesFactoryService,\n SerializeHelper,\n} from \"@2amtech/crudx\";\nimport { get, isEqual, isFunction, keys } from \"lodash\";\n\nimport { Swagger } from \"../lib/swagger.helper\";\n\nexport class CrudxSwaggerRoutesFactory extends RoutesFactoryService {\n protected swaggerModels: any = {};\n\n constructor(protected override target: any, options: CrudOptions) {\n super(target, options);\n }\n\n protected override create(): void {\n const routesSchema: BaseRoute[] = this.getRoutesSchema();\n this.mergeOptions();\n this.setResponseModels();\n this.createRoutes(routesSchema);\n this.overrideRoutes(routesSchema);\n this.enableRoutes(routesSchema);\n }\n\n protected override setBaseRouteMeta(name: BaseRouteName): void {\n super.setBaseRouteMeta(name);\n\n this.setSwaggerOperation(name);\n this.setSwaggerPathParams(name);\n this.setSwaggerQueryParams(name);\n this.setSwaggerResponseOk(name);\n // set decorators after Swagger so metadata can be overwritten\n this.setDecorators(name);\n }\n\n protected setSwaggerOperation(name: BaseRouteName) {\n const summary: string = Swagger.operationsMap(this.modelName)[name];\n const operationId: string =\n name + this.targetProto.constructor.name + this.modelName;\n Swagger.setOperation({ summary, operationId }, this.targetProto[name]);\n }\n\n protected setSwaggerPathParams(name: BaseRouteName): void {\n const metadata: any[] = Swagger.getParams(this.targetProto[name]);\n const withoutPrimary: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"getManyBase\",\n ];\n\n const removePrimary: boolean = isIn(name, withoutPrimary);\n const params: {} = keys(this.options.params)\n .filter((key: string) => !get(this.options, `params.${key}.disabled`))\n .filter(\n (key: string) =>\n !(removePrimary && get(this.options, `params.${key}.primary`))\n )\n .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {});\n\n const pathParamsMeta: any[] = Swagger.createPathParamsMeta(params);\n Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]);\n }\n\n protected setSwaggerQueryParams(name: BaseRouteName): void {\n const metadata: any[] = Swagger.getParams(this.targetProto[name]);\n const queryParamsMeta = Swagger.createQueryParamsMeta(name, this.options);\n Swagger.setParams(\n [...metadata, ...queryParamsMeta],\n this.targetProto[name]\n );\n }\n\n protected setSwaggerResponseOk(name: BaseRouteName): void {\n const metadata = Swagger.getResponseOk(this.targetProto[name]);\n const metadataToAdd =\n Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {};\n Swagger.setResponseOk(\n { ...metadata, ...metadataToAdd },\n this.targetProto[name]\n );\n }\n\n protected setResponseModels() {\n const modelType = isFunction(this.modelType)\n ? this.modelType\n : SerializeHelper.createGetOneResponseDto(this.modelName);\n\n this.swaggerModels = {};\n\n this.swaggerModels.get = isFunction(this.options.serialize?.get)\n ? this.options.serialize?.get\n : modelType;\n this.swaggerModels.getMany =\n this.options.serialize?.getMany ||\n SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName);\n this.swaggerModels.create = isFunction(this.options.serialize?.create)\n ? this.options.serialize?.create\n : modelType;\n this.swaggerModels.update = isFunction(this.options.serialize?.update)\n ? this.options.serialize?.update\n : modelType;\n this.swaggerModels.replace = isFunction(this.options.serialize?.replace)\n ? this.options.serialize?.replace\n : modelType;\n this.swaggerModels.delete = isFunction(this.options.serialize?.delete)\n ? this.options.serialize?.delete\n : modelType;\n this.swaggerModels.recover = isFunction(this.options.serialize?.recover)\n ? this.options.serialize?.recover\n : modelType;\n Swagger.setExtraModels(this.swaggerModels);\n }\n\n protected override overrideRoutes(routesSchema: BaseRoute[]): void {\n super.overrideRoutes(routesSchema);\n\n Object.getOwnPropertyNames(this.targetProto).forEach(\n (name: string): void => {\n const override: BaseRouteName = R.getOverrideRoute(\n this.targetProto[name]\n );\n const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) =>\n isEqual(r.name, override)\n );\n\n if (override && route && route.enable) {\n const operation = Swagger.getOperation(this.targetProto[name]);\n const baseOperation = Swagger.getOperation(\n this.targetProto[override]\n );\n const swaggerParams = Swagger.getParams(this.targetProto[name]);\n const baseSwaggerParams = Swagger.getParams(\n this.targetProto[override]\n );\n const responseOk = Swagger.getResponseOk(this.targetProto[name]);\n const baseResponseOk = Swagger.getResponseOk(\n this.targetProto[override]\n );\n\n Swagger.setOperation(\n { ...baseOperation, ...operation },\n this.targetProto[name]\n );\n Swagger.setParams(\n [...baseSwaggerParams, ...swaggerParams],\n this.targetProto[name]\n );\n Swagger.setResponseOk(\n { ...baseResponseOk, ...responseOk },\n this.targetProto[name]\n );\n }\n }\n );\n }\n}\n","import { QueryBuilderService } from \"@2amtech/crudx\";\nimport {\n MergedCrudOptions,\n ParamsOptions,\n RequestQueryBuilderOptions,\n} from \"@2amtech/crudx\";\nimport { BaseRouteName } from \"@2amtech/crudx\";\nimport { R } from \"@2amtech/crudx\";\nimport { safeRequire } from \"@2amtech/crudx\";\nimport { HttpStatus } from \"@nestjs/common\";\nimport { getSchemaPath } from \"@nestjs/swagger\";\nimport * as SWAGGER_CONSTANTS from \"@nestjs/swagger/dist/constants\";\nimport { get, isArray, isString, keys } from \"lodash\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pluralize = require(\"pluralize\");\n\nexport const swaggerPkgJson = safeRequire(\"@nestjs/swagger/package.json\", () =>\n require(\"@nestjs/swagger/package.json\")\n);\n\nexport class Swagger {\n static operationsMap(modelName: string): { [key in BaseRouteName]: string } {\n return {\n getManyBase: `Retrieve multiple ${pluralize(modelName)}`,\n getOneBase: `Retrieve a single ${modelName}`,\n createManyBase: `Create multiple ${pluralize(modelName)}`,\n createOneBase: `Create a single ${modelName}`,\n updateOneBase: `Update a single ${modelName}`,\n replaceOneBase: `Replace a single ${modelName}`,\n deleteOneBase: `Delete a single ${modelName}`,\n recoverOneBase: `Recover one ${modelName}`,\n };\n }\n\n static setOperation(metadata: any, func: Function) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func);\n }\n\n static setParams(metadata: any, func: Function) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func);\n }\n\n static setExtraModels(swaggerModels: any) {\n /* istanbul ignore else */\n if (SWAGGER_CONSTANTS) {\n const meta = Swagger.getExtraModels(swaggerModels.get);\n const models: any[] = [\n ...meta,\n ...keys(swaggerModels)\n .map((name) => swaggerModels[name])\n .filter((one) => one && one.name !== swaggerModels.get.name),\n ];\n R.set(\n SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS,\n models,\n swaggerModels.get\n );\n }\n }\n\n static setResponseOk(metadata: any, func: Function) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func);\n }\n\n static getOperation(func: Function): any {\n return R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {};\n }\n\n static getParams(func: Function): any[] {\n return R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || [];\n }\n\n static getExtraModels(target: any): any[] {\n return R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || [];\n }\n\n static getResponseOk(func: Function): any {\n return R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {};\n }\n\n static createResponseMeta(\n name: BaseRouteName,\n options: MergedCrudOptions,\n swaggerModels: any\n ): any {\n const { routes, query } = options;\n\n switch (name) {\n case \"getOneBase\":\n return {\n [HttpStatus.OK]: {\n description: \"Get one base response\",\n type: swaggerModels?.get ?? {},\n },\n };\n case \"getManyBase\":\n return {\n [HttpStatus.OK]: query?.alwaysPaginate\n ? {\n description: \"Get paginated response\",\n type: swaggerModels.getMany,\n }\n : {\n description: \"Get many base response\",\n schema: {\n oneOf: [\n {\n $ref: getSchemaPath(swaggerModels.getMany.name),\n },\n {\n type: \"array\",\n items: {\n $ref: getSchemaPath(swaggerModels.get.name),\n },\n },\n ],\n },\n },\n };\n case \"createOneBase\":\n return {\n [HttpStatus.CREATED]: {\n description: \"Get create one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.create.name),\n },\n },\n };\n case \"createManyBase\":\n return {\n [HttpStatus.CREATED]: swaggerModels.createMany\n ? {\n description: \"Get create many base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.createMany.name),\n },\n }\n : {\n description: \"Get create many base response\",\n schema: {\n type: \"array\",\n items: {\n $ref: getSchemaPath(swaggerModels.create.name),\n },\n },\n },\n };\n case \"deleteOneBase\":\n return {\n [HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted\n ? {\n description: \"Delete one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.delete.name),\n },\n }\n : {\n description: \"Delete one base response\",\n },\n };\n case \"recoverOneBase\":\n return {\n [HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered\n ? {\n description: \"Recover one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.recover.name),\n },\n }\n : {\n description: \"Recover one base response\",\n },\n };\n default:\n const dto = swaggerModels[name.split(\"OneBase\")[0]];\n return {\n [HttpStatus.OK]: {\n description: \"Response\",\n schema: { $ref: getSchemaPath(dto.name) },\n },\n };\n }\n }\n\n static createPathParamsMeta(options: ParamsOptions): any[] {\n return SWAGGER_CONSTANTS\n ? keys(options).map((param) => ({\n name: param,\n required: true,\n in: \"path\",\n type: options[param].type === \"number\" ? Number : String,\n enum: isArray(options[param]?.enum)\n ? Object.values(>options[param].enum)\n : undefined,\n }))\n : [];\n }\n\n static createQueryParamsMeta(\n name: BaseRouteName,\n options: MergedCrudOptions\n ) {\n const {\n delim: d,\n delimStr: coma,\n fields,\n search,\n filter,\n or,\n join,\n sort,\n limit,\n offset,\n page,\n cache,\n includeDeleted,\n } = Swagger.getQueryParamsNames();\n const docsLink = (a: string) =>\n // TODO: to modify\n `Docs`;\n\n const fieldsMetaBase = {\n name: fields,\n description: `Selects resource fields. ${docsLink(\"select\")}`,\n required: false,\n in: \"query\",\n };\n const fieldsMeta = {\n ...fieldsMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: false,\n };\n\n const searchMetaBase = {\n name: search,\n description: `Adds search condition. ${docsLink(\"search\")}`,\n required: false,\n in: \"query\",\n };\n\n const searchMeta = { ...searchMetaBase, schema: { type: \"string\" } };\n\n const filterMetaBase = {\n name: filter,\n description: `Adds filter condition. ${docsLink(\"filter\")}`,\n required: false,\n in: \"query\",\n };\n\n const filterMeta = {\n ...filterMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const orMetaBase = {\n name: or,\n description: `Adds OR condition. ${docsLink(\"or\")}`,\n required: false,\n in: \"query\",\n };\n\n const orMeta = {\n ...orMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const sortMetaBase = {\n name: sort,\n description: `Adds sort by field. ${docsLink(\"sort\")}`,\n required: false,\n in: \"query\",\n };\n\n const sortMeta = {\n ...sortMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const joinMetaBase = {\n name: join,\n description: `Adds relational resources. ${docsLink(\"join\")}`,\n required: false,\n in: \"query\",\n };\n\n const joinMeta = {\n ...joinMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const limitMetaBase = {\n name: limit,\n description: `Limit amount of resources. ${docsLink(\"limit\")}`,\n required: false,\n in: \"query\",\n };\n\n const limitMeta = { ...limitMetaBase, schema: { type: \"integer\" } };\n\n const offsetMetaBase = {\n name: offset,\n description: `Offset amount of resources. ${docsLink(\"offset\")}`,\n required: false,\n in: \"query\",\n };\n\n const offsetMeta = { ...offsetMetaBase, schema: { type: \"integer\" } };\n\n const pageMetaBase = {\n name: page,\n description: `Page portion of resources. ${docsLink(\"page\")}`,\n required: false,\n in: \"query\",\n };\n\n const pageMeta = { ...pageMetaBase, schema: { type: \"integer\" } };\n\n const cacheMetaBase = {\n name: cache,\n description: `Reset cache (if was enabled). ${docsLink(\"cache\")}`,\n required: false,\n in: \"query\",\n };\n\n const cacheMeta = {\n ...cacheMetaBase,\n schema: { type: \"integer\", minimum: 0, maximum: 1 },\n };\n\n const includeDeletedMetaBase = {\n name: includeDeleted,\n description: `Include deleted. ${docsLink(\"includeDeleted\")}`,\n required: false,\n in: \"query\",\n };\n\n const includeDeletedMeta = {\n ...includeDeletedMetaBase,\n schema: { type: \"integer\", minimum: 0, maximum: 1 },\n };\n\n switch (name) {\n case \"getManyBase\":\n return options.query?.softDelete\n ? [\n fieldsMeta,\n searchMeta,\n filterMeta,\n orMeta,\n sortMeta,\n joinMeta,\n limitMeta,\n offsetMeta,\n pageMeta,\n cacheMeta,\n includeDeletedMeta,\n ]\n : [\n fieldsMeta,\n searchMeta,\n filterMeta,\n orMeta,\n sortMeta,\n joinMeta,\n limitMeta,\n offsetMeta,\n pageMeta,\n cacheMeta,\n ];\n case \"getOneBase\":\n return options.query?.softDelete\n ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta]\n : [fieldsMeta, joinMeta, cacheMeta];\n default:\n return [];\n }\n }\n\n static getQueryParamsNames() {\n const qbOptions: RequestQueryBuilderOptions =\n QueryBuilderService.getOptions();\n const name = (n: any) => {\n const selected = get(qbOptions, `paramNamesMap[${n}]`);\n return isString(selected) ? selected : selected?.[0];\n };\n\n return {\n delim: qbOptions.delim,\n delimStr: qbOptions.delimStr,\n fields: name(\"fields\"),\n search: name(\"search\"),\n filter: name(\"filter\"),\n or: name(\"or\"),\n join: name(\"join\"),\n sort: name(\"sort\"),\n limit: name(\"limit\"),\n offset: name(\"offset\"),\n page: name(\"page\"),\n cache: name(\"cache\"),\n includeDeleted: name(\"includeDeleted\"),\n };\n }\n}\n","module.exports = require(\"@nestjs/swagger/dist/constants\");","module.exports = require(\"pluralize\");","module.exports = require(\"@nestjs/swagger/package.json\");","import { Module } from \"@nestjs/common\";\n\nimport { AppController } from \"./app.controller\";\nimport { AppService } from \"./app.service\";\nimport { ConfigModule, ConfigService } from \"@nestjs/config\";\nimport { TypeOrmModule, TypeOrmModuleOptions } from \"@nestjs/typeorm\";\nimport { databaseConfig } from \"../database.config\";\nimport { User } from \"./user.model\";\n\n@Module({\n imports: [\n ConfigModule.forRoot({\n isGlobal: true,\n envFilePath: [\".env.testing\"],\n load: [databaseConfig],\n }),\n TypeOrmModule.forRootAsync({\n useFactory: (config: ConfigService) =>\n {\n type: config.get(\"database.type\"),\n host: config.get(\"database.host\"),\n port: config.get(\"database.port\"),\n username: config.get(\"database.username\"),\n password: config.get(\"database.password\"),\n database: config.get(\"database.database\"),\n entities: config.get(\"database.entities\"),\n synchronize: config.get(\"database.synchronize\"),\n },\n inject: [ConfigService],\n }),\n TypeOrmModule.forFeature([User]),\n ],\n controllers: [AppController],\n providers: [AppService],\n})\nexport class AppModule {}\n","import { Controller } from \"@nestjs/common\";\n\nimport { AppService } from \"./app.service\";\nimport { User } from \"./user.model\";\nimport { Crud, CrudController, CrudRequest, Override } from \"@2amtech/crudx\";\nimport {\n ApiOperation,\n ApiOperationOptions,\n ApiResponse,\n ApiResponseOptions,\n ApiTags,\n} from \"@nestjs/swagger\";\n\n@ApiTags(\"v1\")\n@Crud({\n model: {\n type: User,\n },\n})\n@Controller(\"/user\")\nexport class AppController implements CrudController {\n constructor(public service: AppService) {}\n\n get base(): CrudController {\n return this;\n }\n\n @Override(\"getOneBase\")\n @ApiResponse({\n status: 200,\n description: \"Overriden description\",\n })\n @ApiOperation({\n summary: \"Overriden Summary\",\n })\n async getOneOverride(req: CrudRequest): Promise {\n return this.base.getOneBase(req);\n }\n}\n","import { Catch, Injectable } from \"@nestjs/common\";\nimport { User } from \"./user.model\";\nimport { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\nimport { ValidationError } from \"class-validator\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class AppService extends TypeOrmCrudService {\n constructor(@InjectRepository(User) readonly repo) {\n super(repo);\n }\n}\n","import { ApiProperty } from \"@nestjs/swagger\";\nimport { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from \"typeorm\";\n\n@Entity(\"user_swagger\")\nexport class User extends BaseEntity {\n @ApiProperty()\n @PrimaryGeneratedColumn()\n id: number;\n\n @ApiProperty()\n @Column({ type: \"varchar\", length: 150 })\n name: string;\n\n @ApiProperty()\n @Column({ type: \"integer\", nullable: true })\n age: number | null;\n}\n","module.exports = require(\"@nestjs/typeorm\");","module.exports = require(\"@nestjs/config\");","import { registerAs } from \"@nestjs/config\";\nimport { User } from \"./app/user.model\";\n\nexport const databaseConfig = registerAs(\"database\", () => ({\n type: process.env[\"DB_TYPE\"],\n host: process.env[\"DB_HOST\"],\n port: process.env[\"DB_PORT\"],\n username: process.env[\"DB_USERNAME\"],\n password: process.env[\"DB_PASSWORD\"],\n database: process.env[\"DB_DATABASE\"],\n entities: [User],\n synchronize: true,\n autoLoadEntities: true,\n encoding: process.env[\"DB_CHARSET\"],\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * This is not a production server yet!\n * This is only a minimal backend to get started.\n */\n\nimport { CrudConfigService } from \"@2amtech/crudx\";\nimport { Logger } from \"@nestjs/common\";\nimport { NestFactory } from \"@nestjs/core\";\n\nimport { DocumentBuilder, SwaggerModule } from \"@nestjs/swagger\";\nimport { CrudxSwaggerRoutesFactory } from \"../../../src/services/crudx.swagger.routes.factory\";\n\nCrudConfigService.load({\n query: {\n limit: 20,\n },\n routesFactory: CrudxSwaggerRoutesFactory,\n});\n\nimport { AppModule } from \"./app/app.module\";\n\nasync function bootstrap() {\n const app = await NestFactory.create(AppModule);\n const globalPrefix = \"api\";\n app.setGlobalPrefix(globalPrefix);\n const port = process.env.PORT || 3000;\n\n const config = new DocumentBuilder()\n .setTitle(\"Crudx Swagger\")\n .setDescription(\"The Crudx-Swagger API Demo\")\n .setVersion(\"1.0\")\n .addTag(\"crudx-swagger\")\n .build();\n const document = SwaggerModule.createDocument(app, config);\n SwaggerModule.setup(\"api/docs\", app, document);\n\n await app.listen(port);\n\n Logger.log(\n `🚀 Application is running on: http://localhost:${port}/${globalPrefix}`\n );\n}\n\nbootstrap();\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/packages/crudx-swagger/package.json b/dist/packages/crudx-swagger/package.json new file mode 100644 index 000000000..305046c8b --- /dev/null +++ b/dist/packages/crudx-swagger/package.json @@ -0,0 +1,30 @@ +{ + "name": "@2amtech/crudx-swagger", + "author": "Antonio", + "description": "NestJs package to apply swagger meta-data into routes generated with @2amtech/crudx package", + "version": "1.0.0", + "dependencies": { + "tslib": "^2.3.0", + "@2amtech/crudx": "", + "@nestjs/common": "^10.1.3", + "@nestjs/swagger": "^7.1.6", + "lodash": "^4.17.21" + }, + "devDependencies": { + "supertest": "^6.3.4", + "@types/uuid": "^9.0.8" + }, + "keywords": [ + "typescript", + "nest", + "nestjs", + "api", + "crud", + "swagger-docs", + "docs" + ], + "type": "commonjs", + "main": "./src/index.js", + "typings": "./src/index.d.ts", + "types": "./src/index.d.ts" +} diff --git a/dist/packages/crudx-swagger/src/index.d.ts b/dist/packages/crudx-swagger/src/index.d.ts new file mode 100644 index 000000000..72aff5543 --- /dev/null +++ b/dist/packages/crudx-swagger/src/index.d.ts @@ -0,0 +1,2 @@ +export * from "./lib"; +export * from "./services"; diff --git a/dist/packages/crudx-swagger/src/index.js b/dist/packages/crudx-swagger/src/index.js new file mode 100644 index 000000000..638f3c023 --- /dev/null +++ b/dist/packages/crudx-swagger/src/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./lib"), exports); +tslib_1.__exportStar(require("./services"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/index.js.map b/dist/packages/crudx-swagger/src/index.js.map new file mode 100644 index 000000000..f3bd0d920 --- /dev/null +++ b/dist/packages/crudx-swagger/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/crudx-swagger/src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,qDAA2B"} \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/lib/index.d.ts b/dist/packages/crudx-swagger/src/lib/index.d.ts new file mode 100644 index 000000000..2655d9cad --- /dev/null +++ b/dist/packages/crudx-swagger/src/lib/index.d.ts @@ -0,0 +1 @@ +export * from "./swagger.helper"; diff --git a/dist/packages/crudx-swagger/src/lib/index.js b/dist/packages/crudx-swagger/src/lib/index.js new file mode 100644 index 000000000..d6acd6231 --- /dev/null +++ b/dist/packages/crudx-swagger/src/lib/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./swagger.helper"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/lib/index.js.map b/dist/packages/crudx-swagger/src/lib/index.js.map new file mode 100644 index 000000000..402eb1ab6 --- /dev/null +++ b/dist/packages/crudx-swagger/src/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx-swagger/src/lib/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC"} \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/lib/swagger.helper.d.ts b/dist/packages/crudx-swagger/src/lib/swagger.helper.d.ts new file mode 100644 index 000000000..427b46c60 --- /dev/null +++ b/dist/packages/crudx-swagger/src/lib/swagger.helper.d.ts @@ -0,0 +1,42 @@ +import { MergedCrudOptions, ParamsOptions } from "@2amtech/crudx"; +import { BaseRouteName } from "@2amtech/crudx"; +export declare const swaggerPkgJson: any; +export declare class Swagger { + static operationsMap(modelName: string): { + [key in BaseRouteName]: string; + }; + static setOperation(metadata: any, func: Function): void; + static setParams(metadata: any, func: Function): void; + static setExtraModels(swaggerModels: any): void; + static setResponseOk(metadata: any, func: Function): void; + static getOperation(func: Function): any; + static getParams(func: Function): any[]; + static getExtraModels(target: any): any[]; + static getResponseOk(func: Function): any; + static createResponseMeta(name: BaseRouteName, options: MergedCrudOptions, swaggerModels: any): any; + static createPathParamsMeta(options: ParamsOptions): any[]; + static createQueryParamsMeta(name: BaseRouteName, options: MergedCrudOptions): { + schema: { + type: string; + }; + name: undefined; + description: string; + required: boolean; + in: string; + }[]; + static getQueryParamsNames(): { + delim: string; + delimStr: string; + fields: undefined; + search: undefined; + filter: undefined; + or: undefined; + join: undefined; + sort: undefined; + limit: undefined; + offset: undefined; + page: undefined; + cache: undefined; + includeDeleted: undefined; + }; +} diff --git a/dist/packages/crudx-swagger/src/lib/swagger.helper.js b/dist/packages/crudx-swagger/src/lib/swagger.helper.js new file mode 100644 index 000000000..9fbac0520 --- /dev/null +++ b/dist/packages/crudx-swagger/src/lib/swagger.helper.js @@ -0,0 +1,370 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Swagger = exports.swaggerPkgJson = void 0; +const crudx_1 = require("@2amtech/crudx"); +const crudx_2 = require("@2amtech/crudx"); +const crudx_3 = require("@2amtech/crudx"); +const common_1 = require("@nestjs/common"); +const swagger_1 = require("@nestjs/swagger"); +const SWAGGER_CONSTANTS = require("@nestjs/swagger/dist/constants"); +const lodash_1 = require("lodash"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const pluralize = require("pluralize"); +exports.swaggerPkgJson = (0, crudx_3.safeRequire)("@nestjs/swagger/package.json", () => require("@nestjs/swagger/package.json")); +class Swagger { + static operationsMap(modelName) { + return { + getManyBase: `Retrieve multiple ${pluralize(modelName)}`, + getOneBase: `Retrieve a single ${modelName}`, + createManyBase: `Create multiple ${pluralize(modelName)}`, + createOneBase: `Create a single ${modelName}`, + updateOneBase: `Update a single ${modelName}`, + replaceOneBase: `Replace a single ${modelName}`, + deleteOneBase: `Delete a single ${modelName}`, + recoverOneBase: `Recover one ${modelName}`, + }; + } + static setOperation(metadata, func) { + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func); + } + static setParams(metadata, func) { + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func); + } + static setExtraModels(swaggerModels) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + const meta = Swagger.getExtraModels(swaggerModels.get); + const models = [ + ...meta, + ...(0, lodash_1.keys)(swaggerModels) + .map((name) => swaggerModels[name]) + .filter((one) => one && one.name !== swaggerModels.get.name), + ]; + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, models, swaggerModels.get); + } + } + static setResponseOk(metadata, func) { + crudx_2.R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func); + } + static getOperation(func) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {}; + } + static getParams(func) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || []; + } + static getExtraModels(target) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || []; + } + static getResponseOk(func) { + return crudx_2.R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {}; + } + static createResponseMeta(name, options, swaggerModels) { + const { routes, query } = options; + switch (name) { + case "getOneBase": + return { + [common_1.HttpStatus.OK]: { + description: "Get one base response", + type: swaggerModels?.get ?? {}, + }, + }; + case "getManyBase": + return { + [common_1.HttpStatus.OK]: query?.alwaysPaginate + ? { + description: "Get paginated response", + type: swaggerModels.getMany, + } + : { + description: "Get many base response", + schema: { + oneOf: [ + { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.getMany.name), + }, + { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.get.name), + }, + }, + ], + }, + }, + }; + case "createOneBase": + return { + [common_1.HttpStatus.CREATED]: { + description: "Get create one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }; + case "createManyBase": + return { + [common_1.HttpStatus.CREATED]: swaggerModels.createMany + ? { + description: "Get create many base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.createMany.name), + }, + } + : { + description: "Get create many base response", + schema: { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }, + }; + case "deleteOneBase": + return { + [common_1.HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted + ? { + description: "Delete one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.delete.name), + }, + } + : { + description: "Delete one base response", + }, + }; + case "recoverOneBase": + return { + [common_1.HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered + ? { + description: "Recover one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.recover.name), + }, + } + : { + description: "Recover one base response", + }, + }; + default: + const dto = swaggerModels[name.split("OneBase")[0]]; + return { + [common_1.HttpStatus.OK]: { + description: "Response", + schema: { $ref: (0, swagger_1.getSchemaPath)(dto.name) }, + }, + }; + } + } + static createPathParamsMeta(options) { + return SWAGGER_CONSTANTS + ? (0, lodash_1.keys)(options).map((param) => ({ + name: param, + required: true, + in: "path", + type: options[param].type === "number" ? Number : String, + enum: (0, lodash_1.isArray)(options[param]?.enum) + ? Object.values(options[param].enum) + : undefined, + })) + : []; + } + static createQueryParamsMeta(name, options) { + const { delim: d, delimStr: coma, fields, search, filter, or, join, sort, limit, offset, page, cache, includeDeleted, } = Swagger.getQueryParamsNames(); + const docsLink = (a) => + // TODO: to modify + `Docs`; + const fieldsMetaBase = { + name: fields, + description: `Selects resource fields. ${docsLink("select")}`, + required: false, + in: "query", + }; + const fieldsMeta = { + ...fieldsMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: false, + }; + const searchMetaBase = { + name: search, + description: `Adds search condition. ${docsLink("search")}`, + required: false, + in: "query", + }; + const searchMeta = { ...searchMetaBase, schema: { type: "string" } }; + const filterMetaBase = { + name: filter, + description: `Adds filter condition. ${docsLink("filter")}`, + required: false, + in: "query", + }; + const filterMeta = { + ...filterMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const orMetaBase = { + name: or, + description: `Adds OR condition. ${docsLink("or")}`, + required: false, + in: "query", + }; + const orMeta = { + ...orMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const sortMetaBase = { + name: sort, + description: `Adds sort by field. ${docsLink("sort")}`, + required: false, + in: "query", + }; + const sortMeta = { + ...sortMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const joinMetaBase = { + name: join, + description: `Adds relational resources. ${docsLink("join")}`, + required: false, + in: "query", + }; + const joinMeta = { + ...joinMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const limitMetaBase = { + name: limit, + description: `Limit amount of resources. ${docsLink("limit")}`, + required: false, + in: "query", + }; + const limitMeta = { ...limitMetaBase, schema: { type: "integer" } }; + const offsetMetaBase = { + name: offset, + description: `Offset amount of resources. ${docsLink("offset")}`, + required: false, + in: "query", + }; + const offsetMeta = { ...offsetMetaBase, schema: { type: "integer" } }; + const pageMetaBase = { + name: page, + description: `Page portion of resources. ${docsLink("page")}`, + required: false, + in: "query", + }; + const pageMeta = { ...pageMetaBase, schema: { type: "integer" } }; + const cacheMetaBase = { + name: cache, + description: `Reset cache (if was enabled). ${docsLink("cache")}`, + required: false, + in: "query", + }; + const cacheMeta = { + ...cacheMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + const includeDeletedMetaBase = { + name: includeDeleted, + description: `Include deleted. ${docsLink("includeDeleted")}`, + required: false, + in: "query", + }; + const includeDeletedMeta = { + ...includeDeletedMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + switch (name) { + case "getManyBase": + return options.query?.softDelete + ? [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + includeDeletedMeta, + ] + : [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + ]; + case "getOneBase": + return options.query?.softDelete + ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta] + : [fieldsMeta, joinMeta, cacheMeta]; + default: + return []; + } + } + static getQueryParamsNames() { + const qbOptions = crudx_1.QueryBuilderService.getOptions(); + const name = (n) => { + const selected = (0, lodash_1.get)(qbOptions, `paramNamesMap[${n}]`); + return (0, lodash_1.isString)(selected) ? selected : selected?.[0]; + }; + return { + delim: qbOptions.delim, + delimStr: qbOptions.delimStr, + fields: name("fields"), + search: name("search"), + filter: name("filter"), + or: name("or"), + join: name("join"), + sort: name("sort"), + limit: name("limit"), + offset: name("offset"), + page: name("page"), + cache: name("cache"), + includeDeleted: name("includeDeleted"), + }; + } +} +exports.Swagger = Swagger; +//# sourceMappingURL=swagger.helper.js.map \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/lib/swagger.helper.js.map b/dist/packages/crudx-swagger/src/lib/swagger.helper.js.map new file mode 100644 index 000000000..550a8c3eb --- /dev/null +++ b/dist/packages/crudx-swagger/src/lib/swagger.helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swagger.helper.js","sourceRoot":"","sources":["../../../../../packages/crudx-swagger/src/lib/swagger.helper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.d.ts b/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.d.ts new file mode 100644 index 000000000..f63ed81ef --- /dev/null +++ b/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.d.ts @@ -0,0 +1,14 @@ +import { BaseRoute, BaseRouteName, CrudOptions, RoutesFactoryService } from "@2amtech/crudx"; +export declare class CrudxSwaggerRoutesFactory extends RoutesFactoryService { + protected target: any; + protected swaggerModels: any; + constructor(target: any, options: CrudOptions); + protected create(): void; + protected setBaseRouteMeta(name: BaseRouteName): void; + protected setSwaggerOperation(name: BaseRouteName): void; + protected setSwaggerPathParams(name: BaseRouteName): void; + protected setSwaggerQueryParams(name: BaseRouteName): void; + protected setSwaggerResponseOk(name: BaseRouteName): void; + protected setResponseModels(): void; + protected overrideRoutes(routesSchema: BaseRoute[]): void; +} diff --git a/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js b/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js new file mode 100644 index 000000000..8504b8a77 --- /dev/null +++ b/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js @@ -0,0 +1,108 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudxSwaggerRoutesFactory = void 0; +const crudx_1 = require("@2amtech/crudx"); +const lodash_1 = require("lodash"); +const swagger_helper_1 = require("../lib/swagger.helper"); +class CrudxSwaggerRoutesFactory extends crudx_1.RoutesFactoryService { + constructor(target, options) { + super(target, options); + this.target = target; + this.swaggerModels = {}; + } + create() { + const routesSchema = this.getRoutesSchema(); + this.mergeOptions(); + this.setResponseModels(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + setBaseRouteMeta(name) { + super.setBaseRouteMeta(name); + this.setSwaggerOperation(name); + this.setSwaggerPathParams(name); + this.setSwaggerQueryParams(name); + this.setSwaggerResponseOk(name); + // set decorators after Swagger so metadata can be overwritten + this.setDecorators(name); + } + setSwaggerOperation(name) { + const summary = swagger_helper_1.Swagger.operationsMap(this.modelName)[name]; + const operationId = name + this.targetProto.constructor.name + this.modelName; + swagger_helper_1.Swagger.setOperation({ summary, operationId }, this.targetProto[name]); + } + setSwaggerPathParams(name) { + const metadata = swagger_helper_1.Swagger.getParams(this.targetProto[name]); + const withoutPrimary = [ + "createManyBase", + "createOneBase", + "getManyBase", + ]; + const removePrimary = (0, crudx_1.isIn)(name, withoutPrimary); + const params = (0, lodash_1.keys)(this.options.params) + .filter((key) => !(0, lodash_1.get)(this.options, `params.${key}.disabled`)) + .filter((key) => !(removePrimary && (0, lodash_1.get)(this.options, `params.${key}.primary`))) + .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {}); + const pathParamsMeta = swagger_helper_1.Swagger.createPathParamsMeta(params); + swagger_helper_1.Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]); + } + setSwaggerQueryParams(name) { + const metadata = swagger_helper_1.Swagger.getParams(this.targetProto[name]); + const queryParamsMeta = swagger_helper_1.Swagger.createQueryParamsMeta(name, this.options); + swagger_helper_1.Swagger.setParams([...metadata, ...queryParamsMeta], this.targetProto[name]); + } + setSwaggerResponseOk(name) { + const metadata = swagger_helper_1.Swagger.getResponseOk(this.targetProto[name]); + const metadataToAdd = swagger_helper_1.Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {}; + swagger_helper_1.Swagger.setResponseOk({ ...metadata, ...metadataToAdd }, this.targetProto[name]); + } + setResponseModels() { + const modelType = (0, lodash_1.isFunction)(this.modelType) + ? this.modelType + : crudx_1.SerializeHelper.createGetOneResponseDto(this.modelName); + this.swaggerModels = {}; + this.swaggerModels.get = (0, lodash_1.isFunction)(this.options.serialize?.get) + ? this.options.serialize?.get + : modelType; + this.swaggerModels.getMany = + this.options.serialize?.getMany || + crudx_1.SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName); + this.swaggerModels.create = (0, lodash_1.isFunction)(this.options.serialize?.create) + ? this.options.serialize?.create + : modelType; + this.swaggerModels.update = (0, lodash_1.isFunction)(this.options.serialize?.update) + ? this.options.serialize?.update + : modelType; + this.swaggerModels.replace = (0, lodash_1.isFunction)(this.options.serialize?.replace) + ? this.options.serialize?.replace + : modelType; + this.swaggerModels.delete = (0, lodash_1.isFunction)(this.options.serialize?.delete) + ? this.options.serialize?.delete + : modelType; + this.swaggerModels.recover = (0, lodash_1.isFunction)(this.options.serialize?.recover) + ? this.options.serialize?.recover + : modelType; + swagger_helper_1.Swagger.setExtraModels(this.swaggerModels); + } + overrideRoutes(routesSchema) { + super.overrideRoutes(routesSchema); + Object.getOwnPropertyNames(this.targetProto).forEach((name) => { + const override = crudx_1.R.getOverrideRoute(this.targetProto[name]); + const route = routesSchema.find((r) => (0, lodash_1.isEqual)(r.name, override)); + if (override && route && route.enable) { + const operation = swagger_helper_1.Swagger.getOperation(this.targetProto[name]); + const baseOperation = swagger_helper_1.Swagger.getOperation(this.targetProto[override]); + const swaggerParams = swagger_helper_1.Swagger.getParams(this.targetProto[name]); + const baseSwaggerParams = swagger_helper_1.Swagger.getParams(this.targetProto[override]); + const responseOk = swagger_helper_1.Swagger.getResponseOk(this.targetProto[name]); + const baseResponseOk = swagger_helper_1.Swagger.getResponseOk(this.targetProto[override]); + swagger_helper_1.Swagger.setOperation({ ...baseOperation, ...operation }, this.targetProto[name]); + swagger_helper_1.Swagger.setParams([...baseSwaggerParams, ...swaggerParams], this.targetProto[name]); + swagger_helper_1.Swagger.setResponseOk({ ...baseResponseOk, ...responseOk }, this.targetProto[name]); + } + }); + } +} +exports.CrudxSwaggerRoutesFactory = CrudxSwaggerRoutesFactory; +//# sourceMappingURL=crudx.swagger.routes.factory.js.map \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js.map b/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js.map new file mode 100644 index 000000000..429f543a5 --- /dev/null +++ b/dist/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crudx.swagger.routes.factory.js","sourceRoot":"","sources":["../../../../../packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts"],"names":[],"mappings":";;;AAAA,0CAQwB;AACxB,mCAAwD;AAExD,0DAAgD;AAEhD,MAAa,yBAA0B,SAAQ,4BAAoB;IAGjE,YAA+B,MAAW,EAAE,OAAoB;QAC9D,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QADM,WAAM,GAAN,MAAM,CAAK;QAFhC,kBAAa,GAAQ,EAAE,CAAC;IAIlC,CAAC;IAEkB,MAAM;QACvB,MAAM,YAAY,GAAgB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAEkB,gBAAgB,CAAC,IAAmB;QACrD,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChC,8DAA8D;QAC9D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAES,mBAAmB,CAAC,IAAmB;QAC/C,MAAM,OAAO,GAAW,wBAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,WAAW,GACf,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5D,wBAAO,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,CAAC;IAES,oBAAoB,CAAC,IAAmB;QAChD,MAAM,QAAQ,GAAU,wBAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,cAAc,GAAoB;YACtC,gBAAgB;YAChB,eAAe;YACf,aAAa;SACd,CAAC;QAEF,MAAM,aAAa,GAAY,IAAA,YAAI,EAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAO,IAAA,aAAI,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aACzC,MAAM,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,IAAA,YAAG,EAAC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,WAAW,CAAC,CAAC;aACrE,MAAM,CACL,CAAC,GAAW,EAAE,EAAE,CACd,CAAC,CAAC,aAAa,IAAI,IAAA,YAAG,EAAC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC,CACjE;aACA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEnE,MAAM,cAAc,GAAU,wBAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACnE,wBAAO,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,cAAc,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAES,qBAAqB,CAAC,IAAmB;QACjD,MAAM,QAAQ,GAAU,wBAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,eAAe,GAAG,wBAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1E,wBAAO,CAAC,SAAS,CACf,CAAC,GAAG,QAAQ,EAAE,GAAG,eAAe,CAAC,EACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,CAAC;IACJ,CAAC;IAES,oBAAoB,CAAC,IAAmB;QAChD,MAAM,QAAQ,GAAG,wBAAO,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,aAAa,GACjB,wBAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC3E,wBAAO,CAAC,aAAa,CACnB,EAAE,GAAG,QAAQ,EAAE,GAAG,aAAa,EAAE,EACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,CAAC;IACJ,CAAC;IAES,iBAAiB;QACzB,MAAM,SAAS,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,SAAS,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC,SAAS;YAChB,CAAC,CAAC,uBAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QAExB,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;YAC9D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG;YAC7B,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,CAAC,OAAO;YACxB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO;gBAC/B,uBAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM;YAChC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM;YAChC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;YACtE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO;YACjC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;YACpE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM;YAChC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;YACtE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO;YACjC,CAAC,CAAC,SAAS,CAAC;QACd,wBAAO,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC;IAEkB,cAAc,CAAC,YAAyB;QACzD,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAEnC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAClD,CAAC,IAAY,EAAQ,EAAE;YACrB,MAAM,QAAQ,GAAkB,SAAC,CAAC,gBAAgB,CAChD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,CAAC;YACF,MAAM,KAAK,GAA0B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAY,EAAE,EAAE,CACtE,IAAA,gBAAO,EAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAC1B,CAAC;YAEF,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBACrC,MAAM,SAAS,GAAG,wBAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/D,MAAM,aAAa,GAAG,wBAAO,CAAC,YAAY,CACxC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAC3B,CAAC;gBACF,MAAM,aAAa,GAAG,wBAAO,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChE,MAAM,iBAAiB,GAAG,wBAAO,CAAC,SAAS,CACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAC3B,CAAC;gBACF,MAAM,UAAU,GAAG,wBAAO,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjE,MAAM,cAAc,GAAG,wBAAO,CAAC,aAAa,CAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAC3B,CAAC;gBAEF,wBAAO,CAAC,YAAY,CAClB,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,EAAE,EAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,CAAC;gBACF,wBAAO,CAAC,SAAS,CACf,CAAC,GAAG,iBAAiB,EAAE,GAAG,aAAa,CAAC,EACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,CAAC;gBACF,wBAAO,CAAC,aAAa,CACnB,EAAE,GAAG,cAAc,EAAE,GAAG,UAAU,EAAE,EACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CACvB,CAAC;aACH;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAnJD,8DAmJC"} \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/services/index.d.ts b/dist/packages/crudx-swagger/src/services/index.d.ts new file mode 100644 index 000000000..8e7695d97 --- /dev/null +++ b/dist/packages/crudx-swagger/src/services/index.d.ts @@ -0,0 +1 @@ +export * from "./crudx.swagger.routes.factory"; diff --git a/dist/packages/crudx-swagger/src/services/index.js b/dist/packages/crudx-swagger/src/services/index.js new file mode 100644 index 000000000..248dbaba3 --- /dev/null +++ b/dist/packages/crudx-swagger/src/services/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./crudx.swagger.routes.factory"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx-swagger/src/services/index.js.map b/dist/packages/crudx-swagger/src/services/index.js.map new file mode 100644 index 000000000..3e71dec3b --- /dev/null +++ b/dist/packages/crudx-swagger/src/services/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx-swagger/src/services/index.ts"],"names":[],"mappings":";;;AAAA,yEAA+C"} \ No newline at end of file diff --git a/dist/packages/crudx/CHANGELOG.md b/dist/packages/crudx/CHANGELOG.md new file mode 100644 index 000000000..c36eb4732 --- /dev/null +++ b/dist/packages/crudx/CHANGELOG.md @@ -0,0 +1,5 @@ +# Change Log + +# [1.0.0](#) (2024-04-01) + +### initial release \ No newline at end of file diff --git a/dist/packages/crudx/README.md b/dist/packages/crudx/README.md new file mode 100644 index 000000000..4886a3d1e --- /dev/null +++ b/dist/packages/crudx/README.md @@ -0,0 +1,192 @@ + +# @2amtech/Crudx +The @2amtech/Crudx is a refactor inspired by the impressive work of [nestjsx/crud](https://github.com/nestjsx/crud), consolidating its three packages into one cohesive solution. It simplifies the creation of CRUD (Create, Read, Update, Delete) endpoints for RESTful applications with remarkable ease within Nest.js. + +This tool provides decorators specifically designed for endpoint generation, global configurations, request validation, and specialized services, all tailored to enhance the efficiency and usability of Crudx across various contexts. + +A comprehensive documentation offers a structured exploration of Crudx functionalities, meticulously divided into distinct sections. Each section is accompanied by illustrative samples and insightful comments, fostering a deeper understanding of how to effectively leverage Crudx in your projects. + +## Basics + +Before diving into Crudx features, it's essential to define a basic Nest.js module for CRUD operations. Let's use the User module as a sample: + +First, let's define an entity. + +Crudx supports TypeORM for building entities, so let's implement it: + +```typescript +import { + AfterLoad, + BaseEntity, + Entity, + PrimaryGeneratedColumn, + Column, + BeforeInsert, + BeforeUpdate, +} from "typeorm"; +import * as bcrypt from "bcryptjs"; + +@Entity() +export class User extends BaseEntity { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ unique: true, length: 125 }) + email: string; + + @Column({ type: "varchar", length: 80 }) + password: string; + + private tempPassword?: string; + + @AfterLoad() + private loadTempPassword(): void { + this.tempPassword = this.password; + } + + @BeforeInsert() + private async hashPassword(): Promise { + this.password = await bcrypt.hash(this.password, 10); + } + + @BeforeUpdate() + private async encryptPassword(): Promise { + if (this.tempPassword !== null && this.tempPassword !== this.password) { + try { + await this.hashPassword(); + + this.tempPassword = this.password; + } catch (error) { + if (error instanceof Error) { + throw new Error("Unable to encrypt password: " + error.message); + } + } + } + } +} +``` + +Next, let's create a service: + +```typescript +import {Injectable} from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +@Injectable() +@Catch(QueryFailedError, EntityNotFoundError) +export class UserService extends TypeOrmCrudService { + constructor(@InjectRepository(User) readonly repo) { + super(repo); + } +} +``` + +With the service in place, let's define our controller: + +Note that we're utilizing the `@Crud` decorator. When it’s defined for a controller, it automatically creates the basic CRUD routes: + +* get `/user` +* get `/user/:id` +* post `/user` +* post `/user/bulk` +* patch `/user/:id` +* put `/user/:id` +* delete `/user/:id` + +For further details, you can refer to the [Controllers](./docs/controllers.md) section. + +In our sample, we're specifying some options for our @CRUD decorator: `model` and `params`. + +The `model` option is the only required one for the `@Crud()` decorator. Its type property defines a class as the request body type, enabling data validation. Though not covered in our basics, you can find all related information in the [request validation](./docs/validation.md) section. The provided `type` should be an `Entity`, `Model` or `DTO`. + +By default, the generated routes will have a parameter named `:id`. This parameter is intended to represent the model's primary key. We're using the `params` options to instruct Crudx to define our param `:id` as a `uuid` type, indicating that it should match the `id` field of the User entity. + +```typescript +import { Crud, CrudController } from "@2amtech/crudx"; +import { Controller } from "@nestjs/common"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; + +@Crud({ + model: { + type: User, + }, + params: { + id: { + field: "id", + type: "uuid", + primary: true, + } + } +}) +@Controller("users") +export class UserController implements CrudController { + constructor(public service: UserService) {} +} +``` + +With the `entity`, `service`, and `controller` defined, all that's left is to export a module and import it into the application's main module: + +```typescript +import { Module } from "@nestjs/common"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { UserController } from "./user.controller"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; + +@Module({ + imports: [TypeOrmModule.forFeature([User])], + controllers: [UserController], + providers: [UserService], + exports: [UserService], +}) +export class UserModule {} +``` + +## IntelliSense + +Due to the CRUD controllers being composed by the logic of the `@Crud` decorator, IntelliSense will not be available on composed methods. To enable your code to properly access the controller's methods from the `this` keyword, you can add these lines to your class: + +```typescript +import { Crud, CrudController } from '@2amtech/crudx'; +import { User } from './user.entity.ts'; + +@Crud(User) +@Controller('user') +export class UserController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + } +} +``` + +While the examples provided above offer a simplistic demonstration, they effectively highlight the fundamental principles of utilizing Crudx. For more in-depth insights and comprehensive guidance, we encourage you to explore the dedicated sections outlined below, which deal with specific functionalities and advanced usage scenarios. + +## Further Reading + +* [Controllers](./docs/controllers.md) +* [Nested Controllers](./docs/nested-controllers.md) +* [Routes](./docs/routes.md) +* [Queries and Fiters](./docs/query-filter.md) +* [Request Validation](./docs/validation.md) +* [Response Serialization](./docs/serialization.md) +* [Actions and Access Management](./docs/actions-access-management.md) +* [Request Authenticaten](./docs/authentication.md) +* [Global Options](./docs/global-options.md) +* [ORM](./docs/orm.md) +* [Requests and Query Params](./docs/requests.md) +* [Swagger - @2amtech/crudx-swagger](https://github.com/2amigs/nest-kit/packages/crudx-swagger/README.md) + +Thank you for exploring our resources. Happy coding! + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/dist/packages/crudx/package.json b/dist/packages/crudx/package.json new file mode 100644 index 000000000..f5fedc5de --- /dev/null +++ b/dist/packages/crudx/package.json @@ -0,0 +1,48 @@ +{ + "name": "@2amtech/crudx", + "author": "Antonio", + "description": "NestJs CRUD for RESTful APIs - request query builder", + "version": "1.0.0", + "dependencies": { + "tslib": "^2.3.0", + "@nestjs/common": "^10.1.3", + "@nestjs/typeorm": "^10.0.0", + "typeorm": "^0.3.17", + "rxjs": "^7.8.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.0", + "deepmerge": "^4.3.1", + "lodash": "^4.17.21", + "@types/qs": "^6.9.7", + "@zmotivat0r/o0": "^1.0.2" + }, + "devDependencies": { + "supertest": "^6.3.4", + "@types/uuid": "^9.0.8" + }, + "keywords": [ + "typescript", + "typeorm", + "nest", + "nestjs", + "rest", + "restful", + "api", + "crud", + "crud-generator", + "http", + "request", + "request-query", + "requestquery", + "get", + "query", + "query-string", + "querystring", + "query-builder", + "querybuilder" + ], + "type": "commonjs", + "main": "./src/index.js", + "typings": "./src/index.d.ts", + "types": "./src/index.d.ts" +} diff --git a/dist/packages/crudx/src/constants.d.ts b/dist/packages/crudx/src/constants.d.ts new file mode 100644 index 000000000..bcbff2c97 --- /dev/null +++ b/dist/packages/crudx/src/constants.d.ts @@ -0,0 +1,10 @@ +export declare const REQUEST_DELIM: string; +export declare const REQUEST_DELIM_STR: string; +export declare const REQUEST_PREFIX_EXTRA: string; +export declare const FEATURE_NAME_METADATA: string; +export declare const ACTION_NAME_METADATA: string; +export declare const OVERRIDE_METHOD_METADATA: string; +export declare const PARSED_BODY_METADATA: string; +export declare const PARSED_CRUD_REQUEST_KEY: string; +export declare const CRUD_OPTIONS_METADATA: string; +export declare const CRUD_AUTH_OPTIONS_METADATA: string; diff --git a/dist/packages/crudx/src/constants.js b/dist/packages/crudx/src/constants.js new file mode 100644 index 000000000..9345ce508 --- /dev/null +++ b/dist/packages/crudx/src/constants.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CRUD_AUTH_OPTIONS_METADATA = exports.CRUD_OPTIONS_METADATA = exports.PARSED_CRUD_REQUEST_KEY = exports.PARSED_BODY_METADATA = exports.OVERRIDE_METHOD_METADATA = exports.ACTION_NAME_METADATA = exports.FEATURE_NAME_METADATA = exports.REQUEST_PREFIX_EXTRA = exports.REQUEST_DELIM_STR = exports.REQUEST_DELIM = void 0; +exports.REQUEST_DELIM = "||"; +exports.REQUEST_DELIM_STR = ","; +exports.REQUEST_PREFIX_EXTRA = "extra."; +exports.FEATURE_NAME_METADATA = "CRUDX_FEATURE_NAME_METADATA"; +exports.ACTION_NAME_METADATA = "CRUDX_ACTION_NAME_METADATA"; +exports.OVERRIDE_METHOD_METADATA = "CRUDX_OVERRIDE_METHOD_METADATA"; +exports.PARSED_BODY_METADATA = "CRUDX_PARSED_BODY_METADATA"; +exports.PARSED_CRUD_REQUEST_KEY = "CRUDX_PARSED_CRUD_REQUEST_KEY"; +exports.CRUD_OPTIONS_METADATA = "CRUDX_CRUD_OPTIONS_METADATA"; +exports.CRUD_AUTH_OPTIONS_METADATA = "CRUDX_CRUD_AUTH_OPTIONS_METADATA"; +//# sourceMappingURL=constants.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/constants.js.map b/dist/packages/crudx/src/constants.js.map new file mode 100644 index 000000000..bab37ca6e --- /dev/null +++ b/dist/packages/crudx/src/constants.js.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../packages/crudx/src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAW,IAAI,CAAC;AAC7B,QAAA,iBAAiB,GAAW,GAAG,CAAC;AAChC,QAAA,oBAAoB,GAAW,QAAQ,CAAC;AACxC,QAAA,qBAAqB,GAAW,6BAA6B,CAAC;AAC9D,QAAA,oBAAoB,GAAW,4BAA4B,CAAC;AAC5D,QAAA,wBAAwB,GACnC,gCAAgC,CAAC;AACtB,QAAA,oBAAoB,GAAW,4BAA4B,CAAC;AAC5D,QAAA,uBAAuB,GAAW,+BAA+B,CAAC;AAClE,QAAA,qBAAqB,GAAW,6BAA6B,CAAC;AAC9D,QAAA,0BAA0B,GACrC,kCAAkC,CAAC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/crud-auth.decorator.d.ts b/dist/packages/crudx/src/decorators/crud-auth.decorator.d.ts new file mode 100644 index 000000000..f0ea594fb --- /dev/null +++ b/dist/packages/crudx/src/decorators/crud-auth.decorator.d.ts @@ -0,0 +1,2 @@ +import { AuthOptions } from "../interfaces"; +export declare const CrudAuth: (options: AuthOptions) => (target: Object) => void; diff --git a/dist/packages/crudx/src/decorators/crud-auth.decorator.js b/dist/packages/crudx/src/decorators/crud-auth.decorator.js new file mode 100644 index 000000000..24ef2c9f3 --- /dev/null +++ b/dist/packages/crudx/src/decorators/crud-auth.decorator.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudAuth = void 0; +const helpers_1 = require("../helpers"); +const CrudAuth = (options) => (target) => { + helpers_1.R.setCrudAuthOptions(options, target); +}; +exports.CrudAuth = CrudAuth; +//# sourceMappingURL=crud-auth.decorator.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/crud-auth.decorator.js.map b/dist/packages/crudx/src/decorators/crud-auth.decorator.js.map new file mode 100644 index 000000000..e50257a7d --- /dev/null +++ b/dist/packages/crudx/src/decorators/crud-auth.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-auth.decorator.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/decorators/crud-auth.decorator.ts"],"names":[],"mappings":";;;AAAA,wCAA+B;AAGxB,MAAM,QAAQ,GACnB,CAAC,OAAoB,EAAE,EAAE,CACzB,CAAC,MAAc,EAAQ,EAAE;IACvB,WAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACxC,CAAC,CAAC;AAJS,QAAA,QAAQ,YAIjB"} \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/crud.decorator.d.ts b/dist/packages/crudx/src/decorators/crud.decorator.d.ts new file mode 100644 index 000000000..2632b185f --- /dev/null +++ b/dist/packages/crudx/src/decorators/crud.decorator.d.ts @@ -0,0 +1,2 @@ +import { CrudOptions } from "../interfaces"; +export declare const Crud: (options: CrudOptions) => (target: Object) => void; diff --git a/dist/packages/crudx/src/decorators/crud.decorator.js b/dist/packages/crudx/src/decorators/crud.decorator.js new file mode 100644 index 000000000..61f4502e8 --- /dev/null +++ b/dist/packages/crudx/src/decorators/crud.decorator.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Crud = void 0; +const lodash_1 = require("lodash"); +const services_1 = require("../services"); +const Crud = (options) => (target) => { + var _a; + const factoryMethod = options.routesFactory || services_1.RoutesFactoryService; + const factory = (0, lodash_1.isUndefined)((_a = services_1.CrudConfigService.config) === null || _a === void 0 ? void 0 : _a.routesFactory) + ? new factoryMethod(target, options) + : new services_1.CrudConfigService.config.routesFactory(target, options); +}; +exports.Crud = Crud; +//# sourceMappingURL=crud.decorator.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/crud.decorator.js.map b/dist/packages/crudx/src/decorators/crud.decorator.js.map new file mode 100644 index 000000000..ad363d79c --- /dev/null +++ b/dist/packages/crudx/src/decorators/crud.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud.decorator.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/decorators/crud.decorator.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAGrC,0CAAsE;AAE/D,MAAM,IAAI,GACf,CAAC,OAAoB,EAAE,EAAE,CACzB,CAAC,MAAc,EAAQ,EAAE;;IACvB,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,+BAAoB,CAAC;IACpE,MAAM,OAAO,GAAyB,IAAA,oBAAW,EAAC,MAAA,4BAAiB,CAAC,MAAM,0CAAE,aAAa,CAAC;QACxF,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;QACpC,CAAC,CAAC,IAAI,4BAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC,CAAC;AAPS,QAAA,IAAI,QAOb"} \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/feature-action.decorator.d.ts b/dist/packages/crudx/src/decorators/feature-action.decorator.d.ts new file mode 100644 index 000000000..c49dc9c36 --- /dev/null +++ b/dist/packages/crudx/src/decorators/feature-action.decorator.d.ts @@ -0,0 +1,5 @@ +import { Type } from "@nestjs/common"; +export declare const Feature: (name: string) => import("@nestjs/common").CustomDecorator; +export declare const Action: (name: string) => import("@nestjs/common").CustomDecorator; +export declare const getFeature: (target: Type) => any; +export declare const getAction: (target: Function) => any; diff --git a/dist/packages/crudx/src/decorators/feature-action.decorator.js b/dist/packages/crudx/src/decorators/feature-action.decorator.js new file mode 100644 index 000000000..d737748b4 --- /dev/null +++ b/dist/packages/crudx/src/decorators/feature-action.decorator.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getAction = exports.getFeature = exports.Action = exports.Feature = void 0; +const common_1 = require("@nestjs/common"); +const constants_1 = require("../constants"); +const Feature = (name) => (0, common_1.SetMetadata)(constants_1.FEATURE_NAME_METADATA, name); +exports.Feature = Feature; +const Action = (name) => (0, common_1.SetMetadata)(constants_1.ACTION_NAME_METADATA, name); +exports.Action = Action; +const getFeature = (target) => Reflect.getMetadata(constants_1.FEATURE_NAME_METADATA, target); +exports.getFeature = getFeature; +const getAction = (target) => Reflect.getMetadata(constants_1.ACTION_NAME_METADATA, target); +exports.getAction = getAction; +//# sourceMappingURL=feature-action.decorator.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/feature-action.decorator.js.map b/dist/packages/crudx/src/decorators/feature-action.decorator.js.map new file mode 100644 index 000000000..cbe2b48b3 --- /dev/null +++ b/dist/packages/crudx/src/decorators/feature-action.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"feature-action.decorator.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/decorators/feature-action.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAmD;AAEnD,4CAA2E;AAEpE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CACtC,IAAA,oBAAW,EAAC,iCAAqB,EAAE,IAAI,CAAC,CAAC;AAD9B,QAAA,OAAO,WACuB;AACpC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAA,oBAAW,EAAC,gCAAoB,EAAE,IAAI,CAAC,CAAC;AAAnE,QAAA,MAAM,UAA6D;AAEzE,MAAM,UAAU,GAAG,CAAU,MAAe,EAAE,EAAE,CACrD,OAAO,CAAC,WAAW,CAAC,iCAAqB,EAAE,MAAM,CAAC,CAAC;AADxC,QAAA,UAAU,cAC8B;AAC9C,MAAM,SAAS,GAAG,CAAC,MAAgB,EAAE,EAAE,CAC5C,OAAO,CAAC,WAAW,CAAC,gCAAoB,EAAE,MAAM,CAAC,CAAC;AADvC,QAAA,SAAS,aAC8B"} \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/index.d.ts b/dist/packages/crudx/src/decorators/index.d.ts new file mode 100644 index 000000000..da8babe6b --- /dev/null +++ b/dist/packages/crudx/src/decorators/index.d.ts @@ -0,0 +1,6 @@ +export * from "./crud.decorator"; +export * from "./crud-auth.decorator"; +export * from "./override.decorator"; +export * from "./parsed-request.decorator"; +export * from "./parsed-body.decorator"; +export * from "./feature-action.decorator"; diff --git a/dist/packages/crudx/src/decorators/index.js b/dist/packages/crudx/src/decorators/index.js new file mode 100644 index 000000000..0e667ea72 --- /dev/null +++ b/dist/packages/crudx/src/decorators/index.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./crud.decorator"), exports); +tslib_1.__exportStar(require("./crud-auth.decorator"), exports); +tslib_1.__exportStar(require("./override.decorator"), exports); +tslib_1.__exportStar(require("./parsed-request.decorator"), exports); +tslib_1.__exportStar(require("./parsed-body.decorator"), exports); +tslib_1.__exportStar(require("./feature-action.decorator"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/index.js.map b/dist/packages/crudx/src/decorators/index.js.map new file mode 100644 index 000000000..a09e84667 --- /dev/null +++ b/dist/packages/crudx/src/decorators/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/decorators/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,gEAAsC;AACtC,+DAAqC;AACrC,qEAA2C;AAC3C,kEAAwC;AACxC,qEAA2C"} \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/override.decorator.d.ts b/dist/packages/crudx/src/decorators/override.decorator.d.ts new file mode 100644 index 000000000..94f6ff6ad --- /dev/null +++ b/dist/packages/crudx/src/decorators/override.decorator.d.ts @@ -0,0 +1,2 @@ +import { BaseRouteName } from "../types"; +export declare const Override: (name?: BaseRouteName) => (target: any, key: any, descriptor: PropertyDescriptor) => PropertyDescriptor; diff --git a/dist/packages/crudx/src/decorators/override.decorator.js b/dist/packages/crudx/src/decorators/override.decorator.js new file mode 100644 index 000000000..008230523 --- /dev/null +++ b/dist/packages/crudx/src/decorators/override.decorator.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Override = void 0; +const constants_1 = require("../constants"); +const Override = (name) => (target, key, descriptor) => { + Reflect.defineMetadata(constants_1.OVERRIDE_METHOD_METADATA, name || `${key}Base`, target[key]); + return descriptor; +}; +exports.Override = Override; +//# sourceMappingURL=override.decorator.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/override.decorator.js.map b/dist/packages/crudx/src/decorators/override.decorator.js.map new file mode 100644 index 000000000..70bb74058 --- /dev/null +++ b/dist/packages/crudx/src/decorators/override.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"override.decorator.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/decorators/override.decorator.ts"],"names":[],"mappings":";;;AACA,4CAAwD;AAEjD,MAAM,QAAQ,GACnB,CAAC,IAAoB,EAAE,EAAE,CACzB,CAAC,MAAW,EAAE,GAAQ,EAAE,UAA8B,EAAE,EAAE;IACxD,OAAO,CAAC,cAAc,CACpB,oCAAwB,EACxB,IAAI,IAAI,GAAG,GAAG,MAAM,EACpB,MAAM,CAAC,GAAG,CAAC,CACZ,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AATS,QAAA,QAAQ,YASjB"} \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/parsed-body.decorator.d.ts b/dist/packages/crudx/src/decorators/parsed-body.decorator.d.ts new file mode 100644 index 000000000..cc749ac16 --- /dev/null +++ b/dist/packages/crudx/src/decorators/parsed-body.decorator.d.ts @@ -0,0 +1 @@ +export declare const ParsedBody: () => (target: any, key: string, index: any) => void; diff --git a/dist/packages/crudx/src/decorators/parsed-body.decorator.js b/dist/packages/crudx/src/decorators/parsed-body.decorator.js new file mode 100644 index 000000000..8e0b566f2 --- /dev/null +++ b/dist/packages/crudx/src/decorators/parsed-body.decorator.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ParsedBody = void 0; +const constants_1 = require("../constants"); +const ParsedBody = () => (target, key, index) => { + Reflect.defineMetadata(constants_1.PARSED_BODY_METADATA, { index }, target[key]); +}; +exports.ParsedBody = ParsedBody; +//# sourceMappingURL=parsed-body.decorator.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/parsed-body.decorator.js.map b/dist/packages/crudx/src/decorators/parsed-body.decorator.js.map new file mode 100644 index 000000000..7af66488e --- /dev/null +++ b/dist/packages/crudx/src/decorators/parsed-body.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsed-body.decorator.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/decorators/parsed-body.decorator.ts"],"names":[],"mappings":";;;AAAA,4CAAoD;AAE7C,MAAM,UAAU,GACrB,GAAG,EAAE,CACL,CAAC,MAAW,EAAE,GAAW,EAAE,KAAU,EAAQ,EAAE;IAC7C,OAAO,CAAC,cAAc,CAAC,gCAAoB,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC;AAJS,QAAA,UAAU,cAInB"} \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/parsed-request.decorator.d.ts b/dist/packages/crudx/src/decorators/parsed-request.decorator.d.ts new file mode 100644 index 000000000..c83b55370 --- /dev/null +++ b/dist/packages/crudx/src/decorators/parsed-request.decorator.d.ts @@ -0,0 +1 @@ +export declare const ParsedRequest: (...dataOrPipes: any[]) => ParameterDecorator; diff --git a/dist/packages/crudx/src/decorators/parsed-request.decorator.js b/dist/packages/crudx/src/decorators/parsed-request.decorator.js new file mode 100644 index 000000000..0a9711135 --- /dev/null +++ b/dist/packages/crudx/src/decorators/parsed-request.decorator.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ParsedRequest = void 0; +const common_1 = require("@nestjs/common"); +const constants_1 = require("../constants"); +const helpers_1 = require("../helpers"); +exports.ParsedRequest = (0, common_1.createParamDecorator)((_, ctx) => { + return helpers_1.R.getContextRequest(ctx)[constants_1.PARSED_CRUD_REQUEST_KEY]; +}); +//# sourceMappingURL=parsed-request.decorator.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/decorators/parsed-request.decorator.js.map b/dist/packages/crudx/src/decorators/parsed-request.decorator.js.map new file mode 100644 index 000000000..dd11eaea6 --- /dev/null +++ b/dist/packages/crudx/src/decorators/parsed-request.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsed-request.decorator.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/decorators/parsed-request.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAsD;AAEtD,4CAAuD;AACvD,wCAA+B;AAElB,QAAA,aAAa,GAAG,IAAA,6BAAoB,EAC/C,CAAC,CAAC,EAAE,GAAG,EAAsB,EAAE;IAC7B,OAAO,WAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,mCAAuB,CAAC,CAAC;AAC3D,CAAC,CACF,CAAC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/enums/crud-actions.enum.d.ts b/dist/packages/crudx/src/enums/crud-actions.enum.d.ts new file mode 100644 index 000000000..fa5e722f6 --- /dev/null +++ b/dist/packages/crudx/src/enums/crud-actions.enum.d.ts @@ -0,0 +1,11 @@ +export declare enum CrudActions { + ReadAll = "Read-All", + ReadOne = "Read-One", + CreateOne = "Create-One", + CreateMany = "Create-Many", + UpdateOne = "Update-One", + ReplaceOne = "Replace-One", + DeleteOne = "Delete-One", + DeleteAll = "Delete-All", + RecoverOne = "Recover-One" +} diff --git a/dist/packages/crudx/src/enums/crud-actions.enum.js b/dist/packages/crudx/src/enums/crud-actions.enum.js new file mode 100644 index 000000000..c63f54123 --- /dev/null +++ b/dist/packages/crudx/src/enums/crud-actions.enum.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudActions = void 0; +var CrudActions; +(function (CrudActions) { + CrudActions["ReadAll"] = "Read-All"; + CrudActions["ReadOne"] = "Read-One"; + CrudActions["CreateOne"] = "Create-One"; + CrudActions["CreateMany"] = "Create-Many"; + CrudActions["UpdateOne"] = "Update-One"; + CrudActions["ReplaceOne"] = "Replace-One"; + CrudActions["DeleteOne"] = "Delete-One"; + CrudActions["DeleteAll"] = "Delete-All"; + CrudActions["RecoverOne"] = "Recover-One"; +})(CrudActions || (exports.CrudActions = CrudActions = {})); +//# sourceMappingURL=crud-actions.enum.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/enums/crud-actions.enum.js.map b/dist/packages/crudx/src/enums/crud-actions.enum.js.map new file mode 100644 index 000000000..3c31b4cb7 --- /dev/null +++ b/dist/packages/crudx/src/enums/crud-actions.enum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-actions.enum.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/enums/crud-actions.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB,mCAAoB,CAAA;IACpB,mCAAoB,CAAA;IACpB,uCAAwB,CAAA;IACxB,yCAA0B,CAAA;IAC1B,uCAAwB,CAAA;IACxB,yCAA0B,CAAA;IAC1B,uCAAwB,CAAA;IACxB,uCAAwB,CAAA;IACxB,yCAA0B,CAAA;AAC5B,CAAC,EAVW,WAAW,2BAAX,WAAW,QAUtB"} \ No newline at end of file diff --git a/dist/packages/crudx/src/enums/crud-validation-groups.enum.d.ts b/dist/packages/crudx/src/enums/crud-validation-groups.enum.d.ts new file mode 100644 index 000000000..e47fcf35d --- /dev/null +++ b/dist/packages/crudx/src/enums/crud-validation-groups.enum.d.ts @@ -0,0 +1,4 @@ +export declare enum CrudValidationGroups { + CREATE = "CRUD-CREATE", + UPDATE = "CRUD-UPDATE" +} diff --git a/dist/packages/crudx/src/enums/crud-validation-groups.enum.js b/dist/packages/crudx/src/enums/crud-validation-groups.enum.js new file mode 100644 index 000000000..920888a8a --- /dev/null +++ b/dist/packages/crudx/src/enums/crud-validation-groups.enum.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudValidationGroups = void 0; +var CrudValidationGroups; +(function (CrudValidationGroups) { + CrudValidationGroups["CREATE"] = "CRUD-CREATE"; + CrudValidationGroups["UPDATE"] = "CRUD-UPDATE"; +})(CrudValidationGroups || (exports.CrudValidationGroups = CrudValidationGroups = {})); +//# sourceMappingURL=crud-validation-groups.enum.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/enums/crud-validation-groups.enum.js.map b/dist/packages/crudx/src/enums/crud-validation-groups.enum.js.map new file mode 100644 index 000000000..14ca6be75 --- /dev/null +++ b/dist/packages/crudx/src/enums/crud-validation-groups.enum.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-validation-groups.enum.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/enums/crud-validation-groups.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,8CAAsB,CAAA;IACtB,8CAAsB,CAAA;AACxB,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B"} \ No newline at end of file diff --git a/dist/packages/crudx/src/enums/index.d.ts b/dist/packages/crudx/src/enums/index.d.ts new file mode 100644 index 000000000..7178b877b --- /dev/null +++ b/dist/packages/crudx/src/enums/index.d.ts @@ -0,0 +1,2 @@ +export * from "./crud-actions.enum"; +export * from "./crud-validation-groups.enum"; diff --git a/dist/packages/crudx/src/enums/index.js b/dist/packages/crudx/src/enums/index.js new file mode 100644 index 000000000..afcd312dc --- /dev/null +++ b/dist/packages/crudx/src/enums/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./crud-actions.enum"), exports); +tslib_1.__exportStar(require("./crud-validation-groups.enum"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/enums/index.js.map b/dist/packages/crudx/src/enums/index.js.map new file mode 100644 index 000000000..202e0a1cf --- /dev/null +++ b/dist/packages/crudx/src/enums/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/enums/index.ts"],"names":[],"mappings":";;;AAAA,8DAAoC;AACpC,wEAA8C"} \ No newline at end of file diff --git a/dist/packages/crudx/src/exceptions/index.d.ts b/dist/packages/crudx/src/exceptions/index.d.ts new file mode 100644 index 000000000..0943dfa38 --- /dev/null +++ b/dist/packages/crudx/src/exceptions/index.d.ts @@ -0,0 +1 @@ +export * from "./request-query.exception"; diff --git a/dist/packages/crudx/src/exceptions/index.js b/dist/packages/crudx/src/exceptions/index.js new file mode 100644 index 000000000..810af6eee --- /dev/null +++ b/dist/packages/crudx/src/exceptions/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./request-query.exception"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/exceptions/index.js.map b/dist/packages/crudx/src/exceptions/index.js.map new file mode 100644 index 000000000..6701590eb --- /dev/null +++ b/dist/packages/crudx/src/exceptions/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/exceptions/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0C"} \ No newline at end of file diff --git a/dist/packages/crudx/src/exceptions/request-query.exception.d.ts b/dist/packages/crudx/src/exceptions/request-query.exception.d.ts new file mode 100644 index 000000000..cc15a591d --- /dev/null +++ b/dist/packages/crudx/src/exceptions/request-query.exception.d.ts @@ -0,0 +1,3 @@ +export declare class RequestQueryException extends Error { + constructor(msg: string); +} diff --git a/dist/packages/crudx/src/exceptions/request-query.exception.js b/dist/packages/crudx/src/exceptions/request-query.exception.js new file mode 100644 index 000000000..65c49eecd --- /dev/null +++ b/dist/packages/crudx/src/exceptions/request-query.exception.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RequestQueryException = void 0; +class RequestQueryException extends Error { + constructor(msg) { + super(msg); + } +} +exports.RequestQueryException = RequestQueryException; +//# sourceMappingURL=request-query.exception.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/exceptions/request-query.exception.js.map b/dist/packages/crudx/src/exceptions/request-query.exception.js.map new file mode 100644 index 000000000..cd402e8f9 --- /dev/null +++ b/dist/packages/crudx/src/exceptions/request-query.exception.js.map @@ -0,0 +1 @@ +{"version":3,"file":"request-query.exception.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/exceptions/request-query.exception.ts"],"names":[],"mappings":";;;AAAA,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,GAAW;QACrB,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;CACF;AAJD,sDAIC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/checkers.helper.d.ts b/dist/packages/crudx/src/helpers/checkers.helper.d.ts new file mode 100644 index 000000000..3fc6612dc --- /dev/null +++ b/dist/packages/crudx/src/helpers/checkers.helper.d.ts @@ -0,0 +1,12 @@ +export declare const isArrayOfStrings: (arr: unknown[]) => boolean; +export declare const isArrayFull: (val: any) => boolean; +export declare const isStringFull: (val: unknown) => boolean; +export declare const isArrayOfStringsFull: (val: any) => boolean; +export declare const isValue: (val: any) => boolean; +export declare const hasValue: (val: any) => boolean; +export declare const isDateString: (val: any) => boolean; +export declare const isFalse: (val: any) => boolean; +export declare const isTrue: (val: any) => boolean; +export declare const isIn: (val: any, arr?: any[]) => boolean; +export declare const isObject: (val: any) => boolean; +export declare const isObjectFull: (val: any) => boolean; diff --git a/dist/packages/crudx/src/helpers/checkers.helper.js b/dist/packages/crudx/src/helpers/checkers.helper.js new file mode 100644 index 000000000..006ebc224 --- /dev/null +++ b/dist/packages/crudx/src/helpers/checkers.helper.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isObjectFull = exports.isObject = exports.isIn = exports.isTrue = exports.isFalse = exports.isDateString = exports.hasValue = exports.isValue = exports.isArrayOfStringsFull = exports.isStringFull = exports.isArrayFull = exports.isArrayOfStrings = void 0; +const lodash_1 = require("lodash"); +const isArrayOfStrings = (arr) => { + return (0, lodash_1.isArray)(arr) && (0, lodash_1.every)(arr, lodash_1.isString); +}; +exports.isArrayOfStrings = isArrayOfStrings; +const isArrayFull = (val) => Array.isArray(val) && !(0, lodash_1.isEmpty)(val); +exports.isArrayFull = isArrayFull; +const isStringFull = (val) => (0, lodash_1.isString)(val) && !(0, lodash_1.isEmpty)(val); +exports.isStringFull = isStringFull; +const isArrayOfStringsFull = (val) => (0, exports.isArrayFull)(val) && val.every((v) => (0, exports.isStringFull)(v)); +exports.isArrayOfStringsFull = isArrayOfStringsFull; +const isValue = (val) => (0, exports.isStringFull)(val) || (0, lodash_1.isNumber)(val) || (0, lodash_1.isBoolean)(val) || (0, lodash_1.isDate)(val); +exports.isValue = isValue; +const hasValue = (val) => (0, exports.isArrayFull)(val) ? val.every((o) => (0, exports.isValue)(o)) : (0, exports.isValue)(val); +exports.hasValue = hasValue; +const isDateString = (val) => { + const timestamp = Date.parse(val); + return !isNaN(timestamp) && (0, lodash_1.isDate)(new Date(timestamp)); +}; +exports.isDateString = isDateString; +const isFalse = (val) => val === false; +exports.isFalse = isFalse; +const isTrue = (val) => val === true; +exports.isTrue = isTrue; +const isIn = (val, arr = []) => arr.some((o) => (0, lodash_1.isEqual)(val, o)); +exports.isIn = isIn; +const isObject = (val) => typeof val === "object" && !(0, lodash_1.isNil)(val); +exports.isObject = isObject; +const isObjectFull = (val) => (0, exports.isObject)(val) && (0, lodash_1.keys)(val).length > 0; +exports.isObjectFull = isObjectFull; +//# sourceMappingURL=checkers.helper.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/checkers.helper.js.map b/dist/packages/crudx/src/helpers/checkers.helper.js.map new file mode 100644 index 000000000..e9111db70 --- /dev/null +++ b/dist/packages/crudx/src/helpers/checkers.helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkers.helper.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/helpers/checkers.helper.ts"],"names":[],"mappings":";;;AAAA,mCAWgB;AAET,MAAM,gBAAgB,GAAG,CAAC,GAAc,EAAW,EAAE;IAC1D,OAAO,IAAA,gBAAO,EAAC,GAAG,CAAC,IAAI,IAAA,cAAK,EAAC,GAAG,EAAE,iBAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B;AACK,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC/C,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAC;AADzB,QAAA,WAAW,eACc;AAE/B,MAAM,YAAY,GAAG,CAAC,GAAY,EAAW,EAAE,CACpD,IAAA,iBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,IAAA,gBAAO,EAAC,GAAG,CAAC,CAAC;AADpB,QAAA,YAAY,gBACQ;AAE1B,MAAM,oBAAoB,GAAG,CAAC,GAAQ,EAAW,EAAE,CACxD,IAAA,mBAAW,EAAC,GAAG,CAAC,IAAK,GAAgB,CAAC,KAAK,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,oBAAY,EAAC,CAAC,CAAC,CAAC,CAAC;AADjE,QAAA,oBAAoB,wBAC6C;AAEvE,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC3C,IAAA,oBAAY,EAAC,GAAG,CAAC,IAAI,IAAA,iBAAQ,EAAC,GAAG,CAAC,IAAI,IAAA,kBAAS,EAAC,GAAG,CAAC,IAAI,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC;AADzD,QAAA,OAAO,WACkD;AAC/D,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC5C,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,eAAO,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;AAD/D,QAAA,QAAQ,YACuD;AAErE,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAW,EAAE;IAChD,MAAM,SAAS,GAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAA,eAAM,EAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAHW,QAAA,YAAY,gBAGvB;AAEK,MAAM,OAAO,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,KAAK,KAAK,CAAC;AAA/C,QAAA,OAAO,WAAwC;AAErD,MAAM,MAAM,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC;AAA7C,QAAA,MAAM,UAAuC;AAEnD,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAE,MAAa,EAAE,EAAW,EAAE,CACzD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAO,EAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AADtB,QAAA,IAAI,QACkB;AAE5B,MAAM,QAAQ,GAAG,CAAC,GAAQ,EAAW,EAAE,CAC5C,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAA,cAAK,EAAC,GAAG,CAAC,CAAC;AAD5B,QAAA,QAAQ,YACoB;AAClC,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAA,gBAAQ,EAAC,GAAG,CAAC,IAAI,IAAA,aAAI,EAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAAnE,QAAA,YAAY,gBAAuD"} \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/crud-validation.helper.d.ts b/dist/packages/crudx/src/helpers/crud-validation.helper.d.ts new file mode 100644 index 000000000..b0a5f3034 --- /dev/null +++ b/dist/packages/crudx/src/helpers/crud-validation.helper.d.ts @@ -0,0 +1,8 @@ +import { ValidationPipe } from "@nestjs/common"; +import { CrudValidationGroups } from "../enums"; +import { CreateManyDto, CrudOptions, MergedCrudOptions } from "../interfaces"; +export declare class BulkDto implements CreateManyDto { + bulk: T[]; +} +export declare const getValidationPipe: (options: CrudOptions, group?: CrudValidationGroups) => ValidationPipe | undefined; +export declare const createBulkDto: (options: MergedCrudOptions) => any; diff --git a/dist/packages/crudx/src/helpers/crud-validation.helper.js b/dist/packages/crudx/src/helpers/crud-validation.helper.js new file mode 100644 index 000000000..81ad5e2c8 --- /dev/null +++ b/dist/packages/crudx/src/helpers/crud-validation.helper.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createBulkDto = exports.getValidationPipe = exports.BulkDto = void 0; +const tslib_1 = require("tslib"); +const common_1 = require("@nestjs/common"); +const helpers_1 = require("../helpers"); +const lodash_1 = require("lodash"); +const enums_1 = require("../enums"); +const swagger_1 = require("@nestjs/swagger"); +const class_validator_1 = require("class-validator"); +const class_transformer_1 = require("class-transformer"); +class BulkDto { +} +exports.BulkDto = BulkDto; +const getValidationPipe = (options, group) => { + return !(0, helpers_1.isFalse)(options.validation) + ? new common_1.ValidationPipe(Object.assign(Object.assign({}, (options.validation || {})), { groups: group ? [group] : undefined })) + : undefined; +}; +exports.getValidationPipe = getValidationPipe; +const createBulkDto = (options) => { + var _a, _b; + if (!(0, helpers_1.isFalse)(options.validation)) { + const hasDto = !(0, lodash_1.isNil)((_a = options.dto) === null || _a === void 0 ? void 0 : _a.create); + const groups = !hasDto + ? [enums_1.CrudValidationGroups.CREATE] + : undefined; + const always = hasDto ? true : undefined; + const Model = hasDto ? (_b = options.dto) === null || _b === void 0 ? void 0 : _b.create : options.model.type; + class BulkDtoImpl { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: Model, isArray: true }), + (0, class_validator_1.IsArray)({ groups, always }), + (0, class_validator_1.ArrayNotEmpty)({ groups, always }), + (0, class_validator_1.ValidateNested)({ each: true, groups, always }), + (0, class_transformer_1.Type)(() => Model) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], BulkDtoImpl.prototype, "bulk", void 0); + Object.defineProperty(BulkDtoImpl, "name", { + writable: false, + value: `CreateMany${options.model.type.name}Dto`, + }); + return BulkDtoImpl; + } + else { + return BulkDto; + } +}; +exports.createBulkDto = createBulkDto; +//# sourceMappingURL=crud-validation.helper.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/crud-validation.helper.js.map b/dist/packages/crudx/src/helpers/crud-validation.helper.js.map new file mode 100644 index 000000000..d3214965f --- /dev/null +++ b/dist/packages/crudx/src/helpers/crud-validation.helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-validation.helper.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/helpers/crud-validation.helper.ts"],"names":[],"mappings":";;;;AAAA,2CAAgD;AAChD,wCAAqC;AACrC,mCAA+B;AAC/B,oCAAgD;AAEhD,6CAA8C;AAC9C,qDAAyE;AACzE,yDAAyC;AAEzC,MAAa,OAAO;CAGnB;AAHD,0BAGC;AAEM,MAAM,iBAAiB,GAAG,CAC/B,OAAoB,EACpB,KAA4B,EACA,EAAE;IAC9B,OAAO,CAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,IAAI,uBAAc,iCACb,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,KAC7B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IACnC;QACJ,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAVW,QAAA,iBAAiB,qBAU5B;AAEK,MAAM,aAAa,GAAG,CAAU,OAA0B,EAAO,EAAE;;IACxE,IAAI,CAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAChC,MAAM,MAAM,GAAY,CAAC,IAAA,cAAK,EAAC,MAAA,OAAO,CAAC,GAAG,0CAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAuC,CAAC,MAAM;YACxD,CAAC,CAAC,CAAC,4BAAoB,CAAC,MAAM,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,MAAM,GAAwB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,GAAG,0CAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAEhE,MAAM,WAAW;SAQhB;QADC;YANC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3C,IAAA,yBAAO,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3B,IAAA,+BAAa,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YACjC,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;YAC9C,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC;YAClB,aAAa;;;iDACH;QAGZ,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE;YACzC,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,aAAa,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK;SACjD,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;KACpB;SAAM;QACL,OAAO,OAAO,CAAC;KAChB;AACH,CAAC,CAAC;AA5BW,QAAA,aAAa,iBA4BxB"} \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/index.d.ts b/dist/packages/crudx/src/helpers/index.d.ts new file mode 100644 index 000000000..370567983 --- /dev/null +++ b/dist/packages/crudx/src/helpers/index.d.ts @@ -0,0 +1,6 @@ +export * from "./checkers.helper"; +export * from "./crud-validation.helper"; +export * from "./reflection.helper"; +export * from "./request-validation.helper"; +export * from "./serialize.helper"; +export * from "./safe-require.helper"; diff --git a/dist/packages/crudx/src/helpers/index.js b/dist/packages/crudx/src/helpers/index.js new file mode 100644 index 000000000..54a89823a --- /dev/null +++ b/dist/packages/crudx/src/helpers/index.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./checkers.helper"), exports); +tslib_1.__exportStar(require("./crud-validation.helper"), exports); +tslib_1.__exportStar(require("./reflection.helper"), exports); +tslib_1.__exportStar(require("./request-validation.helper"), exports); +tslib_1.__exportStar(require("./serialize.helper"), exports); +tslib_1.__exportStar(require("./safe-require.helper"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/index.js.map b/dist/packages/crudx/src/helpers/index.js.map new file mode 100644 index 000000000..2ddd268db --- /dev/null +++ b/dist/packages/crudx/src/helpers/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/helpers/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,mEAAyC;AACzC,8DAAoC;AACpC,sEAA4C;AAC5C,6DAAmC;AACnC,gEAAsC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/reflection.helper.d.ts b/dist/packages/crudx/src/helpers/reflection.helper.d.ts new file mode 100644 index 000000000..2010d22fd --- /dev/null +++ b/dist/packages/crudx/src/helpers/reflection.helper.d.ts @@ -0,0 +1,30 @@ +import { RouteParamtypes } from "@nestjs/common/enums/route-paramtypes.enum"; +import { ArgumentsHost } from "@nestjs/common"; +import { BaseRoute, MergedCrudOptions, AuthOptions } from "../interfaces"; +import { BaseRouteName } from "../types"; +import { CrudActions } from "../enums"; +export declare class R { + static set(metadataKey: any, metadataValue: any, target: Object, propertyKey?: string | symbol | undefined): void; + static get(metadataKey: any, target: Object, propertyKey?: string | symbol | undefined): T; + static createCustomRouteArg(paramType: string, index: number, pipes?: any[], data?: any): any; + static createRouteArg(paramTypes: RouteParamtypes, index: number, pipes?: any[], data?: any): any; + static setDecorators(decorators: (PropertyDecorator | MethodDecorator)[], target: object, name: string): void; + static setParsedRequestArg(index: number): any; + static setBodyArg(index: number, pipes?: any[]): any; + static setCrudOptions(options: MergedCrudOptions, target: any): void; + static setRoute(route: BaseRoute, func: Function): void; + static setInterceptors(interceptors: any[], func: Function): void; + static setRouteArgs(metadata: any, target: any, name: string): void; + static setRouteArgsTypes(metadata: any, target: any, name: string): void; + static setAction(action: CrudActions, func: Function): void; + static setCrudAuthOptions(metadata: any, target: any): void; + static getCrudAuthOptions(target: any): AuthOptions; + static getCrudOptions(target: any): MergedCrudOptions; + static getAction(func: Function): CrudActions; + static getOverrideRoute(func: Function): BaseRouteName; + static getInterceptors(func: Function): any[]; + static getRouteArgs(target: any, name: string): any; + static getRouteArgsTypes(target: any, name: string): any[]; + static getParsedBody(func: Function): any; + static getContextRequest(ctx: ArgumentsHost): any; +} diff --git a/dist/packages/crudx/src/helpers/reflection.helper.js b/dist/packages/crudx/src/helpers/reflection.helper.js new file mode 100644 index 000000000..a735f2e7f --- /dev/null +++ b/dist/packages/crudx/src/helpers/reflection.helper.js @@ -0,0 +1,105 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.R = void 0; +const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum"); +const constants_1 = require("@nestjs/common/constants"); +const lodash_1 = require("lodash"); +const constants_2 = require("../constants"); +class R { + static set(metadataKey, metadataValue, target, propertyKey = undefined) { + if (propertyKey) { + Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey); + } + else { + Reflect.defineMetadata(metadataKey, metadataValue, target); + } + } + static get(metadataKey, target, propertyKey = undefined) { + return propertyKey + ? Reflect.getMetadata(metadataKey, target, propertyKey) + : Reflect.getMetadata(metadataKey, target); + } + static createCustomRouteArg(paramType, index, pipes = [], data = undefined) { + // @ts-ignore + return { + [`${paramType}${constants_1.CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: { + index, + factory: (_, ctx) => R.getContextRequest(ctx)[paramType], + data, + pipes, + }, + }; + } + static createRouteArg(paramTypes, index, pipes = [], data = undefined) { + return { + [`${paramTypes}:${index}`]: { + index, + pipes, + data, + }, + }; + } + static setDecorators(decorators, target, name) { + // this makes metadata decorator works + const decoratedDescriptor = Reflect.decorate(decorators, target, name, Reflect.getOwnPropertyDescriptor(target, name)); + // this makes proxy decorator works + Reflect.defineProperty(target, name, decoratedDescriptor); + } + static setParsedRequestArg(index) { + return R.createCustomRouteArg(constants_2.PARSED_CRUD_REQUEST_KEY, index); + } + static setBodyArg(index, pipes = []) { + return R.createRouteArg(route_paramtypes_enum_1.RouteParamtypes.BODY, index, pipes); + } + static setCrudOptions(options, target) { + R.set(constants_2.CRUD_OPTIONS_METADATA, options, target); + } + static setRoute(route, func) { + R.set(constants_1.PATH_METADATA, route.path, func); + R.set(constants_1.METHOD_METADATA, route.method, func); + } + static setInterceptors(interceptors, func) { + R.set(constants_1.INTERCEPTORS_METADATA, interceptors, func); + } + static setRouteArgs(metadata, target, name) { + R.set(constants_1.ROUTE_ARGS_METADATA, metadata, target, name); + } + static setRouteArgsTypes(metadata, target, name) { + R.set(constants_1.PARAMTYPES_METADATA, metadata, target, name); + } + static setAction(action, func) { + R.set(constants_2.ACTION_NAME_METADATA, action, func); + } + static setCrudAuthOptions(metadata, target) { + R.set(constants_2.CRUD_AUTH_OPTIONS_METADATA, metadata, target); + } + static getCrudAuthOptions(target) { + return R.get(constants_2.CRUD_AUTH_OPTIONS_METADATA, target); + } + static getCrudOptions(target) { + return R.get(constants_2.CRUD_OPTIONS_METADATA, target); + } + static getAction(func) { + return R.get(constants_2.ACTION_NAME_METADATA, func); + } + static getOverrideRoute(func) { + return R.get(constants_2.OVERRIDE_METHOD_METADATA, func); + } + static getInterceptors(func) { + return R.get(constants_1.INTERCEPTORS_METADATA, func) || []; + } + static getRouteArgs(target, name) { + return R.get(constants_1.ROUTE_ARGS_METADATA, target, name); + } + static getRouteArgsTypes(target, name) { + return R.get(constants_1.PARAMTYPES_METADATA, target, name) || []; + } + static getParsedBody(func) { + return R.get(constants_2.PARSED_BODY_METADATA, func); + } + static getContextRequest(ctx) { + return (0, lodash_1.isFunction)(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx; + } +} +exports.R = R; +//# sourceMappingURL=reflection.helper.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/reflection.helper.js.map b/dist/packages/crudx/src/helpers/reflection.helper.js.map new file mode 100644 index 000000000..3c7d2896d --- /dev/null +++ b/dist/packages/crudx/src/helpers/reflection.helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"reflection.helper.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/helpers/reflection.helper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/request-validation.helper.d.ts b/dist/packages/crudx/src/helpers/request-validation.helper.d.ts new file mode 100644 index 000000000..abdcea3db --- /dev/null +++ b/dist/packages/crudx/src/helpers/request-validation.helper.d.ts @@ -0,0 +1,12 @@ +import { CustomOperators, ParamsOptions } from "../interfaces"; +import { ComparisonOperator, QueryFields, QueryFilter, QueryJoin, QuerySort } from "../types"; +export declare const comparisonOperatorsList: string[]; +export declare const sortOrdersList: string[]; +export declare function validateFields(fields: QueryFields): void; +export declare function validateCondition(val: QueryFilter, cond: "filter" | "or" | "search", customOperators: CustomOperators): void; +export declare function validateComparisonOperator(operator: ComparisonOperator, customOperators?: CustomOperators): void; +export declare function validateJoin(join: QueryJoin): void; +export declare function validateSort(sort: QuerySort): void; +export declare function validateNumeric(val: number, num: "limit" | "offset" | "page" | "cache" | "include_deleted" | string): void; +export declare function validateParamOption(options: ParamsOptions, name: string): void; +export declare function validateUUID(str: string, name: string): void; diff --git a/dist/packages/crudx/src/helpers/request-validation.helper.js b/dist/packages/crudx/src/helpers/request-validation.helper.js new file mode 100644 index 000000000..d74184469 --- /dev/null +++ b/dist/packages/crudx/src/helpers/request-validation.helper.js @@ -0,0 +1,82 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.validateUUID = exports.validateParamOption = exports.validateNumeric = exports.validateSort = exports.validateJoin = exports.validateComparisonOperator = exports.validateCondition = exports.validateFields = exports.sortOrdersList = exports.comparisonOperatorsList = void 0; +const lodash_1 = require("lodash"); +const exceptions_1 = require("../exceptions"); +const types_1 = require("../types"); +const checkers_helper_1 = require("./checkers.helper"); +exports.comparisonOperatorsList = [ + ...(0, lodash_1.keys)(types_1.CondOperator).map((n) => types_1.CondOperator[n]), +]; +exports.sortOrdersList = ["ASC", "DESC"]; +const sortOrdersListStr = exports.sortOrdersList.join(); +function validateFields(fields) { + if (!(0, checkers_helper_1.isArrayOfStrings)(fields)) { + throw new exceptions_1.RequestQueryException("Invalid fields. Array of strings expected"); + } +} +exports.validateFields = validateFields; +function validateCondition(val, cond, customOperators) { + if (!(0, lodash_1.isObject)(val) || !(0, checkers_helper_1.isStringFull)(val.field)) { + throw new exceptions_1.RequestQueryException(`Invalid field type in ${cond} condition. String expected`); + } + validateComparisonOperator(val.operator, customOperators); +} +exports.validateCondition = validateCondition; +function validateComparisonOperator(operator, customOperators = {}) { + const extendedComparisonOperatorsList = [ + ...exports.comparisonOperatorsList, + ...Object.keys(customOperators), + ]; + if (!extendedComparisonOperatorsList.includes(operator)) { + throw new exceptions_1.RequestQueryException(`Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`); + } +} +exports.validateComparisonOperator = validateComparisonOperator; +function validateJoin(join) { + if (!(0, lodash_1.isObject)(join) || !(0, checkers_helper_1.isStringFull)(join.field)) { + throw new exceptions_1.RequestQueryException("Invalid join field. String expected"); + } + if (!(0, lodash_1.isUndefined)(join.select) && !(0, checkers_helper_1.isArrayOfStringsFull)(join.select)) { + throw new exceptions_1.RequestQueryException("Invalid join select. Array of strings expected"); + } +} +exports.validateJoin = validateJoin; +function validateSort(sort) { + if (!(0, lodash_1.isObject)(sort) || !(0, checkers_helper_1.isStringFull)(sort.field)) { + throw new exceptions_1.RequestQueryException("Invalid sort field. String expected"); + } + if (!(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[0]) && + !(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[1])) { + throw new exceptions_1.RequestQueryException(`Invalid sort order. ${sortOrdersListStr} expected`); + } +} +exports.validateSort = validateSort; +function validateNumeric(val, num) { + if (!(0, lodash_1.isNumber)(val)) { + throw new exceptions_1.RequestQueryException(`Invalid ${num}. Number expected`); + } +} +exports.validateNumeric = validateNumeric; +function validateParamOption(options, name) { + if (!(0, lodash_1.isObject)(options)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. Invalid crud options`); + } + const option = options[name]; + if (option && option.disabled) { + return; + } + if (!(0, lodash_1.isObject)(option) || (0, lodash_1.isNil)(option.field) || (0, lodash_1.isNil)(option.type)) { + throw new exceptions_1.RequestQueryException(`Invalid param option in Crud`); + } +} +exports.validateParamOption = validateParamOption; +function validateUUID(str, name) { + const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + const uuidV4 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + if (!uuidV4.test(str) && !uuid.test(str)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. UUID string expected`); + } +} +exports.validateUUID = validateUUID; +//# sourceMappingURL=request-validation.helper.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/request-validation.helper.js.map b/dist/packages/crudx/src/helpers/request-validation.helper.js.map new file mode 100644 index 000000000..de3d4138b --- /dev/null +++ b/dist/packages/crudx/src/helpers/request-validation.helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"request-validation.helper.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/helpers/request-validation.helper.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/safe-require.helper.d.ts b/dist/packages/crudx/src/helpers/safe-require.helper.d.ts new file mode 100644 index 000000000..b05eb2f79 --- /dev/null +++ b/dist/packages/crudx/src/helpers/safe-require.helper.d.ts @@ -0,0 +1 @@ +export declare function safeRequire(path: string, loader?: () => T): T | null; diff --git a/dist/packages/crudx/src/helpers/safe-require.helper.js b/dist/packages/crudx/src/helpers/safe-require.helper.js new file mode 100644 index 000000000..d3dfb7719 --- /dev/null +++ b/dist/packages/crudx/src/helpers/safe-require.helper.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.safeRequire = void 0; +function safeRequire(path, loader) { + try { + return loader ? loader() : require(path); + } + catch (_) { + return null; + } +} +exports.safeRequire = safeRequire; +//# sourceMappingURL=safe-require.helper.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/safe-require.helper.js.map b/dist/packages/crudx/src/helpers/safe-require.helper.js.map new file mode 100644 index 000000000..35bb76273 --- /dev/null +++ b/dist/packages/crudx/src/helpers/safe-require.helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"safe-require.helper.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/helpers/safe-require.helper.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAU,IAAY,EAAE,MAAgB;IACjE,IAAI;QACF,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAND,kCAMC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/serialize.helper.d.ts b/dist/packages/crudx/src/helpers/serialize.helper.d.ts new file mode 100644 index 000000000..157401654 --- /dev/null +++ b/dist/packages/crudx/src/helpers/serialize.helper.d.ts @@ -0,0 +1,4 @@ +export declare class SerializeHelper { + static createGetManyDto(dto: any, resourceName: string): any; + static createGetOneResponseDto(resourceName: string): any; +} diff --git a/dist/packages/crudx/src/helpers/serialize.helper.js b/dist/packages/crudx/src/helpers/serialize.helper.js new file mode 100644 index 000000000..256e50d8b --- /dev/null +++ b/dist/packages/crudx/src/helpers/serialize.helper.js @@ -0,0 +1,59 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SerializeHelper = void 0; +const tslib_1 = require("tslib"); +const class_transformer_1 = require("class-transformer"); +const swagger_1 = require("@nestjs/swagger"); +class SerializeHelper { + static createGetManyDto(dto, resourceName) { + class GetManyResponseDto { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: dto, isArray: true }), + (0, class_transformer_1.Type)(() => dto) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], GetManyResponseDto.prototype, "data", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "count", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "total", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "page", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "pageCount", void 0); + Object.defineProperty(GetManyResponseDto, "name", { + writable: false, + value: `GetMany${resourceName}ResponseDto`, + }); + return GetManyResponseDto; + } + static createGetOneResponseDto(resourceName) { + class GetOneResponseDto { + } + Object.defineProperty(GetOneResponseDto, "name", { + writable: false, + value: `${resourceName}ResponseDto`, + }); + return GetOneResponseDto; + } +} +exports.SerializeHelper = SerializeHelper; +//# sourceMappingURL=serialize.helper.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/helpers/serialize.helper.js.map b/dist/packages/crudx/src/helpers/serialize.helper.js.map new file mode 100644 index 000000000..bb532f702 --- /dev/null +++ b/dist/packages/crudx/src/helpers/serialize.helper.js.map @@ -0,0 +1 @@ +{"version":3,"file":"serialize.helper.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/helpers/serialize.helper.ts"],"names":[],"mappings":";;;;AAAA,yDAAyC;AAEzC,6CAA8C;AAE9C,MAAa,eAAe;IACnB,AAAP,MAAM,CAAC,gBAAgB,CAAC,GAAQ,EAAE,YAAoB;QACpD,MAAM,kBAAkB;SAqBvB;QAjBC;YAHC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACzC,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC;YAChB,aAAa;;;wDACD;QAIZ;YAFC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAChC,aAAa;;;yDACC;QAId;YAFC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAChC,aAAa;;;yDACC;QAId;YAFC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAChC,aAAa;;;wDACA;QAIb;YAFC,IAAA,qBAAW,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAChC,aAAa;;;6DACK;QAGpB,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE;YAChD,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,UAAU,YAAY,aAAa;SAC3C,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,YAAoB;QACjD,MAAM,iBAAiB;SAAG;QAE1B,MAAM,CAAC,cAAc,CAAC,iBAAiB,EAAE,MAAM,EAAE;YAC/C,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,GAAG,YAAY,aAAa;SACpC,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC;IAC3B,CAAC;CACF;AA3CD,0CA2CC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/index.d.ts b/dist/packages/crudx/src/index.d.ts new file mode 100644 index 000000000..e2c663e11 --- /dev/null +++ b/dist/packages/crudx/src/index.d.ts @@ -0,0 +1,9 @@ +export * from "./decorators"; +export * from "./constants"; +export * from "./enums"; +export * from "./exceptions"; +export * from "./helpers"; +export * from "./interceptors"; +export * from "./interfaces"; +export * from "./services"; +export * from "./types"; diff --git a/dist/packages/crudx/src/index.js b/dist/packages/crudx/src/index.js new file mode 100644 index 000000000..d62e8729a --- /dev/null +++ b/dist/packages/crudx/src/index.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./decorators"), exports); +tslib_1.__exportStar(require("./constants"), exports); +tslib_1.__exportStar(require("./enums"), exports); +tslib_1.__exportStar(require("./exceptions"), exports); +tslib_1.__exportStar(require("./helpers"), exports); +tslib_1.__exportStar(require("./interceptors"), exports); +tslib_1.__exportStar(require("./interfaces"), exports); +tslib_1.__exportStar(require("./services"), exports); +tslib_1.__exportStar(require("./types"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/index.js.map b/dist/packages/crudx/src/index.js.map new file mode 100644 index 000000000..e46852833 --- /dev/null +++ b/dist/packages/crudx/src/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/crudx/src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,sDAA4B;AAC5B,kDAAwB;AACxB,uDAA6B;AAC7B,oDAA0B;AAC1B,yDAA+B;AAC/B,uDAA6B;AAC7B,qDAA2B;AAC3B,kDAAwB"} \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/crud-base.interceptor.d.ts b/dist/packages/crudx/src/interceptors/crud-base.interceptor.d.ts new file mode 100644 index 000000000..f57466fc2 --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-base.interceptor.d.ts @@ -0,0 +1,10 @@ +import { ExecutionContext } from "@nestjs/common"; +import { CrudActions } from "../enums"; +import { MergedCrudOptions } from "../interfaces"; +export declare class CrudBaseInterceptor { + protected getCrudInfo(context: ExecutionContext): { + ctrlOptions: MergedCrudOptions; + crudOptions: Partial; + action: CrudActions; + }; +} diff --git a/dist/packages/crudx/src/interceptors/crud-base.interceptor.js b/dist/packages/crudx/src/interceptors/crud-base.interceptor.js new file mode 100644 index 000000000..3fa37cccf --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-base.interceptor.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudBaseInterceptor = void 0; +const helpers_1 = require("../helpers"); +class CrudBaseInterceptor { + getCrudInfo(context) { + const ctrl = context.getClass(); + const handler = context.getHandler(); + const ctrlOptions = helpers_1.R.getCrudOptions(ctrl); + const crudOptions = ctrlOptions + ? ctrlOptions + : { + query: {}, + routes: {}, + params: {}, + operators: {}, + }; + const action = helpers_1.R.getAction(handler); + return { ctrlOptions, crudOptions, action }; + } +} +exports.CrudBaseInterceptor = CrudBaseInterceptor; +//# sourceMappingURL=crud-base.interceptor.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/crud-base.interceptor.js.map b/dist/packages/crudx/src/interceptors/crud-base.interceptor.js.map new file mode 100644 index 000000000..0104d33f7 --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-base.interceptor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-base.interceptor.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interceptors/crud-base.interceptor.ts"],"names":[],"mappings":";;;AACA,wCAA+B;AAI/B,MAAa,mBAAmB;IACpB,WAAW,CAAC,OAAyB;QAK7C,MAAM,IAAI,GAAc,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,WAAW,GAAsB,WAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,WAAW;YAC7B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC;gBACE,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,EAAE;gBACV,SAAS,EAAE,EAAE;aACd,CAAC;QACN,MAAM,MAAM,GAAgB,WAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEjD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC9C,CAAC;CACF;AArBD,kDAqBC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/crud-request.interceptor.d.ts b/dist/packages/crudx/src/interceptors/crud-request.interceptor.d.ts new file mode 100644 index 000000000..9493a112a --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-request.interceptor.d.ts @@ -0,0 +1,18 @@ +import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common"; +import { SCondition } from "../types"; +import { QueryParserService } from "../services"; +import { CrudActions } from "../enums"; +import { CrudRequest, MergedCrudOptions } from "../interfaces"; +import { CrudBaseInterceptor } from "./crud-base.interceptor"; +import { Observable } from "rxjs"; +export declare class CrudRequestInterceptor extends CrudBaseInterceptor implements NestInterceptor { + intercept(context: ExecutionContext, next: CallHandler): Observable; + getCrudRequest(parser: QueryParserService, crudOptions: Partial, auth?: any): CrudRequest; + getSearch(parser: QueryParserService, crudOptions: Partial, action: CrudActions, params?: any): SCondition[]; + getParamsSearch(parser: QueryParserService, crudOptions: Partial, params?: any): SCondition[]; + getAuth(parser: QueryParserService, crudOptions: Partial, req: any): { + filter?: any; + or?: any; + auth?: any; + }; +} diff --git a/dist/packages/crudx/src/interceptors/crud-request.interceptor.js b/dist/packages/crudx/src/interceptors/crud-request.interceptor.js new file mode 100644 index 000000000..bf03e53de --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-request.interceptor.js @@ -0,0 +1,163 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudRequestInterceptor = void 0; +const tslib_1 = require("tslib"); +const common_1 = require("@nestjs/common"); +const exceptions_1 = require("../exceptions"); +const services_1 = require("../services"); +const helpers_1 = require("../helpers"); +const lodash_1 = require("lodash"); +const constants_1 = require("../constants"); +const enums_1 = require("../enums"); +const crud_base_interceptor_1 = require("./crud-base.interceptor"); +let CrudRequestInterceptor = exports.CrudRequestInterceptor = class CrudRequestInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + var _a; + const req = context.switchToHttp().getRequest(); + try { + /* istanbul ignore else */ + if (!req[constants_1.PARSED_CRUD_REQUEST_KEY]) { + const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context); + const parser = services_1.QueryParserService.create(); + parser.parseQuery(req.query, (_a = crudOptions.operators) === null || _a === void 0 ? void 0 : _a.custom); + let auth = null; + if (!(0, lodash_1.isNil)(ctrlOptions)) { + const search = this.getSearch(parser, crudOptions, action, req.params); + auth = this.getAuth(parser, crudOptions, req); + parser.search = auth.or + ? { $or: [auth.or, { $and: search }] } + : { $and: [auth.filter, ...search] }; + } + else { + parser.search = { $and: this.getSearch(parser, crudOptions, action) }; + } + req[constants_1.PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(parser, crudOptions, auth === null || auth === void 0 ? void 0 : auth.auth); + } + return next.handle(); + } + catch (error) { + throw error instanceof exceptions_1.RequestQueryException + ? new common_1.BadRequestException(error.message) + : error; + } + } + getCrudRequest(parser, crudOptions, auth) { + const parsed = parser.getParsed(); + const { query, routes, params, operators } = crudOptions; + return { + parsed, + options: { + query, + routes, + params, + operators, + }, + auth, + }; + } + getSearch(parser, crudOptions, action, params) { + var _a, _b, _c, _d, _e; + // params condition + const paramsSearch = this.getParamsSearch(parser, crudOptions, params); + // if `CrudOptions.query.filter` is a function then return transformed query search conditions + if ((0, lodash_1.isFunction)((_a = crudOptions.query) === null || _a === void 0 ? void 0 : _a.filter)) { + const filterCond = ((_b = crudOptions.query) === null || _b === void 0 ? void 0 : _b.filter)(parser.search, action === enums_1.CrudActions.ReadAll) || {}; + return [...paramsSearch, filterCond]; + } + // if `CrudOptions.query.filter` is array or search condition type + const optionsFilter = (0, helpers_1.isArrayFull)((_c = crudOptions.query) === null || _c === void 0 ? void 0 : _c.filter) + ? ((_d = crudOptions.query) === null || _d === void 0 ? void 0 : _d.filter).map(parser.convertFilterToSearch) + : [((_e = crudOptions.query) === null || _e === void 0 ? void 0 : _e.filter) || {}]; + let search = []; + if (parser.search) { + search = [parser.search]; + } + else if (parser.filter.length > 0 && parser.or.length > 0) { + search = + parser.filter.length === 1 && parser.or.length === 1 + ? [ + { + $or: [ + parser.convertFilterToSearch(parser.filter[0]), + parser.convertFilterToSearch(parser.or[0]), + ], + }, + ] + : [ + { + $or: [ + { $and: parser.filter.map(parser.convertFilterToSearch) }, + { $and: parser.or.map(parser.convertFilterToSearch) }, + ], + }, + ]; + } + else if (parser.filter.length > 0) { + search = parser.filter.map(parser.convertFilterToSearch); + } + else { + if (parser.or.length > 0) { + search = + parser.or.length === 1 + ? [parser.convertFilterToSearch(parser.or[0])] + : [ + { + $or: parser.or.map(parser.convertFilterToSearch), + }, + ]; + } + } + return [...paramsSearch, ...optionsFilter, ...search]; + } + getParamsSearch(parser, crudOptions, params) { + if (params) { + parser.parseParams(params, crudOptions.params); + return (0, helpers_1.isArrayFull)(parser.paramsFilter) + ? // @ts-ignore + parser.paramsFilter.map(parser.convertFilterToSearch) + : []; + } + return []; + } + getAuth(parser, crudOptions, req) { + const auth = {}; + /* istanbul ignore else */ + if (crudOptions.auth) { + const userOrRequest = crudOptions.auth.property + ? req[crudOptions.auth.property] + : req; + if (crudOptions.auth.property && req[crudOptions.auth.property]) { + if (typeof req[crudOptions.auth.property] === "object") { + if (Object.keys(req[crudOptions.auth.property]).length > 0) { + auth.auth = req[crudOptions.auth.property]; + } + } + else { + auth.auth = req[crudOptions.auth.property]; + } + } + if ((0, lodash_1.isFunction)(crudOptions.auth.or)) { + auth.or = crudOptions.auth.or(userOrRequest); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.filter) && !auth.or) { + auth.filter = crudOptions.auth.filter(userOrRequest) || {}; + } + if ((0, lodash_1.isFunction)(crudOptions.auth.persist)) { + parser.setAuthPersist(crudOptions.auth.persist(userOrRequest)); + } + const options = {}; + if ((0, lodash_1.isFunction)(crudOptions.auth.classTransformOptions)) { + Object.assign(options, crudOptions.auth.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.groups)) { + options.groups = crudOptions.auth.groups(userOrRequest); + } + parser.setClassTransformOptions(options); + } + return auth; + } +}; +exports.CrudRequestInterceptor = CrudRequestInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudRequestInterceptor); +//# sourceMappingURL=crud-request.interceptor.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/crud-request.interceptor.js.map b/dist/packages/crudx/src/interceptors/crud-request.interceptor.js.map new file mode 100644 index 000000000..744545824 --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-request.interceptor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-request.interceptor.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interceptors/crud-request.interceptor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/crud-response.interceptor.d.ts b/dist/packages/crudx/src/interceptors/crud-response.interceptor.d.ts new file mode 100644 index 000000000..3dacc9bda --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-response.interceptor.d.ts @@ -0,0 +1,9 @@ +import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common"; +import { ClassTransformOptions } from "class-transformer"; +import { Observable } from "rxjs"; +import { CrudBaseInterceptor } from "./crud-base.interceptor"; +export declare class CrudResponseInterceptor extends CrudBaseInterceptor implements NestInterceptor { + intercept(context: ExecutionContext, next: CallHandler): Observable; + protected transform(dto: any, data: any, options: ClassTransformOptions): any; + protected serialize(context: ExecutionContext, data: any): any; +} diff --git a/dist/packages/crudx/src/interceptors/crud-response.interceptor.js b/dist/packages/crudx/src/interceptors/crud-response.interceptor.js new file mode 100644 index 000000000..dc96c6ac1 --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-response.interceptor.js @@ -0,0 +1,80 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudResponseInterceptor = void 0; +const tslib_1 = require("tslib"); +const common_1 = require("@nestjs/common"); +const lodash_1 = require("lodash"); +const helpers_1 = require("../helpers"); +const class_transformer_1 = require("class-transformer"); +const operators_1 = require("rxjs/operators"); +const enums_1 = require("../enums"); +const crud_base_interceptor_1 = require("./crud-base.interceptor"); +const class_validator_1 = require("class-validator"); +const actionToDtoNameMap = { + [enums_1.CrudActions.ReadAll]: "getMany", + [enums_1.CrudActions.ReadOne]: "get", + [enums_1.CrudActions.CreateMany]: "createMany", + [enums_1.CrudActions.CreateOne]: "create", + [enums_1.CrudActions.UpdateOne]: "update", + [enums_1.CrudActions.ReplaceOne]: "replace", + [enums_1.CrudActions.DeleteAll]: "delete", + [enums_1.CrudActions.DeleteOne]: "delete", + [enums_1.CrudActions.RecoverOne]: "recover", +}; +let CrudResponseInterceptor = exports.CrudResponseInterceptor = class CrudResponseInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + return next.handle().pipe((0, operators_1.map)((data) => this.serialize(context, data))); + } + transform(dto, data, options) { + if (!(0, class_validator_1.isObject)(data) || (0, helpers_1.isFalse)(dto)) { + return data; + } + if (!(0, lodash_1.isFunction)(dto)) { + return data.constructor !== Object + ? (0, class_transformer_1.instanceToPlain)(data, options) + : data; + } + return data instanceof dto + ? (0, class_transformer_1.instanceToPlain)(data, options) + : /* @ts-ignore */ + (0, class_transformer_1.instanceToPlain)(Object.assign(new dto(), data), options); + } + serialize(context, data) { + var _a, _b, _c, _d, _e, _f; + const req = context.switchToHttp().getRequest(); + const { crudOptions, action } = this.getCrudInfo(context); + const { serialize } = crudOptions; + /* @ts-ignore */ + const dto = serialize[actionToDtoNameMap[action]]; + const isArray = Array.isArray(data); + const options = {}; + if ((0, lodash_1.isFunction)((_a = crudOptions.auth) === null || _a === void 0 ? void 0 : _a.classTransformOptions)) { + const userOrRequest = ((_b = crudOptions.auth) === null || _b === void 0 ? void 0 : _b.property) + ? req[crudOptions.auth.property] + : req; + Object.assign(options, (_c = crudOptions.auth) === null || _c === void 0 ? void 0 : _c.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)((_d = crudOptions.auth) === null || _d === void 0 ? void 0 : _d.groups)) { + const userOrRequest = ((_e = crudOptions.auth) === null || _e === void 0 ? void 0 : _e.property) + ? req[crudOptions.auth.property] + : req; + options.groups = (_f = crudOptions.auth) === null || _f === void 0 ? void 0 : _f.groups(userOrRequest); + } + switch (action) { + case enums_1.CrudActions.ReadAll: + return isArray + ? data.map((item) => this.transform(serialize === null || serialize === void 0 ? void 0 : serialize.get, item, options)) + : this.transform(dto, data, options); + case enums_1.CrudActions.CreateMany: + return isArray + ? data.map((item) => this.transform(dto, item, options)) + : this.transform(dto, data, options); + default: + return this.transform(dto, data, options); + } + } +}; +exports.CrudResponseInterceptor = CrudResponseInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudResponseInterceptor); +//# sourceMappingURL=crud-response.interceptor.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/crud-response.interceptor.js.map b/dist/packages/crudx/src/interceptors/crud-response.interceptor.js.map new file mode 100644 index 000000000..2cb4e848d --- /dev/null +++ b/dist/packages/crudx/src/interceptors/crud-response.interceptor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-response.interceptor.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interceptors/crud-response.interceptor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/index.d.ts b/dist/packages/crudx/src/interceptors/index.d.ts new file mode 100644 index 000000000..d70938004 --- /dev/null +++ b/dist/packages/crudx/src/interceptors/index.d.ts @@ -0,0 +1,2 @@ +export * from "./crud-request.interceptor"; +export * from "./crud-response.interceptor"; diff --git a/dist/packages/crudx/src/interceptors/index.js b/dist/packages/crudx/src/interceptors/index.js new file mode 100644 index 000000000..29a240429 --- /dev/null +++ b/dist/packages/crudx/src/interceptors/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./crud-request.interceptor"), exports); +tslib_1.__exportStar(require("./crud-response.interceptor"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interceptors/index.js.map b/dist/packages/crudx/src/interceptors/index.js.map new file mode 100644 index 000000000..3d2d5059f --- /dev/null +++ b/dist/packages/crudx/src/interceptors/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interceptors/index.ts"],"names":[],"mappings":";;;AAAA,qEAA2C;AAC3C,sEAA4C"} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/auth-options.interface.d.ts b/dist/packages/crudx/src/interfaces/auth-options.interface.d.ts new file mode 100644 index 000000000..2c6a68957 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/auth-options.interface.d.ts @@ -0,0 +1,20 @@ +import { SCondition } from "../types"; +import { ObjectLiteral } from "../types"; +import { ClassTransformOptions } from "class-transformer"; +export interface AuthGlobalOptions { + property?: string; + /** Get options for the `classToPlain` function (response) */ + classTransformOptions?: (req: any) => ClassTransformOptions; + /** Get `groups` value for the `classToPlain` function options (response) */ + groups?: (req: any) => string[]; +} +export interface AuthOptions { + property?: string; + /** Get options for the `classToPlain` function (response) */ + classTransformOptions?: (req: any) => ClassTransformOptions; + /** Get `groups` value for the `classToPlain` function options (response) */ + groups?: (req: any) => string[]; + filter?: (req: any) => SCondition | void; + or?: (req: any) => SCondition | void; + persist?: (req: any) => ObjectLiteral; +} diff --git a/dist/packages/crudx/src/interfaces/auth-options.interface.js b/dist/packages/crudx/src/interfaces/auth-options.interface.js new file mode 100644 index 000000000..ac3790be5 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/auth-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=auth-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/auth-options.interface.js.map b/dist/packages/crudx/src/interfaces/auth-options.interface.js.map new file mode 100644 index 000000000..d8b8a9cdd --- /dev/null +++ b/dist/packages/crudx/src/interfaces/auth-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auth-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/auth-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/base-route.interface.d.ts b/dist/packages/crudx/src/interfaces/base-route.interface.d.ts new file mode 100644 index 000000000..273a87517 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/base-route.interface.d.ts @@ -0,0 +1,10 @@ +import { RequestMethod } from "@nestjs/common"; +import { BaseRouteName } from "../types"; +export interface BaseRoute { + name: BaseRouteName; + path: string; + method: RequestMethod; + enable: boolean; + override: boolean; + withParams: boolean; +} diff --git a/dist/packages/crudx/src/interfaces/base-route.interface.js b/dist/packages/crudx/src/interfaces/base-route.interface.js new file mode 100644 index 000000000..bd7897299 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/base-route.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=base-route.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/base-route.interface.js.map b/dist/packages/crudx/src/interfaces/base-route.interface.js.map new file mode 100644 index 000000000..1b975e50a --- /dev/null +++ b/dist/packages/crudx/src/interfaces/base-route.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"base-route.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/base-route.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/create-many-dto.interface.d.ts b/dist/packages/crudx/src/interfaces/create-many-dto.interface.d.ts new file mode 100644 index 000000000..3d0e821a1 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/create-many-dto.interface.d.ts @@ -0,0 +1,3 @@ +export interface CreateManyDto { + bulk: T[]; +} diff --git a/dist/packages/crudx/src/interfaces/create-many-dto.interface.js b/dist/packages/crudx/src/interfaces/create-many-dto.interface.js new file mode 100644 index 000000000..89dd00b12 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/create-many-dto.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=create-many-dto.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/create-many-dto.interface.js.map b/dist/packages/crudx/src/interfaces/create-many-dto.interface.js.map new file mode 100644 index 000000000..892e5421a --- /dev/null +++ b/dist/packages/crudx/src/interfaces/create-many-dto.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"create-many-dto.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/create-many-dto.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/create-query-params.interface.d.ts b/dist/packages/crudx/src/interfaces/create-query-params.interface.d.ts new file mode 100644 index 000000000..e64c006aa --- /dev/null +++ b/dist/packages/crudx/src/interfaces/create-query-params.interface.d.ts @@ -0,0 +1,15 @@ +import { QueryExtra, QueryFields, QueryFilter, QueryFilterArr, QueryJoin, QueryJoinArr, QuerySort, QuerySortArr, SCondition } from "../types"; +export interface CreateQueryParams { + fields?: QueryFields; + search?: SCondition; + filter?: QueryFilter | QueryFilterArr | Array; + or?: QueryFilter | QueryFilterArr | Array; + join?: QueryJoin | QueryJoinArr | Array; + sort?: QuerySort | QuerySortArr | Array; + limit?: number; + offset?: number; + page?: number; + resetCache?: boolean; + includeDeleted?: number; + extra?: QueryExtra; +} diff --git a/dist/packages/crudx/src/interfaces/create-query-params.interface.js b/dist/packages/crudx/src/interfaces/create-query-params.interface.js new file mode 100644 index 000000000..404cfa471 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/create-query-params.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=create-query-params.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/create-query-params.interface.js.map b/dist/packages/crudx/src/interfaces/create-query-params.interface.js.map new file mode 100644 index 000000000..05c32de50 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/create-query-params.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"create-query-params.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/create-query-params.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-controller.interface.d.ts b/dist/packages/crudx/src/interfaces/crud-controller.interface.d.ts new file mode 100644 index 000000000..120859df1 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-controller.interface.d.ts @@ -0,0 +1,15 @@ +import { CreateManyDto } from "./create-many-dto.interface"; +import { CrudRequest } from "./crud-request.interface"; +import { GetManyDefaultResponse } from "./get-many-default-response.interface"; +import { CrudService } from "../services"; +export interface CrudController { + service: CrudService; + getManyBase?(req: CrudRequest): Promise | T[]>; + getOneBase?(req: CrudRequest): Promise; + createOneBase?(req: CrudRequest, dto: T): Promise; + createManyBase?(req: CrudRequest, dto: CreateManyDto): Promise; + updateOneBase?(req: CrudRequest, dto: Partial): Promise; + replaceOneBase?(req: CrudRequest, dto: T): Promise; + deleteOneBase?(req: CrudRequest): Promise; + recoverOneBase?(req: CrudRequest): Promise; +} diff --git a/dist/packages/crudx/src/interfaces/crud-controller.interface.js b/dist/packages/crudx/src/interfaces/crud-controller.interface.js new file mode 100644 index 000000000..0e6de60a4 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-controller.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=crud-controller.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-controller.interface.js.map b/dist/packages/crudx/src/interfaces/crud-controller.interface.js.map new file mode 100644 index 000000000..00ed9404c --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-controller.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-controller.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/crud-controller.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-global-config.interface.d.ts b/dist/packages/crudx/src/interfaces/crud-global-config.interface.d.ts new file mode 100644 index 000000000..5a4c2edf2 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-global-config.interface.d.ts @@ -0,0 +1,31 @@ +import { RequestQueryBuilderOptions } from "./request-query-builder-options.interface"; +import { AuthGlobalOptions } from "./auth-options.interface"; +import { OperatorsOptions } from "./operators-options.interface"; +import { ParamsOptions } from "./params-options.interface"; +import { RoutesOptions } from "./routes-options.interface"; +import { RoutesFactoryService } from "../services"; +export interface CrudGlobalConfig { + queryParser?: RequestQueryBuilderOptions; + auth?: AuthGlobalOptions; + routes?: RoutesOptions; + params?: ParamsOptions; + operators?: OperatorsOptions; + query?: { + limit?: number; + maxLimit?: number; + cache?: number | false; + alwaysPaginate?: boolean; + softDelete?: boolean; + }; + serialize?: { + getMany?: false; + get?: false; + create?: false; + createMany?: false; + update?: false; + replace?: false; + delete?: false; + recover?: false; + }; + routesFactory?: typeof RoutesFactoryService; +} diff --git a/dist/packages/crudx/src/interfaces/crud-global-config.interface.js b/dist/packages/crudx/src/interfaces/crud-global-config.interface.js new file mode 100644 index 000000000..992fce6c1 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-global-config.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=crud-global-config.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-global-config.interface.js.map b/dist/packages/crudx/src/interfaces/crud-global-config.interface.js.map new file mode 100644 index 000000000..d4168ebf3 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-global-config.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-global-config.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/crud-global-config.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-options.interface.d.ts b/dist/packages/crudx/src/interfaces/crud-options.interface.d.ts new file mode 100644 index 000000000..4808b5bc4 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-options.interface.d.ts @@ -0,0 +1,30 @@ +import { ValidationPipeOptions } from "@nestjs/common"; +import { RoutesFactoryService } from "../services"; +import { AuthOptions } from "./auth-options.interface"; +import { DtoOptions } from "./dto-options.interface"; +import { ModelOptions } from "./model-options.interface"; +import { OperatorsOptions } from "./operators-options.interface"; +import { ParamsOptions } from "./params-options.interface"; +import { QueryOptions } from "./query-options.interface"; +import { RoutesOptions } from "./routes-options.interface"; +import { SerializeOptions } from "./serialize-options.interface"; +export interface CrudRequestOptions { + query?: QueryOptions; + routes?: RoutesOptions; + params?: ParamsOptions; + operators?: OperatorsOptions; +} +export interface CrudOptions { + model: ModelOptions; + dto?: DtoOptions; + serialize?: SerializeOptions; + query?: QueryOptions; + routes?: RoutesOptions; + routesFactory?: typeof RoutesFactoryService; + params?: ParamsOptions; + validation?: ValidationPipeOptions | false; + operators?: OperatorsOptions; +} +export interface MergedCrudOptions extends CrudOptions { + auth?: AuthOptions; +} diff --git a/dist/packages/crudx/src/interfaces/crud-options.interface.js b/dist/packages/crudx/src/interfaces/crud-options.interface.js new file mode 100644 index 000000000..565e74534 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=crud-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-options.interface.js.map b/dist/packages/crudx/src/interfaces/crud-options.interface.js.map new file mode 100644 index 000000000..425ab70e7 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/crud-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-request.interface.d.ts b/dist/packages/crudx/src/interfaces/crud-request.interface.d.ts new file mode 100644 index 000000000..a1c5265c8 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-request.interface.d.ts @@ -0,0 +1,8 @@ +import { ParsedRequestParams } from "./parsed-request.interface"; +import { CrudRequestOptions } from "./crud-options.interface"; +export interface CrudRequest { + parsed: ParsedRequestParams; + options: CrudRequestOptions; + /** authenticated user's from request */ + auth?: {}; +} diff --git a/dist/packages/crudx/src/interfaces/crud-request.interface.js b/dist/packages/crudx/src/interfaces/crud-request.interface.js new file mode 100644 index 000000000..067167b37 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-request.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=crud-request.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/crud-request.interface.js.map b/dist/packages/crudx/src/interfaces/crud-request.interface.js.map new file mode 100644 index 000000000..e7a3bfe7c --- /dev/null +++ b/dist/packages/crudx/src/interfaces/crud-request.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-request.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/crud-request.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/dto-options.interface.d.ts b/dist/packages/crudx/src/interfaces/dto-options.interface.d.ts new file mode 100644 index 000000000..c94b033a9 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/dto-options.interface.d.ts @@ -0,0 +1,5 @@ +export interface DtoOptions { + create?: any; + update?: any; + replace?: any; +} diff --git a/dist/packages/crudx/src/interfaces/dto-options.interface.js b/dist/packages/crudx/src/interfaces/dto-options.interface.js new file mode 100644 index 000000000..8cf26d18b --- /dev/null +++ b/dist/packages/crudx/src/interfaces/dto-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=dto-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/dto-options.interface.js.map b/dist/packages/crudx/src/interfaces/dto-options.interface.js.map new file mode 100644 index 000000000..37eb53139 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/dto-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"dto-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/dto-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/get-many-default-response.interface.d.ts b/dist/packages/crudx/src/interfaces/get-many-default-response.interface.d.ts new file mode 100644 index 000000000..920675dbf --- /dev/null +++ b/dist/packages/crudx/src/interfaces/get-many-default-response.interface.d.ts @@ -0,0 +1,7 @@ +export interface GetManyDefaultResponse { + data: T[]; + count: number; + total: number; + page: number; + pageCount: number; +} diff --git a/dist/packages/crudx/src/interfaces/get-many-default-response.interface.js b/dist/packages/crudx/src/interfaces/get-many-default-response.interface.js new file mode 100644 index 000000000..69111e21a --- /dev/null +++ b/dist/packages/crudx/src/interfaces/get-many-default-response.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=get-many-default-response.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/get-many-default-response.interface.js.map b/dist/packages/crudx/src/interfaces/get-many-default-response.interface.js.map new file mode 100644 index 000000000..5cd10e49e --- /dev/null +++ b/dist/packages/crudx/src/interfaces/get-many-default-response.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"get-many-default-response.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/get-many-default-response.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/index.d.ts b/dist/packages/crudx/src/interfaces/index.d.ts new file mode 100644 index 000000000..53ae5cb39 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/index.d.ts @@ -0,0 +1,18 @@ +export * from "./auth-options.interface"; +export * from "./base-route.interface"; +export * from "./create-many-dto.interface"; +export * from "./create-query-params.interface"; +export * from "./crud-controller.interface"; +export * from "./crud-global-config.interface"; +export * from "./crud-options.interface"; +export * from "./crud-request.interface"; +export * from "./dto-options.interface"; +export * from "./get-many-default-response.interface"; +export * from "./model-options.interface"; +export * from "./operators-options.interface"; +export * from "./params-options.interface"; +export * from "./parsed-request.interface"; +export * from "./query-options.interface"; +export * from "./request-query-builder-options.interface"; +export * from "./routes-options.interface"; +export * from "./serialize-options.interface"; diff --git a/dist/packages/crudx/src/interfaces/index.js b/dist/packages/crudx/src/interfaces/index.js new file mode 100644 index 000000000..d8b6d2d8b --- /dev/null +++ b/dist/packages/crudx/src/interfaces/index.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./auth-options.interface"), exports); +tslib_1.__exportStar(require("./base-route.interface"), exports); +tslib_1.__exportStar(require("./create-many-dto.interface"), exports); +tslib_1.__exportStar(require("./create-query-params.interface"), exports); +tslib_1.__exportStar(require("./crud-controller.interface"), exports); +tslib_1.__exportStar(require("./crud-global-config.interface"), exports); +tslib_1.__exportStar(require("./crud-options.interface"), exports); +tslib_1.__exportStar(require("./crud-request.interface"), exports); +tslib_1.__exportStar(require("./dto-options.interface"), exports); +tslib_1.__exportStar(require("./get-many-default-response.interface"), exports); +tslib_1.__exportStar(require("./model-options.interface"), exports); +tslib_1.__exportStar(require("./operators-options.interface"), exports); +tslib_1.__exportStar(require("./params-options.interface"), exports); +tslib_1.__exportStar(require("./parsed-request.interface"), exports); +tslib_1.__exportStar(require("./query-options.interface"), exports); +tslib_1.__exportStar(require("./request-query-builder-options.interface"), exports); +tslib_1.__exportStar(require("./routes-options.interface"), exports); +tslib_1.__exportStar(require("./serialize-options.interface"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/index.js.map b/dist/packages/crudx/src/interfaces/index.js.map new file mode 100644 index 000000000..1e93913b6 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,mEAAyC;AACzC,iEAAuC;AACvC,sEAA4C;AAC5C,0EAAgD;AAChD,sEAA4C;AAC5C,yEAA+C;AAC/C,mEAAyC;AACzC,mEAAyC;AACzC,kEAAwC;AACxC,gFAAsD;AACtD,oEAA0C;AAC1C,wEAA8C;AAC9C,qEAA2C;AAC3C,qEAA2C;AAC3C,oEAA0C;AAC1C,oFAA0D;AAC1D,qEAA2C;AAC3C,wEAA8C"} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/model-options.interface.d.ts b/dist/packages/crudx/src/interfaces/model-options.interface.d.ts new file mode 100644 index 000000000..a5d625e34 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/model-options.interface.d.ts @@ -0,0 +1,3 @@ +export interface ModelOptions { + type: any; +} diff --git a/dist/packages/crudx/src/interfaces/model-options.interface.js b/dist/packages/crudx/src/interfaces/model-options.interface.js new file mode 100644 index 000000000..1462068ac --- /dev/null +++ b/dist/packages/crudx/src/interfaces/model-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=model-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/model-options.interface.js.map b/dist/packages/crudx/src/interfaces/model-options.interface.js.map new file mode 100644 index 000000000..ede6748c2 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/model-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"model-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/model-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/operators-options.interface.d.ts b/dist/packages/crudx/src/interfaces/operators-options.interface.d.ts new file mode 100644 index 000000000..81ef3253b --- /dev/null +++ b/dist/packages/crudx/src/interfaces/operators-options.interface.d.ts @@ -0,0 +1,13 @@ +export interface OperatorsOptions { + custom?: CustomOperators; +} +export type CustomOperatorQuery = (field: string, param: string) => string; +export interface CustomOperators { + [key: string]: { + query: CustomOperatorQuery; + params?: { + [field: string]: any; + }; + isArray?: boolean; + }; +} diff --git a/dist/packages/crudx/src/interfaces/operators-options.interface.js b/dist/packages/crudx/src/interfaces/operators-options.interface.js new file mode 100644 index 000000000..7b48309b0 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/operators-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=operators-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/operators-options.interface.js.map b/dist/packages/crudx/src/interfaces/operators-options.interface.js.map new file mode 100644 index 000000000..88e3e2e30 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/operators-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"operators-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/operators-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/params-options.interface.d.ts b/dist/packages/crudx/src/interfaces/params-options.interface.d.ts new file mode 100644 index 000000000..e3fb9d376 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/params-options.interface.d.ts @@ -0,0 +1,11 @@ +import { ParamOptionType } from "../types"; +export interface ParamsOptions { + [key: string]: ParamOption; +} +export interface ParamOption { + field?: string; + type?: ParamOptionType; + primary?: boolean; + disabled?: boolean; + enum?: []; +} diff --git a/dist/packages/crudx/src/interfaces/params-options.interface.js b/dist/packages/crudx/src/interfaces/params-options.interface.js new file mode 100644 index 000000000..6240cc8df --- /dev/null +++ b/dist/packages/crudx/src/interfaces/params-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=params-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/params-options.interface.js.map b/dist/packages/crudx/src/interfaces/params-options.interface.js.map new file mode 100644 index 000000000..9af1adedc --- /dev/null +++ b/dist/packages/crudx/src/interfaces/params-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"params-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/params-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/parsed-request.interface.d.ts b/dist/packages/crudx/src/interfaces/parsed-request.interface.d.ts new file mode 100644 index 000000000..e2ce23108 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/parsed-request.interface.d.ts @@ -0,0 +1,25 @@ +import { ClassTransformOptions } from "class-transformer"; +import { QueryFields, QueryFilter, QueryJoin, QuerySort, SCondition, ObjectLiteral } from "../types"; +export interface ParsedRequestParams { + fields: QueryFields; + paramsFilter: (QueryFilter | undefined)[]; + authPersist: ObjectLiteral | undefined; + classTransformOptions: ClassTransformOptions | undefined; + search: SCondition | undefined; + filter: QueryFilter[]; + or: QueryFilter[]; + join: QueryJoin[]; + sort: QuerySort[]; + limit: number | undefined; + offset: number | undefined; + page: number | undefined; + cache: number | undefined; + includeDeleted: number | undefined; + /** + * Extra options. + * + * Custom extra option come from Request and can be used anywhere you want for your business rules. + * CrudRequest lib. do not evaluate this attribute. + */ + extra: ObjectLiteral | undefined; +} diff --git a/dist/packages/crudx/src/interfaces/parsed-request.interface.js b/dist/packages/crudx/src/interfaces/parsed-request.interface.js new file mode 100644 index 000000000..963f69544 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/parsed-request.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=parsed-request.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/parsed-request.interface.js.map b/dist/packages/crudx/src/interfaces/parsed-request.interface.js.map new file mode 100644 index 000000000..889d518e1 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/parsed-request.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"parsed-request.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/parsed-request.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/query-options.interface.d.ts b/dist/packages/crudx/src/interfaces/query-options.interface.d.ts new file mode 100644 index 000000000..fe8fb67ff --- /dev/null +++ b/dist/packages/crudx/src/interfaces/query-options.interface.d.ts @@ -0,0 +1,26 @@ +import { QueryFields, QuerySort, QueryFilterOption } from "../types"; +export interface QueryOptions { + allow?: QueryFields; + exclude?: QueryFields; + persist?: QueryFields; + filter?: QueryFilterOption; + join?: JoinOptions; + sort?: QuerySort[]; + limit?: number; + maxLimit?: number; + cache?: number | false; + alwaysPaginate?: boolean; + softDelete?: boolean; +} +export interface JoinOptions { + [key: string]: JoinOption; +} +export interface JoinOption { + alias?: string; + allow?: QueryFields; + eager?: boolean; + exclude?: QueryFields; + persist?: QueryFields; + select?: boolean; + required?: boolean; +} diff --git a/dist/packages/crudx/src/interfaces/query-options.interface.js b/dist/packages/crudx/src/interfaces/query-options.interface.js new file mode 100644 index 000000000..d99c33992 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/query-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=query-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/query-options.interface.js.map b/dist/packages/crudx/src/interfaces/query-options.interface.js.map new file mode 100644 index 000000000..deaeb7314 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/query-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"query-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/query-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.d.ts b/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.d.ts new file mode 100644 index 000000000..8af9ba949 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.d.ts @@ -0,0 +1,19 @@ +export interface ParamsNamesMap { + fields?: string | string[]; + search?: string | string[]; + filter?: string | string[]; + or?: string | string[]; + join?: string | string[]; + sort?: string | string[]; + limit?: string | string[]; + offset?: string | string[]; + page?: string | string[]; + cache?: string | string[]; + includeDeleted?: string | string[]; + extra?: string | string[]; +} +export interface RequestQueryBuilderOptions { + delim: string; + delimStr: string; + paramNamesMap?: ParamsNamesMap; +} diff --git a/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js b/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js new file mode 100644 index 000000000..e031ab613 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=request-query-builder-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js.map b/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js.map new file mode 100644 index 000000000..3464047bb --- /dev/null +++ b/dist/packages/crudx/src/interfaces/request-query-builder-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"request-query-builder-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/request-query-builder-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/routes-options.interface.d.ts b/dist/packages/crudx/src/interfaces/routes-options.interface.d.ts new file mode 100644 index 000000000..1ccc7c8e9 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/routes-options.interface.d.ts @@ -0,0 +1,40 @@ +import { BaseRouteName } from "../types"; +export interface RoutesOptions { + exclude?: BaseRouteName[]; + only?: BaseRouteName[]; + getManyBase?: GetManyRouteOptions; + getOneBase?: GetOneRouteOptions; + createOneBase?: CreateOneRouteOptions; + createManyBase?: CreateManyRouteOptions; + updateOneBase?: UpdateOneRouteOptions; + replaceOneBase?: ReplaceOneRouteOptions; + deleteOneBase?: DeleteOneRouteOptions; + recoverOneBase?: RecoverOneRouteOptions; +} +export interface BaseRouteOptions { + interceptors?: any[]; + decorators?: (PropertyDecorator | MethodDecorator)[]; +} +export interface GetManyRouteOptions extends BaseRouteOptions { +} +export interface GetOneRouteOptions extends BaseRouteOptions { +} +export interface CreateOneRouteOptions extends BaseRouteOptions { + returnShallow?: boolean; +} +export interface CreateManyRouteOptions extends BaseRouteOptions { +} +export interface ReplaceOneRouteOptions extends BaseRouteOptions { + allowParamsOverride?: boolean; + returnShallow?: boolean; +} +export interface UpdateOneRouteOptions extends BaseRouteOptions { + allowParamsOverride?: boolean; + returnShallow?: boolean; +} +export interface DeleteOneRouteOptions extends BaseRouteOptions { + returnDeleted?: boolean; +} +export interface RecoverOneRouteOptions extends BaseRouteOptions { + returnRecovered?: boolean; +} diff --git a/dist/packages/crudx/src/interfaces/routes-options.interface.js b/dist/packages/crudx/src/interfaces/routes-options.interface.js new file mode 100644 index 000000000..de3e79aef --- /dev/null +++ b/dist/packages/crudx/src/interfaces/routes-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=routes-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/routes-options.interface.js.map b/dist/packages/crudx/src/interfaces/routes-options.interface.js.map new file mode 100644 index 000000000..ebe762dd3 --- /dev/null +++ b/dist/packages/crudx/src/interfaces/routes-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"routes-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/routes-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/serialize-options.interface.d.ts b/dist/packages/crudx/src/interfaces/serialize-options.interface.d.ts new file mode 100644 index 000000000..f2cf9a71a --- /dev/null +++ b/dist/packages/crudx/src/interfaces/serialize-options.interface.d.ts @@ -0,0 +1,11 @@ +import { Type } from "@nestjs/common"; +export interface SerializeOptions { + getMany?: Type | false; + get?: Type | false; + create?: Type | false; + createMany?: Type | false; + update?: Type | false; + replace?: Type | false; + delete?: Type | false; + recover?: Type | false; +} diff --git a/dist/packages/crudx/src/interfaces/serialize-options.interface.js b/dist/packages/crudx/src/interfaces/serialize-options.interface.js new file mode 100644 index 000000000..1eaa3f11b --- /dev/null +++ b/dist/packages/crudx/src/interfaces/serialize-options.interface.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=serialize-options.interface.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/interfaces/serialize-options.interface.js.map b/dist/packages/crudx/src/interfaces/serialize-options.interface.js.map new file mode 100644 index 000000000..9f223dbfa --- /dev/null +++ b/dist/packages/crudx/src/interfaces/serialize-options.interface.js.map @@ -0,0 +1 @@ +{"version":3,"file":"serialize-options.interface.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/interfaces/serialize-options.interface.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/services/abstract-crud.service.d.ts b/dist/packages/crudx/src/services/abstract-crud.service.d.ts new file mode 100644 index 000000000..7b30a4963 --- /dev/null +++ b/dist/packages/crudx/src/services/abstract-crud.service.d.ts @@ -0,0 +1,47 @@ +import { BadRequestException, NotFoundException } from "@nestjs/common"; +import { CreateManyDto, CrudRequest, CrudRequestOptions, GetManyDefaultResponse, ParsedRequestParams, QueryOptions } from "../interfaces"; +export declare abstract class CrudService { + abstract getMany(req: CrudRequest): Promise | T[]>; + abstract getOne(req: CrudRequest): Promise; + abstract createOne(req: CrudRequest, dto: DTO): Promise; + abstract createMany(req: CrudRequest, dto: CreateManyDto): Promise; + abstract updateOne(req: CrudRequest, dto: DTO): Promise; + abstract replaceOne(req: CrudRequest, dto: DTO): Promise; + abstract deleteOne(req: CrudRequest): Promise; + abstract recoverOne(req: CrudRequest): Promise; + throwBadRequestException(msg?: any): BadRequestException; + throwNotFoundException(name: string): NotFoundException; + /** + * Wrap page into page-info + * override this method to create custom page-info response + * or set custom `serialize.getMany` dto in the controller's CrudOption + * @param data + * @param total + * @param limit + * @param offset + */ + createPageInfo(data: T[], total: number, limit: number, offset: number): GetManyDefaultResponse; + /** + * Determine if need paging + * @param parsed + * @param options + */ + decidePagination(parsed: ParsedRequestParams, options: CrudRequestOptions): boolean; + /** + * Get number of resources to be fetched + * @param query + * @param options + */ + getTake(query: ParsedRequestParams, options: QueryOptions): number | null; + /** + * Get number of resources to be skipped + * @param query + * @param take + */ + getSkip(query: ParsedRequestParams, take: number): number | null; + /** + * Get primary param name from CrudOptions + * @param options + */ + getPrimaryParams(options: CrudRequestOptions): string[]; +} diff --git a/dist/packages/crudx/src/services/abstract-crud.service.js b/dist/packages/crudx/src/services/abstract-crud.service.js new file mode 100644 index 000000000..26374d18b --- /dev/null +++ b/dist/packages/crudx/src/services/abstract-crud.service.js @@ -0,0 +1,92 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudService = void 0; +const common_1 = require("@nestjs/common"); +const lodash_1 = require("lodash"); +class CrudService { + throwBadRequestException(msg) { + throw new common_1.BadRequestException(msg); + } + throwNotFoundException(name) { + throw new common_1.NotFoundException(`${name} not found`); + } + /** + * Wrap page into page-info + * override this method to create custom page-info response + * or set custom `serialize.getMany` dto in the controller's CrudOption + * @param data + * @param total + * @param limit + * @param offset + */ + createPageInfo(data, total, limit, offset) { + return { + data, + count: data.length, + total, + page: limit ? Math.floor(offset / limit) + 1 : 1, + pageCount: limit && total ? Math.ceil(total / limit) : 1, + }; + } + /** + * Determine if need paging + * @param parsed + * @param options + */ + decidePagination(parsed, options) { + var _a; + return (((_a = options.query) === null || _a === void 0 ? void 0 : _a.alwaysPaginate) || + ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) && + !!this.getTake(parsed, options.query))); + } + /** + * Get number of resources to be fetched + * @param query + * @param options + */ + getTake(query, options) { + if (query.limit) { + return options.maxLimit + ? query.limit <= options.maxLimit + ? query.limit + : options.maxLimit + : query.limit; + } + /* istanbul ignore if */ + if (options.limit) { + return options.maxLimit + ? options.limit <= options.maxLimit + ? options.limit + : options.maxLimit + : options.limit; + } + return options.maxLimit ? options.maxLimit : null; + } + /** + * Get number of resources to be skipped + * @param query + * @param take + */ + getSkip(query, take) { + return query.page && take + ? take * (query.page - 1) + : query.offset + ? query.offset + : null; + } + /** + * Get primary param name from CrudOptions + * @param options + */ + getPrimaryParams(options) { + if ((0, lodash_1.isEmpty)(options.params)) { + return []; + } + // @ts-ignore + return (0, lodash_1.keys)(options.params) + .filter((n) => (0, lodash_1.get)(options, `params[${n}].primary`, false)) + .map((p) => (0, lodash_1.get)(options, `params[${p}].field`)); + } +} +exports.CrudService = CrudService; +//# sourceMappingURL=abstract-crud.service.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/services/abstract-crud.service.js.map b/dist/packages/crudx/src/services/abstract-crud.service.js.map new file mode 100644 index 000000000..eab7d97d0 --- /dev/null +++ b/dist/packages/crudx/src/services/abstract-crud.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"abstract-crud.service.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/services/abstract-crud.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/services/crud-config.service.d.ts b/dist/packages/crudx/src/services/crud-config.service.d.ts new file mode 100644 index 000000000..b04429e8b --- /dev/null +++ b/dist/packages/crudx/src/services/crud-config.service.d.ts @@ -0,0 +1,5 @@ +import { CrudGlobalConfig } from "../interfaces"; +export declare class CrudConfigService { + static config: CrudGlobalConfig; + static load(config?: CrudGlobalConfig): void; +} diff --git a/dist/packages/crudx/src/services/crud-config.service.js b/dist/packages/crudx/src/services/crud-config.service.js new file mode 100644 index 000000000..0f935c240 --- /dev/null +++ b/dist/packages/crudx/src/services/crud-config.service.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CrudConfigService = void 0; +const lodash_1 = require("lodash"); +const helpers_1 = require("../helpers"); +const query_builder_service_1 = require("./query-builder.service"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = require('deepmerge'); +class CrudConfigService { + static load(config = {}) { + const auth = (0, helpers_1.isObjectFull)(config.auth) ? config.auth : {}; + const query = (0, helpers_1.isObjectFull)(config.query) ? config.query : {}; + const routes = (0, helpers_1.isObjectFull)(config.routes) ? config.routes : {}; + const operators = (0, helpers_1.isObjectFull)(config.operators) ? config.operators : {}; + const params = (0, helpers_1.isObjectFull)(config.params) ? config.params : {}; + const serialize = (0, helpers_1.isObjectFull)(config.serialize) ? config.serialize : {}; + const routesFactory = !(0, lodash_1.isUndefined)(config.routesFactory) ? config.routesFactory : undefined; + if ((0, helpers_1.isObjectFull)(config.queryParser)) { + query_builder_service_1.QueryBuilderService.setOptions(Object.assign({}, config.queryParser)); + } + CrudConfigService.config = deepmerge(CrudConfigService.config, { auth, query, routes, operators, params, serialize, routesFactory }, + // @ts-ignore + { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }); + } +} +exports.CrudConfigService = CrudConfigService; +CrudConfigService.config = { + auth: {}, + query: { + alwaysPaginate: false, + }, + operators: {}, + routes: { + getManyBase: { interceptors: [], decorators: [] }, + getOneBase: { interceptors: [], decorators: [] }, + createOneBase: { interceptors: [], decorators: [], returnShallow: false }, + createManyBase: { interceptors: [], decorators: [] }, + updateOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + replaceOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false }, + recoverOneBase: { + interceptors: [], + decorators: [], + returnRecovered: false, + }, + }, + params: {}, + routesFactory: undefined, +}; +//# sourceMappingURL=crud-config.service.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/services/crud-config.service.js.map b/dist/packages/crudx/src/services/crud-config.service.js.map new file mode 100644 index 000000000..a1d8bab55 --- /dev/null +++ b/dist/packages/crudx/src/services/crud-config.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud-config.service.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/services/crud-config.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/services/index.d.ts b/dist/packages/crudx/src/services/index.d.ts new file mode 100644 index 000000000..1416815dd --- /dev/null +++ b/dist/packages/crudx/src/services/index.d.ts @@ -0,0 +1,6 @@ +export * from "./abstract-crud.service"; +export * from "./crud-config.service"; +export * from "./query-builder.service"; +export * from "./query-parser.service"; +export * from "./routes-factory.service"; +export * from "./type-orm-crud.service"; diff --git a/dist/packages/crudx/src/services/index.js b/dist/packages/crudx/src/services/index.js new file mode 100644 index 000000000..f84938d8b --- /dev/null +++ b/dist/packages/crudx/src/services/index.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./abstract-crud.service"), exports); +tslib_1.__exportStar(require("./crud-config.service"), exports); +tslib_1.__exportStar(require("./query-builder.service"), exports); +tslib_1.__exportStar(require("./query-parser.service"), exports); +tslib_1.__exportStar(require("./routes-factory.service"), exports); +tslib_1.__exportStar(require("./type-orm-crud.service"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/services/index.js.map b/dist/packages/crudx/src/services/index.js.map new file mode 100644 index 000000000..4cb432712 --- /dev/null +++ b/dist/packages/crudx/src/services/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/services/index.ts"],"names":[],"mappings":";;;AAAA,kEAAwC;AACxC,gEAAsC;AACtC,kEAAwC;AACxC,iEAAuC;AACvC,mEAAyC;AACzC,kEAAwC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/services/query-builder.service.d.ts b/dist/packages/crudx/src/services/query-builder.service.d.ts new file mode 100644 index 000000000..df897e1aa --- /dev/null +++ b/dist/packages/crudx/src/services/query-builder.service.d.ts @@ -0,0 +1,35 @@ +import { CreateQueryParams, CustomOperators, RequestQueryBuilderOptions } from "../interfaces"; +import { QueryFields, QueryFilter, QueryFilterArr, QueryJoin, QueryJoinArr, QuerySort, QuerySortArr, SCondition } from "../types"; +export declare class QueryBuilderService { + constructor(); + private static _options; + private paramNames; + queryObject: { + [key: string]: any; + }; + queryString: string; + static setOptions(options: RequestQueryBuilderOptions): void; + static getOptions(): RequestQueryBuilderOptions; + static create(params?: CreateQueryParams, customOperators?: CustomOperators): QueryBuilderService; + get options(): RequestQueryBuilderOptions; + setParamNames(): void; + query(encode?: boolean): string; + select(fields?: QueryFields): this; + search(s?: SCondition): this; + setFilter(f: QueryFilter | QueryFilterArr | Array | undefined, customOperators?: CustomOperators): this; + setOr(f: QueryFilter | QueryFilterArr | Array | undefined, customOperators?: CustomOperators): this; + setJoin(j: QueryJoin | QueryJoinArr | Array | undefined): this; + sortBy(s: QuerySort | QuerySortArr | Array | undefined): this; + setLimit(n: number | undefined): this; + setOffset(n: number | undefined): this; + setPage(n: number | undefined): this; + resetCache(): this; + setIncludeDeleted(n: number | undefined): this; + cond(f: QueryFilter | QueryFilterArr, cond?: "filter" | "or" | "search", customOperators?: CustomOperators): string; + private addJoin; + private addSortBy; + private createFromParams; + private checkQueryObjectParam; + private setCondition; + private setNumeric; +} diff --git a/dist/packages/crudx/src/services/query-builder.service.js b/dist/packages/crudx/src/services/query-builder.service.js new file mode 100644 index 000000000..279dc255e --- /dev/null +++ b/dist/packages/crudx/src/services/query-builder.service.js @@ -0,0 +1,203 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QueryBuilderService = void 0; +const lodash_1 = require("lodash"); +const qs_1 = require("qs"); +const helpers_1 = require("../helpers"); +const constants_1 = require("../constants"); +class QueryBuilderService { + constructor() { + this.paramNames = {}; + this.queryObject = {}; + this.queryString = ""; + this.setParamNames(); + } + static setOptions(options) { + QueryBuilderService._options = Object.assign(Object.assign(Object.assign({}, QueryBuilderService._options), options), { paramNamesMap: Object.assign(Object.assign({}, QueryBuilderService._options.paramNamesMap), (options.paramNamesMap ? options.paramNamesMap : {})) }); + } + static getOptions() { + return QueryBuilderService._options; + } + static create(params, customOperators = {}) { + const qb = new QueryBuilderService(); + return (0, lodash_1.isObject)(params) + ? qb.createFromParams(params, customOperators) + : qb; + } + get options() { + return QueryBuilderService._options; + } + setParamNames() { + if (QueryBuilderService._options.paramNamesMap) { + Object.keys(QueryBuilderService._options.paramNamesMap).forEach((key) => { + const name = (0, lodash_1.get)(QueryBuilderService._options.paramNamesMap, key); + this.paramNames[key] = (0, lodash_1.isString)(name) + ? name + : name[0]; + }); + } + } + query(encode = true) { + if (this.queryObject[this.paramNames["search"]]) { + this.queryObject[this.paramNames["filter"]] = undefined; + this.queryObject[this.paramNames["or"]] = undefined; + } + this.queryString = (0, qs_1.stringify)(this.queryObject, { encode }); + return this.queryString; + } + select(fields) { + if (!(0, lodash_1.isNil)(fields) && (0, helpers_1.isArrayFull)(fields)) { + (0, helpers_1.validateFields)(fields); + this.queryObject[this.paramNames["fields"]] = fields.join(this.options.delimStr); + } + return this; + } + search(s) { + if (!(0, lodash_1.isNil)(s) && (0, lodash_1.isObject)(s)) { + this.queryObject[this.paramNames["search"]] = JSON.stringify(s); + } + return this; + } + setFilter(f, customOperators = {}) { + this.setCondition(f, "filter", customOperators); + return this; + } + setOr(f, customOperators = {}) { + this.setCondition(f, "or", customOperators); + return this; + } + setJoin(j) { + if (!(0, lodash_1.isNil)(j)) { + const param = this.checkQueryObjectParam("join", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(j) && !(0, lodash_1.isString)(j[0]) + ? j.map((o) => this.addJoin(o)) + : [this.addJoin(j)]), + ]; + } + return this; + } + sortBy(s) { + if (!(0, lodash_1.isNil)(s)) { + const param = this.checkQueryObjectParam("sort", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(s) && !(0, lodash_1.isString)(s[0]) + ? s.map((o) => this.addSortBy(o)) + : [this.addSortBy(s)]), + ]; + } + return this; + } + setLimit(n) { + this.setNumeric(n, "limit"); + return this; + } + setOffset(n) { + this.setNumeric(n, "offset"); + return this; + } + setPage(n) { + this.setNumeric(n, "page"); + return this; + } + resetCache() { + this.setNumeric(0, "cache"); + return this; + } + setIncludeDeleted(n) { + this.setNumeric(n, "includeDeleted"); + return this; + } + cond(f, cond = "search", customOperators = {}) { + const filter = Array.isArray(f) + ? { field: f[0], operator: f[1], value: f[2] } + : f; + (0, helpers_1.validateCondition)(filter, cond, customOperators); + const d = this.options.delim; + return (filter.field + + d + + filter.operator + + ((0, helpers_1.hasValue)(filter.value) ? d + filter.value : "")); + } + addJoin(j) { + var _a, _b; + const join = Array.isArray(j) + ? { field: j[0], select: j[1] } + : j; + (0, helpers_1.validateJoin)(join); + const d = this.options.delim; + const ds = this.options.delimStr; + return (join.field + + ((0, helpers_1.isArrayFull)(join.select) ? d + ((_b = (_a = join.select) === null || _a === void 0 ? void 0 : _a.join(ds)) !== null && _b !== void 0 ? _b : "") : "")); + } + addSortBy(s) { + const sort = Array.isArray(s) ? { field: s[0], order: s[1] } : s; + (0, helpers_1.validateSort)(sort); + const ds = this.options.delimStr; + return sort.field + ds + sort.order; + } + createFromParams(params, customOperators) { + this.select(params.fields); + this.search(params.search); + this.setFilter(params.filter, customOperators); + this.setOr(params.or, customOperators); + this.setJoin(params.join); + this.setLimit(params.limit); + this.setOffset(params.offset); + this.setPage(params.page); + this.sortBy(params.sort); + if (params.resetCache) { + this.resetCache(); + } + this.setIncludeDeleted(params.includeDeleted); + return this; + } + checkQueryObjectParam(cond, defaults) { + const param = this.paramNames[cond]; + if ((0, lodash_1.isNil)(this.queryObject[param]) && !(0, lodash_1.isUndefined)(defaults)) { + this.queryObject[param] = defaults; + } + return param; + } + setCondition(f, cond, customOperators) { + if (!(0, lodash_1.isNil)(f)) { + const param = this.checkQueryObjectParam(cond, []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(f) && !(0, lodash_1.isString)(f[0]) + ? f.map((o) => this.cond(o, cond, customOperators)) + : [ + this.cond(f, cond, customOperators), + ]), + ]; + } + } + setNumeric(n, cond) { + if (!(0, lodash_1.isNil)(n)) { + (0, helpers_1.validateNumeric)(n, cond); + this.queryObject[this.paramNames[cond]] = n; + } + } +} +exports.QueryBuilderService = QueryBuilderService; +QueryBuilderService._options = { + delim: constants_1.REQUEST_DELIM, + delimStr: constants_1.REQUEST_DELIM_STR, + paramNamesMap: { + fields: ["fields", "select"], + search: "s", + filter: "filter", + or: "or", + join: "join", + sort: "sort", + limit: ["limit", "per_page"], + offset: "offset", + page: "page", + cache: "cache", + includeDeleted: "include_deleted", + extra: constants_1.REQUEST_PREFIX_EXTRA, + }, +}; +//# sourceMappingURL=query-builder.service.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/services/query-builder.service.js.map b/dist/packages/crudx/src/services/query-builder.service.js.map new file mode 100644 index 000000000..daa8f043e --- /dev/null +++ b/dist/packages/crudx/src/services/query-builder.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"query-builder.service.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/services/query-builder.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/services/query-parser.service.d.ts b/dist/packages/crudx/src/services/query-parser.service.d.ts new file mode 100644 index 000000000..b5614334f --- /dev/null +++ b/dist/packages/crudx/src/services/query-parser.service.d.ts @@ -0,0 +1,54 @@ +import { CustomOperators, ParamsOptions, ParsedRequestParams } from "../interfaces"; +import { ObjectLiteral, QueryExtra, QueryFields, QueryFilter, QueryJoin, QuerySort, SCondition, SConditionAND, SFields } from "../types"; +import { ClassTransformOptions } from "class-transformer"; +export declare class QueryParserService implements ParsedRequestParams { + fields: QueryFields; + paramsFilter: (QueryFilter | undefined)[]; + authPersist: ObjectLiteral | undefined; + classTransformOptions: ClassTransformOptions | undefined; + search: SCondition | undefined; + filter: QueryFilter[]; + or: QueryFilter[]; + join: QueryJoin[]; + sort: QuerySort[]; + limit: number | undefined; + offset: number | undefined; + page: number | undefined; + cache: number | undefined; + includeDeleted: number | undefined; + extra: QueryExtra; + private _params; + private _query; + private _paramNames; + private _paramsOptions; + private get _options(); + static create(): QueryParserService; + getParsed(): ParsedRequestParams; + setAuthPersist(persist?: ObjectLiteral): void; + setClassTransformOptions(options?: ClassTransformOptions): void; + convertFilterToSearch(filter: QueryFilter): SFields | SConditionAND; + parseQuery(query: any, customOperators?: CustomOperators): this; + parseParams(params: any, options: ParamsOptions): this; + private getParamNames; + private getParamValues; + private parseQueryParam; + private parseExtraFromQueryParam; + /** + * Build an object from data and composite key. + * + * @param data to used on parse workflow + * @param key composite key as 'foo.bar.hero' + * @param result object with parsed "data" and "key" structure + * @private + */ + private parseDotChainToObject; + private parseValue; + private parseValues; + private parseSearchQueryParam; + private fieldsParser; + private conditionParser; + private joinParser; + private sortParser; + private numericParser; + private paramParser; +} diff --git a/dist/packages/crudx/src/services/query-parser.service.js b/dist/packages/crudx/src/services/query-parser.service.js new file mode 100644 index 000000000..6951c8fdf --- /dev/null +++ b/dist/packages/crudx/src/services/query-parser.service.js @@ -0,0 +1,295 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QueryParserService = void 0; +const lodash_1 = require("lodash"); +const exceptions_1 = require("../exceptions"); +const types_1 = require("../types"); +const query_builder_service_1 = require("./query-builder.service"); +const helpers_1 = require("../helpers"); +const constants_1 = require("../constants"); +class QueryParserService { + constructor() { + this.fields = []; + this.paramsFilter = []; + this.authPersist = undefined; + this.classTransformOptions = undefined; + this.search = undefined; + this.filter = []; + this.or = []; + this.join = []; + this.sort = []; + this.extra = {}; + this._paramNames = []; + this._paramsOptions = {}; + } + get _options() { + return query_builder_service_1.QueryBuilderService.getOptions(); + } + static create() { + return new QueryParserService(); + } + getParsed() { + return { + fields: this.fields, + paramsFilter: this.paramsFilter, + authPersist: this.authPersist, + classTransformOptions: this.classTransformOptions, + search: this.search, + filter: this.filter, + or: this.or, + join: this.join, + sort: this.sort, + limit: this.limit, + offset: this.offset, + page: this.page, + cache: this.cache, + includeDeleted: this.includeDeleted, + extra: this.extra, + }; + } + setAuthPersist(persist = {}) { + this.authPersist = persist || /* istanbul ignore next */ {}; + } + setClassTransformOptions(options = {}) { + this.classTransformOptions = options || /* istanbul ignore next */ {}; + } + convertFilterToSearch(filter) { + const isEmptyValue = { + isnull: true, + notnull: true, + }; + return filter + ? { + [filter.field]: { + [filter.operator]: (0, lodash_1.has)(isEmptyValue, filter.operator) + ? (0, lodash_1.get)(isEmptyValue, filter.operator) + : filter.value, + }, + } + : /* istanbul ignore next */ {}; + } + parseQuery(query, customOperators = {}) { + if ((0, lodash_1.isObject)(query)) { + const paramNames = (0, lodash_1.keys)(query); + if (!(0, lodash_1.isEmpty)(paramNames)) { + this._query = query; + this._paramNames = paramNames; + const searchData = this._query[this.getParamNames("search")[0]]; + this.search = this.parseSearchQueryParam(searchData); + if ((0, lodash_1.isNil)(this.search)) { + this.filter = this.parseQueryParam("filter", this.conditionParser.bind(this, "filter", customOperators)); + this.or = this.parseQueryParam("or", this.conditionParser.bind(this, "or", customOperators)); + } + this.fields = + this.parseQueryParam("fields", this.fieldsParser.bind(this))[0] || []; + this.join = this.parseQueryParam("join", this.joinParser.bind(this)); + this.sort = this.parseQueryParam("sort", this.sortParser.bind(this)); + this.limit = this.parseQueryParam("limit", this.numericParser.bind(this, "limit"))[0]; + this.offset = this.parseQueryParam("offset", this.numericParser.bind(this, "offset"))[0]; + this.page = this.parseQueryParam("page", this.numericParser.bind(this, "page"))[0]; + this.cache = this.parseQueryParam("cache", this.numericParser.bind(this, "cache"))[0]; + this.includeDeleted = this.parseQueryParam("includeDeleted", this.numericParser.bind(this, "includeDeleted"))[0]; + this.extra = this.parseExtraFromQueryParam(); + } + } + return this; + } + parseParams(params, options) { + if ((0, lodash_1.isObject)(params)) { + const paramNames = (0, lodash_1.keys)(params); + if (!(0, lodash_1.isNil)(paramNames)) { + this._params = params; + this._paramsOptions = options; + this.paramsFilter = paramNames + .map((name) => this.paramParser(name)) + .filter((filter) => filter); + } + } + return this; + } + getParamNames(type) { + return this._paramNames.filter((p) => { + const name = (0, lodash_1.get)(this._options.paramNamesMap, type, ""); + return (0, lodash_1.isString)(name) + ? name === p + : name.some((m) => m === p); + }); + } + getParamValues(value, parser) { + if ((0, helpers_1.isStringFull)(value)) { + return [parser.call(this, value)]; + } + if ((0, helpers_1.isArrayFull)(value)) { + return value.map((val) => parser(val)); + } + return []; + } + parseQueryParam(type, parser) { + const param = this.getParamNames(type); + if ((0, helpers_1.isArrayFull)(param)) { + // @ts-ignore + return param.reduce( + // @ts-ignore + (a, name) => [ + ...a, + ...this.getParamValues(this._query[name], parser), + ], []); + } + return []; + } + parseExtraFromQueryParam() { + const extraParam = (0, lodash_1.get)(this._options.paramNamesMap, "extra", []); + const params = Array.isArray(extraParam) + ? extraParam + : [extraParam]; + const extraKeys = (0, lodash_1.keys)(this._query || {}) + .filter((k) => params.find((p) => k === null || k === void 0 ? void 0 : k.startsWith(p))) + .reduce((o, k) => { + const key = k.replace(constants_1.REQUEST_PREFIX_EXTRA, ""); + this.parseDotChainToObject(this._query[k], key, o); + return o; + }, {}); + return (0, lodash_1.keys)(extraKeys).length > 0 ? extraKeys : undefined; + } + /** + * Build an object from data and composite key. + * + * @param data to used on parse workflow + * @param key composite key as 'foo.bar.hero' + * @param result object with parsed "data" and "key" structure + * @private + */ + parseDotChainToObject(data, key, result = {}) { + if (key.includes(".")) { + const keys = key.split("."); + const firstKey = keys.shift(); + (0, lodash_1.set)(result, firstKey, {}); + this.parseDotChainToObject(data, keys.join("."), (0, lodash_1.get)(result, firstKey)); + } + else { + (0, lodash_1.set)(result, key, this.parseValue(data)); + } + } + parseValue(val) { + try { + const parsed = JSON.parse(val); + // throw new Error('Don\'t support object now') + if ((!(0, lodash_1.isDate)(parsed) && (0, lodash_1.isObject)(parsed)) || + // JS cannot handle big numbers. Leave it as a string to prevent data loss + (typeof parsed === "number" && + parsed.toLocaleString("fullwide", { useGrouping: false }) !== val)) { + return val; + } + return parsed; + } + catch (_) { + if ((0, helpers_1.isDateString)(val)) { + return new Date(val); + } + return val; + } + } + parseValues(values) { + return (0, helpers_1.isArrayFull)(values) + ? values.map((v) => this.parseValue(v)) + : this.parseValue(values); + } + parseSearchQueryParam(d) { + if ((0, lodash_1.isNil)(d)) { + return undefined; + } + try { + const data = JSON.parse(d); + if (!(0, lodash_1.isObject)(data)) { + throw new Error(); + } + return data; + } + catch (_) { + throw new exceptions_1.RequestQueryException("Invalid search param. JSON expected"); + } + } + fieldsParser(data) { + // @ts-ignore + return data.split(this._options.delimStr); + } + conditionParser(cond, customOperators, data) { + const isArrayValue = [ + types_1.CondOperator.IN, + types_1.CondOperator.NOT_IN, + types_1.CondOperator.BETWEEN, + types_1.CondOperator.IN_LOW, + types_1.CondOperator.NOT_IN_LOW, + ].concat(Object.keys(customOperators).filter((op) => customOperators[op].isArray)); + const isEmptyValue = [ + types_1.CondOperator.IS_NULL, + types_1.CondOperator.NOT_NULL, + ]; + // @ts-ignore + const param = data.split(this._options.delim); + const field = param[0]; + const operator = param[1]; + let value = param[2] || ""; + if (isArrayValue.some((name) => name === operator)) { + // @ts-ignore + value = value.split(this._options.delimStr); + } + value = this.parseValues(value); + if (!isEmptyValue.some((name) => name === operator) && + !(0, helpers_1.hasValue)(value)) { + throw new exceptions_1.RequestQueryException(`Invalid ${cond} value`); + } + const condition = { field, operator, value }; + (0, helpers_1.validateCondition)(condition, cond, customOperators); + return condition; + } + joinParser(data) { + // @ts-ignore + const param = data.split(this._options.delim); + const join = { + field: param[0], + select: (0, helpers_1.isStringFull)(param[1]) + ? // @ts-ignore + param[1].split(this._options.delimStr) + : undefined, + }; + (0, helpers_1.validateJoin)(join); + return join; + } + sortParser(data) { + const param = data.split(this._options.delimStr); + const sort = { + field: param[0], + order: param[1], + }; + (0, helpers_1.validateSort)(sort); + return sort; + } + numericParser(num, data) { + const val = this.parseValue(data); + (0, helpers_1.validateNumeric)(val, num); + return val; + } + paramParser(name) { + (0, helpers_1.validateParamOption)(this._paramsOptions, name); + const option = this._paramsOptions[name]; + if (option.disabled) { + return undefined; + } + let value = this._params[name]; + switch (option.type) { + case "number": + value = this.parseValue(value); + (0, helpers_1.validateNumeric)(value, `param ${name}`); + break; + case "uuid": + (0, helpers_1.validateUUID)(value, name); + break; + default: + break; + } + return { field: option.field, operator: "$eq", value }; + } +} +exports.QueryParserService = QueryParserService; +//# sourceMappingURL=query-parser.service.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/services/query-parser.service.js.map b/dist/packages/crudx/src/services/query-parser.service.js.map new file mode 100644 index 000000000..b105a9110 --- /dev/null +++ b/dist/packages/crudx/src/services/query-parser.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"query-parser.service.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/services/query-parser.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/services/routes-factory.service.d.ts b/dist/packages/crudx/src/services/routes-factory.service.d.ts new file mode 100644 index 000000000..a132f202d --- /dev/null +++ b/dist/packages/crudx/src/services/routes-factory.service.d.ts @@ -0,0 +1,39 @@ +import { CrudActions } from "../enums"; +import { BaseRoute, CrudOptions, MergedCrudOptions } from "../interfaces"; +import { BaseRouteName } from "../types"; +export declare class RoutesFactoryService { + protected target: any; + protected options: MergedCrudOptions; + constructor(target: any, options: CrudOptions); + static create(target: any, options: CrudOptions): RoutesFactoryService; + protected get targetProto(): any; + protected get modelName(): string; + protected get modelType(): any; + protected get actionsMap(): { + [key in BaseRouteName]: CrudActions; + }; + protected create(): void; + protected mergeOptions(): void; + protected getRoutesSchema(): BaseRoute[]; + protected getManyBase(name: BaseRouteName): void; + protected getOneBase(name: BaseRouteName): void; + protected createOneBase(name: BaseRouteName): void; + protected createManyBase(name: BaseRouteName): void; + protected updateOneBase(name: BaseRouteName): void; + protected replaceOneBase(name: BaseRouteName): void; + protected deleteOneBase(name: BaseRouteName): void; + protected recoverOneBase(name: BaseRouteName): void; + protected canCreateRoute(name: BaseRouteName): boolean; + protected createRoutes(routesSchema: BaseRoute[]): void; + protected overrideRoutes(routesSchema: BaseRoute[]): void; + protected enableRoutes(routesSchema: BaseRoute[]): void; + protected overrideParsedBodyDecorator(override: BaseRouteName, name: string): void; + protected getPrimaryParams(): string[]; + protected setBaseRouteMeta(name: BaseRouteName): void; + protected setRouteArgs(name: BaseRouteName): void; + protected setRouteArgsTypes(name: BaseRouteName): void; + protected setInterceptors(name: BaseRouteName): void; + protected setDecorators(name: BaseRouteName): void; + protected setAction(name: BaseRouteName): void; + protected routeNameAction(name: BaseRouteName): string; +} diff --git a/dist/packages/crudx/src/services/routes-factory.service.js b/dist/packages/crudx/src/services/routes-factory.service.js new file mode 100644 index 000000000..8f694d1a4 --- /dev/null +++ b/dist/packages/crudx/src/services/routes-factory.service.js @@ -0,0 +1,410 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RoutesFactoryService = void 0; +const common_1 = require("@nestjs/common"); +const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum"); +const lodash_1 = require("lodash"); +const helpers_1 = require("../helpers"); +const enums_1 = require("../enums"); +const interceptors_1 = require("../interceptors"); +const services_1 = require("../services"); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = require('deepmerge'); +class RoutesFactoryService { + constructor(target, options) { + this.target = target; + this.options = options; + this.create(); + } + /* istanbul ignore next */ + static create(target, options) { + return new RoutesFactoryService(target, options); + } + get targetProto() { + return this.target.prototype; + } + get modelName() { + return this.options.model.type.name; + } + get modelType() { + return this.options.model.type; + } + get actionsMap() { + return { + getManyBase: enums_1.CrudActions.ReadAll, + getOneBase: enums_1.CrudActions.ReadOne, + createManyBase: enums_1.CrudActions.CreateMany, + createOneBase: enums_1.CrudActions.CreateOne, + updateOneBase: enums_1.CrudActions.UpdateOne, + deleteOneBase: enums_1.CrudActions.DeleteOne, + replaceOneBase: enums_1.CrudActions.ReplaceOne, + recoverOneBase: enums_1.CrudActions.RecoverOne, + }; + } + create() { + const routesSchema = this.getRoutesSchema(); + this.mergeOptions(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + mergeOptions() { + var _a, _b, _c, _d, _e, _f, _g, _h; + // merge auth config + const authOptions = helpers_1.R.getCrudAuthOptions(this.target); + this.options.auth = (0, helpers_1.isObjectFull)(authOptions) ? authOptions : {}; + if ((0, lodash_1.isUndefined)(this.options.auth.property)) { + this.options.auth.property = (_b = (_a = services_1.CrudConfigService.config) === null || _a === void 0 ? void 0 : _a.auth) === null || _b === void 0 ? void 0 : _b.property; + } + if ((0, lodash_1.isUndefined)(this.options.auth.groups)) { + this.options.auth.groups = (_d = (_c = services_1.CrudConfigService.config) === null || _c === void 0 ? void 0 : _c.auth) === null || _d === void 0 ? void 0 : _d.groups; + } + if ((0, lodash_1.isUndefined)(this.options.auth.classTransformOptions)) { + // @ts-ignore + this.options.auth.classTransformOptions = + (_e = services_1.CrudConfigService.config.auth) === null || _e === void 0 ? void 0 : _e.classTransformOptions; + } + // merge query config + const query = (0, helpers_1.isObjectFull)(this.options.query) + ? this.options.query + : {}; + this.options.query = Object.assign(Object.assign({}, services_1.CrudConfigService.config.query), query); + // merge routes config + const routes = (0, helpers_1.isObjectFull)(this.options.routes) + ? this.options.routes + : {}; + this.options.routes = deepmerge(services_1.CrudConfigService.config.routes || {}, routes, { + // @ts-ignore + arrayMerge: (a, b, c) => b, + }); + // merge operators config + const operators = (0, helpers_1.isObjectFull)(this.options.operators) + ? this.options.operators + : {}; + this.options.operators = (deepmerge((_f = services_1.CrudConfigService.config) === null || _f === void 0 ? void 0 : _f.operators, operators)); + // set params + this.options.params = (0, helpers_1.isObjectFull)(this.options.params) + ? this.options.params + : (0, helpers_1.isObjectFull)(services_1.CrudConfigService.config.params) + ? services_1.CrudConfigService.config.params + : {}; + const hasPrimary = this.getPrimaryParams().length > 0; + if (!hasPrimary) { + // @ts-ignore + this.options.params["id"] = { + field: "id", + type: "number", + primary: true, + }; + } + // set dto + if (!(0, helpers_1.isObjectFull)(this.options.dto)) { + this.options.dto = {}; + } + // set serialize + const serialize = (0, helpers_1.isObjectFull)(this.options.serialize) + ? this.options.serialize + : {}; + this.options.serialize = Object.assign(Object.assign({}, services_1.CrudConfigService.config.serialize), serialize); + this.options.serialize.get = (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : this.options.serialize.get || this.modelType; + this.options.serialize.getMany = (0, helpers_1.isFalse)(this.options.serialize.getMany) + ? false + : this.options.serialize.getMany + ? this.options.serialize.getMany + : (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : helpers_1.SerializeHelper.createGetManyDto(this.options.serialize.get, this.modelName); + this.options.serialize.create = (0, helpers_1.isFalse)(this.options.serialize.create) + ? false + : this.options.serialize.create || this.modelType; + this.options.serialize.update = (0, helpers_1.isFalse)(this.options.serialize.update) + ? false + : this.options.serialize.update || this.modelType; + this.options.serialize.replace = (0, helpers_1.isFalse)(this.options.serialize.replace) + ? false + : this.options.serialize.replace || this.modelType; + this.options.serialize.delete = + (0, helpers_1.isFalse)(this.options.serialize.delete) || + !((_h = (_g = this.options.routes) === null || _g === void 0 ? void 0 : _g.deleteOneBase) === null || _h === void 0 ? void 0 : _h.returnDeleted) + ? false + : this.options.serialize.delete || this.modelType; + helpers_1.R.setCrudOptions(this.options, this.target); + } + getRoutesSchema() { + return [ + { + name: "getOneBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: true, + }, + { + name: "getManyBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: false, + }, + { + name: "createOneBase", + path: "/", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "createManyBase", + path: "/bulk", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "updateOneBase", + path: "/", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + { + name: "replaceOneBase", + path: "/", + method: common_1.RequestMethod.PUT, + enable: false, + override: false, + withParams: true, + }, + { + name: "deleteOneBase", + path: "/", + method: common_1.RequestMethod.DELETE, + enable: false, + override: false, + withParams: true, + }, + { + name: "recoverOneBase", + path: "/recover", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + ]; + } + getManyBase(name) { + this.targetProto[name] = function getManyBase(req) { + return this.service.getMany(req); + }; + } + getOneBase(name) { + this.targetProto[name] = function getOneBase(req) { + return this.service.getOne(req); + }; + } + createOneBase(name) { + this.targetProto[name] = function createOneBase(req, dto) { + return this.service.createOne(req, dto); + }; + } + createManyBase(name) { + this.targetProto[name] = function createManyBase(req, dto) { + return this.service.createMany(req, dto); + }; + } + updateOneBase(name) { + this.targetProto[name] = function updateOneBase(req, dto) { + return this.service.updateOne(req, dto); + }; + } + replaceOneBase(name) { + this.targetProto[name] = function replaceOneBase(req, dto) { + return this.service.replaceOne(req, dto); + }; + } + deleteOneBase(name) { + this.targetProto[name] = function deleteOneBase(req) { + return this.service.deleteOne(req); + }; + } + recoverOneBase(name) { + this.targetProto[name] = function recoverOneBase(req) { + return this.service.recoverOne(req); + }; + } + canCreateRoute(name) { + var _a, _b, _c; + const only = (_a = this.options.routes) === null || _a === void 0 ? void 0 : _a.only; + const exclude = (_b = this.options.routes) === null || _b === void 0 ? void 0 : _b.exclude; + // include recover route only for models with soft delete option + if (name === "recoverOneBase" && ((_c = this.options.query) === null || _c === void 0 ? void 0 : _c.softDelete) !== true) { + return false; + } + if ((0, helpers_1.isArrayFull)(only)) { + // @ts-ignore + return only.some((route) => route === name); + } + if ((0, helpers_1.isArrayFull)(exclude)) { + // @ts-ignore + return !exclude.some((route) => route === name); + } + return true; + } + createRoutes(routesSchema) { + const primaryParams = this.getPrimaryParams().filter((param) => { var _a, _b; return !((_b = (_a = this.options.params) === null || _a === void 0 ? void 0 : _a[param]) === null || _b === void 0 ? void 0 : _b.disabled); }); + routesSchema.forEach((route) => { + if (this.canCreateRoute(route.name)) { + // create base method + this[route.name](route.name); + route.enable = true; + // set metadata + this.setBaseRouteMeta(route.name); + } + if (route.withParams && primaryParams.length > 0) { + route.path = + route.path !== "/" + ? `${primaryParams + .map((param) => `/:${param}`) + .join("")}${route.path}` + : primaryParams + .map((param) => `/:${param}`) + .join(""); + } + }); + } + overrideRoutes(routesSchema) { + Object.getOwnPropertyNames(this.targetProto).forEach((name) => { + const override = helpers_1.R.getOverrideRoute(this.targetProto[name]); + const route = routesSchema.find((r) => (0, lodash_1.isEqual)(r.name, override)); + if (override && route && route.enable) { + // get metadata + const interceptors = helpers_1.R.getInterceptors(this.targetProto[name]); + const baseInterceptors = helpers_1.R.getInterceptors(this.targetProto[override]); + const baseAction = helpers_1.R.getAction(this.targetProto[override]); + // set metadata + helpers_1.R.setInterceptors([...baseInterceptors, ...interceptors], this.targetProto[name]); + helpers_1.R.setAction(baseAction, this.targetProto[name]); + this.overrideParsedBodyDecorator(override, name); + // enable route + helpers_1.R.setRoute(route, this.targetProto[name]); + route.override = true; + } + }); + } + enableRoutes(routesSchema) { + routesSchema.forEach((route) => { + if (!route.override && route.enable) { + helpers_1.R.setRoute(route, this.targetProto[route.name]); + } + }); + } + overrideParsedBodyDecorator(override, name) { + const allowed = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + const withBody = (0, helpers_1.isIn)(override, allowed); + const parsedBody = helpers_1.R.getParsedBody(this.targetProto[name]); + if (withBody && parsedBody) { + const baseKey = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:1`; + const key = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:${parsedBody.index}`; + const baseRouteArgs = helpers_1.R.getRouteArgs(this.target, override); + const routeArgs = helpers_1.R.getRouteArgs(this.target, name); + const baseBodyArg = baseRouteArgs[baseKey]; + helpers_1.R.setRouteArgs(Object.assign(Object.assign({}, routeArgs), { [key]: Object.assign(Object.assign({}, baseBodyArg), { index: parsedBody.index }) }), this.target, name); + /* istanbul ignore else */ + if ((0, lodash_1.isEqual)(override, "createManyBase")) { + const paramTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, name); + const metatype = paramTypes[parsedBody.index]; + const types = [String, Boolean, Number, Array, Object]; + const toCopy = (0, helpers_1.isIn)(metatype, types) || (0, lodash_1.isNil)(metatype); + if (toCopy) { + const baseParamTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, override); + const baseMetatype = baseParamTypes[1]; + paramTypes.splice(parsedBody.index, 1, baseMetatype); + helpers_1.R.setRouteArgsTypes(paramTypes, this.targetProto, name); + } + } + } + } + getPrimaryParams() { + return (0, lodash_1.keys)(this.options.params).filter((param) => { var _a; return ((_a = this.options.params) === null || _a === void 0 ? void 0 : _a[param]) && this.options.params[param].primary; }); + } + setBaseRouteMeta(name) { + this.setRouteArgs(name); + this.setRouteArgsTypes(name); + this.setInterceptors(name); + this.setAction(name); + this.setDecorators(name); + } + setRouteArgs(name) { + let rest = {}; + const routes = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + if ((0, helpers_1.isIn)(name, routes)) { + const action = this.routeNameAction(name); + const hasDto = !(0, lodash_1.isNil)((0, lodash_1.get)(this.options, `dto.${action}`)); + const { UPDATE, CREATE } = enums_1.CrudValidationGroups; + const groupEnum = (0, helpers_1.isIn)(name, [ + "updateOneBase", + "replaceOneBase", + ]) + ? UPDATE + : CREATE; + const group = !hasDto + ? groupEnum + : undefined; + rest = helpers_1.R.setBodyArg(1, [(0, helpers_1.getValidationPipe)(this.options, group)]); + } + helpers_1.R.setRouteArgs(Object.assign(Object.assign({}, helpers_1.R.setParsedRequestArg(0)), rest), this.target, name); + } + setRouteArgsTypes(name) { + switch (true) { + case (0, lodash_1.isEqual)(name, "createManyBase"): + const bulkDto = (0, helpers_1.createBulkDto)(this.options); + helpers_1.R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name); + break; + case (0, helpers_1.isIn)(name, ["createOneBase", "updateOneBase", "replaceOneBase"]): + const action = this.routeNameAction(name); + const dto = (0, lodash_1.get)(this.options, `dto.${action}`, this.modelType); + helpers_1.R.setRouteArgsTypes([Object, dto], this.targetProto, name); + break; + default: + helpers_1.R.setRouteArgsTypes([Object], this.targetProto, name); + } + } + setInterceptors(name) { + const interceptors = (0, lodash_1.get)(this.options, `routes.${name}.interceptors`, []); + helpers_1.R.setInterceptors([ + interceptors_1.CrudRequestInterceptor, + interceptors_1.CrudResponseInterceptor, + ...((0, helpers_1.isArrayFull)(interceptors) ? interceptors : []), + ], this.targetProto[name]); + } + setDecorators(name) { + const decorators = (0, lodash_1.get)(this.options, `routes.${name}.decorators`, []); + helpers_1.R.setDecorators((0, helpers_1.isArrayFull)(decorators) ? decorators : [], this.targetProto, name); + } + setAction(name) { + helpers_1.R.setAction(this.actionsMap[name], this.targetProto[name]); + } + routeNameAction(name) { + return name.split("OneBase")[0] || name.split("ManyBase")[0]; + } +} +exports.RoutesFactoryService = RoutesFactoryService; +//# sourceMappingURL=routes-factory.service.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/services/routes-factory.service.js.map b/dist/packages/crudx/src/services/routes-factory.service.js.map new file mode 100644 index 000000000..7349ac056 --- /dev/null +++ b/dist/packages/crudx/src/services/routes-factory.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"routes-factory.service.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/services/routes-factory.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/services/type-orm-crud.service.d.ts b/dist/packages/crudx/src/services/type-orm-crud.service.d.ts new file mode 100644 index 000000000..60b804255 --- /dev/null +++ b/dist/packages/crudx/src/services/type-orm-crud.service.d.ts @@ -0,0 +1,122 @@ +import { BaseEntity, Brackets, ConnectionOptions, DeepPartial, EntityMetadata, ObjectLiteral, Repository, SelectQueryBuilder, WhereExpressionBuilder } from "typeorm"; +import { CreateManyDto, CrudRequest, CrudRequestOptions, CustomOperators, GetManyDefaultResponse, JoinOption, JoinOptions, ParsedRequestParams, QueryOptions } from "../interfaces"; +import { ClassType, ComparisonOperator, QueryFilter, QueryJoin, QuerySort, SCondition, SConditionKey } from "../types"; +import { CrudService } from "./abstract-crud.service"; +interface IAllowedRelation { + alias?: string; + nested: boolean; + name: string; + path: string; + columns: string[]; + primaryColumns: string[]; + allowedColumns: string[]; +} +export declare class TypeOrmCrudService extends CrudService> { + protected repo: Repository; + protected dbName: ConnectionOptions["type"]; + protected entityColumns: string[] | undefined; + protected entityPrimaryColumns: string[] | undefined; + protected entityHasDeleteColumn: boolean; + protected entityColumnsHash: ObjectLiteral; + protected entityRelationsHash: Map; + protected sqlInjectionRegEx: RegExp[]; + constructor(repo: Repository); + get findOne(): Repository["findOne"]; + get findOneBy(): Repository["findOneBy"]; + get find(): Repository["find"]; + get count(): Repository["count"]; + protected get entityType(): ClassType; + protected get alias(): string; + /** + * Get many + * @param req + */ + getMany(req: CrudRequest): Promise | T[]>; + /** + * Get one + * @param req + */ + getOne(req: CrudRequest): Promise; + /** + * Create one + * @param req + * @param dto + */ + createOne(req: CrudRequest, dto: DeepPartial): Promise; + /** + * Create many + * @param req + * @param dto + */ + createMany(req: CrudRequest, dto: CreateManyDto>): Promise; + /** + * Update one + * @param req + * @param dto + */ + updateOne(req: CrudRequest, dto: DeepPartial): Promise; + /** + * Recover one + * @param req + * @param dto + */ + recoverOne(req: CrudRequest): Promise; + /** + * Replace one + * @param req + * @param dto + */ + replaceOne(req: CrudRequest, dto: DeepPartial): Promise; + /** + * Delete one + * @param req + */ + deleteOne(req: CrudRequest): Promise; + getParamFilters(parsed: CrudRequest["parsed"]): ObjectLiteral; + /** + * Create TypeOrm QueryBuilder + * @param parsed + * @param options + * @param many + * @param withDeleted + */ + createBuilder(parsed: ParsedRequestParams, options: CrudRequestOptions, many?: boolean, withDeleted?: boolean): Promise>; + /** + * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount` + * helpful for overriding `TypeOrmCrudService#getMany` + * @see getMany + * @see SelectQueryBuilder#getMany + * @see SelectQueryBuilder#getManyAndCount + * @param builder + * @param query + * @param options + */ + protected doGetMany(builder: SelectQueryBuilder, query: ParsedRequestParams, options: CrudRequestOptions): Promise | T[]>; + protected onInitMapEntityColumns(): void; + protected getOneOrFail(req: CrudRequest, shallow?: boolean, withDeleted?: boolean): Promise; + protected prepareEntityBeforeSave(dto: DeepPartial, parsed: CrudRequest["parsed"]): T | undefined; + protected getAllowedColumns(columns: string[], options: QueryOptions): string[]; + protected getEntityColumns(entityMetadata: EntityMetadata): { + columns: string[]; + primaryColumns: string[]; + }; + protected getRelationMetadata(field: string, options: JoinOption): IAllowedRelation | null; + protected setJoin(cond: QueryJoin, joinOptions: JoinOptions, builder: SelectQueryBuilder): undefined | void; + protected setAndWhere(cond: QueryFilter, i: any, builder: SelectQueryBuilder | WhereExpressionBuilder, customOperators: CustomOperators): void; + protected setOrWhere(cond: QueryFilter, i: any, builder: SelectQueryBuilder | WhereExpressionBuilder, customOperators: CustomOperators): void; + protected setSearchCondition(builder: SelectQueryBuilder, search: SCondition | null, customOperators: CustomOperators, condition?: SConditionKey): void; + protected builderAddBrackets(builder: SelectQueryBuilder, condition: SConditionKey, brackets: Brackets, negated?: boolean): void; + protected builderSetWhere(builder: SelectQueryBuilder, condition: SConditionKey, field: string, value: any, customOperators: CustomOperators, operator?: ComparisonOperator): void; + protected setSearchFieldObjectCondition(builder: SelectQueryBuilder, condition: SConditionKey, field: string, object: any, customOperators: CustomOperators): void; + protected getSelect(query: ParsedRequestParams, options: QueryOptions): string[]; + protected getSort(query: ParsedRequestParams, options: QueryOptions): ObjectLiteral; + protected getFieldWithAlias(field: string, sort?: boolean): string; + protected mapSort(sort: QuerySort[]): ObjectLiteral; + protected mapOperatorsToQuery(cond: QueryFilter, param: any, customOperators?: CustomOperators): { + str: string; + params: ObjectLiteral; + }; + protected checkFilterIsArray(cond: QueryFilter, withLength?: boolean): void; + protected checkSqlInjection(field: string): string; +} +export {}; diff --git a/dist/packages/crudx/src/services/type-orm-crud.service.js b/dist/packages/crudx/src/services/type-orm-crud.service.js new file mode 100644 index 000000000..3884da159 --- /dev/null +++ b/dist/packages/crudx/src/services/type-orm-crud.service.js @@ -0,0 +1,907 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TypeOrmCrudService = void 0; +const tslib_1 = require("tslib"); +const o0_1 = require("@zmotivat0r/o0"); +const class_transformer_1 = require("class-transformer"); +const lodash_1 = require("lodash"); +const typeorm_1 = require("typeorm"); +const helpers_1 = require("../helpers"); +const types_1 = require("../types"); +const abstract_crud_service_1 = require("./abstract-crud.service"); +class TypeOrmCrudService extends abstract_crud_service_1.CrudService { + constructor(repo) { + super(); + this.repo = repo; + this.entityHasDeleteColumn = false; + this.entityColumnsHash = {}; + this.entityRelationsHash = new Map(); + this.sqlInjectionRegEx = [ + /(%27)|(')|(--)|(%23)|(#)/gi, + /((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))/gi, + /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi, + /((%27)|('))union/gi, + ]; + this.dbName = this.repo.metadata.connection.options.type; + this.onInitMapEntityColumns(); + } + get findOne() { + return this.repo.findOne.bind(this.repo); + } + get findOneBy() { + return this.repo.findOneBy.bind(this.repo); + } + get find() { + return this.repo.find.bind(this.repo); + } + get count() { + return this.repo.count.bind(this.repo); + } + get entityType() { + return this.repo.target; + } + get alias() { + return this.repo.metadata.targetName; + } + /** + * Get many + * @param req + */ + getMany(req) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { parsed, options } = req; + const builder = yield this.createBuilder(parsed, options); + return this.doGetMany(builder, parsed, options); + }); + } + /** + * Get one + * @param req + */ + getOne(req) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + return this.getOneOrFail(req); + }); + } + /** + * Create one + * @param req + * @param dto + */ + createOne(req, dto) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + // @ts-ignore + const { returnShallow } = (_a = req.options.routes) === null || _a === void 0 ? void 0 : _a.createOneBase; + const entity = this.prepareEntityBeforeSave(dto, req.parsed); + /* istanbul ignore if */ + if (!entity) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const saved = yield this.repo.save(entity); + if (returnShallow) { + return saved; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + if ((0, lodash_1.isEmpty)(primaryParams) && + primaryParams.some((p) => (0, lodash_1.isNil)(saved[p]))) { + return saved; + } + else { + req.parsed.search = primaryParams.reduce((acc, p) => (Object.assign(Object.assign({}, acc), { [p]: saved[p] })), {}); + return this.getOneOrFail(req); + } + } + }); + } + /** + * Create many + * @param req + * @param dto + */ + createMany(req, dto) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto) || !(0, helpers_1.isArrayFull)(dto.bulk)) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const bulk = dto.bulk + .map((one) => this.prepareEntityBeforeSave(one, req.parsed)) + .filter((d) => !(0, lodash_1.isUndefined)(d)); + /* istanbul ignore if */ + if (!bulk.length) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + return this.repo.save(bulk, { chunk: 50 }); + }); + } + /** + * Update one + * @param req + * @param dto + */ + updateOne(req, dto) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { allowParamsOverride, returnShallow } = ((_a = req.options.routes) === null || _a === void 0 ? void 0 : _a.updateOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while updating + // @ts-ignore + req.options.query.cache = false; + const found = yield this.getOneOrFail(req, returnShallow); + const toSave = !allowParamsOverride + ? Object.assign(Object.assign(Object.assign(Object.assign({}, found), dto), paramsFilters), req.parsed.authPersist) : Object.assign(Object.assign(Object.assign({}, found), dto), req.parsed.authPersist); + const updated = yield this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return updated; + } + else { + req.parsed.paramsFilter.forEach((filter) => { + // @ts-ignore + filter.value = updated[filter.field]; + }); + return this.getOneOrFail(req); + } + }); + } + /** + * Recover one + * @param req + * @param dto + */ + recoverOne(req) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + // disable cache while recovering + // @ts-ignore + req.options.query.cache = false; + const found = yield this.getOneOrFail(req, false, true); + return this.repo.recover(found); + }); + } + /** + * Replace one + * @param req + * @param dto + */ + replaceOne(req, dto) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { allowParamsOverride, returnShallow } = ((_a = req.options.routes) === null || _a === void 0 ? void 0 : _a.replaceOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while replacing + // @ts-ignore + req.options.query.cache = false; + const [_, found] = yield (0, o0_1.oO)(this.getOneOrFail(req, returnShallow)); + const toSave = !allowParamsOverride + ? Object.assign(Object.assign(Object.assign(Object.assign({}, (found || {})), dto), paramsFilters), req.parsed.authPersist) : Object.assign(Object.assign(Object.assign(Object.assign({}, (found || {})), paramsFilters), dto), req.parsed.authPersist); + const replaced = yield this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return replaced; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + /* istanbul ignore if */ + if (!primaryParams.length) { + return replaced; + } + req.parsed.search = primaryParams.reduce((acc, p) => (Object.assign(Object.assign({}, acc), { + // @ts-ignore + [p]: replaced[p] })), {}); + return this.getOneOrFail(req); + } + }); + } + /** + * Delete one + * @param req + */ + deleteOne(req) { + var _a, _b; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { returnDeleted } = ((_a = req.options.routes) === null || _a === void 0 ? void 0 : _a.deleteOneBase); + // disable cache while deleting + // @ts-ignore + req.options.query.cache = false; + const found = yield this.getOneOrFail(req, returnDeleted); + const toReturn = returnDeleted + ? (0, class_transformer_1.plainToInstance)(this.entityType, Object.assign({}, found), req.parsed.classTransformOptions) + : undefined; + const deleted = ((_b = req.options.query) === null || _b === void 0 ? void 0 : _b.softDelete) === true + ? yield this.repo.softRemove(found) + : yield this.repo.remove(found); + return toReturn; + }); + } + getParamFilters(parsed) { + const filters = {}; + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + filters[filter.field] = filter.value; + } + } + return filters; + } + /** + * Create TypeOrm QueryBuilder + * @param parsed + * @param options + * @param many + * @param withDeleted + */ + createBuilder(parsed, options, many = true, withDeleted = false) { + var _a, _b, _c, _d; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + // create query builder + const builder = this.repo.createQueryBuilder(this.alias); + // get select fields + const select = this.getSelect(parsed, options.query || {}); + // select fields + builder.select(select); + // if soft deleted is enabled add where statement to filter deleted records + if ((_a = options.query) === null || _a === void 0 ? void 0 : _a.softDelete) { + if (parsed.includeDeleted === 1 || withDeleted) { + builder.withDeleted(); + } + } + // search + this.setSearchCondition(builder, parsed.search || {}, ((_b = options.operators) === null || _b === void 0 ? void 0 : _b.custom) || {}); + // set joins + const joinOptions = ((_c = options.query) === null || _c === void 0 ? void 0 : _c.join) || {}; + const allowedJoins = Object.keys(joinOptions); + if (!(0, lodash_1.isEmpty)(allowedJoins)) { + const eagerJoins = {}; + for (let i = 0; i < allowedJoins.length; i++) { + if (joinOptions[allowedJoins[i]].eager) { + const cond = parsed.join.find((j) => j && j.field === allowedJoins[i]) || { + field: allowedJoins[i], + }; + this.setJoin(cond, joinOptions, builder); + eagerJoins[allowedJoins[i]] = true; + } + } + if ((0, helpers_1.isArrayFull)(parsed.join)) { + for (let i = 0; i < parsed.join.length; i++) { + if (!eagerJoins[parsed.join[i].field]) { + this.setJoin(parsed.join[i], joinOptions, builder); + } + } + } + } + if (many) { + // set sort (order by) + const sort = this.getSort(parsed, options.query || {}); + builder.orderBy(sort); + // set take + const take = this.getTake(parsed, options.query || {}); + if (take && isFinite(take)) { + builder.take(take); + } + // set skip + const skip = this.getSkip(parsed, take || 0); + if (skip && isFinite(skip)) { + builder.skip(skip); + } + } + // set cache + if (((_d = options.query) === null || _d === void 0 ? void 0 : _d.cache) && parsed.cache !== 0) { + builder.cache(options.query.cache); + } + return builder; + }); + } + /** + * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount` + * helpful for overriding `TypeOrmCrudService#getMany` + * @see getMany + * @see SelectQueryBuilder#getMany + * @see SelectQueryBuilder#getManyAndCount + * @param builder + * @param query + * @param options + */ + doGetMany(builder, query, options) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + if (this.decidePagination(query, options)) { + const [data, total] = yield builder.getManyAndCount(); + const limit = builder.expressionMap.take; + const offset = builder.expressionMap.skip; + return this.createPageInfo(data, total, limit || total, offset || 0); + } + return builder.getMany(); + }); + } + onInitMapEntityColumns() { + this.entityColumns = this.repo.metadata.columns.map((prop) => { + // In case column is an embedded, use the propertyPath to get complete path + if (prop.embeddedMetadata) { + this.entityColumnsHash[prop.propertyPath] = prop.databasePath; + return prop.propertyPath; + } + this.entityColumnsHash[prop.propertyName] = prop.databasePath; + return prop.propertyName; + }); + this.entityPrimaryColumns = this.repo.metadata.columns + .filter((prop) => prop.isPrimary) + .map((prop) => prop.propertyName); + this.entityHasDeleteColumn = this.repo.metadata.columns.some((prop) => !(0, lodash_1.isEmpty)(prop.isDeleteDate)); + } + getOneOrFail(req, shallow = false, withDeleted = false) { + var _a; + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const { parsed, options } = req; + const builder = shallow + ? this.repo.createQueryBuilder(this.alias) + : yield this.createBuilder(parsed, options, true, withDeleted); + if (shallow) { + this.setSearchCondition(builder, parsed.search || null, (_a = options.operators) === null || _a === void 0 ? void 0 : _a.custom); + } + const found = withDeleted + ? yield builder.withDeleted().getOne() + : yield builder.getOne(); + if (!found) { + this.throwNotFoundException(this.alias); + } + return found; + }); + } + prepareEntityBeforeSave(dto, parsed) { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto)) { + return undefined; + } + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + dto[filter.field] = filter.value; + } + } + /* istanbul ignore if */ + if ((0, lodash_1.isEmpty)(Object.keys(dto))) { + return undefined; + } + return dto instanceof this.entityType + ? Object.assign(dto, parsed.authPersist) + : (0, class_transformer_1.plainToInstance)(this.entityType, Object.assign(Object.assign({}, dto), parsed.authPersist), parsed.classTransformOptions); + } + getAllowedColumns(columns, options) { + return (!options.exclude || !options.exclude.length) && + (!options.allow || !options.allow.length) + ? columns + : columns.filter((column) => (options.exclude && options.exclude.length + ? !options.exclude.some((col) => col === column) + : true) && + (options.allow && options.allow.length + ? options.allow.some((col) => col === column) + : true)); + } + getEntityColumns(entityMetadata) { + const columns = entityMetadata.columns.map((prop) => prop.propertyPath) || + []; + const primaryColumns = entityMetadata.primaryColumns.map((prop) => prop.propertyPath) || []; + return { columns, primaryColumns }; + } + getRelationMetadata(field, options) { + try { + let allowedRelation; + let nested = false; + if (this.entityRelationsHash.has(field)) { + allowedRelation = this.entityRelationsHash.get(field); + } + else { + const fields = field.split("."); + let relationMetadata = null; + let name; + let path; + let parentPath; + if (fields.length === 1) { + const found = this.repo.metadata.relations.find((one) => one.propertyName === fields[0]); + if (found) { + name = fields[0]; + path = `${this.alias}.${fields[0]}`; + relationMetadata = found.inverseEntityMetadata; + } + } + else { + nested = true; + parentPath = ""; + const reduced = fields.reduce( + // @ts-ignore + (res, propertyName, i) => { + var _a; + const found = ((_a = res.relations) === null || _a === void 0 ? void 0 : _a.length) + ? res.relations.find((one) => one.propertyName === propertyName) + : null; + relationMetadata = found ? found.inverseEntityMetadata : null; + const relations = relationMetadata + ? relationMetadata.relations + : []; + name = propertyName; + if (i !== fields.length - 1) { + parentPath = !parentPath + ? propertyName + : `${parentPath}.${propertyName}`; + } + return { + relations, + relationMetadata, + }; + }, { + relations: this.repo.metadata.relations, + relationMetadata: null, + }); + // @ts-ignore + relationMetadata = reduced.relationMetadata; + } + // @ts-ignore + if (relationMetadata) { + const { columns, primaryColumns } = this.getEntityColumns(relationMetadata); + if (!path && parentPath) { + const parentAllowedRelation = this.entityRelationsHash.get(parentPath); + if (parentAllowedRelation) { + path = parentAllowedRelation.alias + ? `${parentAllowedRelation.alias}.${name}` + : field; + } + } + allowedRelation = { + alias: options.alias, + name, + path, + columns, + nested, + primaryColumns, + }; + } + } + if (allowedRelation) { + const allowedColumns = this.getAllowedColumns(allowedRelation.columns, options); + const toSave = Object.assign(Object.assign({}, allowedRelation), { allowedColumns }); + this.entityRelationsHash.set(field, toSave); + if (options.alias) { + this.entityRelationsHash.set(options.alias, toSave); + } + return toSave; + } + } + catch (_) { + return null; + } + return null; + } + setJoin(cond, joinOptions, builder) { + var _a, _b; + const options = (_a = joinOptions[cond.field]) !== null && _a !== void 0 ? _a : null; + if (!options) { + console.warn('relation "' + + cond.field + + '" not found in allowed relations in the controller. Did you mean to use one of these? [' + + Object.keys(joinOptions).join(", ") + + "]"); + return; + } + const allowedRelation = this.getRelationMetadata(cond.field, options); + if (!allowedRelation) { + return; + } + const relationType = options.required ? "innerJoin" : "leftJoin"; + const alias = options.alias ? options.alias : allowedRelation.name; + builder[relationType](allowedRelation.path, alias); + if (options.select !== false) { + const columns = (0, helpers_1.isArrayFull)(cond.select) + ? ((_b = cond.select) === null || _b === void 0 ? void 0 : _b.filter((column) => allowedRelation.allowedColumns.some((allowed) => allowed === column))) || [] + : allowedRelation.allowedColumns || []; + const select = [ + ...allowedRelation.primaryColumns, + // @ts-ignore + ...((0, helpers_1.isArrayFull)(options.persist) ? options.persist : []), + ...columns, + ].map((col) => `${alias}.${col}`); + builder.addSelect(Array.from(new Set(select))); + } + } + setAndWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `andWhere${i}`, customOperators); + builder.andWhere(str, params); + } + setOrWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `orWhere${i}`, customOperators); + builder.orWhere(str, params); + } + setSearchCondition(builder, search, customOperators, condition = "$and") { + var _a, _b; + if ((0, helpers_1.isObject)(search)) { + const keys = Object.keys(search); + if (keys.length) { + // search: {$ne: [...]} + // @ts-ignore + if ((0, helpers_1.isArrayFull)(search === null || search === void 0 ? void 0 : search.$ne)) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + // @ts-ignore + search.$not.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + }), true); + } + // search: {$and: [...], ...} + else if ((0, helpers_1.isArrayFull)(search === null || search === void 0 ? void 0 : search.$and)) { + // search: {$and: [{}]} + if (((_a = search === null || search === void 0 ? void 0 : search.$and) === null || _a === void 0 ? void 0 : _a.length) === 1) { + this.setSearchCondition(builder, search.$and[0], customOperators, condition); + } + // search: {$and: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + var _a; + (_a = search === null || search === void 0 ? void 0 : search.$and) === null || _a === void 0 ? void 0 : _a.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + })); + } + } + // search: {$or: [...], ...} + else if ((0, helpers_1.isArrayFull)(search === null || search === void 0 ? void 0 : search.$or)) { + // search: {$or: [...]} + if (keys.length === 1) { + // search: {$or: [{}]} + if (((_b = search === null || search === void 0 ? void 0 : search.$or) === null || _b === void 0 ? void 0 : _b.length) === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, condition); + } + // search: {$or: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + var _a; + (_a = search === null || search === void 0 ? void 0 : search.$or) === null || _a === void 0 ? void 0 : _a.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$or"); + }); + })); + } + } + // search: {$or: [...], foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + var _a; + if (field !== "$or") { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + } + else { + if (((_a = search === null || search === void 0 ? void 0 : search.$or) === null || _a === void 0 ? void 0 : _a.length) === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, "$and"); + } + else { + this.builderAddBrackets(qb, "$and", new typeorm_1.Brackets((qb2) => { + var _a; + (_a = search === null || search === void 0 ? void 0 : search.$or) === null || _a === void 0 ? void 0 : _a.forEach((item) => { + this.setSearchCondition(qb2, item, customOperators, "$or"); + }); + })); + } + } + }); + })); + } + } + // search: {...} + else { + // search: {foo} + if (keys.length === 1) { + const field = keys[0]; + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(builder, condition, field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(builder, condition, field, value, customOperators); + } + } + // search: {foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + }); + })); + } + } + } + } + } + builderAddBrackets(builder, condition, brackets, negated = false) { + if (negated) { + // No builtin support for not, this is copied from QueryBuilder.getWhereCondition + const whereQueryBuilder = builder.createQueryBuilder(); + whereQueryBuilder.parentQueryBuilder = builder; + whereQueryBuilder.expressionMap.mainAlias = + builder.expressionMap.mainAlias; + whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = + builder.expressionMap.aliasNamePrefixingEnabled; + whereQueryBuilder.expressionMap.parameters = + builder.expressionMap.parameters; + whereQueryBuilder.expressionMap.nativeParameters = + builder.expressionMap.nativeParameters; + whereQueryBuilder.expressionMap.wheres = []; + brackets.whereFactory(whereQueryBuilder); + const wheres = { + operator: "brackets", + condition: whereQueryBuilder.expressionMap.wheres, + }; + const type = condition === "$and" ? "and" : condition === "$or" ? "or" : "simple"; + builder.expressionMap.wheres.push({ + type, + condition: { + operator: "not", + condition: wheres, + }, + }); + } + else if (condition === "$and") { + builder.andWhere(brackets); + } + else { + builder.orWhere(brackets); + } + } + builderSetWhere(builder, condition, field, value, customOperators, operator = "$eq") { + const time = process.hrtime(); + // const index = `${field}${time[0]}${time[1]}`; + /** + * Correcting the Error [Invalid Column Name] or [ syntax error at or near \":\".] + * When using filter or search in relational/nested entities. + */ + const safeFieldName = field.replace(/./g, "_"); + const index = `${safeFieldName}${time[0]}${time[1]}`; + const args = [ + { field, operator: (0, lodash_1.isNull)(value) ? "$isnull" : operator, value }, + index, + builder, + customOperators, + ]; + const fn = condition === "$and" ? this.setAndWhere : this.setOrWhere; + // @ts-ignore + fn.apply(this, args); + } + setSearchFieldObjectCondition(builder, condition, field, object, customOperators) { + if ((0, helpers_1.isObject)(object)) { + const operators = Object.keys(object); + if (operators.length === 1) { + const operator = operators[0]; + const value = object[operator]; + if ((0, helpers_1.isObject)(object.$or)) { + const orKeys = Object.keys(object.$or); + this.setSearchFieldObjectCondition(builder, orKeys.length === 1 ? condition : "$or", field, object.$or, customOperators); + } + else { + this.builderSetWhere(builder, condition, field, value, customOperators, operator); + } + } + else { + if (operators.length > 1) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + operators.forEach((operator) => { + const value = object[operator]; + if (operator !== "$or") { + this.builderSetWhere(qb, condition, field, value, customOperators, operator); + } + else { + const orKeys = Object.keys(object.$or); + if (orKeys.length === 1) { + this.setSearchFieldObjectCondition(qb, condition, field, object.$or, customOperators); + } + else { + this.builderAddBrackets(qb, condition, new typeorm_1.Brackets((qb2) => { + this.setSearchFieldObjectCondition(qb2, "$or", field, object.$or, customOperators); + })); + } + } + }); + })); + } + } + } + } + getSelect(query, options) { + const allowed = this.getAllowedColumns(this.entityColumns || [], options); + const columns = query.fields && query.fields.length + ? query.fields.filter((field) => allowed.some((col) => field === col)) + : allowed; + return [ + ...new Set([ + ...(options.persist && options.persist.length ? options.persist : []), + ...columns, + ...(this.entityPrimaryColumns || []), + ]), + ].map((col) => `${this.alias}.${col}`); + } + getSort(query, options) { + return query.sort && query.sort.length + ? this.mapSort(query.sort) + : options.sort && options.sort.length + ? this.mapSort(options.sort) + : {}; + } + getFieldWithAlias(field, sort = false) { + const i = ["mysql", "mariadb"].includes(this.dbName) ? "`" : '"'; + const cols = field.split("."); + switch (cols.length) { + case 1: + if (sort) { + return `${this.alias}.${field}`; + } + const dbColName = this.entityColumnsHash[field] !== field + ? this.entityColumnsHash[field] + : field; + return `${i}${this.alias}${i}.${i}${dbColName}${i}`; + case 2: + return field; + default: + return cols.slice(cols.length - 2, cols.length).join("."); + } + } + mapSort(sort) { + const params = {}; + for (let i = 0; i < sort.length; i++) { + const field = this.getFieldWithAlias(sort[i].field, true); + const checkedFiled = this.checkSqlInjection(field); + params[checkedFiled] = sort[i].order; + } + return params; + } + mapOperatorsToQuery(cond, param, customOperators = {}) { + const field = this.getFieldWithAlias(cond.field); + const likeOperator = this.dbName === "postgres" ? "ILIKE" : "LIKE"; + let str; + let params; + if (cond.operator[0] !== "$") { + cond.operator = ("$" + cond.operator); + } + switch (cond.operator) { + case types_1.CondOperator.EQUALS: + str = `${field} = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS: + str = `${field} != :${param}`; + break; + case types_1.CondOperator.GREATER_THAN: + str = `${field} > :${param}`; + break; + case types_1.CondOperator.LOWER_THAN: + str = `${field} < :${param}`; + break; + case types_1.CondOperator.GREATER_THAN_EQUALS: + str = `${field} >= :${param}`; + break; + case types_1.CondOperator.LOWER_THAN_EQUALS: + str = `${field} <= :${param}`; + break; + case types_1.CondOperator.STARTS: + str = `${field} LIKE :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES: + str = `${field} NOT LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN: + this.checkFilterIsArray(cond); + str = `${field} IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN: + this.checkFilterIsArray(cond); + str = `${field} NOT IN (:...${param})`; + break; + case types_1.CondOperator.IS_NULL: + str = `${field} IS NULL`; + params = {}; + break; + case types_1.CondOperator.NOT_NULL: + str = `${field} IS NOT NULL`; + params = {}; + break; + case types_1.CondOperator.BETWEEN: + this.checkFilterIsArray(cond, cond.value.length !== 2); + str = `${field} BETWEEN :${param}0 AND :${param}1`; + params = { + [`${param}0`]: cond.value[0], + [`${param}1`]: cond.value[1], + }; + break; + // case insensitive + case types_1.CondOperator.EQUALS_LOW: + str = `LOWER(${field}) = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS_LOW: + str = `LOWER(${field}) != :${param}`; + break; + case types_1.CondOperator.STARTS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES_LOW: + str = `LOWER(${field}) NOT ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) NOT IN (:...${param})`; + break; + default: + const customOperator = customOperators[cond.operator]; + if (!customOperator) { + str = `${field} = :${param}`; + break; + } + try { + if (customOperator.isArray) { + this.checkFilterIsArray(cond); + } + str = customOperator.query(field, param); + params = customOperator.params || {}; + } + catch (error) { + this.throwBadRequestException(`Invalid custom operator '${field}' query`); + } + break; + } + if (typeof params === "undefined") { + params = { [param]: cond.value }; + } + return { str: str, params }; + } + checkFilterIsArray(cond, withLength) { + /* istanbul ignore if */ + if (!Array.isArray(cond.value) || + !cond.value.length || + (!(0, lodash_1.isNil)(withLength) ? withLength : false)) { + this.throwBadRequestException(`Invalid column '${cond.field}' value`); + } + } + checkSqlInjection(field) { + if (this.sqlInjectionRegEx.length) { + for (let i = 0; i < this.sqlInjectionRegEx.length; i++) { + if (this.sqlInjectionRegEx[i].test(field)) { + this.throwBadRequestException(`SQL injection detected: "${field}"`); + } + } + } + return field; + } +} +exports.TypeOrmCrudService = TypeOrmCrudService; +//# sourceMappingURL=type-orm-crud.service.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/services/type-orm-crud.service.js.map b/dist/packages/crudx/src/services/type-orm-crud.service.js.map new file mode 100644 index 000000000..3e689b748 --- /dev/null +++ b/dist/packages/crudx/src/services/type-orm-crud.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"type-orm-crud.service.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/services/type-orm-crud.service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/packages/crudx/src/types/common.types.d.ts b/dist/packages/crudx/src/types/common.types.d.ts new file mode 100644 index 000000000..c6c86e671 --- /dev/null +++ b/dist/packages/crudx/src/types/common.types.d.ts @@ -0,0 +1,6 @@ +export type ClassType = { + new (...args: any[]): T; +}; +export type ObjectLiteral = { + [key: string]: any; +}; diff --git a/dist/packages/crudx/src/types/common.types.js b/dist/packages/crudx/src/types/common.types.js new file mode 100644 index 000000000..0a23168bc --- /dev/null +++ b/dist/packages/crudx/src/types/common.types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=common.types.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/types/common.types.js.map b/dist/packages/crudx/src/types/common.types.js.map new file mode 100644 index 000000000..714e11aff --- /dev/null +++ b/dist/packages/crudx/src/types/common.types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"common.types.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/types/common.types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/types/crud.types.d.ts b/dist/packages/crudx/src/types/crud.types.d.ts new file mode 100644 index 000000000..cf6f52134 --- /dev/null +++ b/dist/packages/crudx/src/types/crud.types.d.ts @@ -0,0 +1,4 @@ +import { SCondition, QueryFilter } from "./request-query.types"; +export type BaseRouteName = "getManyBase" | "getOneBase" | "createOneBase" | "createManyBase" | "updateOneBase" | "replaceOneBase" | "deleteOneBase" | "recoverOneBase"; +export type QueryFilterFunction = (search?: SCondition, getMany?: boolean) => SCondition | void; +export type QueryFilterOption = QueryFilter[] | SCondition | QueryFilterFunction; diff --git a/dist/packages/crudx/src/types/crud.types.js b/dist/packages/crudx/src/types/crud.types.js new file mode 100644 index 000000000..92cbe6075 --- /dev/null +++ b/dist/packages/crudx/src/types/crud.types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=crud.types.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/types/crud.types.js.map b/dist/packages/crudx/src/types/crud.types.js.map new file mode 100644 index 000000000..b93c51177 --- /dev/null +++ b/dist/packages/crudx/src/types/crud.types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"crud.types.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/types/crud.types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/types/index.d.ts b/dist/packages/crudx/src/types/index.d.ts new file mode 100644 index 000000000..97a5cad1c --- /dev/null +++ b/dist/packages/crudx/src/types/index.d.ts @@ -0,0 +1,4 @@ +export * from "./common.types"; +export * from "./crud.types"; +export * from "./request-param.types"; +export * from "./request-query.types"; diff --git a/dist/packages/crudx/src/types/index.js b/dist/packages/crudx/src/types/index.js new file mode 100644 index 000000000..d147e91d6 --- /dev/null +++ b/dist/packages/crudx/src/types/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./common.types"), exports); +tslib_1.__exportStar(require("./crud.types"), exports); +tslib_1.__exportStar(require("./request-param.types"), exports); +tslib_1.__exportStar(require("./request-query.types"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/types/index.js.map b/dist/packages/crudx/src/types/index.js.map new file mode 100644 index 000000000..c38b31e7d --- /dev/null +++ b/dist/packages/crudx/src/types/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/types/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,uDAA6B;AAC7B,gEAAsC;AACtC,gEAAsC"} \ No newline at end of file diff --git a/dist/packages/crudx/src/types/request-param.types.d.ts b/dist/packages/crudx/src/types/request-param.types.d.ts new file mode 100644 index 000000000..40cbb698b --- /dev/null +++ b/dist/packages/crudx/src/types/request-param.types.d.ts @@ -0,0 +1 @@ +export type ParamOptionType = "number" | "string" | "uuid"; diff --git a/dist/packages/crudx/src/types/request-param.types.js b/dist/packages/crudx/src/types/request-param.types.js new file mode 100644 index 000000000..d98f39e90 --- /dev/null +++ b/dist/packages/crudx/src/types/request-param.types.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=request-param.types.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/types/request-param.types.js.map b/dist/packages/crudx/src/types/request-param.types.js.map new file mode 100644 index 000000000..e314e6507 --- /dev/null +++ b/dist/packages/crudx/src/types/request-param.types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"request-param.types.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/types/request-param.types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/packages/crudx/src/types/request-query.types.d.ts b/dist/packages/crudx/src/types/request-query.types.d.ts new file mode 100644 index 000000000..ea3d3ec1b --- /dev/null +++ b/dist/packages/crudx/src/types/request-query.types.d.ts @@ -0,0 +1,90 @@ +import { ObjectLiteral } from "./common.types"; +export type QueryFields = string[]; +export interface QueryFilter { + field: string; + operator: ComparisonOperator; + value?: any; +} +export type QueryFilterArr = [string, ComparisonOperator, any?]; +export interface QueryJoin { + field: string; + select?: QueryFields; +} +export type QueryJoinArr = [string, QueryFields?]; +export interface QuerySort { + field: string; + order: QuerySortOperator; +} +/** Extra object or null */ +export type QueryExtra = ObjectLiteral | undefined; +export type QuerySortArr = [string, QuerySortOperator]; +export type QuerySortOperator = "ASC" | "DESC"; +export declare enum CondOperator { + EQUALS = "$eq", + NOT_EQUALS = "$ne", + GREATER_THAN = "$gt", + LOWER_THAN = "$lt", + GREATER_THAN_EQUALS = "$gte", + LOWER_THAN_EQUALS = "$lte", + STARTS = "$starts", + ENDS = "$ends", + CONTAINS = "$cont", + EXCLUDES = "$excl", + IN = "$in", + NOT_IN = "$notin", + IS_NULL = "$isnull", + NOT_NULL = "$notnull", + BETWEEN = "$between", + EQUALS_LOW = "$eqL", + NOT_EQUALS_LOW = "$neL", + STARTS_LOW = "$startsL", + ENDS_LOW = "$endsL", + CONTAINS_LOW = "$contL", + EXCLUDES_LOW = "$exclL", + IN_LOW = "$inL", + NOT_IN_LOW = "$notinL" +} +export type ComparisonOperator = keyof SFieldOperator | string; +export type SPrimitivesVal = string | number | boolean; +export type SFiledValues = SPrimitivesVal | SPrimitivesVal[]; +export interface SFieldOperator { + $eq?: SFiledValues; + $ne?: SFiledValues; + $gt?: SFiledValues; + $lt?: SFiledValues; + $gte?: SFiledValues; + $lte?: SFiledValues; + $starts?: SFiledValues; + $ends?: SFiledValues; + $cont?: SFiledValues; + $excl?: SFiledValues; + $in?: SFiledValues; + $notin?: SFiledValues; + $between?: SFiledValues; + $isnull?: SFiledValues; + $notnull?: SFiledValues; + $eqL?: SFiledValues; + $neL?: SFiledValues; + $startsL?: SFiledValues; + $endsL?: SFiledValues; + $contL?: SFiledValues; + $exclL?: SFiledValues; + $inL?: SFiledValues; + $notinL?: SFiledValues; + $or?: SFieldOperator; + $and?: never; +} +export type SField = SPrimitivesVal | SFieldOperator | { + [$custom: string]: SFiledValues; +}; +export interface SFields { + [key: string]: SField | Array | undefined; + $or?: Array; + $and?: never; +} +export interface SConditionAND { + $and?: Array; + $or?: never; +} +export type SConditionKey = "$and" | "$or"; +export type SCondition = SFields | SConditionAND; diff --git a/dist/packages/crudx/src/types/request-query.types.js b/dist/packages/crudx/src/types/request-query.types.js new file mode 100644 index 000000000..46e6d0196 --- /dev/null +++ b/dist/packages/crudx/src/types/request-query.types.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CondOperator = void 0; +var CondOperator; +(function (CondOperator) { + CondOperator["EQUALS"] = "$eq"; + CondOperator["NOT_EQUALS"] = "$ne"; + CondOperator["GREATER_THAN"] = "$gt"; + CondOperator["LOWER_THAN"] = "$lt"; + CondOperator["GREATER_THAN_EQUALS"] = "$gte"; + CondOperator["LOWER_THAN_EQUALS"] = "$lte"; + CondOperator["STARTS"] = "$starts"; + CondOperator["ENDS"] = "$ends"; + CondOperator["CONTAINS"] = "$cont"; + CondOperator["EXCLUDES"] = "$excl"; + CondOperator["IN"] = "$in"; + CondOperator["NOT_IN"] = "$notin"; + CondOperator["IS_NULL"] = "$isnull"; + CondOperator["NOT_NULL"] = "$notnull"; + CondOperator["BETWEEN"] = "$between"; + CondOperator["EQUALS_LOW"] = "$eqL"; + CondOperator["NOT_EQUALS_LOW"] = "$neL"; + CondOperator["STARTS_LOW"] = "$startsL"; + CondOperator["ENDS_LOW"] = "$endsL"; + CondOperator["CONTAINS_LOW"] = "$contL"; + CondOperator["EXCLUDES_LOW"] = "$exclL"; + CondOperator["IN_LOW"] = "$inL"; + CondOperator["NOT_IN_LOW"] = "$notinL"; +})(CondOperator || (exports.CondOperator = CondOperator = {})); +//# sourceMappingURL=request-query.types.js.map \ No newline at end of file diff --git a/dist/packages/crudx/src/types/request-query.types.js.map b/dist/packages/crudx/src/types/request-query.types.js.map new file mode 100644 index 000000000..73587da6f --- /dev/null +++ b/dist/packages/crudx/src/types/request-query.types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"request-query.types.js","sourceRoot":"","sources":["../../../../../packages/crudx/src/types/request-query.types.ts"],"names":[],"mappings":";;;AA+BA,IAAY,YAwBX;AAxBD,WAAY,YAAY;IACtB,8BAAc,CAAA;IACd,kCAAkB,CAAA;IAClB,oCAAoB,CAAA;IACpB,kCAAkB,CAAA;IAClB,4CAA4B,CAAA;IAC5B,0CAA0B,CAAA;IAC1B,kCAAkB,CAAA;IAClB,8BAAc,CAAA;IACd,kCAAkB,CAAA;IAClB,kCAAkB,CAAA;IAClB,0BAAU,CAAA;IACV,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,qCAAqB,CAAA;IACrB,oCAAoB,CAAA;IACpB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;IACvB,uCAAuB,CAAA;IACvB,+BAAe,CAAA;IACf,sCAAsB,CAAA;AACxB,CAAC,EAxBW,YAAY,4BAAZ,YAAY,QAwBvB"} \ No newline at end of file diff --git a/dist/packages/demo/assets/.gitkeep b/dist/packages/demo/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/dist/packages/demo/main.js b/dist/packages/demo/main.js new file mode 100644 index 000000000..86ea877fa --- /dev/null +++ b/dist/packages/demo/main.js @@ -0,0 +1,5489 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(3), exports); +tslib_1.__exportStar(__webpack_require__(22), exports); +tslib_1.__exportStar(__webpack_require__(13), exports); +tslib_1.__exportStar(__webpack_require__(24), exports); +tslib_1.__exportStar(__webpack_require__(10), exports); +tslib_1.__exportStar(__webpack_require__(43), exports); +tslib_1.__exportStar(__webpack_require__(56), exports); +tslib_1.__exportStar(__webpack_require__(5), exports); +tslib_1.__exportStar(__webpack_require__(26), exports); + + +/***/ }), +/* 2 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("tslib"); + +/***/ }), +/* 3 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(4), exports); +tslib_1.__exportStar(__webpack_require__(51), exports); +tslib_1.__exportStar(__webpack_require__(52), exports); +tslib_1.__exportStar(__webpack_require__(53), exports); +tslib_1.__exportStar(__webpack_require__(54), exports); +tslib_1.__exportStar(__webpack_require__(55), exports); + + +/***/ }), +/* 4 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Crud = void 0; +const services_1 = __webpack_require__(5); +const Crud = (options) => (target) => { + const factoryMethod = options.routesFactory || services_1.RoutesFactoryService; + let factory = new factoryMethod(target, options); +}; +exports.Crud = Crud; + + +/***/ }), +/* 5 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(6), exports); +tslib_1.__exportStar(__webpack_require__(9), exports); +tslib_1.__exportStar(__webpack_require__(38), exports); +tslib_1.__exportStar(__webpack_require__(41), exports); +tslib_1.__exportStar(__webpack_require__(42), exports); +tslib_1.__exportStar(__webpack_require__(48), exports); + + +/***/ }), +/* 6 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudService = void 0; +const common_1 = __webpack_require__(7); +const lodash_1 = __webpack_require__(8); +class CrudService { + throwBadRequestException(msg) { + throw new common_1.BadRequestException(msg); + } + throwNotFoundException(name) { + throw new common_1.NotFoundException(`${name} not found`); + } + /** + * Wrap page into page-info + * override this method to create custom page-info response + * or set custom `serialize.getMany` dto in the controller's CrudOption + * @param data + * @param total + * @param limit + * @param offset + */ + createPageInfo(data, total, limit, offset) { + return { + data, + count: data.length, + total, + page: limit ? Math.floor(offset / limit) + 1 : 1, + pageCount: limit && total ? Math.ceil(total / limit) : 1, + }; + } + /** + * Determine if need paging + * @param parsed + * @param options + */ + decidePagination(parsed, options) { + return (options.query?.alwaysPaginate || + ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) && + !!this.getTake(parsed, options.query))); + } + /** + * Get number of resources to be fetched + * @param query + * @param options + */ + getTake(query, options) { + if (query.limit) { + return options.maxLimit + ? query.limit <= options.maxLimit + ? query.limit + : options.maxLimit + : query.limit; + } + /* istanbul ignore if */ + if (options.limit) { + return options.maxLimit + ? options.limit <= options.maxLimit + ? options.limit + : options.maxLimit + : options.limit; + } + return options.maxLimit ? options.maxLimit : null; + } + /** + * Get number of resources to be skipped + * @param query + * @param take + */ + getSkip(query, take) { + return query.page && take + ? take * (query.page - 1) + : query.offset + ? query.offset + : null; + } + /** + * Get primary param name from CrudOptions + * @param options + */ + getPrimaryParams(options) { + if ((0, lodash_1.isEmpty)(options.params)) { + return []; + } + // @ts-ignore + return (0, lodash_1.keys)(options.params) + .filter((n) => (0, lodash_1.get)(options, `params[${n}].primary`, false)) + .map((p) => (0, lodash_1.get)(options, `params[${p}].field`)); + } +} +exports.CrudService = CrudService; + + +/***/ }), +/* 7 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common"); + +/***/ }), +/* 8 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("lodash"); + +/***/ }), +/* 9 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudConfigService = void 0; +const helpers_1 = __webpack_require__(10); +const query_builder_service_1 = __webpack_require__(38); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = __webpack_require__(40); +class CrudConfigService { + static load(config = {}) { + const auth = (0, helpers_1.isObjectFull)(config.auth) ? config.auth : {}; + const query = (0, helpers_1.isObjectFull)(config.query) ? config.query : {}; + const routes = (0, helpers_1.isObjectFull)(config.routes) ? config.routes : {}; + const operators = (0, helpers_1.isObjectFull)(config.operators) ? config.operators : {}; + const params = (0, helpers_1.isObjectFull)(config.params) ? config.params : {}; + const serialize = (0, helpers_1.isObjectFull)(config.serialize) ? config.serialize : {}; + if ((0, helpers_1.isObjectFull)(config.queryParser)) { + query_builder_service_1.QueryBuilderService.setOptions({ + ...config.queryParser, + }); + } + CrudConfigService.config = deepmerge(CrudConfigService.config, { auth, query, routes, operators, params, serialize }, + // @ts-ignore + { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }); + } +} +exports.CrudConfigService = CrudConfigService; +CrudConfigService.config = { + auth: {}, + query: { + alwaysPaginate: false, + }, + operators: {}, + routes: { + getManyBase: { interceptors: [], decorators: [] }, + getOneBase: { interceptors: [], decorators: [] }, + createOneBase: { interceptors: [], decorators: [], returnShallow: false }, + createManyBase: { interceptors: [], decorators: [] }, + updateOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + replaceOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false }, + recoverOneBase: { + interceptors: [], + decorators: [], + returnRecovered: false, + }, + }, + params: {}, +}; + + +/***/ }), +/* 10 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(11), exports); +tslib_1.__exportStar(__webpack_require__(12), exports); +tslib_1.__exportStar(__webpack_require__(19), exports); +tslib_1.__exportStar(__webpack_require__(23), exports); +tslib_1.__exportStar(__webpack_require__(31), exports); +tslib_1.__exportStar(__webpack_require__(32), exports); + + +/***/ }), +/* 11 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.isObjectFull = exports.isObject = exports.isIn = exports.isTrue = exports.isFalse = exports.isDateString = exports.hasValue = exports.isValue = exports.isArrayOfStringsFull = exports.isStringFull = exports.isArrayFull = exports.isArrayOfStrings = void 0; +const lodash_1 = __webpack_require__(8); +const isArrayOfStrings = (arr) => { + return (0, lodash_1.isArray)(arr) && (0, lodash_1.every)(arr, lodash_1.isString); +}; +exports.isArrayOfStrings = isArrayOfStrings; +const isArrayFull = (val) => Array.isArray(val) && !(0, lodash_1.isEmpty)(val); +exports.isArrayFull = isArrayFull; +const isStringFull = (val) => (0, lodash_1.isString)(val) && !(0, lodash_1.isEmpty)(val); +exports.isStringFull = isStringFull; +const isArrayOfStringsFull = (val) => (0, exports.isArrayFull)(val) && val.every((v) => (0, exports.isStringFull)(v)); +exports.isArrayOfStringsFull = isArrayOfStringsFull; +const isValue = (val) => (0, exports.isStringFull)(val) || (0, lodash_1.isNumber)(val) || (0, lodash_1.isBoolean)(val) || (0, lodash_1.isDate)(val); +exports.isValue = isValue; +const hasValue = (val) => (0, exports.isArrayFull)(val) ? val.every((o) => (0, exports.isValue)(o)) : (0, exports.isValue)(val); +exports.hasValue = hasValue; +const isDateString = (val) => { + const timestamp = Date.parse(val); + return !isNaN(timestamp) && (0, lodash_1.isDate)(new Date(timestamp)); +}; +exports.isDateString = isDateString; +const isFalse = (val) => val === false; +exports.isFalse = isFalse; +const isTrue = (val) => val === true; +exports.isTrue = isTrue; +const isIn = (val, arr = []) => arr.some((o) => (0, lodash_1.isEqual)(val, o)); +exports.isIn = isIn; +const isObject = (val) => typeof val === "object" && !(0, lodash_1.isNil)(val); +exports.isObject = isObject; +const isObjectFull = (val) => (0, exports.isObject)(val) && (0, lodash_1.keys)(val).length > 0; +exports.isObjectFull = isObjectFull; + + +/***/ }), +/* 12 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.createBulkDto = exports.getValidationPipe = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const helpers_1 = __webpack_require__(10); +const lodash_1 = __webpack_require__(8); +const enums_1 = __webpack_require__(13); +const swagger_1 = __webpack_require__(16); +const class_validator_1 = __webpack_require__(17); +const class_transformer_1 = __webpack_require__(18); +class BulkDto { +} +const getValidationPipe = (options, group) => { + return !(0, helpers_1.isFalse)(options.validation) + ? new common_1.ValidationPipe({ + ...(options.validation || {}), + groups: group ? [group] : undefined, + }) + : undefined; +}; +exports.getValidationPipe = getValidationPipe; +const createBulkDto = (options) => { + if (!(0, helpers_1.isFalse)(options.validation)) { + const hasDto = !(0, lodash_1.isNil)(options.dto?.create); + const groups = !hasDto + ? [enums_1.CrudValidationGroups.CREATE] + : undefined; + const always = hasDto ? true : undefined; + const Model = hasDto ? options.dto?.create : options.model.type; + class BulkDtoImpl { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: Model, isArray: true }), + (0, class_validator_1.IsArray)({ groups, always }), + (0, class_validator_1.ArrayNotEmpty)({ groups, always }), + (0, class_validator_1.ValidateNested)({ each: true, groups, always }), + (0, class_transformer_1.Type)(() => Model) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], BulkDtoImpl.prototype, "bulk", void 0); + Object.defineProperty(BulkDtoImpl, "name", { + writable: false, + value: `CreateMany${options.model.type.name}Dto`, + }); + return BulkDtoImpl; + } + else { + return BulkDto; + } +}; +exports.createBulkDto = createBulkDto; + + +/***/ }), +/* 13 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(14), exports); +tslib_1.__exportStar(__webpack_require__(15), exports); + + +/***/ }), +/* 14 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudActions = void 0; +var CrudActions; +(function (CrudActions) { + CrudActions["ReadAll"] = "Read-All"; + CrudActions["ReadOne"] = "Read-One"; + CrudActions["CreateOne"] = "Create-One"; + CrudActions["CreateMany"] = "Create-Many"; + CrudActions["UpdateOne"] = "Update-One"; + CrudActions["ReplaceOne"] = "Replace-One"; + CrudActions["DeleteOne"] = "Delete-One"; + CrudActions["DeleteAll"] = "Delete-All"; + CrudActions["RecoverOne"] = "Recover-One"; +})(CrudActions || (exports.CrudActions = CrudActions = {})); + + +/***/ }), +/* 15 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudValidationGroups = void 0; +var CrudValidationGroups; +(function (CrudValidationGroups) { + CrudValidationGroups["CREATE"] = "CRUD-CREATE"; + CrudValidationGroups["UPDATE"] = "CRUD-UPDATE"; +})(CrudValidationGroups || (exports.CrudValidationGroups = CrudValidationGroups = {})); + + +/***/ }), +/* 16 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger"); + +/***/ }), +/* 17 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("class-validator"); + +/***/ }), +/* 18 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("class-transformer"); + +/***/ }), +/* 19 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.R = void 0; +const route_paramtypes_enum_1 = __webpack_require__(20); +const constants_1 = __webpack_require__(21); +const lodash_1 = __webpack_require__(8); +const constants_2 = __webpack_require__(22); +class R { + static set(metadataKey, metadataValue, target, propertyKey = undefined) { + if (propertyKey) { + Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey); + } + else { + Reflect.defineMetadata(metadataKey, metadataValue, target); + } + } + static get(metadataKey, target, propertyKey = undefined) { + return propertyKey + ? Reflect.getMetadata(metadataKey, target, propertyKey) + : Reflect.getMetadata(metadataKey, target); + } + static createCustomRouteArg(paramType, index, pipes = [], data = undefined) { + // @ts-ignore + return { + [`${paramType}${constants_1.CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: { + index, + factory: (_, ctx) => R.getContextRequest(ctx)[paramType], + data, + pipes, + }, + }; + } + static createRouteArg(paramTypes, index, pipes = [], data = undefined) { + return { + [`${paramTypes}:${index}`]: { + index, + pipes, + data, + }, + }; + } + static setDecorators(decorators, target, name) { + // this makes metadata decorator works + const decoratedDescriptor = Reflect.decorate(decorators, target, name, Reflect.getOwnPropertyDescriptor(target, name)); + // this makes proxy decorator works + Reflect.defineProperty(target, name, decoratedDescriptor); + } + static setParsedRequestArg(index) { + return R.createCustomRouteArg(constants_2.PARSED_CRUD_REQUEST_KEY, index); + } + static setBodyArg(index, pipes = []) { + return R.createRouteArg(route_paramtypes_enum_1.RouteParamtypes.BODY, index, pipes); + } + static setCrudOptions(options, target) { + R.set(constants_2.CRUD_OPTIONS_METADATA, options, target); + } + static setRoute(route, func) { + R.set(constants_1.PATH_METADATA, route.path, func); + R.set(constants_1.METHOD_METADATA, route.method, func); + } + static setInterceptors(interceptors, func) { + R.set(constants_1.INTERCEPTORS_METADATA, interceptors, func); + } + static setRouteArgs(metadata, target, name) { + R.set(constants_1.ROUTE_ARGS_METADATA, metadata, target, name); + } + static setRouteArgsTypes(metadata, target, name) { + R.set(constants_1.PARAMTYPES_METADATA, metadata, target, name); + } + static setAction(action, func) { + R.set(constants_2.ACTION_NAME_METADATA, action, func); + } + static setCrudAuthOptions(metadata, target) { + R.set(constants_2.CRUD_AUTH_OPTIONS_METADATA, metadata, target); + } + static getCrudAuthOptions(target) { + return R.get(constants_2.CRUD_AUTH_OPTIONS_METADATA, target); + } + static getCrudOptions(target) { + return R.get(constants_2.CRUD_OPTIONS_METADATA, target); + } + static getAction(func) { + return R.get(constants_2.ACTION_NAME_METADATA, func); + } + static getOverrideRoute(func) { + return R.get(constants_2.OVERRIDE_METHOD_METADATA, func); + } + static getInterceptors(func) { + return R.get(constants_1.INTERCEPTORS_METADATA, func) || []; + } + static getRouteArgs(target, name) { + return R.get(constants_1.ROUTE_ARGS_METADATA, target, name); + } + static getRouteArgsTypes(target, name) { + return R.get(constants_1.PARAMTYPES_METADATA, target, name) || []; + } + static getParsedBody(func) { + return R.get(constants_2.PARSED_BODY_METADATA, func); + } + static getContextRequest(ctx) { + return (0, lodash_1.isFunction)(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx; + } +} +exports.R = R; + + +/***/ }), +/* 20 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common/enums/route-paramtypes.enum"); + +/***/ }), +/* 21 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/common/constants"); + +/***/ }), +/* 22 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CRUD_AUTH_OPTIONS_METADATA = exports.CRUD_OPTIONS_METADATA = exports.PARSED_CRUD_REQUEST_KEY = exports.PARSED_BODY_METADATA = exports.OVERRIDE_METHOD_METADATA = exports.ACTION_NAME_METADATA = exports.FEATURE_NAME_METADATA = exports.REQUEST_PREFIX_EXTRA = exports.REQUEST_DELIM_STR = exports.REQUEST_DELIM = void 0; +exports.REQUEST_DELIM = "||"; +exports.REQUEST_DELIM_STR = ","; +exports.REQUEST_PREFIX_EXTRA = "extra."; +exports.FEATURE_NAME_METADATA = "CRUDX_FEATURE_NAME_METADATA"; +exports.ACTION_NAME_METADATA = "CRUDX_ACTION_NAME_METADATA"; +exports.OVERRIDE_METHOD_METADATA = "CRUDX_OVERRIDE_METHOD_METADATA"; +exports.PARSED_BODY_METADATA = "CRUDX_PARSED_BODY_METADATA"; +exports.PARSED_CRUD_REQUEST_KEY = "CRUDX_PARSED_CRUD_REQUEST_KEY"; +exports.CRUD_OPTIONS_METADATA = "CRUDX_CRUD_OPTIONS_METADATA"; +exports.CRUD_AUTH_OPTIONS_METADATA = "CRUDX_CRUD_AUTH_OPTIONS_METADATA"; + + +/***/ }), +/* 23 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.validateUUID = exports.validateParamOption = exports.validateNumeric = exports.validateSort = exports.validateJoin = exports.validateComparisonOperator = exports.validateCondition = exports.validateFields = exports.sortOrdersList = exports.comparisonOperatorsList = void 0; +const lodash_1 = __webpack_require__(8); +const exceptions_1 = __webpack_require__(24); +const types_1 = __webpack_require__(26); +const checkers_helper_1 = __webpack_require__(11); +exports.comparisonOperatorsList = [ + ...(0, lodash_1.keys)(types_1.CondOperator).map((n) => types_1.CondOperator[n]), +]; +exports.sortOrdersList = ["ASC", "DESC"]; +const sortOrdersListStr = exports.sortOrdersList.join(); +function validateFields(fields) { + if (!(0, checkers_helper_1.isArrayOfStrings)(fields)) { + throw new exceptions_1.RequestQueryException("Invalid fields. Array of strings expected"); + } +} +exports.validateFields = validateFields; +function validateCondition(val, cond, customOperators) { + if (!(0, lodash_1.isObject)(val) || !(0, checkers_helper_1.isStringFull)(val.field)) { + throw new exceptions_1.RequestQueryException(`Invalid field type in ${cond} condition. String expected`); + } + validateComparisonOperator(val.operator, customOperators); +} +exports.validateCondition = validateCondition; +function validateComparisonOperator(operator, customOperators = {}) { + const extendedComparisonOperatorsList = [ + ...exports.comparisonOperatorsList, + ...Object.keys(customOperators), + ]; + if (!extendedComparisonOperatorsList.includes(operator)) { + throw new exceptions_1.RequestQueryException(`Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`); + } +} +exports.validateComparisonOperator = validateComparisonOperator; +function validateJoin(join) { + if (!(0, lodash_1.isObject)(join) || !(0, checkers_helper_1.isStringFull)(join.field)) { + throw new exceptions_1.RequestQueryException("Invalid join field. String expected"); + } + if (!(0, lodash_1.isUndefined)(join.select) && !(0, checkers_helper_1.isArrayOfStringsFull)(join.select)) { + throw new exceptions_1.RequestQueryException("Invalid join select. Array of strings expected"); + } +} +exports.validateJoin = validateJoin; +function validateSort(sort) { + if (!(0, lodash_1.isObject)(sort) || !(0, checkers_helper_1.isStringFull)(sort.field)) { + throw new exceptions_1.RequestQueryException("Invalid sort field. String expected"); + } + if (!(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[0]) && + !(0, lodash_1.isEqual)(sort.order, exports.sortOrdersList[1])) { + throw new exceptions_1.RequestQueryException(`Invalid sort order. ${sortOrdersListStr} expected`); + } +} +exports.validateSort = validateSort; +function validateNumeric(val, num) { + if (!(0, lodash_1.isNumber)(val)) { + throw new exceptions_1.RequestQueryException(`Invalid ${num}. Number expected`); + } +} +exports.validateNumeric = validateNumeric; +function validateParamOption(options, name) { + if (!(0, lodash_1.isObject)(options)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. Invalid crud options`); + } + const option = options[name]; + if (option && option.disabled) { + return; + } + if (!(0, lodash_1.isObject)(option) || (0, lodash_1.isNil)(option.field) || (0, lodash_1.isNil)(option.type)) { + throw new exceptions_1.RequestQueryException(`Invalid param option in Crud`); + } +} +exports.validateParamOption = validateParamOption; +function validateUUID(str, name) { + const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + const uuidV4 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + if (!uuidV4.test(str) && !uuid.test(str)) { + throw new exceptions_1.RequestQueryException(`Invalid param ${name}. UUID string expected`); + } +} +exports.validateUUID = validateUUID; + + +/***/ }), +/* 24 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(25), exports); + + +/***/ }), +/* 25 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RequestQueryException = void 0; +class RequestQueryException extends Error { + constructor(msg) { + super(msg); + } +} +exports.RequestQueryException = RequestQueryException; + + +/***/ }), +/* 26 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(27), exports); +tslib_1.__exportStar(__webpack_require__(28), exports); +tslib_1.__exportStar(__webpack_require__(29), exports); +tslib_1.__exportStar(__webpack_require__(30), exports); + + +/***/ }), +/* 27 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 28 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 29 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 30 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CondOperator = void 0; +var CondOperator; +(function (CondOperator) { + CondOperator["EQUALS"] = "$eq"; + CondOperator["NOT_EQUALS"] = "$ne"; + CondOperator["GREATER_THAN"] = "$gt"; + CondOperator["LOWER_THAN"] = "$lt"; + CondOperator["GREATER_THAN_EQUALS"] = "$gte"; + CondOperator["LOWER_THAN_EQUALS"] = "$lte"; + CondOperator["STARTS"] = "$starts"; + CondOperator["ENDS"] = "$ends"; + CondOperator["CONTAINS"] = "$cont"; + CondOperator["EXCLUDES"] = "$excl"; + CondOperator["IN"] = "$in"; + CondOperator["NOT_IN"] = "$notin"; + CondOperator["IS_NULL"] = "$isnull"; + CondOperator["NOT_NULL"] = "$notnull"; + CondOperator["BETWEEN"] = "$between"; + CondOperator["EQUALS_LOW"] = "$eqL"; + CondOperator["NOT_EQUALS_LOW"] = "$neL"; + CondOperator["STARTS_LOW"] = "$startsL"; + CondOperator["ENDS_LOW"] = "$endsL"; + CondOperator["CONTAINS_LOW"] = "$contL"; + CondOperator["EXCLUDES_LOW"] = "$exclL"; + CondOperator["IN_LOW"] = "$inL"; + CondOperator["NOT_IN_LOW"] = "$notinL"; +})(CondOperator || (exports.CondOperator = CondOperator = {})); + + +/***/ }), +/* 31 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SerializeHelper = void 0; +const tslib_1 = __webpack_require__(2); +const class_transformer_1 = __webpack_require__(18); +const swagger_1 = __webpack_require__(16); +class SerializeHelper { + static createGetManyDto(dto, resourceName) { + class GetManyResponseDto { + } + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: dto, isArray: true }), + (0, class_transformer_1.Type)(() => dto) + // @ts-ignore + , + tslib_1.__metadata("design:type", Array) + ], GetManyResponseDto.prototype, "data", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "count", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "total", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "page", void 0); + tslib_1.__decorate([ + (0, swagger_1.ApiProperty)({ type: "number" }) + // @ts-ignore + , + tslib_1.__metadata("design:type", Number) + ], GetManyResponseDto.prototype, "pageCount", void 0); + Object.defineProperty(GetManyResponseDto, "name", { + writable: false, + value: `GetMany${resourceName}ResponseDto`, + }); + return GetManyResponseDto; + } + static createGetOneResponseDto(resourceName) { + class GetOneResponseDto { + } + Object.defineProperty(GetOneResponseDto, "name", { + writable: false, + value: `${resourceName}ResponseDto`, + }); + return GetOneResponseDto; + } +} +exports.SerializeHelper = SerializeHelper; + + +/***/ }), +/* 32 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Swagger = exports.swaggerPkgJson = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const services_1 = __webpack_require__(5); +const lodash_1 = __webpack_require__(8); +const reflection_helper_1 = __webpack_require__(19); +const safe_require_helper_1 = __webpack_require__(33); +const SWAGGER_CONSTANTS = tslib_1.__importStar(__webpack_require__(35)); +const swagger_1 = __webpack_require__(16); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const pluralize = __webpack_require__(36); +exports.swaggerPkgJson = (0, safe_require_helper_1.safeRequire)("@nestjs/swagger/package.json", () => __webpack_require__(37)); +class Swagger { + static operationsMap(modelName) { + return { + getManyBase: `Retrieve multiple ${pluralize(modelName)}`, + getOneBase: `Retrieve a single ${modelName}`, + createManyBase: `Create multiple ${pluralize(modelName)}`, + createOneBase: `Create a single ${modelName}`, + updateOneBase: `Update a single ${modelName}`, + replaceOneBase: `Replace a single ${modelName}`, + deleteOneBase: `Delete a single ${modelName}`, + recoverOneBase: `Recover one ${modelName}`, + }; + } + static setOperation(metadata, func) { + if (SWAGGER_CONSTANTS) { + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func); + } + } + static setParams(metadata, func) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func); + } + } + static setExtraModels(swaggerModels) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + const meta = Swagger.getExtraModels(swaggerModels.get); + const models = [ + ...meta, + ...(0, lodash_1.keys)(swaggerModels) + .map((name) => swaggerModels[name]) + .filter((one) => one && one.name !== swaggerModels.get.name), + ]; + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, models, swaggerModels.get); + } + } + static setResponseOk(metadata, func) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + reflection_helper_1.R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func); + } + } + static getOperation(func) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {} + : {}; + } + static getParams(func) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || [] + : []; + } + static getExtraModels(target) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || [] + : []; + } + static getResponseOk(func) { + /* istanbul ignore next */ + return SWAGGER_CONSTANTS + ? reflection_helper_1.R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {} + : {}; + } + static createResponseMeta(name, options, swaggerModels) { + const { routes, query } = options; + switch (name) { + case "getOneBase": + return { + [common_1.HttpStatus.OK]: { + description: "Get one base response", + type: swaggerModels.get, + }, + }; + case "getManyBase": + return { + [common_1.HttpStatus.OK]: query?.alwaysPaginate + ? { + description: "Get paginated response", + type: swaggerModels.getMany, + } + : { + description: "Get many base response", + schema: { + oneOf: [ + { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.getMany.name), + }, + { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.get.name), + }, + }, + ], + }, + }, + }; + case "createOneBase": + return { + [common_1.HttpStatus.CREATED]: { + description: "Get create one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }; + case "createManyBase": + return { + [common_1.HttpStatus.CREATED]: swaggerModels.createMany + ? { + description: "Get create many base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.createMany.name), + }, + } + : { + description: "Get create many base response", + schema: { + type: "array", + items: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.create.name), + }, + }, + }, + }; + case "deleteOneBase": + return { + [common_1.HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted + ? { + description: "Delete one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.delete.name), + }, + } + : { + description: "Delete one base response", + }, + }; + case "recoverOneBase": + return { + [common_1.HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered + ? { + description: "Recover one base response", + schema: { + $ref: (0, swagger_1.getSchemaPath)(swaggerModels.recover.name), + }, + } + : { + description: "Recover one base response", + }, + }; + default: + const dto = swaggerModels[name.split("OneBase")[0]]; + return { + [common_1.HttpStatus.OK]: { + description: "Response", + schema: { $ref: (0, swagger_1.getSchemaPath)(dto.name) }, + }, + }; + } + } + static createPathParamsMeta(options) { + return SWAGGER_CONSTANTS + ? (0, lodash_1.keys)(options).map((param) => ({ + name: param, + required: true, + in: "path", + type: options[param].type === "number" ? Number : String, + enum: (0, lodash_1.isArray)(options[param]?.enum) + ? Object.values(options[param].enum) + : undefined, + })) + : []; + } + static createQueryParamsMeta(name, options) { + if (!SWAGGER_CONSTANTS) { + return []; + } + const { delim: d, delimStr: coma, fields, search, filter, or, join, sort, limit, offset, page, cache, includeDeleted, } = Swagger.getQueryParamsNames(); + const docsLink = (a) => + // TODO: to modify + `Docs`; + const fieldsMetaBase = { + name: fields, + description: `Selects resource fields. ${docsLink("select")}`, + required: false, + in: "query", + }; + const fieldsMeta = { + ...fieldsMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: false, + }; + const searchMetaBase = { + name: search, + description: `Adds search condition. ${docsLink("search")}`, + required: false, + in: "query", + }; + const searchMeta = { ...searchMetaBase, schema: { type: "string" } }; + const filterMetaBase = { + name: filter, + description: `Adds filter condition. ${docsLink("filter")}`, + required: false, + in: "query", + }; + const filterMeta = { + ...filterMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const orMetaBase = { + name: or, + description: `Adds OR condition. ${docsLink("or")}`, + required: false, + in: "query", + }; + const orMeta = { + ...orMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const sortMetaBase = { + name: sort, + description: `Adds sort by field. ${docsLink("sort")}`, + required: false, + in: "query", + }; + const sortMeta = { + ...sortMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const joinMetaBase = { + name: join, + description: `Adds relational resources. ${docsLink("join")}`, + required: false, + in: "query", + }; + const joinMeta = { + ...joinMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + const limitMetaBase = { + name: limit, + description: `Limit amount of resources. ${docsLink("limit")}`, + required: false, + in: "query", + }; + const limitMeta = { ...limitMetaBase, schema: { type: "integer" } }; + const offsetMetaBase = { + name: offset, + description: `Offset amount of resources. ${docsLink("offset")}`, + required: false, + in: "query", + }; + const offsetMeta = { ...offsetMetaBase, schema: { type: "integer" } }; + const pageMetaBase = { + name: page, + description: `Page portion of resources. ${docsLink("page")}`, + required: false, + in: "query", + }; + const pageMeta = { ...pageMetaBase, schema: { type: "integer" } }; + const cacheMetaBase = { + name: cache, + description: `Reset cache (if was enabled). ${docsLink("cache")}`, + required: false, + in: "query", + }; + const cacheMeta = { + ...cacheMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + const includeDeletedMetaBase = { + name: includeDeleted, + description: `Include deleted. ${docsLink("includeDeleted")}`, + required: false, + in: "query", + }; + const includeDeletedMeta = { + ...includeDeletedMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + switch (name) { + case "getManyBase": + return options.query?.softDelete + ? [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + includeDeletedMeta, + ] + : [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + ]; + case "getOneBase": + return options.query?.softDelete + ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta] + : [fieldsMeta, joinMeta, cacheMeta]; + default: + return []; + } + } + static getQueryParamsNames() { + const qbOptions = services_1.QueryBuilderService.getOptions(); + const name = (n) => { + const selected = (0, lodash_1.get)(qbOptions, `paramNamesMap[${n}]`); + return (0, lodash_1.isString)(selected) ? selected : selected?.[0]; + }; + return { + delim: qbOptions.delim, + delimStr: qbOptions.delimStr, + fields: name("fields"), + search: name("search"), + filter: name("filter"), + or: name("or"), + join: name("join"), + sort: name("sort"), + limit: name("limit"), + offset: name("offset"), + page: name("page"), + cache: name("cache"), + includeDeleted: name("includeDeleted"), + }; + } +} +exports.Swagger = Swagger; + + +/***/ }), +/* 33 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.safeRequire = void 0; +function safeRequire(path, loader) { + try { + return loader ? loader() : __webpack_require__(34)(path); + } + catch (_) { + return null; + } +} +exports.safeRequire = safeRequire; + + +/***/ }), +/* 34 */ +/***/ ((module) => { + +function webpackEmptyContext(req) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; +} +webpackEmptyContext.keys = () => ([]); +webpackEmptyContext.resolve = webpackEmptyContext; +webpackEmptyContext.id = 34; +module.exports = webpackEmptyContext; + +/***/ }), +/* 35 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger/dist/constants"); + +/***/ }), +/* 36 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("pluralize"); + +/***/ }), +/* 37 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/swagger/package.json"); + +/***/ }), +/* 38 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.QueryBuilderService = void 0; +const lodash_1 = __webpack_require__(8); +const qs_1 = __webpack_require__(39); +const helpers_1 = __webpack_require__(10); +const constants_1 = __webpack_require__(22); +class QueryBuilderService { + constructor() { + this.paramNames = {}; + this.queryObject = {}; + this.queryString = ""; + this.setParamNames(); + } + static setOptions(options) { + QueryBuilderService._options = { + ...QueryBuilderService._options, + ...options, + paramNamesMap: { + ...QueryBuilderService._options.paramNamesMap, + ...(options.paramNamesMap ? options.paramNamesMap : {}), + }, + }; + } + static getOptions() { + return QueryBuilderService._options; + } + static create(params, customOperators = {}) { + const qb = new QueryBuilderService(); + return (0, lodash_1.isObject)(params) + ? qb.createFromParams(params, customOperators) + : qb; + } + get options() { + return QueryBuilderService._options; + } + setParamNames() { + if (QueryBuilderService._options.paramNamesMap) { + Object.keys(QueryBuilderService._options.paramNamesMap).forEach((key) => { + const name = (0, lodash_1.get)(QueryBuilderService._options.paramNamesMap, key); + this.paramNames[key] = (0, lodash_1.isString)(name) + ? name + : name[0]; + }); + } + } + query(encode = true) { + if (this.queryObject[this.paramNames["search"]]) { + this.queryObject[this.paramNames["filter"]] = undefined; + this.queryObject[this.paramNames["or"]] = undefined; + } + this.queryString = (0, qs_1.stringify)(this.queryObject, { encode }); + return this.queryString; + } + select(fields) { + if (!(0, lodash_1.isNil)(fields) && (0, helpers_1.isArrayFull)(fields)) { + (0, helpers_1.validateFields)(fields); + this.queryObject[this.paramNames["fields"]] = fields.join(this.options.delimStr); + } + return this; + } + search(s) { + if (!(0, lodash_1.isNil)(s) && (0, lodash_1.isObject)(s)) { + this.queryObject[this.paramNames["search"]] = JSON.stringify(s); + } + return this; + } + setFilter(f, customOperators = {}) { + this.setCondition(f, "filter", customOperators); + return this; + } + setOr(f, customOperators = {}) { + this.setCondition(f, "or", customOperators); + return this; + } + setJoin(j) { + if (!(0, lodash_1.isNil)(j)) { + const param = this.checkQueryObjectParam("join", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(j) && !(0, lodash_1.isString)(j[0]) + ? j.map((o) => this.addJoin(o)) + : [this.addJoin(j)]), + ]; + } + return this; + } + sortBy(s) { + if (!(0, lodash_1.isNil)(s)) { + const param = this.checkQueryObjectParam("sort", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(s) && !(0, lodash_1.isString)(s[0]) + ? s.map((o) => this.addSortBy(o)) + : [this.addSortBy(s)]), + ]; + } + return this; + } + setLimit(n) { + this.setNumeric(n, "limit"); + return this; + } + setOffset(n) { + this.setNumeric(n, "offset"); + return this; + } + setPage(n) { + this.setNumeric(n, "page"); + return this; + } + resetCache() { + this.setNumeric(0, "cache"); + return this; + } + setIncludeDeleted(n) { + this.setNumeric(n, "includeDeleted"); + return this; + } + cond(f, cond = "search", customOperators = {}) { + const filter = Array.isArray(f) + ? { field: f[0], operator: f[1], value: f[2] } + : f; + (0, helpers_1.validateCondition)(filter, cond, customOperators); + const d = this.options.delim; + return (filter.field + + d + + filter.operator + + ((0, helpers_1.hasValue)(filter.value) ? d + filter.value : "")); + } + addJoin(j) { + const join = Array.isArray(j) + ? { field: j[0], select: j[1] } + : j; + (0, helpers_1.validateJoin)(join); + const d = this.options.delim; + const ds = this.options.delimStr; + return (join.field + + ((0, helpers_1.isArrayFull)(join.select) ? d + (join.select?.join(ds) ?? "") : "")); + } + addSortBy(s) { + const sort = Array.isArray(s) ? { field: s[0], order: s[1] } : s; + (0, helpers_1.validateSort)(sort); + const ds = this.options.delimStr; + return sort.field + ds + sort.order; + } + createFromParams(params, customOperators) { + this.select(params.fields); + this.search(params.search); + this.setFilter(params.filter, customOperators); + this.setOr(params.or, customOperators); + this.setJoin(params.join); + this.setLimit(params.limit); + this.setOffset(params.offset); + this.setPage(params.page); + this.sortBy(params.sort); + if (params.resetCache) { + this.resetCache(); + } + this.setIncludeDeleted(params.includeDeleted); + return this; + } + checkQueryObjectParam(cond, defaults) { + const param = this.paramNames[cond]; + if ((0, lodash_1.isNil)(this.queryObject[param]) && !(0, lodash_1.isUndefined)(defaults)) { + this.queryObject[param] = defaults; + } + return param; + } + setCondition(f, cond, customOperators) { + if (!(0, lodash_1.isNil)(f)) { + const param = this.checkQueryObjectParam(cond, []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(f) && !(0, lodash_1.isString)(f[0]) + ? f.map((o) => this.cond(o, cond, customOperators)) + : [ + this.cond(f, cond, customOperators), + ]), + ]; + } + } + setNumeric(n, cond) { + if (!(0, lodash_1.isNil)(n)) { + (0, helpers_1.validateNumeric)(n, cond); + this.queryObject[this.paramNames[cond]] = n; + } + } +} +exports.QueryBuilderService = QueryBuilderService; +QueryBuilderService._options = { + delim: constants_1.REQUEST_DELIM, + delimStr: constants_1.REQUEST_DELIM_STR, + paramNamesMap: { + fields: ["fields", "select"], + search: "s", + filter: "filter", + or: "or", + join: "join", + sort: "sort", + limit: ["limit", "per_page"], + offset: "offset", + page: "page", + cache: "cache", + includeDeleted: "include_deleted", + extra: constants_1.REQUEST_PREFIX_EXTRA, + }, +}; + + +/***/ }), +/* 39 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("qs"); + +/***/ }), +/* 40 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("deepmerge"); + +/***/ }), +/* 41 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.QueryParserService = void 0; +const lodash_1 = __webpack_require__(8); +const exceptions_1 = __webpack_require__(24); +const types_1 = __webpack_require__(26); +const query_builder_service_1 = __webpack_require__(38); +const helpers_1 = __webpack_require__(10); +const constants_1 = __webpack_require__(22); +class QueryParserService { + constructor() { + this.fields = []; + this.paramsFilter = []; + this.authPersist = undefined; + this.classTransformOptions = undefined; + this.search = undefined; + this.filter = []; + this.or = []; + this.join = []; + this.sort = []; + this.extra = {}; + this._paramNames = []; + this._paramsOptions = {}; + } + get _options() { + return query_builder_service_1.QueryBuilderService.getOptions(); + } + static create() { + return new QueryParserService(); + } + getParsed() { + return { + fields: this.fields, + paramsFilter: this.paramsFilter, + authPersist: this.authPersist, + classTransformOptions: this.classTransformOptions, + search: this.search, + filter: this.filter, + or: this.or, + join: this.join, + sort: this.sort, + limit: this.limit, + offset: this.offset, + page: this.page, + cache: this.cache, + includeDeleted: this.includeDeleted, + extra: this.extra, + }; + } + setAuthPersist(persist = {}) { + this.authPersist = persist || /* istanbul ignore next */ {}; + } + setClassTransformOptions(options = {}) { + this.classTransformOptions = options || /* istanbul ignore next */ {}; + } + convertFilterToSearch(filter) { + const isEmptyValue = { + isnull: true, + notnull: true, + }; + return filter + ? { + [filter.field]: { + [filter.operator]: (0, lodash_1.has)(isEmptyValue, filter.operator) + ? (0, lodash_1.get)(isEmptyValue, filter.operator) + : filter.value, + }, + } + : /* istanbul ignore next */ {}; + } + parseQuery(query, customOperators = {}) { + if ((0, lodash_1.isObject)(query)) { + const paramNames = (0, lodash_1.keys)(query); + if (!(0, lodash_1.isEmpty)(paramNames)) { + this._query = query; + this._paramNames = paramNames; + const searchData = this._query[this.getParamNames("search")[0]]; + this.search = this.parseSearchQueryParam(searchData); + if ((0, lodash_1.isNil)(this.search)) { + this.filter = this.parseQueryParam("filter", this.conditionParser.bind(this, "filter", customOperators)); + this.or = this.parseQueryParam("or", this.conditionParser.bind(this, "or", customOperators)); + } + this.fields = + this.parseQueryParam("fields", this.fieldsParser.bind(this))[0] || []; + this.join = this.parseQueryParam("join", this.joinParser.bind(this)); + this.sort = this.parseQueryParam("sort", this.sortParser.bind(this)); + this.limit = this.parseQueryParam("limit", this.numericParser.bind(this, "limit"))[0]; + this.offset = this.parseQueryParam("offset", this.numericParser.bind(this, "offset"))[0]; + this.page = this.parseQueryParam("page", this.numericParser.bind(this, "page"))[0]; + this.cache = this.parseQueryParam("cache", this.numericParser.bind(this, "cache"))[0]; + this.includeDeleted = this.parseQueryParam("includeDeleted", this.numericParser.bind(this, "includeDeleted"))[0]; + this.extra = this.parseExtraFromQueryParam(); + } + } + return this; + } + parseParams(params, options) { + if ((0, lodash_1.isObject)(params)) { + const paramNames = (0, lodash_1.keys)(params); + if (!(0, lodash_1.isNil)(paramNames)) { + this._params = params; + this._paramsOptions = options; + this.paramsFilter = paramNames + .map((name) => this.paramParser(name)) + .filter((filter) => filter); + } + } + return this; + } + getParamNames(type) { + return this._paramNames.filter((p) => { + const name = (0, lodash_1.get)(this._options.paramNamesMap, type, ""); + return (0, lodash_1.isString)(name) + ? name === p + : name.some((m) => m === p); + }); + } + getParamValues(value, parser) { + if ((0, helpers_1.isStringFull)(value)) { + return [parser.call(this, value)]; + } + if ((0, helpers_1.isArrayFull)(value)) { + return value.map((val) => parser(val)); + } + return []; + } + parseQueryParam(type, parser) { + const param = this.getParamNames(type); + if ((0, helpers_1.isArrayFull)(param)) { + // @ts-ignore + return param.reduce( + // @ts-ignore + (a, name) => [ + ...a, + ...this.getParamValues(this._query[name], parser), + ], []); + } + return []; + } + parseExtraFromQueryParam() { + const extraParam = (0, lodash_1.get)(this._options.paramNamesMap, "extra", []); + const params = Array.isArray(extraParam) + ? extraParam + : [extraParam]; + const extraKeys = (0, lodash_1.keys)(this._query || {}) + .filter((k) => params.find((p) => k?.startsWith(p))) + .reduce((o, k) => { + const key = k.replace(constants_1.REQUEST_PREFIX_EXTRA, ""); + this.parseDotChainToObject(this._query[k], key, o); + return o; + }, {}); + return (0, lodash_1.keys)(extraKeys).length > 0 ? extraKeys : undefined; + } + /** + * Build an object from data and composite key. + * + * @param data to used on parse workflow + * @param key composite key as 'foo.bar.hero' + * @param result object with parsed "data" and "key" structure + * @private + */ + parseDotChainToObject(data, key, result = {}) { + if (key.includes(".")) { + const keys = key.split("."); + const firstKey = keys.shift(); + (0, lodash_1.set)(result, firstKey, {}); + this.parseDotChainToObject(data, keys.join("."), (0, lodash_1.get)(result, firstKey)); + } + else { + (0, lodash_1.set)(result, key, this.parseValue(data)); + } + } + parseValue(val) { + try { + const parsed = JSON.parse(val); + // throw new Error('Don\'t support object now') + if ((!(0, lodash_1.isDate)(parsed) && (0, lodash_1.isObject)(parsed)) || + // JS cannot handle big numbers. Leave it as a string to prevent data loss + (typeof parsed === "number" && + parsed.toLocaleString("fullwide", { useGrouping: false }) !== val)) { + return val; + } + return parsed; + } + catch (_) { + if ((0, helpers_1.isDateString)(val)) { + return new Date(val); + } + return val; + } + } + parseValues(values) { + return (0, helpers_1.isArrayFull)(values) + ? values.map((v) => this.parseValue(v)) + : this.parseValue(values); + } + parseSearchQueryParam(d) { + if ((0, lodash_1.isNil)(d)) { + return undefined; + } + try { + const data = JSON.parse(d); + if (!(0, lodash_1.isObject)(data)) { + throw new Error(); + } + return data; + } + catch (_) { + throw new exceptions_1.RequestQueryException("Invalid search param. JSON expected"); + } + } + fieldsParser(data) { + // @ts-ignore + return data.split(this._options.delimStr); + } + conditionParser(cond, customOperators, data) { + const isArrayValue = [ + types_1.CondOperator.IN, + types_1.CondOperator.NOT_IN, + types_1.CondOperator.BETWEEN, + types_1.CondOperator.IN_LOW, + types_1.CondOperator.NOT_IN_LOW, + ].concat(Object.keys(customOperators).filter((op) => customOperators[op].isArray)); + const isEmptyValue = [ + types_1.CondOperator.IS_NULL, + types_1.CondOperator.NOT_NULL, + ]; + // @ts-ignore + const param = data.split(this._options.delim); + const field = param[0]; + const operator = param[1]; + let value = param[2] || ""; + if (isArrayValue.some((name) => name === operator)) { + // @ts-ignore + value = value.split(this._options.delimStr); + } + value = this.parseValues(value); + if (!isEmptyValue.some((name) => name === operator) && + !(0, helpers_1.hasValue)(value)) { + throw new exceptions_1.RequestQueryException(`Invalid ${cond} value`); + } + const condition = { field, operator, value }; + (0, helpers_1.validateCondition)(condition, cond, customOperators); + return condition; + } + joinParser(data) { + // @ts-ignore + const param = data.split(this._options.delim); + const join = { + field: param[0], + select: (0, helpers_1.isStringFull)(param[1]) + ? // @ts-ignore + param[1].split(this._options.delimStr) + : undefined, + }; + (0, helpers_1.validateJoin)(join); + return join; + } + sortParser(data) { + const param = data.split(this._options.delimStr); + const sort = { + field: param[0], + order: param[1], + }; + (0, helpers_1.validateSort)(sort); + return sort; + } + numericParser(num, data) { + const val = this.parseValue(data); + (0, helpers_1.validateNumeric)(val, num); + return val; + } + paramParser(name) { + (0, helpers_1.validateParamOption)(this._paramsOptions, name); + const option = this._paramsOptions[name]; + if (option.disabled) { + return undefined; + } + let value = this._params[name]; + switch (option.type) { + case "number": + value = this.parseValue(value); + (0, helpers_1.validateNumeric)(value, `param ${name}`); + break; + case "uuid": + (0, helpers_1.validateUUID)(value, name); + break; + default: + break; + } + return { field: option.field, operator: "$eq", value }; + } +} +exports.QueryParserService = QueryParserService; + + +/***/ }), +/* 42 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RoutesFactoryService = void 0; +const common_1 = __webpack_require__(7); +const route_paramtypes_enum_1 = __webpack_require__(20); +const lodash_1 = __webpack_require__(8); +const helpers_1 = __webpack_require__(10); +const enums_1 = __webpack_require__(13); +const interceptors_1 = __webpack_require__(43); +const services_1 = __webpack_require__(5); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = __webpack_require__(40); +class RoutesFactoryService { + constructor(target, options) { + this.target = target; + this.swaggerModels = {}; + this.options = options; + this.create(); + } + /* istanbul ignore next */ + static create(target, options) { + return new RoutesFactoryService(target, options); + } + get targetProto() { + return this.target.prototype; + } + get modelName() { + return this.options.model.type.name; + } + get modelType() { + return this.options.model.type; + } + get actionsMap() { + return { + getManyBase: enums_1.CrudActions.ReadAll, + getOneBase: enums_1.CrudActions.ReadOne, + createManyBase: enums_1.CrudActions.CreateMany, + createOneBase: enums_1.CrudActions.CreateOne, + updateOneBase: enums_1.CrudActions.UpdateOne, + deleteOneBase: enums_1.CrudActions.DeleteOne, + replaceOneBase: enums_1.CrudActions.ReplaceOne, + recoverOneBase: enums_1.CrudActions.RecoverOne, + }; + } + create() { + const routesSchema = this.getRoutesSchema(); + this.mergeOptions(); + this.setResponseModels(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + mergeOptions() { + // merge auth config + const authOptions = helpers_1.R.getCrudAuthOptions(this.target); + this.options.auth = (0, helpers_1.isObjectFull)(authOptions) ? authOptions : {}; + if ((0, lodash_1.isUndefined)(this.options.auth.property)) { + this.options.auth.property = services_1.CrudConfigService.config?.auth?.property; + } + if ((0, lodash_1.isUndefined)(this.options.auth.groups)) { + this.options.auth.groups = services_1.CrudConfigService.config?.auth?.groups; + } + if ((0, lodash_1.isUndefined)(this.options.auth.classTransformOptions)) { + // @ts-ignore + this.options.auth.classTransformOptions = + services_1.CrudConfigService.config.auth?.classTransformOptions; + } + // merge query config + const query = (0, helpers_1.isObjectFull)(this.options.query) + ? this.options.query + : {}; + this.options.query = { ...services_1.CrudConfigService.config.query, ...query }; + // merge routes config + const routes = (0, helpers_1.isObjectFull)(this.options.routes) + ? this.options.routes + : {}; + this.options.routes = deepmerge(services_1.CrudConfigService.config.routes || {}, routes, { + // @ts-ignore + arrayMerge: (a, b, c) => b, + }); + // merge operators config + const operators = (0, helpers_1.isObjectFull)(this.options.operators) + ? this.options.operators + : {}; + this.options.operators = (deepmerge(services_1.CrudConfigService.config?.operators, operators)); + // set params + this.options.params = (0, helpers_1.isObjectFull)(this.options.params) + ? this.options.params + : (0, helpers_1.isObjectFull)(services_1.CrudConfigService.config.params) + ? services_1.CrudConfigService.config.params + : {}; + const hasPrimary = this.getPrimaryParams().length > 0; + if (!hasPrimary) { + // @ts-ignore + this.options.params["id"] = { + field: "id", + type: "number", + primary: true, + }; + } + // set dto + if (!(0, helpers_1.isObjectFull)(this.options.dto)) { + this.options.dto = {}; + } + // set serialize + const serialize = (0, helpers_1.isObjectFull)(this.options.serialize) + ? this.options.serialize + : {}; + this.options.serialize = { + ...services_1.CrudConfigService.config.serialize, + ...serialize, + }; + this.options.serialize.get = (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : this.options.serialize.get || this.modelType; + this.options.serialize.getMany = (0, helpers_1.isFalse)(this.options.serialize.getMany) + ? false + : this.options.serialize.getMany + ? this.options.serialize.getMany + : (0, helpers_1.isFalse)(this.options.serialize.get) + ? false + : helpers_1.SerializeHelper.createGetManyDto(this.options.serialize.get, this.modelName); + this.options.serialize.create = (0, helpers_1.isFalse)(this.options.serialize.create) + ? false + : this.options.serialize.create || this.modelType; + this.options.serialize.update = (0, helpers_1.isFalse)(this.options.serialize.update) + ? false + : this.options.serialize.update || this.modelType; + this.options.serialize.replace = (0, helpers_1.isFalse)(this.options.serialize.replace) + ? false + : this.options.serialize.replace || this.modelType; + this.options.serialize.delete = + (0, helpers_1.isFalse)(this.options.serialize.delete) || + !this.options.routes?.deleteOneBase?.returnDeleted + ? false + : this.options.serialize.delete || this.modelType; + helpers_1.R.setCrudOptions(this.options, this.target); + } + getRoutesSchema() { + return [ + { + name: "getOneBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: true, + }, + { + name: "getManyBase", + path: "/", + method: common_1.RequestMethod.GET, + enable: false, + override: false, + withParams: false, + }, + { + name: "createOneBase", + path: "/", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "createManyBase", + path: "/bulk", + method: common_1.RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "updateOneBase", + path: "/", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + { + name: "replaceOneBase", + path: "/", + method: common_1.RequestMethod.PUT, + enable: false, + override: false, + withParams: true, + }, + { + name: "deleteOneBase", + path: "/", + method: common_1.RequestMethod.DELETE, + enable: false, + override: false, + withParams: true, + }, + { + name: "recoverOneBase", + path: "/recover", + method: common_1.RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + ]; + } + getManyBase(name) { + this.targetProto[name] = function getManyBase(req) { + return this.service.getMany(req); + }; + } + getOneBase(name) { + this.targetProto[name] = function getOneBase(req) { + return this.service.getOne(req); + }; + } + createOneBase(name) { + this.targetProto[name] = function createOneBase(req, dto) { + return this.service.createOne(req, dto); + }; + } + createManyBase(name) { + this.targetProto[name] = function createManyBase(req, dto) { + return this.service.createMany(req, dto); + }; + } + updateOneBase(name) { + this.targetProto[name] = function updateOneBase(req, dto) { + return this.service.updateOne(req, dto); + }; + } + replaceOneBase(name) { + this.targetProto[name] = function replaceOneBase(req, dto) { + return this.service.replaceOne(req, dto); + }; + } + deleteOneBase(name) { + this.targetProto[name] = function deleteOneBase(req) { + return this.service.deleteOne(req); + }; + } + recoverOneBase(name) { + this.targetProto[name] = function recoverOneBase(req) { + return this.service.recoverOne(req); + }; + } + canCreateRoute(name) { + const only = this.options.routes?.only; + const exclude = this.options.routes?.exclude; + // include recover route only for models with soft delete option + if (name === "recoverOneBase" && this.options.query?.softDelete !== true) { + return false; + } + if ((0, helpers_1.isArrayFull)(only)) { + // @ts-ignore + return only.some((route) => route === name); + } + if ((0, helpers_1.isArrayFull)(exclude)) { + // @ts-ignore + return !exclude.some((route) => route === name); + } + return true; + } + setResponseModels() { + const modelType = (0, lodash_1.isFunction)(this.modelType) + ? this.modelType + : helpers_1.SerializeHelper.createGetOneResponseDto(this.modelName); + this.swaggerModels.get = (0, lodash_1.isFunction)(this.options.serialize?.get) + ? this.options.serialize?.get + : modelType; + this.swaggerModels.getMany = + this.options.serialize?.getMany || + helpers_1.SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName); + this.swaggerModels.create = (0, lodash_1.isFunction)(this.options.serialize?.create) + ? this.options.serialize?.create + : modelType; + this.swaggerModels.update = (0, lodash_1.isFunction)(this.options.serialize?.update) + ? this.options.serialize?.update + : modelType; + this.swaggerModels.replace = (0, lodash_1.isFunction)(this.options.serialize?.replace) + ? this.options.serialize?.replace + : modelType; + this.swaggerModels.delete = (0, lodash_1.isFunction)(this.options.serialize?.delete) + ? this.options.serialize?.delete + : modelType; + this.swaggerModels.recover = (0, lodash_1.isFunction)(this.options.serialize?.recover) + ? this.options.serialize?.recover + : modelType; + helpers_1.Swagger.setExtraModels(this.swaggerModels); + } + createRoutes(routesSchema) { + const primaryParams = this.getPrimaryParams().filter((param) => !this.options.params?.[param]?.disabled); + routesSchema.forEach((route) => { + if (this.canCreateRoute(route.name)) { + // create base method + this[route.name](route.name); + route.enable = true; + // set metadata + this.setBaseRouteMeta(route.name); + } + if (route.withParams && primaryParams.length > 0) { + route.path = + route.path !== "/" + ? `${primaryParams + .map((param) => `/:${param}`) + .join("")}${route.path}` + : primaryParams + .map((param) => `/:${param}`) + .join(""); + } + }); + } + overrideRoutes(routesSchema) { + Object.getOwnPropertyNames(this.targetProto).forEach((name) => { + const override = helpers_1.R.getOverrideRoute(this.targetProto[name]); + const route = routesSchema.find((r) => (0, lodash_1.isEqual)(r.name, override)); + if (override && route && route.enable) { + // get metadata + const interceptors = helpers_1.R.getInterceptors(this.targetProto[name]); + const baseInterceptors = helpers_1.R.getInterceptors(this.targetProto[override]); + const baseAction = helpers_1.R.getAction(this.targetProto[override]); + const operation = helpers_1.Swagger.getOperation(this.targetProto[name]); + const baseOperation = helpers_1.Swagger.getOperation(this.targetProto[override]); + const swaggerParams = helpers_1.Swagger.getParams(this.targetProto[name]); + const baseSwaggerParams = helpers_1.Swagger.getParams(this.targetProto[override]); + const responseOk = helpers_1.Swagger.getResponseOk(this.targetProto[name]); + const baseResponseOk = helpers_1.Swagger.getResponseOk(this.targetProto[override]); + // set metadata + helpers_1.R.setInterceptors([...baseInterceptors, ...interceptors], this.targetProto[name]); + helpers_1.R.setAction(baseAction, this.targetProto[name]); + helpers_1.Swagger.setOperation({ ...baseOperation, ...operation }, this.targetProto[name]); + helpers_1.Swagger.setParams([...baseSwaggerParams, ...swaggerParams], this.targetProto[name]); + helpers_1.Swagger.setResponseOk({ ...baseResponseOk, ...responseOk }, this.targetProto[name]); + this.overrideParsedBodyDecorator(override, name); + // enable route + helpers_1.R.setRoute(route, this.targetProto[name]); + route.override = true; + } + }); + } + enableRoutes(routesSchema) { + routesSchema.forEach((route) => { + if (!route.override && route.enable) { + helpers_1.R.setRoute(route, this.targetProto[route.name]); + } + }); + } + overrideParsedBodyDecorator(override, name) { + const allowed = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + const withBody = (0, helpers_1.isIn)(override, allowed); + const parsedBody = helpers_1.R.getParsedBody(this.targetProto[name]); + if (withBody && parsedBody) { + const baseKey = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:1`; + const key = `${route_paramtypes_enum_1.RouteParamtypes.BODY}:${parsedBody.index}`; + const baseRouteArgs = helpers_1.R.getRouteArgs(this.target, override); + const routeArgs = helpers_1.R.getRouteArgs(this.target, name); + const baseBodyArg = baseRouteArgs[baseKey]; + helpers_1.R.setRouteArgs({ + ...routeArgs, + [key]: { + ...baseBodyArg, + index: parsedBody.index, + }, + }, this.target, name); + /* istanbul ignore else */ + if ((0, lodash_1.isEqual)(override, "createManyBase")) { + const paramTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, name); + const metatype = paramTypes[parsedBody.index]; + const types = [String, Boolean, Number, Array, Object]; + const toCopy = (0, helpers_1.isIn)(metatype, types) || (0, lodash_1.isNil)(metatype); + if (toCopy) { + const baseParamTypes = helpers_1.R.getRouteArgsTypes(this.targetProto, override); + const baseMetatype = baseParamTypes[1]; + paramTypes.splice(parsedBody.index, 1, baseMetatype); + helpers_1.R.setRouteArgsTypes(paramTypes, this.targetProto, name); + } + } + } + } + getPrimaryParams() { + return (0, lodash_1.keys)(this.options.params).filter((param) => this.options.params?.[param] && this.options.params[param].primary); + } + setBaseRouteMeta(name) { + this.setRouteArgs(name); + this.setRouteArgsTypes(name); + this.setInterceptors(name); + this.setAction(name); + this.setSwaggerOperation(name); + this.setSwaggerPathParams(name); + this.setSwaggerQueryParams(name); + this.setSwaggerResponseOk(name); + // set decorators after Swagger so metadata can be overwritten + this.setDecorators(name); + } + setRouteArgs(name) { + let rest = {}; + const routes = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + if ((0, helpers_1.isIn)(name, routes)) { + const action = this.routeNameAction(name); + const hasDto = !(0, lodash_1.isNil)((0, lodash_1.get)(this.options, `dto.${action}`)); + const { UPDATE, CREATE } = enums_1.CrudValidationGroups; + const groupEnum = (0, helpers_1.isIn)(name, [ + "updateOneBase", + "replaceOneBase", + ]) + ? UPDATE + : CREATE; + const group = !hasDto + ? groupEnum + : undefined; + rest = helpers_1.R.setBodyArg(1, [(0, helpers_1.getValidationPipe)(this.options, group)]); + } + helpers_1.R.setRouteArgs({ ...helpers_1.R.setParsedRequestArg(0), ...rest }, this.target, name); + } + setRouteArgsTypes(name) { + switch (true) { + case (0, lodash_1.isEqual)(name, "createManyBase"): + const bulkDto = (0, helpers_1.createBulkDto)(this.options); + helpers_1.R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name); + break; + case (0, helpers_1.isIn)(name, ["createOneBase", "updateOneBase", "replaceOneBase"]): + const action = this.routeNameAction(name); + const dto = (0, lodash_1.get)(this.options, `dto.${action}`, this.modelType); + helpers_1.R.setRouteArgsTypes([Object, dto], this.targetProto, name); + break; + default: + helpers_1.R.setRouteArgsTypes([Object], this.targetProto, name); + } + } + setInterceptors(name) { + const interceptors = (0, lodash_1.get)(this.options, `routes.${name}.interceptors`, []); + helpers_1.R.setInterceptors([ + interceptors_1.CrudRequestInterceptor, + interceptors_1.CrudResponseInterceptor, + ...((0, helpers_1.isArrayFull)(interceptors) ? interceptors : []), + ], this.targetProto[name]); + } + setDecorators(name) { + const decorators = (0, lodash_1.get)(this.options, `routes.${name}.decorators`, []); + helpers_1.R.setDecorators((0, helpers_1.isArrayFull)(decorators) ? decorators : [], this.targetProto, name); + } + setAction(name) { + helpers_1.R.setAction(this.actionsMap[name], this.targetProto[name]); + } + setSwaggerOperation(name) { + const summary = helpers_1.Swagger.operationsMap(this.modelName)[name]; + const operationId = name + this.targetProto.constructor.name + this.modelName; + helpers_1.Swagger.setOperation({ summary, operationId }, this.targetProto[name]); + } + setSwaggerPathParams(name) { + const metadata = helpers_1.Swagger.getParams(this.targetProto[name]); + const withoutPrimary = [ + "createManyBase", + "createOneBase", + "getManyBase", + ]; + const removePrimary = (0, helpers_1.isIn)(name, withoutPrimary); + const params = (0, lodash_1.keys)(this.options.params) + .filter((key) => !(0, lodash_1.get)(this.options, `params.${key}.disabled`)) + .filter((key) => !(removePrimary && (0, lodash_1.get)(this.options, `params.${key}.primary`))) + .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {}); + const pathParamsMeta = helpers_1.Swagger.createPathParamsMeta(params); + helpers_1.Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]); + } + setSwaggerQueryParams(name) { + const metadata = helpers_1.Swagger.getParams(this.targetProto[name]); + const queryParamsMeta = helpers_1.Swagger.createQueryParamsMeta(name, this.options); + helpers_1.Swagger.setParams([...metadata, ...queryParamsMeta], this.targetProto[name]); + } + setSwaggerResponseOk(name) { + const metadata = helpers_1.Swagger.getResponseOk(this.targetProto[name]); + const metadataToAdd = helpers_1.Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {}; + helpers_1.Swagger.setResponseOk({ ...metadata, ...metadataToAdd }, this.targetProto[name]); + } + routeNameAction(name) { + return name.split("OneBase")[0] || name.split("ManyBase")[0]; + } +} +exports.RoutesFactoryService = RoutesFactoryService; + + +/***/ }), +/* 43 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(44), exports); +tslib_1.__exportStar(__webpack_require__(46), exports); + + +/***/ }), +/* 44 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudRequestInterceptor = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const exceptions_1 = __webpack_require__(24); +const services_1 = __webpack_require__(5); +const helpers_1 = __webpack_require__(10); +const lodash_1 = __webpack_require__(8); +const constants_1 = __webpack_require__(22); +const enums_1 = __webpack_require__(13); +const crud_base_interceptor_1 = __webpack_require__(45); +let CrudRequestInterceptor = exports.CrudRequestInterceptor = class CrudRequestInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + const req = context.switchToHttp().getRequest(); + try { + /* istanbul ignore else */ + if (!req[constants_1.PARSED_CRUD_REQUEST_KEY]) { + const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context); + const parser = services_1.QueryParserService.create(); + parser.parseQuery(req.query, crudOptions.operators?.custom); + let auth = null; + if (!(0, lodash_1.isNil)(ctrlOptions)) { + const search = this.getSearch(parser, crudOptions, action, req.params); + auth = this.getAuth(parser, crudOptions, req); + parser.search = auth.or + ? { $or: [auth.or, { $and: search }] } + : { $and: [auth.filter, ...search] }; + } + else { + parser.search = { $and: this.getSearch(parser, crudOptions, action) }; + } + req[constants_1.PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(parser, crudOptions, auth?.auth); + } + return next.handle(); + } + catch (error) { + throw error instanceof exceptions_1.RequestQueryException + ? new common_1.BadRequestException(error.message) + : error; + } + } + getCrudRequest(parser, crudOptions, auth) { + const parsed = parser.getParsed(); + const { query, routes, params, operators } = crudOptions; + return { + parsed, + options: { + query, + routes, + params, + operators, + }, + auth, + }; + } + getSearch(parser, crudOptions, action, params) { + // params condition + const paramsSearch = this.getParamsSearch(parser, crudOptions, params); + // if `CrudOptions.query.filter` is a function then return transformed query search conditions + if ((0, lodash_1.isFunction)(crudOptions.query?.filter)) { + const filterCond = (crudOptions.query?.filter)(parser.search, action === enums_1.CrudActions.ReadAll) || {}; + return [...paramsSearch, filterCond]; + } + // if `CrudOptions.query.filter` is array or search condition type + const optionsFilter = (0, helpers_1.isArrayFull)(crudOptions.query?.filter) + ? (crudOptions.query?.filter).map(parser.convertFilterToSearch) + : [crudOptions.query?.filter || {}]; + let search = []; + if (parser.search) { + search = [parser.search]; + } + else if (parser.filter.length > 0 && parser.or.length > 0) { + search = + parser.filter.length === 1 && parser.or.length === 1 + ? [ + { + $or: [ + parser.convertFilterToSearch(parser.filter[0]), + parser.convertFilterToSearch(parser.or[0]), + ], + }, + ] + : [ + { + $or: [ + { $and: parser.filter.map(parser.convertFilterToSearch) }, + { $and: parser.or.map(parser.convertFilterToSearch) }, + ], + }, + ]; + } + else if (parser.filter.length > 0) { + search = parser.filter.map(parser.convertFilterToSearch); + } + else { + if (parser.or.length > 0) { + search = + parser.or.length === 1 + ? [parser.convertFilterToSearch(parser.or[0])] + : [ + { + $or: parser.or.map(parser.convertFilterToSearch), + }, + ]; + } + } + return [...paramsSearch, ...optionsFilter, ...search]; + } + getParamsSearch(parser, crudOptions, params) { + if (params) { + parser.parseParams(params, crudOptions.params); + return (0, helpers_1.isArrayFull)(parser.paramsFilter) + ? // @ts-ignore + parser.paramsFilter.map(parser.convertFilterToSearch) + : []; + } + return []; + } + getAuth(parser, crudOptions, req) { + const auth = {}; + /* istanbul ignore else */ + if (crudOptions.auth) { + const userOrRequest = crudOptions.auth.property + ? req[crudOptions.auth.property] + : req; + if (crudOptions.auth.property && req[crudOptions.auth.property]) { + if (typeof req[crudOptions.auth.property] === "object") { + if (Object.keys(req[crudOptions.auth.property]).length > 0) { + auth.auth = req[crudOptions.auth.property]; + } + } + else { + auth.auth = req[crudOptions.auth.property]; + } + } + if ((0, lodash_1.isFunction)(crudOptions.auth.or)) { + auth.or = crudOptions.auth.or(userOrRequest); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.filter) && !auth.or) { + auth.filter = crudOptions.auth.filter(userOrRequest) || {}; + } + if ((0, lodash_1.isFunction)(crudOptions.auth.persist)) { + parser.setAuthPersist(crudOptions.auth.persist(userOrRequest)); + } + const options = {}; + if ((0, lodash_1.isFunction)(crudOptions.auth.classTransformOptions)) { + Object.assign(options, crudOptions.auth.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)(crudOptions.auth.groups)) { + options.groups = crudOptions.auth.groups(userOrRequest); + } + parser.setClassTransformOptions(options); + } + return auth; + } +}; +exports.CrudRequestInterceptor = CrudRequestInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudRequestInterceptor); + + +/***/ }), +/* 45 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudBaseInterceptor = void 0; +const helpers_1 = __webpack_require__(10); +class CrudBaseInterceptor { + getCrudInfo(context) { + const ctrl = context.getClass(); + const handler = context.getHandler(); + const ctrlOptions = helpers_1.R.getCrudOptions(ctrl); + const crudOptions = ctrlOptions + ? ctrlOptions + : { + query: {}, + routes: {}, + params: {}, + operators: {}, + }; + const action = helpers_1.R.getAction(handler); + return { ctrlOptions, crudOptions, action }; + } +} +exports.CrudBaseInterceptor = CrudBaseInterceptor; + + +/***/ }), +/* 46 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudResponseInterceptor = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const lodash_1 = __webpack_require__(8); +const helpers_1 = __webpack_require__(10); +const class_transformer_1 = __webpack_require__(18); +const operators_1 = __webpack_require__(47); +const enums_1 = __webpack_require__(13); +const crud_base_interceptor_1 = __webpack_require__(45); +const class_validator_1 = __webpack_require__(17); +const actionToDtoNameMap = { + [enums_1.CrudActions.ReadAll]: "getMany", + [enums_1.CrudActions.ReadOne]: "get", + [enums_1.CrudActions.CreateMany]: "createMany", + [enums_1.CrudActions.CreateOne]: "create", + [enums_1.CrudActions.UpdateOne]: "update", + [enums_1.CrudActions.ReplaceOne]: "replace", + [enums_1.CrudActions.DeleteAll]: "delete", + [enums_1.CrudActions.DeleteOne]: "delete", + [enums_1.CrudActions.RecoverOne]: "recover", +}; +let CrudResponseInterceptor = exports.CrudResponseInterceptor = class CrudResponseInterceptor extends crud_base_interceptor_1.CrudBaseInterceptor { + intercept(context, next) { + return next.handle().pipe((0, operators_1.map)((data) => this.serialize(context, data))); + } + transform(dto, data, options) { + if (!(0, class_validator_1.isObject)(data) || (0, helpers_1.isFalse)(dto)) { + return data; + } + if (!(0, lodash_1.isFunction)(dto)) { + return data.constructor !== Object + ? (0, class_transformer_1.instanceToPlain)(data, options) + : data; + } + return data instanceof dto + ? (0, class_transformer_1.instanceToPlain)(data, options) + : /* @ts-ignore */ + (0, class_transformer_1.instanceToPlain)(Object.assign(new dto(), data), options); + } + serialize(context, data) { + const req = context.switchToHttp().getRequest(); + const { crudOptions, action } = this.getCrudInfo(context); + const { serialize } = crudOptions; + /* @ts-ignore */ + const dto = serialize[actionToDtoNameMap[action]]; + const isArray = Array.isArray(data); + const options = {}; + if ((0, lodash_1.isFunction)(crudOptions.auth?.classTransformOptions)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + Object.assign(options, crudOptions.auth?.classTransformOptions(userOrRequest)); + } + if ((0, lodash_1.isFunction)(crudOptions.auth?.groups)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + options.groups = crudOptions.auth?.groups(userOrRequest); + } + switch (action) { + case enums_1.CrudActions.ReadAll: + return isArray + ? data.map((item) => this.transform(serialize?.get, item, options)) + : this.transform(dto, data, options); + case enums_1.CrudActions.CreateMany: + return isArray + ? data.map((item) => this.transform(dto, item, options)) + : this.transform(dto, data, options); + default: + return this.transform(dto, data, options); + } + } +}; +exports.CrudResponseInterceptor = CrudResponseInterceptor = tslib_1.__decorate([ + (0, common_1.Injectable)() +], CrudResponseInterceptor); + + +/***/ }), +/* 47 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("rxjs/operators"); + +/***/ }), +/* 48 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.TypeOrmCrudService = void 0; +const o0_1 = __webpack_require__(49); +const class_transformer_1 = __webpack_require__(18); +const lodash_1 = __webpack_require__(8); +const typeorm_1 = __webpack_require__(50); +const helpers_1 = __webpack_require__(10); +const types_1 = __webpack_require__(26); +const abstract_crud_service_1 = __webpack_require__(6); +class TypeOrmCrudService extends abstract_crud_service_1.CrudService { + constructor(repo) { + super(); + this.repo = repo; + this.entityHasDeleteColumn = false; + this.entityColumnsHash = {}; + this.entityRelationsHash = new Map(); + this.sqlInjectionRegEx = [ + /(%27)|(')|(--)|(%23)|(#)/gi, + /((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))/gi, + /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi, + /((%27)|('))union/gi, + ]; + this.dbName = this.repo.metadata.connection.options.type; + this.onInitMapEntityColumns(); + } + get findOne() { + return this.repo.findOne.bind(this.repo); + } + get findOneBy() { + return this.repo.findOneBy.bind(this.repo); + } + get find() { + return this.repo.find.bind(this.repo); + } + get count() { + return this.repo.count.bind(this.repo); + } + get entityType() { + return this.repo.target; + } + get alias() { + return this.repo.metadata.targetName; + } + /** + * Get many + * @param req + */ + async getMany(req) { + const { parsed, options } = req; + const builder = await this.createBuilder(parsed, options); + return this.doGetMany(builder, parsed, options); + } + /** + * Get one + * @param req + */ + async getOne(req) { + return this.getOneOrFail(req); + } + /** + * Create one + * @param req + * @param dto + */ + async createOne(req, dto) { + // @ts-ignore + const { returnShallow } = req.options.routes?.createOneBase; + const entity = this.prepareEntityBeforeSave(dto, req.parsed); + /* istanbul ignore if */ + if (!entity) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const saved = await this.repo.save(entity); + if (returnShallow) { + return saved; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + if ((0, lodash_1.isEmpty)(primaryParams) && + primaryParams.some((p) => (0, lodash_1.isNil)(saved[p]))) { + return saved; + } + else { + req.parsed.search = primaryParams.reduce((acc, p) => ({ ...acc, [p]: saved[p] }), {}); + return this.getOneOrFail(req); + } + } + } + /** + * Create many + * @param req + * @param dto + */ + async createMany(req, dto) { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto) || !(0, helpers_1.isArrayFull)(dto.bulk)) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + const bulk = dto.bulk + .map((one) => this.prepareEntityBeforeSave(one, req.parsed)) + .filter((d) => !(0, lodash_1.isUndefined)(d)); + /* istanbul ignore if */ + if (!bulk.length) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + return this.repo.save(bulk, { chunk: 50 }); + } + /** + * Update one + * @param req + * @param dto + */ + async updateOne(req, dto) { + const { allowParamsOverride, returnShallow } = (req.options.routes?.updateOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while updating + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, returnShallow); + const toSave = !allowParamsOverride + ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist } + : { ...found, ...dto, ...req.parsed.authPersist }; + const updated = await this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return updated; + } + else { + req.parsed.paramsFilter.forEach((filter) => { + // @ts-ignore + filter.value = updated[filter.field]; + }); + return this.getOneOrFail(req); + } + } + /** + * Recover one + * @param req + * @param dto + */ + async recoverOne(req) { + // disable cache while recovering + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, false, true); + return this.repo.recover(found); + } + /** + * Replace one + * @param req + * @param dto + */ + async replaceOne(req, dto) { + const { allowParamsOverride, returnShallow } = (req.options.routes?.replaceOneBase); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while replacing + // @ts-ignore + req.options.query.cache = false; + const [_, found] = await (0, o0_1.oO)(this.getOneOrFail(req, returnShallow)); + const toSave = !allowParamsOverride + ? { + ...(found || {}), + ...dto, + ...paramsFilters, + ...req.parsed.authPersist, + } + : { + ...(found || {}), + ...paramsFilters, + ...dto, + ...req.parsed.authPersist, + }; + const replaced = await this.repo.save((0, class_transformer_1.plainToInstance)(this.entityType, toSave, req.parsed.classTransformOptions)); + if (returnShallow) { + return replaced; + } + else { + const primaryParams = this.getPrimaryParams(req.options); + /* istanbul ignore if */ + if (!primaryParams.length) { + return replaced; + } + req.parsed.search = primaryParams.reduce((acc, p) => ({ + ...acc, + // @ts-ignore + [p]: replaced[p], + }), {}); + return this.getOneOrFail(req); + } + } + /** + * Delete one + * @param req + */ + async deleteOne(req) { + const { returnDeleted } = (req.options.routes?.deleteOneBase); + // disable cache while deleting + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, returnDeleted); + const toReturn = returnDeleted + ? (0, class_transformer_1.plainToInstance)(this.entityType, { ...found }, req.parsed.classTransformOptions) + : undefined; + const deleted = req.options.query?.softDelete === true + ? await this.repo.softRemove(found) + : await this.repo.remove(found); + return toReturn; + } + getParamFilters(parsed) { + const filters = {}; + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter.length)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + filters[filter.field] = filter.value; + } + } + return filters; + } + /** + * Create TypeOrm QueryBuilder + * @param parsed + * @param options + * @param many + * @param withDeleted + */ + async createBuilder(parsed, options, many = true, withDeleted = false) { + // create query builder + const builder = this.repo.createQueryBuilder(this.alias); + // get select fields + const select = this.getSelect(parsed, options.query || {}); + // select fields + builder.select(select); + // if soft deleted is enabled add where statement to filter deleted records + if (this.entityHasDeleteColumn && options.query?.softDelete) { + if (parsed.includeDeleted === 1 || withDeleted) { + builder.withDeleted(); + } + } + // search + this.setSearchCondition(builder, parsed.search || {}, options.operators?.custom || {}); + // set joins + const joinOptions = options.query?.join || {}; + const allowedJoins = Object.keys(joinOptions); + if (!(0, lodash_1.isEmpty)(allowedJoins)) { + const eagerJoins = {}; + for (let i = 0; i < allowedJoins.length; i++) { + if (joinOptions[allowedJoins[i]].eager) { + const cond = parsed.join.find((j) => j && j.field === allowedJoins[i]) || { + field: allowedJoins[i], + }; + this.setJoin(cond, joinOptions, builder); + eagerJoins[allowedJoins[i]] = true; + } + } + if ((0, helpers_1.isArrayFull)(parsed.join)) { + for (let i = 0; i < parsed.join.length; i++) { + if (!eagerJoins[parsed.join[i].field]) { + this.setJoin(parsed.join[i], joinOptions, builder); + } + } + } + } + if (many) { + // set sort (order by) + const sort = this.getSort(parsed, options.query || {}); + builder.orderBy(sort); + // set take + const take = this.getTake(parsed, options.query || {}); + if (take && isFinite(take)) { + builder.take(take); + } + // set skip + const skip = this.getSkip(parsed, take || 0); + if (skip && isFinite(skip)) { + builder.skip(skip); + } + } + // set cache + if (options.query?.cache && parsed.cache !== 0) { + builder.cache(options.query.cache); + } + return builder; + } + /** + * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount` + * helpful for overriding `TypeOrmCrudService#getMany` + * @see getMany + * @see SelectQueryBuilder#getMany + * @see SelectQueryBuilder#getManyAndCount + * @param builder + * @param query + * @param options + */ + async doGetMany(builder, query, options) { + if (this.decidePagination(query, options)) { + const [data, total] = await builder.getManyAndCount(); + const limit = builder.expressionMap.take; + const offset = builder.expressionMap.skip; + return this.createPageInfo(data, total, limit || total, offset || 0); + } + return builder.getMany(); + } + onInitMapEntityColumns() { + this.entityColumns = this.repo.metadata.columns.map((prop) => { + // In case column is an embedded, use the propertyPath to get complete path + if (prop.embeddedMetadata) { + this.entityColumnsHash[prop.propertyPath] = prop.databasePath; + return prop.propertyPath; + } + this.entityColumnsHash[prop.propertyName] = prop.databasePath; + return prop.propertyName; + }); + this.entityPrimaryColumns = this.repo.metadata.columns + .filter((prop) => prop.isPrimary) + .map((prop) => prop.propertyName); + this.entityHasDeleteColumn = this.repo.metadata.columns.some((prop) => !(0, lodash_1.isEmpty)(prop.isDeleteDate)); + } + async getOneOrFail(req, shallow = false, withDeleted = false) { + const { parsed, options } = req; + const builder = shallow + ? this.repo.createQueryBuilder(this.alias) + : await this.createBuilder(parsed, options, true, withDeleted); + if (shallow) { + this.setSearchCondition(builder, parsed.search || null, options.operators?.custom); + } + const found = withDeleted + ? await builder.withDeleted().getOne() + : await builder.getOne(); + if (!found) { + this.throwNotFoundException(this.alias); + } + return found; + } + prepareEntityBeforeSave(dto, parsed) { + /* istanbul ignore if */ + if (!(0, helpers_1.isObject)(dto)) { + return undefined; + } + if (!(0, lodash_1.isEmpty)(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + dto[filter.field] = filter.value; + } + } + /* istanbul ignore if */ + if ((0, lodash_1.isEmpty)(Object.keys(dto))) { + return undefined; + } + return dto instanceof this.entityType + ? Object.assign(dto, parsed.authPersist) + : (0, class_transformer_1.plainToInstance)(this.entityType, { ...dto, ...parsed.authPersist }, parsed.classTransformOptions); + } + getAllowedColumns(columns, options) { + return (!options.exclude || !options.exclude.length) && + (!options.allow || !options.allow.length) + ? columns + : columns.filter((column) => (options.exclude && options.exclude.length + ? !options.exclude.some((col) => col === column) + : true) && + (options.allow && options.allow.length + ? options.allow.some((col) => col === column) + : true)); + } + getEntityColumns(entityMetadata) { + const columns = entityMetadata.columns.map((prop) => prop.propertyPath) || + []; + const primaryColumns = entityMetadata.primaryColumns.map((prop) => prop.propertyPath) || []; + return { columns, primaryColumns }; + } + getRelationMetadata(field, options) { + try { + let allowedRelation; + let nested = false; + if (this.entityRelationsHash.has(field)) { + allowedRelation = this.entityRelationsHash.get(field); + } + else { + const fields = field.split("."); + let relationMetadata = null; + let name; + let path; + let parentPath; + if (fields.length === 1) { + const found = this.repo.metadata.relations.find((one) => one.propertyName === fields[0]); + if (found) { + name = fields[0]; + path = `${this.alias}.${fields[0]}`; + relationMetadata = found.inverseEntityMetadata; + } + } + else { + nested = true; + parentPath = ""; + const reduced = fields.reduce( + // @ts-ignore + (res, propertyName, i) => { + const found = res.relations?.length + ? res.relations.find((one) => one.propertyName === propertyName) + : null; + relationMetadata = found ? found.inverseEntityMetadata : null; + const relations = relationMetadata + ? relationMetadata.relations + : []; + name = propertyName; + if (i !== fields.length - 1) { + parentPath = !parentPath + ? propertyName + : `${parentPath}.${propertyName}`; + } + return { + relations, + relationMetadata, + }; + }, { + relations: this.repo.metadata.relations, + relationMetadata: null, + }); + // @ts-ignore + relationMetadata = reduced.relationMetadata; + } + // @ts-ignore + if (relationMetadata) { + const { columns, primaryColumns } = this.getEntityColumns(relationMetadata); + if (!path && parentPath) { + const parentAllowedRelation = this.entityRelationsHash.get(parentPath); + if (parentAllowedRelation) { + path = parentAllowedRelation.alias + ? `${parentAllowedRelation.alias}.${name}` + : field; + } + } + allowedRelation = { + alias: options.alias, + name, + path, + columns, + nested, + primaryColumns, + }; + } + } + if (allowedRelation) { + const allowedColumns = this.getAllowedColumns(allowedRelation.columns, options); + const toSave = { + ...allowedRelation, + allowedColumns, + }; + this.entityRelationsHash.set(field, toSave); + if (options.alias) { + this.entityRelationsHash.set(options.alias, toSave); + } + return toSave; + } + } + catch (_) { + return null; + } + return null; + } + setJoin(cond, joinOptions, builder) { + const options = joinOptions[cond.field] ?? null; + if (!options) { + console.warn('relation "' + + cond.field + + '" not found in allowed relations in the controller. Did you mean to use one of these? [' + + Object.keys(joinOptions).join(", ") + + "]"); + return; + } + const allowedRelation = this.getRelationMetadata(cond.field, options); + if (!allowedRelation) { + return; + } + const relationType = options.required ? "innerJoin" : "leftJoin"; + const alias = options.alias ? options.alias : allowedRelation.name; + builder[relationType](allowedRelation.path, alias); + if (options.select !== false) { + const columns = (0, helpers_1.isArrayFull)(cond.select) + ? cond.select?.filter((column) => allowedRelation.allowedColumns.some((allowed) => allowed === column)) || [] + : allowedRelation.allowedColumns || []; + const select = [ + ...allowedRelation.primaryColumns, + // @ts-ignore + ...((0, helpers_1.isArrayFull)(options.persist) ? options.persist : []), + ...columns, + ].map((col) => `${alias}.${col}`); + builder.addSelect(Array.from(new Set(select))); + } + } + setAndWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `andWhere${i}`, customOperators); + builder.andWhere(str, params); + } + setOrWhere(cond, i, builder, customOperators) { + const { str, params } = this.mapOperatorsToQuery(cond, `orWhere${i}`, customOperators); + builder.orWhere(str, params); + } + setSearchCondition(builder, search, customOperators, condition = "$and") { + if ((0, helpers_1.isObject)(search)) { + const keys = Object.keys(search); + if (keys.length) { + // search: {$ne: [...]} + // @ts-ignore + if ((0, helpers_1.isArrayFull)(search?.$ne)) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + // @ts-ignore + search.$not.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + }), true); + } + // search: {$and: [...], ...} + else if ((0, helpers_1.isArrayFull)(search?.$and)) { + // search: {$and: [{}]} + if (search?.$and?.length === 1) { + this.setSearchCondition(builder, search.$and[0], customOperators, condition); + } + // search: {$and: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + search?.$and?.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + })); + } + } + // search: {$or: [...], ...} + else if ((0, helpers_1.isArrayFull)(search?.$or)) { + // search: {$or: [...]} + if (keys.length === 1) { + // search: {$or: [{}]} + if (search?.$or?.length === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, condition); + } + // search: {$or: [{}, {}, ...]} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + search?.$or?.forEach((item) => { + this.setSearchCondition(qb, item, customOperators, "$or"); + }); + })); + } + } + // search: {$or: [...], foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + if (field !== "$or") { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + } + else { + if (search?.$or?.length === 1) { + this.setSearchCondition(builder, search.$or[0], customOperators, "$and"); + } + else { + this.builderAddBrackets(qb, "$and", new typeorm_1.Brackets((qb2) => { + search?.$or?.forEach((item) => { + this.setSearchCondition(qb2, item, customOperators, "$or"); + }); + })); + } + } + }); + })); + } + } + // search: {...} + else { + // search: {foo} + if (keys.length === 1) { + const field = keys[0]; + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(builder, condition, field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(builder, condition, field, value, customOperators); + } + } + // search: {foo, ...} + else { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + keys.forEach((field) => { + // @ts-ignore + const value = search[field]; + if (!(0, helpers_1.isObject)(value)) { + this.builderSetWhere(qb, "$and", field, value, customOperators); + } + else { + this.setSearchFieldObjectCondition(qb, "$and", field, value, customOperators); + } + }); + })); + } + } + } + } + } + builderAddBrackets(builder, condition, brackets, negated = false) { + if (negated) { + // No builtin support for not, this is copied from QueryBuilder.getWhereCondition + const whereQueryBuilder = builder.createQueryBuilder(); + whereQueryBuilder.parentQueryBuilder = builder; + whereQueryBuilder.expressionMap.mainAlias = + builder.expressionMap.mainAlias; + whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = + builder.expressionMap.aliasNamePrefixingEnabled; + whereQueryBuilder.expressionMap.parameters = + builder.expressionMap.parameters; + whereQueryBuilder.expressionMap.nativeParameters = + builder.expressionMap.nativeParameters; + whereQueryBuilder.expressionMap.wheres = []; + brackets.whereFactory(whereQueryBuilder); + const wheres = { + operator: "brackets", + condition: whereQueryBuilder.expressionMap.wheres, + }; + const type = condition === "$and" ? "and" : condition === "$or" ? "or" : "simple"; + builder.expressionMap.wheres.push({ + type, + condition: { + operator: "not", + condition: wheres, + }, + }); + } + else if (condition === "$and") { + builder.andWhere(brackets); + } + else { + builder.orWhere(brackets); + } + } + builderSetWhere(builder, condition, field, value, customOperators, operator = "$eq") { + const time = process.hrtime(); + // const index = `${field}${time[0]}${time[1]}`; + /** + * Correcting the Error [Invalid Column Name] or [ syntax error at or near \":\".] + * When using filter or search in relational/nested entities. + */ + const safeFieldName = field.replace(/./g, "_"); + const index = `${safeFieldName}${time[0]}${time[1]}`; + const args = [ + { field, operator: (0, lodash_1.isNull)(value) ? "$isnull" : operator, value }, + index, + builder, + customOperators, + ]; + const fn = condition === "$and" ? this.setAndWhere : this.setOrWhere; + // @ts-ignore + fn.apply(this, args); + } + setSearchFieldObjectCondition(builder, condition, field, object, customOperators) { + if ((0, helpers_1.isObject)(object)) { + const operators = Object.keys(object); + if (operators.length === 1) { + const operator = operators[0]; + const value = object[operator]; + if ((0, helpers_1.isObject)(object.$or)) { + const orKeys = Object.keys(object.$or); + this.setSearchFieldObjectCondition(builder, orKeys.length === 1 ? condition : "$or", field, object.$or, customOperators); + } + else { + this.builderSetWhere(builder, condition, field, value, customOperators, operator); + } + } + else { + if (operators.length > 1) { + this.builderAddBrackets(builder, condition, new typeorm_1.Brackets((qb) => { + operators.forEach((operator) => { + const value = object[operator]; + if (operator !== "$or") { + this.builderSetWhere(qb, condition, field, value, customOperators, operator); + } + else { + const orKeys = Object.keys(object.$or); + if (orKeys.length === 1) { + this.setSearchFieldObjectCondition(qb, condition, field, object.$or, customOperators); + } + else { + this.builderAddBrackets(qb, condition, new typeorm_1.Brackets((qb2) => { + this.setSearchFieldObjectCondition(qb2, "$or", field, object.$or, customOperators); + })); + } + } + }); + })); + } + } + } + } + getSelect(query, options) { + const allowed = this.getAllowedColumns(this.entityColumns || [], options); + const columns = query.fields && query.fields.length + ? query.fields.filter((field) => allowed.some((col) => field === col)) + : allowed; + return [ + ...new Set([ + ...(options.persist && options.persist.length ? options.persist : []), + ...columns, + ...(this.entityPrimaryColumns || []), + ]), + ].map((col) => `${this.alias}.${col}`); + } + getSort(query, options) { + return query.sort && query.sort.length + ? this.mapSort(query.sort) + : options.sort && options.sort.length + ? this.mapSort(options.sort) + : {}; + } + getFieldWithAlias(field, sort = false) { + const i = ["mysql", "mariadb"].includes(this.dbName) ? "`" : '"'; + const cols = field.split("."); + switch (cols.length) { + case 1: + if (sort) { + return `${this.alias}.${field}`; + } + const dbColName = this.entityColumnsHash[field] !== field + ? this.entityColumnsHash[field] + : field; + return `${i}${this.alias}${i}.${i}${dbColName}${i}`; + case 2: + return field; + default: + return cols.slice(cols.length - 2, cols.length).join("."); + } + } + mapSort(sort) { + const params = {}; + for (let i = 0; i < sort.length; i++) { + const field = this.getFieldWithAlias(sort[i].field, true); + const checkedFiled = this.checkSqlInjection(field); + params[checkedFiled] = sort[i].order; + } + return params; + } + mapOperatorsToQuery(cond, param, customOperators = {}) { + const field = this.getFieldWithAlias(cond.field); + const likeOperator = this.dbName === "postgres" ? "ILIKE" : "LIKE"; + let str; + let params; + if (cond.operator[0] !== "$") { + cond.operator = ("$" + cond.operator); + } + switch (cond.operator) { + case types_1.CondOperator.EQUALS: + str = `${field} = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS: + str = `${field} != :${param}`; + break; + case types_1.CondOperator.GREATER_THAN: + str = `${field} > :${param}`; + break; + case types_1.CondOperator.LOWER_THAN: + str = `${field} < :${param}`; + break; + case types_1.CondOperator.GREATER_THAN_EQUALS: + str = `${field} >= :${param}`; + break; + case types_1.CondOperator.LOWER_THAN_EQUALS: + str = `${field} <= :${param}`; + break; + case types_1.CondOperator.STARTS: + str = `${field} LIKE :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES: + str = `${field} NOT LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN: + this.checkFilterIsArray(cond); + str = `${field} IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN: + this.checkFilterIsArray(cond); + str = `${field} NOT IN (:...${param})`; + break; + case types_1.CondOperator.IS_NULL: + str = `${field} IS NULL`; + params = {}; + break; + case types_1.CondOperator.NOT_NULL: + str = `${field} IS NOT NULL`; + params = {}; + break; + case types_1.CondOperator.BETWEEN: + this.checkFilterIsArray(cond, cond.value.length !== 2); + str = `${field} BETWEEN :${param}0 AND :${param}1`; + params = { + [`${param}0`]: cond.value[0], + [`${param}1`]: cond.value[1], + }; + break; + // case insensitive + case types_1.CondOperator.EQUALS_LOW: + str = `LOWER(${field}) = :${param}`; + break; + case types_1.CondOperator.NOT_EQUALS_LOW: + str = `LOWER(${field}) != :${param}`; + break; + case types_1.CondOperator.STARTS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `${cond.value}%` }; + break; + case types_1.CondOperator.ENDS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}` }; + break; + case types_1.CondOperator.CONTAINS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.EXCLUDES_LOW: + str = `LOWER(${field}) NOT ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + case types_1.CondOperator.IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) IN (:...${param})`; + break; + case types_1.CondOperator.NOT_IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) NOT IN (:...${param})`; + break; + default: + const customOperator = customOperators[cond.operator]; + if (!customOperator) { + str = `${field} = :${param}`; + break; + } + try { + if (customOperator.isArray) { + this.checkFilterIsArray(cond); + } + str = customOperator.query(field, param); + params = customOperator.params || {}; + } + catch (error) { + this.throwBadRequestException(`Invalid custom operator '${field}' query`); + } + break; + } + if (typeof params === "undefined") { + params = { [param]: cond.value }; + } + return { str: str, params }; + } + checkFilterIsArray(cond, withLength) { + /* istanbul ignore if */ + if (!Array.isArray(cond.value) || + !cond.value.length || + (!(0, lodash_1.isNil)(withLength) ? withLength : false)) { + this.throwBadRequestException(`Invalid column '${cond.field}' value`); + } + } + checkSqlInjection(field) { + if (this.sqlInjectionRegEx.length) { + for (let i = 0; i < this.sqlInjectionRegEx.length; i++) { + if (this.sqlInjectionRegEx[i].test(field)) { + this.throwBadRequestException(`SQL injection detected: "${field}"`); + } + } + } + return field; + } +} +exports.TypeOrmCrudService = TypeOrmCrudService; + + +/***/ }), +/* 49 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@zmotivat0r/o0"); + +/***/ }), +/* 50 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("typeorm"); + +/***/ }), +/* 51 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CrudAuth = void 0; +const helpers_1 = __webpack_require__(10); +const CrudAuth = (options) => (target) => { + helpers_1.R.setCrudAuthOptions(options, target); +}; +exports.CrudAuth = CrudAuth; + + +/***/ }), +/* 52 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Override = void 0; +const constants_1 = __webpack_require__(22); +const Override = (name) => (target, key, descriptor) => { + Reflect.defineMetadata(constants_1.OVERRIDE_METHOD_METADATA, name || `${key}Base`, target[key]); + return descriptor; +}; +exports.Override = Override; + + +/***/ }), +/* 53 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ParsedRequest = void 0; +const common_1 = __webpack_require__(7); +const constants_1 = __webpack_require__(22); +const helpers_1 = __webpack_require__(10); +exports.ParsedRequest = (0, common_1.createParamDecorator)((_, ctx) => { + return helpers_1.R.getContextRequest(ctx)[constants_1.PARSED_CRUD_REQUEST_KEY]; +}); + + +/***/ }), +/* 54 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ParsedBody = void 0; +const constants_1 = __webpack_require__(22); +const ParsedBody = () => (target, key, index) => { + Reflect.defineMetadata(constants_1.PARSED_BODY_METADATA, { index }, target[key]); +}; +exports.ParsedBody = ParsedBody; + + +/***/ }), +/* 55 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getAction = exports.getFeature = exports.Action = exports.Feature = void 0; +const common_1 = __webpack_require__(7); +const constants_1 = __webpack_require__(22); +const Feature = (name) => (0, common_1.SetMetadata)(constants_1.FEATURE_NAME_METADATA, name); +exports.Feature = Feature; +const Action = (name) => (0, common_1.SetMetadata)(constants_1.ACTION_NAME_METADATA, name); +exports.Action = Action; +const getFeature = (target) => Reflect.getMetadata(constants_1.FEATURE_NAME_METADATA, target); +exports.getFeature = getFeature; +const getAction = (target) => Reflect.getMetadata(constants_1.ACTION_NAME_METADATA, target); +exports.getAction = getAction; + + +/***/ }), +/* 56 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(57), exports); +tslib_1.__exportStar(__webpack_require__(58), exports); +tslib_1.__exportStar(__webpack_require__(59), exports); +tslib_1.__exportStar(__webpack_require__(60), exports); +tslib_1.__exportStar(__webpack_require__(61), exports); +tslib_1.__exportStar(__webpack_require__(62), exports); +tslib_1.__exportStar(__webpack_require__(63), exports); +tslib_1.__exportStar(__webpack_require__(64), exports); +tslib_1.__exportStar(__webpack_require__(65), exports); +tslib_1.__exportStar(__webpack_require__(66), exports); +tslib_1.__exportStar(__webpack_require__(67), exports); +tslib_1.__exportStar(__webpack_require__(68), exports); +tslib_1.__exportStar(__webpack_require__(69), exports); +tslib_1.__exportStar(__webpack_require__(70), exports); +tslib_1.__exportStar(__webpack_require__(71), exports); +tslib_1.__exportStar(__webpack_require__(72), exports); +tslib_1.__exportStar(__webpack_require__(73), exports); +tslib_1.__exportStar(__webpack_require__(74), exports); + + +/***/ }), +/* 57 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 58 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 59 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 60 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 61 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 62 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 63 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 64 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 65 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 66 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 67 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 68 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 69 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 70 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 71 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 72 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 73 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 74 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); + + +/***/ }), +/* 75 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/core"); + +/***/ }), +/* 76 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const user_email_already_exists_constraint_1 = __webpack_require__(78); +const user_controller_1 = __webpack_require__(87); +const user_entity_1 = __webpack_require__(80); +const user_service_1 = __webpack_require__(79); +let UserModule = exports.UserModule = class UserModule { +}; +exports.UserModule = UserModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([user_entity_1.User])], + controllers: [user_controller_1.UserController], + providers: [user_service_1.UserService, user_email_already_exists_constraint_1.IsEmailUserAlreadyExistConstraint], + exports: [user_service_1.UserService, user_email_already_exists_constraint_1.IsEmailUserAlreadyExistConstraint], + }) +], UserModule); + + +/***/ }), +/* 77 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/typeorm"); + +/***/ }), +/* 78 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.IsEmailUserAlreadyExist = exports.IsEmailUserAlreadyExistConstraint = void 0; +const tslib_1 = __webpack_require__(2); +/* eslint-disable @typescript-eslint/no-explicit-any, import/named */ +const common_1 = __webpack_require__(7); +const class_validator_1 = __webpack_require__(17); +const user_service_1 = __webpack_require__(79); +let IsEmailUserAlreadyExistConstraint = exports.IsEmailUserAlreadyExistConstraint = class IsEmailUserAlreadyExistConstraint { + constructor(userService) { + this.userService = userService; + } + async validate(text) { + return !(await this.userService.userExists({ email: text })); + } +}; +exports.IsEmailUserAlreadyExistConstraint = IsEmailUserAlreadyExistConstraint = tslib_1.__decorate([ + (0, class_validator_1.ValidatorConstraint)({ name: "isEmailUserAlreadyExist", async: true }), + (0, common_1.Injectable)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object]) +], IsEmailUserAlreadyExistConstraint); +function IsEmailUserAlreadyExist(validationOptions) { + return function (object, propertyName) { + (0, class_validator_1.registerDecorator)({ + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: [], + validator: IsEmailUserAlreadyExistConstraint, + }); + }; +} +exports.IsEmailUserAlreadyExist = IsEmailUserAlreadyExist; + + +/***/ }), +/* 79 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const user_entity_1 = __webpack_require__(80); +let UserService = exports.UserService = class UserService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } + async userExists(dto) { + const user = await this.repo.findOneBy(dto); + return Boolean(user); + } +}; +exports.UserService = UserService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(user_entity_1.User)), + tslib_1.__metadata("design:paramtypes", [Object]) +], UserService); + + +/***/ }), +/* 80 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b, _c, _d, _e, _f; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.User = void 0; +const tslib_1 = __webpack_require__(2); +const bcrypt = tslib_1.__importStar(__webpack_require__(81)); +const class_transformer_1 = __webpack_require__(18); +const typeorm_1 = __webpack_require__(50); +const address_entity_1 = __webpack_require__(82); +const contract_entity_1 = __webpack_require__(85); +const phone_entity_1 = __webpack_require__(86); +let User = exports.User = class User extends typeorm_1.BaseEntity { + async hashPassword() { + this.password = await bcrypt.hash(this.password, 10); + } + loadTempPassword() { + this.tempPassword = this.password; + } + async encryptPassword() { + if (this.tempPassword !== null && this.tempPassword !== this.password) { + try { + await this.hashPassword(); + // After changed, temp password should be reassigned to new one, so if we try to save again, + // it does not change the password wrongly + this.tempPassword = this.password; + } + catch (error) { + if (error instanceof Error) { + throw new Error("Unable to encrypt password: " + error.message); + } + } + } + } +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)("uuid"), + tslib_1.__metadata("design:type", String) +], User.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ unique: true, length: 125 }), + tslib_1.__metadata("design:type", String) +], User.prototype, "email", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "timestamp", nullable: true }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], User.prototype, "emailConfirmedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: true }), + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", String) +], User.prototype, "emailToken", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", length: 80 }), + (0, class_transformer_1.Exclude)({ toClassOnly: false, toPlainOnly: true }), + tslib_1.__metadata("design:type", String) +], User.prototype, "password", void 0); +tslib_1.__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: "timestamp" }), + tslib_1.__metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], User.prototype, "createdAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.UpdateDateColumn)({ type: "timestamp" }), + tslib_1.__metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) +], User.prototype, "updatedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => phone_entity_1.Phone, (phone) => phone.user, { + cascade: true, + onDelete: "CASCADE", + }), + tslib_1.__metadata("design:type", Array) +], User.prototype, "phones", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => contract_entity_1.Contract, (contract) => contract.user, { + cascade: true, + onDelete: "CASCADE", + }), + tslib_1.__metadata("design:type", Array) +], User.prototype, "contracts", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => address_entity_1.Address, (address) => address.user, { + cascade: true, + onDelete: "CASCADE", + }), + tslib_1.__metadata("design:type", Array) +], User.prototype, "addresses", void 0); +tslib_1.__decorate([ + (0, typeorm_1.DeleteDateColumn)(), + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", typeof (_d = typeof Date !== "undefined" && Date) === "function" ? _d : Object) +], User.prototype, "deletedAt", void 0); +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", String) +], User.prototype, "tempPassword", void 0); +tslib_1.__decorate([ + (0, typeorm_1.BeforeInsert)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", typeof (_e = typeof Promise !== "undefined" && Promise) === "function" ? _e : Object) +], User.prototype, "hashPassword", null); +tslib_1.__decorate([ + (0, typeorm_1.AfterLoad)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", void 0) +], User.prototype, "loadTempPassword", null); +tslib_1.__decorate([ + (0, typeorm_1.BeforeUpdate)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", typeof (_f = typeof Promise !== "undefined" && Promise) === "function" ? _f : Object) +], User.prototype, "encryptPassword", null); +exports.User = User = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], User); + + +/***/ }), +/* 81 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("bcryptjs"); + +/***/ }), +/* 82 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b, _c; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Address = void 0; +const tslib_1 = __webpack_require__(2); +const typeorm_1 = __webpack_require__(50); +const bson_typings_1 = __webpack_require__(83); +const user_entity_1 = __webpack_require__(80); +const address_type_entity_1 = __webpack_require__(84); +let Address = exports.Address = class Address extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)("uuid"), + tslib_1.__metadata("design:type", Number) +], Address.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Address.prototype, "street", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "int", nullable: true }), + tslib_1.__metadata("design:type", Number) +], Address.prototype, "number", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Address.prototype, "city", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false, length: 2 }), + tslib_1.__metadata("design:type", String) +], Address.prototype, "state", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "user_id", type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", typeof (_a = typeof bson_typings_1.UUID !== "undefined" && bson_typings_1.UUID) === "function" ? _a : Object) +], Address.prototype, "userId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "is_active", type: "boolean", default: true }), + tslib_1.__metadata("design:type", Boolean) +], Address.prototype, "isActive", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "type_id", type: "int", nullable: false }), + tslib_1.__metadata("design:type", Number) +], Address.prototype, "typeId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)(() => user_entity_1.User, (user) => user.id), + (0, typeorm_1.JoinColumn)({ + name: "user_id", + referencedColumnName: "id", + foreignKeyConstraintName: "address_user", + }), + tslib_1.__metadata("design:type", typeof (_b = typeof user_entity_1.User !== "undefined" && user_entity_1.User) === "function" ? _b : Object) +], Address.prototype, "user", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)(() => address_type_entity_1.AddressType, (addressType) => addressType.id, { + cascade: true, + onDelete: "CASCADE", + }), + (0, typeorm_1.JoinColumn)({ + name: "type_id", + referencedColumnName: "id", + foreignKeyConstraintName: "address_addresstype", + }), + tslib_1.__metadata("design:type", typeof (_c = typeof address_type_entity_1.AddressType !== "undefined" && address_type_entity_1.AddressType) === "function" ? _c : Object) +], Address.prototype, "type", void 0); +exports.Address = Address = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Address); + + +/***/ }), +/* 83 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("typeorm/driver/mongodb/bson.typings"); + +/***/ }), +/* 84 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressType = void 0; +const tslib_1 = __webpack_require__(2); +const typeorm_1 = __webpack_require__(50); +const address_entity_1 = __webpack_require__(82); +let AddressType = exports.AddressType = class AddressType extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + tslib_1.__metadata("design:type", Number) +], AddressType.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], AddressType.prototype, "type", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "is_active", type: "boolean", default: true }), + tslib_1.__metadata("design:type", Boolean) +], AddressType.prototype, "isActive", void 0); +tslib_1.__decorate([ + (0, typeorm_1.OneToMany)(() => address_entity_1.Address, (address) => address.type), + tslib_1.__metadata("design:type", typeof (_a = typeof address_entity_1.Address !== "undefined" && address_entity_1.Address) === "function" ? _a : Object) +], AddressType.prototype, "address", void 0); +exports.AddressType = AddressType = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], AddressType); + + +/***/ }), +/* 85 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Contract = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_transformer_1 = __webpack_require__(18); +const class_validator_1 = __webpack_require__(17); +const typeorm_1 = __webpack_require__(50); +const user_entity_1 = __webpack_require__(80); +const { CREATE, UPDATE } = crudx_1.CrudValidationGroups; +let Contract = exports.Contract = class Contract extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + tslib_1.__metadata("design:type", Number) +], Contract.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "userId" }), + (0, class_transformer_1.Exclude)({ toPlainOnly: true }), + tslib_1.__metadata("design:type", String) +], Contract.prototype, "userId", void 0); +tslib_1.__decorate([ + (0, class_validator_1.MaxLength)(60), + (0, typeorm_1.Column)({ name: "contractNumber", type: "varchar", length: 60 }), + tslib_1.__metadata("design:type", String) +], Contract.prototype, "contractNumber", void 0); +tslib_1.__decorate([ + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.IsDateString)(), + (0, typeorm_1.Column)({ name: "startedAt", type: "date" }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], Contract.prototype, "startedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "note", type: "varchar", length: "11", default: "" }), + (0, class_validator_1.IsOptional)({ groups: [UPDATE] }), + (0, class_validator_1.IsString)(), + tslib_1.__metadata("design:type", String) +], Contract.prototype, "note", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)((type) => user_entity_1.User, (user) => user.id), + (0, typeorm_1.JoinColumn)({ + referencedColumnName: "id", + foreignKeyConstraintName: "contact_user", + }), + tslib_1.__metadata("design:type", typeof (_b = typeof user_entity_1.User !== "undefined" && user_entity_1.User) === "function" ? _b : Object) +], Contract.prototype, "user", void 0); +exports.Contract = Contract = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Contract); + + +/***/ }), +/* 86 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Phone = void 0; +const tslib_1 = __webpack_require__(2); +const class_transformer_1 = __webpack_require__(18); +const typeorm_1 = __webpack_require__(50); +const user_entity_1 = __webpack_require__(80); +let Phone = exports.Phone = class Phone extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)(), + (0, typeorm_1.PrimaryGeneratedColumn)("uuid"), + tslib_1.__metadata("design:type", String) +], Phone.prototype, "id", void 0); +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)({ toPlainOnly: true }), + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Phone.prototype, "userId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ type: "varchar", nullable: false }), + tslib_1.__metadata("design:type", String) +], Phone.prototype, "phoneNumber", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)((type) => user_entity_1.User, (user) => user.id), + (0, typeorm_1.JoinColumn)({ + referencedColumnName: "id", + foreignKeyConstraintName: "UserId", + }), + tslib_1.__metadata("design:type", typeof (_a = typeof user_entity_1.User !== "undefined" && user_entity_1.User) === "function" ? _a : Object) +], Phone.prototype, "user", void 0); +exports.Phone = Phone = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Phone); + + +/***/ }), +/* 87 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const user_dto_1 = __webpack_require__(88); +const user_entity_1 = __webpack_require__(80); +const user_service_1 = __webpack_require__(79); +let UserController = exports.UserController = class UserController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } + async emails(req) { + return this.service.find({ select: ["email"] }); + } +}; +tslib_1.__decorate([ + (0, common_1.UseInterceptors)(crudx_1.CrudRequestInterceptor), + (0, common_1.Get)("/emails"), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _b : Object]), + tslib_1.__metadata("design:returntype", Promise) +], UserController.prototype, "emails", null); +exports.UserController = UserController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: user_entity_1.User, + }, + dto: { + create: user_dto_1.UserDto, + update: user_dto_1.UserDto, + }, + params: { + id: { + type: "uuid", + field: "id", + primary: true, + }, + }, + }), + (0, common_1.Controller)("users"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object]) +], UserController); + + +/***/ }), +/* 88 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.UserDto = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_validator_1 = __webpack_require__(17); +const lodash_1 = __webpack_require__(8); +const user_email_already_exists_constraint_1 = __webpack_require__(78); +const { CREATE } = crudx_1.CrudValidationGroups; +class UserDto { +} +exports.UserDto = UserDto; +tslib_1.__decorate([ + (0, class_validator_1.ValidateIf)((o) => !(0, lodash_1.isEmpty)(o.email)), + (0, class_validator_1.IsEmail)(), + (0, user_email_already_exists_constraint_1.IsEmailUserAlreadyExist)({ + message: "Email already exists", + groups: [CREATE], + }), + tslib_1.__metadata("design:type", String) +], UserDto.prototype, "email", void 0); +tslib_1.__decorate([ + (0, class_validator_1.ValidateIf)((o) => !(0, lodash_1.isEmpty)(o.email)), + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.MaxLength)(32, { message: "Password is too long" }), + (0, class_validator_1.MinLength)(8, { + message: "Password must be at least 8 characters long", + }), + tslib_1.__metadata("design:type", String) +], UserDto.prototype, "password", void 0); + + +/***/ }), +/* 89 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const config_1 = __webpack_require__(90); +const typeorm_1 = __webpack_require__(77); +const config_2 = __webpack_require__(91); +const address_module_1 = __webpack_require__(94); +const app_controller_1 = __webpack_require__(98); +const app_service_1 = __webpack_require__(99); +const auth_module_1 = __webpack_require__(100); +const claim_module_1 = __webpack_require__(107); +const contract_module_1 = __webpack_require__(110); +const phone_module_1 = __webpack_require__(115); +const user_module_1 = __webpack_require__(76); +let AppModule = exports.AppModule = class AppModule { +}; +exports.AppModule = AppModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [ + config_1.ConfigModule.forRoot({ + isGlobal: true, + load: [config_2.databaseConfig], + }), + typeorm_1.TypeOrmModule.forRootAsync({ + useFactory: (config) => ({ + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }), + inject: [config_1.ConfigService], + }), + user_module_1.UserModule, + phone_module_1.PhoneModule, + auth_module_1.AuthModule, + contract_module_1.ContractModule, + claim_module_1.ClaimModule, + address_module_1.AddressModule, + ], + controllers: [app_controller_1.AppController], + providers: [app_service_1.AppService], + }) +], AppModule); + + +/***/ }), +/* 90 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/config"); + +/***/ }), +/* 91 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const tslib_1 = __webpack_require__(2); +tslib_1.__exportStar(__webpack_require__(92), exports); + + +/***/ }), +/* 92 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.databaseConfig = void 0; +const config_1 = __webpack_require__(90); +const address_type_entity_1 = __webpack_require__(84); +const address_entity_1 = __webpack_require__(82); +const claim_entity_1 = __webpack_require__(93); +const contract_entity_1 = __webpack_require__(85); +const phone_entity_1 = __webpack_require__(86); +const user_entity_1 = __webpack_require__(80); +exports.databaseConfig = (0, config_1.registerAs)("database", () => ({ + type: process.env.DB_TYPE, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + username: process.env.DB_USERNAME, + password: process.env.DB_PASSWORD, + database: process.env.DB_DATABASE, + entities: [user_entity_1.User, phone_entity_1.Phone, contract_entity_1.Contract, claim_entity_1.Claim, address_entity_1.Address, address_type_entity_1.AddressType], + synchronize: true, + autoLoadEntities: true, + encoding: process.env.DB_CHARSET, +})); + + +/***/ }), +/* 93 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Claim = void 0; +const tslib_1 = __webpack_require__(2); +const typeorm_1 = __webpack_require__(50); +const contract_entity_1 = __webpack_require__(85); +let Claim = exports.Claim = class Claim extends typeorm_1.BaseEntity { +}; +tslib_1.__decorate([ + (0, typeorm_1.PrimaryGeneratedColumn)(), + tslib_1.__metadata("design:type", Number) +], Claim.prototype, "id", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "amount", type: "double" }), + tslib_1.__metadata("design:type", Number) +], Claim.prototype, "amount", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "date", type: "date" }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], Claim.prototype, "date", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "contractId", type: "int" }), + tslib_1.__metadata("design:type", Number) +], Claim.prototype, "contractId", void 0); +tslib_1.__decorate([ + (0, typeorm_1.ManyToOne)((type) => contract_entity_1.Contract, (contract) => contract.id, { + cascade: true, + onDelete: "CASCADE", + }), + (0, typeorm_1.JoinColumn)({ + referencedColumnName: "id", + name: "contractId", + }), + tslib_1.__metadata("design:type", typeof (_b = typeof contract_entity_1.Contract !== "undefined" && contract_entity_1.Contract) === "function" ? _b : Object) +], Claim.prototype, "contract", void 0); +exports.Claim = Claim = tslib_1.__decorate([ + (0, typeorm_1.Entity)() +], Claim); + + +/***/ }), +/* 94 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const address_type_entity_1 = __webpack_require__(84); +const address_type_service_1 = __webpack_require__(95); +const address_controller_1 = __webpack_require__(96); +const address_entity_1 = __webpack_require__(82); +const address_service_1 = __webpack_require__(97); +let AddressModule = exports.AddressModule = class AddressModule { +}; +exports.AddressModule = AddressModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [ + typeorm_1.TypeOrmModule.forFeature([address_entity_1.Address]), + typeorm_1.TypeOrmModule.forFeature([address_type_entity_1.AddressType]), + ], + controllers: [address_controller_1.AddressController], + providers: [address_service_1.AddressService, address_type_service_1.AddressTypeService], + exports: [address_service_1.AddressService, address_type_service_1.AddressTypeService], + }) +], AddressModule); + + +/***/ }), +/* 95 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressTypeService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const address_type_entity_1 = __webpack_require__(84); +let AddressTypeService = exports.AddressTypeService = class AddressTypeService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.AddressTypeService = AddressTypeService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(address_type_entity_1.AddressType)), + tslib_1.__metadata("design:paramtypes", [Object]) +], AddressTypeService); + + +/***/ }), +/* 96 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const address_entity_1 = __webpack_require__(82); +const address_service_1 = __webpack_require__(97); +let AddressController = exports.AddressController = class AddressController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.AddressController = AddressController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: address_entity_1.Address, + }, + params: { + userId: { + type: "uuid", + field: "userId", + }, + }, + query: { + exclude: ["userId", "typeId"], + join: { + type: { + allow: ["id", "type"], + required: true, + eager: true, + }, + }, + filter: { + isActive: { + $eq: true, + }, + }, + }, + }), + (0, common_1.Controller)("/users/:userId/addresses"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof address_service_1.AddressService !== "undefined" && address_service_1.AddressService) === "function" ? _a : Object]) +], AddressController); + + +/***/ }), +/* 97 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AddressService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const address_entity_1 = __webpack_require__(82); +let AddressService = exports.AddressService = class AddressService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.AddressService = AddressService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(address_entity_1.Address)), + tslib_1.__metadata("design:paramtypes", [Object]) +], AddressService); + + +/***/ }), +/* 98 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppController = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const app_service_1 = __webpack_require__(99); +let AppController = exports.AppController = class AppController { + constructor(appService) { + this.appService = appService; + } + getData() { + return this.appService.getData(); + } +}; +tslib_1.__decorate([ + (0, common_1.Get)(), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", []), + tslib_1.__metadata("design:returntype", void 0) +], AppController.prototype, "getData", null); +exports.AppController = AppController = tslib_1.__decorate([ + (0, common_1.Controller)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof app_service_1.AppService !== "undefined" && app_service_1.AppService) === "function" ? _a : Object]) +], AppController); + + +/***/ }), +/* 99 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppService = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +let AppService = exports.AppService = class AppService { + getData() { + return { message: "Hello API" }; + } +}; +exports.AppService = AppService = tslib_1.__decorate([ + (0, common_1.Injectable)() +], AppService); + + +/***/ }), +/* 100 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const jwt_1 = __webpack_require__(101); +const typeorm_1 = __webpack_require__(77); +const user_entity_1 = __webpack_require__(80); +const user_module_1 = __webpack_require__(76); +const user_service_1 = __webpack_require__(79); +const auth_controller_1 = __webpack_require__(102); +const auth_service_1 = __webpack_require__(103); +const constants_1 = __webpack_require__(104); +const me_controller_1 = __webpack_require__(105); +let AuthModule = exports.AuthModule = class AuthModule { +}; +exports.AuthModule = AuthModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [ + user_module_1.UserModule, + typeorm_1.TypeOrmModule.forFeature([user_entity_1.User]), + jwt_1.JwtModule.register({ + global: true, + secret: constants_1.jwtConstants.secret, + signOptions: { expiresIn: "60s" }, + }), + ], + controllers: [auth_controller_1.AuthController, me_controller_1.MeController], + providers: [auth_service_1.AuthService, user_service_1.UserService], + exports: [auth_service_1.AuthService], + }) +], AuthModule); + + +/***/ }), +/* 101 */ +/***/ ((module) => { + +"use strict"; +module.exports = require("@nestjs/jwt"); + +/***/ }), +/* 102 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthController = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const auth_service_1 = __webpack_require__(103); +let AuthController = exports.AuthController = class AuthController { + constructor(authService) { + this.authService = authService; + } + async signIn(body) { + return this.authService.signIn(body.email, body.pass); + } +}; +tslib_1.__decorate([ + (0, common_1.HttpCode)(common_1.HttpStatus.OK), + (0, common_1.Post)("sign-in"), + tslib_1.__param(0, (0, common_1.Body)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof Record !== "undefined" && Record) === "function" ? _b : Object]), + tslib_1.__metadata("design:returntype", Promise) +], AuthController.prototype, "signIn", null); +exports.AuthController = AuthController = tslib_1.__decorate([ + (0, common_1.Controller)("auth"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof auth_service_1.AuthService !== "undefined" && auth_service_1.AuthService) === "function" ? _a : Object]) +], AuthController); + + +/***/ }), +/* 103 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthService = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const jwt_1 = __webpack_require__(101); +const bcrypt = tslib_1.__importStar(__webpack_require__(81)); +const user_service_1 = __webpack_require__(79); +let AuthService = exports.AuthService = class AuthService { + constructor(service, jwtService) { + this.service = service; + this.jwtService = jwtService; + } + async signIn(email, pass) { + const user = await this.service.findOne({ where: { email: email } }); + if (!bcrypt.compareSync(pass, user?.password)) { + throw new common_1.UnauthorizedException(); + } + const payload = { sub: user.id, username: user.email }; + return { + access_token: await this.jwtService.signAsync(payload), + }; + } +}; +exports.AuthService = AuthService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object, typeof (_b = typeof jwt_1.JwtService !== "undefined" && jwt_1.JwtService) === "function" ? _b : Object]) +], AuthService); + + +/***/ }), +/* 104 */ +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.jwtConstants = void 0; +exports.jwtConstants = { + secret: "some well defined secret key", +}; + + +/***/ }), +/* 105 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.MeController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const user_entity_1 = __webpack_require__(80); +const user_service_1 = __webpack_require__(79); +const auth_guard_1 = __webpack_require__(106); +let MeController = exports.MeController = class MeController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.MeController = MeController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: user_entity_1.User, + }, + routes: { + only: ["getOneBase"], + }, + params: { + id: { + primary: true, + disabled: true, + }, + }, + }), + (0, crudx_1.CrudAuth)({ + property: "user", + filter: (user) => ({ + id: user.sub, + }), + }), + (0, common_1.Controller)("me"), + (0, crudx_1.Feature)("GetMyInfo"), + (0, common_1.UseGuards)(auth_guard_1.AuthGuard), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof user_service_1.UserService !== "undefined" && user_service_1.UserService) === "function" ? _a : Object]) +], MeController); + + +/***/ }), +/* 106 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AuthGuard = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const core_1 = __webpack_require__(75); +const jwt_1 = __webpack_require__(101); +const constants_1 = __webpack_require__(104); +let AuthGuard = exports.AuthGuard = class AuthGuard { + constructor(jwtService, reflector) { + this.jwtService = jwtService; + this.reflector = reflector; + } + async canActivate(context) { + const request = context.switchToHttp().getRequest(); + const token = this.extractTokenFromHeader(request); + if (!token) { + throw new common_1.UnauthorizedException(); + } + try { + const payload = await this.jwtService.verifyAsync(token, { + secret: constants_1.jwtConstants.secret, + }); + request["user"] = payload; + } + catch { + throw new common_1.UnauthorizedException(); + } + // up here, it's a simple auth guard with jwt + // + const handler = context.getHandler(); + const controller = context.getClass(); + const feature = (0, crudx_1.getFeature)(controller); + const action = (0, crudx_1.getAction)(handler); + console.log(`${feature}-${action}`); // e.g "GetMyInfo-Read-One" + // write custom acl rule + return true; + } + extractTokenFromHeader(request) { + const [type, token] = request.headers["authorization"]?.split(" ") ?? []; + return type === "Bearer" ? token : undefined; + } +}; +exports.AuthGuard = AuthGuard = tslib_1.__decorate([ + (0, common_1.Injectable)(), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof jwt_1.JwtService !== "undefined" && jwt_1.JwtService) === "function" ? _a : Object, typeof (_b = typeof core_1.Reflector !== "undefined" && core_1.Reflector) === "function" ? _b : Object]) +], AuthGuard); + + +/***/ }), +/* 107 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClaimModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const claim_controller_1 = __webpack_require__(108); +const claim_entity_1 = __webpack_require__(93); +const claim_service_1 = __webpack_require__(109); +let ClaimModule = exports.ClaimModule = class ClaimModule { +}; +exports.ClaimModule = ClaimModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([claim_entity_1.Claim])], + providers: [claim_service_1.ClaimService], + controllers: [claim_controller_1.ClaimController], + exports: [claim_service_1.ClaimService], + }) +], ClaimModule); + + +/***/ }), +/* 108 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClaimController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const claim_entity_1 = __webpack_require__(93); +const claim_service_1 = __webpack_require__(109); +let ClaimController = exports.ClaimController = class ClaimController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.ClaimController = ClaimController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: claim_entity_1.Claim, + }, + params: { + contractId: { + type: "number", + field: "contractId", + }, + }, + query: { + allow: ["id", "amount", "date"], + persist: ["id"], + limit: 5, + maxLimit: 5, + alwaysPaginate: true, + sort: [ + { + field: "id", + order: "DESC", + }, + ], + cache: 2000, + join: { + contract: { + eager: true, + }, + }, + }, + }), + (0, common_1.Controller)("/contracts/:contractId/claims"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof claim_service_1.ClaimService !== "undefined" && claim_service_1.ClaimService) === "function" ? _a : Object]) +], ClaimController); + + +/***/ }), +/* 109 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ClaimService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const claim_entity_1 = __webpack_require__(93); +let ClaimService = exports.ClaimService = class ClaimService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.ClaimService = ClaimService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(claim_entity_1.Claim)), + tslib_1.__metadata("design:paramtypes", [Object]) +], ClaimService); + + +/***/ }), +/* 110 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const contract_controller_1 = __webpack_require__(111); +const contract_entity_1 = __webpack_require__(85); +const contract_service_1 = __webpack_require__(114); +let ContractModule = exports.ContractModule = class ContractModule { +}; +exports.ContractModule = ContractModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([contract_entity_1.Contract])], + providers: [contract_service_1.ContractService], + controllers: [contract_controller_1.ContractController], + exports: [contract_service_1.ContractService], + }) +], ContractModule); + + +/***/ }), +/* 111 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const contract_create_dto_1 = __webpack_require__(112); +const contract_create_response_dto_1 = __webpack_require__(113); +const contract_entity_1 = __webpack_require__(85); +const contract_service_1 = __webpack_require__(114); +let ContractController = exports.ContractController = class ContractController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } +}; +exports.ContractController = ContractController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: contract_entity_1.Contract, + }, + dto: { + create: contract_create_dto_1.ContractCreateDto, + }, + routes: { + exclude: ["deleteOneBase"], + }, + params: { + userId: { + field: "userId", + type: "uuid", + }, + }, + serialize: { + create: contract_create_response_dto_1.ContractCreateResponseDto, + }, + }), + (0, common_1.Controller)("/users/:userId/contracts"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof contract_service_1.ContractService !== "undefined" && contract_service_1.ContractService) === "function" ? _a : Object]) +], ContractController); + + +/***/ }), +/* 112 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractCreateDto = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_validator_1 = __webpack_require__(17); +const typeorm_1 = __webpack_require__(50); +const { CREATE, UPDATE } = crudx_1.CrudValidationGroups; +class ContractCreateDto { +} +exports.ContractCreateDto = ContractCreateDto; +tslib_1.__decorate([ + (0, class_validator_1.MaxLength)(60), + (0, typeorm_1.Column)({ name: "contractNumber", type: "varchar", length: 60 }), + tslib_1.__metadata("design:type", String) +], ContractCreateDto.prototype, "contractNumber", void 0); +tslib_1.__decorate([ + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.IsDateString)(), + (0, typeorm_1.Column)({ name: "startedAt", type: "date" }), + tslib_1.__metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], ContractCreateDto.prototype, "startedAt", void 0); +tslib_1.__decorate([ + (0, typeorm_1.Column)({ name: "note", type: "varchar", length: "11", default: "" }), + (0, class_validator_1.IsOptional)({ groups: [UPDATE] }), + (0, class_validator_1.IsString)(), + tslib_1.__metadata("design:type", String) +], ContractCreateDto.prototype, "note", void 0); + + +/***/ }), +/* 113 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractCreateResponseDto = void 0; +const tslib_1 = __webpack_require__(2); +const class_transformer_1 = __webpack_require__(18); +class ContractCreateResponseDto { +} +exports.ContractCreateResponseDto = ContractCreateResponseDto; +tslib_1.__decorate([ + (0, class_transformer_1.Exclude)(), + tslib_1.__metadata("design:type", String) +], ContractCreateResponseDto.prototype, "userId", void 0); + + +/***/ }), +/* 114 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ContractService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const contract_entity_1 = __webpack_require__(85); +let ContractService = exports.ContractService = class ContractService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.ContractService = ContractService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(contract_entity_1.Contract)), + tslib_1.__metadata("design:paramtypes", [Object]) +], ContractService); + + +/***/ }), +/* 115 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneModule = void 0; +const tslib_1 = __webpack_require__(2); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const phone_controller_1 = __webpack_require__(116); +const phone_entity_1 = __webpack_require__(86); +const phone_service_1 = __webpack_require__(118); +let PhoneModule = exports.PhoneModule = class PhoneModule { +}; +exports.PhoneModule = PhoneModule = tslib_1.__decorate([ + (0, common_1.Module)({ + imports: [typeorm_1.TypeOrmModule.forFeature([phone_entity_1.Phone])], + exports: [phone_service_1.PhoneService], + providers: [phone_service_1.PhoneService], + controllers: [phone_controller_1.PhoneController], + }) +], PhoneModule); + + +/***/ }), +/* 116 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneController = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const phone_dto_1 = __webpack_require__(117); +const phone_entity_1 = __webpack_require__(86); +const phone_service_1 = __webpack_require__(118); +let PhoneController = exports.PhoneController = class PhoneController { + constructor(service) { + this.service = service; + } + get base() { + return this; + } + async createOne(req, dto) { + const response = await Promise.resolve(this.base.createOneBase(req, dto)); + response["customProp"] = "custom added property"; + return response; + } + async createMany(req, dto) { + const response = await Promise.resolve(this.base.createManyBase(req, dto)); + response.forEach((res) => { + res["customProp"] = "custom added property"; + }); + return response; + } + async getOne(req) { + const response = await Promise.resolve(this.base.getOneBase(req)); + response["customProp"] = "custom added property"; + return response; + } + async getMany(req) { + const response = (await this.base.getManyBase(req)); + response.data.forEach((res) => { + res["customProp"] = "custom added property"; + }); + return response; + } +}; +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__param(1, (0, crudx_1.ParsedBody)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_b = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _b : Object, Object]), + tslib_1.__metadata("design:returntype", typeof (_c = typeof Promise !== "undefined" && Promise) === "function" ? _c : Object) +], PhoneController.prototype, "createOne", null); +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__param(1, (0, crudx_1.ParsedBody)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_d = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _d : Object, typeof (_e = typeof crudx_1.CreateManyDto !== "undefined" && crudx_1.CreateManyDto) === "function" ? _e : Object]), + tslib_1.__metadata("design:returntype", typeof (_f = typeof Promise !== "undefined" && Promise) === "function" ? _f : Object) +], PhoneController.prototype, "createMany", null); +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_g = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _g : Object]), + tslib_1.__metadata("design:returntype", typeof (_h = typeof Promise !== "undefined" && Promise) === "function" ? _h : Object) +], PhoneController.prototype, "getOne", null); +tslib_1.__decorate([ + (0, crudx_1.Override)(), + tslib_1.__param(0, (0, crudx_1.ParsedRequest)()), + tslib_1.__metadata("design:type", Function), + tslib_1.__metadata("design:paramtypes", [typeof (_j = typeof crudx_1.CrudRequest !== "undefined" && crudx_1.CrudRequest) === "function" ? _j : Object]), + tslib_1.__metadata("design:returntype", typeof (_k = typeof Promise !== "undefined" && Promise) === "function" ? _k : Object) +], PhoneController.prototype, "getMany", null); +exports.PhoneController = PhoneController = tslib_1.__decorate([ + (0, crudx_1.Crud)({ + model: { + type: phone_entity_1.Phone, + }, + dto: { + create: phone_dto_1.PhoneDto, + update: phone_dto_1.PhoneDto, + }, + params: { + id: { + field: "id", + type: "uuid", + primary: true, + }, + userId: { + field: "userId", + type: "uuid", + }, + }, + query: { + limit: 25, + cache: 2000, + alwaysPaginate: true, + }, + }), + (0, common_1.Controller)("/users/:userId/phones"), + tslib_1.__metadata("design:paramtypes", [typeof (_a = typeof phone_service_1.PhoneService !== "undefined" && phone_service_1.PhoneService) === "function" ? _a : Object]) +], PhoneController); + + +/***/ }), +/* 117 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneDto = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const class_transformer_1 = __webpack_require__(18); +const class_validator_1 = __webpack_require__(17); +const { CREATE } = crudx_1.CrudValidationGroups; +class PhoneDto { +} +exports.PhoneDto = PhoneDto; +tslib_1.__decorate([ + (0, class_validator_1.IsNotEmpty)(), + (0, class_validator_1.IsString)(), + (0, class_transformer_1.Expose)(), + tslib_1.__metadata("design:type", String) +], PhoneDto.prototype, "phoneNumber", void 0); + + +/***/ }), +/* 118 */ +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PhoneService = void 0; +const tslib_1 = __webpack_require__(2); +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const typeorm_1 = __webpack_require__(77); +const class_validator_1 = __webpack_require__(17); +const typeorm_2 = __webpack_require__(50); +const phone_entity_1 = __webpack_require__(86); +let PhoneService = exports.PhoneService = class PhoneService extends crudx_1.TypeOrmCrudService { + constructor(repo) { + super(repo); + this.repo = repo; + } +}; +exports.PhoneService = PhoneService = tslib_1.__decorate([ + (0, common_1.Injectable)(), + (0, common_1.Catch)(typeorm_2.QueryFailedError, class_validator_1.ValidationError, typeorm_2.EntityNotFoundError), + tslib_1.__param(0, (0, typeorm_1.InjectRepository)(phone_entity_1.Phone)), + tslib_1.__metadata("design:paramtypes", [Object]) +], PhoneService); + + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry need to be wrapped in an IIFE because it need to be in strict mode. +(() => { +"use strict"; +var exports = __webpack_exports__; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +/** + * This is not a production server yet! + * This is only a minimal backend to get started. + */ +const crudx_1 = __webpack_require__(1); +const common_1 = __webpack_require__(7); +const core_1 = __webpack_require__(75); +const class_validator_1 = __webpack_require__(17); +const user_module_1 = __webpack_require__(76); +/* + * Default configuration for CRUD, can be overridden in each module. + * Must be loaded before importing AppModule. + */ +crudx_1.CrudConfigService.load({ + query: { + limit: 25, + cache: 2000, + alwaysPaginate: true, + }, + routes: { + updateOneBase: { + allowParamsOverride: true, + }, + deleteOneBase: { + returnDeleted: true, + }, + }, +}); +crudx_1.QueryBuilderService.setOptions({ + paramNamesMap: { + search: "s", + join: ["join[]", "join", "include[]", "include"], + }, +}); +const app_module_1 = __webpack_require__(89); +async function bootstrap() { + const app = await core_1.NestFactory.create(app_module_1.AppModule); + const globalPrefix = "v1"; + app.setGlobalPrefix(globalPrefix); + app.enableCors(); + (0, class_validator_1.useContainer)(app.select(user_module_1.UserModule), { fallbackOnErrors: true }); + const port = process.env.PORT || 3000; + await app.listen(port); + common_1.Logger.log(`🚀 Application is running on: http://localhost:${port}/${globalPrefix}`); +} +bootstrap(); + +})(); + +var __webpack_export_target__ = exports; +for(var i in __webpack_exports__) __webpack_export_target__[i] = __webpack_exports__[i]; +if(__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, "__esModule", { value: true }); +/******/ })() +; +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/dist/packages/demo/main.js.map b/dist/packages/demo/main.js.map new file mode 100644 index 000000000..42160988c --- /dev/null +++ b/dist/packages/demo/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","mappings":"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","sources":["webpack:///../crudx/src/index.ts","webpack:///external commonjs \"tslib\"","webpack:///../crudx/src/decorators/index.ts","webpack:///../crudx/src/decorators/crud.decorator.ts","webpack:///../crudx/src/services/index.ts","webpack:///../crudx/src/services/abstract-crud.service.ts","webpack:///external commonjs \"@nestjs/common\"","webpack:///external commonjs \"lodash\"","webpack:///../crudx/src/services/crud-config.service.ts","webpack:///../crudx/src/helpers/index.ts","webpack:///../crudx/src/helpers/checkers.helper.ts","webpack:///../crudx/src/helpers/crud-validation.helper.ts","webpack:///../crudx/src/enums/index.ts","webpack:///../crudx/src/enums/crud-actions.enum.ts","webpack:///../crudx/src/enums/crud-validation-groups.enum.ts","webpack:///external commonjs \"@nestjs/swagger\"","webpack:///external commonjs \"class-validator\"","webpack:///external commonjs \"class-transformer\"","webpack:///../crudx/src/helpers/reflection.helper.ts","webpack:///external commonjs \"@nestjs/common/enums/route-paramtypes.enum\"","webpack:///external commonjs \"@nestjs/common/constants\"","webpack:///../crudx/src/constants.ts","webpack:///../crudx/src/helpers/request-validation.helper.ts","webpack:///../crudx/src/exceptions/index.ts","webpack:///../crudx/src/exceptions/request-query.exception.ts","webpack:///../crudx/src/types/index.ts","webpack:///../crudx/src/types/common.types.ts","webpack:///../crudx/src/types/crud.types.ts","webpack:///../crudx/src/types/request-param.types.ts","webpack:///../crudx/src/types/request-query.types.ts","webpack:///../crudx/src/helpers/serialize.helper.ts","webpack:///../crudx/src/helpers/swagger.helper.ts","webpack:///../crudx/src/helpers/safe-require.helper.ts","webpack:///../crudx/src/helpers/ sync","webpack:///external commonjs \"@nestjs/swagger/dist/constants\"","webpack:///external commonjs \"pluralize\"","webpack:///external commonjs \"@nestjs/swagger/package.json\"","webpack:///../crudx/src/services/query-builder.service.ts","webpack:///external commonjs \"qs\"","webpack:///external commonjs \"deepmerge\"","webpack:///../crudx/src/services/query-parser.service.ts","webpack:///../crudx/src/services/routes-factory.service.ts","webpack:///../crudx/src/interceptors/index.ts","webpack:///../crudx/src/interceptors/crud-request.interceptor.ts","webpack:///../crudx/src/interceptors/crud-base.interceptor.ts","webpack:///../crudx/src/interceptors/crud-response.interceptor.ts","webpack:///external commonjs \"rxjs/operators\"","webpack:///../crudx/src/services/type-orm-crud.service.ts","webpack:///external commonjs \"@zmotivat0r/o0\"","webpack:///external commonjs \"typeorm\"","webpack:///../crudx/src/decorators/crud-auth.decorator.ts","webpack:///../crudx/src/decorators/override.decorator.ts","webpack:///../crudx/src/decorators/parsed-request.decorator.ts","webpack:///../crudx/src/decorators/parsed-body.decorator.ts","webpack:///../crudx/src/decorators/feature-action.decorator.ts","webpack:///../crudx/src/interfaces/index.ts","webpack:///../crudx/src/interfaces/auth-options.interface.ts","webpack:///../crudx/src/interfaces/base-route.interface.ts","webpack:///../crudx/src/interfaces/create-many-dto.interface.ts","webpack:///../crudx/src/interfaces/create-query-params.interface.ts","webpack:///../crudx/src/interfaces/crud-controller.interface.ts","webpack:///../crudx/src/interfaces/crud-global-config.interface.ts","webpack:///../crudx/src/interfaces/crud-options.interface.ts","webpack:///../crudx/src/interfaces/crud-request.interface.ts","webpack:///../crudx/src/interfaces/dto-options.interface.ts","webpack:///../crudx/src/interfaces/get-many-default-response.interface.ts","webpack:///../crudx/src/interfaces/model-options.interface.ts","webpack:///../crudx/src/interfaces/operators-options.interface.ts","webpack:///../crudx/src/interfaces/params-options.interface.ts","webpack:///../crudx/src/interfaces/parsed-request.interface.ts","webpack:///../crudx/src/interfaces/query-options.interface.ts","webpack:///../crudx/src/interfaces/request-query-builder-options.interface.ts","webpack:///../crudx/src/interfaces/routes-options.interface.ts","webpack:///../crudx/src/interfaces/serialize-options.interface.ts","webpack:///external commonjs \"@nestjs/core\"","webpack:///./src/app/user/user.module.ts","webpack:///external commonjs \"@nestjs/typeorm\"","webpack:///./src/app/user/user-email-already-exists.constraint.ts","webpack:///./src/app/user/user.service.ts","webpack:///./src/app/user/user.entity.ts","webpack:///external commonjs \"bcryptjs\"","webpack:///./src/app/address/address.entity.ts","webpack:///external commonjs \"typeorm/driver/mongodb/bson.typings\"","webpack:///./src/app/address/address-type.entity.ts","webpack:///./src/app/contract/contract.entity.ts","webpack:///./src/app/phone/phone.entity.ts","webpack:///./src/app/user/user.controller.ts","webpack:///./src/app/user/user.dto.ts","webpack:///./src/app/app.module.ts","webpack:///external commonjs \"@nestjs/config\"","webpack:///./src/config/index.ts","webpack:///./src/config/database.config.ts","webpack:///./src/app/claims/claim.entity.ts","webpack:///./src/app/address/address.module.ts","webpack:///./src/app/address/address-type.service.ts","webpack:///./src/app/address/address.controller.ts","webpack:///./src/app/address/address.service.ts","webpack:///./src/app/app.controller.ts","webpack:///./src/app/app.service.ts","webpack:///./src/app/auth/auth.module.ts","webpack:///external commonjs \"@nestjs/jwt\"","webpack:///./src/app/auth/auth.controller.ts","webpack:///./src/app/auth/auth.service.ts","webpack:///./src/app/auth/constants.ts","webpack:///./src/app/auth/me.controller.ts","webpack:///./src/app/auth/auth.guard.ts","webpack:///./src/app/claims/claim.module.ts","webpack:///./src/app/claims/claim.controller.ts","webpack:///./src/app/claims/claim.service.ts","webpack:///./src/app/contract/contract.module.ts","webpack:///./src/app/contract/contract.controller.ts","webpack:///./src/app/contract/contract.create.dto.ts","webpack:///./src/app/contract/contract.create.response.dto.ts","webpack:///./src/app/contract/contract.service.ts","webpack:///./src/app/phone/phone.module.ts","webpack:///./src/app/phone/phone.controller.ts","webpack:///./src/app/phone/phone.dto.ts","webpack:///./src/app/phone/phone.service.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/main.ts"],"sourcesContent":["export * from \"./decorators\";\nexport * from \"./constants\";\nexport * from \"./enums\";\nexport * from \"./exceptions\";\nexport * from \"./helpers\";\nexport * from \"./interceptors\";\nexport * from \"./interfaces\";\nexport * from \"./services\";\nexport * from \"./types\";\n","module.exports = require(\"tslib\");","export * from \"./crud.decorator\";\nexport * from \"./crud-auth.decorator\";\nexport * from \"./override.decorator\";\nexport * from \"./parsed-request.decorator\";\nexport * from \"./parsed-body.decorator\";\nexport * from \"./feature-action.decorator\";\n","import { RoutesFactoryService } from \"../services\";\nimport { CrudOptions } from \"../interfaces\";\n\nexport const Crud =\n (options: CrudOptions) =>\n (target: Object): void => {\n const factoryMethod = options.routesFactory || RoutesFactoryService;\n let factory: RoutesFactoryService = new factoryMethod(target, options);\n };\n","export * from \"./abstract-crud.service\";\nexport * from \"./crud-config.service\";\nexport * from \"./query-builder.service\";\nexport * from \"./query-parser.service\";\nexport * from \"./routes-factory.service\";\nexport * from \"./type-orm-crud.service\";\n","import { BadRequestException, NotFoundException } from \"@nestjs/common\";\nimport { get, isEmpty, keys } from \"lodash\";\n\nimport {\n CreateManyDto,\n CrudRequest,\n CrudRequestOptions,\n GetManyDefaultResponse,\n ParsedRequestParams,\n QueryOptions,\n} from \"../interfaces\";\n\nexport abstract class CrudService {\n abstract getMany(req: CrudRequest): Promise | T[]>;\n\n abstract getOne(req: CrudRequest): Promise;\n\n abstract createOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract createMany(req: CrudRequest, dto: CreateManyDto): Promise;\n\n abstract updateOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract replaceOne(req: CrudRequest, dto: DTO): Promise;\n\n abstract deleteOne(req: CrudRequest): Promise;\n\n abstract recoverOne(req: CrudRequest): Promise;\n\n throwBadRequestException(msg?: any): BadRequestException {\n throw new BadRequestException(msg);\n }\n\n throwNotFoundException(name: string): NotFoundException {\n throw new NotFoundException(`${name} not found`);\n }\n\n /**\n * Wrap page into page-info\n * override this method to create custom page-info response\n * or set custom `serialize.getMany` dto in the controller's CrudOption\n * @param data\n * @param total\n * @param limit\n * @param offset\n */\n createPageInfo(\n data: T[],\n total: number,\n limit: number,\n offset: number\n ): GetManyDefaultResponse {\n return {\n data,\n count: data.length,\n total,\n page: limit ? Math.floor(offset / limit) + 1 : 1,\n pageCount: limit && total ? Math.ceil(total / limit) : 1,\n };\n }\n\n /**\n * Determine if need paging\n * @param parsed\n * @param options\n */\n decidePagination(\n parsed: ParsedRequestParams,\n options: CrudRequestOptions\n ): boolean {\n return (\n options.query?.alwaysPaginate ||\n ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) &&\n !!this.getTake(parsed, options.query))\n );\n }\n\n /**\n * Get number of resources to be fetched\n * @param query\n * @param options\n */\n getTake(query: ParsedRequestParams, options: QueryOptions): number | null {\n if (query.limit) {\n return options.maxLimit\n ? query.limit <= options.maxLimit\n ? query.limit\n : options.maxLimit\n : query.limit;\n }\n /* istanbul ignore if */\n if (options.limit) {\n return options.maxLimit\n ? options.limit <= options.maxLimit\n ? options.limit\n : options.maxLimit\n : options.limit;\n }\n\n return options.maxLimit ? options.maxLimit : null;\n }\n\n /**\n * Get number of resources to be skipped\n * @param query\n * @param take\n */\n getSkip(query: ParsedRequestParams, take: number): number | null {\n return query.page && take\n ? take * (query.page - 1)\n : query.offset\n ? query.offset\n : null;\n }\n\n /**\n * Get primary param name from CrudOptions\n * @param options\n */\n getPrimaryParams(options: CrudRequestOptions): string[] {\n if (isEmpty(options.params)) {\n return [];\n }\n // @ts-ignore\n return keys(options.params)\n .filter((n: string) => get(options, `params[${n}].primary`, false))\n .map((p: string) => get(options, `params[${p}].field`));\n }\n}\n","module.exports = require(\"@nestjs/common\");","module.exports = require(\"lodash\");","import { isObjectFull } from \"../helpers\";\nimport { CrudGlobalConfig, RequestQueryBuilderOptions } from \"../interfaces\";\n\nimport { QueryBuilderService } from \"./query-builder.service\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst deepmerge = require('deepmerge');\n\nexport class CrudConfigService {\n static config: CrudGlobalConfig = {\n auth: {},\n query: {\n alwaysPaginate: false,\n },\n operators: {},\n routes: {\n getManyBase: { interceptors: [], decorators: [] },\n getOneBase: { interceptors: [], decorators: [] },\n createOneBase: { interceptors: [], decorators: [], returnShallow: false },\n createManyBase: { interceptors: [], decorators: [] },\n updateOneBase: {\n interceptors: [],\n decorators: [],\n allowParamsOverride: false,\n returnShallow: false,\n },\n replaceOneBase: {\n interceptors: [],\n decorators: [],\n allowParamsOverride: false,\n returnShallow: false,\n },\n deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false },\n recoverOneBase: {\n interceptors: [],\n decorators: [],\n returnRecovered: false,\n },\n },\n params: {},\n };\n\n static load(config: CrudGlobalConfig = {}): void {\n const auth = isObjectFull(config.auth) ? config.auth : {};\n const query = isObjectFull(config.query) ? config.query : {};\n const routes = isObjectFull(config.routes) ? config.routes : {};\n const operators = isObjectFull(config.operators) ? config.operators : {};\n const params = isObjectFull(config.params) ? config.params : {};\n const serialize = isObjectFull(config.serialize) ? config.serialize : {};\n\n if (isObjectFull(config.queryParser)) {\n QueryBuilderService.setOptions({\n ...config.queryParser,\n });\n }\n\n CrudConfigService.config = deepmerge(\n CrudConfigService.config,\n { auth, query, routes, operators, params, serialize },\n // @ts-ignore\n { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray }\n );\n }\n}\n","export * from \"./checkers.helper\";\nexport * from \"./crud-validation.helper\";\nexport * from \"./reflection.helper\";\nexport * from \"./request-validation.helper\";\nexport * from \"./serialize.helper\";\nexport * from \"./swagger.helper\";\n","import {\n every,\n isEqual,\n isArray,\n isBoolean,\n isDate,\n isEmpty,\n isNumber,\n isString,\n keys,\n isNil,\n} from \"lodash\";\n\nexport const isArrayOfStrings = (arr: unknown[]): boolean => {\n return isArray(arr) && every(arr, isString);\n};\nexport const isArrayFull = (val: any): boolean =>\n Array.isArray(val) && !isEmpty(val);\n\nexport const isStringFull = (val: unknown): boolean =>\n isString(val) && !isEmpty(val);\n\nexport const isArrayOfStringsFull = (val: any): boolean =>\n isArrayFull(val) && (val as string[]).every((v: string) => isStringFull(v));\n\nexport const isValue = (val: any): boolean =>\n isStringFull(val) || isNumber(val) || isBoolean(val) || isDate(val);\nexport const hasValue = (val: any): boolean =>\n isArrayFull(val) ? (val as any[]).every((o) => isValue(o)) : isValue(val);\n\nexport const isDateString = (val: any): boolean => {\n const timestamp: number = Date.parse(val);\n return !isNaN(timestamp) && isDate(new Date(timestamp));\n};\n\nexport const isFalse = (val: any): boolean => val === false;\n\nexport const isTrue = (val: any): boolean => val === true;\n\nexport const isIn = (val: any, arr: any[] = []): boolean =>\n arr.some((o) => isEqual(val, o));\n\nexport const isObject = (val: any): boolean =>\n typeof val === \"object\" && !isNil(val);\nexport const isObjectFull = (val: any) => isObject(val) && keys(val).length > 0;\n","import { ValidationPipe } from \"@nestjs/common\";\nimport { isFalse } from \"../helpers\";\nimport { isNil } from \"lodash\";\nimport { CrudValidationGroups } from \"../enums\";\nimport { CreateManyDto, CrudOptions, MergedCrudOptions } from \"../interfaces\";\nimport { ApiProperty } from \"@nestjs/swagger\";\nimport { IsArray, ArrayNotEmpty, ValidateNested } from \"class-validator\";\nimport { Type } from \"class-transformer\";\n\nclass BulkDto implements CreateManyDto {\n // @ts-ignore\n bulk: T[];\n}\n\nexport const getValidationPipe = (\n options: CrudOptions,\n group?: CrudValidationGroups\n): ValidationPipe | undefined => {\n return !isFalse(options.validation)\n ? new ValidationPipe({\n ...(options.validation || {}),\n groups: group ? [group] : undefined,\n })\n : undefined;\n};\n\nexport const createBulkDto = (options: MergedCrudOptions): any => {\n if (!isFalse(options.validation)) {\n const hasDto: boolean = !isNil(options.dto?.create);\n const groups: CrudValidationGroups[] | undefined = !hasDto\n ? [CrudValidationGroups.CREATE]\n : undefined;\n const always: boolean | undefined = hasDto ? true : undefined;\n const Model = hasDto ? options.dto?.create : options.model.type;\n\n class BulkDtoImpl implements CreateManyDto {\n @ApiProperty({ type: Model, isArray: true })\n @IsArray({ groups, always })\n @ArrayNotEmpty({ groups, always })\n @ValidateNested({ each: true, groups, always })\n @Type(() => Model)\n // @ts-ignore\n bulk: T[];\n }\n\n Object.defineProperty(BulkDtoImpl, \"name\", {\n writable: false,\n value: `CreateMany${options.model.type.name}Dto`,\n });\n\n return BulkDtoImpl;\n } else {\n return BulkDto;\n }\n};\n","export * from \"./crud-actions.enum\";\nexport * from \"./crud-validation-groups.enum\";\n","export enum CrudActions {\n ReadAll = \"Read-All\",\n ReadOne = \"Read-One\",\n CreateOne = \"Create-One\",\n CreateMany = \"Create-Many\",\n UpdateOne = \"Update-One\",\n ReplaceOne = \"Replace-One\",\n DeleteOne = \"Delete-One\",\n DeleteAll = \"Delete-All\",\n RecoverOne = \"Recover-One\",\n}\n","export enum CrudValidationGroups {\n CREATE = \"CRUD-CREATE\",\n UPDATE = \"CRUD-UPDATE\",\n}\n","module.exports = require(\"@nestjs/swagger\");","module.exports = require(\"class-validator\");","module.exports = require(\"class-transformer\");","import { RouteParamtypes } from \"@nestjs/common/enums/route-paramtypes.enum\";\nimport {\n CUSTOM_ROUTE_ARGS_METADATA,\n INTERCEPTORS_METADATA,\n METHOD_METADATA,\n PARAMTYPES_METADATA,\n PATH_METADATA,\n ROUTE_ARGS_METADATA,\n} from \"@nestjs/common/constants\";\nimport { ArgumentsHost } from \"@nestjs/common\";\nimport { isFunction } from \"lodash\";\nimport { BaseRoute, MergedCrudOptions, AuthOptions } from \"../interfaces\";\nimport { BaseRouteName } from \"../types\";\nimport {\n CRUD_OPTIONS_METADATA,\n ACTION_NAME_METADATA,\n PARSED_CRUD_REQUEST_KEY,\n PARSED_BODY_METADATA,\n OVERRIDE_METHOD_METADATA,\n CRUD_AUTH_OPTIONS_METADATA,\n} from \"../constants\";\nimport { CrudActions } from \"../enums\";\n\nexport class R {\n static set(\n metadataKey: any,\n metadataValue: any,\n target: Object,\n propertyKey: string | symbol | undefined = undefined\n ): void {\n if (propertyKey) {\n Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);\n } else {\n Reflect.defineMetadata(metadataKey, metadataValue, target);\n }\n }\n\n static get(\n metadataKey: any,\n target: Object,\n propertyKey: string | symbol | undefined = undefined\n ): T {\n return propertyKey\n ? Reflect.getMetadata(metadataKey, target, propertyKey)\n : Reflect.getMetadata(metadataKey, target);\n }\n\n static createCustomRouteArg(\n paramType: string,\n index: number,\n pipes: any[] = [],\n data: any = undefined\n ): any {\n // @ts-ignore\n return {\n [`${paramType}${CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: {\n index,\n factory: (_: any, ctx: ArgumentsHost) =>\n R.getContextRequest(ctx)[paramType],\n data,\n pipes,\n },\n };\n }\n\n static createRouteArg(\n paramTypes: RouteParamtypes,\n index: number,\n pipes: any[] = [],\n data: any = undefined\n ): any {\n return {\n [`${paramTypes}:${index}`]: {\n index,\n pipes,\n data,\n },\n };\n }\n\n static setDecorators(\n decorators: (PropertyDecorator | MethodDecorator)[],\n target: object,\n name: string\n ): void {\n // this makes metadata decorator works\n const decoratedDescriptor: PropertyDescriptor = Reflect.decorate(\n decorators,\n target,\n name,\n Reflect.getOwnPropertyDescriptor(target, name)\n );\n\n // this makes proxy decorator works\n Reflect.defineProperty(target, name, decoratedDescriptor);\n }\n\n static setParsedRequestArg(index: number) {\n return R.createCustomRouteArg(PARSED_CRUD_REQUEST_KEY, index);\n }\n\n static setBodyArg(index: number, pipes: any[] = []) {\n return R.createRouteArg(RouteParamtypes.BODY, index, pipes);\n }\n\n static setCrudOptions(options: MergedCrudOptions, target: any) {\n R.set(CRUD_OPTIONS_METADATA, options, target);\n }\n\n static setRoute(route: BaseRoute, func: Function) {\n R.set(PATH_METADATA, route.path, func);\n R.set(METHOD_METADATA, route.method, func);\n }\n\n static setInterceptors(interceptors: any[], func: Function) {\n R.set(INTERCEPTORS_METADATA, interceptors, func);\n }\n\n static setRouteArgs(metadata: any, target: any, name: string) {\n R.set(ROUTE_ARGS_METADATA, metadata, target, name);\n }\n\n static setRouteArgsTypes(metadata: any, target: any, name: string) {\n R.set(PARAMTYPES_METADATA, metadata, target, name);\n }\n\n static setAction(action: CrudActions, func: Function) {\n R.set(ACTION_NAME_METADATA, action, func);\n }\n\n static setCrudAuthOptions(metadata: any, target: any) {\n R.set(CRUD_AUTH_OPTIONS_METADATA, metadata, target);\n }\n\n static getCrudAuthOptions(target: any): AuthOptions {\n return R.get(CRUD_AUTH_OPTIONS_METADATA, target);\n }\n\n static getCrudOptions(target: any): MergedCrudOptions {\n return R.get(CRUD_OPTIONS_METADATA, target);\n }\n\n static getAction(func: Function): CrudActions {\n return R.get(ACTION_NAME_METADATA, func);\n }\n\n static getOverrideRoute(func: Function): BaseRouteName {\n return R.get(OVERRIDE_METHOD_METADATA, func);\n }\n\n static getInterceptors(func: Function): any[] {\n return R.get(INTERCEPTORS_METADATA, func) || [];\n }\n\n static getRouteArgs(target: any, name: string): any {\n return R.get(ROUTE_ARGS_METADATA, target, name);\n }\n\n static getRouteArgsTypes(target: any, name: string): any[] {\n return R.get(PARAMTYPES_METADATA, target, name) || [];\n }\n\n static getParsedBody(func: Function): any {\n return R.get(PARSED_BODY_METADATA, func);\n }\n\n static getContextRequest(ctx: ArgumentsHost): any {\n return isFunction(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx;\n }\n}\n","module.exports = require(\"@nestjs/common/enums/route-paramtypes.enum\");","module.exports = require(\"@nestjs/common/constants\");","export const REQUEST_DELIM: string = \"||\";\nexport const REQUEST_DELIM_STR: string = \",\";\nexport const REQUEST_PREFIX_EXTRA: string = \"extra.\";\nexport const FEATURE_NAME_METADATA: string = \"CRUDX_FEATURE_NAME_METADATA\";\nexport const ACTION_NAME_METADATA: string = \"CRUDX_ACTION_NAME_METADATA\";\nexport const OVERRIDE_METHOD_METADATA: string =\n \"CRUDX_OVERRIDE_METHOD_METADATA\";\nexport const PARSED_BODY_METADATA: string = \"CRUDX_PARSED_BODY_METADATA\";\nexport const PARSED_CRUD_REQUEST_KEY: string = \"CRUDX_PARSED_CRUD_REQUEST_KEY\";\nexport const CRUD_OPTIONS_METADATA: string = \"CRUDX_CRUD_OPTIONS_METADATA\";\nexport const CRUD_AUTH_OPTIONS_METADATA: string =\n \"CRUDX_CRUD_AUTH_OPTIONS_METADATA\";\n","import { isEqual, isNil, isNumber, isObject, isUndefined, keys } from \"lodash\";\nimport { RequestQueryException } from \"../exceptions\";\nimport { CustomOperators, ParamOption, ParamsOptions } from \"../interfaces\";\n\nimport {\n ComparisonOperator,\n CondOperator,\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n} from \"../types\";\n\nimport {\n isArrayOfStrings,\n isArrayOfStringsFull,\n isStringFull,\n} from \"./checkers.helper\";\n\nexport const comparisonOperatorsList: string[] = [\n ...keys(CondOperator).map(\n (n: string) => CondOperator[n as keyof typeof CondOperator]\n ),\n];\n\nexport const sortOrdersList: string[] = [\"ASC\", \"DESC\"];\n\nconst sortOrdersListStr: string = sortOrdersList.join();\n\nexport function validateFields(fields: QueryFields): void {\n if (!isArrayOfStrings(fields)) {\n throw new RequestQueryException(\n \"Invalid fields. Array of strings expected\"\n );\n }\n}\n\nexport function validateCondition(\n val: QueryFilter,\n cond: \"filter\" | \"or\" | \"search\",\n customOperators: CustomOperators\n): void {\n if (!isObject(val) || !isStringFull(val.field)) {\n throw new RequestQueryException(\n `Invalid field type in ${cond} condition. String expected`\n );\n }\n validateComparisonOperator(val.operator, customOperators);\n}\n\nexport function validateComparisonOperator(\n operator: ComparisonOperator,\n customOperators: CustomOperators = {}\n): void {\n const extendedComparisonOperatorsList = [\n ...comparisonOperatorsList,\n ...Object.keys(customOperators),\n ];\n if (!extendedComparisonOperatorsList.includes(operator)) {\n throw new RequestQueryException(\n `Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`\n );\n }\n}\n\nexport function validateJoin(join: QueryJoin): void {\n if (!isObject(join) || !isStringFull(join.field)) {\n throw new RequestQueryException(\"Invalid join field. String expected\");\n }\n if (!isUndefined(join.select) && !isArrayOfStringsFull(join.select)) {\n throw new RequestQueryException(\n \"Invalid join select. Array of strings expected\"\n );\n }\n}\n\nexport function validateSort(sort: QuerySort): void {\n if (!isObject(sort) || !isStringFull(sort.field)) {\n throw new RequestQueryException(\"Invalid sort field. String expected\");\n }\n if (\n !isEqual(sort.order, sortOrdersList[0]) &&\n !isEqual(sort.order, sortOrdersList[1])\n ) {\n throw new RequestQueryException(\n `Invalid sort order. ${sortOrdersListStr} expected`\n );\n }\n}\n\nexport function validateNumeric(\n val: number,\n num: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"include_deleted\" | string\n): void {\n if (!isNumber(val)) {\n throw new RequestQueryException(`Invalid ${num}. Number expected`);\n }\n}\n\nexport function validateParamOption(\n options: ParamsOptions,\n name: string\n): void {\n if (!isObject(options)) {\n throw new RequestQueryException(\n `Invalid param ${name}. Invalid crud options`\n );\n }\n const option: ParamOption = options[name];\n if (option && option.disabled) {\n return;\n }\n if (!isObject(option) || isNil(option.field) || isNil(option.type)) {\n throw new RequestQueryException(`Invalid param option in Crud`);\n }\n}\n\nexport function validateUUID(str: string, name: string): void {\n const uuid: RegExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n const uuidV4: RegExp =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n if (!uuidV4.test(str) && !uuid.test(str)) {\n throw new RequestQueryException(\n `Invalid param ${name}. UUID string expected`\n );\n }\n}\n","export * from \"./request-query.exception\";\n","export class RequestQueryException extends Error {\n constructor(msg: string) {\n super(msg);\n }\n}\n","export * from \"./common.types\";\nexport * from \"./crud.types\";\nexport * from \"./request-param.types\";\nexport * from \"./request-query.types\";\n","export type ClassType = {\n new (...args: any[]): T;\n};\n\nexport type ObjectLiteral = {\n [key: string]: any;\n};\n","import { SCondition, QueryFilter } from \"./request-query.types\";\n\nexport type BaseRouteName =\n | \"getManyBase\"\n | \"getOneBase\"\n | \"createOneBase\"\n | \"createManyBase\"\n | \"updateOneBase\"\n | \"replaceOneBase\"\n | \"deleteOneBase\"\n | \"recoverOneBase\";\n\nexport type QueryFilterFunction = (\n search?: SCondition,\n getMany?: boolean\n) => SCondition | void;\n\nexport type QueryFilterOption =\n | QueryFilter[]\n | SCondition\n | QueryFilterFunction;\n","export type ParamOptionType = \"number\" | \"string\" | \"uuid\";\n","import { ObjectLiteral } from \"./common.types\";\n\nexport type QueryFields = string[];\n\nexport interface QueryFilter {\n field: string;\n operator: ComparisonOperator;\n value?: any;\n}\n\nexport type QueryFilterArr = [string, ComparisonOperator, any?];\n\nexport interface QueryJoin {\n field: string;\n select?: QueryFields;\n}\n\nexport type QueryJoinArr = [string, QueryFields?];\n\nexport interface QuerySort {\n field: string;\n order: QuerySortOperator;\n}\n\n/** Extra object or null */\nexport type QueryExtra = ObjectLiteral | undefined;\n\nexport type QuerySortArr = [string, QuerySortOperator];\n\nexport type QuerySortOperator = \"ASC\" | \"DESC\";\n\nexport enum CondOperator {\n EQUALS = \"$eq\",\n NOT_EQUALS = \"$ne\",\n GREATER_THAN = \"$gt\",\n LOWER_THAN = \"$lt\",\n GREATER_THAN_EQUALS = \"$gte\",\n LOWER_THAN_EQUALS = \"$lte\",\n STARTS = \"$starts\",\n ENDS = \"$ends\",\n CONTAINS = \"$cont\",\n EXCLUDES = \"$excl\",\n IN = \"$in\",\n NOT_IN = \"$notin\",\n IS_NULL = \"$isnull\",\n NOT_NULL = \"$notnull\",\n BETWEEN = \"$between\",\n EQUALS_LOW = \"$eqL\",\n NOT_EQUALS_LOW = \"$neL\",\n STARTS_LOW = \"$startsL\",\n ENDS_LOW = \"$endsL\",\n CONTAINS_LOW = \"$contL\",\n EXCLUDES_LOW = \"$exclL\",\n IN_LOW = \"$inL\",\n NOT_IN_LOW = \"$notinL\",\n}\n\nexport type ComparisonOperator = keyof SFieldOperator | string;\n\n// new search\nexport type SPrimitivesVal = string | number | boolean;\n\nexport type SFiledValues = SPrimitivesVal | SPrimitivesVal[];\n\nexport interface SFieldOperator {\n $eq?: SFiledValues;\n $ne?: SFiledValues;\n $gt?: SFiledValues;\n $lt?: SFiledValues;\n $gte?: SFiledValues;\n $lte?: SFiledValues;\n $starts?: SFiledValues;\n $ends?: SFiledValues;\n $cont?: SFiledValues;\n $excl?: SFiledValues;\n $in?: SFiledValues;\n $notin?: SFiledValues;\n $between?: SFiledValues;\n $isnull?: SFiledValues;\n $notnull?: SFiledValues;\n $eqL?: SFiledValues;\n $neL?: SFiledValues;\n $startsL?: SFiledValues;\n $endsL?: SFiledValues;\n $contL?: SFiledValues;\n $exclL?: SFiledValues;\n $inL?: SFiledValues;\n $notinL?: SFiledValues;\n $or?: SFieldOperator;\n $and?: never;\n}\n\nexport type SField =\n | SPrimitivesVal\n | SFieldOperator\n | { [$custom: string]: SFiledValues };\n\nexport interface SFields {\n [key: string]: SField | Array | undefined;\n $or?: Array;\n $and?: never;\n}\n\nexport interface SConditionAND {\n $and?: Array;\n $or?: never;\n}\n\nexport type SConditionKey = \"$and\" | \"$or\";\n\nexport type SCondition = SFields | SConditionAND;\n","import { Type } from \"class-transformer\";\nimport { GetManyDefaultResponse } from \"../interfaces\";\nimport { ApiProperty } from \"@nestjs/swagger\";\n\nexport class SerializeHelper {\n static createGetManyDto(dto: any, resourceName: string): any {\n class GetManyResponseDto implements GetManyDefaultResponse {\n @ApiProperty({ type: dto, isArray: true })\n @Type(() => dto)\n // @ts-ignore\n data: any[];\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n count: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n total: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n page: number;\n\n @ApiProperty({ type: \"number\" })\n // @ts-ignore\n pageCount: number;\n }\n\n Object.defineProperty(GetManyResponseDto, \"name\", {\n writable: false,\n value: `GetMany${resourceName}ResponseDto`,\n });\n\n return GetManyResponseDto;\n }\n\n static createGetOneResponseDto(resourceName: string): any {\n class GetOneResponseDto {}\n\n Object.defineProperty(GetOneResponseDto, \"name\", {\n writable: false,\n value: `${resourceName}ResponseDto`,\n });\n\n return GetOneResponseDto;\n }\n}\n","import { HttpStatus } from \"@nestjs/common\";\nimport { QueryBuilderService } from \"../services\";\nimport { get, isArray, isString, keys } from \"lodash\";\nimport {\n MergedCrudOptions,\n ParamsOptions,\n RequestQueryBuilderOptions,\n} from '../interfaces';\nimport { BaseRouteName } from '../types';\nimport { R } from './reflection.helper';\n\nimport { safeRequire } from './safe-require.helper';\nimport * as SWAGGER_CONSTANTS from '@nestjs/swagger/dist/constants';\nimport { getSchemaPath } from '@nestjs/swagger';\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst pluralize = require(\"pluralize\");\n\nexport const swaggerPkgJson = safeRequire(\"@nestjs/swagger/package.json\", () =>\n require(\"@nestjs/swagger/package.json\")\n);\n\nexport class Swagger {\n static operationsMap(modelName: string): { [key in BaseRouteName]: string } {\n return {\n getManyBase: `Retrieve multiple ${pluralize(modelName)}`,\n getOneBase: `Retrieve a single ${modelName}`,\n createManyBase: `Create multiple ${pluralize(modelName)}`,\n createOneBase: `Create a single ${modelName}`,\n updateOneBase: `Update a single ${modelName}`,\n replaceOneBase: `Replace a single ${modelName}`,\n deleteOneBase: `Delete a single ${modelName}`,\n recoverOneBase: `Recover one ${modelName}`,\n };\n }\n\n static setOperation(metadata: any, func: Function) {\n if (SWAGGER_CONSTANTS) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func);\n }\n }\n\n static setParams(metadata: any, func: Function) {\n /* istanbul ignore else */\n if (SWAGGER_CONSTANTS) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func);\n }\n }\n\n static setExtraModels(swaggerModels: any) {\n /* istanbul ignore else */\n if (SWAGGER_CONSTANTS) {\n const meta = Swagger.getExtraModels(swaggerModels.get);\n const models: any[] = [\n ...meta,\n ...keys(swaggerModels)\n .map((name) => swaggerModels[name])\n .filter((one) => one && one.name !== swaggerModels.get.name),\n ];\n R.set(\n SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS,\n models,\n swaggerModels.get\n );\n }\n }\n\n static setResponseOk(metadata: any, func: Function) {\n /* istanbul ignore else */\n if (SWAGGER_CONSTANTS) {\n R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func);\n }\n }\n\n static getOperation(func: Function): any {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {}\n : {};\n }\n\n static getParams(func: Function): any[] {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || []\n : [];\n }\n\n static getExtraModels(target: any): any[] {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || []\n : [];\n }\n\n static getResponseOk(func: Function): any {\n /* istanbul ignore next */\n return SWAGGER_CONSTANTS\n ? R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {}\n : {};\n }\n\n static createResponseMeta(\n name: BaseRouteName,\n options: MergedCrudOptions,\n swaggerModels: any\n ): any {\n const { routes, query } = options;\n\n switch (name) {\n case \"getOneBase\":\n return {\n [HttpStatus.OK]: {\n description: \"Get one base response\",\n type: swaggerModels.get,\n },\n };\n case \"getManyBase\":\n return {\n [HttpStatus.OK]: query?.alwaysPaginate\n ? {\n description: \"Get paginated response\",\n type: swaggerModels.getMany,\n }\n : {\n description: \"Get many base response\",\n schema: {\n oneOf: [\n {\n $ref: getSchemaPath(swaggerModels.getMany.name),\n },\n {\n type: \"array\",\n items: {\n $ref: getSchemaPath(swaggerModels.get.name),\n },\n },\n ],\n },\n },\n };\n case \"createOneBase\":\n return {\n [HttpStatus.CREATED]: {\n description: \"Get create one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.create.name),\n },\n },\n };\n case \"createManyBase\":\n return {\n [HttpStatus.CREATED]: swaggerModels.createMany\n ? {\n description: \"Get create many base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.createMany.name),\n },\n }\n : {\n description: \"Get create many base response\",\n schema: {\n type: \"array\",\n items: {\n $ref: getSchemaPath(swaggerModels.create.name),\n },\n },\n },\n };\n case \"deleteOneBase\":\n return {\n [HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted\n ? {\n description: \"Delete one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.delete.name),\n },\n }\n : {\n description: \"Delete one base response\",\n },\n };\n case \"recoverOneBase\":\n return {\n [HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered\n ? {\n description: \"Recover one base response\",\n schema: {\n $ref: getSchemaPath(swaggerModels.recover.name),\n },\n }\n : {\n description: \"Recover one base response\",\n },\n };\n default:\n const dto = swaggerModels[name.split(\"OneBase\")[0]];\n return {\n [HttpStatus.OK]: {\n description: \"Response\",\n schema: { $ref: getSchemaPath(dto.name) },\n },\n };\n }\n }\n\n static createPathParamsMeta(options: ParamsOptions): any[] {\n return SWAGGER_CONSTANTS\n ? keys(options).map((param) => ({\n name: param,\n required: true,\n in: \"path\",\n type: options[param].type === \"number\" ? Number : String,\n enum: isArray(options[param]?.enum)\n ? Object.values(>options[param].enum)\n : undefined,\n }))\n : [];\n }\n\n static createQueryParamsMeta(\n name: BaseRouteName,\n options: MergedCrudOptions\n ) {\n if (!SWAGGER_CONSTANTS) {\n return [];\n }\n\n const {\n delim: d,\n delimStr: coma,\n fields,\n search,\n filter,\n or,\n join,\n sort,\n limit,\n offset,\n page,\n cache,\n includeDeleted,\n } = Swagger.getQueryParamsNames();\n const docsLink = (a: string) =>\n // TODO: to modify\n `Docs`;\n\n const fieldsMetaBase = {\n name: fields,\n description: `Selects resource fields. ${docsLink(\"select\")}`,\n required: false,\n in: \"query\",\n };\n const fieldsMeta = {\n ...fieldsMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: false,\n };\n\n const searchMetaBase = {\n name: search,\n description: `Adds search condition. ${docsLink(\"search\")}`,\n required: false,\n in: \"query\",\n };\n\n const searchMeta = { ...searchMetaBase, schema: { type: \"string\" } };\n\n const filterMetaBase = {\n name: filter,\n description: `Adds filter condition. ${docsLink(\"filter\")}`,\n required: false,\n in: \"query\",\n };\n\n const filterMeta = {\n ...filterMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const orMetaBase = {\n name: or,\n description: `Adds OR condition. ${docsLink(\"or\")}`,\n required: false,\n in: \"query\",\n };\n\n const orMeta = {\n ...orMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const sortMetaBase = {\n name: sort,\n description: `Adds sort by field. ${docsLink(\"sort\")}`,\n required: false,\n in: \"query\",\n };\n\n const sortMeta = {\n ...sortMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const joinMetaBase = {\n name: join,\n description: `Adds relational resources. ${docsLink(\"join\")}`,\n required: false,\n in: \"query\",\n };\n\n const joinMeta = {\n ...joinMetaBase,\n schema: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n style: \"form\",\n explode: true,\n };\n\n const limitMetaBase = {\n name: limit,\n description: `Limit amount of resources. ${docsLink(\"limit\")}`,\n required: false,\n in: \"query\",\n };\n\n const limitMeta = { ...limitMetaBase, schema: { type: \"integer\" } };\n\n const offsetMetaBase = {\n name: offset,\n description: `Offset amount of resources. ${docsLink(\"offset\")}`,\n required: false,\n in: \"query\",\n };\n\n const offsetMeta = { ...offsetMetaBase, schema: { type: \"integer\" } };\n\n const pageMetaBase = {\n name: page,\n description: `Page portion of resources. ${docsLink(\"page\")}`,\n required: false,\n in: \"query\",\n };\n\n const pageMeta = { ...pageMetaBase, schema: { type: \"integer\" } };\n\n const cacheMetaBase = {\n name: cache,\n description: `Reset cache (if was enabled). ${docsLink(\"cache\")}`,\n required: false,\n in: \"query\",\n };\n\n const cacheMeta = {\n ...cacheMetaBase,\n schema: { type: \"integer\", minimum: 0, maximum: 1 },\n };\n\n const includeDeletedMetaBase = {\n name: includeDeleted,\n description: `Include deleted. ${docsLink(\"includeDeleted\")}`,\n required: false,\n in: \"query\",\n };\n\n const includeDeletedMeta = {\n ...includeDeletedMetaBase,\n schema: { type: \"integer\", minimum: 0, maximum: 1 },\n };\n\n switch (name) {\n case \"getManyBase\":\n return options.query?.softDelete\n ? [\n fieldsMeta,\n searchMeta,\n filterMeta,\n orMeta,\n sortMeta,\n joinMeta,\n limitMeta,\n offsetMeta,\n pageMeta,\n cacheMeta,\n includeDeletedMeta,\n ]\n : [\n fieldsMeta,\n searchMeta,\n filterMeta,\n orMeta,\n sortMeta,\n joinMeta,\n limitMeta,\n offsetMeta,\n pageMeta,\n cacheMeta,\n ];\n case \"getOneBase\":\n return options.query?.softDelete\n ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta]\n : [fieldsMeta, joinMeta, cacheMeta];\n default:\n return [];\n }\n }\n\n static getQueryParamsNames() {\n const qbOptions: RequestQueryBuilderOptions =\n QueryBuilderService.getOptions();\n const name = (n: any) => {\n const selected = get(qbOptions, `paramNamesMap[${n}]`);\n return isString(selected) ? selected : selected?.[0];\n };\n\n return {\n delim: qbOptions.delim,\n delimStr: qbOptions.delimStr,\n fields: name(\"fields\"),\n search: name(\"search\"),\n filter: name(\"filter\"),\n or: name(\"or\"),\n join: name(\"join\"),\n sort: name(\"sort\"),\n limit: name(\"limit\"),\n offset: name(\"offset\"),\n page: name(\"page\"),\n cache: name(\"cache\"),\n includeDeleted: name(\"includeDeleted\"),\n };\n }\n}\n","export function safeRequire(path: string, loader?: () => T): T | null {\n try {\n return loader ? loader() : require(path);\n } catch (_) {\n return null;\n }\n}\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 34;\nmodule.exports = webpackEmptyContext;","module.exports = require(\"@nestjs/swagger/dist/constants\");","module.exports = require(\"pluralize\");","module.exports = require(\"@nestjs/swagger/package.json\");","import { get, isNil, isObject, isString, isUndefined } from \"lodash\";\n\nimport { stringify } from \"qs\";\n\nimport {\n CreateQueryParams,\n CustomOperators,\n ParamsNamesMap,\n RequestQueryBuilderOptions,\n} from \"../interfaces\";\n\nimport {\n QueryFields,\n QueryFilter,\n QueryFilterArr,\n QueryJoin,\n QueryJoinArr,\n QuerySort,\n QuerySortArr,\n SCondition,\n} from \"../types\";\n\nimport {\n hasValue,\n isArrayFull,\n validateCondition,\n validateFields,\n validateJoin,\n validateNumeric,\n validateSort,\n} from \"../helpers\";\n\nimport {\n REQUEST_DELIM,\n REQUEST_DELIM_STR,\n REQUEST_PREFIX_EXTRA,\n} from \"../constants\";\n\nexport class QueryBuilderService {\n constructor() {\n this.setParamNames();\n }\n\n private static _options: RequestQueryBuilderOptions = {\n delim: REQUEST_DELIM,\n delimStr: REQUEST_DELIM_STR,\n paramNamesMap: {\n fields: [\"fields\", \"select\"],\n search: \"s\",\n filter: \"filter\",\n or: \"or\",\n join: \"join\",\n sort: \"sort\",\n limit: [\"limit\", \"per_page\"],\n offset: \"offset\",\n page: \"page\",\n cache: \"cache\",\n includeDeleted: \"include_deleted\",\n extra: REQUEST_PREFIX_EXTRA,\n },\n };\n private paramNames: {\n [key in keyof ParamsNamesMap as string]: string;\n } = {};\n public queryObject: { [key: string]: any } = {};\n public queryString: string = \"\";\n\n static setOptions(options: RequestQueryBuilderOptions) {\n QueryBuilderService._options = {\n ...QueryBuilderService._options,\n ...options,\n paramNamesMap: {\n ...QueryBuilderService._options.paramNamesMap,\n ...(options.paramNamesMap ? options.paramNamesMap : {}),\n },\n };\n }\n\n static getOptions(): RequestQueryBuilderOptions {\n return QueryBuilderService._options;\n }\n\n static create(\n params?: CreateQueryParams,\n customOperators: CustomOperators = {}\n ): QueryBuilderService {\n const qb: QueryBuilderService = new QueryBuilderService();\n return isObject(params)\n ? qb.createFromParams(params, customOperators)\n : qb;\n }\n\n get options(): RequestQueryBuilderOptions {\n return QueryBuilderService._options;\n }\n\n setParamNames(): void {\n if (QueryBuilderService._options.paramNamesMap) {\n Object.keys(QueryBuilderService._options.paramNamesMap).forEach(\n (key: string): void => {\n const name = get(QueryBuilderService._options.paramNamesMap, key);\n this.paramNames[key] = isString(name)\n ? (name as string)\n : (name[0] as string);\n }\n );\n }\n }\n\n query(encode = true): string {\n if (this.queryObject[this.paramNames[\"search\"]]) {\n this.queryObject[this.paramNames[\"filter\"]] = undefined;\n this.queryObject[this.paramNames[\"or\"]] = undefined;\n }\n this.queryString = stringify(this.queryObject, { encode });\n return this.queryString;\n }\n\n select(fields?: QueryFields): this {\n if (!isNil(fields) && isArrayFull(fields)) {\n validateFields(fields);\n this.queryObject[this.paramNames[\"fields\"]] = fields.join(\n this.options.delimStr\n );\n }\n return this;\n }\n\n search(s?: SCondition) {\n if (!isNil(s) && isObject(s)) {\n this.queryObject[this.paramNames[\"search\"]] = JSON.stringify(s);\n }\n return this;\n }\n\n setFilter(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n customOperators: CustomOperators = {}\n ): this {\n this.setCondition(f, \"filter\", customOperators);\n return this;\n }\n\n setOr(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n customOperators: CustomOperators = {}\n ): this {\n this.setCondition(f, \"or\", customOperators);\n return this;\n }\n\n setJoin(\n j: QueryJoin | QueryJoinArr | Array | undefined\n ): this {\n if (!isNil(j)) {\n const param: string = this.checkQueryObjectParam(\"join\", []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(j) && !isString(j[0])\n ? (j as Array).map((o) => this.addJoin(o))\n : [this.addJoin(j as QueryJoin | QueryJoinArr)]),\n ];\n }\n return this;\n }\n\n sortBy(\n s: QuerySort | QuerySortArr | Array | undefined\n ): this {\n if (!isNil(s)) {\n const param = this.checkQueryObjectParam(\"sort\", []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(s) && !isString(s[0])\n ? (s as Array).map((o) => this.addSortBy(o))\n : [this.addSortBy(s as QuerySort | QuerySortArr)]),\n ];\n }\n return this;\n }\n\n setLimit(n: number | undefined): this {\n this.setNumeric(n, \"limit\");\n return this;\n }\n\n setOffset(n: number | undefined): this {\n this.setNumeric(n, \"offset\");\n return this;\n }\n\n setPage(n: number | undefined): this {\n this.setNumeric(n, \"page\");\n return this;\n }\n\n resetCache(): this {\n this.setNumeric(0, \"cache\");\n return this;\n }\n\n setIncludeDeleted(n: number | undefined): this {\n this.setNumeric(n, \"includeDeleted\");\n return this;\n }\n\n cond(\n f: QueryFilter | QueryFilterArr,\n cond: \"filter\" | \"or\" | \"search\" = \"search\",\n customOperators: CustomOperators = {}\n ): string {\n const filter = Array.isArray(f)\n ? { field: f[0], operator: f[1], value: f[2] }\n : f;\n validateCondition(filter, cond, customOperators);\n const d = this.options.delim;\n\n return (\n filter.field +\n d +\n filter.operator +\n (hasValue(filter.value) ? d + filter.value : \"\")\n );\n }\n\n private addJoin(j: QueryJoin | QueryJoinArr): string {\n const join: QueryJoin = Array.isArray(j)\n ? { field: j[0], select: j[1] }\n : j;\n validateJoin(join);\n const d: string | undefined = this.options.delim;\n const ds: string | undefined = this.options.delimStr;\n\n return (\n join.field +\n (isArrayFull(join.select) ? d + (join.select?.join(ds) ?? \"\") : \"\")\n );\n }\n\n private addSortBy(s: QuerySort | QuerySortArr): string {\n const sort: QuerySort = Array.isArray(s) ? { field: s[0], order: s[1] } : s;\n validateSort(sort);\n const ds: string | undefined = this.options.delimStr;\n\n return sort.field + ds + sort.order;\n }\n\n private createFromParams(\n params: CreateQueryParams,\n customOperators: CustomOperators\n ): this {\n this.select(params.fields);\n this.search(params.search);\n this.setFilter(params.filter, customOperators);\n this.setOr(params.or, customOperators);\n this.setJoin(params.join);\n this.setLimit(params.limit);\n this.setOffset(params.offset);\n this.setPage(params.page);\n this.sortBy(params.sort);\n if (params.resetCache) {\n this.resetCache();\n }\n this.setIncludeDeleted(params.includeDeleted);\n return this;\n }\n\n private checkQueryObjectParam(\n cond: keyof ParamsNamesMap,\n defaults: any\n ): string {\n const param = this.paramNames[cond];\n if (isNil(this.queryObject[param]) && !isUndefined(defaults)) {\n this.queryObject[param] = defaults;\n }\n return param;\n }\n\n private setCondition(\n f:\n | QueryFilter\n | QueryFilterArr\n | Array\n | undefined,\n cond: \"filter\" | \"or\",\n customOperators: CustomOperators\n ): void {\n if (!isNil(f)) {\n const param = this.checkQueryObjectParam(cond, []);\n this.queryObject[param] = [\n ...this.queryObject[param],\n ...(Array.isArray(f) && !isString(f[0])\n ? (f as Array).map((o) =>\n this.cond(o, cond, customOperators)\n )\n : [\n this.cond(\n f as QueryFilter | QueryFilterArr,\n cond,\n customOperators\n ),\n ]),\n ];\n }\n }\n\n private setNumeric(\n n: number | undefined,\n cond: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"includeDeleted\"\n ): void {\n if (!isNil(n)) {\n validateNumeric(n, cond);\n this.queryObject[this.paramNames[cond]] = n;\n }\n }\n}\n","module.exports = require(\"qs\");","module.exports = require(\"deepmerge\");","import {\n get,\n has,\n isDate,\n isEmpty,\n isNil,\n isObject,\n isString,\n keys,\n set,\n} from \"lodash\";\n\nimport { RequestQueryException } from \"../exceptions\";\n\nimport {\n CustomOperators,\n ParamOption,\n ParamsNamesMap,\n ParamsOptions,\n ParsedRequestParams,\n RequestQueryBuilderOptions,\n} from \"../interfaces\";\n\nimport {\n ComparisonOperator,\n CondOperator,\n ObjectLiteral,\n QueryExtra,\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n SConditionAND,\n SFields,\n} from \"../types\";\n\nimport { ClassTransformOptions } from \"class-transformer\";\n\nimport { QueryBuilderService } from \"./query-builder.service\";\nimport {\n hasValue,\n isArrayFull,\n isDateString,\n isStringFull,\n validateCondition,\n validateJoin,\n validateNumeric,\n validateParamOption,\n validateSort,\n validateUUID,\n} from \"../helpers\";\n\nimport { REQUEST_PREFIX_EXTRA } from \"../constants\";\n\nexport class QueryParserService implements ParsedRequestParams {\n public fields: QueryFields = [];\n public paramsFilter: (QueryFilter | undefined)[] = [];\n public authPersist: ObjectLiteral | undefined = undefined;\n\n public classTransformOptions: ClassTransformOptions | undefined = undefined;\n\n public search: SCondition | undefined = undefined;\n public filter: QueryFilter[] = [];\n public or: QueryFilter[] = [];\n public join: QueryJoin[] = [];\n public sort: QuerySort[] = [];\n public limit: number | undefined;\n public offset: number | undefined;\n public page: number | undefined;\n public cache: number | undefined;\n public includeDeleted: number | undefined;\n public extra: QueryExtra = {};\n\n private _params: any;\n private _query: any;\n private _paramNames: string[] = [];\n private _paramsOptions: ParamsOptions = {};\n\n private get _options(): RequestQueryBuilderOptions {\n return QueryBuilderService.getOptions();\n }\n\n static create(): QueryParserService {\n return new QueryParserService();\n }\n\n getParsed(): ParsedRequestParams {\n return {\n fields: this.fields,\n paramsFilter: this.paramsFilter,\n authPersist: this.authPersist,\n classTransformOptions: this.classTransformOptions,\n search: this.search,\n filter: this.filter,\n or: this.or,\n join: this.join,\n sort: this.sort,\n limit: this.limit,\n offset: this.offset,\n page: this.page,\n cache: this.cache,\n includeDeleted: this.includeDeleted,\n extra: this.extra,\n };\n }\n\n setAuthPersist(persist: ObjectLiteral = {}) {\n this.authPersist = persist || /* istanbul ignore next */ {};\n }\n\n setClassTransformOptions(options: ClassTransformOptions = {}) {\n this.classTransformOptions = options || /* istanbul ignore next */ {};\n }\n\n convertFilterToSearch(filter: QueryFilter): SFields | SConditionAND {\n const isEmptyValue = {\n isnull: true,\n notnull: true,\n };\n\n return filter\n ? {\n [filter.field]: {\n [filter.operator]: has(isEmptyValue, filter.operator)\n ? get(isEmptyValue, filter.operator)\n : filter.value,\n },\n }\n : /* istanbul ignore next */ {};\n }\n\n parseQuery(query: any, customOperators: CustomOperators = {}): this {\n if (isObject(query)) {\n const paramNames: string[] = keys(query);\n\n if (!isEmpty(paramNames)) {\n this._query = query;\n this._paramNames = paramNames;\n const searchData = this._query[this.getParamNames(\"search\")[0]];\n this.search = this.parseSearchQueryParam(searchData) as any;\n if (isNil(this.search)) {\n this.filter = this.parseQueryParam(\n \"filter\",\n this.conditionParser.bind(this, \"filter\", customOperators)\n );\n this.or = this.parseQueryParam(\n \"or\",\n this.conditionParser.bind(this, \"or\", customOperators)\n );\n }\n this.fields =\n this.parseQueryParam(\"fields\", this.fieldsParser.bind(this))[0] || [];\n this.join = this.parseQueryParam(\"join\", this.joinParser.bind(this));\n this.sort = this.parseQueryParam(\"sort\", this.sortParser.bind(this));\n this.limit = this.parseQueryParam(\n \"limit\",\n this.numericParser.bind(this, \"limit\")\n )[0];\n this.offset = this.parseQueryParam(\n \"offset\",\n this.numericParser.bind(this, \"offset\")\n )[0];\n this.page = this.parseQueryParam(\n \"page\",\n this.numericParser.bind(this, \"page\")\n )[0];\n this.cache = this.parseQueryParam(\n \"cache\",\n this.numericParser.bind(this, \"cache\")\n )[0];\n this.includeDeleted = this.parseQueryParam(\n \"includeDeleted\",\n this.numericParser.bind(this, \"includeDeleted\")\n )[0];\n\n this.extra = this.parseExtraFromQueryParam();\n }\n }\n\n return this;\n }\n\n parseParams(params: any, options: ParamsOptions): this {\n if (isObject(params)) {\n const paramNames: string[] = keys(params);\n\n if (!isNil(paramNames)) {\n this._params = params;\n this._paramsOptions = options;\n this.paramsFilter = paramNames\n .map((name: string) => this.paramParser(name))\n .filter((filter: QueryFilter | undefined) => filter);\n }\n }\n\n return this;\n }\n\n private getParamNames(type: keyof ParamsNamesMap): string[] {\n return this._paramNames.filter((p: string): boolean => {\n const name: string | string[] = get(\n this._options.paramNamesMap,\n type,\n \"\"\n );\n return isString(name)\n ? name === p\n : (name as string[]).some((m: string): boolean => m === p);\n });\n }\n\n private getParamValues(value: string | string[], parser: Function): any[] {\n if (isStringFull(value)) {\n return [parser.call(this, value)];\n }\n\n if (isArrayFull(value)) {\n return (value as string[]).map((val: string) => parser(val));\n }\n\n return [];\n }\n\n private parseQueryParam(type: keyof ParamsNamesMap, parser: Function): any[] {\n const param: string[] = this.getParamNames(type);\n\n if (isArrayFull(param)) {\n // @ts-ignore\n return param.reduce(\n // @ts-ignore\n (a: [], name: string): string[] => [\n ...a,\n ...this.getParamValues(this._query[name], parser),\n ],\n []\n );\n }\n\n return [];\n }\n\n private parseExtraFromQueryParam(): QueryExtra {\n const extraParam: string | string[] | [] = get(\n this._options.paramNamesMap,\n \"extra\",\n []\n );\n const params: string[] = Array.isArray(extraParam)\n ? extraParam\n : [extraParam];\n const extraKeys: {} = keys(this._query || {})\n .filter((k: string) => params.find((p: string) => k?.startsWith(p)))\n .reduce((o: {}, k: string) => {\n const key: string = k.replace(REQUEST_PREFIX_EXTRA, \"\");\n this.parseDotChainToObject(this._query[k], key, o);\n return o;\n }, {});\n return keys(extraKeys).length > 0 ? extraKeys : undefined;\n }\n\n /**\n * Build an object from data and composite key.\n *\n * @param data to used on parse workflow\n * @param key composite key as 'foo.bar.hero'\n * @param result object with parsed \"data\" and \"key\" structure\n * @private\n */\n private parseDotChainToObject(data: any, key: string, result: {} = {}): void {\n if (key.includes(\".\")) {\n const keys: string[] = key.split(\".\");\n const firstKey: string | undefined = keys.shift();\n set(result, firstKey as string, {});\n this.parseDotChainToObject(\n data,\n keys.join(\".\"),\n get(result, firstKey as string)\n );\n } else {\n set(result, key, this.parseValue(data));\n }\n }\n\n private parseValue(val: any) {\n try {\n const parsed = JSON.parse(val);\n\n // throw new Error('Don\\'t support object now')\n if (\n (!isDate(parsed) && isObject(parsed)) ||\n // JS cannot handle big numbers. Leave it as a string to prevent data loss\n (typeof parsed === \"number\" &&\n parsed.toLocaleString(\"fullwide\", { useGrouping: false }) !== val)\n ) {\n return val;\n }\n return parsed;\n } catch (_) {\n if (isDateString(val)) {\n return new Date(val);\n }\n return val;\n }\n }\n\n private parseValues(values: any) {\n return isArrayFull(values)\n ? values.map((v: any) => this.parseValue(v))\n : this.parseValue(values);\n }\n\n private parseSearchQueryParam(d: any): SCondition | undefined {\n if (isNil(d)) {\n return undefined;\n }\n try {\n const data = JSON.parse(d);\n\n if (!isObject(data)) {\n throw new Error();\n }\n\n return data;\n } catch (_) {\n throw new RequestQueryException(\"Invalid search param. JSON expected\");\n }\n }\n\n private fieldsParser(data: string): QueryFields {\n // @ts-ignore\n return data.split(this._options.delimStr);\n }\n\n private conditionParser(\n cond: \"filter\" | \"or\" | \"search\",\n customOperators: CustomOperators,\n data: string\n ): QueryFilter {\n const isArrayValue: string[] = [\n CondOperator.IN as string,\n CondOperator.NOT_IN as string,\n CondOperator.BETWEEN as string,\n CondOperator.IN_LOW as string,\n CondOperator.NOT_IN_LOW as string,\n ].concat(\n Object.keys(customOperators).filter(\n (op: string) => customOperators[op].isArray\n )\n );\n const isEmptyValue: string[] = [\n CondOperator.IS_NULL as string,\n CondOperator.NOT_NULL as string,\n ];\n // @ts-ignore\n const param: string[] = data.split(this._options.delim);\n const field: string = param[0];\n const operator: string = param[1] as ComparisonOperator;\n let value: string = param[2] || \"\";\n\n if (isArrayValue.some((name: string): boolean => name === operator)) {\n // @ts-ignore\n value = value.split(this._options.delimStr) as any;\n }\n\n value = this.parseValues(value);\n\n if (\n !isEmptyValue.some((name: string): boolean => name === operator) &&\n !hasValue(value)\n ) {\n throw new RequestQueryException(`Invalid ${cond} value`);\n }\n\n const condition: QueryFilter = { field, operator, value };\n validateCondition(condition, cond, customOperators);\n\n return condition;\n }\n\n private joinParser(data: string): QueryJoin {\n // @ts-ignore\n const param: string[] = data.split(this._options.delim);\n\n const join: QueryJoin = {\n field: param[0],\n select: isStringFull(param[1])\n ? // @ts-ignore\n param[1].split(this._options.delimStr)\n : undefined,\n };\n validateJoin(join);\n\n return join;\n }\n\n private sortParser(data: string): QuerySort {\n const param: string[] = data.split(this._options.delimStr);\n const sort: QuerySort = {\n field: param[0],\n order: param[1] as any,\n };\n validateSort(sort);\n\n return sort;\n }\n\n private numericParser(\n num: \"limit\" | \"offset\" | \"page\" | \"cache\" | \"includeDeleted\",\n data: string\n ): number {\n const val = this.parseValue(data);\n validateNumeric(val, num);\n\n return val;\n }\n\n private paramParser(name: string): QueryFilter | undefined {\n validateParamOption(this._paramsOptions, name);\n const option: ParamOption = this._paramsOptions[name];\n\n if (option.disabled) {\n return undefined;\n }\n\n let value = this._params[name];\n\n switch (option.type) {\n case \"number\":\n value = this.parseValue(value);\n validateNumeric(value, `param ${name}`);\n break;\n case \"uuid\":\n validateUUID(value, name);\n break;\n default:\n break;\n }\n\n return { field: option.field as string, operator: \"$eq\", value };\n }\n}\n","import { RequestMethod } from \"@nestjs/common\";\nimport { RouteParamtypes } from \"@nestjs/common/enums/route-paramtypes.enum\";\nimport { get, isEqual, isFunction, isNil, isUndefined, keys } from \"lodash\";\nimport {\n createBulkDto,\n getValidationPipe,\n isArrayFull,\n isFalse,\n isIn,\n isObjectFull,\n R,\n SerializeHelper,\n Swagger,\n} from \"../helpers\";\n\nimport { CrudActions, CrudValidationGroups } from \"../enums\";\nimport {\n CrudRequestInterceptor,\n CrudResponseInterceptor,\n} from \"../interceptors\";\n\nimport {\n AuthOptions,\n BaseRoute,\n CrudOptions,\n CrudRequest,\n MergedCrudOptions,\n OperatorsOptions,\n ParamsOptions,\n QueryOptions,\n RoutesOptions,\n} from \"../interfaces\";\nimport { CrudConfigService } from \"../services\";\nimport { BaseRouteName } from \"../types\";\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst deepmerge = require('deepmerge');\n\nexport class RoutesFactoryService {\n protected options: MergedCrudOptions;\n protected swaggerModels: any = {};\n\n constructor(protected target: any, options: CrudOptions) {\n this.options = options;\n this.create();\n }\n\n /* istanbul ignore next */\n static create(target: any, options: CrudOptions): RoutesFactoryService {\n return new RoutesFactoryService(target, options);\n }\n\n protected get targetProto(): any {\n return this.target.prototype;\n }\n\n protected get modelName(): string {\n return this.options.model.type.name;\n }\n\n protected get modelType(): any {\n return this.options.model.type;\n }\n\n protected get actionsMap(): { [key in BaseRouteName]: CrudActions } {\n return {\n getManyBase: CrudActions.ReadAll,\n getOneBase: CrudActions.ReadOne,\n createManyBase: CrudActions.CreateMany,\n createOneBase: CrudActions.CreateOne,\n updateOneBase: CrudActions.UpdateOne,\n deleteOneBase: CrudActions.DeleteOne,\n replaceOneBase: CrudActions.ReplaceOne,\n recoverOneBase: CrudActions.RecoverOne,\n };\n }\n\n protected create(): void {\n const routesSchema: BaseRoute[] = this.getRoutesSchema();\n this.mergeOptions();\n this.setResponseModels();\n this.createRoutes(routesSchema);\n this.overrideRoutes(routesSchema);\n this.enableRoutes(routesSchema);\n }\n\n protected mergeOptions(): void {\n // merge auth config\n const authOptions: AuthOptions = R.getCrudAuthOptions(this.target);\n this.options.auth = isObjectFull(authOptions) ? authOptions : {};\n if (isUndefined(this.options.auth.property)) {\n this.options.auth.property = CrudConfigService.config?.auth?.property;\n }\n if (isUndefined(this.options.auth.groups)) {\n this.options.auth.groups = CrudConfigService.config?.auth?.groups;\n }\n if (isUndefined(this.options.auth.classTransformOptions)) {\n // @ts-ignore\n this.options.auth.classTransformOptions =\n CrudConfigService.config.auth?.classTransformOptions;\n }\n\n // merge query config\n const query: QueryOptions | {} = isObjectFull(this.options.query)\n ? this.options.query\n : {};\n\n this.options.query = { ...CrudConfigService.config.query, ...query };\n\n // merge routes config\n const routes: RoutesOptions | {} = isObjectFull(this.options.routes)\n ? this.options.routes\n : {};\n this.options.routes = deepmerge(\n CrudConfigService.config.routes || {},\n routes,\n {\n // @ts-ignore\n arrayMerge: (a, b, c) => b,\n }\n );\n\n // merge operators config\n const operators: OperatorsOptions | {} = isObjectFull(\n this.options.operators\n )\n ? this.options.operators\n : {};\n this.options.operators = (\n deepmerge(\n CrudConfigService.config?.operators,\n operators\n )\n );\n\n // set params\n this.options.params = isObjectFull(this.options.params)\n ? this.options.params\n : isObjectFull(CrudConfigService.config.params)\n ? CrudConfigService.config.params\n : {};\n const hasPrimary: boolean = this.getPrimaryParams().length > 0;\n if (!hasPrimary) {\n // @ts-ignore\n this.options.params[\"id\"] = {\n field: \"id\",\n type: \"number\",\n primary: true,\n };\n }\n\n // set dto\n if (!isObjectFull(this.options.dto)) {\n this.options.dto = {};\n }\n\n // set serialize\n const serialize = isObjectFull(this.options.serialize)\n ? this.options.serialize\n : {};\n this.options.serialize = {\n ...CrudConfigService.config.serialize,\n ...serialize,\n };\n this.options.serialize.get = isFalse(this.options.serialize.get)\n ? false\n : this.options.serialize.get || this.modelType;\n this.options.serialize.getMany = isFalse(this.options.serialize.getMany)\n ? false\n : this.options.serialize.getMany\n ? this.options.serialize.getMany\n : isFalse(this.options.serialize.get)\n ? false\n : SerializeHelper.createGetManyDto(\n this.options.serialize.get,\n this.modelName\n );\n this.options.serialize.create = isFalse(this.options.serialize.create)\n ? false\n : this.options.serialize.create || this.modelType;\n this.options.serialize.update = isFalse(this.options.serialize.update)\n ? false\n : this.options.serialize.update || this.modelType;\n this.options.serialize.replace = isFalse(this.options.serialize.replace)\n ? false\n : this.options.serialize.replace || this.modelType;\n this.options.serialize.delete =\n isFalse(this.options.serialize.delete) ||\n !this.options.routes?.deleteOneBase?.returnDeleted\n ? false\n : this.options.serialize.delete || this.modelType;\n\n R.setCrudOptions(this.options, this.target);\n }\n\n protected getRoutesSchema(): BaseRoute[] {\n return [\n {\n name: \"getOneBase\",\n path: \"/\",\n method: RequestMethod.GET,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"getManyBase\",\n path: \"/\",\n method: RequestMethod.GET,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"createOneBase\",\n path: \"/\",\n method: RequestMethod.POST,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"createManyBase\",\n path: \"/bulk\",\n method: RequestMethod.POST,\n enable: false,\n override: false,\n withParams: false,\n },\n {\n name: \"updateOneBase\",\n path: \"/\",\n method: RequestMethod.PATCH,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"replaceOneBase\",\n path: \"/\",\n method: RequestMethod.PUT,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"deleteOneBase\",\n path: \"/\",\n method: RequestMethod.DELETE,\n enable: false,\n override: false,\n withParams: true,\n },\n {\n name: \"recoverOneBase\",\n path: \"/recover\",\n method: RequestMethod.PATCH,\n enable: false,\n override: false,\n withParams: true,\n },\n ];\n }\n\n protected getManyBase(name: BaseRouteName) {\n this.targetProto[name] = function getManyBase(req: CrudRequest) {\n return this.service.getMany(req);\n };\n }\n\n protected getOneBase(name: BaseRouteName) {\n this.targetProto[name] = function getOneBase(req: CrudRequest) {\n return this.service.getOne(req);\n };\n }\n\n protected createOneBase(name: BaseRouteName) {\n this.targetProto[name] = function createOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.createOne(req, dto);\n };\n }\n\n protected createManyBase(name: BaseRouteName) {\n this.targetProto[name] = function createManyBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.createMany(req, dto);\n };\n }\n\n protected updateOneBase(name: BaseRouteName) {\n this.targetProto[name] = function updateOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.updateOne(req, dto);\n };\n }\n\n protected replaceOneBase(name: BaseRouteName) {\n this.targetProto[name] = function replaceOneBase(\n req: CrudRequest,\n dto: any\n ) {\n return this.service.replaceOne(req, dto);\n };\n }\n\n protected deleteOneBase(name: BaseRouteName) {\n this.targetProto[name] = function deleteOneBase(req: CrudRequest) {\n return this.service.deleteOne(req);\n };\n }\n\n protected recoverOneBase(name: BaseRouteName) {\n this.targetProto[name] = function recoverOneBase(req: CrudRequest) {\n return this.service.recoverOne(req);\n };\n }\n\n protected canCreateRoute(name: BaseRouteName) {\n const only: BaseRouteName[] | undefined = this.options.routes?.only;\n const exclude: BaseRouteName[] | undefined = this.options.routes?.exclude;\n\n // include recover route only for models with soft delete option\n if (name === \"recoverOneBase\" && this.options.query?.softDelete !== true) {\n return false;\n }\n\n if (isArrayFull(only)) {\n // @ts-ignore\n return only.some((route: BaseRouteName): boolean => route === name);\n }\n\n if (isArrayFull(exclude)) {\n // @ts-ignore\n return !exclude.some((route: BaseRouteName): boolean => route === name);\n }\n\n return true;\n }\n\n protected setResponseModels() {\n const modelType = isFunction(this.modelType)\n ? this.modelType\n : SerializeHelper.createGetOneResponseDto(this.modelName);\n this.swaggerModels.get = isFunction(this.options.serialize?.get)\n ? this.options.serialize?.get\n : modelType;\n this.swaggerModels.getMany =\n this.options.serialize?.getMany ||\n SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName);\n this.swaggerModels.create = isFunction(this.options.serialize?.create)\n ? this.options.serialize?.create\n : modelType;\n this.swaggerModels.update = isFunction(this.options.serialize?.update)\n ? this.options.serialize?.update\n : modelType;\n this.swaggerModels.replace = isFunction(this.options.serialize?.replace)\n ? this.options.serialize?.replace\n : modelType;\n this.swaggerModels.delete = isFunction(this.options.serialize?.delete)\n ? this.options.serialize?.delete\n : modelType;\n this.swaggerModels.recover = isFunction(this.options.serialize?.recover)\n ? this.options.serialize?.recover\n : modelType;\n Swagger.setExtraModels(this.swaggerModels);\n }\n\n protected createRoutes(routesSchema: BaseRoute[]) {\n const primaryParams: string[] = this.getPrimaryParams().filter(\n (param: string) => !this.options.params?.[param]?.disabled\n );\n\n routesSchema.forEach((route) => {\n if (this.canCreateRoute(route.name)) {\n // create base method\n this[route.name](route.name);\n route.enable = true;\n // set metadata\n this.setBaseRouteMeta(route.name);\n }\n\n if (route.withParams && primaryParams.length > 0) {\n route.path =\n route.path !== \"/\"\n ? `${primaryParams\n .map((param: string): string => `/:${param}`)\n .join(\"\")}${route.path}`\n : primaryParams\n .map((param: string): string => `/:${param}`)\n .join(\"\");\n }\n });\n }\n\n protected overrideRoutes(routesSchema: BaseRoute[]): void {\n Object.getOwnPropertyNames(this.targetProto).forEach(\n (name: string): void => {\n const override: BaseRouteName = R.getOverrideRoute(\n this.targetProto[name]\n );\n const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) =>\n isEqual(r.name, override)\n );\n\n if (override && route && route.enable) {\n // get metadata\n const interceptors: any[] = R.getInterceptors(this.targetProto[name]);\n const baseInterceptors: any[] = R.getInterceptors(\n this.targetProto[override]\n );\n const baseAction: CrudActions = R.getAction(\n this.targetProto[override]\n );\n const operation = Swagger.getOperation(this.targetProto[name]);\n const baseOperation = Swagger.getOperation(\n this.targetProto[override]\n );\n const swaggerParams = Swagger.getParams(this.targetProto[name]);\n const baseSwaggerParams = Swagger.getParams(\n this.targetProto[override]\n );\n const responseOk = Swagger.getResponseOk(this.targetProto[name]);\n const baseResponseOk = Swagger.getResponseOk(\n this.targetProto[override]\n );\n // set metadata\n R.setInterceptors(\n [...baseInterceptors, ...interceptors],\n this.targetProto[name]\n );\n R.setAction(baseAction, this.targetProto[name]);\n Swagger.setOperation(\n { ...baseOperation, ...operation },\n this.targetProto[name]\n );\n Swagger.setParams(\n [...baseSwaggerParams, ...swaggerParams],\n this.targetProto[name]\n );\n Swagger.setResponseOk(\n { ...baseResponseOk, ...responseOk },\n this.targetProto[name]\n );\n this.overrideParsedBodyDecorator(override, name);\n // enable route\n R.setRoute(route, this.targetProto[name]);\n route.override = true;\n }\n }\n );\n }\n\n protected enableRoutes(routesSchema: BaseRoute[]) {\n routesSchema.forEach((route) => {\n if (!route.override && route.enable) {\n R.setRoute(route, this.targetProto[route.name]);\n }\n });\n }\n\n protected overrideParsedBodyDecorator(override: BaseRouteName, name: string) {\n const allowed: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"updateOneBase\",\n \"replaceOneBase\",\n ] as BaseRouteName[];\n const withBody: Boolean = isIn(override, allowed);\n const parsedBody = R.getParsedBody(this.targetProto[name]);\n\n if (withBody && parsedBody) {\n const baseKey: string = `${RouteParamtypes.BODY}:1`;\n const key: string = `${RouteParamtypes.BODY}:${parsedBody.index}`;\n const baseRouteArgs = R.getRouteArgs(this.target, override);\n const routeArgs = R.getRouteArgs(this.target, name);\n const baseBodyArg = baseRouteArgs[baseKey];\n R.setRouteArgs(\n {\n ...routeArgs,\n [key]: {\n ...baseBodyArg,\n index: parsedBody.index,\n },\n },\n this.target,\n name\n );\n\n /* istanbul ignore else */\n if (isEqual(override, \"createManyBase\")) {\n const paramTypes: any[] = R.getRouteArgsTypes(this.targetProto, name);\n const metatype = paramTypes[parsedBody.index];\n const types = [String, Boolean, Number, Array, Object];\n const toCopy: boolean = isIn(metatype, types) || isNil(metatype);\n\n if (toCopy) {\n const baseParamTypes: any[] = R.getRouteArgsTypes(\n this.targetProto,\n override\n );\n const baseMetatype = baseParamTypes[1];\n paramTypes.splice(parsedBody.index, 1, baseMetatype);\n R.setRouteArgsTypes(paramTypes, this.targetProto, name);\n }\n }\n }\n }\n\n protected getPrimaryParams(): string[] {\n return keys(this.options.params).filter(\n (param: string) =>\n this.options.params?.[param] && this.options.params[param].primary\n );\n }\n\n protected setBaseRouteMeta(name: BaseRouteName) {\n this.setRouteArgs(name);\n this.setRouteArgsTypes(name);\n this.setInterceptors(name);\n this.setAction(name);\n this.setSwaggerOperation(name);\n this.setSwaggerPathParams(name);\n this.setSwaggerQueryParams(name);\n this.setSwaggerResponseOk(name);\n // set decorators after Swagger so metadata can be overwritten\n this.setDecorators(name);\n }\n\n protected setRouteArgs(name: BaseRouteName) {\n let rest = {};\n const routes: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"updateOneBase\",\n \"replaceOneBase\",\n ];\n\n if (isIn(name, routes)) {\n const action: string = this.routeNameAction(name);\n const hasDto: boolean = !isNil(get(this.options, `dto.${action}`));\n const { UPDATE, CREATE } = CrudValidationGroups;\n const groupEnum: CrudValidationGroups = isIn(name, [\n \"updateOneBase\",\n \"replaceOneBase\",\n ])\n ? UPDATE\n : CREATE;\n const group: CrudValidationGroups | undefined = !hasDto\n ? groupEnum\n : undefined;\n\n rest = R.setBodyArg(1, [getValidationPipe(this.options, group)]);\n }\n\n R.setRouteArgs({ ...R.setParsedRequestArg(0), ...rest }, this.target, name);\n }\n\n protected setRouteArgsTypes(name: BaseRouteName): void {\n switch (true) {\n case isEqual(name, \"createManyBase\"):\n const bulkDto = createBulkDto(this.options);\n R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name);\n break;\n case isIn(name, [\"createOneBase\", \"updateOneBase\", \"replaceOneBase\"]):\n const action: string = this.routeNameAction(name);\n const dto = get(this.options, `dto.${action}`, this.modelType);\n R.setRouteArgsTypes([Object, dto], this.targetProto, name);\n break;\n default:\n R.setRouteArgsTypes([Object], this.targetProto, name);\n }\n }\n\n protected setInterceptors(name: BaseRouteName): void {\n const interceptors = get(this.options, `routes.${name}.interceptors`, []);\n R.setInterceptors(\n [\n CrudRequestInterceptor,\n CrudResponseInterceptor,\n ...(isArrayFull(interceptors) ? interceptors : []),\n ],\n this.targetProto[name]\n );\n }\n\n protected setDecorators(name: BaseRouteName): void {\n const decorators = get(this.options, `routes.${name}.decorators`, []);\n R.setDecorators(\n isArrayFull(decorators) ? decorators : [],\n this.targetProto,\n name\n );\n }\n\n protected setAction(name: BaseRouteName): void {\n R.setAction(this.actionsMap[name], this.targetProto[name]);\n }\n\n protected setSwaggerOperation(name: BaseRouteName) {\n const summary: string = Swagger.operationsMap(this.modelName)[name];\n const operationId: string =\n name + this.targetProto.constructor.name + this.modelName;\n Swagger.setOperation({ summary, operationId }, this.targetProto[name]);\n }\n\n protected setSwaggerPathParams(name: BaseRouteName): void {\n const metadata: any[] = Swagger.getParams(this.targetProto[name]);\n const withoutPrimary: BaseRouteName[] = [\n \"createManyBase\",\n \"createOneBase\",\n \"getManyBase\",\n ];\n\n const removePrimary: boolean = isIn(name, withoutPrimary);\n const params: {} = keys(this.options.params)\n .filter((key: string) => !get(this.options, `params.${key}.disabled`))\n .filter(\n (key: string) =>\n !(removePrimary && get(this.options, `params.${key}.primary`))\n )\n .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {});\n\n const pathParamsMeta: any[] = Swagger.createPathParamsMeta(params);\n Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]);\n }\n\n protected setSwaggerQueryParams(name: BaseRouteName): void {\n const metadata: any[] = Swagger.getParams(this.targetProto[name]);\n const queryParamsMeta = Swagger.createQueryParamsMeta(name, this.options);\n Swagger.setParams(\n [...metadata, ...queryParamsMeta],\n this.targetProto[name]\n );\n }\n\n protected setSwaggerResponseOk(name: BaseRouteName): void {\n const metadata = Swagger.getResponseOk(this.targetProto[name]);\n const metadataToAdd =\n Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {};\n Swagger.setResponseOk(\n { ...metadata, ...metadataToAdd },\n this.targetProto[name]\n );\n }\n\n protected routeNameAction(name: BaseRouteName): string {\n return name.split(\"OneBase\")[0] || name.split(\"ManyBase\")[0];\n }\n}\n","export * from \"./crud-request.interceptor\";\nexport * from \"./crud-response.interceptor\";\n","import {\n BadRequestException,\n CallHandler,\n ExecutionContext,\n Injectable,\n NestInterceptor,\n} from \"@nestjs/common\";\nimport { QueryFilter, QueryFilterFunction, SCondition } from \"../types\";\nimport { RequestQueryException } from \"../exceptions\";\nimport { QueryParserService } from \"../services\";\nimport { isArrayFull } from \"../helpers\";\nimport { isFunction, isNil } from \"lodash\";\nimport { ClassTransformOptions } from \"class-transformer\";\n\nimport { PARSED_CRUD_REQUEST_KEY } from \"../constants\";\nimport { CrudActions } from \"../enums\";\nimport { CrudRequest, MergedCrudOptions, ParamsOptions } from \"../interfaces\";\nimport { CrudBaseInterceptor } from \"./crud-base.interceptor\";\nimport { Observable } from \"rxjs\";\n\n@Injectable()\nexport class CrudRequestInterceptor\n extends CrudBaseInterceptor\n implements NestInterceptor\n{\n intercept(context: ExecutionContext, next: CallHandler): Observable {\n const req = context.switchToHttp().getRequest();\n\n try {\n /* istanbul ignore else */\n if (!req[PARSED_CRUD_REQUEST_KEY]) {\n const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context);\n const parser = QueryParserService.create();\n\n parser.parseQuery(req.query, crudOptions.operators?.custom);\n\n let auth = null;\n if (!isNil(ctrlOptions)) {\n const search = this.getSearch(\n parser,\n crudOptions,\n action,\n req.params\n );\n auth = this.getAuth(parser, crudOptions, req);\n parser.search = auth.or\n ? { $or: [auth.or, { $and: search }] }\n : { $and: [auth.filter, ...search] };\n } else {\n parser.search = { $and: this.getSearch(parser, crudOptions, action) };\n }\n\n req[PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest(\n parser,\n crudOptions,\n auth?.auth\n );\n }\n\n return next.handle();\n } catch (error) {\n throw error instanceof RequestQueryException\n ? new BadRequestException(error.message)\n : error;\n }\n }\n\n getCrudRequest(\n parser: QueryParserService,\n crudOptions: Partial,\n auth?: any\n ): CrudRequest {\n const parsed = parser.getParsed();\n const { query, routes, params, operators } = crudOptions;\n return {\n parsed,\n options: {\n query,\n routes,\n params,\n operators,\n },\n auth,\n };\n }\n\n getSearch(\n parser: QueryParserService,\n crudOptions: Partial,\n action: CrudActions,\n params?: any\n ): SCondition[] {\n // params condition\n const paramsSearch = this.getParamsSearch(parser, crudOptions, params);\n\n // if `CrudOptions.query.filter` is a function then return transformed query search conditions\n if (isFunction(crudOptions.query?.filter)) {\n const filterCond: SCondition =\n (crudOptions.query?.filter as QueryFilterFunction)(\n parser.search,\n action === CrudActions.ReadAll\n ) || {};\n\n return [...paramsSearch, filterCond];\n }\n\n // if `CrudOptions.query.filter` is array or search condition type\n const optionsFilter = isArrayFull(crudOptions.query?.filter)\n ? (crudOptions.query?.filter as QueryFilter[]).map(\n parser.convertFilterToSearch\n )\n : [(crudOptions.query?.filter as SCondition) || {}];\n\n let search: SCondition[] = [];\n\n if (parser.search) {\n search = [parser.search];\n } else if (parser.filter.length > 0 && parser.or.length > 0) {\n search =\n parser.filter.length === 1 && parser.or.length === 1\n ? [\n {\n $or: [\n parser.convertFilterToSearch(parser.filter[0]),\n parser.convertFilterToSearch(parser.or[0]),\n ],\n },\n ]\n : [\n {\n $or: [\n { $and: parser.filter.map(parser.convertFilterToSearch) },\n { $and: parser.or.map(parser.convertFilterToSearch) },\n ],\n },\n ];\n } else if (parser.filter.length > 0) {\n search = parser.filter.map(parser.convertFilterToSearch);\n } else {\n if (parser.or.length > 0) {\n search =\n parser.or.length === 1\n ? [parser.convertFilterToSearch(parser.or[0])]\n : [\n {\n $or: parser.or.map(parser.convertFilterToSearch),\n },\n ];\n }\n }\n\n return [...paramsSearch, ...optionsFilter, ...search];\n }\n\n getParamsSearch(\n parser: QueryParserService,\n crudOptions: Partial,\n params?: any\n ): SCondition[] {\n if (params) {\n parser.parseParams(params, crudOptions.params);\n\n return isArrayFull(parser.paramsFilter)\n ? // @ts-ignore\n parser.paramsFilter.map(parser.convertFilterToSearch)\n : [];\n }\n\n return [];\n }\n\n getAuth(\n parser: QueryParserService,\n crudOptions: Partial,\n req: any\n ): { filter?: any; or?: any; auth?: any } {\n const auth: any = {};\n\n /* istanbul ignore else */\n if (crudOptions.auth) {\n const userOrRequest = crudOptions.auth.property\n ? req[crudOptions.auth.property]\n : req;\n\n if (crudOptions.auth.property && req[crudOptions.auth.property]) {\n if (typeof req[crudOptions.auth.property] === \"object\") {\n if (Object.keys(req[crudOptions.auth.property]).length > 0) {\n auth.auth = req[crudOptions.auth.property];\n }\n } else {\n auth.auth = req[crudOptions.auth.property];\n }\n }\n\n if (isFunction(crudOptions.auth.or)) {\n auth.or = crudOptions.auth.or(userOrRequest);\n }\n\n if (isFunction(crudOptions.auth.filter) && !auth.or) {\n auth.filter = crudOptions.auth.filter(userOrRequest) || {};\n }\n\n if (isFunction(crudOptions.auth.persist)) {\n parser.setAuthPersist(crudOptions.auth.persist(userOrRequest));\n }\n\n const options: ClassTransformOptions = {};\n if (isFunction(crudOptions.auth.classTransformOptions)) {\n Object.assign(\n options,\n crudOptions.auth.classTransformOptions(userOrRequest)\n );\n }\n\n if (isFunction(crudOptions.auth.groups)) {\n options.groups = crudOptions.auth.groups(userOrRequest);\n }\n parser.setClassTransformOptions(options);\n }\n\n return auth;\n }\n}\n","import { ExecutionContext, Type } from \"@nestjs/common\";\nimport { R } from \"../helpers\";\nimport { CrudActions } from \"../enums\";\nimport { MergedCrudOptions } from \"../interfaces\";\n\nexport class CrudBaseInterceptor {\n protected getCrudInfo(context: ExecutionContext): {\n ctrlOptions: MergedCrudOptions;\n crudOptions: Partial;\n action: CrudActions;\n } {\n const ctrl: Type = context.getClass();\n const handler = context.getHandler();\n const ctrlOptions: MergedCrudOptions = R.getCrudOptions(ctrl);\n const crudOptions = ctrlOptions\n ? ctrlOptions\n : {\n query: {},\n routes: {},\n params: {},\n operators: {},\n };\n const action: CrudActions = R.getAction(handler);\n\n return { ctrlOptions, crudOptions, action };\n }\n}\n","import {\n CallHandler,\n ExecutionContext,\n Injectable,\n NestInterceptor,\n} from \"@nestjs/common\";\nimport { isPlainObject, isEmpty, isFunction } from \"lodash\";\nimport { isFalse } from \"../helpers\";\nimport { ClassTransformOptions, instanceToPlain } from \"class-transformer\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { CrudActions } from \"../enums\";\nimport { MergedCrudOptions, SerializeOptions } from \"../interfaces\";\nimport { CrudBaseInterceptor } from \"./crud-base.interceptor\";\nimport { isObject } from \"class-validator\";\n\nconst actionToDtoNameMap: {\n [key in CrudActions]: keyof SerializeOptions;\n} = {\n [CrudActions.ReadAll]: \"getMany\",\n [CrudActions.ReadOne]: \"get\",\n [CrudActions.CreateMany]: \"createMany\",\n [CrudActions.CreateOne]: \"create\",\n [CrudActions.UpdateOne]: \"update\",\n [CrudActions.ReplaceOne]: \"replace\",\n [CrudActions.DeleteAll]: \"delete\",\n [CrudActions.DeleteOne]: \"delete\",\n [CrudActions.RecoverOne]: \"recover\",\n};\n\n@Injectable()\nexport class CrudResponseInterceptor\n extends CrudBaseInterceptor\n implements NestInterceptor\n{\n intercept(context: ExecutionContext, next: CallHandler): Observable {\n return next.handle().pipe(map((data) => this.serialize(context, data)));\n }\n\n protected transform(dto: any, data: any, options: ClassTransformOptions) {\n if (!isObject(data) || isFalse(dto)) {\n return data;\n }\n\n if (!isFunction(dto)) {\n return data.constructor !== Object\n ? instanceToPlain(data, options)\n : data;\n }\n\n return data instanceof dto\n ? instanceToPlain(data, options)\n : /* @ts-ignore */\n instanceToPlain(Object.assign(new dto(), data), options);\n }\n\n protected serialize(context: ExecutionContext, data: any): any {\n const req = context.switchToHttp().getRequest();\n const { crudOptions, action } = this.getCrudInfo(context);\n const { serialize } = >crudOptions;\n /* @ts-ignore */\n const dto = serialize[actionToDtoNameMap[action]];\n const isArray: boolean = Array.isArray(data);\n\n const options: ClassTransformOptions = {};\n\n if (isFunction(crudOptions.auth?.classTransformOptions)) {\n const userOrRequest = crudOptions.auth?.property\n ? req[crudOptions.auth.property]\n : req;\n Object.assign(\n options,\n crudOptions.auth?.classTransformOptions(userOrRequest)\n );\n }\n\n if (isFunction(crudOptions.auth?.groups)) {\n const userOrRequest = crudOptions.auth?.property\n ? req[crudOptions.auth.property]\n : req;\n options.groups = crudOptions.auth?.groups(userOrRequest);\n }\n\n switch (action) {\n case CrudActions.ReadAll:\n return isArray\n ? (data as any[]).map((item) =>\n this.transform(serialize?.get, item, options)\n )\n : this.transform(dto, data, options);\n case CrudActions.CreateMany:\n return isArray\n ? (data as any[]).map((item) => this.transform(dto, item, options))\n : this.transform(dto, data, options);\n default:\n return this.transform(dto, data, options);\n }\n }\n}\n","module.exports = require(\"rxjs/operators\");","\n\nimport { oO } from \"@zmotivat0r/o0\";\nimport { plainToInstance } from \"class-transformer\";\nimport { isEmpty, isNil, isNull, isUndefined } from \"lodash\";\nimport {\n BaseEntity,\n Brackets,\n ConnectionOptions,\n DeepPartial,\n EntityMetadata,\n ObjectLiteral,\n Repository,\n SelectQueryBuilder,\n WhereExpressionBuilder,\n} from \"typeorm\";\nimport { ColumnMetadata } from \"typeorm/metadata/ColumnMetadata\";\nimport { RelationMetadata } from \"typeorm/metadata/RelationMetadata\";\n\nimport { isArrayFull, isObject } from \"../helpers\";\nimport {\n CreateManyDto,\n CrudRequest,\n CrudRequestOptions,\n CustomOperators,\n DeleteOneRouteOptions,\n GetManyDefaultResponse,\n JoinOption,\n JoinOptions,\n ParsedRequestParams,\n QueryOptions,\n ReplaceOneRouteOptions,\n UpdateOneRouteOptions,\n} from \"../interfaces\";\nimport {\n ClassType,\n ComparisonOperator,\n CondOperator,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n SConditionKey,\n} from \"../types\";\n\nimport { CrudService } from \"./abstract-crud.service\";\n\ninterface IAllowedRelation {\n alias?: string;\n nested: boolean;\n name: string;\n path: string;\n columns: string[];\n primaryColumns: string[];\n allowedColumns: string[];\n}\n\nexport class TypeOrmCrudService extends CrudService<\n T,\n DeepPartial\n> {\n protected dbName: ConnectionOptions[\"type\"];\n protected entityColumns: string[] | undefined;\n protected entityPrimaryColumns: string[] | undefined;\n protected entityHasDeleteColumn = false;\n protected entityColumnsHash: ObjectLiteral = {};\n protected entityRelationsHash: Map = new Map();\n protected sqlInjectionRegEx: RegExp[] = [\n /(%27)|(')|(--)|(%23)|(#)/gi,\n /((%3D)|(=))[^\\n]*((%27)|(')|(--)|(%3B)|(;))/gi,\n /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi,\n /((%27)|('))union/gi,\n ];\n\n constructor(protected repo: Repository) {\n super();\n\n this.dbName = this.repo.metadata.connection.options.type;\n this.onInitMapEntityColumns();\n }\n\n public get findOne(): Repository[\"findOne\"] {\n return this.repo.findOne.bind(this.repo);\n }\n\n public get findOneBy(): Repository[\"findOneBy\"] {\n return this.repo.findOneBy.bind(this.repo);\n }\n\n public get find(): Repository[\"find\"] {\n return this.repo.find.bind(this.repo);\n }\n\n public get count(): Repository[\"count\"] {\n return this.repo.count.bind(this.repo);\n }\n\n protected get entityType(): ClassType {\n return this.repo.target as ClassType;\n }\n\n protected get alias(): string {\n return this.repo.metadata.targetName;\n }\n\n /**\n * Get many\n * @param req\n */\n public async getMany(\n req: CrudRequest\n ): Promise | T[]> {\n const { parsed, options } = req;\n const builder: SelectQueryBuilder = await this.createBuilder(\n parsed,\n options\n );\n\n return this.doGetMany(builder, parsed, options);\n }\n\n /**\n * Get one\n * @param req\n */\n public async getOne(req: CrudRequest): Promise {\n return this.getOneOrFail(req);\n }\n\n /**\n * Create one\n * @param req\n * @param dto\n */\n public async createOne(req: CrudRequest, dto: DeepPartial): Promise {\n // @ts-ignore\n const { returnShallow } = req.options.routes?.createOneBase;\n const entity = this.prepareEntityBeforeSave(dto, req.parsed);\n\n /* istanbul ignore if */\n if (!entity) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n const saved = await this.repo.save(entity);\n\n if (returnShallow) {\n return saved;\n } else {\n const primaryParams = this.getPrimaryParams(req.options);\n\n if (\n isEmpty(primaryParams) &&\n primaryParams.some((p) => isNil(saved[p]))\n ) {\n return saved;\n } else {\n req.parsed.search = primaryParams.reduce(\n (acc, p) => ({ ...acc, [p]: saved[p] }),\n {}\n );\n return this.getOneOrFail(req);\n }\n }\n }\n\n /**\n * Create many\n * @param req\n * @param dto\n */\n public async createMany(\n req: CrudRequest,\n dto: CreateManyDto>\n ): Promise {\n /* istanbul ignore if */\n if (!isObject(dto) || !isArrayFull(dto.bulk)) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n const bulk = dto.bulk\n .map((one) => this.prepareEntityBeforeSave(one, req.parsed))\n .filter((d) => !isUndefined(d));\n\n /* istanbul ignore if */\n if (!bulk.length) {\n this.throwBadRequestException(`Empty data. Nothing to save.`);\n }\n\n return this.repo.save(bulk, { chunk: 50 });\n }\n\n /**\n * Update one\n * @param req\n * @param dto\n */\n public async updateOne(req: CrudRequest, dto: DeepPartial): Promise {\n const { allowParamsOverride, returnShallow } = (\n req.options.routes?.updateOneBase\n );\n const paramsFilters = this.getParamFilters(req.parsed);\n // disable cache while updating\n // @ts-ignore\n req.options.query.cache = false;\n const found = await this.getOneOrFail(req, returnShallow);\n\n const toSave = !allowParamsOverride\n ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist }\n : { ...found, ...dto, ...req.parsed.authPersist };\n const updated = await this.repo.save(\n plainToInstance(\n this.entityType,\n toSave,\n req.parsed.classTransformOptions\n ) as unknown as DeepPartial\n );\n\n if (returnShallow) {\n return updated;\n } else {\n req.parsed.paramsFilter.forEach((filter) => {\n // @ts-ignore\n filter.value = updated[filter.field];\n });\n\n return this.getOneOrFail(req);\n }\n }\n\n /**\n * Recover one\n * @param req\n * @param dto\n */\n public async recoverOne(req: CrudRequest): Promise {\n // disable cache while recovering\n // @ts-ignore\n req.options.query.cache = false;\n const found = await this.getOneOrFail(req, false, true);\n return this.repo.recover(found as DeepPartial);\n }\n\n /**\n * Replace one\n * @param req\n * @param dto\n */\n public async replaceOne(req: CrudRequest, dto: DeepPartial): Promise {\n const { allowParamsOverride, returnShallow } = (\n req.options.routes?.replaceOneBase\n );\n const paramsFilters = this.getParamFilters(req.parsed);\n // disable cache while replacing\n // @ts-ignore\n req.options.query.cache = false;\n const [_, found] = await oO(this.getOneOrFail(req, returnShallow));\n const toSave = !allowParamsOverride\n ? {\n ...(found || {}),\n ...dto,\n ...paramsFilters,\n ...req.parsed.authPersist,\n }\n : {\n ...(found || {}),\n ...paramsFilters,\n ...dto,\n ...req.parsed.authPersist,\n };\n const replaced = await this.repo.save(\n plainToInstance(\n this.entityType,\n toSave,\n req.parsed.classTransformOptions\n ) as unknown as DeepPartial\n );\n\n if (returnShallow) {\n return replaced;\n } else {\n const primaryParams: string[] = this.getPrimaryParams(req.options);\n\n /* istanbul ignore if */\n if (!primaryParams.length) {\n return replaced;\n }\n\n req.parsed.search = primaryParams.reduce(\n (acc: {}, p: string) => ({\n ...acc,\n // @ts-ignore\n [p]: replaced[p],\n }),\n {}\n );\n return this.getOneOrFail(req);\n }\n }\n\n /**\n * Delete one\n * @param req\n */\n public async deleteOne(req: CrudRequest): Promise {\n const { returnDeleted } = (\n req.options.routes?.deleteOneBase\n );\n // disable cache while deleting\n // @ts-ignore\n req.options.query.cache = false;\n const found: T = await this.getOneOrFail(req, returnDeleted);\n const toReturn: T | undefined = returnDeleted\n ? plainToInstance(\n this.entityType,\n { ...found },\n req.parsed.classTransformOptions\n )\n : undefined;\n\n const deleted: DeepPartial & T =\n req.options.query?.softDelete === true\n ? await this.repo.softRemove(found as DeepPartial)\n : await this.repo.remove(found);\n\n return toReturn;\n }\n\n public getParamFilters(parsed: CrudRequest[\"parsed\"]): ObjectLiteral {\n const filters = {};\n\n if (!isEmpty(parsed.paramsFilter.length)) {\n for (const filter of parsed.paramsFilter) {\n // @ts-ignore\n filters[filter.field] = filter.value;\n }\n }\n\n return filters;\n }\n\n /**\n * Create TypeOrm QueryBuilder\n * @param parsed\n * @param options\n * @param many\n * @param withDeleted\n */\n public async createBuilder(\n parsed: ParsedRequestParams,\n options: CrudRequestOptions,\n many = true,\n withDeleted = false\n ): Promise> {\n // create query builder\n const builder: SelectQueryBuilder = this.repo.createQueryBuilder(\n this.alias\n );\n // get select fields\n const select: string[] = this.getSelect(parsed, options.query || {});\n // select fields\n builder.select(select);\n\n // if soft deleted is enabled add where statement to filter deleted records\n if (this.entityHasDeleteColumn && options.query?.softDelete) {\n if (parsed.includeDeleted === 1 || withDeleted) {\n builder.withDeleted();\n }\n }\n\n // search\n this.setSearchCondition(\n builder,\n parsed.search || {},\n options.operators?.custom || {}\n );\n\n // set joins\n const joinOptions: JoinOptions = options.query?.join || {};\n const allowedJoins: string[] = Object.keys(joinOptions);\n\n if (!isEmpty(allowedJoins)) {\n const eagerJoins: any = {};\n\n for (let i = 0; i < allowedJoins.length; i++) {\n if (joinOptions[allowedJoins[i]].eager) {\n const cond: QueryJoin = parsed.join.find(\n (j: QueryJoin) => j && j.field === allowedJoins[i]\n ) || {\n field: allowedJoins[i],\n };\n this.setJoin(cond, joinOptions, builder);\n eagerJoins[allowedJoins[i]] = true;\n }\n }\n\n if (isArrayFull(parsed.join)) {\n for (let i = 0; i < parsed.join.length; i++) {\n if (!eagerJoins[parsed.join[i].field]) {\n this.setJoin(parsed.join[i], joinOptions, builder);\n }\n }\n }\n }\n\n if (many) {\n // set sort (order by)\n const sort = this.getSort(parsed, options.query || {});\n builder.orderBy(sort);\n\n // set take\n const take = this.getTake(parsed, options.query || {});\n\n if (take && isFinite(take)) {\n builder.take(take);\n }\n\n // set skip\n const skip = this.getSkip(parsed, take || 0);\n\n if (skip && isFinite(skip)) {\n builder.skip(skip);\n }\n }\n\n // set cache\n\n if (options.query?.cache && parsed.cache !== 0) {\n builder.cache(options.query.cache);\n }\n\n return builder;\n }\n\n /**\n * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount`\n * helpful for overriding `TypeOrmCrudService#getMany`\n * @see getMany\n * @see SelectQueryBuilder#getMany\n * @see SelectQueryBuilder#getManyAndCount\n * @param builder\n * @param query\n * @param options\n */\n protected async doGetMany(\n builder: SelectQueryBuilder,\n query: ParsedRequestParams,\n options: CrudRequestOptions\n ): Promise | T[]> {\n if (this.decidePagination(query, options)) {\n const [data, total] = await builder.getManyAndCount();\n const limit: number | undefined = builder.expressionMap.take;\n const offset: number | undefined = builder.expressionMap.skip;\n\n return this.createPageInfo(data, total, limit || total, offset || 0);\n }\n\n return builder.getMany();\n }\n\n protected onInitMapEntityColumns(): void {\n this.entityColumns = this.repo.metadata.columns.map(\n (prop: ColumnMetadata): string => {\n // In case column is an embedded, use the propertyPath to get complete path\n if (prop.embeddedMetadata) {\n this.entityColumnsHash[prop.propertyPath] = prop.databasePath;\n return prop.propertyPath;\n }\n this.entityColumnsHash[prop.propertyName] = prop.databasePath;\n return prop.propertyName;\n }\n );\n this.entityPrimaryColumns = this.repo.metadata.columns\n .filter((prop: ColumnMetadata) => prop.isPrimary)\n .map((prop: ColumnMetadata) => prop.propertyName);\n this.entityHasDeleteColumn = this.repo.metadata.columns.some(\n (prop: ColumnMetadata) => !isEmpty(prop.isDeleteDate)\n );\n }\n\n protected async getOneOrFail(\n req: CrudRequest,\n shallow = false,\n withDeleted = false\n ): Promise {\n const { parsed, options } = req;\n const builder: SelectQueryBuilder = shallow\n ? this.repo.createQueryBuilder(this.alias)\n : await this.createBuilder(parsed, options, true, withDeleted);\n\n if (shallow) {\n this.setSearchCondition(\n builder,\n parsed.search || null,\n options.operators?.custom\n );\n }\n\n const found: T | null = withDeleted\n ? await builder.withDeleted().getOne()\n : await builder.getOne();\n\n if (!found) {\n this.throwNotFoundException(this.alias);\n }\n\n return found;\n }\n\n protected prepareEntityBeforeSave(\n dto: DeepPartial,\n parsed: CrudRequest[\"parsed\"]\n ): T | undefined {\n /* istanbul ignore if */\n if (!isObject(dto)) {\n return undefined;\n }\n\n if (!isEmpty(parsed.paramsFilter)) {\n for (const filter of parsed.paramsFilter) {\n // @ts-ignore\n dto[filter.field] = filter.value;\n }\n }\n\n /* istanbul ignore if */\n if (isEmpty(Object.keys(dto))) {\n return undefined;\n }\n\n return dto instanceof this.entityType\n ? Object.assign(dto, parsed.authPersist)\n : plainToInstance(\n this.entityType,\n { ...dto, ...parsed.authPersist },\n parsed.classTransformOptions\n );\n }\n\n protected getAllowedColumns(\n columns: string[],\n options: QueryOptions\n ): string[] {\n return (!options.exclude || !options.exclude.length) &&\n (!options.allow || !options.allow.length)\n ? columns\n : columns.filter(\n (column: string) =>\n (options.exclude && options.exclude.length\n ? !options.exclude.some((col: string) => col === column)\n : true) &&\n (options.allow && options.allow.length\n ? options.allow.some((col) => col === column)\n : true)\n );\n }\n\n protected getEntityColumns(entityMetadata: EntityMetadata): {\n columns: string[];\n primaryColumns: string[];\n } {\n const columns: string[] =\n entityMetadata.columns.map((prop: ColumnMetadata) => prop.propertyPath) ||\n [];\n const primaryColumns: string[] =\n entityMetadata.primaryColumns.map(\n (prop: ColumnMetadata) => prop.propertyPath\n ) || [];\n\n return { columns, primaryColumns };\n }\n\n protected getRelationMetadata(\n field: string,\n options: JoinOption\n ): IAllowedRelation | null {\n try {\n let allowedRelation;\n let nested = false;\n\n if (this.entityRelationsHash.has(field)) {\n allowedRelation = this.entityRelationsHash.get(field);\n } else {\n const fields: string[] = field.split(\".\");\n let relationMetadata: EntityMetadata | null = null;\n let name: string | undefined;\n let path: string | undefined;\n let parentPath: string | undefined;\n\n if (fields.length === 1) {\n const found: RelationMetadata | undefined =\n this.repo.metadata.relations.find(\n (one: RelationMetadata): boolean => one.propertyName === fields[0]\n );\n\n if (found) {\n name = fields[0];\n path = `${this.alias}.${fields[0]}`;\n relationMetadata = found.inverseEntityMetadata;\n }\n } else {\n nested = true;\n parentPath = \"\";\n\n const reduced = fields.reduce(\n // @ts-ignore\n (res, propertyName: string, i) => {\n const found = res.relations?.length\n ? res.relations.find(\n (one: RelationMetadata): boolean =>\n one.propertyName === propertyName\n )\n : null;\n relationMetadata = found ? found.inverseEntityMetadata : null;\n const relations: RelationMetadata[] = relationMetadata\n ? relationMetadata.relations\n : [];\n name = propertyName;\n\n if (i !== fields.length - 1) {\n parentPath = !parentPath\n ? propertyName\n : `${parentPath}.${propertyName}`;\n }\n\n return {\n relations,\n relationMetadata,\n };\n },\n {\n relations: this.repo.metadata.relations,\n relationMetadata: null,\n }\n );\n\n // @ts-ignore\n relationMetadata = reduced.relationMetadata;\n }\n\n // @ts-ignore\n if (relationMetadata) {\n const { columns, primaryColumns } =\n this.getEntityColumns(relationMetadata);\n\n if (!path && parentPath) {\n const parentAllowedRelation: IAllowedRelation | undefined =\n this.entityRelationsHash.get(parentPath);\n\n if (parentAllowedRelation) {\n path = parentAllowedRelation.alias\n ? `${parentAllowedRelation.alias}.${name}`\n : field;\n }\n }\n\n allowedRelation = {\n alias: options.alias,\n name,\n path,\n columns,\n nested,\n primaryColumns,\n };\n }\n }\n\n if (allowedRelation) {\n const allowedColumns: string[] = this.getAllowedColumns(\n allowedRelation.columns,\n options\n );\n const toSave: IAllowedRelation = {\n ...allowedRelation,\n allowedColumns,\n };\n\n this.entityRelationsHash.set(field, toSave);\n\n if (options.alias) {\n this.entityRelationsHash.set(options.alias, toSave);\n }\n\n return toSave;\n }\n } catch (_) {\n return null;\n }\n return null;\n }\n\n protected setJoin(\n cond: QueryJoin,\n joinOptions: JoinOptions,\n builder: SelectQueryBuilder\n ): undefined | void {\n const options: JoinOption = joinOptions[cond.field] ?? null;\n\n if (!options) {\n console.warn(\n 'relation \"' +\n cond.field +\n '\" not found in allowed relations in the controller. Did you mean to use one of these? [' +\n Object.keys(joinOptions).join(\", \") +\n \"]\"\n );\n return;\n }\n\n const allowedRelation: IAllowedRelation | null = this.getRelationMetadata(\n cond.field,\n options\n );\n\n if (!allowedRelation) {\n return;\n }\n\n const relationType = options.required ? \"innerJoin\" : \"leftJoin\";\n const alias: string = options.alias ? options.alias : allowedRelation.name;\n\n builder[relationType](allowedRelation.path, alias);\n\n if (options.select !== false) {\n const columns = isArrayFull(cond.select)\n ? cond.select?.filter((column: string) =>\n allowedRelation.allowedColumns.some(\n (allowed: string): boolean => allowed === column\n )\n ) || []\n : allowedRelation.allowedColumns || [];\n\n const select: string[] = [\n ...allowedRelation.primaryColumns,\n // @ts-ignore\n ...(isArrayFull(options.persist) ? options.persist : []),\n ...columns,\n ].map((col): string => `${alias}.${col}`);\n\n builder.addSelect(Array.from(new Set(select)));\n }\n }\n\n protected setAndWhere(\n cond: QueryFilter,\n i: any,\n builder: SelectQueryBuilder | WhereExpressionBuilder,\n customOperators: CustomOperators\n ): void {\n const { str, params } = this.mapOperatorsToQuery(\n cond,\n `andWhere${i}`,\n customOperators\n );\n builder.andWhere(str, params);\n }\n\n protected setOrWhere(\n cond: QueryFilter,\n i: any,\n builder: SelectQueryBuilder | WhereExpressionBuilder,\n customOperators: CustomOperators\n ): void {\n const { str, params } = this.mapOperatorsToQuery(\n cond,\n `orWhere${i}`,\n customOperators\n );\n builder.orWhere(str, params);\n }\n\n protected setSearchCondition(\n builder: SelectQueryBuilder,\n search: SCondition | null,\n customOperators: CustomOperators,\n condition: SConditionKey = \"$and\"\n ): void {\n if (isObject(search)) {\n const keys = Object.keys(search);\n\n if (keys.length) {\n // search: {$ne: [...]}\n // @ts-ignore\n if (isArrayFull(search?.$ne)) {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n // @ts-ignore\n search.$not.forEach((item: any): void => {\n this.setSearchCondition(qb, item, customOperators, \"$and\");\n });\n }),\n true\n );\n }\n // search: {$and: [...], ...}\n else if (isArrayFull(search?.$and)) {\n // search: {$and: [{}]}\n if (search?.$and?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$and[0],\n customOperators,\n condition\n );\n }\n // search: {$and: [{}, {}, ...]}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n search?.$and?.forEach((item: any): void => {\n this.setSearchCondition(qb, item, customOperators, \"$and\");\n });\n })\n );\n }\n }\n // search: {$or: [...], ...}\n else if (isArrayFull(search?.$or)) {\n // search: {$or: [...]}\n if (keys.length === 1) {\n // search: {$or: [{}]}\n if (search?.$or?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$or[0],\n customOperators,\n condition\n );\n }\n // search: {$or: [{}, {}, ...]}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any) => {\n search?.$or?.forEach((item: any) => {\n this.setSearchCondition(qb, item, customOperators, \"$or\");\n });\n })\n );\n }\n }\n // search: {$or: [...], foo, ...}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n keys.forEach((field: string): void => {\n if (field !== \"$or\") {\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n }\n } else {\n if (search?.$or?.length === 1) {\n this.setSearchCondition(\n builder,\n search.$or[0],\n customOperators,\n \"$and\"\n );\n } else {\n this.builderAddBrackets(\n qb,\n \"$and\",\n new Brackets((qb2: any) => {\n search?.$or?.forEach((item: any) => {\n this.setSearchCondition(\n qb2,\n item,\n customOperators,\n \"$or\"\n );\n });\n })\n );\n }\n }\n });\n })\n );\n }\n }\n // search: {...}\n else {\n // search: {foo}\n if (keys.length === 1) {\n const field: string = keys[0];\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n builder,\n condition,\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n builder,\n condition,\n field,\n value,\n customOperators\n );\n }\n }\n // search: {foo, ...}\n else {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any) => {\n keys.forEach((field: string) => {\n // @ts-ignore\n const value = search[field];\n if (!isObject(value)) {\n this.builderSetWhere(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n } else {\n this.setSearchFieldObjectCondition(\n qb,\n \"$and\",\n field,\n value,\n customOperators\n );\n }\n });\n })\n );\n }\n }\n }\n }\n }\n\n protected builderAddBrackets(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n brackets: Brackets,\n negated = false\n ) {\n if (negated) {\n // No builtin support for not, this is copied from QueryBuilder.getWhereCondition\n\n const whereQueryBuilder: SelectQueryBuilder =\n builder.createQueryBuilder();\n\n (whereQueryBuilder as any).parentQueryBuilder = builder;\n\n whereQueryBuilder.expressionMap.mainAlias =\n builder.expressionMap.mainAlias;\n whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled =\n builder.expressionMap.aliasNamePrefixingEnabled;\n whereQueryBuilder.expressionMap.parameters =\n builder.expressionMap.parameters;\n whereQueryBuilder.expressionMap.nativeParameters =\n builder.expressionMap.nativeParameters;\n\n whereQueryBuilder.expressionMap.wheres = [];\n\n brackets.whereFactory(whereQueryBuilder as any);\n\n const wheres = {\n operator: \"brackets\",\n condition: whereQueryBuilder.expressionMap.wheres,\n };\n\n const type =\n condition === \"$and\" ? \"and\" : condition === \"$or\" ? \"or\" : \"simple\";\n builder.expressionMap.wheres.push({\n type,\n condition: {\n operator: \"not\",\n condition: wheres as any,\n },\n });\n } else if (condition === \"$and\") {\n builder.andWhere(brackets);\n } else {\n builder.orWhere(brackets);\n }\n }\n\n protected builderSetWhere(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n field: string,\n value: any,\n customOperators: CustomOperators,\n operator: ComparisonOperator = \"$eq\"\n ): void {\n const time = process.hrtime();\n // const index = `${field}${time[0]}${time[1]}`;\n /**\n * Correcting the Error [Invalid Column Name] or [ syntax error at or near \\\":\\\".]\n * When using filter or search in relational/nested entities.\n */\n const safeFieldName = field.replace(/./g, \"_\");\n const index = `${safeFieldName}${time[0]}${time[1]}`;\n\n const args = [\n { field, operator: isNull(value) ? \"$isnull\" : operator, value },\n index,\n builder,\n customOperators,\n ];\n const fn = condition === \"$and\" ? this.setAndWhere : this.setOrWhere;\n // @ts-ignore\n fn.apply(this, args);\n }\n\n protected setSearchFieldObjectCondition(\n builder: SelectQueryBuilder,\n condition: SConditionKey,\n field: string,\n object: any,\n customOperators: CustomOperators\n ): void {\n if (isObject(object)) {\n const operators: string[] = Object.keys(object);\n\n if (operators.length === 1) {\n const operator: string = operators[0] as ComparisonOperator;\n const value = object[operator];\n\n if (isObject(object.$or)) {\n const orKeys: string[] = Object.keys(object.$or);\n this.setSearchFieldObjectCondition(\n builder,\n orKeys.length === 1 ? condition : \"$or\",\n field,\n object.$or,\n customOperators\n );\n } else {\n this.builderSetWhere(\n builder,\n condition,\n field,\n value,\n customOperators,\n operator\n );\n }\n } else {\n if (operators.length > 1) {\n this.builderAddBrackets(\n builder,\n condition,\n new Brackets((qb: any): void => {\n operators.forEach((operator: ComparisonOperator): void => {\n const value = object[operator];\n\n if (operator !== \"$or\") {\n this.builderSetWhere(\n qb,\n condition,\n field,\n value,\n customOperators,\n operator\n );\n } else {\n const orKeys: string[] = Object.keys(object.$or);\n\n if (orKeys.length === 1) {\n this.setSearchFieldObjectCondition(\n qb,\n condition,\n field,\n object.$or,\n customOperators\n );\n } else {\n this.builderAddBrackets(\n qb,\n condition,\n new Brackets((qb2: any) => {\n this.setSearchFieldObjectCondition(\n qb2,\n \"$or\",\n field,\n object.$or,\n customOperators\n );\n })\n );\n }\n }\n });\n })\n );\n }\n }\n }\n }\n\n protected getSelect(\n query: ParsedRequestParams,\n options: QueryOptions\n ): string[] {\n const allowed: string[] = this.getAllowedColumns(\n this.entityColumns || [],\n options\n );\n const columns =\n query.fields && query.fields.length\n ? query.fields.filter((field) =>\n allowed.some((col: string): boolean => field === col)\n )\n : allowed;\n return [\n ...new Set([\n ...(options.persist && options.persist.length ? options.persist : []),\n ...columns,\n ...(this.entityPrimaryColumns || []),\n ]),\n ].map((col): string => `${this.alias}.${col}`);\n }\n\n protected getSort(query: ParsedRequestParams, options: QueryOptions) {\n return query.sort && query.sort.length\n ? this.mapSort(query.sort)\n : options.sort && options.sort.length\n ? this.mapSort(options.sort)\n : {};\n }\n\n protected getFieldWithAlias(field: string, sort = false) {\n const i = [\"mysql\", \"mariadb\"].includes(this.dbName) ? \"`\" : '\"';\n const cols = field.split(\".\");\n\n switch (cols.length) {\n case 1:\n if (sort) {\n return `${this.alias}.${field}`;\n }\n\n const dbColName =\n this.entityColumnsHash[field] !== field\n ? this.entityColumnsHash[field]\n : field;\n\n return `${i}${this.alias}${i}.${i}${dbColName}${i}`;\n case 2:\n return field;\n default:\n return cols.slice(cols.length - 2, cols.length).join(\".\");\n }\n }\n\n protected mapSort(sort: QuerySort[]) {\n const params: ObjectLiteral = {};\n\n for (let i = 0; i < sort.length; i++) {\n const field = this.getFieldWithAlias(sort[i].field, true);\n const checkedFiled = this.checkSqlInjection(field);\n params[checkedFiled] = sort[i].order;\n }\n\n return params;\n }\n\n protected mapOperatorsToQuery(\n cond: QueryFilter,\n param: any,\n customOperators: CustomOperators = {}\n ): { str: string; params: ObjectLiteral } {\n const field: string = this.getFieldWithAlias(cond.field);\n const likeOperator = this.dbName === \"postgres\" ? \"ILIKE\" : \"LIKE\";\n let str: string | undefined;\n let params: ObjectLiteral | undefined;\n\n if (cond.operator[0] !== \"$\") {\n cond.operator = (\"$\" + cond.operator) as ComparisonOperator;\n }\n\n switch (cond.operator) {\n case CondOperator.EQUALS:\n str = `${field} = :${param}`;\n break;\n\n case CondOperator.NOT_EQUALS:\n str = `${field} != :${param}`;\n break;\n\n case CondOperator.GREATER_THAN:\n str = `${field} > :${param}`;\n break;\n\n case CondOperator.LOWER_THAN:\n str = `${field} < :${param}`;\n break;\n\n case CondOperator.GREATER_THAN_EQUALS:\n str = `${field} >= :${param}`;\n break;\n\n case CondOperator.LOWER_THAN_EQUALS:\n str = `${field} <= :${param}`;\n break;\n\n case CondOperator.STARTS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `${cond.value}%` };\n break;\n\n case CondOperator.ENDS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `%${cond.value}` };\n break;\n\n case CondOperator.CONTAINS:\n str = `${field} LIKE :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.EXCLUDES:\n str = `${field} NOT LIKE :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.IN:\n this.checkFilterIsArray(cond);\n str = `${field} IN (:...${param})`;\n break;\n\n case CondOperator.NOT_IN:\n this.checkFilterIsArray(cond);\n str = `${field} NOT IN (:...${param})`;\n break;\n\n case CondOperator.IS_NULL:\n str = `${field} IS NULL`;\n params = {};\n break;\n\n case CondOperator.NOT_NULL:\n str = `${field} IS NOT NULL`;\n params = {};\n break;\n\n case CondOperator.BETWEEN:\n this.checkFilterIsArray(cond, cond.value.length !== 2);\n str = `${field} BETWEEN :${param}0 AND :${param}1`;\n params = {\n [`${param}0`]: cond.value[0],\n [`${param}1`]: cond.value[1],\n };\n break;\n\n // case insensitive\n case CondOperator.EQUALS_LOW:\n str = `LOWER(${field}) = :${param}`;\n break;\n\n case CondOperator.NOT_EQUALS_LOW:\n str = `LOWER(${field}) != :${param}`;\n break;\n\n case CondOperator.STARTS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `${cond.value}%` };\n break;\n\n case CondOperator.ENDS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}` };\n break;\n\n case CondOperator.CONTAINS_LOW:\n str = `LOWER(${field}) ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.EXCLUDES_LOW:\n str = `LOWER(${field}) NOT ${likeOperator} :${param}`;\n params = { [param]: `%${cond.value}%` };\n break;\n\n case CondOperator.IN_LOW:\n this.checkFilterIsArray(cond);\n str = `LOWER(${field}) IN (:...${param})`;\n break;\n\n case CondOperator.NOT_IN_LOW:\n this.checkFilterIsArray(cond);\n str = `LOWER(${field}) NOT IN (:...${param})`;\n break;\n\n default:\n const customOperator = customOperators[cond.operator];\n if (!customOperator) {\n str = `${field} = :${param}`;\n break;\n }\n\n try {\n if (customOperator.isArray) {\n this.checkFilterIsArray(cond);\n }\n str = customOperator.query(field, param);\n params = customOperator.params || {};\n } catch (error) {\n this.throwBadRequestException(\n `Invalid custom operator '${field}' query`\n );\n }\n break;\n }\n\n if (typeof params === \"undefined\") {\n params = { [param]: cond.value };\n }\n\n return { str: str, params };\n }\n\n protected checkFilterIsArray(cond: QueryFilter, withLength?: boolean) {\n /* istanbul ignore if */\n if (\n !Array.isArray(cond.value) ||\n !cond.value.length ||\n (!isNil(withLength) ? withLength : false)\n ) {\n this.throwBadRequestException(`Invalid column '${cond.field}' value`);\n }\n }\n\n protected checkSqlInjection(field: string): string {\n if (this.sqlInjectionRegEx.length) {\n for (let i = 0; i < this.sqlInjectionRegEx.length; i++) {\n if (this.sqlInjectionRegEx[i].test(field)) {\n this.throwBadRequestException(`SQL injection detected: \"${field}\"`);\n }\n }\n }\n\n return field;\n }\n}\n","module.exports = require(\"@zmotivat0r/o0\");","module.exports = require(\"typeorm\");","import { R } from \"../helpers\";\nimport { AuthOptions } from \"../interfaces\";\n\nexport const CrudAuth =\n (options: AuthOptions) =>\n (target: Object): void => {\n R.setCrudAuthOptions(options, target);\n };\n","import { BaseRouteName } from \"../types\";\nimport { OVERRIDE_METHOD_METADATA } from \"../constants\";\n\nexport const Override =\n (name?: BaseRouteName) =>\n (target: any, key: any, descriptor: PropertyDescriptor) => {\n Reflect.defineMetadata(\n OVERRIDE_METHOD_METADATA,\n name || `${key}Base`,\n target[key]\n );\n return descriptor;\n };\n","import { createParamDecorator } from \"@nestjs/common\";\n\nimport { PARSED_CRUD_REQUEST_KEY } from \"../constants\";\nimport { R } from \"../helpers\";\n\nexport const ParsedRequest = createParamDecorator(\n (_, ctx): ParameterDecorator => {\n return R.getContextRequest(ctx)[PARSED_CRUD_REQUEST_KEY];\n }\n);\n","import { PARSED_BODY_METADATA } from \"../constants\";\n\nexport const ParsedBody =\n () =>\n (target: any, key: string, index: any): void => {\n Reflect.defineMetadata(PARSED_BODY_METADATA, { index }, target[key]);\n };\n","import { SetMetadata, Type } from \"@nestjs/common\";\n\nimport { ACTION_NAME_METADATA, FEATURE_NAME_METADATA } from \"../constants\";\n\nexport const Feature = (name: string) =>\n SetMetadata(FEATURE_NAME_METADATA, name);\nexport const Action = (name: string) => SetMetadata(ACTION_NAME_METADATA, name);\n\nexport const getFeature = (target: Type) =>\n Reflect.getMetadata(FEATURE_NAME_METADATA, target);\nexport const getAction = (target: Function) =>\n Reflect.getMetadata(ACTION_NAME_METADATA, target);\n","export * from \"./auth-options.interface\";\nexport * from \"./base-route.interface\";\nexport * from \"./create-many-dto.interface\";\nexport * from \"./create-query-params.interface\";\nexport * from \"./crud-controller.interface\";\nexport * from \"./crud-global-config.interface\";\nexport * from \"./crud-options.interface\";\nexport * from \"./crud-request.interface\";\nexport * from \"./dto-options.interface\";\nexport * from \"./get-many-default-response.interface\";\nexport * from \"./model-options.interface\";\nexport * from \"./operators-options.interface\";\nexport * from \"./params-options.interface\";\nexport * from \"./parsed-request.interface\";\nexport * from \"./query-options.interface\";\nexport * from \"./request-query-builder-options.interface\";\nexport * from \"./routes-options.interface\";\nexport * from \"./serialize-options.interface\";\n","import { SCondition } from \"../types\";\nimport { ObjectLiteral } from \"../types\";\nimport { ClassTransformOptions } from \"class-transformer\";\n\nexport interface AuthGlobalOptions {\n property?: string;\n /** Get options for the `classToPlain` function (response) */\n classTransformOptions?: (req: any) => ClassTransformOptions;\n /** Get `groups` value for the `classToPlain` function options (response) */\n groups?: (req: any) => string[];\n}\n\nexport interface AuthOptions {\n property?: string;\n /** Get options for the `classToPlain` function (response) */\n classTransformOptions?: (req: any) => ClassTransformOptions;\n /** Get `groups` value for the `classToPlain` function options (response) */\n groups?: (req: any) => string[];\n filter?: (req: any) => SCondition | void;\n or?: (req: any) => SCondition | void;\n persist?: (req: any) => ObjectLiteral;\n}\n","import { RequestMethod } from \"@nestjs/common\";\n\nimport { BaseRouteName } from \"../types\";\n\nexport interface BaseRoute {\n name: BaseRouteName;\n path: string;\n method: RequestMethod;\n enable: boolean;\n override: boolean;\n withParams: boolean;\n}\n","export interface CreateManyDto {\n bulk: T[];\n}\n","import {\n QueryExtra,\n QueryFields,\n QueryFilter,\n QueryFilterArr,\n QueryJoin,\n QueryJoinArr,\n QuerySort,\n QuerySortArr,\n SCondition,\n} from \"../types\";\n\nexport interface CreateQueryParams {\n fields?: QueryFields;\n search?: SCondition;\n filter?: QueryFilter | QueryFilterArr | Array;\n or?: QueryFilter | QueryFilterArr | Array;\n join?: QueryJoin | QueryJoinArr | Array;\n sort?: QuerySort | QuerySortArr | Array;\n limit?: number;\n offset?: number;\n page?: number;\n resetCache?: boolean;\n includeDeleted?: number;\n extra?: QueryExtra;\n}\n","import { CreateManyDto } from \"./create-many-dto.interface\";\nimport { CrudRequest } from \"./crud-request.interface\";\nimport { GetManyDefaultResponse } from \"./get-many-default-response.interface\";\n\nimport { CrudService } from \"../services\";\n\nexport interface CrudController {\n service: CrudService;\n getManyBase?(req: CrudRequest): Promise | T[]>;\n getOneBase?(req: CrudRequest): Promise;\n createOneBase?(req: CrudRequest, dto: T): Promise;\n createManyBase?(req: CrudRequest, dto: CreateManyDto): Promise;\n updateOneBase?(req: CrudRequest, dto: Partial): Promise;\n replaceOneBase?(req: CrudRequest, dto: T): Promise;\n deleteOneBase?(req: CrudRequest): Promise;\n recoverOneBase?(req: CrudRequest): Promise;\n}\n","import { RequestQueryBuilderOptions } from \"./request-query-builder-options.interface\";\nimport { AuthGlobalOptions } from \"./auth-options.interface\";\nimport { OperatorsOptions } from \"./operators-options.interface\";\nimport { ParamsOptions } from \"./params-options.interface\";\nimport { RoutesOptions } from \"./routes-options.interface\";\n\nexport interface CrudGlobalConfig {\n queryParser?: RequestQueryBuilderOptions;\n auth?: AuthGlobalOptions;\n routes?: RoutesOptions;\n params?: ParamsOptions;\n operators?: OperatorsOptions;\n query?: {\n limit?: number;\n maxLimit?: number;\n cache?: number | false;\n alwaysPaginate?: boolean;\n softDelete?: boolean;\n };\n serialize?: {\n getMany?: false;\n get?: false;\n create?: false;\n createMany?: false;\n update?: false;\n replace?: false;\n delete?: false;\n recover?: false;\n };\n}\n","import { ValidationPipeOptions } from \"@nestjs/common\";\n\nimport { AuthOptions } from \"./auth-options.interface\";\nimport { DtoOptions } from \"./dto-options.interface\";\nimport { RoutesFactoryService } from \"../services\";\nimport { ModelOptions } from \"./model-options.interface\";\nimport { OperatorsOptions } from \"./operators-options.interface\";\nimport { ParamsOptions } from \"./params-options.interface\";\nimport { QueryOptions } from \"./query-options.interface\";\nimport { RoutesOptions } from \"./routes-options.interface\";\nimport { SerializeOptions } from \"./serialize-options.interface\";\n\nexport interface CrudRequestOptions {\n query?: QueryOptions;\n routes?: RoutesOptions;\n params?: ParamsOptions;\n operators?: OperatorsOptions;\n}\n\nexport interface CrudOptions {\n model: ModelOptions;\n dto?: DtoOptions;\n serialize?: SerializeOptions;\n query?: QueryOptions;\n routes?: RoutesOptions;\n routesFactory?: typeof RoutesFactoryService;\n params?: ParamsOptions;\n validation?: ValidationPipeOptions | false;\n operators?: OperatorsOptions;\n}\n\nexport interface MergedCrudOptions extends CrudOptions {\n auth?: AuthOptions;\n}\n","import { ParsedRequestParams } from \"./parsed-request.interface\";\nimport { CrudRequestOptions } from \"./crud-options.interface\";\n\nexport interface CrudRequest {\n parsed: ParsedRequestParams;\n options: CrudRequestOptions;\n /** authenticated user's from request */\n auth?: {};\n}\n","export interface DtoOptions {\n create?: any;\n update?: any;\n replace?: any;\n}\n","export interface GetManyDefaultResponse {\n data: T[];\n count: number;\n total: number;\n page: number;\n pageCount: number;\n}\n","export interface ModelOptions {\n type: any;\n}\n","export interface OperatorsOptions {\n custom?: CustomOperators;\n}\n\nexport type CustomOperatorQuery = (field: string, param: string) => string;\n\nexport interface CustomOperators {\n [key: string]: {\n query: CustomOperatorQuery;\n params?: { [field: string]: any };\n isArray?: boolean;\n };\n}\n","import { ParamOptionType } from \"../types\";\n\nexport interface ParamsOptions {\n [key: string]: ParamOption;\n}\n\nexport interface ParamOption {\n field?: string;\n type?: ParamOptionType;\n primary?: boolean;\n disabled?: boolean;\n enum?: [];\n}\n","import { ClassTransformOptions } from \"class-transformer\";\nimport {\n QueryFields,\n QueryFilter,\n QueryJoin,\n QuerySort,\n SCondition,\n ObjectLiteral,\n} from \"../types\";\n\nexport interface ParsedRequestParams {\n fields: QueryFields;\n paramsFilter: (QueryFilter | undefined)[];\n authPersist: ObjectLiteral | undefined;\n classTransformOptions: ClassTransformOptions | undefined;\n search: SCondition | undefined;\n filter: QueryFilter[];\n or: QueryFilter[];\n join: QueryJoin[];\n sort: QuerySort[];\n limit: number | undefined;\n offset: number | undefined;\n page: number | undefined;\n cache: number | undefined;\n includeDeleted: number | undefined;\n /**\n * Extra options.\n *\n * Custom extra option come from Request and can be used anywhere you want for your business rules.\n * CrudRequest lib. do not evaluate this attribute.\n */\n extra: ObjectLiteral | undefined;\n}\n","import { QueryFields, QuerySort, QueryFilterOption } from \"../types\";\n\nexport interface QueryOptions {\n allow?: QueryFields;\n exclude?: QueryFields;\n persist?: QueryFields;\n filter?: QueryFilterOption;\n join?: JoinOptions;\n sort?: QuerySort[];\n limit?: number;\n maxLimit?: number;\n cache?: number | false;\n alwaysPaginate?: boolean;\n softDelete?: boolean;\n}\n\nexport interface JoinOptions {\n [key: string]: JoinOption;\n}\n\nexport interface JoinOption {\n alias?: string;\n allow?: QueryFields;\n eager?: boolean;\n exclude?: QueryFields;\n persist?: QueryFields;\n select?: boolean;\n required?: boolean;\n}\n","export interface ParamsNamesMap {\n fields?: string | string[];\n search?: string | string[];\n filter?: string | string[];\n or?: string | string[];\n join?: string | string[];\n sort?: string | string[];\n limit?: string | string[];\n offset?: string | string[];\n page?: string | string[];\n cache?: string | string[];\n includeDeleted?: string | string[];\n extra?: string | string[];\n}\nexport interface RequestQueryBuilderOptions {\n delim: string;\n delimStr: string;\n paramNamesMap?: ParamsNamesMap;\n}\n","import { BaseRouteName } from \"../types\";\n\nexport interface RoutesOptions {\n exclude?: BaseRouteName[];\n only?: BaseRouteName[];\n getManyBase?: GetManyRouteOptions;\n getOneBase?: GetOneRouteOptions;\n createOneBase?: CreateOneRouteOptions;\n createManyBase?: CreateManyRouteOptions;\n updateOneBase?: UpdateOneRouteOptions;\n replaceOneBase?: ReplaceOneRouteOptions;\n deleteOneBase?: DeleteOneRouteOptions;\n recoverOneBase?: RecoverOneRouteOptions;\n}\n\nexport interface BaseRouteOptions {\n interceptors?: any[];\n decorators?: (PropertyDecorator | MethodDecorator)[];\n}\n\nexport interface GetManyRouteOptions extends BaseRouteOptions {}\n\nexport interface GetOneRouteOptions extends BaseRouteOptions {}\n\nexport interface CreateOneRouteOptions extends BaseRouteOptions {\n returnShallow?: boolean;\n}\n\nexport interface CreateManyRouteOptions extends BaseRouteOptions {}\n\nexport interface ReplaceOneRouteOptions extends BaseRouteOptions {\n allowParamsOverride?: boolean;\n returnShallow?: boolean;\n}\n\nexport interface UpdateOneRouteOptions extends BaseRouteOptions {\n allowParamsOverride?: boolean;\n returnShallow?: boolean;\n}\n\nexport interface DeleteOneRouteOptions extends BaseRouteOptions {\n returnDeleted?: boolean;\n}\n\nexport interface RecoverOneRouteOptions extends BaseRouteOptions {\n returnRecovered?: boolean;\n}\n","import { Type } from \"@nestjs/common\";\n\nexport interface SerializeOptions {\n getMany?: Type | false;\n get?: Type | false;\n create?: Type | false;\n createMany?: Type | false;\n update?: Type | false;\n replace?: Type | false;\n delete?: Type | false;\n recover?: Type | false;\n}\n","module.exports = require(\"@nestjs/core\");","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { IsEmailUserAlreadyExistConstraint } from \"./user-email-already-exists.constraint\";\nimport { UserController } from \"./user.controller\";\nimport { User } from \"./user.entity\";\nimport { UserService } from \"./user.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([User])],\n controllers: [UserController],\n providers: [UserService, IsEmailUserAlreadyExistConstraint],\n exports: [UserService, IsEmailUserAlreadyExistConstraint],\n})\nexport class UserModule {}\n","module.exports = require(\"@nestjs/typeorm\");","/* eslint-disable @typescript-eslint/no-explicit-any, import/named */\nimport { Injectable } from \"@nestjs/common\";\nimport {\n registerDecorator,\n ValidationOptions,\n ValidatorConstraint,\n ValidatorConstraintInterface,\n} from \"class-validator\";\n\nimport { UserService } from \"./user.service\";\n\n@ValidatorConstraint({ name: \"isEmailUserAlreadyExist\", async: true })\n@Injectable()\nexport class IsEmailUserAlreadyExistConstraint\n implements ValidatorConstraintInterface\n{\n constructor(protected readonly userService: UserService) {}\n\n async validate(text: string) {\n return !(await this.userService.userExists({ email: text }));\n }\n}\n\nexport function IsEmailUserAlreadyExist(validationOptions?: ValidationOptions) {\n return function (object: any, propertyName: string) {\n registerDecorator({\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n constraints: [],\n validator: IsEmailUserAlreadyExistConstraint,\n });\n };\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { UserDto } from \"./user.dto\";\nimport { User } from \"./user.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class UserService extends TypeOrmCrudService {\n constructor(@InjectRepository(User) readonly repo) {\n super(repo);\n }\n\n async userExists(dto: Partial): Promise {\n const user: User = await this.repo.findOneBy(dto);\n return Boolean(user);\n }\n}\n","import * as bcrypt from \"bcryptjs\";\nimport { Exclude } from \"class-transformer\";\nimport {\n AfterLoad,\n BaseEntity,\n BeforeInsert,\n BeforeUpdate,\n Column,\n CreateDateColumn,\n DeleteDateColumn,\n Entity,\n OneToMany,\n PrimaryGeneratedColumn,\n UpdateDateColumn,\n} from \"typeorm\";\n\nimport { Address } from \"../address/address.entity\";\nimport { Contract } from \"../contract/contract.entity\";\nimport { Phone } from \"../phone/phone.entity\";\n\n@Entity()\nexport class User extends BaseEntity {\n @PrimaryGeneratedColumn(\"uuid\")\n id: string;\n\n @Column({ unique: true, length: 125 })\n email: string;\n\n @Column({ type: \"timestamp\", nullable: true })\n emailConfirmedAt: Date;\n\n @Column({ type: \"varchar\", nullable: true })\n @Exclude()\n emailToken: string;\n\n @Column({ type: \"varchar\", length: 80 })\n @Exclude({ toClassOnly: false, toPlainOnly: true })\n password: string;\n\n @CreateDateColumn({ type: \"timestamp\" })\n createdAt: Date;\n\n @UpdateDateColumn({ type: \"timestamp\" })\n updatedAt: Date;\n\n @OneToMany(() => Phone, (phone) => phone.user, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n phones: Phone[];\n\n @OneToMany(() => Contract, (contract) => contract.user, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n contracts: Contract[];\n\n @OneToMany(() => Address, (address) => address.user, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n addresses: Address[];\n\n @DeleteDateColumn()\n @Exclude()\n deletedAt: Date;\n\n @Exclude()\n private tempPassword?: string;\n\n @BeforeInsert()\n private async hashPassword(): Promise {\n this.password = await bcrypt.hash(this.password, 10);\n }\n\n @AfterLoad()\n private loadTempPassword(): void {\n this.tempPassword = this.password;\n }\n\n @BeforeUpdate()\n private async encryptPassword(): Promise {\n if (this.tempPassword !== null && this.tempPassword !== this.password) {\n try {\n await this.hashPassword();\n // After changed, temp password should be reassigned to new one, so if we try to save again,\n // it does not change the password wrongly\n this.tempPassword = this.password;\n } catch (error) {\n if (error instanceof Error) {\n throw new Error(\"Unable to encrypt password: \" + error.message);\n }\n }\n }\n }\n}\n","module.exports = require(\"bcryptjs\");","import {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\nimport { UUID } from \"typeorm/driver/mongodb/bson.typings\";\n\nimport { User } from \"../user/user.entity\";\n\nimport { AddressType } from \"./address-type.entity\";\n\n@Entity()\nexport class Address extends BaseEntity {\n @PrimaryGeneratedColumn(\"uuid\")\n id: number;\n\n @Column({ type: \"varchar\", nullable: false })\n street: string;\n\n @Column({ type: \"int\", nullable: true })\n number: number;\n\n @Column({ type: \"varchar\", nullable: false })\n city: string;\n\n @Column({ type: \"varchar\", nullable: false, length: 2 })\n state: string;\n\n @Column({ name: \"user_id\", type: \"varchar\", nullable: false })\n userId: UUID;\n\n @Column({ name: \"is_active\", type: \"boolean\", default: true })\n isActive: boolean;\n\n @Column({ name: \"type_id\", type: \"int\", nullable: false })\n typeId: number;\n\n @ManyToOne(() => User, (user) => user.id)\n @JoinColumn({\n name: \"user_id\",\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"address_user\",\n })\n user: User;\n\n @ManyToOne(() => AddressType, (addressType) => addressType.id, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n @JoinColumn({\n name: \"type_id\",\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"address_addresstype\",\n })\n type: AddressType;\n}\n","module.exports = require(\"typeorm/driver/mongodb/bson.typings\");","import {\n BaseEntity,\n Column,\n Entity,\n OneToMany,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { Address } from \"./address.entity\";\n\n@Entity()\nexport class AddressType extends BaseEntity {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ type: \"varchar\", nullable: false })\n type: string;\n\n @Column({ name: \"is_active\", type: \"boolean\", default: true })\n isActive: boolean;\n\n @OneToMany(() => Address, (address) => address.type)\n address: Address;\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport { Exclude } from \"class-transformer\";\nimport {\n IsDateString,\n IsNotEmpty,\n IsOptional,\n IsString,\n MaxLength,\n} from \"class-validator\";\nimport {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { User } from \"../user/user.entity\";\n\nconst { CREATE, UPDATE } = CrudValidationGroups;\n\n@Entity()\nexport class Contract extends BaseEntity {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ name: \"userId\" })\n @Exclude({ toPlainOnly: true })\n userId: string;\n\n @MaxLength(60)\n @Column({ name: \"contractNumber\", type: \"varchar\", length: 60 })\n contractNumber: string;\n\n @IsNotEmpty()\n @IsDateString()\n @Column({ name: \"startedAt\", type: \"date\" })\n startedAt: Date;\n\n @Column({ name: \"note\", type: \"varchar\", length: \"11\", default: \"\" })\n @IsOptional({ groups: [UPDATE] })\n @IsString()\n note: string;\n\n @ManyToOne((type) => User, (user) => user.id)\n @JoinColumn({\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"contact_user\",\n })\n user: User;\n}\n","import { Exclude } from \"class-transformer\";\nimport {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { User } from \"../user/user.entity\";\n\n@Entity()\nexport class Phone extends BaseEntity {\n @Exclude()\n @PrimaryGeneratedColumn(\"uuid\")\n id: string;\n\n @Exclude({ toPlainOnly: true })\n @Column({ type: \"varchar\", nullable: false })\n userId: string;\n\n @Column({ type: \"varchar\", nullable: false })\n phoneNumber: string;\n\n @ManyToOne((type) => User, (user) => user.id)\n @JoinColumn({\n referencedColumnName: \"id\",\n foreignKeyConstraintName: \"UserId\",\n })\n user: User;\n}\n","import {\n Crud,\n CrudController,\n CrudRequest,\n CrudRequestInterceptor,\n ParsedRequest,\n} from \"@2amtech/crudx\";\nimport { Controller, Get, UseInterceptors } from \"@nestjs/common\";\n\nimport { UserDto } from \"./user.dto\";\nimport { User } from \"./user.entity\";\nimport { UserService } from \"./user.service\";\n\n@Crud({\n model: {\n type: User,\n },\n dto: {\n create: UserDto,\n update: UserDto,\n },\n params: {\n id: {\n type: \"uuid\",\n field: \"id\",\n primary: true,\n },\n },\n})\n@Controller(\"users\")\nexport class UserController implements CrudController {\n constructor(public service: UserService) {}\n\n get base(): CrudController {\n return this;\n }\n\n @UseInterceptors(CrudRequestInterceptor)\n @Get(\"/emails\")\n async emails(@ParsedRequest() req: CrudRequest) {\n return this.service.find({ select: [\"email\"] });\n }\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport {\n IsEmail,\n IsNotEmpty,\n IsString,\n MaxLength,\n MinLength,\n ValidateIf,\n} from \"class-validator\";\nimport { isEmpty } from \"lodash\";\n\nimport { PhoneDto } from \"../phone/phone.dto\";\n\nimport { IsEmailUserAlreadyExist } from \"./user-email-already-exists.constraint\";\n\nconst { CREATE } = CrudValidationGroups;\n\nexport class UserDto {\n @ValidateIf((o) => !isEmpty(o.email))\n @IsEmail()\n @IsEmailUserAlreadyExist({\n message: \"Email already exists\",\n groups: [CREATE],\n })\n email: string;\n\n @ValidateIf((o) => !isEmpty(o.email))\n @IsString()\n @IsNotEmpty()\n @MaxLength(32, { message: \"Password is too long\" })\n @MinLength(8, {\n message: \"Password must be at least 8 characters long\",\n })\n password: string;\n\n phone: PhoneDto | [];\n}\n","import { Module } from \"@nestjs/common\";\nimport { ConfigModule, ConfigService } from \"@nestjs/config\";\nimport { TypeOrmModule, TypeOrmModuleOptions } from \"@nestjs/typeorm\";\n\nimport { databaseConfig } from \"../config\";\n\nimport { AddressModule } from \"./address/address.module\";\nimport { AppController } from \"./app.controller\";\nimport { AppService } from \"./app.service\";\nimport { AuthModule } from \"./auth/auth.module\";\nimport { ClaimModule } from \"./claims/claim.module\";\nimport { ContractModule } from \"./contract/contract.module\";\nimport { PhoneModule } from \"./phone/phone.module\";\nimport { UserModule } from \"./user/user.module\";\n\n@Module({\n imports: [\n ConfigModule.forRoot({\n isGlobal: true,\n load: [databaseConfig],\n }),\n TypeOrmModule.forRootAsync({\n useFactory: (config: ConfigService) =>\n {\n type: config.get(\"database.type\"),\n host: config.get(\"database.host\"),\n port: config.get(\"database.port\"),\n username: config.get(\"database.username\"),\n password: config.get(\"database.password\"),\n database: config.get(\"database.database\"),\n entities: config.get(\"database.entities\"),\n synchronize: config.get(\"database.synchronize\"),\n },\n inject: [ConfigService],\n }),\n UserModule,\n PhoneModule,\n AuthModule,\n ContractModule,\n ClaimModule,\n AddressModule,\n ],\n controllers: [AppController],\n providers: [AppService],\n})\nexport class AppModule {}\n","module.exports = require(\"@nestjs/config\");","export * from \"./database.config\";\n","import { registerAs } from \"@nestjs/config\";\n\nimport { AddressType } from \"../app/address/address-type.entity\";\nimport { Address } from \"../app/address/address.entity\";\nimport { Claim } from \"../app/claims/claim.entity\";\nimport { Contract } from \"../app/contract/contract.entity\";\nimport { Phone } from \"../app/phone/phone.entity\";\nimport { User } from \"../app/user/user.entity\";\n\nexport const databaseConfig = registerAs(\"database\", () => ({\n type: process.env.DB_TYPE,\n host: process.env.DB_HOST,\n port: process.env.DB_PORT,\n username: process.env.DB_USERNAME,\n password: process.env.DB_PASSWORD,\n database: process.env.DB_DATABASE,\n entities: [User, Phone, Contract, Claim, Address, AddressType],\n synchronize: true,\n autoLoadEntities: true,\n encoding: process.env.DB_CHARSET,\n}));\n","import {\n BaseEntity,\n Column,\n Entity,\n JoinColumn,\n ManyToOne,\n PrimaryGeneratedColumn,\n} from \"typeorm\";\n\nimport { Contract } from \"../contract/contract.entity\";\n\n@Entity()\nexport class Claim extends BaseEntity {\n @PrimaryGeneratedColumn()\n id: number;\n\n @Column({ name: \"amount\", type: \"double\" })\n amount: number;\n\n @Column({ name: \"date\", type: \"date\" })\n date: Date;\n\n @Column({ name: \"contractId\", type: \"int\" })\n contractId: number;\n\n @ManyToOne((type) => Contract, (contract) => contract.id, {\n cascade: true,\n onDelete: \"CASCADE\",\n })\n @JoinColumn({\n referencedColumnName: \"id\",\n name: \"contractId\",\n })\n contract: Contract;\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { AddressType } from \"./address-type.entity\";\nimport { AddressTypeService } from \"./address-type.service\";\nimport { AddressController } from \"./address.controller\";\nimport { Address } from \"./address.entity\";\nimport { AddressService } from \"./address.service\";\n\n@Module({\n imports: [\n TypeOrmModule.forFeature([Address]),\n TypeOrmModule.forFeature([AddressType]),\n ],\n controllers: [AddressController],\n providers: [AddressService, AddressTypeService],\n exports: [AddressService, AddressTypeService],\n})\nexport class AddressModule {}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { AddressType } from \"./address-type.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class AddressTypeService extends TypeOrmCrudService {\n constructor(@InjectRepository(AddressType) readonly repo) {\n super(repo);\n }\n}\n","import { Crud, CrudController } from \"@2amtech/crudx\";\nimport { Controller } from \"@nestjs/common\";\n\nimport { Address } from \"./address.entity\";\nimport { AddressService } from \"./address.service\";\n\n@Crud({\n model: {\n type: Address,\n },\n params: {\n userId: {\n type: \"uuid\",\n field: \"userId\",\n },\n },\n query: {\n exclude: [\"userId\", \"typeId\"],\n join: {\n type: {\n allow: [\"id\", \"type\"],\n required: true,\n eager: true,\n },\n },\n filter: {\n isActive: {\n $eq: true,\n },\n },\n },\n})\n@Controller(\"/users/:userId/addresses\")\nexport class AddressController implements CrudController
{\n constructor(public service: AddressService) {}\n\n get base(): CrudController
{\n return this;\n }\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Address } from \"./address.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class AddressService extends TypeOrmCrudService
{\n constructor(@InjectRepository(Address) readonly repo) {\n super(repo);\n }\n}\n","import { Controller, Get } from \"@nestjs/common\";\n\nimport { AppService } from \"./app.service\";\n\n@Controller()\nexport class AppController {\n constructor(private readonly appService: AppService) {}\n\n @Get()\n getData() {\n return this.appService.getData();\n }\n}\n","import { Injectable } from \"@nestjs/common\";\n\n@Injectable()\nexport class AppService {\n getData(): { message: string } {\n return { message: \"Hello API\" };\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { JwtModule } from \"@nestjs/jwt\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { User } from \"../user/user.entity\";\nimport { UserModule } from \"../user/user.module\";\nimport { UserService } from \"../user/user.service\";\n\nimport { AuthController } from \"./auth.controller\";\nimport { AuthService } from \"./auth.service\";\nimport { jwtConstants } from \"./constants\";\nimport { MeController } from \"./me.controller\";\n\n@Module({\n imports: [\n UserModule,\n TypeOrmModule.forFeature([User]),\n JwtModule.register({\n global: true,\n secret: jwtConstants.secret,\n signOptions: { expiresIn: \"60s\" },\n }),\n ],\n controllers: [AuthController, MeController],\n providers: [AuthService, UserService],\n exports: [AuthService],\n})\nexport class AuthModule {}\n","module.exports = require(\"@nestjs/jwt\");","import {\n Body,\n Controller,\n HttpCode,\n HttpStatus,\n Param,\n Post,\n} from \"@nestjs/common\";\n\nimport { AuthService } from \"./auth.service\";\n\n@Controller(\"auth\")\nexport class AuthController {\n constructor(private authService: AuthService) {}\n\n @HttpCode(HttpStatus.OK)\n @Post(\"sign-in\")\n async signIn(@Body() body: Record) {\n return this.authService.signIn(body.email, body.pass);\n }\n}\n","import { Injectable, UnauthorizedException } from \"@nestjs/common\";\nimport { JwtService } from \"@nestjs/jwt\";\nimport * as bcrypt from \"bcryptjs\";\n\nimport { UserService } from \"../user/user.service\";\n\n@Injectable()\nexport class AuthService {\n constructor(private service: UserService, private jwtService: JwtService) {}\n\n async signIn(email: string, pass: string): Promise<{ access_token: string }> {\n const user = await this.service.findOne({ where: { email: email } });\n\n if (!bcrypt.compareSync(pass, user?.password)) {\n throw new UnauthorizedException();\n }\n\n const payload = { sub: user.id, username: user.email };\n\n return {\n access_token: await this.jwtService.signAsync(payload),\n };\n }\n}\n","export const jwtConstants = {\n secret: \"some well defined secret key\",\n};\n","import { Crud, CrudAuth, CrudController, Feature } from \"@2amtech/crudx\";\nimport { Controller, UseGuards, UseInterceptors } from \"@nestjs/common\";\n\nimport { User } from \"../user/user.entity\";\nimport { UserService } from \"../user/user.service\";\n\nimport { AuthGuard } from \"./auth.guard\";\n\n@Crud({\n model: {\n type: User,\n },\n routes: {\n only: [\"getOneBase\"],\n },\n params: {\n id: {\n primary: true,\n disabled: true,\n },\n },\n})\n@CrudAuth({\n property: \"user\",\n filter: (user: any) => ({\n id: user.sub,\n }),\n})\n@Controller(\"me\")\n@Feature(\"GetMyInfo\")\n@UseGuards(AuthGuard)\nexport class MeController implements CrudController {\n constructor(public service: UserService) {}\n\n get base(): CrudController {\n return this;\n }\n}\n","import { getAction, getFeature } from \"@2amtech/crudx\";\nimport {\n CanActivate,\n ExecutionContext,\n Injectable,\n UnauthorizedException,\n} from \"@nestjs/common\";\nimport { Reflector } from \"@nestjs/core\";\nimport { JwtService } from \"@nestjs/jwt\";\n\nimport { jwtConstants } from \"./constants\";\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n constructor(private jwtService: JwtService, private reflector: Reflector) {}\n\n async canActivate(context: ExecutionContext): Promise {\n const request = context.switchToHttp().getRequest();\n const token = this.extractTokenFromHeader(request);\n if (!token) {\n throw new UnauthorizedException();\n }\n try {\n const payload = await this.jwtService.verifyAsync(token, {\n secret: jwtConstants.secret,\n });\n\n request[\"user\"] = payload;\n } catch {\n throw new UnauthorizedException();\n }\n\n // up here, it's a simple auth guard with jwt\n\n //\n\n const handler = context.getHandler();\n const controller = context.getClass();\n\n const feature = getFeature(controller);\n const action = getAction(handler);\n\n console.log(`${feature}-${action}`); // e.g \"GetMyInfo-Read-One\"\n // write custom acl rule\n\n return true;\n }\n\n private extractTokenFromHeader(request: Request): string | undefined {\n const [type, token] = request.headers[\"authorization\"]?.split(\" \") ?? [];\n return type === \"Bearer\" ? token : undefined;\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { ClaimController } from \"./claim.controller\";\nimport { Claim } from \"./claim.entity\";\nimport { ClaimService } from \"./claim.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([Claim])],\n providers: [ClaimService],\n controllers: [ClaimController],\n exports: [ClaimService],\n})\nexport class ClaimModule {}\n","import { Crud, CrudController } from \"@2amtech/crudx\";\nimport { Controller } from \"@nestjs/common\";\n\nimport { Claim } from \"./claim.entity\";\nimport { ClaimService } from \"./claim.service\";\n\n@Crud({\n model: {\n type: Claim,\n },\n params: {\n contractId: {\n type: \"number\",\n field: \"contractId\",\n },\n },\n query: {\n allow: [\"id\", \"amount\", \"date\"],\n persist: [\"id\"],\n limit: 5,\n maxLimit: 5,\n alwaysPaginate: true,\n sort: [\n {\n field: \"id\",\n order: \"DESC\",\n },\n ],\n cache: 2000,\n join: {\n contract: {\n eager: true,\n },\n },\n },\n})\n@Controller(\"/contracts/:contractId/claims\")\nexport class ClaimController implements CrudController {\n constructor(public service: ClaimService) {}\n\n get base(): CrudController {\n return this;\n }\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Claim } from \"./claim.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class ClaimService extends TypeOrmCrudService {\n constructor(@InjectRepository(Claim) readonly repo) {\n super(repo);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { ContractController } from \"./contract.controller\";\nimport { Contract } from \"./contract.entity\";\nimport { ContractService } from \"./contract.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([Contract])],\n providers: [ContractService],\n controllers: [ContractController],\n exports: [ContractService],\n})\nexport class ContractModule {}\n","import { Crud, CrudController, SerializeOptions } from \"@2amtech/crudx\";\nimport { Controller, Type } from \"@nestjs/common\";\n\nimport { ContractCreateDto } from \"./contract.create.dto\";\nimport { ContractCreateResponseDto } from \"./contract.create.response.dto\";\nimport { Contract } from \"./contract.entity\";\nimport { ContractService } from \"./contract.service\";\n\n@Crud({\n model: {\n type: Contract,\n },\n dto: {\n create: ContractCreateDto,\n },\n routes: {\n exclude: [\"deleteOneBase\"],\n },\n params: {\n userId: {\n field: \"userId\",\n type: \"uuid\",\n },\n },\n serialize: {\n create: ContractCreateResponseDto,\n },\n})\n@Controller(\"/users/:userId/contracts\")\nexport class ContractController implements CrudController {\n constructor(public service: ContractService) {}\n\n get base(): CrudController {\n return this;\n }\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport {\n IsDateString,\n IsNotEmpty,\n IsOptional,\n IsString,\n MaxLength,\n} from \"class-validator\";\nimport { Column } from \"typeorm\";\n\nconst { CREATE, UPDATE } = CrudValidationGroups;\n\nexport class ContractCreateDto {\n @MaxLength(60)\n @Column({ name: \"contractNumber\", type: \"varchar\", length: 60 })\n contractNumber: string;\n\n @IsNotEmpty()\n @IsDateString()\n @Column({ name: \"startedAt\", type: \"date\" })\n startedAt: Date;\n\n @Column({ name: \"note\", type: \"varchar\", length: \"11\", default: \"\" })\n @IsOptional({ groups: [UPDATE] })\n @IsString()\n note: string;\n}\n","import { Exclude } from \"class-transformer\";\n\nexport class ContractCreateResponseDto {\n readonly id: number;\n\n @Exclude()\n readonly userId: string;\n\n readonly contractNumber: string;\n readonly startedAt: string;\n readonly note: string;\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Contract } from \"./contract.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class ContractService extends TypeOrmCrudService {\n constructor(@InjectRepository(Contract) readonly repo) {\n super(repo);\n }\n}\n","import { Module } from \"@nestjs/common\";\nimport { TypeOrmModule } from \"@nestjs/typeorm\";\n\nimport { PhoneController } from \"./phone.controller\";\nimport { Phone } from \"./phone.entity\";\nimport { PhoneService } from \"./phone.service\";\n\n@Module({\n imports: [TypeOrmModule.forFeature([Phone])],\n exports: [PhoneService],\n providers: [PhoneService],\n controllers: [PhoneController],\n})\nexport class PhoneModule {}\n","import {\n CreateManyDto,\n Crud,\n CrudController,\n CrudRequest,\n GetManyDefaultResponse,\n Override,\n ParsedBody,\n ParsedRequest,\n} from \"@2amtech/crudx\";\nimport { Controller } from \"@nestjs/common\";\n\nimport { PhoneDto } from \"./phone.dto\";\nimport { Phone } from \"./phone.entity\";\nimport { PhoneService } from \"./phone.service\";\n\n@Crud({\n model: {\n type: Phone,\n },\n dto: {\n create: PhoneDto,\n update: PhoneDto,\n },\n params: {\n id: {\n field: \"id\",\n type: \"uuid\",\n primary: true,\n },\n userId: {\n field: \"userId\",\n type: \"uuid\",\n },\n },\n query: {\n limit: 25,\n cache: 2000,\n alwaysPaginate: true,\n },\n})\n@Controller(\"/users/:userId/phones\")\nexport class PhoneController implements CrudController {\n constructor(public service: PhoneService) {}\n\n get base(): CrudController {\n return this;\n }\n\n @Override()\n async createOne(\n @ParsedRequest() req: CrudRequest,\n @ParsedBody() dto\n ): Promise {\n const response = await Promise.resolve(this.base.createOneBase(req, dto));\n\n response[\"customProp\"] = \"custom added property\";\n\n return response;\n }\n\n @Override()\n async createMany(\n @ParsedRequest() req: CrudRequest,\n @ParsedBody() dto: CreateManyDto\n ): Promise {\n const response = await Promise.resolve(this.base.createManyBase(req, dto));\n response.forEach((res) => {\n res[\"customProp\"] = \"custom added property\";\n });\n\n return response;\n }\n\n @Override()\n async getOne(@ParsedRequest() req: CrudRequest): Promise {\n const response = await Promise.resolve(this.base.getOneBase(req));\n\n response[\"customProp\"] = \"custom added property\";\n\n return response;\n }\n\n @Override()\n async getMany(\n @ParsedRequest() req: CrudRequest\n ): Promise | Phone[]> {\n const response = >(\n await this.base.getManyBase(req)\n );\n\n response.data.forEach((res) => {\n res[\"customProp\"] = \"custom added property\";\n });\n\n return response;\n }\n}\n","import { CrudValidationGroups } from \"@2amtech/crudx\";\nimport { Exclude, Expose } from \"class-transformer\";\nimport {\n IsNotEmpty,\n IsString,\n ValidateIf,\n isEmpty,\n isNotEmpty,\n isString,\n isUUID,\n} from \"class-validator\";\n\nconst { CREATE } = CrudValidationGroups;\n\nexport class PhoneDto {\n @IsNotEmpty()\n @IsString()\n @Expose()\n phoneNumber: string;\n}\n","import { TypeOrmCrudService } from \"@2amtech/crudx\";\nimport { Catch, Injectable } from \"@nestjs/common\";\nimport { InjectRepository } from \"@nestjs/typeorm\";\nimport { ValidationError } from \"class-validator\";\nimport { EntityNotFoundError, QueryFailedError } from \"typeorm\";\n\nimport { Phone } from \"./phone.entity\";\n\n@Injectable()\n@Catch(QueryFailedError, ValidationError, EntityNotFoundError)\nexport class PhoneService extends TypeOrmCrudService {\n constructor(@InjectRepository(Phone) readonly repo) {\n super(repo);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * This is not a production server yet!\n * This is only a minimal backend to get started.\n */\nimport {\n CrudConfigService,\n QueryBuilderService,\n RequestQueryBuilderOptions,\n} from \"@2amtech/crudx\";\nimport { Logger } from \"@nestjs/common\";\nimport { NestFactory } from \"@nestjs/core\";\nimport { useContainer } from \"class-validator\";\n\nimport { UserModule } from \"./app/user/user.module\";\n\n/*\n * Default configuration for CRUD, can be overridden in each module.\n * Must be loaded before importing AppModule.\n */\nCrudConfigService.load({\n query: {\n limit: 25,\n cache: 2000,\n alwaysPaginate: true,\n },\n routes: {\n updateOneBase: {\n allowParamsOverride: true,\n },\n deleteOneBase: {\n returnDeleted: true,\n },\n },\n});\n\nQueryBuilderService.setOptions({\n paramNamesMap: {\n search: \"s\",\n join: [\"join[]\", \"join\", \"include[]\", \"include\"],\n },\n});\n\nimport { AppModule } from \"./app/app.module\";\n\nasync function bootstrap() {\n const app = await NestFactory.create(AppModule);\n const globalPrefix = \"v1\";\n app.setGlobalPrefix(globalPrefix);\n app.enableCors();\n useContainer(app.select(UserModule), { fallbackOnErrors: true });\n const port = process.env.PORT || 3000;\n await app.listen(port);\n Logger.log(\n `🚀 Application is running on: http://localhost:${port}/${globalPrefix}`\n );\n}\n\nbootstrap();\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..1b267a8e2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,55 @@ +services: + 2am-nestkit: + image: node:20 + user: "root" + working_dir: /home/node/app + + environment: + - NODE_ENV=development + volumes: + - .:/home/node/app + networks: + - nestkit + depends_on: + - app-mysql + command: > + bash -c "cp .env.docker.example .env.testing && npm install && npm i -g @nestjs/cli && tail -f /dev/null" + tty: true + restart: none + ports: + - '3000:3000' + app-mysql: + image: 'mysql/mysql-server:8.0' + restart: always + container_name: app-mysql + environment: + MYSQL_DATABASE: 'nestkit' + MYSQL_USER: '2am' + MYSQL_PASSWORD: '2am-nestkit' + MYSQL_ROOT_PASSWORD: '2am-nestkit' + MYSQL_ALLOW_EMPTY_PASSWORD: 1 + command: | + mysqld --default-authentication-plugin=mysql_native_password + ports: + - '3307:3306' + volumes: + - 'mysql:/var/lib64/mysql' + expose: + - '3307' + networks: + - nestkit + healthcheck: + test: + - CMD + - mysqladmin + - ping + - '-p${MYSQL_ROOT_PASSWORD}' + retries: 3 + timeout: 5s +volumes: + mysql: + driver: local + +networks: + nestkit: + driver: bridge \ No newline at end of file diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 000000000..3e2c3e47c --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,5 @@ +import { getJestProjects } from "@nx/jest"; + +export default { + projects: getJestProjects(), +}; diff --git a/jest.preset.js b/jest.preset.js new file mode 100644 index 000000000..0640263d2 --- /dev/null +++ b/jest.preset.js @@ -0,0 +1,3 @@ +const nxPreset = require("@nx/jest/preset").default; + +module.exports = { ...nxPreset }; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 000000000..45c812050 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,5 @@ +{ + "typeAcquisition": { + "include": ["jest"] + } +} diff --git a/nest-kit.code-workspace b/nest-kit.code-workspace new file mode 100644 index 000000000..362d7c25b --- /dev/null +++ b/nest-kit.code-workspace @@ -0,0 +1,7 @@ +{ + "folders": [ + { + "path": "." + } + ] +} \ No newline at end of file diff --git a/nx.json b/nx.json new file mode 100644 index 000000000..8e87408b4 --- /dev/null +++ b/nx.json @@ -0,0 +1,44 @@ +{ + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "tasksRunnerOptions": { + "default": { + "runner": "nx/tasks-runners/default", + "options": { + "cacheableOperations": ["build", "lint", "test", "e2e"] + } + } + }, + "targetDefaults": { + "build": { + "dependsOn": ["^build"], + "inputs": ["production", "^production"] + }, + "lint": { + "inputs": [ + "default", + "{workspaceRoot}/.eslintrc.json", + "{workspaceRoot}/.eslintignore" + ] + }, + "test": { + "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"] + } + }, + "namedInputs": { + "default": ["{projectRoot}/**/*", "sharedGlobals"], + "production": [ + "default", + "!{projectRoot}/.eslintrc.json", + "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", + "!{projectRoot}/tsconfig.spec.json", + "!{projectRoot}/jest.config.[jt]s", + "!{projectRoot}/src/test-setup.[jt]s", + "!{projectRoot}/test-setup.[jt]s" + ], + "sharedGlobals": [] + }, + "workspaceLayout": { + "appsDir": "packages", + "libsDir": "packages" + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..de70bcac7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,17537 @@ +{ + "name": "@2amtech/nest-kit", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@2amtech/nest-kit", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@nestjs/common": "^10.1.3", + "@nestjs/config": "^3.0.0", + "@nestjs/core": "^10.0.2", + "@nestjs/platform-express": "^10.0.2", + "@nestjs/typeorm": "^10.0.0", + "@zmotivat0r/o0": "^1.0.2", + "axios": "^1.0.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.0", + "deepmerge": "^4.3.1", + "mysql": "^2.18.1", + "pluralize": "^8.0.0", + "reflect-metadata": "^0.1.13", + "request": "^2.79.0", + "rxjs": "^7.8.0", + "typeorm": "^0.3.17" + }, + "devDependencies": { + "@2amtech/crudx": "./packages/crudx", + "@faker-js/faker": "^8.4.1", + "@nestjs/jwt": "^10.2.0", + "@nestjs/schematics": "^10.0.1", + "@nestjs/swagger": "^7.1.6", + "@nestjs/testing": "^10.0.2", + "@nx/eslint-plugin": "16.6.0", + "@nx/jest": "16.6.0", + "@nx/js": "16.6.0", + "@nx/linter": "16.6.0", + "@nx/nest": "^16.6.0", + "@nx/node": "16.6.0", + "@nx/webpack": "16.6.0", + "@nx/workspace": "16.6.0", + "@types/jest": "^29.5.11", + "@types/lodash": "^4.17.4", + "@types/node": "18.7.1", + "@types/pluralize": "^0.0.30", + "@types/qs": "^6.9.7", + "@types/supertest": "^6.0.2", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^5.60.1", + "@typescript-eslint/parser": "^5.60.1", + "eslint": "~8.15.0", + "eslint-config-prettier": "8.1.0", + "eslint-plugin-import": "^2.28.0", + "jest": "^29.4.1", + "jest-environment-node": "^29.4.1", + "nx": "16.6.0", + "prettier": "2.8.8", + "supertest": "^6.3.4", + "ts-jest": "^29.1.0", + "ts-node": "^10.9.1", + "tslib": "^2.6.2", + "typescript": "~5.1.3", + "verdaccio": "^5.0.4" + } + }, + "node_modules/@2amtech/crudx": { + "resolved": "packages/crudx", + "link": true + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", + "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.0.tgz", + "integrity": "sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.0.tgz", + "integrity": "sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "16.1.0", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz", + "integrity": "sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz", + "integrity": "sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz", + "integrity": "sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "dev": true, + "license": "MIT", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.7.tgz", + "integrity": "sha512-omXqPF7Onq4Bb7wHxXjM3jSMSJvUUbvDvmmds7KI5n9Cq6Ln5I05I1W2nRlRof1rGdiUxJrxwe285WF96XlBXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.5.tgz", + "integrity": "sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", + "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz", + "integrity": "sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz", + "integrity": "sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", + "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz", + "integrity": "sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", + "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", + "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", + "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", + "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", + "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", + "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", + "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", + "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz", + "integrity": "sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", + "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz", + "integrity": "sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz", + "integrity": "sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz", + "integrity": "sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz", + "integrity": "sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@faker-js/faker": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz", + "integrity": "sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/fakerjs" + } + ], + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0", + "npm": ">=6.14.13" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", + "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@nestjs/common": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.1.3.tgz", + "integrity": "sha512-xSyXBwgcmiFwQqek1Urw/AL3pRPq9bp/tpgfTxmnJg3gP6XNUbx1fDr0de50irXgZYzFKfVFo9ptC3b2du5YKA==", + "license": "MIT", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.6.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "license": "0BSD" + }, + "node_modules/@nestjs/config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.0.0.tgz", + "integrity": "sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw==", + "license": "MIT", + "dependencies": { + "dotenv": "16.1.4", + "dotenv-expand": "10.0.0", + "lodash": "4.17.21", + "uuid": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "reflect-metadata": "^0.1.13" + } + }, + "node_modules/@nestjs/core": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.1.3.tgz", + "integrity": "sha512-VzK54TuacC3Vmq3b5xTyMVTlDNJeKbjpKfV9fNqm4TbIBm8ZPo3FC0osJAbAK4XwbVvv2Flq1yA3CutasupVjw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.2.0", + "tslib": "2.6.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0", + "@nestjs/websockets": "^10.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "license": "0BSD" + }, + "node_modules/@nestjs/jwt": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz", + "integrity": "sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "9.0.5", + "jsonwebtoken": "9.0.2" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/@nestjs/jwt/node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/@nestjs/jwt/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nestjs/jwt/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nestjs/jwt/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@nestjs/mapped-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.2.tgz", + "integrity": "sha512-V0izw6tWs6fTp9+KiiPUbGHWALy563Frn8X6Bm87ANLRuE46iuBMD5acKBDP5lKL/75QFvrzSJT7HkCbB0jTpg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "class-transformer": "^0.4.0 || ^0.5.0", + "class-validator": "^0.13.0 || ^0.14.0", + "reflect-metadata": "^0.1.12" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/platform-express": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.1.3.tgz", + "integrity": "sha512-RSf7ooCrxiWJlWl3CLfpaYmAf3U0tRsN7pJakujWdvzVJU2EzVZTLcy1MtnSg/HBm9/Rvg98VI5QI6oOhOpt+A==", + "license": "MIT", + "dependencies": { + "body-parser": "1.20.2", + "cors": "2.8.5", + "express": "4.18.2", + "multer": "1.4.4-lts.1", + "tslib": "2.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/core": "^10.0.0" + } + }, + "node_modules/@nestjs/platform-express/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "license": "0BSD" + }, + "node_modules/@nestjs/schematics": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.1.tgz", + "integrity": "sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "16.1.0", + "@angular-devkit/schematics": "16.1.0", + "comment-json": "4.2.3", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/swagger": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.1.6.tgz", + "integrity": "sha512-YK5MSIuI2s76tg5W+fZSEVAmnlRe3ZVbb7/AYKi1Cs7exuzNjMgWIsnYxY2VCXhWaiT/ykeTFS9wcBdI54LeFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nestjs/mapped-types": "2.0.2", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "path-to-regexp": "3.2.0", + "swagger-ui-dist": "5.1.0" + }, + "peerDependencies": { + "@fastify/static": "^6.0.0", + "@nestjs/common": "^9.0.0 || ^10.0.0", + "@nestjs/core": "^9.0.0 || ^10.0.0", + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12" + }, + "peerDependenciesMeta": { + "@fastify/static": { + "optional": true + }, + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/testing": { + "version": "10.3.8", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.3.8.tgz", + "integrity": "sha512-hpX9das2TdFTKQ4/2ojhjI6YgXtCfXRKui3A4Qaj54VVzc5+mtK502Jj18Vzji98o9MVS6skmYu+S/UvW3U6Fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.6.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/core": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@nestjs/typeorm": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-10.0.0.tgz", + "integrity": "sha512-WQU4HCDTz4UavsFzvGUKDHqi0MO5K47yFoPXdmh+Z/hCNO7SHCMmV9jLiLukM8n5nKUqJ3jDqiljkWBcZPdCtA==", + "license": "MIT", + "dependencies": { + "uuid": "9.0.0" + }, + "peerDependencies": { + "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", + "@nestjs/core": "^8.0.0 || ^9.0.0 || ^10.0.0", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.2.0", + "typeorm": "^0.3.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nrwl/devkit": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.6.0.tgz", + "integrity": "sha512-xZEN6wfA1uJwv+FVRQFOHsCcpvGvIYGx2zutbzungDodWkfzlJ3tzIGqYjIpPCBVT83erM6Gscnka2W46AuKfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/devkit": "16.6.0" + } + }, + "node_modules/@nrwl/eslint-plugin-nx": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-16.6.0.tgz", + "integrity": "sha512-kNT8Q6buTX9kIYgiZZRFcr2bxSgIQR3tpbBlzXhKFeQE31w53fVWbdX3oPbn+VPgza84beVCEUbyOHexA4X82Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/eslint-plugin": "16.6.0" + } + }, + "node_modules/@nrwl/jest": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-16.6.0.tgz", + "integrity": "sha512-WN1kmH3tDGFS1IeMG27wwvERXPYLDXtJHRwXzBd8kbb2JMEAO9C501N06/leS7V0jzmtpwfs2iqmIuoOuw6jxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/jest": "16.6.0" + } + }, + "node_modules/@nrwl/js": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-16.6.0.tgz", + "integrity": "sha512-fMqMuqF/rwi1diirkNQ0ZgRnPwMoutE92xnLUZcqbyD/P4kTsrxleOAGvxpzpMpdvUU0Cw+cpVwHf6nw7o8JCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/js": "16.6.0" + } + }, + "node_modules/@nrwl/linter": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/linter/-/linter-16.6.0.tgz", + "integrity": "sha512-E/6E8EVrOECqwevVYBUH/YF2+K2pE0GcNs6233BnGpflyxhxNYaH18vM0y0q8BGbeZEKkqEiiMTryg50+GiBzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/linter": "16.6.0" + } + }, + "node_modules/@nrwl/nest": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/nest/-/nest-16.6.0.tgz", + "integrity": "sha512-bLeo1wbKWKn7qNM1wuFL+1VGYKORTlJc0eH9QmQ0A4G2n5r9Pz+Ssjqcs3TnypptjT82WLl8y/+622nVH+jqEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/nest": "16.6.0" + } + }, + "node_modules/@nrwl/node": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/node/-/node-16.6.0.tgz", + "integrity": "sha512-4wJ6xHxGqsvzY8klq5gwW5BJmvK80CiI5/o37ocF9+8UbD5eYfxaWZQM4091Wwf6tX8M4YluAzLn4DPkHgZLnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/node": "16.6.0" + } + }, + "node_modules/@nrwl/tao": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-16.6.0.tgz", + "integrity": "sha512-NQkDhmzlR1wMuYzzpl4XrKTYgyIzELdJ+dVrNKf4+p4z5WwKGucgRBj60xMQ3kdV25IX95/fmMDB8qVp/pNQ0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "nx": "16.6.0", + "tslib": "^2.3.0" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nrwl/webpack": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/webpack/-/webpack-16.6.0.tgz", + "integrity": "sha512-ZzmQS5Xz0mkCV/8Q87iy0jQE2Z36PjkEM0K/tRCPHi3vgOhvzJWn6Ecs1jAfxCHGQwbc9v0yauQWetiUOsCeTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/webpack": "16.6.0" + } + }, + "node_modules/@nrwl/workspace": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-16.6.0.tgz", + "integrity": "sha512-Bt2o1tU1ZYQKNtnBbyg62T1ELEdlNwxb5C6MPENnlDB/kkmiLXvPFTzMV2lgDZvMLP6eLazq98P2TQ8jCbY4lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nx/workspace": "16.6.0" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nx/devkit": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-16.6.0.tgz", + "integrity": "sha512-rhJ0y+MSPHDuoZPxsOYdj/n5ks+gK74TIMgTb8eZgPT/uR86a4oxf62wUQXgECedR5HzLE2HunbnoLhhJXmpJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nrwl/devkit": "16.6.0", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 15 <= 17" + } + }, + "node_modules/@nx/eslint-plugin": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-16.6.0.tgz", + "integrity": "sha512-fTqGTjAiFGZsYrs5OgwtL7bJ5qaNS6mW2/d/jZiN1oiSLBaJUyceKZWs0y5dvOMlJOo0/UG4hbBoMJGBBBWx+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nrwl/eslint-plugin-nx": "16.6.0", + "@nx/devkit": "16.6.0", + "@nx/js": "16.6.0", + "@typescript-eslint/type-utils": "^5.60.1", + "@typescript-eslint/utils": "^5.60.1", + "chalk": "^4.1.0", + "confusing-browser-globals": "^1.0.9", + "jsonc-eslint-parser": "^2.1.0", + "semver": "7.5.3", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.60.1", + "eslint-config-prettier": "^8.1.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/@nx/jest": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-16.6.0.tgz", + "integrity": "sha512-vELYDr4f3irgokfh6/lgY0o6PsSqG6Kn2ytt3eGcy1tHaHcx8TsU7ubZbEtSE6J2/T6W/l6+X3kyWSWEsXeXXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@nrwl/jest": "16.6.0", + "@nx/devkit": "16.6.0", + "@nx/js": "16.6.0", + "@phenomnomnominal/tsquery": "~5.0.1", + "chalk": "^4.1.0", + "dotenv": "~10.0.0", + "identity-obj-proxy": "3.0.0", + "jest-config": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-util": "^29.4.1", + "resolve.exports": "1.1.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/jest/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/js": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-16.6.0.tgz", + "integrity": "sha512-9ZTw5cMR1XWfn8SXe4xp2ETAat+SCNcOBqEf/Ih5b3MjodlOVLRQNiYlGSpuCr1keok25DJZxKIbRgoJCLG6JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-runtime": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nrwl/js": "16.6.0", + "@nx/devkit": "16.6.0", + "@nx/workspace": "16.6.0", + "@phenomnomnominal/tsquery": "~5.0.1", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^2.8.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "detect-port": "^1.5.1", + "fast-glob": "3.2.7", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "minimatch": "3.0.5", + "semver": "7.5.3", + "source-map-support": "0.5.19", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, + "node_modules/@nx/linter": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-16.6.0.tgz", + "integrity": "sha512-U0GOjvAm0BnA1AhqVshDrpA0lRDSggPYz4o3I9cCUd6ET41dwXrubZstWZ9tbPMXFlht1+Yk4CfM+XQEWW8JWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nrwl/linter": "16.6.0", + "@nx/devkit": "16.6.0", + "@nx/js": "16.6.0", + "@phenomnomnominal/tsquery": "~5.0.1", + "tmp": "~0.2.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@nx/nest": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/nest/-/nest-16.6.0.tgz", + "integrity": "sha512-deEJluORpsLpKjTaIq6/SPWvsd/3DCox5i0ltjvWuy7G2VKoynUXFSBODa/9eFcjQ3wy2cpwBpPpXqusKoaIDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nestjs/schematics": "^9.1.0", + "@nrwl/nest": "16.6.0", + "@nx/devkit": "16.6.0", + "@nx/js": "16.6.0", + "@nx/linter": "16.6.0", + "@nx/node": "16.6.0", + "@phenomnomnominal/tsquery": "~5.0.1", + "enquirer": "~2.3.6", + "semver": "7.5.3", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/nest/node_modules/@angular-devkit/core": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.1.tgz", + "integrity": "sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nx/nest/node_modules/@angular-devkit/schematics": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.0.1.tgz", + "integrity": "sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "16.0.1", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nx/nest/node_modules/@nestjs/schematics": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.2.0.tgz", + "integrity": "sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "16.0.1", + "@angular-devkit/schematics": "16.0.1", + "jsonc-parser": "3.2.0", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.3.5" + } + }, + "node_modules/@nx/node": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/node/-/node-16.6.0.tgz", + "integrity": "sha512-/3uVr4Hgr8cKPxs6wINmcqbV9pmhdfL0FCWf7mMNGn0RoeOFUvcIzu22OZdsimZwLZeXjGB+WL8cZO0etDolJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nrwl/node": "16.6.0", + "@nx/devkit": "16.6.0", + "@nx/jest": "16.6.0", + "@nx/js": "16.6.0", + "@nx/linter": "16.6.0", + "@nx/workspace": "16.6.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.6.0.tgz", + "integrity": "sha512-qQIpSVN8Ij4oOJ5v+U+YztWJ3YQkeCIevr4RdCE9rDilfq9RmBD94L4VDm7NRzYBuQL8uQxqWzGqb7ZW4mfHpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.6.0.tgz", + "integrity": "sha512-EYOHe11lfVfEfZqSAIa1c39mx2Obr4mqd36dBZx+0UKhjrcmWiOdsIVYMQSb3n0TqB33BprjI4p9ZcFSDuoNbA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/webpack": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-16.6.0.tgz", + "integrity": "sha512-gingwolFJ2q2f6WvgE+OlIYlVulewSOReiw0hhvvr6U9vxT0F3ctOqKrD3SVdawOf6yiXFHngBrTjvAb7O55+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.22.9", + "@nrwl/webpack": "16.6.0", + "@nx/devkit": "16.6.0", + "@nx/js": "16.6.0", + "autoprefixer": "^10.4.9", + "babel-loader": "^9.1.2", + "browserslist": "^4.21.4", + "chalk": "^4.1.0", + "chokidar": "^3.5.1", + "copy-webpack-plugin": "^10.2.4", + "css-loader": "^6.4.0", + "css-minimizer-webpack-plugin": "^5.0.0", + "dotenv": "~10.0.0", + "fork-ts-checker-webpack-plugin": "7.2.13", + "ignore": "^5.0.4", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "mini-css-extract-plugin": "~2.4.7", + "parse5": "4.0.0", + "postcss": "^8.4.14", + "postcss-import": "~14.1.0", + "postcss-loader": "^6.1.1", + "rxjs": "^7.8.0", + "sass": "^1.42.1", + "sass-loader": "^12.2.0", + "source-map-loader": "^3.0.0", + "style-loader": "^3.3.0", + "stylus": "^0.59.0", + "stylus-loader": "^7.1.0", + "terser-webpack-plugin": "^5.3.3", + "ts-loader": "^9.3.1", + "tsconfig-paths-webpack-plugin": "4.0.0", + "tslib": "^2.3.0", + "webpack": "^5.80.0", + "webpack-dev-server": "^4.9.3", + "webpack-node-externals": "^3.0.0", + "webpack-subresource-integrity": "^5.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/workspace": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-16.6.0.tgz", + "integrity": "sha512-rh+qTQ/Ahszezx+aLjZfpej314w2mrwz2eJAn6LQmlsSnOLHsVIoVRDAGyqT2OF+29K2r5BQ0jRiB3zyYrb5MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nrwl/workspace": "16.6.0", + "@nx/devkit": "16.6.0", + "chalk": "^4.1.0", + "ignore": "^5.0.4", + "nx": "16.6.0", + "rxjs": "^7.8.0", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@phenomnomnominal/tsquery": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", + "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esquery": "^1.4.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", + "license": "MIT" + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "8.44.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", + "integrity": "sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.35", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz", + "integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz", + "integrity": "sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "18.7.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz", + "integrity": "sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/pluralize": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/pluralize/-/pluralize-0.0.30.tgz", + "integrity": "sha512-kVww6xZrW/db5BR9OqiT71J9huRdQ+z/r+LbDuT7/EK50mCmj5FoaIARnVv0rvjUS/YpDox0cDU9lpQT011VBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "8.1.7", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.7.tgz", + "integrity": "sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*" + } + }, + "node_modules/@types/supertest": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.2.tgz", + "integrity": "sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-NclP0IbzHj/4tJZKFqKh8E7kZdgss+MCUYV9G+TLltFfDA4lFgE4PKPpDIyS2FlcdANIfSx273emkupvChigbw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@verdaccio/commons-api": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@verdaccio/commons-api/-/commons-api-10.2.0.tgz", + "integrity": "sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-errors": "2.0.0", + "http-status-codes": "2.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/config": { + "version": "6.0.0-6-next.74", + "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.74.tgz", + "integrity": "sha512-qpP3Hc6OCdUjJw17SQaEBPfTY/YFAGpWuiUizX5D9P46Xf/pEL99oViqA77xJPI0VZIlVue4kxcAO/zJ2oxNwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.74", + "@verdaccio/utils": "6.0.0-6-next.42", + "debug": "4.3.4", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "minimatch": "3.1.2", + "yup": "0.32.11" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/config/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@verdaccio/core": { + "version": "6.0.0-6-next.74", + "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-6.0.0-6-next.74.tgz", + "integrity": "sha512-aXryZX2GyvWLvEn2pnxarTY6nOedrh9W7uGsXaW7uYOD7dq8lOQ4NH8Hhl/nw+Sswp3mE5JNl2P3nIoGyhOYiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.12.0", + "core-js": "3.30.2", + "http-errors": "2.0.0", + "http-status-codes": "2.2.0", + "process-warning": "1.0.0", + "semver": "7.5.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/core/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@verdaccio/core/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@verdaccio/core/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@verdaccio/file-locking": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-10.3.1.tgz", + "integrity": "sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g==", + "dev": true, + "license": "MIT", + "dependencies": { + "lockfile": "1.0.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/local-storage": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/@verdaccio/local-storage/-/local-storage-10.3.3.tgz", + "integrity": "sha512-/n0FH+1hxVg80YhYBfJuW7F2AuvLY2fra8/DTCilWDll9Y5yZDxwntZfcKHJLerCA4atrbJtvaqpWkoV3Q9x8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/commons-api": "10.2.0", + "@verdaccio/file-locking": "10.3.1", + "@verdaccio/streams": "10.2.1", + "async": "3.2.4", + "debug": "4.3.4", + "lodash": "4.17.21", + "lowdb": "1.0.0", + "mkdirp": "1.0.4" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/local-storage/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@verdaccio/logger-7": { + "version": "6.0.0-6-next.19", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-7/-/logger-7-6.0.0-6-next.19.tgz", + "integrity": "sha512-DQwmPPRWvrT4TMur4g4+c5dNr7WnoT6sXYpw0Yh6NgZpH2D6FMcaxpH1me0rklpfnnXZmV3/zs2MvLJaWmRl4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/logger-commons": "6.0.0-6-next.42", + "pino": "7.11.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/logger-commons": { + "version": "6.0.0-6-next.42", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-6.0.0-6-next.42.tgz", + "integrity": "sha512-ydp12CVXdYhkXPxJevGW38Qf9HJdOF/KWcDmCWo7pi9atfiMkUWoOuEC1nr+7Dx+S5dA7kDfTqFLdadAuyO93A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.74", + "@verdaccio/logger-prettify": "6.0.0-6-next.10", + "colorette": "2.0.20", + "debug": "4.3.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/logger-prettify": { + "version": "6.0.0-6-next.10", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-6.0.0-6-next.10.tgz", + "integrity": "sha512-G9woGojHXoRg3W4fE2ZlNy2c25f5faqLWHxVdnDFbgbH6dieG+GzlyNwiOcrRC4LEkh7dWcgwuNMx1NZFojqhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "2.0.20", + "dayjs": "1.11.7", + "lodash": "4.17.21", + "pino-abstract-transport": "1.0.0", + "sonic-boom": "3.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/middleware": { + "version": "6.0.0-6-next.53", + "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-6.0.0-6-next.53.tgz", + "integrity": "sha512-shzf8+ww161TGOQA+Ee+JsWLgji07kkxLJr+YQSj3d9glbq4OE64sw51cV3BwpBbIALWziLTmIbYLaZgaRkZYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/config": "6.0.0-6-next.74", + "@verdaccio/core": "6.0.0-6-next.74", + "@verdaccio/url": "11.0.0-6-next.40", + "@verdaccio/utils": "6.0.0-6-next.42", + "debug": "4.3.4", + "express": "4.18.2", + "express-rate-limit": "5.5.1", + "lodash": "4.17.21", + "lru-cache": "7.18.3", + "mime": "2.6.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/middleware/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@verdaccio/middleware/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@verdaccio/search": { + "version": "6.0.0-6-next.2", + "resolved": "https://registry.npmjs.org/@verdaccio/search/-/search-6.0.0-6-next.2.tgz", + "integrity": "sha512-5Hkcxoj7crPn6Zth59I54af6KO5Ho7bzvCHCDbEwcmjewKcQJB4Kst4cEtpN/xA1ao0hqOSruEObl7/mqCq8hg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/signature": { + "version": "6.0.0-6-next.2", + "resolved": "https://registry.npmjs.org/@verdaccio/signature/-/signature-6.0.0-6-next.2.tgz", + "integrity": "sha512-aFvMbxxHzJCpPmqSgVuQYvYN2RP11CoSEcTXikkyb1zF4Uf3cOy53zUZ1Y7iOKCRYTgWrmet9KP7+24e44GHxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4.3.4", + "jsonwebtoken": "9.0.0", + "lodash": "4.17.21" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/signature/node_modules/jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/@verdaccio/streams": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@verdaccio/streams/-/streams-10.2.1.tgz", + "integrity": "sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/tarball": { + "version": "11.0.0-6-next.43", + "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-11.0.0-6-next.43.tgz", + "integrity": "sha512-/cojl1+EWLhfu5FJh/dLBtwwC+vI6dR0xldJvE7BHJ5P79DnBUbzAqtwoWwsOR2FkGkWoReXZjPR4QVrUivhLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.74", + "@verdaccio/url": "11.0.0-6-next.40", + "@verdaccio/utils": "6.0.0-6-next.42", + "debug": "4.3.4", + "lodash": "4.17.21" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/ui-theme": { + "version": "6.0.0-6-next.74", + "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.74.tgz", + "integrity": "sha512-IoAl4bbLF9SFJsQvyEbJeubRs0O2WusOOgry6vsfp1w48+oarcnGkdOU/WZuIdlFhmPdhOJpYL0cFDUBRDvdOA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@verdaccio/url": { + "version": "11.0.0-6-next.40", + "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-11.0.0-6-next.40.tgz", + "integrity": "sha512-TGP+96QEgvQMIx+0WsFmxpeV/YJlX+os85zrBipioZDUm/JmNK6i9wCfYjA5Uncn+NGRsI6bUJhi05Ymoh10cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.74", + "debug": "4.3.4", + "lodash": "4.17.21", + "validator": "13.9.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/utils": { + "version": "6.0.0-6-next.42", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-6.0.0-6-next.42.tgz", + "integrity": "sha512-ckf1N0rlnWd07aQQx+K9/fvO1LtSVGAAls22Isdfb+dfBjUYalIha/EDIEr3mq7QTqm0zA6mLhP7m4Bv35FH6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.74", + "lodash": "4.17.21", + "minimatch": "3.1.2", + "semver": "7.5.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@verdaccio/utils/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@verdaccio/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@verdaccio/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zmotivat0r/o0": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@zmotivat0r/o0/-/o0-1.0.2.tgz", + "integrity": "sha512-wQ/sHqJEtYb+QtgxtWlBpGASFZ2avpoRWbvpginEuy7howZHTZTy3zYMRMaBKok4bZwIGU5bjmzE59+m1IWqKQ==", + "license": "MIT" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "devOptional": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apache-md5": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.8.tgz", + "integrity": "sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", + "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-const-enum": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", + "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.3.3", + "@babel/traverse": "^7.16.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-typescript-metadata": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", + "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/bonjour-service/node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "license": "MIT" + }, + "node_modules/class-validator": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz", + "integrity": "sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==", + "license": "MIT", + "dependencies": { + "@types/validator": "^13.7.10", + "libphonenumber-js": "^1.10.14", + "validator": "^13.7.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "license": "MIT" + }, + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipanion": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-3.2.1.tgz", + "integrity": "sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA==", + "dev": true, + "license": "MIT", + "workspaces": [ + "website" + ], + "dependencies": { + "typanion": "^3.8.0" + }, + "peerDependencies": { + "typanion": "*" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comment-json": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz", + "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true, + "license": "ISC" + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", + "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", + "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.9" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz", + "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^6.0.1", + "lilconfig": "^2.1.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz", + "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^4.0.0", + "postcss-calc": "^9.0.0", + "postcss-colormin": "^6.0.0", + "postcss-convert-values": "^6.0.0", + "postcss-discard-comments": "^6.0.0", + "postcss-discard-duplicates": "^6.0.0", + "postcss-discard-empty": "^6.0.0", + "postcss-discard-overridden": "^6.0.0", + "postcss-merge-longhand": "^6.0.0", + "postcss-merge-rules": "^6.0.1", + "postcss-minify-font-values": "^6.0.0", + "postcss-minify-gradients": "^6.0.0", + "postcss-minify-params": "^6.0.0", + "postcss-minify-selectors": "^6.0.0", + "postcss-normalize-charset": "^6.0.0", + "postcss-normalize-display-values": "^6.0.0", + "postcss-normalize-positions": "^6.0.0", + "postcss-normalize-repeat-style": "^6.0.0", + "postcss-normalize-string": "^6.0.0", + "postcss-normalize-timing-functions": "^6.0.0", + "postcss-normalize-unicode": "^6.0.0", + "postcss-normalize-url": "^6.0.0", + "postcss-normalize-whitespace": "^6.0.0", + "postcss-ordered-values": "^6.0.0", + "postcss-reduce-initial": "^6.0.0", + "postcss-reduce-transforms": "^6.0.0", + "postcss-svgo": "^6.0.0", + "postcss-unique-selectors": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz", + "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dotenv": { + "version": "16.1.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", + "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.775", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.775.tgz", + "integrity": "sha512-JpOfl1aNAiZ88wFzjPczTLwYIoPIsij8S9/XQH9lqMpiJOf23kxea68B8wje4f68t4rOIq4Bh+vP4I65njiJBw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", + "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/eslintrc": "^1.2.3", + "@humanwhocodes/config-array": "^0.9.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.2", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.6.0", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", + "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.8.tgz", + "integrity": "sha512-tEe+Pok22qIGaK3KoMP+N96GVDS66B/zreoVVmiavLvRUEmGRtvb4B8wO9jwnb8d2lvHtrkhZ7UD73dWBVnf/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", + "integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.12.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "resolve": "^1.22.3", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-rate-limit": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz", + "integrity": "sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "license": "MIT" + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-redact": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", + "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", + "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "vue-template-compiler": "*", + "webpack": "^5.11.0" + }, + "peerDependenciesMeta": { + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", + "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "license": "MIT" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true, + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/http-status-codes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", + "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==", + "dev": true, + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "dev": true, + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", + "dev": true, + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/jest-circus/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-circus/node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-eslint-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.3.0.tgz", + "integrity": "sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.5.0", + "eslint-visitor-keys": "^3.0.0", + "espree": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.10.39", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.39.tgz", + "integrity": "sha512-iPMM/NbSNIrdwbr94rAOos6krB7snhfzEptmk/DJUtTPs+P9gOhZ1YXVPcRgjpp3jJByclfm/Igvz45spfJK7g==", + "license": "MIT" + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "license": "ISC", + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lockfile": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", + "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", + "dev": true, + "license": "ISC", + "dependencies": { + "signal-exit": "^3.0.2" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0", + "optional": true, + "peer": true + }, + "node_modules/lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lowdb/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz", + "integrity": "sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "license": "MIT" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", + "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", + "dev": true, + "license": "MIT", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "1.4.4-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz", + "integrity": "sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "license": "ISC", + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/mysql": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", + "license": "MIT", + "dependencies": { + "bignumber.js": "9.0.0", + "readable-stream": "2.3.7", + "safe-buffer": "5.1.2", + "sqlstring": "2.3.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mysql/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/mysql/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/mysql/node_modules/sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mysql2": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.6.0.tgz", + "integrity": "sha512-EWUGAhv6SphezurlfI2Fpt0uJEWLmirrtQR7SkbTHFC+4/mJBrPiSzHESHKAWKG7ALVD6xaG/NBjjd1DGJGQQQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mysql2/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "license": "ISC", + "optional": true, + "peer": true, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/nanoclone": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "license": "MIT", + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nx": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/nx/-/nx-16.6.0.tgz", + "integrity": "sha512-4UaS9nRakpZs45VOossA7hzSQY2dsr035EoPRGOc81yoMFW6Sqn1Rgq4hiLbHZOY8MnWNsLMkgolNMz1jC8YUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nrwl/tao": "16.6.0", + "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^11.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "js-yaml": "4.1.0", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "3.0.5", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "v8-compile-cache": "2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "16.6.0", + "@nx/nx-darwin-x64": "16.6.0", + "@nx/nx-freebsd-x64": "16.6.0", + "@nx/nx-linux-arm-gnueabihf": "16.6.0", + "@nx/nx-linux-arm64-gnu": "16.6.0", + "@nx/nx-linux-arm64-musl": "16.6.0", + "@nx/nx-linux-x64-gnu": "16.6.0", + "@nx/nx-linux-x64-musl": "16.6.0", + "@nx/nx-win32-arm64-msvc": "16.6.0", + "@nx/nx-win32-x64-msvc": "16.6.0" + }, + "peerDependencies": { + "@swc-node/register": "^1.4.2", + "@swc/core": "^1.2.173" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/nx/node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/nx/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/nx/node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/nx/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/nx/node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz", + "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.21.2", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", + "dev": true, + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pino": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", + "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.0.0", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.15.1" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", + "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/pino/node_modules/pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" + } + }, + "node_modules/pino/node_modules/sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz", + "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz", + "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz", + "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz", + "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz", + "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz", + "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz", + "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz", + "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz", + "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz", + "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz", + "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz", + "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz", + "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz", + "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz", + "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz", + "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz", + "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz", + "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz", + "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz", + "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz", + "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz", + "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz", + "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz", + "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz", + "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.0.2" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/postcss-svgo/node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/postcss-svgo/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/postcss-svgo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/postcss-svgo/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/postcss-svgo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/postcss-svgo/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/postcss-svgo/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/postcss-svgo/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/postcss-svgo/node_modules/svgo": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz", + "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true, + "license": "MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "license": "Apache-2.0" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.64.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz", + "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "license": "ISC" + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true, + "license": "MIT" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==", + "optional": true, + "peer": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/sonic-boom": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", + "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", + "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.3" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/style-loader": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz", + "integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", + "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz", + "integrity": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-glob": "^3.2.12", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus-loader/node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/superagent": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.4", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.1.2", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.11.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/supertest": { + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz", + "integrity": "sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "methods": "^1.1.2", + "superagent": "^8.1.2" + }, + "engines": { + "node": ">=6.4.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swagger-ui-dist": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.1.0.tgz", + "integrity": "sha512-c1KmAjuVODxw+vwkNLALQZrgdlBAuBbr2xSPfYrJgseEi7gFKcTvShysPmyuDI4kcUa1+5rFpjWvXdusKY74mg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-stream": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", + "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "real-require": "^0.1.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-loader": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" + }, + "node_modules/typanion": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/typanion/-/typanion-3.13.0.tgz", + "integrity": "sha512-AkZMjMIW8MGeQwBxu1bixzu/2Zk7rH6ILrI/9zBoW0sAiVaWwHjXSnmPBomfY2t7tSG6m5bIE+OYYyyuGnFVHA==", + "dev": true, + "license": "MIT", + "workspaces": [ + "website" + ] + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true, + "license": "MIT" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typeorm": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.17.tgz", + "integrity": "sha512-UDjUEwIQalO9tWw9O2A4GU+sT3oyoUXheHJy4ft+RFdnRdQctdQ34L9SqE2p7LdwzafHx1maxT+bqXON+Qnmig==", + "license": "MIT", + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "chalk": "^4.1.2", + "cli-highlight": "^2.1.11", + "date-fns": "^2.29.3", + "debug": "^4.3.4", + "dotenv": "^16.0.3", + "glob": "^8.1.0", + "mkdirp": "^2.1.3", + "reflect-metadata": "^0.1.13", + "sha.js": "^2.4.11", + "tslib": "^2.5.0", + "uuid": "^9.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">= 12.9.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0", + "@sap/hana-client": "^2.12.25", + "better-sqlite3": "^7.1.2 || ^8.0.0", + "hdb-pool": "^0.1.6", + "ioredis": "^5.0.4", + "mongodb": "^5.2.0", + "mssql": "^9.1.1", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^5.1.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "hdb-pool": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typeorm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/typeorm/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/typeorm/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typeorm/node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/validator": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verdaccio": { + "version": "5.26.1", + "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-5.26.1.tgz", + "integrity": "sha512-rpP1O6w3UomhEXQHr0EGMxpTPUsBgkR8VoK2eNS3aFC8xFgaeoeHF/GABd4bSyKMa22JyHjqeEFH46U9plMX+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/config": "6.0.0-6-next.74", + "@verdaccio/core": "6.0.0-6-next.74", + "@verdaccio/local-storage": "10.3.3", + "@verdaccio/logger-7": "6.0.0-6-next.19", + "@verdaccio/middleware": "6.0.0-6-next.53", + "@verdaccio/search": "6.0.0-6-next.2", + "@verdaccio/signature": "6.0.0-6-next.2", + "@verdaccio/streams": "10.2.1", + "@verdaccio/tarball": "11.0.0-6-next.43", + "@verdaccio/ui-theme": "6.0.0-6-next.74", + "@verdaccio/url": "11.0.0-6-next.40", + "@verdaccio/utils": "6.0.0-6-next.42", + "async": "3.2.4", + "clipanion": "3.2.1", + "compression": "1.7.4", + "cookies": "0.8.0", + "cors": "2.8.5", + "debug": "^4.3.4", + "envinfo": "7.10.0", + "express": "4.18.2", + "express-rate-limit": "5.5.1", + "fast-safe-stringify": "2.1.1", + "handlebars": "4.7.7", + "js-yaml": "4.1.0", + "JSONStream": "1.3.5", + "jsonwebtoken": "9.0.1", + "kleur": "4.1.5", + "lodash": "4.17.21", + "lru-cache": "7.18.3", + "mime": "3.0.0", + "mkdirp": "1.0.4", + "mv": "2.1.1", + "pkginfo": "0.4.1", + "request": "2.88.2", + "semver": "7.5.4", + "validator": "13.9.0", + "verdaccio-audit": "11.0.0-6-next.37", + "verdaccio-htpasswd": "11.0.0-6-next.44" + }, + "bin": { + "verdaccio": "bin/verdaccio" + }, + "engines": { + "node": ">=12.18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio-audit": { + "version": "11.0.0-6-next.37", + "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-11.0.0-6-next.37.tgz", + "integrity": "sha512-hzQq90HmKwy327PueS58V720MRDycSCmo7DNgOy+h8dvITG6XAQ6bSsiTgQScjmwImdp3tkl3bqu9kXh33bPxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/config": "6.0.0-6-next.74", + "@verdaccio/core": "6.0.0-6-next.74", + "express": "4.18.2", + "https-proxy-agent": "5.0.1", + "node-fetch": "cjs" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio-htpasswd": { + "version": "11.0.0-6-next.44", + "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-11.0.0-6-next.44.tgz", + "integrity": "sha512-ZKCpZ5KhcHXjAlYkCI6CM6O8KO/Pr/x5C89zqjRR7OMaPyOAu0psIJjvhTycn1efZub4pT6Tlj7rCRlmvIbR0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.74", + "@verdaccio/file-locking": "11.0.0-6-next.7", + "apache-md5": "1.1.8", + "bcryptjs": "2.4.3", + "core-js": "3.30.2", + "debug": "4.3.4", + "http-errors": "2.0.0", + "unix-crypt-td-js": "1.1.4" + }, + "engines": { + "node": ">=14", + "npm": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio-htpasswd/node_modules/@verdaccio/file-locking": { + "version": "11.0.0-6-next.7", + "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-11.0.0-6-next.7.tgz", + "integrity": "sha512-S0GNoe2oBOgB7fKJN2vZqnl5qDEvdnTfKAfa47InXweJROeul6kjlE2/NlbNbK3zZID01VR1HFrFehMQO0Jyfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lockfile": "1.0.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/verdaccio/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/verdaccio/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/verdaccio/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/verdaccio/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/verdaccio/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/verdaccio/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "license": "MIT", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "0.32.11", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "packages/crudx": { + "version": "1.0.0", + "dev": true, + "dependencies": { + "@nestjs/common": "^10.1.3", + "@nestjs/typeorm": "^10.0.0", + "@types/qs": "^6.9.7", + "@zmotivat0r/o0": "^1.0.2", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.0", + "deepmerge": "^4.3.1", + "lodash": "^4.17.21", + "rxjs": "^7.8.0", + "tslib": "^2.3.0", + "typeorm": "^0.3.17" + }, + "devDependencies": { + "@types/uuid": "^9.0.8", + "supertest": "^6.3.4" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..1d717bcfa --- /dev/null +++ b/package.json @@ -0,0 +1,71 @@ +{ + "name": "@2amtech/nest-kit", + "author": "2am.tech", + "version": "1.0.0", + "license": "MIT", + "scripts": { + "build-npm": "nx run-many -t build-npm", + "publish-all": "nx run-many -t publish", + "test": "nx run-many -t test" + }, + "private": true, + "dependencies": { + "@nestjs/common": "^10.1.3", + "@nestjs/config": "^3.0.0", + "@nestjs/core": "^10.0.2", + "@nestjs/platform-express": "^10.0.2", + "@nestjs/typeorm": "^10.0.0", + "@zmotivat0r/o0": "^1.0.2", + "axios": "^1.0.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.0", + "deepmerge": "^4.3.1", + "mysql": "^2.18.1", + "pluralize": "^8.0.0", + "reflect-metadata": "^0.1.13", + "request": "^2.79.0", + "rxjs": "^7.8.0", + "typeorm": "^0.3.17" + }, + "devDependencies": { + "@faker-js/faker": "^8.4.1", + "@nestjs/jwt": "^10.2.0", + "@nestjs/schematics": "^10.0.1", + "@nestjs/swagger": "^7.1.6", + "@nestjs/testing": "^10.0.2", + "@nx/eslint-plugin": "16.6.0", + "@nx/jest": "16.6.0", + "@nx/js": "16.6.0", + "@nx/linter": "16.6.0", + "@nx/nest": "^16.6.0", + "@nx/node": "16.6.0", + "@nx/webpack": "16.6.0", + "@nx/workspace": "16.6.0", + "@types/jest": "^29.5.11", + "@types/lodash": "^4.17.4", + "@types/node": "18.7.1", + "@types/pluralize": "^0.0.30", + "@types/qs": "^6.9.7", + "@types/supertest": "^6.0.2", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^5.60.1", + "@typescript-eslint/parser": "^5.60.1", + "eslint": "~8.15.0", + "eslint-config-prettier": "8.1.0", + "eslint-plugin-import": "^2.28.0", + "jest": "^29.4.1", + "jest-environment-node": "^29.4.1", + "nx": "16.6.0", + "prettier": "2.8.8", + "supertest": "^6.3.4", + "ts-jest": "^29.1.0", + "ts-node": "^10.9.1", + "tslib": "^2.6.2", + "typescript": "~5.1.3", + "verdaccio": "^5.0.4", + "@2amtech/crudx": "./packages/crudx" + }, + "nx": { + "includedScripts": [] + } +} diff --git a/packages/.gitkeep b/packages/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/crudx-swagger/.eslintrc.json b/packages/crudx-swagger/.eslintrc.json new file mode 100644 index 000000000..adbe7ae2d --- /dev/null +++ b/packages/crudx-swagger/.eslintrc.json @@ -0,0 +1,25 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": "error" + } + } + ] +} diff --git a/packages/crudx-swagger/.npmignore b/packages/crudx-swagger/.npmignore new file mode 100644 index 000000000..e0dd5b9c3 --- /dev/null +++ b/packages/crudx-swagger/.npmignore @@ -0,0 +1,4 @@ +node_modules +demo +docs +tests \ No newline at end of file diff --git a/packages/crudx-swagger/AUTHOR b/packages/crudx-swagger/AUTHOR new file mode 100644 index 000000000..d3334e3e8 --- /dev/null +++ b/packages/crudx-swagger/AUTHOR @@ -0,0 +1,4 @@ + +## Authors: + +2am. Technologies diff --git a/packages/crudx-swagger/CHANGELOG.md b/packages/crudx-swagger/CHANGELOG.md new file mode 100644 index 000000000..f15846180 --- /dev/null +++ b/packages/crudx-swagger/CHANGELOG.md @@ -0,0 +1,5 @@ +# Change Log + +# [1.0.0](#) (2024-07-15) + +### initial release diff --git a/packages/crudx-swagger/LICENSE b/packages/crudx-swagger/LICENSE new file mode 100644 index 000000000..f40703eca --- /dev/null +++ b/packages/crudx-swagger/LICENSE @@ -0,0 +1,7 @@ +Copyright 2024 2am Technologies + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/packages/crudx-swagger/README.md b/packages/crudx-swagger/README.md new file mode 100644 index 000000000..099d8564e --- /dev/null +++ b/packages/crudx-swagger/README.md @@ -0,0 +1,88 @@ +# @2amtech/crudx-swagger + +NestJS provides great support to swagger through its package [@nestjs/swagger](https://docs.nestjs.com/openapi/introduction). + +As a library built to empower the CRUD endpoints creation, the `@2amtech/crudx` fulfills this step proving the `@2amtech/crudx-swagger`, a handy one-step setup module to add relevant meta-data for the auto-generated endpoints CRUD endpoints. + +With this package, you will have defined default descriptions in your swagger docs for all your CRUD routes, being able to replace/extend them, by simply overriding the desired route, and adding your own description using the `@nestjs/swagger` decorators. + +## Install + +```bash +$ npm i @2amtech/crudx-swagger +``` + +## Configure + +To configure the package, you will only have to set the `CrudxSwaggerRoutesFactory` to the `routesFactory` option into your application Global Option: + +```typescript +import { CrudConfigService } from "@2amtech/crudx"; +import { NestFactory } from "@nestjs/core"; +import { CrudxSwaggerRoutesFactory } from "@2amtech/crudx-swagger" + +CrudConfigService.load({ + ... + routesFactory: CrudxSwaggerRoutesFactory, +}); + +import { AppModule } from "./app/app.module"; +... +``` + +Then, you have to create a swagger document and the app itself, as it's usually done: + +```typescript +async function bootstrap() { + const app = await NestFactory.create(AppModule); + const globalPrefix = "api"; + app.setGlobalPrefix(globalPrefix); + + const port = process.env.PORT || 3000; + + const config = new DocumentBuilder().setTitle("Crudx Swagger").setDescription("Crudx-Swagger").setVersion("1.0").addTag("crudx-swagger").build(); + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup("api/docs", app, document); + + await app.listen(port); +} + +bootstrap(); +``` + +## Overring docs + +If you want to change the default docs or update some route docs with your own description, all you have to do is override the route, and then apply your decorators: + +```typescript +... + +@Crud({ + model: { + type: User, + }, +}) +@Controller('/user') +export class UserController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + } + + @Override() + @ApiResponse({ + status: 200, + description: "Overriden description", + }) + async getOne(req: CrudRequest): Promise { + return this.base.getOneBase(req); + } +} +``` + +
+
+ web development has never been so fun
+ www.2am.tech +
diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/.eslintrc.json b/packages/crudx-swagger/demo/crudx-swagger-demo/.eslintrc.json new file mode 100644 index 000000000..b33995654 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/jest.config.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/jest.config.ts new file mode 100644 index 000000000..d53fd62df --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/jest.config.ts @@ -0,0 +1,12 @@ +/* eslint-disable */ +export default { + displayName: "packages-crudx-swagger-demo-crudx-swagger-demo", + preset: "../../../../jest.preset.js", + testEnvironment: "node", + transform: { + "^.+\\.[tj]s$": ["ts-jest", { tsconfig: "/tsconfig.spec.json" }], + }, + moduleFileExtensions: ["ts", "js", "html"], + coverageDirectory: + "../../../../../coverage/packages/packages/crudx-swagger/demo/crudx-swagger-demo", +}; diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/project.json b/packages/crudx-swagger/demo/crudx-swagger-demo/project.json new file mode 100644 index 000000000..cb08c1d76 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/project.json @@ -0,0 +1,66 @@ +{ + "name": "crudx-swagger-demo", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/crudx-swagger/demo/crudx-swagger-demo/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/webpack:webpack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "node", + "compiler": "tsc", + "outputPath": "dist/packages/crudx-swagger/demo/crudx-swagger-demo", + "main": "packages/crudx-swagger/demo/crudx-swagger-demo/src/main.ts", + "tsConfig": "packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.app.json", + "assets": ["packages/crudx-swagger/demo/crudx-swagger-demo/src/assets"], + "isolatedConfig": true, + "webpackConfig": "packages/crudx-swagger/demo/crudx-swagger-demo/webpack.config.js" + }, + "configurations": { + "development": {}, + "production": {} + } + }, + "serve": { + "executor": "@nx/js:node", + "defaultConfiguration": "development", + "options": { + "buildTarget": "crudx-swagger-demo:build" + }, + "configurations": { + "development": { + "buildTarget": "crudx-swagger-demo:build:development" + }, + "production": { + "buildTarget": "crudx-swagger-demo:build:production" + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "packages/crudx-swagger/demo/crudx-swagger-demo/**/*.ts" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "packages/crudx-swagger/demo/crudx-swagger-demo/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.spec.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.spec.ts new file mode 100644 index 000000000..77555535d --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.spec.ts @@ -0,0 +1,54 @@ +import { Test, TestingModule } from "@nestjs/testing"; + +import { AppController } from "./app.controller"; +import { AppModule } from "./app.module"; +import request from "supertest"; +import { INestApplication } from "@nestjs/common"; +import { useContainer } from "class-validator"; +import { AppService } from "./app.service"; +import { ConfigModule, ConfigService } from "@nestjs/config"; +import { databaseConfig } from "../database.config"; +import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm"; + +describe("AppController", () => { + let app: INestApplication; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + load: [databaseConfig], + envFilePath: ['.env.testing'], + }), + TypeOrmModule.forRootAsync({ + useFactory: (config: ConfigService) => + { + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }, + inject: [ConfigService], + }), + AppModule, + ], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + }); + + describe("getData", () => { + it('should return 200', async () => { + return request(app.getHttpServer()) + .get('/user') + .expect(200); + }); + }); +}); diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.ts new file mode 100644 index 000000000..127a22219 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.controller.ts @@ -0,0 +1,39 @@ +import { Controller } from "@nestjs/common"; + +import { AppService } from "./app.service"; +import { User } from "./user.model"; +import { Crud, CrudController, CrudRequest, Override } from "@2amtech/crudx"; +import { + ApiOperation, + ApiOperationOptions, + ApiResponse, + ApiResponseOptions, + ApiTags, +} from "@nestjs/swagger"; + +@ApiTags("v1") +@Crud({ + model: { + type: User, + }, +}) +@Controller("/user") +export class AppController implements CrudController { + constructor(public service: AppService) {} + + get base(): CrudController { + return this; + } + + @Override("getOneBase") + @ApiResponse({ + status: 200, + description: "Overriden description", + }) + @ApiOperation({ + summary: "Overriden Summary", + }) + async getOneOverride(req: CrudRequest): Promise { + return this.base.getOneBase(req); + } +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.module.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.module.ts new file mode 100644 index 000000000..eebf15f7d --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.module.ts @@ -0,0 +1,36 @@ +import { Module } from "@nestjs/common"; + +import { AppController } from "./app.controller"; +import { AppService } from "./app.service"; +import { ConfigModule, ConfigService } from "@nestjs/config"; +import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm"; +import { databaseConfig } from "../database.config"; +import { User } from "./user.model"; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + envFilePath: [".env.testing"], + load: [databaseConfig], + }), + TypeOrmModule.forRootAsync({ + useFactory: (config: ConfigService) => + { + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }, + inject: [ConfigService], + }), + TypeOrmModule.forFeature([User]), + ], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.service.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.service.ts new file mode 100644 index 000000000..ac2c26b6b --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/app.service.ts @@ -0,0 +1,14 @@ +import { Catch, Injectable } from "@nestjs/common"; +import { User } from "./user.model"; +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { InjectRepository } from "@nestjs/typeorm"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; +import { ValidationError } from "class-validator"; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class AppService extends TypeOrmCrudService { + constructor(@InjectRepository(User) readonly repo) { + super(repo); + } +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/user.model.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/user.model.ts new file mode 100644 index 000000000..40e4e3236 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/src/app/user.model.ts @@ -0,0 +1,17 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm"; + +@Entity("user_swagger") +export class User extends BaseEntity { + @ApiProperty() + @PrimaryGeneratedColumn() + id: number; + + @ApiProperty() + @Column({ type: "varchar", length: 150 }) + name: string; + + @ApiProperty() + @Column({ type: "integer", nullable: true }) + age: number | null; +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/assets/.gitkeep b/packages/crudx-swagger/demo/crudx-swagger-demo/src/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/database.config.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/src/database.config.ts new file mode 100644 index 000000000..f2c86de50 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/src/database.config.ts @@ -0,0 +1,15 @@ +import { registerAs } from "@nestjs/config"; +import { User } from "./app/user.model"; + +export const databaseConfig = registerAs("database", () => ({ + type: process.env["DB_TYPE"], + host: process.env["DB_HOST"], + port: process.env["DB_PORT"], + username: process.env["DB_USERNAME"], + password: process.env["DB_PASSWORD"], + database: process.env["DB_DATABASE"], + entities: [User], + synchronize: true, + autoLoadEntities: true, + encoding: process.env["DB_CHARSET"], +})); diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/src/main.ts b/packages/crudx-swagger/demo/crudx-swagger-demo/src/main.ts new file mode 100644 index 000000000..a3f6d3ce1 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/src/main.ts @@ -0,0 +1,44 @@ +/** + * This is not a production server yet! + * This is only a minimal backend to get started. + */ + +import { CrudConfigService } from "@2amtech/crudx"; +import { Logger } from "@nestjs/common"; +import { NestFactory } from "@nestjs/core"; + +import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger"; +import { CrudxSwaggerRoutesFactory } from "../../../src/services/crudx.swagger.routes.factory"; + +CrudConfigService.load({ + query: { + limit: 20, + }, + routesFactory: CrudxSwaggerRoutesFactory, +}); + +import { AppModule } from "./app/app.module"; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + const globalPrefix = "api"; + app.setGlobalPrefix(globalPrefix); + const port = process.env.PORT || 3000; + + const config = new DocumentBuilder() + .setTitle("Crudx Swagger") + .setDescription("The Crudx-Swagger API Demo") + .setVersion("1.0") + .addTag("crudx-swagger") + .build(); + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup("api/docs", app, document); + + await app.listen(port); + + Logger.log( + `🚀 Application is running on: http://localhost:${port}/${globalPrefix}` + ); +} + +bootstrap(); diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.app.json b/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.app.json new file mode 100644 index 000000000..d4cefc19c --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "types": ["node"], + "emitDecoratorMetadata": true, + "target": "es2021" + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.json b/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.json new file mode 100644 index 000000000..608d5e18f --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.spec.json b/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.spec.json new file mode 100644 index 000000000..30c798463 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/tsconfig.spec.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/packages/crudx-swagger/demo/crudx-swagger-demo/webpack.config.js b/packages/crudx-swagger/demo/crudx-swagger-demo/webpack.config.js new file mode 100644 index 000000000..0ab513e83 --- /dev/null +++ b/packages/crudx-swagger/demo/crudx-swagger-demo/webpack.config.js @@ -0,0 +1,8 @@ +const { composePlugins, withNx } = require("@nx/webpack"); + +// Nx plugins for webpack. +module.exports = composePlugins(withNx(), (config) => { + // Update the webpack config as needed here. + // e.g. `config.plugins.push(new MyPlugin())` + return config; +}); diff --git a/packages/crudx-swagger/jest.config.ts b/packages/crudx-swagger/jest.config.ts new file mode 100644 index 000000000..84c19ae3d --- /dev/null +++ b/packages/crudx-swagger/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: "crudx-swagger", + preset: "../../jest.preset.js", + testEnvironment: "node", + transform: { + "^.+\\.[tj]s$": ["ts-jest", { tsconfig: "/tsconfig.spec.json" }], + }, + moduleFileExtensions: ["ts", "js", "html"], + coverageDirectory: "../../coverage/packages/crudx-swagger", +}; diff --git a/packages/crudx-swagger/package.json b/packages/crudx-swagger/package.json new file mode 100644 index 000000000..0f958f721 --- /dev/null +++ b/packages/crudx-swagger/package.json @@ -0,0 +1,40 @@ +{ + "name": "@2amtech/crudx-swagger", + "author": "Antonio Ramirez Cobos (https://2am.tech/)", + "contributors": [ + { + "name": "Jonatas Souza", + "email": "hola@2amigos.us" + }, + { + "name": "Aleksandar Panic", + "email": "hola@2amigos.us" + } + ], + "description": "NestJs package to apply swagger meta-data into routes generated with @2amtech/crudx package", + "version": "1.0.1", + "dependencies": { + "tslib": "^2.3.0", + "@2amtech/crudx": "1.0.0", + "@nestjs/common": "^10.1.3", + "@nestjs/swagger": "^7.1.6", + "lodash": "^4.17.21" + }, + "devDependencies": { + "supertest": "^6.3.4", + "@types/uuid": "^9.0.8", + "@2amtech/crudx": "1.0.0" + }, + "keywords": [ + "typescript", + "nest", + "nestjs", + "api", + "crud", + "swagger-docs", + "docs" + ], + "type": "commonjs", + "main": "./src/index.js", + "typings": "./src/index.d.ts" +} diff --git a/packages/crudx-swagger/project.json b/packages/crudx-swagger/project.json new file mode 100644 index 000000000..1a0aa51ff --- /dev/null +++ b/packages/crudx-swagger/project.json @@ -0,0 +1,68 @@ +{ + "name": "crudx-swagger", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/crudx-swagger/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/packages/crudx-swagger", + "tsConfig": "packages/crudx-swagger/tsconfig.lib.json", + "packageJson": "packages/crudx-swagger/package.json", + "main": "packages/crudx-swagger/src/index.ts", + "assets": [ + "packages/crudx-swagger/*.md", + "packages/crudx-swagger/.npmignore" + ] + } + }, + "build-npm": { + "executor": "@nx/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/packages/crudx-swagger", + "tsConfig": "packages/crudx-swagger/tsconfig.lib.json", + "packageJson": "packages/crudx-swagger/package.json", + "main": "packages/crudx-swagger/src/index.ts", + "assets": [ + "packages/crudx-swagger/README.md", + "packages/crudx-swagger/LICENSE", + "packages/crudx-swagger/.npmignore" + ] + } + }, + "publish": { + "command": "node tools/scripts/publish.mjs crudx-swagger", + "dependsOn": ["build-npm"] + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "packages/crudx-swagger/**/*.ts", + "packages/crudx-swagger/package.json" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "runInBand": true, + "jestConfig": "packages/crudx-swagger/jest.config.ts", + "passWithNoTests": true, + "testPathPattern": ["tests/*"] + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/packages/crudx-swagger/src/index.ts b/packages/crudx-swagger/src/index.ts new file mode 100644 index 000000000..72aff5543 --- /dev/null +++ b/packages/crudx-swagger/src/index.ts @@ -0,0 +1,2 @@ +export * from "./lib"; +export * from "./services"; diff --git a/packages/crudx-swagger/src/lib/index.ts b/packages/crudx-swagger/src/lib/index.ts new file mode 100644 index 000000000..2655d9cad --- /dev/null +++ b/packages/crudx-swagger/src/lib/index.ts @@ -0,0 +1 @@ +export * from "./swagger.helper"; diff --git a/packages/crudx-swagger/src/lib/swagger.helper.ts b/packages/crudx-swagger/src/lib/swagger.helper.ts new file mode 100644 index 000000000..3e45d82be --- /dev/null +++ b/packages/crudx-swagger/src/lib/swagger.helper.ts @@ -0,0 +1,438 @@ +import { QueryBuilderService } from "@2amtech/crudx"; +import { + MergedCrudOptions, + ParamsOptions, + RequestQueryBuilderOptions, +} from "@2amtech/crudx"; +import { BaseRouteName } from "@2amtech/crudx"; +import { R } from "@2amtech/crudx"; +import { safeRequire } from "@2amtech/crudx"; +import { HttpStatus } from "@nestjs/common"; +import { getSchemaPath } from "@nestjs/swagger"; +import * as SWAGGER_CONSTANTS from "@nestjs/swagger/dist/constants"; +import { get, isArray, isString, keys } from "lodash"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const pluralize = require("pluralize"); + +export const swaggerPkgJson = safeRequire("@nestjs/swagger/package.json", () => + require("@nestjs/swagger/package.json") +); + +export class Swagger { + static operationsMap(modelName: string): { [key in BaseRouteName]: string } { + return { + getManyBase: `Retrieve multiple ${pluralize(modelName)}`, + getOneBase: `Retrieve a single ${modelName}`, + createManyBase: `Create multiple ${pluralize(modelName)}`, + createOneBase: `Create a single ${modelName}`, + updateOneBase: `Update a single ${modelName}`, + replaceOneBase: `Replace a single ${modelName}`, + deleteOneBase: `Delete a single ${modelName}`, + recoverOneBase: `Recover one ${modelName}`, + }; + } + + static setOperation(metadata: any, func: Function) { + R.set(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, metadata, func); + } + + static setParams(metadata: any, func: Function) { + R.set(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, metadata, func); + } + + static setExtraModels(swaggerModels: any) { + /* istanbul ignore else */ + if (SWAGGER_CONSTANTS) { + const meta = Swagger.getExtraModels(swaggerModels.get); + const models: any[] = [ + ...meta, + ...keys(swaggerModels) + .map((name) => swaggerModels[name]) + .filter((one) => one && one.name !== swaggerModels.get.name), + ]; + R.set( + SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, + models, + swaggerModels.get + ); + } + } + + static setResponseOk(metadata: any, func: Function) { + R.set(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, metadata, func); + } + + static getOperation(func: Function): any { + return R.get(SWAGGER_CONSTANTS.DECORATORS.API_OPERATION, func) || {}; + } + + static getParams(func: Function): any[] { + return R.get(SWAGGER_CONSTANTS.DECORATORS.API_PARAMETERS, func) || []; + } + + static getExtraModels(target: any): any[] { + return R.get(SWAGGER_CONSTANTS.DECORATORS.API_EXTRA_MODELS, target) || []; + } + + static getResponseOk(func: Function): any { + return R.get(SWAGGER_CONSTANTS.DECORATORS.API_RESPONSE, func) || {}; + } + + static createResponseMeta( + name: BaseRouteName, + options: MergedCrudOptions, + swaggerModels: any + ): any { + const { routes, query } = options; + + switch (name) { + case "getOneBase": + return { + [HttpStatus.OK]: { + description: "Get one base response", + type: swaggerModels?.get ?? {}, + }, + }; + case "getManyBase": + return { + [HttpStatus.OK]: query?.alwaysPaginate + ? { + description: "Get paginated response", + type: swaggerModels.getMany, + } + : { + description: "Get many base response", + schema: { + oneOf: [ + { + $ref: getSchemaPath(swaggerModels.getMany.name), + }, + { + type: "array", + items: { + $ref: getSchemaPath(swaggerModels.get.name), + }, + }, + ], + }, + }, + }; + case "createOneBase": + return { + [HttpStatus.CREATED]: { + description: "Get create one base response", + schema: { + $ref: getSchemaPath(swaggerModels.create.name), + }, + }, + }; + case "createManyBase": + return { + [HttpStatus.CREATED]: swaggerModels.createMany + ? { + description: "Get create many base response", + schema: { + $ref: getSchemaPath(swaggerModels.createMany.name), + }, + } + : { + description: "Get create many base response", + schema: { + type: "array", + items: { + $ref: getSchemaPath(swaggerModels.create.name), + }, + }, + }, + }; + case "deleteOneBase": + return { + [HttpStatus.OK]: routes?.deleteOneBase?.returnDeleted + ? { + description: "Delete one base response", + schema: { + $ref: getSchemaPath(swaggerModels.delete.name), + }, + } + : { + description: "Delete one base response", + }, + }; + case "recoverOneBase": + return { + [HttpStatus.OK]: routes?.recoverOneBase?.returnRecovered + ? { + description: "Recover one base response", + schema: { + $ref: getSchemaPath(swaggerModels.recover.name), + }, + } + : { + description: "Recover one base response", + }, + }; + default: + const dto = swaggerModels[name.split("OneBase")[0]]; + return { + [HttpStatus.OK]: { + description: "Response", + schema: { $ref: getSchemaPath(dto.name) }, + }, + }; + } + } + + static createPathParamsMeta(options: ParamsOptions): any[] { + return SWAGGER_CONSTANTS + ? keys(options).map((param) => ({ + name: param, + required: true, + in: "path", + type: options[param].type === "number" ? Number : String, + enum: isArray(options[param]?.enum) + ? Object.values(>options[param].enum) + : undefined, + })) + : []; + } + + static createQueryParamsMeta( + name: BaseRouteName, + options: MergedCrudOptions + ) { + const { + delim: d, + delimStr: coma, + fields, + search, + filter, + or, + join, + sort, + limit, + offset, + page, + cache, + includeDeleted, + } = Swagger.getQueryParamsNames(); + const docsLink = (a: string) => + // TODO: to modify + `Docs`; + + const fieldsMetaBase = { + name: fields, + description: `Selects resource fields. ${docsLink("select")}`, + required: false, + in: "query", + }; + const fieldsMeta = { + ...fieldsMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: false, + }; + + const searchMetaBase = { + name: search, + description: `Adds search condition. ${docsLink("search")}`, + required: false, + in: "query", + }; + + const searchMeta = { ...searchMetaBase, schema: { type: "string" } }; + + const filterMetaBase = { + name: filter, + description: `Adds filter condition. ${docsLink("filter")}`, + required: false, + in: "query", + }; + + const filterMeta = { + ...filterMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + + const orMetaBase = { + name: or, + description: `Adds OR condition. ${docsLink("or")}`, + required: false, + in: "query", + }; + + const orMeta = { + ...orMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + + const sortMetaBase = { + name: sort, + description: `Adds sort by field. ${docsLink("sort")}`, + required: false, + in: "query", + }; + + const sortMeta = { + ...sortMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + + const joinMetaBase = { + name: join, + description: `Adds relational resources. ${docsLink("join")}`, + required: false, + in: "query", + }; + + const joinMeta = { + ...joinMetaBase, + schema: { + type: "array", + items: { + type: "string", + }, + }, + style: "form", + explode: true, + }; + + const limitMetaBase = { + name: limit, + description: `Limit amount of resources. ${docsLink("limit")}`, + required: false, + in: "query", + }; + + const limitMeta = { ...limitMetaBase, schema: { type: "integer" } }; + + const offsetMetaBase = { + name: offset, + description: `Offset amount of resources. ${docsLink("offset")}`, + required: false, + in: "query", + }; + + const offsetMeta = { ...offsetMetaBase, schema: { type: "integer" } }; + + const pageMetaBase = { + name: page, + description: `Page portion of resources. ${docsLink("page")}`, + required: false, + in: "query", + }; + + const pageMeta = { ...pageMetaBase, schema: { type: "integer" } }; + + const cacheMetaBase = { + name: cache, + description: `Reset cache (if was enabled). ${docsLink("cache")}`, + required: false, + in: "query", + }; + + const cacheMeta = { + ...cacheMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + + const includeDeletedMetaBase = { + name: includeDeleted, + description: `Include deleted. ${docsLink("includeDeleted")}`, + required: false, + in: "query", + }; + + const includeDeletedMeta = { + ...includeDeletedMetaBase, + schema: { type: "integer", minimum: 0, maximum: 1 }, + }; + + switch (name) { + case "getManyBase": + return options.query?.softDelete + ? [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + includeDeletedMeta, + ] + : [ + fieldsMeta, + searchMeta, + filterMeta, + orMeta, + sortMeta, + joinMeta, + limitMeta, + offsetMeta, + pageMeta, + cacheMeta, + ]; + case "getOneBase": + return options.query?.softDelete + ? [fieldsMeta, joinMeta, cacheMeta, includeDeletedMeta] + : [fieldsMeta, joinMeta, cacheMeta]; + default: + return []; + } + } + + static getQueryParamsNames() { + const qbOptions: RequestQueryBuilderOptions = + QueryBuilderService.getOptions(); + const name = (n: any) => { + const selected = get(qbOptions, `paramNamesMap[${n}]`); + return isString(selected) ? selected : selected?.[0]; + }; + + return { + delim: qbOptions.delim, + delimStr: qbOptions.delimStr, + fields: name("fields"), + search: name("search"), + filter: name("filter"), + or: name("or"), + join: name("join"), + sort: name("sort"), + limit: name("limit"), + offset: name("offset"), + page: name("page"), + cache: name("cache"), + includeDeleted: name("includeDeleted"), + }; + } +} diff --git a/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts b/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts new file mode 100644 index 000000000..1a7c802bd --- /dev/null +++ b/packages/crudx-swagger/src/services/crudx.swagger.routes.factory.ts @@ -0,0 +1,161 @@ +import { + BaseRoute, + BaseRouteName, + CrudOptions, + isIn, + R, + RoutesFactoryService, + SerializeHelper, +} from "@2amtech/crudx"; +import { get, isEqual, isFunction, keys } from "lodash"; + +import { Swagger } from "../lib/swagger.helper"; + +export class CrudxSwaggerRoutesFactory extends RoutesFactoryService { + protected swaggerModels: any = {}; + + constructor(protected override target: any, options: CrudOptions) { + super(target, options); + } + + protected override create(): void { + const routesSchema: BaseRoute[] = this.getRoutesSchema(); + this.mergeOptions(); + this.setResponseModels(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + + protected override setBaseRouteMeta(name: BaseRouteName): void { + super.setBaseRouteMeta(name); + + this.setSwaggerOperation(name); + this.setSwaggerPathParams(name); + this.setSwaggerQueryParams(name); + this.setSwaggerResponseOk(name); + // set decorators after Swagger so metadata can be overwritten + this.setDecorators(name); + } + + protected setSwaggerOperation(name: BaseRouteName) { + const summary: string = Swagger.operationsMap(this.modelName)[name]; + const operationId: string = + name + this.targetProto.constructor.name + this.modelName; + Swagger.setOperation({ summary, operationId }, this.targetProto[name]); + } + + protected setSwaggerPathParams(name: BaseRouteName): void { + const metadata: any[] = Swagger.getParams(this.targetProto[name]); + const withoutPrimary: BaseRouteName[] = [ + "createManyBase", + "createOneBase", + "getManyBase", + ]; + + const removePrimary: boolean = isIn(name, withoutPrimary); + const params: {} = keys(this.options.params) + .filter((key: string) => !get(this.options, `params.${key}.disabled`)) + .filter( + (key: string) => + !(removePrimary && get(this.options, `params.${key}.primary`)) + ) + .reduce((a, c) => ({ ...a, [c]: this.options.params?.[c] }), {}); + + const pathParamsMeta: any[] = Swagger.createPathParamsMeta(params); + Swagger.setParams([...metadata, ...pathParamsMeta], this.targetProto[name]); + } + + protected setSwaggerQueryParams(name: BaseRouteName): void { + const metadata: any[] = Swagger.getParams(this.targetProto[name]); + const queryParamsMeta = Swagger.createQueryParamsMeta(name, this.options); + Swagger.setParams( + [...metadata, ...queryParamsMeta], + this.targetProto[name] + ); + } + + protected setSwaggerResponseOk(name: BaseRouteName): void { + const metadata = Swagger.getResponseOk(this.targetProto[name]); + const metadataToAdd = + Swagger.createResponseMeta(name, this.options, this.swaggerModels) || {}; + Swagger.setResponseOk( + { ...metadata, ...metadataToAdd }, + this.targetProto[name] + ); + } + + protected setResponseModels() { + const modelType = isFunction(this.modelType) + ? this.modelType + : SerializeHelper.createGetOneResponseDto(this.modelName); + + this.swaggerModels = {}; + + this.swaggerModels.get = isFunction(this.options.serialize?.get) + ? this.options.serialize?.get + : modelType; + this.swaggerModels.getMany = + this.options.serialize?.getMany || + SerializeHelper.createGetManyDto(this.swaggerModels.get, this.modelName); + this.swaggerModels.create = isFunction(this.options.serialize?.create) + ? this.options.serialize?.create + : modelType; + this.swaggerModels.update = isFunction(this.options.serialize?.update) + ? this.options.serialize?.update + : modelType; + this.swaggerModels.replace = isFunction(this.options.serialize?.replace) + ? this.options.serialize?.replace + : modelType; + this.swaggerModels.delete = isFunction(this.options.serialize?.delete) + ? this.options.serialize?.delete + : modelType; + this.swaggerModels.recover = isFunction(this.options.serialize?.recover) + ? this.options.serialize?.recover + : modelType; + Swagger.setExtraModels(this.swaggerModels); + } + + protected override overrideRoutes(routesSchema: BaseRoute[]): void { + super.overrideRoutes(routesSchema); + + Object.getOwnPropertyNames(this.targetProto).forEach( + (name: string): void => { + const override: BaseRouteName = R.getOverrideRoute( + this.targetProto[name] + ); + const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) => + isEqual(r.name, override) + ); + + if (override && route && route.enable) { + const operation = Swagger.getOperation(this.targetProto[name]); + const baseOperation = Swagger.getOperation( + this.targetProto[override] + ); + const swaggerParams = Swagger.getParams(this.targetProto[name]); + const baseSwaggerParams = Swagger.getParams( + this.targetProto[override] + ); + const responseOk = Swagger.getResponseOk(this.targetProto[name]); + const baseResponseOk = Swagger.getResponseOk( + this.targetProto[override] + ); + + Swagger.setOperation( + { ...baseOperation, ...operation }, + this.targetProto[name] + ); + Swagger.setParams( + [...baseSwaggerParams, ...swaggerParams], + this.targetProto[name] + ); + Swagger.setResponseOk( + { ...baseResponseOk, ...responseOk }, + this.targetProto[name] + ); + } + } + ); + } +} diff --git a/packages/crudx-swagger/src/services/index.ts b/packages/crudx-swagger/src/services/index.ts new file mode 100644 index 000000000..8e7695d97 --- /dev/null +++ b/packages/crudx-swagger/src/services/index.ts @@ -0,0 +1 @@ +export * from "./crudx.swagger.routes.factory"; diff --git a/packages/crudx-swagger/tests/__fixtures__/base.model.ts b/packages/crudx-swagger/tests/__fixtures__/base.model.ts new file mode 100644 index 000000000..2f946c1a5 --- /dev/null +++ b/packages/crudx-swagger/tests/__fixtures__/base.model.ts @@ -0,0 +1,26 @@ +import { ApiProperty } from "@nestjs/swagger"; +import { + BaseEntity, + Column, + DeleteDateColumn, + Entity, + PrimaryGeneratedColumn, +} from "typeorm"; + +@Entity() +export class Base extends BaseEntity { + @PrimaryGeneratedColumn() + @ApiProperty() + id: number | null = null; + + @Column({ type: "varchar", length: 255 }) + @ApiProperty() + name: string = ""; + + @Column({ type: "int" }) + @ApiProperty() + age: number = 0; + + @DeleteDateColumn({ name: "deleted_at", nullable: true }) + deletedAt: Date | null = null; +} diff --git a/packages/crudx-swagger/tests/__fixtures__/base.module.ts b/packages/crudx-swagger/tests/__fixtures__/base.module.ts new file mode 100644 index 000000000..357472543 --- /dev/null +++ b/packages/crudx-swagger/tests/__fixtures__/base.module.ts @@ -0,0 +1,35 @@ +import { Module } from "@nestjs/common"; +import { ConfigModule, ConfigService } from "@nestjs/config"; +import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm"; + +import { Base } from "./base.model"; +import { BaseService } from "./base.service"; +import { databaseConfig } from "./database.config"; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + envFilePath: [".env.testing"], + load: [databaseConfig], + }), + TypeOrmModule.forRootAsync({ + useFactory: (config: ConfigService) => + { + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }, + inject: [ConfigService], + }), + TypeOrmModule.forFeature([Base]), + ], + providers: [BaseService], + exports: [BaseService], +}) +export class BaseModule {} diff --git a/packages/crudx-swagger/tests/__fixtures__/base.service.ts b/packages/crudx-swagger/tests/__fixtures__/base.service.ts new file mode 100644 index 000000000..a95348cdb --- /dev/null +++ b/packages/crudx-swagger/tests/__fixtures__/base.service.ts @@ -0,0 +1,12 @@ +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; + +import { Base } from "./base.model"; + +@Injectable() +export class BaseService extends TypeOrmCrudService { + constructor(@InjectRepository(Base) override readonly repo: any) { + super(repo); + } +} diff --git a/packages/crudx-swagger/tests/__fixtures__/database.config.ts b/packages/crudx-swagger/tests/__fixtures__/database.config.ts new file mode 100644 index 000000000..d55c41734 --- /dev/null +++ b/packages/crudx-swagger/tests/__fixtures__/database.config.ts @@ -0,0 +1,16 @@ +import { registerAs } from "@nestjs/config"; + +import { Base } from "./base.model"; + +export const databaseConfig = registerAs("database", () => ({ + type: process.env["DB_TYPE"], + host: process.env["DB_HOST"], + port: process.env["DB_PORT"], + username: process.env["DB_USERNAME"], + password: process.env["DB_PASSWORD"], + database: process.env["DB_DATABASE"], + entities: [Base], + synchronize: true, + autoLoadEntities: true, + encoding: process.env["DB_CHARSET"], +})); diff --git a/packages/crudx-swagger/tests/crudx-swagger.spec.ts b/packages/crudx-swagger/tests/crudx-swagger.spec.ts new file mode 100644 index 000000000..8747b128f --- /dev/null +++ b/packages/crudx-swagger/tests/crudx-swagger.spec.ts @@ -0,0 +1,148 @@ +import { Crud, CrudController, Override, CrudRequest } from "@2amtech/crudx"; +import { CrudConfigService } from "@2amtech/crudx"; +import { Controller, INestApplication } from "@nestjs/common"; +import { + ApiOperation, + ApiOperationOptions, + ApiResponse, + ApiResponseOptions, + DocumentBuilder, + SwaggerModule, +} from "@nestjs/swagger"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import { get } from "lodash"; +import * as request from "supertest"; + +import { CrudxSwaggerRoutesFactory, Swagger } from "../src"; + +import { Base } from "./__fixtures__/base.model"; +import { BaseModule } from "./__fixtures__/base.module"; +import { BaseService } from "./__fixtures__/base.service"; + +CrudConfigService.load({ + routesFactory: CrudxSwaggerRoutesFactory, +}); + +@Crud({ + model: { + type: Base, + }, + query: { + softDelete: true, + }, +}) +@Controller("/base/") +class BaseController implements CrudController { + constructor(public service: BaseService) {} +} + +@Crud({ + model: { + type: Base, + }, +}) +@Controller("/override/") +class OverideController implements CrudController { + constructor(public service: BaseService) {} + + get base(): CrudController { + return this; + } + + @Override() + @ApiResponse({ + status: 200, + description: "Overriden description", + }) + @ApiOperation({ + summary: "Overriden Summary", + }) + async getOne(req: CrudRequest): Promise { + return this.base.getOneBase!(req); + } +} + +describe("Crudx Swagger Test", () => { + let app: INestApplication; + let server: any; + let model: Base; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [BaseModule], + controllers: [BaseController, OverideController], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + + const config = new DocumentBuilder() + .setTitle("Crudx Swagger") + .setDescription("The Crudx-Swagger API Demo") + .setVersion("1.0") + .addTag("crudx-swagger") + .build(); + const document = SwaggerModule.createDocument(app, config); + SwaggerModule.setup("api/docs", app, document); + + await app.init(); + + server = app.getHttpServer(); + + model = await Base.create({ + name: "sample", + age: 20, + }).save(); + }); + + afterAll(async () => { + await Base.delete({}); + await server.close(); + await app.close(); + }); + + describe("It should assert base routes are documented with default lib descriptions", () => { + it("Should return 200", async () => { + return request(server).get("/base").expect(200); + }); + + it("Should recover one", async () => { + await model.softRemove(); + + return request(server) + .patch("/base/" + model.id + "/recover") + .expect(200); + }); + + it("Should return 200 to overriden route", async () => { + return request(server).get("/override/").expect(200); + }); + + it("Should check the docs", async () => { + const mapping = Swagger.operationsMap("Base"); + const validSummaries: string[] = []; + + const summaryKeys = Object.keys(mapping); + summaryKeys.forEach((key: string) => + validSummaries.push(get(mapping, key)) + ); + validSummaries.push("Overriden Summary"); + + return await request(server) + .get("/api/docs-json") + .expect(200) + .expect("Content-type", /json/) + .expect((res) => { + Object.keys(res.body.paths).forEach((path: string) => { + const methods = Object.keys(res.body.paths[path]); + + methods.forEach((method: string) => { + const summary = res.body.paths[path][method].summary; + expect(validSummaries.includes(summary)).toBeTruthy(); + }); + }); + }); + }); + }); +}); diff --git a/packages/crudx-swagger/tsconfig.json b/packages/crudx-swagger/tsconfig.json new file mode 100644 index 000000000..f5b85657a --- /dev/null +++ b/packages/crudx-swagger/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/packages/crudx-swagger/tsconfig.lib.json b/packages/crudx-swagger/tsconfig.lib.json new file mode 100644 index 000000000..c297a2487 --- /dev/null +++ b/packages/crudx-swagger/tsconfig.lib.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"], + "target": "es2021", + "strictNullChecks": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/packages/crudx-swagger/tsconfig.spec.json b/packages/crudx-swagger/tsconfig.spec.json new file mode 100644 index 000000000..9b2a121d1 --- /dev/null +++ b/packages/crudx-swagger/tsconfig.spec.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/packages/crudx/.eslintrc.json b/packages/crudx/.eslintrc.json new file mode 100644 index 000000000..adbe7ae2d --- /dev/null +++ b/packages/crudx/.eslintrc.json @@ -0,0 +1,25 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": "error" + } + } + ] +} diff --git a/packages/crudx/.npmignore b/packages/crudx/.npmignore new file mode 100644 index 000000000..e0dd5b9c3 --- /dev/null +++ b/packages/crudx/.npmignore @@ -0,0 +1,4 @@ +node_modules +demo +docs +tests \ No newline at end of file diff --git a/packages/crudx/AUTHOR b/packages/crudx/AUTHOR new file mode 100644 index 000000000..d3334e3e8 --- /dev/null +++ b/packages/crudx/AUTHOR @@ -0,0 +1,4 @@ + +## Authors: + +2am. Technologies diff --git a/packages/crudx/CHANGELOG.md b/packages/crudx/CHANGELOG.md new file mode 100644 index 000000000..c36eb4732 --- /dev/null +++ b/packages/crudx/CHANGELOG.md @@ -0,0 +1,5 @@ +# Change Log + +# [1.0.0](#) (2024-04-01) + +### initial release \ No newline at end of file diff --git a/packages/crudx/LICENSE b/packages/crudx/LICENSE new file mode 100644 index 000000000..f40703eca --- /dev/null +++ b/packages/crudx/LICENSE @@ -0,0 +1,7 @@ +Copyright 2024 2am Technologies + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/packages/crudx/README.md b/packages/crudx/README.md new file mode 100644 index 000000000..1a670953c --- /dev/null +++ b/packages/crudx/README.md @@ -0,0 +1,198 @@ + +# @2amtech/Crudx +The @2amtech/Crudx is a refactor inspired by the impressive work of [nestjsx/crud](https://github.com/nestjsx/crud), consolidating its three packages into one cohesive solution. It simplifies the creation of CRUD (Create, Read, Update, Delete) endpoints for RESTful applications with remarkable ease within Nest.js. + +This tool provides decorators specifically designed for endpoint generation, global configurations, request validation, and specialized services, all tailored to enhance the efficiency and usability of Crudx across various contexts. + +A comprehensive documentation offers a structured exploration of Crudx functionalities, meticulously divided into distinct sections. Each section is accompanied by illustrative samples and insightful comments, fostering a deeper understanding of how to effectively leverage Crudx in your projects. + +## Install + +```bash +$ npm i @2amtech/crudx +``` + +## Basics + +Before diving into Crudx features, it's essential to define a basic Nest.js module for CRUD operations. Let's use the User module as a sample: + +First, let's define an entity. + +Crudx supports TypeORM for building entities, so let's implement it: + +```typescript +import { + AfterLoad, + BaseEntity, + Entity, + PrimaryGeneratedColumn, + Column, + BeforeInsert, + BeforeUpdate, +} from "typeorm"; +import * as bcrypt from "bcryptjs"; + +@Entity() +export class User extends BaseEntity { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ unique: true, length: 125 }) + email: string; + + @Column({ type: "varchar", length: 80 }) + password: string; + + private tempPassword?: string; + + @AfterLoad() + private loadTempPassword(): void { + this.tempPassword = this.password; + } + + @BeforeInsert() + private async hashPassword(): Promise { + this.password = await bcrypt.hash(this.password, 10); + } + + @BeforeUpdate() + private async encryptPassword(): Promise { + if (this.tempPassword !== null && this.tempPassword !== this.password) { + try { + await this.hashPassword(); + + this.tempPassword = this.password; + } catch (error) { + if (error instanceof Error) { + throw new Error("Unable to encrypt password: " + error.message); + } + } + } + } +} +``` + +Next, let's create a service: + +```typescript +import {Injectable} from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +@Injectable() +@Catch(QueryFailedError, EntityNotFoundError) +export class UserService extends TypeOrmCrudService { + constructor(@InjectRepository(User) readonly repo) { + super(repo); + } +} +``` + +With the service in place, let's define our controller: + +Note that we're utilizing the `@Crud` decorator. When it’s defined for a controller, it automatically creates the basic CRUD routes: + +* get `/user` +* get `/user/:id` +* post `/user` +* post `/user/bulk` +* patch `/user/:id` +* put `/user/:id` +* delete `/user/:id` + +For further details, you can refer to the [Controllers](./docs/controllers.md) section. + +In our sample, we're specifying some options for our @CRUD decorator: `model` and `params`. + +The `model` option is the only required one for the `@Crud()` decorator. Its type property defines a class as the request body type, enabling data validation. Though not covered in our basics, you can find all related information in the [request validation](./docs/validation.md) section. The provided `type` should be an `Entity`, `Model` or `DTO`. + +By default, the generated routes will have a parameter named `:id`. This parameter is intended to represent the model's primary key. We're using the `params` options to instruct Crudx to define our param `:id` as a `uuid` type, indicating that it should match the `id` field of the User entity. + +```typescript +import { Crud, CrudController } from "@2amtech/crudx"; +import { Controller } from "@nestjs/common"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; + +@Crud({ + model: { + type: User, + }, + params: { + id: { + field: "id", + type: "uuid", + primary: true, + } + } +}) +@Controller("users") +export class UserController implements CrudController { + constructor(public service: UserService) {} +} +``` + +With the `entity`, `service`, and `controller` defined, all that's left is to export a module and import it into the application's main module: + +```typescript +import { Module } from "@nestjs/common"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { UserController } from "./user.controller"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; + +@Module({ + imports: [TypeOrmModule.forFeature([User])], + controllers: [UserController], + providers: [UserService], + exports: [UserService], +}) +export class UserModule {} +``` + +## IntelliSense + +Due to the CRUD controllers being composed by the logic of the `@Crud` decorator, IntelliSense will not be available on composed methods. To enable your code to properly access the controller's methods from the `this` keyword, you can add these lines to your class: + +```typescript +import { Crud, CrudController } from '@2amtech/crudx'; +import { User } from './user.entity.ts'; + +@Crud(User) +@Controller('user') +export class UserController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + } +} +``` + +While the examples provided above offer a simplistic demonstration, they effectively highlight the fundamental principles of utilizing Crudx. For more in-depth insights and comprehensive guidance, we encourage you to explore the dedicated sections outlined below, which deal with specific functionalities and advanced usage scenarios. + +## Further Reading + +* [Controllers](./docs/controllers.md) +* [Nested Controllers](./docs/nested-controllers.md) +* [Routes](./docs/routes.md) +* [Queries and Fiters](./docs/query-filter.md) +* [Request Validation](./docs/validation.md) +* [Response Serialization](./docs/serialization.md) +* [Actions and Access Management](./docs/actions-access-management.md) +* [Request Authenticaten](./docs/authentication.md) +* [Global Options](./docs/global-options.md) +* [ORM](./docs/orm.md) +* [Requests and Query Params](./docs/requests.md) +* [Swagger - @2amtech/crudx-swagger](https://github.com/2amigs/nest-kit/packages/crudx-swagger/README.md) + +Thank you for exploring our resources. Happy coding! + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/demo/crudx-demo/.eslintrc.json b/packages/crudx/demo/crudx-demo/.eslintrc.json new file mode 100644 index 000000000..31fa6f0b8 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../packages/.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/packages/crudx/demo/crudx-demo/jest.config.ts b/packages/crudx/demo/crudx-demo/jest.config.ts new file mode 100644 index 000000000..f8d2d5e3c --- /dev/null +++ b/packages/crudx/demo/crudx-demo/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: "crudx-demo", + preset: "../../../../jest.preset.js", + testEnvironment: "node", + transform: { + "^.+\\.[tj]s$": ["ts-jest", { tsconfig: "/tsconfig.spec.json" }], + }, + moduleFileExtensions: ["ts", "js", "html"], + coverageDirectory: "../../../../coverage/packages/crudx-demo", +}; diff --git a/packages/crudx/demo/crudx-demo/project.json b/packages/crudx/demo/crudx-demo/project.json new file mode 100644 index 000000000..2c748f433 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/project.json @@ -0,0 +1,64 @@ +{ + "name": "crudx-demo", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/crudx/demo/crudx-demo/src", + "projectType": "application", + "targets": { + "build": { + "executor": "@nx/webpack:webpack", + "outputs": ["{options.outputPath}"], + "defaultConfiguration": "production", + "options": { + "target": "node", + "compiler": "tsc", + "outputPath": "dist/packages/crudx-demo", + "main": "packages/crudx/demo/crudx-demo/src/main.ts", + "tsConfig": "packages/crudx/demo/crudx-demo/tsconfig.app.json", + "assets": ["packages/crudx/demo/crudx-demo/src/assets"], + "isolatedConfig": true, + "webpackConfig": "packages/crudx/demo/crudx-demo/webpack.config.js" + }, + "configurations": { + "development": {}, + "production": {} + } + }, + "serve": { + "executor": "@nx/js:node", + "defaultConfiguration": "development", + "options": { + "buildTarget": "crudx-demo:build" + }, + "configurations": { + "development": { + "buildTarget": "crudx-demo:build:development" + }, + "production": { + "buildTarget": "crudx-demo:build:production" + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["packages/crudx/demo/crudx-demo/**/*.ts"] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "packages/crudx/demo/crudx-demo/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/packages/crudx/demo/crudx-demo/src/app/address/address-type.entity.ts b/packages/crudx/demo/crudx-demo/src/app/address/address-type.entity.ts new file mode 100644 index 000000000..9de4a01b2 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/address/address-type.entity.ts @@ -0,0 +1,24 @@ +import { + BaseEntity, + Column, + Entity, + OneToMany, + PrimaryGeneratedColumn, +} from "typeorm"; + +import { Address } from "./address.entity"; + +@Entity() +export class AddressType extends BaseEntity { + @PrimaryGeneratedColumn() + id: number; + + @Column({ type: "varchar", nullable: false }) + type: string; + + @Column({ name: "is_active", type: "boolean", default: true }) + isActive: boolean; + + @OneToMany(() => Address, (address) => address.type) + address: Address; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/address/address-type.service.ts b/packages/crudx/demo/crudx-demo/src/app/address/address-type.service.ts new file mode 100644 index 000000000..55ba89983 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/address/address-type.service.ts @@ -0,0 +1,15 @@ +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { ValidationError } from "class-validator"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +import { AddressType } from "./address-type.entity"; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class AddressTypeService extends TypeOrmCrudService { + constructor(@InjectRepository(AddressType) readonly repo) { + super(repo); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/address/address.controller.spec.ts b/packages/crudx/demo/crudx-demo/src/app/address/address.controller.spec.ts new file mode 100644 index 000000000..52749a945 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/address/address.controller.spec.ts @@ -0,0 +1,129 @@ +import { faker } from "@faker-js/faker"; +import { INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import request from "supertest"; +import { FindManyOptions } from "typeorm"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; +import { User } from "../user/user.entity"; +import { UserService } from "../user/user.service"; + +import { AddressType } from "./address-type.entity"; +import { Address } from "./address.entity"; + +describe("AddressControllerTest", () => { + let app: INestApplication; + let user: User; + let service: UserService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + + app = module.createNestApplication(); + service = module.get(UserService); + + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + user = await getOneUser(); + + Address.clear(); + + const homeType: AddressType = await AddressType.create({ + type: "Home", + }).save(); + + const workType: AddressType = await AddressType.create({ + type: "work", + }).save(); + + for (let i = 0; i < 3; i++) { + await Address.create({ + city: faker.location.city(), + state: faker.location.state({ abbreviated: true }), + street: faker.location.streetAddress(), + number: faker.number.int({ max: 100 }), + userId: user.id, + typeId: i % 2 == 0 ? homeType.id : workType.id, + isActive: true, + }).save(); + } + + for (let i = 0; i < 10; i++) { + await Address.create({ + city: faker.location.city(), + state: faker.location.state({ abbreviated: true }), + street: faker.location.streetAddress(), + number: faker.number.int({ max: 100 }), + userId: user.id, + typeId: i % 2 == 0 ? homeType.id : workType.id, + isActive: false, + }).save(); + } + }); + + afterAll(async () => { + await app.close(); + }); + + it("Should GET with filter by active status only", async () => { + return request(app.getHttpServer()) + .get(`/users/${user.id}/addresses`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.length).toEqual(3); + }); + }); + + it("Should GET without userId and typeId fields (filters)", async () => { + return request(app.getHttpServer()) + .get(`/users/${user.id}/addresses`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + res.body.forEach((address) => { + expect(address.userId).toBeUndefined(); + expect(address.typeId).toBeUndefined(); + }); + }); + }); + + it("Should GET with JOIN relations: type (address)", async () => { + return request(app.getHttpServer()) + .get(`/users/${user.id}/addresses`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + res.body.forEach((address) => { + expect(address.type).toBeDefined(); + expect(address.type).toBeDefined(); + }); + }); + }); + + async function getOneUser(): Promise { + const user = ( + await service.find({ + take: 1, + relations: { contracts: true }, + }) + ).at(0); + + if (user === undefined) { + const id = uuidv4(); + const usr = User.create({ + email: `${id}-sample@email.com`, + password: "1234!@#$", + }); + + return await usr.save({ reload: true }); + } + + return user; + } +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/address/address.controller.ts b/packages/crudx/demo/crudx-demo/src/app/address/address.controller.ts new file mode 100644 index 000000000..f7270c49a --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/address/address.controller.ts @@ -0,0 +1,40 @@ +import { Crud, CrudController } from "@2amtech/crudx"; +import { Controller } from "@nestjs/common"; + +import { Address } from "./address.entity"; +import { AddressService } from "./address.service"; + +@Crud({ + model: { + type: Address, + }, + params: { + userId: { + type: "uuid", + field: "userId", + }, + }, + query: { + exclude: ["userId", "typeId"], + join: { + type: { + allow: ["id", "type"], + required: true, + eager: true, + }, + }, + filter: { + isActive: { + $eq: true, + }, + }, + }, +}) +@Controller("/users/:userId/addresses") +export class AddressController implements CrudController
{ + constructor(public service: AddressService) {} + + get base(): CrudController
{ + return this; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/address/address.entity.ts b/packages/crudx/demo/crudx-demo/src/app/address/address.entity.ts new file mode 100644 index 000000000..62d011c7d --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/address/address.entity.ts @@ -0,0 +1,59 @@ +import { + BaseEntity, + Column, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from "typeorm"; +import { UUID } from "typeorm/driver/mongodb/bson.typings"; + +import { User } from "../user/user.entity"; + +import { AddressType } from "./address-type.entity"; + +@Entity() +export class Address extends BaseEntity { + @PrimaryGeneratedColumn("uuid") + id: number; + + @Column({ type: "varchar", nullable: false }) + street: string; + + @Column({ type: "int", nullable: true }) + number: number; + + @Column({ type: "varchar", nullable: false }) + city: string; + + @Column({ type: "varchar", nullable: false, length: 2 }) + state: string; + + @Column({ name: "user_id", type: "varchar", nullable: false }) + userId: UUID; + + @Column({ name: "is_active", type: "boolean", default: true }) + isActive: boolean; + + @Column({ name: "type_id", type: "int", nullable: false }) + typeId: number; + + @ManyToOne(() => User, (user) => user.id) + @JoinColumn({ + name: "user_id", + referencedColumnName: "id", + foreignKeyConstraintName: "address_user", + }) + user: User; + + @ManyToOne(() => AddressType, (addressType) => addressType.id, { + cascade: true, + onDelete: "CASCADE", + }) + @JoinColumn({ + name: "type_id", + referencedColumnName: "id", + foreignKeyConstraintName: "address_addresstype", + }) + type: AddressType; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/address/address.module.ts b/packages/crudx/demo/crudx-demo/src/app/address/address.module.ts new file mode 100644 index 000000000..adf350ff9 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/address/address.module.ts @@ -0,0 +1,19 @@ +import { Module } from "@nestjs/common"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { AddressType } from "./address-type.entity"; +import { AddressTypeService } from "./address-type.service"; +import { AddressController } from "./address.controller"; +import { Address } from "./address.entity"; +import { AddressService } from "./address.service"; + +@Module({ + imports: [ + TypeOrmModule.forFeature([Address]), + TypeOrmModule.forFeature([AddressType]), + ], + controllers: [AddressController], + providers: [AddressService, AddressTypeService], + exports: [AddressService, AddressTypeService], +}) +export class AddressModule {} diff --git a/packages/crudx/demo/crudx-demo/src/app/address/address.service.ts b/packages/crudx/demo/crudx-demo/src/app/address/address.service.ts new file mode 100644 index 000000000..0fc3d396a --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/address/address.service.ts @@ -0,0 +1,15 @@ +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { ValidationError } from "class-validator"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +import { Address } from "./address.entity"; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class AddressService extends TypeOrmCrudService
{ + constructor(@InjectRepository(Address) readonly repo) { + super(repo); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/app.controller.spec.ts b/packages/crudx/demo/crudx-demo/src/app/app.controller.spec.ts new file mode 100644 index 000000000..e0be38fa7 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/app.controller.spec.ts @@ -0,0 +1,22 @@ +import { Test, TestingModule } from "@nestjs/testing"; + +import { AppController } from "./app.controller"; +import { AppService } from "./app.service"; + +describe("AppController", () => { + let app: TestingModule; + + beforeAll(async () => { + app = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }).compile(); + }); + + describe("getData", () => { + it('should return "Hello API"', () => { + const appController = app.get(AppController); + expect(appController.getData()).toEqual({ message: "Hello API" }); + }); + }); +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/app.controller.ts b/packages/crudx/demo/crudx-demo/src/app/app.controller.ts new file mode 100644 index 000000000..5b53d5269 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/app.controller.ts @@ -0,0 +1,13 @@ +import { Controller, Get } from "@nestjs/common"; + +import { AppService } from "./app.service"; + +@Controller() +export class AppController { + constructor(private readonly appService: AppService) {} + + @Get() + getData() { + return this.appService.getData(); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/app.module.ts b/packages/crudx/demo/crudx-demo/src/app/app.module.ts new file mode 100644 index 000000000..dd438c408 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/app.module.ts @@ -0,0 +1,47 @@ +import { Module } from "@nestjs/common"; +import { ConfigModule, ConfigService } from "@nestjs/config"; +import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm"; + +import { databaseConfig } from "../config"; + +import { AddressModule } from "./address/address.module"; +import { AppController } from "./app.controller"; +import { AppService } from "./app.service"; +import { AuthModule } from "./auth/auth.module"; +import { ClaimModule } from "./claims/claim.module"; +import { ContractModule } from "./contract/contract.module"; +import { PhoneModule } from "./phone/phone.module"; +import { UserModule } from "./user/user.module"; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + load: [databaseConfig], + envFilePath: ['.env.testing'] + }), + TypeOrmModule.forRootAsync({ + useFactory: (config: ConfigService) => + { + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }, + inject: [ConfigService], + }), + UserModule, + PhoneModule, + AuthModule, + ContractModule, + ClaimModule, + AddressModule, + ], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff --git a/packages/crudx/demo/crudx-demo/src/app/app.service.spec.ts b/packages/crudx/demo/crudx-demo/src/app/app.service.spec.ts new file mode 100644 index 000000000..caff200d5 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/app.service.spec.ts @@ -0,0 +1,21 @@ +import { Test } from "@nestjs/testing"; + +import { AppService } from "./app.service"; + +describe("AppService", () => { + let service: AppService; + + beforeAll(async () => { + const app = await Test.createTestingModule({ + providers: [AppService], + }).compile(); + + service = app.get(AppService); + }); + + describe("getData", () => { + it('should return "Hello API"', () => { + expect(service.getData()).toEqual({ message: "Hello API" }); + }); + }); +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/app.service.ts b/packages/crudx/demo/crudx-demo/src/app/app.service.ts new file mode 100644 index 000000000..63110fb92 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/app.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from "@nestjs/common"; + +@Injectable() +export class AppService { + getData(): { message: string } { + return { message: "Hello API" }; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.spec.ts b/packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.spec.ts new file mode 100644 index 000000000..be8bffced --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.spec.ts @@ -0,0 +1,102 @@ +import { INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import request from "supertest"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; +import { User } from "../user/user.entity"; +import { UserService } from "../user/user.service"; +import { AuthService } from "./auth.service"; + +describe("Authcontroller", () => { + let app: INestApplication; + let user: User; + let userService: UserService; + let authService: AuthService; + + const email = `${uuidv4()}testing@emailcom`; + const password = "1234!@#$"; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + + app = module.createNestApplication(); + userService = module.get(UserService); + authService = module.get(AuthService); + + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + user = (await userService.find({ take: 1 })).at(0); + user.email = email; + user.password = password; + await user.save(); + }); + + afterAll(async () => { + await app.close(); + }); + + it("Should authenticate and return token", () => { + expect(user.id).toBeDefined(); + }); + + it("POST Should authenticate user and return token", async () => { + return request(app.getHttpServer()) + .post("/auth/sign-in") + .send({ + email: email, + pass: password, + }) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.access_token).toBeDefined(); + }); + }); + + it("POST shoud fail authentication TInput extends AuthService = anyredentials", async () => { + return request(app.getHttpServer()) + .post("/auth/sign-in") + .send({ + email: email, + pass: "xxx", + }) + .expect("Content-Type", /json/) + .expect(401) + .expect((res) => { + expect(res.body.access_token).toBeUndefined(); + expect(res.body.message).toEqual("Unauthorized"); + }); + }); + + it("GET should unauthorize access to /me rout when not authenticated", async () => { + return request(app.getHttpServer()) + .get("/me") + .expect("Content-Type", /json/) + .expect(401) + .expect((res) => { + expect(res.body.message).toEqual("Unauthorized"); + }); + }); + + it("GET /me should return authenticated user info", async () => { + const credentials = await authService.signIn(email, password); + expect(credentials.access_token).toBeDefined(); + + return request(app.getHttpServer()) + .get("/me") + .set("Authorization", `Bearer ${credentials.access_token}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + const body = res.body; + + expect(body.email).toEqual(email); + expect(body.id).toEqual(user.id); + }); + }); +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.ts b/packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.ts new file mode 100644 index 000000000..71c6fb682 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/auth/auth.controller.ts @@ -0,0 +1,21 @@ +import { + Body, + Controller, + HttpCode, + HttpStatus, + Param, + Post, +} from "@nestjs/common"; + +import { AuthService } from "./auth.service"; + +@Controller("auth") +export class AuthController { + constructor(private authService: AuthService) {} + + @HttpCode(HttpStatus.OK) + @Post("sign-in") + async signIn(@Body() body: Record) { + return this.authService.signIn(body.email, body.pass); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/auth/auth.guard.ts b/packages/crudx/demo/crudx-demo/src/app/auth/auth.guard.ts new file mode 100644 index 000000000..7e6968067 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/auth/auth.guard.ts @@ -0,0 +1,53 @@ +import { getAction, getFeature } from "@2amtech/crudx"; +import { + CanActivate, + ExecutionContext, + Injectable, + UnauthorizedException, +} from "@nestjs/common"; +import { Reflector } from "@nestjs/core"; +import { JwtService } from "@nestjs/jwt"; + +import { jwtConstants } from "./constants"; + +@Injectable() +export class AuthGuard implements CanActivate { + constructor(private jwtService: JwtService, private reflector: Reflector) {} + + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const token = this.extractTokenFromHeader(request); + if (!token) { + throw new UnauthorizedException(); + } + try { + const payload = await this.jwtService.verifyAsync(token, { + secret: jwtConstants.secret, + }); + + request["user"] = payload; + } catch { + throw new UnauthorizedException(); + } + + // up here, it's a simple auth guard with jwt + + // + + const handler = context.getHandler(); + const controller = context.getClass(); + + const feature = getFeature(controller); + const action = getAction(handler); + + console.log(`${feature}-${action}`); // e.g "GetMyInfo-Read-One" + // write custom acl rule + + return true; + } + + private extractTokenFromHeader(request: Request): string | undefined { + const [type, token] = request.headers["authorization"]?.split(" ") ?? []; + return type === "Bearer" ? token : undefined; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/auth/auth.module.ts b/packages/crudx/demo/crudx-demo/src/app/auth/auth.module.ts new file mode 100644 index 000000000..98e722ce9 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/auth/auth.module.ts @@ -0,0 +1,28 @@ +import { Module } from "@nestjs/common"; +import { JwtModule } from "@nestjs/jwt"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { User } from "../user/user.entity"; +import { UserModule } from "../user/user.module"; +import { UserService } from "../user/user.service"; + +import { AuthController } from "./auth.controller"; +import { AuthService } from "./auth.service"; +import { jwtConstants } from "./constants"; +import { MeController } from "./me.controller"; + +@Module({ + imports: [ + UserModule, + TypeOrmModule.forFeature([User]), + JwtModule.register({ + global: true, + secret: jwtConstants.secret, + signOptions: { expiresIn: "60s" }, + }), + ], + controllers: [AuthController, MeController], + providers: [AuthService, UserService], + exports: [AuthService], +}) +export class AuthModule {} diff --git a/packages/crudx/demo/crudx-demo/src/app/auth/auth.service.ts b/packages/crudx/demo/crudx-demo/src/app/auth/auth.service.ts new file mode 100644 index 000000000..a0bb8656c --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/auth/auth.service.ts @@ -0,0 +1,24 @@ +import { Injectable, UnauthorizedException } from "@nestjs/common"; +import { JwtService } from "@nestjs/jwt"; +import * as bcrypt from "bcryptjs"; + +import { UserService } from "../user/user.service"; + +@Injectable() +export class AuthService { + constructor(private service: UserService, private jwtService: JwtService) {} + + async signIn(email: string, pass: string): Promise<{ access_token: string }> { + const user = await this.service.findOne({ where: { email: email } }); + + if (!bcrypt.compareSync(pass, user?.password)) { + throw new UnauthorizedException(); + } + + const payload = { sub: user.id, username: user.email }; + + return { + access_token: await this.jwtService.signAsync(payload), + }; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/auth/constants.ts b/packages/crudx/demo/crudx-demo/src/app/auth/constants.ts new file mode 100644 index 000000000..c1d1facb0 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/auth/constants.ts @@ -0,0 +1,3 @@ +export const jwtConstants = { + secret: "some well defined secret key", +}; diff --git a/packages/crudx/demo/crudx-demo/src/app/auth/me.controller.ts b/packages/crudx/demo/crudx-demo/src/app/auth/me.controller.ts new file mode 100644 index 000000000..786e5f938 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/auth/me.controller.ts @@ -0,0 +1,38 @@ +import { Crud, CrudAuth, CrudController, Feature } from "@2amtech/crudx"; +import { Controller, UseGuards, UseInterceptors } from "@nestjs/common"; + +import { User } from "../user/user.entity"; +import { UserService } from "../user/user.service"; + +import { AuthGuard } from "./auth.guard"; + +@Crud({ + model: { + type: User, + }, + routes: { + only: ["getOneBase"], + }, + params: { + id: { + primary: true, + disabled: true, + }, + }, +}) +@CrudAuth({ + property: "user", + filter: (user: any) => ({ + id: user.sub, + }), +}) +@Controller("me") +@Feature("GetMyInfo") +@UseGuards(AuthGuard) +export class MeController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.spec.ts b/packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.spec.ts new file mode 100644 index 000000000..3fcf350c9 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.spec.ts @@ -0,0 +1,270 @@ +import { QueryBuilderService } from "@2amtech/crudx"; +import { INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import request from "supertest"; +import { FindManyOptions } from "typeorm"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; +import { Contract } from "../contract/contract.entity"; +import { User } from "../user/user.entity"; +import { UserService } from "../user/user.service"; + +import { Claim } from "./claim.entity"; + +describe("ClaimController demo", () => { + let app: INestApplication; + let user: User; + let contract: Contract; + + let service: UserService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + service = module.get(UserService); + + user = await getOneUser(); + contract = await getOneContract(); + await populateClaims(); + + await app.init(); + }); + + afterAll(async () => { + await app.close(); + }); + + it("GET Should list all contract's claims", async () => { + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.data).toHaveLength(5); + }); + }); + + it("GET Should get only fields described on query allow", async () => { + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + res.body.data.forEach((claim) => { + expect(claim.id).toBeDefined(); + expect(claim.amount).toBeDefined(); + expect(claim.date).toBeDefined(); + expect(claim.contractId).toBeUndefined(); + expect(claim.user).toBeUndefined(); + }); + }); + }); + + it("GET Should not get fields described on query exclude", async () => { + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + res.body.data.forEach((claim) => { + expect(claim.user).toBeUndefined(); + }); + }); + }); + + it("GET Should sort response by id DESC", async () => { + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + const first = res.body.data.at(0); + const last = res.body.data.at(-1); + + expect(first.id).toBeGreaterThan(last.id); + }); + }); + + // request query params tests + + it("GET only claims with exact amount", async () => { + const qb = QueryBuilderService.create(); + + const queryString = qb + .setFilter({ field: "amount", operator: "$eq", value: 100 }) + .query(); + + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims?${queryString}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + res.body.data.forEach((claim) => { + expect(claim.amount).toEqual(100); + }); + }); + }); + + it("GET only claims with date greater or equal than", async () => { + const qb = QueryBuilderService.create(); + + const queryString = qb + .setFilter({ field: "date", operator: "$gte", value: "2024-02-21" }) + .setLimit(2) + .query(); + + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims?${queryString}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.data).toHaveLength(2); + }); + }); + + it("GET only claims with date between", async () => { + const qb = QueryBuilderService.create(); + + const queryString = qb + .setFilter({ + field: "date", + operator: "$between", + value: "2024-02-20,2024-02-21", + }) + .setLimit(4) + .query(); + + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims?${queryString}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.data).toHaveLength(4); + }); + }); + + it("GET only field claim amount", async () => { + const qb = QueryBuilderService.create(); + + const queryString = qb.select(["amount"]).query(); + + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims?${queryString}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + res.body.data.forEach((claim) => { + expect(claim.amount).toBeDefined(); + expect(claim.date).toBeUndefined(); + expect(claim.contractId).toBeUndefined(); + }); + }); + }); + + it("GET by search condition", async () => { + const qb = QueryBuilderService.create(); + + const queryString = qb + .search({ amount: "200", date: { $gte: "2024-02-21" } }) + .setLimit(3) + .query(); + + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims?${queryString}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.count).toEqual(3); + + res.body.data.forEach((claim) => { + expect(claim.amount).toEqual(200); + }); + }); + }); + + it("GET with contract relation", async () => { + const qb = QueryBuilderService.create(); + + const queryString = qb + .setJoin({ field: "contract", select: ["contractNumber"] }) + .query(); + + return request(app.getHttpServer()) + .get(`/contracts/${contract.id}/claims?${queryString}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + res.body.data.forEach((claim) => { + expect(claim.contract).toBeDefined(); + expect(claim.contract.contractNumber).toBeDefined(); + expect(claim.contract.userId).toBeUndefined(); + expect(claim.contract.startedAt).toBeUndefined(); + expect(claim.contract.note).toBeUndefined(); + }); + }); + }); + + async function populateClaims(): Promise { + Claim.clear(); + const amount1 = 100; + const date1 = "2024-02-20"; + + const amount2 = 200; + const date2 = "2024-02-21"; + + for (let i = 0; i < 10; i++) { + await Claim.create({ + contractId: contract.id, + amount: amount1, + date: date1, + }).save(); + + await Claim.create({ + contractId: contract.id, + amount: amount2, + date: date2, + }).save(); + } + + return Boolean; + } + + async function getOneUser(): Promise { + const user = ( + await service.find({ + take: 1, + relations: { contracts: true }, + }) + ).at(0); + + if (user === undefined) { + const id = uuidv4(); + const usr = User.create({ + email: `${id}-sample@email.com`, + password: "1234!@#$", + }); + + return await usr.save({ reload: true }); + } + + return user; + } + + async function getOneContract(): Promise { + if (user.contracts.at(0) !== undefined) { + return user.contracts.at(0); + } + + return Contract.create({ + userId: user.id, + contractNumber: uuidv4(), + startedAt: "2024-02-14", + }).save({ reload: true }); + } +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.ts b/packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.ts new file mode 100644 index 000000000..e516313cb --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/claims/claim.controller.ts @@ -0,0 +1,44 @@ +import { Crud, CrudController } from "@2amtech/crudx"; +import { Controller } from "@nestjs/common"; + +import { Claim } from "./claim.entity"; +import { ClaimService } from "./claim.service"; + +@Crud({ + model: { + type: Claim, + }, + params: { + contractId: { + type: "number", + field: "contractId", + }, + }, + query: { + allow: ["id", "amount", "date"], + persist: ["id"], + limit: 5, + maxLimit: 5, + alwaysPaginate: true, + sort: [ + { + field: "id", + order: "DESC", + }, + ], + cache: 2000, + join: { + contract: { + eager: true, + }, + }, + }, +}) +@Controller("/contracts/:contractId/claims") +export class ClaimController implements CrudController { + constructor(public service: ClaimService) {} + + get base(): CrudController { + return this; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/claims/claim.entity.ts b/packages/crudx/demo/crudx-demo/src/app/claims/claim.entity.ts new file mode 100644 index 000000000..9c030eca8 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/claims/claim.entity.ts @@ -0,0 +1,35 @@ +import { + BaseEntity, + Column, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from "typeorm"; + +import { Contract } from "../contract/contract.entity"; + +@Entity() +export class Claim extends BaseEntity { + @PrimaryGeneratedColumn() + id: number; + + @Column({ name: "amount", type: "double" }) + amount: number; + + @Column({ name: "date", type: "date" }) + date: Date; + + @Column({ name: "contractId", type: "int" }) + contractId: number; + + @ManyToOne((type) => Contract, (contract) => contract.id, { + cascade: true, + onDelete: "CASCADE", + }) + @JoinColumn({ + referencedColumnName: "id", + name: "contractId", + }) + contract: Contract; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/claims/claim.module.ts b/packages/crudx/demo/crudx-demo/src/app/claims/claim.module.ts new file mode 100644 index 000000000..ec6b93914 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/claims/claim.module.ts @@ -0,0 +1,14 @@ +import { Module } from "@nestjs/common"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { ClaimController } from "./claim.controller"; +import { Claim } from "./claim.entity"; +import { ClaimService } from "./claim.service"; + +@Module({ + imports: [TypeOrmModule.forFeature([Claim])], + providers: [ClaimService], + controllers: [ClaimController], + exports: [ClaimService], +}) +export class ClaimModule {} diff --git a/packages/crudx/demo/crudx-demo/src/app/claims/claim.service.ts b/packages/crudx/demo/crudx-demo/src/app/claims/claim.service.ts new file mode 100644 index 000000000..c7b22f685 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/claims/claim.service.ts @@ -0,0 +1,15 @@ +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { ValidationError } from "class-validator"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +import { Claim } from "./claim.entity"; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class ClaimService extends TypeOrmCrudService { + constructor(@InjectRepository(Claim) readonly repo) { + super(repo); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.spec.ts b/packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.spec.ts new file mode 100644 index 000000000..8d40c2dbc --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.spec.ts @@ -0,0 +1,97 @@ +import { INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import request from "supertest"; +import { FindManyOptions } from "typeorm"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; +import { User } from "../user/user.entity"; +import { UserService } from "../user/user.service"; + +import { Contract } from "./contract.entity"; +import { ContractService } from "./contract.service"; + +describe("ContractController demo", () => { + let app: INestApplication; + let service: UserService; + let contractService: ContractService; + let user: User; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + + service = module.get(UserService); + contractService = module.get(ContractService); + user = await getOneUser(); + + await app.init(); + }); + + afterAll(async () => { + await app.close(); + }); + + it("DELETE Should return 404 on delete route", async () => { + const contract = await getOneContract(); + + return request(app.getHttpServer()) + .delete(`/users/${user.id}/contracts/${contract.id}`) + .expect(404); + }); + + it("POST should create contract and respond with serialize dto", async () => { + return request(app.getHttpServer()) + .post(`/users/${user.id}/contracts`) + .send({ + contractNumber: uuidv4(), + startedAt: "2024-02-14", + }) + .expect(201) + .expect((res) => { + expect(res.body.id).toBeDefined(); + expect(res.body.contractNumber).toBeDefined(); + expect(res.body.startedAt).toBeDefined(); + expect(res.body.note).toBeDefined(); + expect(res.body.userId).toBeUndefined(); + }); + }); + + async function getOneUser(): Promise { + const user = ( + await service.find({ + take: 1, + relations: { contracts: true }, + }) + ).at(0); + + if (user === undefined) { + const id = uuidv4(); + const usr = User.create({ + email: `${id}-sample@email.com`, + password: "1234!@#$", + }); + + return await usr.save({ reload: true }); + } + + return user; + } + + async function getOneContract(): Promise { + if (user.contracts.at(0) !== undefined) { + return user.contracts.at(0); + } + + return Contract.create({ + userId: user.id, + contractNumber: uuidv4(), + startedAt: "2024-02-14", + }).save({ reload: true }); + } +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.ts b/packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.ts new file mode 100644 index 000000000..671d0b7b9 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/contract/contract.controller.ts @@ -0,0 +1,36 @@ +import { Crud, CrudController, SerializeOptions } from "@2amtech/crudx"; +import { Controller, Type } from "@nestjs/common"; + +import { ContractCreateDto } from "./contract.create.dto"; +import { ContractCreateResponseDto } from "./contract.create.response.dto"; +import { Contract } from "./contract.entity"; +import { ContractService } from "./contract.service"; + +@Crud({ + model: { + type: Contract, + }, + dto: { + create: ContractCreateDto, + }, + routes: { + exclude: ["deleteOneBase"], + }, + params: { + userId: { + field: "userId", + type: "uuid", + }, + }, + serialize: { + create: ContractCreateResponseDto, + }, +}) +@Controller("/users/:userId/contracts") +export class ContractController implements CrudController { + constructor(public service: ContractService) {} + + get base(): CrudController { + return this; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/contract/contract.create.dto.ts b/packages/crudx/demo/crudx-demo/src/app/contract/contract.create.dto.ts new file mode 100644 index 000000000..2114f793d --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/contract/contract.create.dto.ts @@ -0,0 +1,27 @@ +import { CrudValidationGroups } from "@2amtech/crudx"; +import { + IsDateString, + IsNotEmpty, + IsOptional, + IsString, + MaxLength, +} from "class-validator"; +import { Column } from "typeorm"; + +const { CREATE, UPDATE } = CrudValidationGroups; + +export class ContractCreateDto { + @MaxLength(60) + @Column({ name: "contractNumber", type: "varchar", length: 60 }) + contractNumber: string; + + @IsNotEmpty() + @IsDateString() + @Column({ name: "startedAt", type: "date" }) + startedAt: Date; + + @Column({ name: "note", type: "varchar", length: "11", default: "" }) + @IsOptional({ groups: [UPDATE] }) + @IsString() + note: string; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/contract/contract.create.response.dto.ts b/packages/crudx/demo/crudx-demo/src/app/contract/contract.create.response.dto.ts new file mode 100644 index 000000000..aa1f7226b --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/contract/contract.create.response.dto.ts @@ -0,0 +1,12 @@ +import { Exclude } from "class-transformer"; + +export class ContractCreateResponseDto { + readonly id: number; + + @Exclude() + readonly userId: string; + + readonly contractNumber: string; + readonly startedAt: string; + readonly note: string; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/contract/contract.entity.ts b/packages/crudx/demo/crudx-demo/src/app/contract/contract.entity.ts new file mode 100644 index 000000000..1838dd05f --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/contract/contract.entity.ts @@ -0,0 +1,52 @@ +import { CrudValidationGroups } from "@2amtech/crudx"; +import { Exclude } from "class-transformer"; +import { + IsDateString, + IsNotEmpty, + IsOptional, + IsString, + MaxLength, +} from "class-validator"; +import { + BaseEntity, + Column, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from "typeorm"; + +import { User } from "../user/user.entity"; + +const { CREATE, UPDATE } = CrudValidationGroups; + +@Entity() +export class Contract extends BaseEntity { + @PrimaryGeneratedColumn() + id: number; + + @Column({ name: "userId" }) + @Exclude({ toPlainOnly: true }) + userId: string; + + @MaxLength(60) + @Column({ name: "contractNumber", type: "varchar", length: 60 }) + contractNumber: string; + + @IsNotEmpty() + @IsDateString() + @Column({ name: "startedAt", type: "date" }) + startedAt: Date; + + @Column({ name: "note", type: "varchar", length: "11", default: "" }) + @IsOptional({ groups: [UPDATE] }) + @IsString() + note: string; + + @ManyToOne((type) => User, (user) => user.id) + @JoinColumn({ + referencedColumnName: "id", + foreignKeyConstraintName: "contact_user", + }) + user: User; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/contract/contract.module.ts b/packages/crudx/demo/crudx-demo/src/app/contract/contract.module.ts new file mode 100644 index 000000000..4aa8c854c --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/contract/contract.module.ts @@ -0,0 +1,14 @@ +import { Module } from "@nestjs/common"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { ContractController } from "./contract.controller"; +import { Contract } from "./contract.entity"; +import { ContractService } from "./contract.service"; + +@Module({ + imports: [TypeOrmModule.forFeature([Contract])], + providers: [ContractService], + controllers: [ContractController], + exports: [ContractService], +}) +export class ContractModule {} diff --git a/packages/crudx/demo/crudx-demo/src/app/contract/contract.service.ts b/packages/crudx/demo/crudx-demo/src/app/contract/contract.service.ts new file mode 100644 index 000000000..f33f745c4 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/contract/contract.service.ts @@ -0,0 +1,15 @@ +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { ValidationError } from "class-validator"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +import { Contract } from "./contract.entity"; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class ContractService extends TypeOrmCrudService { + constructor(@InjectRepository(Contract) readonly repo) { + super(repo); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.spec.ts b/packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.spec.ts new file mode 100644 index 000000000..5cbde161c --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.spec.ts @@ -0,0 +1,145 @@ +import { INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import request from "supertest"; +import { FindManyOptions } from "typeorm"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; +import { User } from "../user/user.entity"; +import { UserService } from "../user/user.service"; + +import { PhoneDto } from "./phone.dto"; +import { Phone } from "./phone.entity"; + +describe("PhoneController - Overriden Routes", () => { + let app: INestApplication; + let service: UserService; + let user: User; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + + service = module.get(UserService); + user = await getOneUser(); + + await app.init(); + }); + + afterAll(async () => { + await app.close(); + }); + + it("POST create one user related resource (phone)", async () => { + const phoneNumber = "999999999"; + + return request(app.getHttpServer()) + .post("/users/" + user.id + "/phones") + .send({ + phoneNumber: phoneNumber, + }) + .expect(201) + .expect((res) => { + expect(res.body.phoneNumber).toEqual(phoneNumber); + expect(res.body.customProp).toEqual("custom added property"); + }); + }); + + it("POST bulk create related resource (phone)", async () => { + const bulk = [ + { + phoneNumber: "000x", + }, + { + phoneNumber: "000y", + }, + ]; + + return request(app.getHttpServer()) + .post(`/users/${user.id}/phones/bulk`) + .send({ bulk: bulk }) + .expect("Content-Type", /json/) + .expect(201) + .expect((res) => { + expect(res.body.at(0).phoneNumber).toEqual("000x"); + expect(res.body.at(0).customProp).toEqual("custom added property"); + expect(res.body.at(1).phoneNumber).toEqual("000y"); + expect(res.body.at(1).customProp).toEqual("custom added property"); + }); + }); + + it("GET Shoud get all user related resources (phone)", async () => { + return request(app.getHttpServer()) + .get(`/users/${user.id}/phones`) + .expect(200) + .expect((res) => { + user.phones.forEach((userPhone) => { + expect( + res.body.data.filter( + (phone) => phone.phoneNumber === userPhone.phoneNumber + ) + ).toBeDefined(); + }); + res.body.data.forEach((response) => { + expect(response.customProp).toEqual("custom added property"); + }); + }); + }); + + it("GET one user related resoruce (phone)", async () => { + const phoneNumber = "000000000"; + + const phone = new Phone(); + phone.phoneNumber = phoneNumber; + phone.userId = user.id; + await phone.save({ reload: true }); + + return request(app.getHttpServer()) + .get(`/users/${user.id}/phones/${phone.id}`) + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.phoneNumber).toEqual(phoneNumber); + expect(res.body.customProp).toEqual("custom added property"); + }); + }); + + it("DELETE user related resources (phone)", async () => { + const phoneNumber = "000000000"; + + const phone = new Phone(); + phone.phoneNumber = phoneNumber; + phone.userId = user.id; + await phone.save({ reload: true }); + + return request(app.getHttpServer()) + .delete(`/users/${user.id}/phones/${phone.id}`) + .expect(200); + }); + + async function getOneUser(): Promise { + const user = ( + await service.find({ + take: 1, + relations: { phones: true }, + }) + ).at(0); + + if (user === undefined) { + const id = uuidv4(); + const usr = User.create({ + email: `${id}-sample@email.com`, + password: "1234!@#$", + }); + + return await usr.save({ reload: true }); + } + + return user; + } +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.ts b/packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.ts new file mode 100644 index 000000000..e9900515d --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/phone/phone.controller.ts @@ -0,0 +1,98 @@ +import { + CreateManyDto, + Crud, + CrudController, + CrudRequest, + GetManyDefaultResponse, + Override, + ParsedBody, + ParsedRequest, +} from "@2amtech/crudx"; +import { Controller } from "@nestjs/common"; + +import { PhoneDto } from "./phone.dto"; +import { Phone } from "./phone.entity"; +import { PhoneService } from "./phone.service"; + +@Crud({ + model: { + type: Phone, + }, + dto: { + create: PhoneDto, + update: PhoneDto, + }, + params: { + id: { + field: "id", + type: "uuid", + primary: true, + }, + userId: { + field: "userId", + type: "uuid", + }, + }, + query: { + limit: 25, + cache: 2000, + alwaysPaginate: true, + }, +}) +@Controller("/users/:userId/phones") +export class PhoneController implements CrudController { + constructor(public service: PhoneService) {} + + get base(): CrudController { + return this; + } + + @Override() + async createOne( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto + ): Promise { + const response = await Promise.resolve(this.base.createOneBase(req, dto)); + + response["customProp"] = "custom added property"; + + return response; + } + + @Override() + async createMany( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto: CreateManyDto + ): Promise { + const response = await Promise.resolve(this.base.createManyBase(req, dto)); + response.forEach((res) => { + res["customProp"] = "custom added property"; + }); + + return response; + } + + @Override() + async getOne(@ParsedRequest() req: CrudRequest): Promise { + const response = await Promise.resolve(this.base.getOneBase(req)); + + response["customProp"] = "custom added property"; + + return response; + } + + @Override() + async getMany( + @ParsedRequest() req: CrudRequest + ): Promise | Phone[]> { + const response = >( + await this.base.getManyBase(req) + ); + + response.data.forEach((res) => { + res["customProp"] = "custom added property"; + }); + + return response; + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/phone/phone.dto.ts b/packages/crudx/demo/crudx-demo/src/app/phone/phone.dto.ts new file mode 100644 index 000000000..b54ddbed2 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/phone/phone.dto.ts @@ -0,0 +1,20 @@ +import { CrudValidationGroups } from "@2amtech/crudx"; +import { Exclude, Expose } from "class-transformer"; +import { + IsNotEmpty, + IsString, + ValidateIf, + isEmpty, + isNotEmpty, + isString, + isUUID, +} from "class-validator"; + +const { CREATE } = CrudValidationGroups; + +export class PhoneDto { + @IsNotEmpty() + @IsString() + @Expose() + phoneNumber: string; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/phone/phone.entity.ts b/packages/crudx/demo/crudx-demo/src/app/phone/phone.entity.ts new file mode 100644 index 000000000..7613350e3 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/phone/phone.entity.ts @@ -0,0 +1,32 @@ +import { Exclude } from "class-transformer"; +import { + BaseEntity, + Column, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from "typeorm"; + +import { User } from "../user/user.entity"; + +@Entity() +export class Phone extends BaseEntity { + @Exclude() + @PrimaryGeneratedColumn("uuid") + id: string; + + @Exclude({ toPlainOnly: true }) + @Column({ type: "varchar", nullable: false }) + userId: string; + + @Column({ type: "varchar", nullable: false }) + phoneNumber: string; + + @ManyToOne((type) => User, (user) => user.id) + @JoinColumn({ + referencedColumnName: "id", + foreignKeyConstraintName: "UserId", + }) + user: User; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/phone/phone.module.ts b/packages/crudx/demo/crudx-demo/src/app/phone/phone.module.ts new file mode 100644 index 000000000..513678ac2 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/phone/phone.module.ts @@ -0,0 +1,14 @@ +import { Module } from "@nestjs/common"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { PhoneController } from "./phone.controller"; +import { Phone } from "./phone.entity"; +import { PhoneService } from "./phone.service"; + +@Module({ + imports: [TypeOrmModule.forFeature([Phone])], + exports: [PhoneService], + providers: [PhoneService], + controllers: [PhoneController], +}) +export class PhoneModule {} diff --git a/packages/crudx/demo/crudx-demo/src/app/phone/phone.service.ts b/packages/crudx/demo/crudx-demo/src/app/phone/phone.service.ts new file mode 100644 index 000000000..a3924c90d --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/phone/phone.service.ts @@ -0,0 +1,15 @@ +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { ValidationError } from "class-validator"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +import { Phone } from "./phone.entity"; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class PhoneService extends TypeOrmCrudService { + constructor(@InjectRepository(Phone) readonly repo) { + super(repo); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user-email-already-exists.constraint.ts b/packages/crudx/demo/crudx-demo/src/app/user/user-email-already-exists.constraint.ts new file mode 100644 index 000000000..aaf9c86f3 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user-email-already-exists.constraint.ts @@ -0,0 +1,34 @@ +/* eslint-disable @typescript-eslint/no-explicit-any, import/named */ +import { Injectable } from "@nestjs/common"; +import { + registerDecorator, + ValidationOptions, + ValidatorConstraint, + ValidatorConstraintInterface, +} from "class-validator"; + +import { UserService } from "./user.service"; + +@ValidatorConstraint({ name: "isEmailUserAlreadyExist", async: true }) +@Injectable() +export class IsEmailUserAlreadyExistConstraint + implements ValidatorConstraintInterface +{ + constructor(protected readonly userService: UserService) {} + + async validate(text: string) { + return !(await this.userService.userExists({ email: text })); + } +} + +export function IsEmailUserAlreadyExist(validationOptions?: ValidationOptions) { + return function (object: any, propertyName: string) { + registerDecorator({ + target: object.constructor, + propertyName: propertyName, + options: validationOptions, + constraints: [], + validator: IsEmailUserAlreadyExistConstraint, + }); + }; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.controller.spec.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.controller.spec.ts new file mode 100644 index 000000000..6485fa63d --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.controller.spec.ts @@ -0,0 +1,226 @@ +import { INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import request from "supertest"; +import { FindManyOptions } from "typeorm"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; + +import { UserController } from "./user.controller"; +import { UserDto } from "./user.dto"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; +import { randomInt } from "crypto"; + +describe("UserController", () => { + let app: INestApplication; + let controller: UserController; + let service: UserService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + controller = module.get(UserController); + service = module.get(UserService); + }); + + afterAll(async () => { + await app.close(); + }); + + it("should be defined", () => { + expect(controller).toBeDefined(); + }); + + it("GET all users", async () => { + const users = await service.find( + { + take: 25, + relations: { + phones: false, + }, + } // app builds up with pagination enabled, loading first page only + ); + + return request(app.getHttpServer()) + .get("/users/") + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(200) + .then((res) => { + users.forEach((user) => { + expect(JSON.stringify(res.body)).toContain(user.id); + }); + }); + }); + + it("GET one user by id", async () => { + const user = (await service.find({ take: 1 })).at(0); + + return request(app.getHttpServer()) + .get(`/users/${user.id}`) + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(200) + .then((res) => { + expect(res.body.id).toEqual(user.id); + expect(res.body.email).toEqual(user.email); + }); + }); + + it("GET bad request, ID should be UUID", async () => { + return request(app.getHttpServer()) + .get("/users/some-invalid-id") + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(400) + .then((res) => { + expect(res.body.message).toEqual( + "Invalid param id. UUID string expected" + ); + }); + }); + + it("GET no found, ID not associated with user", async () => { + return request(app.getHttpServer()) + .get(`/users/${uuidv4()}`) + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(404); + }); + + it("POST create new user", async () => { + const userEmail = uuidv4() + "-my-entry@email.com"; + + const user = { + email: userEmail, + password: "1234!@#$", + }; + + return request(app.getHttpServer()) + .post("/users") + .send(user) + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(201) + .expect((res) => { + expect(res.body.email).toEqual(user.email); + }); + }); + + it("POST create user failure, email already exists", async () => { + const user = User.create({ + email: `invalid${randomInt(0, 9999)}@email.com`, + password: "1234!@#$", + }); + await user.save(); + + return request(app.getHttpServer()) + .post("/users") + .send({ + email: user.email, + password: "1234!@#$", + }) + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(400) + .expect((res) => { + expect(res.body.message).toEqual(["Email already exists"]); + }); + }); + + it("POST bulk create users", async () => { + const bulk = [ + { + email: uuidv4() + "-my-entry@email.com", + password: "1234!@#$", + }, + { + email: uuidv4() + "-my-entry@email.com", + password: "1234!@#$", + }, + ]; + + return request(app.getHttpServer()) + .post("/users/bulk") + .send({ + bulk: bulk, + }) + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(201) + .expect((res) => { + expect(res.body.at(0).email).toEqual(bulk.at(0).email); + expect(res.body.at(1).email).toEqual(bulk.at(1).email); + }); + }); + + it("PATCH updates user", async () => { + const user = (await service.find({ take: 1 })).at(0); + user.email = uuidv4() + "updated-resource@email.com"; + user.password = "1234!@#$"; + + return request(app.getHttpServer()) + .patch(`/users/${user.id}`) + .send(user) + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.email).toEqual(user.email); + }); + }); + + it("PUT replace user", async () => { + const user = (await service.find({ take: 1 })).at(0); + user.email = uuidv4() + "updated-resource@email.com"; + user.password = "1234!@#$"; + + return request(app.getHttpServer()) + .put(`/users/${user.id}`) + .send(user) + .set("Accept", "application/json") + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + expect(res.body.email).toEqual(user.email); + }); + }); + + it("DELETE user", async () => { + const user = User.create({ + id: uuidv4(), + email: `${uuidv4()}email@test.com`, + password: "1234!@#$", + }); + + await user.save({ reload: true }); + + return request(app.getHttpServer()) + .delete(`/users/${user.id}`) + .set("Accept", "application/json") + .expect(200); + }); + + it("GET should return emails list - custom added route", async () => { + const users = await service.find(); + + return request(app.getHttpServer()) + .get("/users/emails") + .expect("Content-Type", /json/) + .expect(200) + .expect((res) => { + users.forEach((user) => { + expect( + res.body.filter((userMail) => userMail.email === user.email) + ).toBeDefined(); + }); + }); + }); +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.controller.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.controller.ts new file mode 100644 index 000000000..3fc64b962 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.controller.ts @@ -0,0 +1,43 @@ +import { + Crud, + CrudController, + CrudRequest, + CrudRequestInterceptor, + ParsedRequest, +} from "@2amtech/crudx"; +import { Controller, Get, UseInterceptors } from "@nestjs/common"; + +import { UserDto } from "./user.dto"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; + +@Crud({ + model: { + type: User, + }, + dto: { + create: UserDto, + update: UserDto, + }, + params: { + id: { + type: "uuid", + field: "id", + primary: true, + }, + }, +}) +@Controller("users") +export class UserController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + } + + @UseInterceptors(CrudRequestInterceptor) + @Get("/emails") + async emails(@ParsedRequest() req: CrudRequest) { + return this.service.find({ select: ["email"] }); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.dto.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.dto.ts new file mode 100644 index 000000000..0da0ffd22 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.dto.ts @@ -0,0 +1,37 @@ +import { CrudValidationGroups } from "@2amtech/crudx"; +import { + IsEmail, + IsNotEmpty, + IsString, + MaxLength, + MinLength, + ValidateIf, +} from "class-validator"; +import { isEmpty } from "lodash"; + +import { PhoneDto } from "../phone/phone.dto"; + +import { IsEmailUserAlreadyExist } from "./user-email-already-exists.constraint"; + +const { CREATE } = CrudValidationGroups; + +export class UserDto { + @ValidateIf((o) => !isEmpty(o.email)) + @IsEmail() + @IsEmailUserAlreadyExist({ + message: "Email already exists", + groups: [CREATE], + }) + email: string; + + @ValidateIf((o) => !isEmpty(o.email)) + @IsString() + @IsNotEmpty() + @MaxLength(32, { message: "Password is too long" }) + @MinLength(8, { + message: "Password must be at least 8 characters long", + }) + password: string; + + phone: PhoneDto | []; +} diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.entity.spec.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.entity.spec.ts new file mode 100644 index 000000000..53d5b64da --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.entity.spec.ts @@ -0,0 +1,61 @@ +import { Test, TestingModule } from "@nestjs/testing"; +import * as bcrypt from "bcryptjs"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; + +import { User } from "./user.entity"; + +describe("UserService", () => { + let user: User; + const userId = uuidv4(); + const userPwd = "1234!@#$"; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + }); + + it("should create a new user", () => { + user = User.create({ + id: userId, + email: userId + "@email.com", + password: userPwd, + }); + + expect(user.email).toEqual(userId + "@email.com"); + }); + + it("should hash the password", async () => { + expect(user.password).toEqual(userPwd); + await user.save(); + + bcrypt.compare(userPwd, user.password, (err, isValidHsh) => { + expect(isValidHsh).toBeTruthy(); + }); + }); + + it("should hash password on update", async () => { + const newPassword = "xwty@#$%"; + user.password = newPassword; + + expect(user.password).toEqual(newPassword); + await user.save(); + + bcrypt.compare(newPassword, user.password, (err, isValidHash) => { + expect(isValidHash).toBeTruthy(); + }); + }); + + /*it("should failt to hash password on update", async () => { + user.password = ''; + + try { + await user.save(); + } catch (error) { + expect(error).toBeInstanceOf(Error); + expect(error.message).toContain("Unable to encrypt password: "); + } + });*/ +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.entity.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.entity.ts new file mode 100644 index 000000000..ce398e945 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.entity.ts @@ -0,0 +1,96 @@ +import * as bcrypt from "bcryptjs"; +import { Exclude } from "class-transformer"; +import { + AfterLoad, + BaseEntity, + BeforeInsert, + BeforeUpdate, + Column, + CreateDateColumn, + DeleteDateColumn, + Entity, + OneToMany, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from "typeorm"; + +import { Address } from "../address/address.entity"; +import { Contract } from "../contract/contract.entity"; +import { Phone } from "../phone/phone.entity"; + +@Entity() +export class User extends BaseEntity { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ unique: true, length: 125 }) + email: string; + + @Column({ type: "timestamp", nullable: true }) + emailConfirmedAt: Date; + + @Column({ type: "varchar", nullable: true }) + @Exclude() + emailToken: string; + + @Column({ type: "varchar", length: 80 }) + @Exclude({ toClassOnly: false, toPlainOnly: true }) + password: string; + + @CreateDateColumn({ type: "timestamp" }) + createdAt: Date; + + @UpdateDateColumn({ type: "timestamp" }) + updatedAt: Date; + + @OneToMany(() => Phone, (phone) => phone.user, { + cascade: true, + onDelete: "CASCADE", + }) + phones: Phone[]; + + @OneToMany(() => Contract, (contract) => contract.user, { + cascade: true, + onDelete: "CASCADE", + }) + contracts: Contract[]; + + @OneToMany(() => Address, (address) => address.user, { + cascade: true, + onDelete: "CASCADE", + }) + addresses: Address[]; + + @DeleteDateColumn() + @Exclude() + deletedAt: Date; + + @Exclude() + private tempPassword?: string; + + @BeforeInsert() + private async hashPassword(): Promise { + this.password = await bcrypt.hash(this.password, 10); + } + + @AfterLoad() + private loadTempPassword(): void { + this.tempPassword = this.password; + } + + @BeforeUpdate() + private async encryptPassword(): Promise { + if (this.tempPassword !== null && this.tempPassword !== this.password) { + try { + await this.hashPassword(); + // After changed, temp password should be reassigned to new one, so if we try to save again, + // it does not change the password wrongly + this.tempPassword = this.password; + } catch (error) { + if (error instanceof Error) { + throw new Error("Unable to encrypt password: " + error.message); + } + } + } + } +} diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.module.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.module.ts new file mode 100644 index 000000000..e45ce29c1 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.module.ts @@ -0,0 +1,15 @@ +import { Module } from "@nestjs/common"; +import { TypeOrmModule } from "@nestjs/typeorm"; + +import { IsEmailUserAlreadyExistConstraint } from "./user-email-already-exists.constraint"; +import { UserController } from "./user.controller"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; + +@Module({ + imports: [TypeOrmModule.forFeature([User])], + controllers: [UserController], + providers: [UserService, IsEmailUserAlreadyExistConstraint], + exports: [UserService, IsEmailUserAlreadyExistConstraint], +}) +export class UserModule {} diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.service.spec.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.service.spec.ts new file mode 100644 index 000000000..156ce4238 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.service.spec.ts @@ -0,0 +1,54 @@ +import { ContextIdFactory } from "@nestjs/core"; +import { Test, TestingModule } from "@nestjs/testing"; +import { v4 as uuidv4 } from "uuid"; + +import * as loader from "../../support/loader"; + +import { UserDto } from "./user.dto"; +import { User } from "./user.entity"; +import { UserService } from "./user.service"; + +describe("UserService", () => { + const contextId = ContextIdFactory.create(); + let service: UserService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule( + await loader.loadUserModule() + ).compile(); + + jest + .spyOn(ContextIdFactory, "getByRequest") + .mockImplementation(() => contextId); + service = await module.resolve(UserService, contextId); + }); + + it("should be defined", () => { + expect(service).toBeDefined(); + expect(service).toBeInstanceOf(UserService); + }); + + it("should check user record existence", async () => { + const id = uuidv4(); + const email = id + "testing@email.com"; + const pwd = "1234!@#$"; + + const user = User.create({ + id: id, + email: email, + password: pwd, + }); + + const userDto = new UserDto(); + userDto.email = user.email; + userDto.password = user.password; + + expect(await service.userExists(userDto)).toBeFalsy(); + + await user.save(); + expect(user.id).toBeDefined(); + + userDto.password = user.password; + expect(await service.userExists(userDto)).toBeTruthy(); + }); +}); diff --git a/packages/crudx/demo/crudx-demo/src/app/user/user.service.ts b/packages/crudx/demo/crudx-demo/src/app/user/user.service.ts new file mode 100644 index 000000000..68f8bc99f --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/app/user/user.service.ts @@ -0,0 +1,21 @@ +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { Catch, Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { ValidationError } from "class-validator"; +import { EntityNotFoundError, QueryFailedError } from "typeorm"; + +import { UserDto } from "./user.dto"; +import { User } from "./user.entity"; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class UserService extends TypeOrmCrudService { + constructor(@InjectRepository(User) readonly repo) { + super(repo); + } + + async userExists(dto: Partial): Promise { + const user: User = await this.repo.findOneBy(dto); + return Boolean(user); + } +} diff --git a/packages/crudx/demo/crudx-demo/src/assets/.gitkeep b/packages/crudx/demo/crudx-demo/src/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/packages/crudx/demo/crudx-demo/src/config/database.config.ts b/packages/crudx/demo/crudx-demo/src/config/database.config.ts new file mode 100644 index 000000000..df8112211 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/config/database.config.ts @@ -0,0 +1,21 @@ +import { registerAs } from "@nestjs/config"; + +import { AddressType } from "../app/address/address-type.entity"; +import { Address } from "../app/address/address.entity"; +import { Claim } from "../app/claims/claim.entity"; +import { Contract } from "../app/contract/contract.entity"; +import { Phone } from "../app/phone/phone.entity"; +import { User } from "../app/user/user.entity"; + +export const databaseConfig = registerAs("database", () => ({ + type: process.env.DB_TYPE, + host: process.env.DB_HOST, + port: process.env.DB_PORT, + username: process.env.DB_USERNAME, + password: process.env.DB_PASSWORD, + database: process.env.DB_DATABASE, + entities: [User, Phone, Contract, Claim, Address, AddressType], + synchronize: true, + autoLoadEntities: true, + encoding: process.env.DB_CHARSET, +})); diff --git a/packages/crudx/demo/crudx-demo/src/config/index.ts b/packages/crudx/demo/crudx-demo/src/config/index.ts new file mode 100644 index 000000000..5d06f6f36 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/config/index.ts @@ -0,0 +1 @@ +export * from "./database.config"; diff --git a/packages/crudx/demo/crudx-demo/src/main.ts b/packages/crudx/demo/crudx-demo/src/main.ts new file mode 100644 index 000000000..354cdf380 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/main.ts @@ -0,0 +1,58 @@ +/** + * This is not a production server yet! + * This is only a minimal backend to get started. + */ +import { + CrudConfigService, + QueryBuilderService, + RequestQueryBuilderOptions, +} from "@2amtech/crudx"; +import { Logger } from "@nestjs/common"; +import { NestFactory } from "@nestjs/core"; +import { useContainer } from "class-validator"; + +import { UserModule } from "./app/user/user.module"; + +/* + * Default configuration for CRUD, can be overridden in each module. + * Must be loaded before importing AppModule. + */ +CrudConfigService.load({ + query: { + limit: 25, + cache: 2000, + alwaysPaginate: true, + }, + routes: { + updateOneBase: { + allowParamsOverride: true, + }, + deleteOneBase: { + returnDeleted: true, + }, + }, +}); + +QueryBuilderService.setOptions({ + paramNamesMap: { + search: "s", + join: ["join[]", "join", "include[]", "include"], + }, +}); + +import { AppModule } from "./app/app.module"; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + const globalPrefix = "v1"; + app.setGlobalPrefix(globalPrefix); + app.enableCors(); + useContainer(app.select(UserModule), { fallbackOnErrors: true }); + const port = process.env.PORT || 3000; + await app.listen(port); + Logger.log( + `🚀 Application is running on: http://localhost:${port}/${globalPrefix}` + ); +} + +bootstrap(); diff --git a/packages/crudx/demo/crudx-demo/src/support/loader.ts b/packages/crudx/demo/crudx-demo/src/support/loader.ts new file mode 100644 index 000000000..c94e46833 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/src/support/loader.ts @@ -0,0 +1,46 @@ +import { ConfigModule, ConfigService } from "@nestjs/config"; +import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm"; + +import { AuthModule } from "../app/auth/auth.module"; +import { ClaimModule } from "../app/claims/claim.module"; +import { ContractModule } from "../app/contract/contract.module"; +import { Phone } from "../app/phone/phone.entity"; +import { PhoneModule } from "../app/phone/phone.module"; +import { User } from "../app/user/user.entity"; +import { UserModule } from "../app/user/user.module"; +import { databaseConfig } from "../config"; +import { AddressModule } from "../app/address/address.module"; + +async function loadUserModule() { + return { + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + load: [databaseConfig], + envFilePath: ['.env.testing'], + }), + TypeOrmModule.forRootAsync({ + useFactory: (config: ConfigService) => + { + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }, + inject: [ConfigService], + }), + UserModule, + PhoneModule, + AuthModule, + ContractModule, + ClaimModule, + AddressModule, + ], + }; +} + +export { loadUserModule }; diff --git a/packages/crudx/demo/crudx-demo/support/test-setup.ts b/packages/crudx/demo/crudx-demo/support/test-setup.ts new file mode 100644 index 000000000..a18084f05 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/support/test-setup.ts @@ -0,0 +1,10 @@ +/* eslint-disable */ + +import axios from "axios"; + +module.exports = async function () { + // Configure axios for tests to use. + const host = process.env.HOST ?? "localhost"; + const port = process.env.PORT ?? "3000"; + axios.defaults.baseURL = `http://${host}:${port}`; +}; diff --git a/packages/crudx/demo/crudx-demo/tsconfig.app.json b/packages/crudx/demo/crudx-demo/tsconfig.app.json new file mode 100644 index 000000000..a2ce76529 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["node"], + "emitDecoratorMetadata": true, + "target": "es2021" + }, + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/packages/crudx/demo/crudx-demo/tsconfig.json b/packages/crudx/demo/crudx-demo/tsconfig.json new file mode 100644 index 000000000..608d5e18f --- /dev/null +++ b/packages/crudx/demo/crudx-demo/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/packages/crudx/demo/crudx-demo/tsconfig.spec.json b/packages/crudx/demo/crudx-demo/tsconfig.spec.json new file mode 100644 index 000000000..9b2a121d1 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/tsconfig.spec.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/packages/crudx/demo/crudx-demo/webpack.config.js b/packages/crudx/demo/crudx-demo/webpack.config.js new file mode 100644 index 000000000..0ab513e83 --- /dev/null +++ b/packages/crudx/demo/crudx-demo/webpack.config.js @@ -0,0 +1,8 @@ +const { composePlugins, withNx } = require("@nx/webpack"); + +// Nx plugins for webpack. +module.exports = composePlugins(withNx(), (config) => { + // Update the webpack config as needed here. + // e.g. `config.plugins.push(new MyPlugin())` + return config; +}); diff --git a/packages/crudx/docs/actions-access-management.md b/packages/crudx/docs/actions-access-management.md new file mode 100644 index 000000000..0580444a8 --- /dev/null +++ b/packages/crudx/docs/actions-access-management.md @@ -0,0 +1,91 @@ + +# Actions and Access Management + +To provide a clean Access-Control List (ACL) mechanism, two new decorators have been added: `@Feature()` and `@Action()`. + +`@Action()` will be applied automatically to controller's methods composed by the `@Crud()` decorator. + +Below is the definition of the `CrudActions` enum, which you can import as a helper for your implementation. + +```typescript +enum CrudActions { + ReadAll = "Read-All", + ReadOne = "Read-One", + CreateOne = "Create-One", + CreateMany = "Create-Many", + UpdateOne = "Update-One", + ReplaceOne = "Replace-One", + DeleteOne = "Delete-One", +}There it is a dummy sample of a `AClGuard` implementation: +``` +There it is a dummy sample of a `AClGuard` implementation: +```typescript +@CrudAuth({ + ... +}) +@Controller("me") +@Feature("GetMyInfo") +@UseGuards(AuthGuard) +export class MeController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + }There it is a dummy sample of a `AClGuard` implementation: +``` + +Here's a dummy sample of an `AClGuard` implementation: + +```typescript +import { getActioThere it is a dummy sample of a `AClGuard` implementation:n, getFeature } from "@2amtech/crudx"; +import { + CanActivate, + ExecutionContext, + Injectable, + UnauthorizedException, +} from "@nestjs/common"; +import { Reflector } from "@nestjs/core"; +import { JwtServiceThere it is a dummy sample of a `AClGuard` implementation:ts } from "./constants"; + +@Injectable() +export class AuthGuard implements CanActivate { + constructor(private jwtService: JwtService, private reflector: Reflector) {} + + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const token = this.extractTokenFromHeader(request); + if (!token) { + throw new UnauthorizedException(); + } + try { + const payload = await this.jwtService.verifyAsync(token, { + secret: jwtConstants.secret, + }); + + request["user"] = payload; + } catch { + throw new UnauthorizedException(); + } + + // up here, it's a simple auth guard with jwt + + // + + const handler = context.getHandler(); + const controller = context.getClass(); + + const feature = getFeature(controller); + const action = getAction(handler); + + console.log(`${feature}-${action}`); // e.g "GetMyInfo-Read-One" + // write custom acl rule + + return true; + } + ``` + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/authentication.md b/packages/crudx/docs/authentication.md new file mode 100644 index 000000000..9c01e9a22 --- /dev/null +++ b/packages/crudx/docs/authentication.md @@ -0,0 +1,61 @@ + +# Request Authentication + +The library provides the `@CrudAuth()` decorator to allow you to filter the results for authenticated requests. + +The `@CrudAuth()` decoretor accepts the following options: + +```typescript +{ + property?: string; + filter?: (req: any) => SCondition | void; + or?: (req: any) => SCondition | void; + persist?: (req: any) => ObjectLiteral; +} +``` + +`property:` Property on the Request object where the user's data is stored after successful authentication. + +`filter:` A function that should return `search` condition and will be added to the query search params and path params as an `$and` condition: + +>`{Auth condition}` AND `{Path params}` AND `{Search|Filter}` + +or: A function that should return search conditions and will be added to the query search params and path params as a $or condition. If it's used, then the filter function will be ignored. + +>`{Auth condition}` OR `({Path params} AND {Search|Filter})` + +Let's see this decorator in practice by creating a route to return the authenticated user's info: + +```typescript +... +import { Crud, CrudAuth, CrudController } from "@2amtech/crudx"; + +@Crud({ + routes: { + only: ["getOneBase"], + }, +}) +@CrudAuth({ + property: "user", + filter: (user: User) => ({ + id: user.id, + }), +}) +@Controller("me") +@UseGuards(AuthGuard) +export class MeController implements CrudController { + constructor(public service: UserService) {} +} +``` + +To make our sample more complete, we've defined this controller to have only the route (as described in [routes](./routes.md)) `getOneBase` to read the authenticated user's info. + +Then, our filter condition will only bring the results where the entity field `:id` matches with the value found on the authenticated variable `user.id`. + +>Though we're not obligated to set guards for our controller or the routes when using the `@CrudAuth()` decorator, it is strongly recommended as it prevents errors. It returns an unauthorized error when there is no active session instead of an undefined property. + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/controllers.md b/packages/crudx/docs/controllers.md new file mode 100644 index 000000000..d23a55df1 --- /dev/null +++ b/packages/crudx/docs/controllers.md @@ -0,0 +1,191 @@ + +# Controllers + +As seen on basics, the `@Crud` decorator is our means of defining CRUD controllers. We'll cover most of this decorator option in this section. + +When we define a CRUD controller using the @CRUD decorator, it generates the following API endpoints: + +## Get many + +>GET /user + +*Result:* array of resources | pagination object with data + +*Status Codes:* 200 + +## Get one + +>GET /user/:id + +*Request Params:* :`id` - some resource filed (slug) + +*Result:* object | error object + +*Status Codes:* 200 | 404 + +## Create one + +>POST /user + +*Request Body:* object resource object with nested (relational) object + +*Result:* created resource object | error object + +*Status Codes:* 201 | 400 + +## Create many + +>POST /user/bulk + +*Request Body:* array of resources objects | array of resources objects with nested (relational) resources + +```json +{ + "bulk": [ + { + "email": "sample@email.com", + "password": "1234!@#$" + }, + { + "email": "testing@email.com", + "password": "!@#$1234" + } + ] +} +``` + +*Result:* array of created resources | error object + +*Status Codes:* 201 | 400 + +## Update one + +>PATCH /user/:id + +*Request Params:* :id - some resource field (slug) + +*Request Body:* resource object (or partial) | resource object with nested (relational) resources (or partial) + +*Result:* updated partial resource object | error object + +*Status Codes:* 200 | 400 | 404 + +## Replace one + +>PUT /user/:id + +*Request Params:* :id - some resource field (slug) + +*Request Body:* resource object | resource object with nested (relational) resources (or partial) + +*Result:* replaced resource object | error object + +*Status Codes:* 200 | 400 | 404 + +## Delete one + +>DELETE /user/:id + +*Request Params:* :id - some resource field (slug) + +*Result:* empty | resource object | error object + +*Status Codes:* 200 | 404 + +## Recover one +>PATCH /user/:id + +*Request params:* :id - the target deleted entity id (slug) to be recovered. + +*Result:* recovered object | error object + +*Status:* 200 | 404 + +>Note: the Recover One route will be available only when the enabled on @Crud option `query.softDelete` and the target TypeORM entity (defined in the @Crud model.type options, as seem below) has the [softDelete](https://doug-martin.github.io/nestjs-query/docs/persistence/typeorm/soft-delete) feature enabled. + +```typescript +@Crud({ + model: { + type: User, + }, + query: { + softDelete: true, + }, +}) +... + +// in your model +... +@DeleteDateColumn({ name: "deleted_at", nullable: true }) +deletedAt: Date | null = null; +``` + +# @Crud Options + +The `@Crud` decorator has only one required parameter: + +## model + +```typescript +@Crud({ + model: { + type: Entity|Model|DTO + }, + ... +}) +``` +**type**: `Entity`, `Model`, or `DTO` must be provided. This is needed for built-in validation based on NestJS ValidationPipe. + +### The options listed below are not required: + +## validation +```typescript +@Crud({ + ... + validation?: ValidationPipeOptions | false; + ... +}) +``` + +Accepts a `ValidationPipe` options or `false` in case you want to use your own implementation. + +## params + +By default the @Crud decorator will use `id` with type `number` as a primary slug param. + +the `param` options will acept a `slug` property, useful for defining which field we're using to filter the results, its type, and whether it's a primary key or not. + +```typescript +@Crud({ + ... + params: { + slug: { + field: 'slug', // default: id + type: 'uuid'. // default: number + primary: true, // default: false + }, + }, + ... +}) +``` + +You can also define your route parameter name using params. Let's assume your controller path looks like `/users/:userId/phone`. Here's how you would define it: + +```typescript +@Crud({ + ... + params: { + userId: { + field: 'userId', + type: 'uuid', + }, + }, + ... +}) +``` + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/global-options.md b/packages/crudx/docs/global-options.md new file mode 100644 index 000000000..38e5ec1ff --- /dev/null +++ b/packages/crudx/docs/global-options.md @@ -0,0 +1,76 @@ + +# Global Options + +o reduce repetition in your `CrudOptions` in every controller, you can specify some options globally: + +```typescript +{ + queryParser?: RequestQueryBuilderOptions; + routes?: RoutesOptions; + params?: ParamsOptions; + auth?: { + property?: string; + }; + query?: { + limit?: number; + maxLimit?: number; + cache?: number | false; + alwaysPaginate?: boolean; + }; + serialize?: { + getMany?: false; + get?: false; + create?: false; + createMany?: false; + update?: false; + replace?: false; + delete?: false; + }; +} +``` + +* `queryParser:` These are options for RequestQueryParser that is being used in CrudRequestInterceptor to parse/validate query and path params. +* `routes:` Same as defined in the [Routes](./routes.md) section. +* `params:` Same as defined in the [controllers.params](./controllers.md#params) section. +* `query`: From the options listed on queries [queries](./query-filter.md#queries), `limit`, `maxLimit`, `cache` and `alwaysPaginate` are available to be applied globally. +* `serialize:` Allows you to globally disable serialization for particular actions.. + +In order to apply the global options, you need to set them up before the `AppModule` class is imported. + +```typescript +import { CrudConfigService } from '@2amtech/crudx'; + +CrudConfigService.load({ + query: { + limit: 25, + cache: 2000, + }, + params: { + id: { + field: 'id', + type: 'uuid', + primary: true, + }, + }, + routes: { + updateOneBase: { + allowParamsOverride: true, + }, + deleteOneBase: { + returnDeleted: true, + }, + }, +}); + +import { AppModule } from './app.module'; + +... +``` + +Notice: All these options can be overridden in each `CrudController`. + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/nested-controllers.md b/packages/crudx/docs/nested-controllers.md new file mode 100644 index 000000000..b7c1f091c --- /dev/null +++ b/packages/crudx/docs/nested-controllers.md @@ -0,0 +1,121 @@ + +# Nested Controllers + +As discussed in the [Controllers section](./controllers.md), the `@Crud` decorator will generate a set of ready-to-use CRUD routes. + +Using the `@Crud` decorator, we can still define a controller to handle the related (nested) resource CRUD operations. + +Let's update the `user` enttiy sample we've created in the basics sample by adding a `phone` property, which should be an entity as well. + +```typescript +import { + AfterLoad, + BaseEntity, + Entity, + PrimaryGeneratedColumn, + Column, + BeforeInsert, + BeforeUpdate, +} from "typeorm"; +import * as bcrypt from "bcryptjs"; + +@Entity() +export class User extends BaseEntity { + @PrimaryGeneratedColumn("uuid") + id: string; + ... + + @OneToMany((type) => Phone, (phone) => phone.user) + phones: Phone[]; + .. +} +``` + +Next, let's create the `phone` entity: + +```typescript +... + +@Entity() +export class Phone extends BaseEntity { + @PrimaryGeneratedColumn("uuid") + id: string; + + @Column({ type: "varchar", nullable: false }) + userId: string; + + @Column({ type: "varchar", nullable: false }) + phoneNumber: string; + + @ManyToOne((type) => User, (user) => user.id, { cascade: true }) + @JoinColumn({ + referencedColumnName: "id", + foreignKeyConstraintName: "UserId", + }) + user: User; +} +``` + +With our user entity updated and the `phone` entity created, we can assume the service and model creation are completed. Now, we're left to create a controller to filter the user and perform CRUD operations for the `phones` assigned to the filtered user. + +First, let's define our controller. Let's assume the given path as our controller path: `/users/:userId/phones`. + +```typescript +... + +@Controller("/users/:userId/phones") +export class PhoneController implements CrudController { + constructor(public service: PhoneService) {} +} +``` + +It creates our controller, but to have the magic working, we have to define our `@Crud` decorator. + +As described in the [Controllers section](./controllers.md), we need to define the `:userId` route param in our `@crud` `param` options. Additionally, since we've defined the `phone` entity id as `UUID`, we have to let the `@Crud` decorator know about it as well: + +```typescript +... + +@Crud({ + model: { + type: Phone + }, + params: { + slug: { + field: "id", + type: "uuid", + primary: true, + }, + userId: { + field: "userId", + type: "uuid" + }, + }, +}) +@Controller("/users/:userId/phones") +export class PhoneController implements CrudController { + constructor(public service: PhoneService) {} +} +``` + +With this setup, we'll already have these API endpoints created, with the very same specifications described in the [controllers section:](./controllers.md): + +>GET /users/:userId/phones + +>GET /users/:userId/phones/:id + +>POST /users/:userId/phones + +>POST /users/:userId/phones/bulk + +>PATCH /users/:userId/phones/:id + +>PUT /users/:userId/phones/:id + +>DELETE /users/:userId/phones/:id + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/orm.md b/packages/crudx/docs/orm.md new file mode 100644 index 000000000..4b01c00e2 --- /dev/null +++ b/packages/crudx/docs/orm.md @@ -0,0 +1,67 @@ + +# ORM + +The library is designed to support any ORM and any database. + +Supported ORMs: + +* TypeORM + +## TypeORM + +To start using the built-in `TypeORM` with Crudx, we must first define a service wich extends the `TypeOrmCrudService` class, injecting the `TypeORM` entity. + +Let's first create the entity: + +```typescript +import { + BaseEntity, + Column, + CreateDateColumn, + Entity, + PrimaryGeneratedColumn, + UpdateDateColumn, +} from 'typeorm'; + +@Entity() +export class Category extends BaseEntity { + @PrimaryGeneratedColumn() + id: number; + + @Column({ type: 'varchar', length: 100 }) + name: string; + + @CreateDateColumn({ name: 'created_at', type: 'datetime' }) + createdAt: Date; + + @UpdateDateColumn({ name: 'updated_at', type: 'datetime' }) + updatedAt: Date; +} + +``` + +With our entity created, let’s create the service: + +```typescript +import { Catch, Injectable } from '@nestjs/common'; +import { Category } from './category.entity'; +import { TypeOrmCrudService } from '@2amtech/crudx'; +import { InjectRepository } from '@nestjs/typeorm'; +import { EntityNotFoundError, QueryFailedError } from 'typeorm'; +import { ValidationError } from 'class-validator'; + +@Injectable() +@Catch(QueryFailedError, ValidationError, EntityNotFoundError) +export class CategoryService extends TypeOrmCrudService { + constructor(@InjectRepository(Category) readonly repo) { + super(repo); + } +} + +``` + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/query-filter.md b/packages/crudx/docs/query-filter.md new file mode 100644 index 000000000..b0f8c28a6 --- /dev/null +++ b/packages/crudx/docs/query-filter.md @@ -0,0 +1,277 @@ + +# Queries + +You can set query filters for the `GET` requests. + +```typescript +@Crud({ + ... + query?: { + allow?: string[]; + exclude?: string[]; + persist?: string[]; + filter?: QueryFilterOption; + join?: JoinOptions; + sort?: QuerySort[]; + limit?: number; + maxLimit?: number; + cache?: number | false; + alwaysPaginate?: boolean; + }, + ... +}) +``` + +## allow + +An Array of fields that are allowed to be received in `GET` requests. If empty or undefined, allow all fields. + +```typescript +{ + allow: ["name", "email"]; +} +``` + +## exclude + +An Array of fields that will be excluded from the `GET` response (and not queried from the database). + +```typescript +{ + exclude: ["accessToken"]; +} +``` + +## persist + +An Array of fields that will always be persisted in the `GET` response. + +```typescript +{ + persist: ["createdAt"]; +} +``` + +## filter + +This option can be used in two scenarios: + +1. If you want to add some conditions to the request: + +```typescript +{ + filter: { + isActive: { + $ne: false; + } + } +} +``` + +which is the same as: + +```typescript +{ + filter: [ + { + field: "isActive", + operator: "$ne", + value: false, + }, + ]; +} +``` + +2. If you want to transform your query search conditions or even return a completely new one (i.e., persist only one set of conditions and ignore search coming from the request): + +* Totally ignore any query search conditions: + +```typescript +{ + filter: () => {}; +} +``` + +* Totally ignore any query search conditions and persist some conditions. + +```typescript +{ + filter: () => ({ + isActive: { + $ne: false; + } + }); +} +``` + +* Transform query search conditions: + +```typescript +import { SCondition } from '@2amtech/crudx' + +... + +{ + filter: (search: SCondition, getMany: boolean) => { + return getMany ? search : { + $and: [ + ...search.$and, + { isActive: true }, + ], + } + }; +} +``` + +> Notice: The first function parameter here, `search`, will always be either `{ $and: [...] }` or `{ $or: [...] }`. It depends on whether you're using the `@CrudAuth()` decorator: + +* If you're not using it, or if you are and it has a `filter` function, then `search` will contain `$and` type of conditions. + +* If you are using it and it has an `or` function, then `search` will contain `$or` type of conditions. + +List of available operators: + +| Operator | Logic | +| -- | -- | +| EQUALS | $eq | +| NOT_EQUALS | $ne | +| GREATER_THAN | $gt | +| LOWER_THAN | $lt | +| GREATER_THAN_EQUALS | $gte | +| LOWER_THAN_EQUALS | $lte | +| STARTS | $starts | +| ENDS | $ends | +| CONTAINS | $cont | +| EXCLUDES | $excl | +| IN | $in | +| NOT_IN | $notin | +| IS_NULL | $isnull | +| NOT_NULL | $notnull | +| BETWEEN | $between | +| EQUALS_LOW | $eqL | +| NOT_EQUALS_LOW | $neL | +| STARTS_LOW | $startsL | +| ENDS_LOW | $endsL | +| CONTAINS_LOW | $contL | +| EXCLUDES_LOW | $exclL | +| IN_LOW | $inL | +| NOT_IN_LOW | $notinL | + +## join + +You can fetch join query parameters in `GET` requests. + +Each key of the join object must strongly match the name of the corresponding resource relation. If a particular relation name is not present in this option, then the user will not be able to retrieve these relational objects in a `GET` request. + +All fields + +```typescript +{ + join: { + profile: { + persist: ['name'], + exclude: ['token'], + eager: true, + required: true, + }, + tasks: { + allow: ['content'], + }, + notifications: { + eager: true, + select: false, + }, + company: {}, + 'company.projects': { + persist: ['status'] + }, + 'users.projects.tasks': { + exclude: ['description'], + alias: 'projectTasks', + }, + } +} +``` + +For each relation option, you can specify the following (all below are optional): + +`allow`: An `Array` of fields that are allowed to be received in `GET` requests. If `empty` or `undefined`, allow all. + +`exclude`: An `Array` of fields that will be excluded from the `GET` response (and not queried from the database). + +`persist`: An `Array` of fields that will always be persisted in the `GET` response. + +`eager`: A `boolean` type - indicating whether or not the current relation should persist in every `GET` response. + +`required`: Specifies whether a relation should be required or not. For `RDBMS`, this means use either `INNER` or `LEFT` join. Default: `false`. + +`alias`: Set an alias for a relation. + +`select`: A `boolean` type. If `false`, the relation will be joined but not selected and not included in the response. + +## sort + +An `Array` of `sort` objects that will be merged (combined) with query `sort` if those are passed in `GET` request. If not, the `sort` will be added to the database query as a stand-alone condition. + +```typescript +{ + sort: [ + { + field: "id", + order: "DESC", + }, + ]; +} +``` + +## limit + +Default limit that will be applied to the database query. + +```typescript +{ + limit: 25, +} +``` + +## maxLimit + +Maximum amount of results that can be queried in `GET` requests. + +>Notice: It's strongly recommended to set up this option. Otherwise, the database query will be executed without any `LIMIT` condition. + +```typescript +{ + maxLimit: 100, +} +``` + +## cache + +If Caching Results are implemented in your project, you can set up a default `cache` in milliseconds for `GET` response data. + +Cache can be reseted by using `cache=0` query parameter in your GET requests. + +```typescript +{ + cache: 2000, +} +``` + +## alwaysPaginate + +Either always return an object with paginated data or not. + +```typescript +{ + alwaysPaginate: true, +} +``` + +You can define a set of query params globally for your application. Refer to [Global Options](./global-options.md) for more details. + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/requests.md b/packages/crudx/docs/requests.md new file mode 100644 index 000000000..29c6f4775 --- /dev/null +++ b/packages/crudx/docs/requests.md @@ -0,0 +1,315 @@ +# Requests and Query Params + +`2am/crudx` provides a full range of path and query parameter parsing/validation to help you build rich RESTful APIs. + +## Query Params + +By default, we support these param names: + +`fields, select`: Get selected fields in GET result + +`s`: Search conditions (`$and`, `$or` with all possible variations) + +`or`: Filter `GET` result by `OR` type of condition + +`join`: Receive joined relational resources in `GET` result (with all or selected fields) + +`sort`: Sort `GET` results by some `field` in `ASC` | `DESC` order + +`per_page, limit`: Limit the amount of received resources + +`offset`: Offset some amount of received resources + +`page`: Receive a limited portion of resources + +`cache`: Reset the cache (if enabled) and receive resources directly from the database. + +> **Notice:** You can easily map your own query param names and choose additional string delimiters by applying global options. + +Here is the description of each of those using default param names: + +### select + +Selects fields that should be returned in the response body. + +*Syntax:* + +>?fields=field1,field2,... + +### search + +Add a search condition as a JSON string to your request. You can combine `$and`, `$or` and use any [conditions](./requests.md#filter-conditions) you need. + +Make sure it's being sent encoded or just use +[QueryBuilderService](./requests.md#query-builder-service). + +*Syntax:* + +>?s={"name": "Michael"} + +*Some examples:* + +* Search by field name that can be either null OR equals Superman + +>?s={"name": {"$or": {"$isnull": true, "$eq": "Superman"}}} + +* Search an entity where isActive is true AND createdAt not equal 2008-10-01T17:04:32 + +>?s={"$and": [{"isActive": true}, {"createdAt": {"$ne": "2008-10-01T17:04:32"}}]} + +...which is the same as: + +>?s={"isActive": true, "createdAt": {"$ne": "2008-10-01T17:04:32"}} + +Search an entity where isActive is false OR updatedAt is not null + +>?s={"$or": [{"isActive": false}, {"updatedAt": {"$notnull": true}}]} + +>**Notice:** if search query param is present, then filter and or query params will be ignored. + +### filter conditions + +| Operator | Logic | +| -- | -- | +| EQUALS | $eq | +| NOT_EQUALS | $ne | +| GREATER_THAN | $gt | +| LOWER_THAN | $lt | +| GREATER_THAN_EQUALS | $gte | +| LOWER_THAN_EQUALS | $lte | +| STARTS | $starts | +| ENDS | $ends | +| CONTAINS | $cont | +| EXCLUDES | $excl | +| IN | $in | +| NOT_IN | $notin | +| IS_NULL | $isnull | +| NOT_NULL | $notnull | +| BETWEEN | $between | +| EQUALS_LOW | $eqL | +| NOT_EQUALS_LOW | $neL | +| STARTS_LOW | $startsL | +| ENDS_LOW | $endsL | +| CONTAINS_LOW | $contL | +| EXCLUDES_LOW | $exclL | +| IN_LOW | $inL | +| NOT_IN_LOW | $notinL | + +### filter + +Adds fields request condition (multiple conditions) to your request. + +*Systax:* + +>?filter=field||$condition||value + +>?join=relation&filter=relation.field||$condition||value + +>**Notice:** Using nested filter shall join relation first. + +*Examples:* + +>?filter=name||$eq||batman + +>?filter=isVillain||$eq||false&filter=city||$eq||Arkham (multiple filters are treated as a combination of AND type of conditions) + +>?filter=shots||$in||12,26 (some conditions accept multiple values separated by commas) + +>?filter=power||$isnull (some conditions don't accept value) + +### or + +Adds `OR` conditions to the request. + +*Syntax:* + +>?or=field||$condition||value + +It uses the same [conditions](./requests.md#filter-conditions). + +*Rules and examples:* + +* If there is **only one** `or` present (without filter), then it will be interpreted as a simple [filter](./requests.md#filter): + +>?or=name||$eq||batman + +* If there are **multiple** `or` present (without filter), then it will be interpreted as a compination of `OR` conditions, as follows: + +> WHERE {or} OR {or} OR ... + +>?or=name||$eq||batman&or=name||$eq||joker + +* If there are **one** `or` and one `filter`, then it will be interpreted as an `OR` condition, as follows: + +> WHERE {filter} OR {or} + +>?filter=name||$eq||batman&or=name||$eq||joker + +* If **both** `or` and `filter` are present in any amount (**one** or **miltiple** each), then both are interpreted as a combitation of `AND` conditions and compared with each other by an `OR` condition, as follows: + +>WHERE ({filter} AND {filter} AND ...) OR ({or} AND {or} AND ...) + +>?filter=type||$eq||hero&filter=status||$eq||alive&or=type||$eq||villain&or=status||$eq||dead + +### sort + +Adds sorting by field (by multiple fields) and order to query results. + +*Syntax:* + +>?sort=field,ASC|DESC + +*Examples:* + +>?sort=name,ASC + +>?sort=name,ASC&sort=id,DESC + +### join + +Receive joined relational objects in a GET result (with all or selected fields). You can join as many relations as allowed in your [CrudOptions](./query-filter.md#join). + +*Syntax:* + +>?join=relation + +>?join=relation||field1,field2,... + +>?join=relation1||field11,field12,...&join=relation1.nested||field21,field22,...&join=... + +*Examples:* + +>?join=addresses + +>?join=addresses||city,state,street + +>?join=addresses||city,state,street??join=addresses.addressType||type + +>**Notice:** The primary field/column always persists in relational objects. To use nested relations, the parent level MUST be set before the child level as shown in the example above. + +### limit + +Receive N amount of entities. + +*Syntax:* + +>?limit=number + +### offset + +Limit the amount of received resources. + +*Syntax:* + +>?offset=number + +### page + +Receive portion of a limited amount of resources (from the specified page). + +*Syntax:* + +>?page=number + +### cache + +Reset cache (if it was enabled) and receive resources directly from the database. + +*Usage:* + +>?cache=0 + +## Query Builder Service + +`@2amtech/crux` provides the `QueryBuilderService` class to enhance and help with query string creation. It also offers an easy way to customize your query params names and delimiters. + +### Customize + +It has a static method `setOptions` that allows you to set different param names (defaults are shown below): + +```typescript +improt { QueryBuilderService, RequestQueryBuilderOptions } from "@2amtech/crudx" + +QueryBuilderService.setOptions({ + delim: "||", + delimStr: ",", + paramNamesMap: { + fields: ["fields", "select"], + search: "s", + filter: ["filter[]", "filter"], + or: ["or[]", "or"], + join: ["join[]", "join"], + sort: ["sort[]", "sort"], + limit: ["per_page", "limit"], + offset: ["offset"], + page: ["page"], + cache: ["cache"] + }, +}); +``` + +## Usage + +You can compose a query string in a chained methods manner: + +```typescript +improt { QueryBuilderService, RequestQueryBuilderOptions, CondOperator } from "@2amtech/crudx" + +const qb = RequestQueryBuilder.create(); + +qb.search({ + $or: [ + { + foo: { + $notnull: true + }, + baz: 1 + }, + { + bar: { + $ne: "test" + } + } + ] +}); + +// it's the same as: + +qb.setFilter({ field: "foo", operator: CondOperator.NOT_NULL }) + .setFilter({ field: "baz": operator: "$eq", value: 1 }) + .setOr({ + field: "bar", + operator: CondOperator.NOT_EQUALS, + value: "test" + }); + +qb.select(["foo", "bar"]) + .setJoin({ field: "company" }) + .setJoin({ field: "profile", select: ["name", "email"] }) + .sortBy({ field: "bar", order: "DECS" }) + .setLimit(20) + .setPage(3) + .resetCache() + .query(); + +``` + +Or, you can pass all parameters to the create method: + +```typescript +const queryString = RequestQueryBuilder.create({ + fields: ["name", "email"], + search: { isActive: true }, + join: [{ field: "company" }], + sort: [{ field: "id", order: "DESC" }], + page: 1, + limit: 25, + resetCache: true +}).query(); +``` + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/routes.md b/packages/crudx/docs/routes.md new file mode 100644 index 000000000..9ccb02522 --- /dev/null +++ b/packages/crudx/docs/routes.md @@ -0,0 +1,185 @@ + +# Routes + +## Route Override + +You can override the generated routes to add your own implementation. Below is the list of all routes composed by the `@Crud()` decorator: + +```typescript +{ + getManyBase( + @ParsedRequest() req: CrudRequest, + ): Promise | T[]>; + + getOneBase( + @ParsedRequest() req: CrudRequest, + ): Promise; + + createOneBase( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto: T, + ): Promise; + + createManyBase( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto: CreateManyDto, + ): Promise; + + updateOneBase( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto: T, + ): Promise; + + replaceOneBase( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto: T, + ): Promise; + + deleteOneBase( + @ParsedRequest() req: CrudRequest, + ): Promise; +} +``` + +Since all composed methods have "Base" ending in their names, overriding those endpoints can be done in two ways: + +1. Attach the `@Override()` decorator without any argument to the newly created method whose name doesn't contain Base ending. So, if you want to override `getManyBase`, you need to create a `getMany` method. + +2. Attach the `@Override('getManyBase')` decorator with the base method name passed as an argument if you want to override the base method with a function that has a custom name. + +Example: + +```typescript +import { + Crud, + CrudController, + CrudRequest, + Override, + ParsedBody, + ParsedRequest +} from "@2amtech/crudx"; +import { Controller } from "@nestjs/common"; + +@Controller("/users/:userId/phones") +export class PhoneController implements CrudController { + constructor(public service: PhoneService) {} + + get base(): CrudController { + return this; + } + + @Override() + async createOne( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto + ): Promise { + const response = await Promise.resolve(this.base.createOneBase(req, dto)); + + response["customProp"] = "custom added property"; + + return response; + } + + @Override("getOneBase") + async getPhone( + @ParsedRequest() req: CrudRequest + ): Promise { + const response = await Promise.resolve(this.base.getOneBase(req)); + + response["customProp"] = "custom added property"; + + return response; + } +} +``` + +>Notice: new custom route decorators have been created to simplify the process: `@ParsedRequest()` and `@ParsedBody()`. However, you can still add your param decorators to any of the methods, such as `@param()`, `@session()`, etc., or any of your own custom route decorators. + +## Adding Route + +To add new routes to your controller, you must attach the `CrudRequestInterceptor` interceptor to your method. `@ParsedRequest()` and `@ParsedBody()` decorators have been created to simplify this process. However, you can still add a param decorator to your methods, such as `@param()`, `@Session()`. + +Example: + +```typescript +... + +@Crud({ + ... +}) +@Controller("users") +export class UserController implements CrudController { + constructor(public service: UserService) {} + + get base(): CrudController { + return this; + } + @UseInterceptors(CrudRequestInterceptor) + @Get("/emails") + async emails(@ParsedRequest() req: CrudRequest) { + return this.service.find({select: ["email"]}); + } +} +``` + +## Route options + +You can define which routes (from the generated ones) should be exposed or excluded. To achieve that, you may use the `only` and `exclude` options. + +Additionally, you can set options for each generated route: + +* `interceptors`: an array of your custom interceptors +* `decorators`: an array of your custom decorators +* `allowParamsOverride`: whether or not to allow body data to be overwritten by the URL params on PATH request. Default: `false` +* `returnDeleted`: whether or not an entity object should be returned in the response body on DELETE request. Default: `false` +* `returnShallow`: whether or not to return a shallow entity + +```typescript +@Crud({ + ... + routes?: { + exclude: BaseRouteName[], + only: BaseRouteName[], + getManyBase: { + interceptors: [], + decorators: [], + }, + getOneBase: { + interceptors: [], + decorators: [], + }, + createOneBase: { + interceptors: [], + decorators: [], + returnShallow: boolean; + }, + createManyBase: { + interceptors: [], + decorators: [], + }, + updateOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: boolean, + returnShallow: boolean; + }, + replaceOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: boolean, + returnShallow: boolean; + }, + deleteOneBase: { + interceptors: [], + decorators: [], + returnDeleted: boolean, + }, + }, + ... +}) +``` +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/serialization.md b/packages/crudx/docs/serialization.md new file mode 100644 index 000000000..21896a436 --- /dev/null +++ b/packages/crudx/docs/serialization.md @@ -0,0 +1,87 @@ + +# Response Serialization + +Serialization is performed using [class-transformer](https://github.com/typestack/class-transformer), which is already included and turned ON in each route. + +You can define it right on your `model` (the same as you've defined in your `@Crud` option `model.type`), or set it up by using DTOs. + +The following example shows how to set it up on your entity: + +```typescript +@Crud({ + model: { + type: Contract, + }, +}) +@Controller("/users/:userId/contracts") +export class ContractController implements CrudController{ + getMany?: Type | false, + get?: Type | false, + create?: Type | false, + createMany?: Type | false, + update?: Type | false, + replace?: Type | false, + delete?: Type | false, + recover?: Type | false, + } +}) +``` + +So, here's a sample: + +```typescript +@Crud({ + ... + serialize: { + create: ContractCreateResponseDto, + } +}) +... +``` + +```typescript +import { Exclude } from "class-transformer"; + +export class ContractCreateResponseDto { + readonly id: number; + + @Exclude() + readonly userId: string; + + readonly contractNumber: string; + readonly startedAt: string; + readonly note: string; +} +``` + +
+
+ web development has never been so fun
+ www.2am.tech +
\ No newline at end of file diff --git a/packages/crudx/docs/validation.md b/packages/crudx/docs/validation.md new file mode 100644 index 000000000..081d2f9e0 --- /dev/null +++ b/packages/crudx/docs/validation.md @@ -0,0 +1,103 @@ + +# Request Validation + +Query params and path params validations are performed by an interceptor. It parses query and path parameters and then validates them. + +Body request validation is done by NestJS `ValidationPipe`. + +You can define the validation rules directly on your `model`, which is the same as defined in the `@Crud` options `model.type`. You can also distinguish them by `create` and `update` methods. + +You can use the `class-validator` library to achieve this: + +```typescript +... +import { + IsDateString, + IsNotEmpty, + IsOptional, + IsString, + MaxLength +} from "class-validator"; + +const { CREATE, UPDATE } = CrudValidationGroups; + +@Entity() +export class Contract extends BaseEntity { + @PrimaryGeneratedColumn() + id: number; + + @Column({name: "userId"}) + userId: string; + + @MaxLength(60) + @Column({name: "contractNumber", type: "varchar", length: 60}) + contractNumber: string; + + @IsNotEmpty() + @IsDateString() + @Column({name: "startedAt", type: "date"}) + startedAt: Date; + + @Column({name: "note", type: "varchar", length: "11", default: ""}) + @IsOptional({ groups: [UPDATE] }) + @IsString() + note: string; + + @ManyToOne((type) => User, (user) => user.id) + @JoinColumn({ + referencedColumnName: "id", + foreignKeyConstraintName: "contact_user", + }) + user: User; +} +``` + +Alternatively, you can define a DTO (Data Transfer Object) for create, update, and replace operations using the `@Crud` `DTO` option. Let's take a look at how we can set this up: + +```typescript +@Crud({ + model: { + type: Contract, + }, + dto: { + create: ContractCreateDto, + //update: ..., + //replace: ..., + } +} +@Controller("/users/:userId/contracts") +export class ContractController implements CrudController { + ... +} +``` + +```typescript +import { CrudValidationGroups } from "@2amtech/crudx"; +import { IsDateString, IsNotEmpty, IsOptional, IsString, MaxLength } from "class-validator"; +import { Column } from "typeorm"; + +const { CREATE, UPDATE } = CrudValidationGroups; + +export class ContractCreateDto { + @MaxLength(60) + @Column({name: "contractNumber", type: "varchar", length: 60}) + contractNumber: string; + + @IsNotEmpty() + @IsDateString() + @Column({name: "startedAt", type: "date"}) + startedAt: Date; + + @Column({name: "note", type: "varchar", length: "11", default: ""}) + @IsOptional({ groups: [UPDATE] }) + @IsString() + note: string; +} +``` +As you can see in the sample, you can either use the `class-validation` groups to specify the CRUD operation for which this validation is being built, or create a DTO for each operation. + +
+
+ web development has never been so fun
+ www.2am.tech +
diff --git a/packages/crudx/jest.config.ts b/packages/crudx/jest.config.ts new file mode 100644 index 000000000..33066407e --- /dev/null +++ b/packages/crudx/jest.config.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +export default { + displayName: "crudx-tests", + preset: "../../jest.preset.js", + testEnvironment: "node", + transform: { + "^.+\\.[tj]s$": ["ts-jest", { tsconfig: "/tsconfig.spec.json" }], + }, + moduleFileExtensions: ["ts", "js", "html"], + coverageDirectory: "../../coverage/packages/crudx", +}; diff --git a/packages/crudx/node_modules/.package-lock.json b/packages/crudx/node_modules/.package-lock.json new file mode 100644 index 000000000..bae8b0d14 --- /dev/null +++ b/packages/crudx/node_modules/.package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "@2amtech/crudx", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + } + } +} diff --git a/packages/crudx/node_modules/tslib/CopyrightNotice.txt b/packages/crudx/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 000000000..0e4254236 --- /dev/null +++ b/packages/crudx/node_modules/tslib/CopyrightNotice.txt @@ -0,0 +1,15 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + diff --git a/packages/crudx/node_modules/tslib/LICENSE.txt b/packages/crudx/node_modules/tslib/LICENSE.txt new file mode 100644 index 000000000..bfe6430cb --- /dev/null +++ b/packages/crudx/node_modules/tslib/LICENSE.txt @@ -0,0 +1,12 @@ +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/packages/crudx/node_modules/tslib/README.md b/packages/crudx/node_modules/tslib/README.md new file mode 100644 index 000000000..290cc618f --- /dev/null +++ b/packages/crudx/node_modules/tslib/README.md @@ -0,0 +1,164 @@ +# tslib + +This is a runtime library for [TypeScript](https://www.typescriptlang.org/) that contains all of the TypeScript helper functions. + +This library is primarily used by the `--importHelpers` flag in TypeScript. +When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file: + +```ts +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +exports.x = {}; +exports.y = __assign({}, exports.x); + +``` + +will instead be emitted as something like the following: + +```ts +var tslib_1 = require("tslib"); +exports.x = {}; +exports.y = tslib_1.__assign({}, exports.x); +``` + +Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead. +For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`. + +# Installing + +For the latest stable version, run: + +## npm + +```sh +# TypeScript 3.9.2 or later +npm install tslib + +# TypeScript 3.8.4 or earlier +npm install tslib@^1 + +# TypeScript 2.3.2 or earlier +npm install tslib@1.6.1 +``` + +## yarn + +```sh +# TypeScript 3.9.2 or later +yarn add tslib + +# TypeScript 3.8.4 or earlier +yarn add tslib@^1 + +# TypeScript 2.3.2 or earlier +yarn add tslib@1.6.1 +``` + +## bower + +```sh +# TypeScript 3.9.2 or later +bower install tslib + +# TypeScript 3.8.4 or earlier +bower install tslib@^1 + +# TypeScript 2.3.2 or earlier +bower install tslib@1.6.1 +``` + +## JSPM + +```sh +# TypeScript 3.9.2 or later +jspm install tslib + +# TypeScript 3.8.4 or earlier +jspm install tslib@^1 + +# TypeScript 2.3.2 or earlier +jspm install tslib@1.6.1 +``` + +# Usage + +Set the `importHelpers` compiler option on the command line: + +``` +tsc --importHelpers file.ts +``` + +or in your tsconfig.json: + +```json +{ + "compilerOptions": { + "importHelpers": true + } +} +``` + +#### For bower and JSPM users + +You will need to add a `paths` mapping for `tslib`, e.g. For Bower users: + +```json +{ + "compilerOptions": { + "module": "amd", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["bower_components/tslib/tslib.d.ts"] + } + } +} +``` + +For JSPM users: + +```json +{ + "compilerOptions": { + "module": "system", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"] + } + } +} +``` + +## Deployment + +- Choose your new version number +- Set it in `package.json` and `bower.json` +- Create a tag: `git tag [version]` +- Push the tag: `git push --tags` +- Create a [release in GitHub](https://github.com/microsoft/tslib/releases) +- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow + +Done. + +# Contribute + +There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript. + +* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in. +* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls). +* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript). +* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter. +* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). + +# Documentation + +* [Quick tutorial](http://www.typescriptlang.org/Tutorial) +* [Programming handbook](http://www.typescriptlang.org/Handbook) +* [Homepage](http://www.typescriptlang.org/) diff --git a/packages/crudx/node_modules/tslib/SECURITY.md b/packages/crudx/node_modules/tslib/SECURITY.md new file mode 100644 index 000000000..869fdfe2b --- /dev/null +++ b/packages/crudx/node_modules/tslib/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + diff --git a/packages/crudx/node_modules/tslib/modules/index.d.ts b/packages/crudx/node_modules/tslib/modules/index.d.ts new file mode 100644 index 000000000..0fedae881 --- /dev/null +++ b/packages/crudx/node_modules/tslib/modules/index.d.ts @@ -0,0 +1,37 @@ +// Note: named reexports are used instead of `export *` because +// TypeScript itself doesn't resolve the `export *` when checking +// if a particular helper exists. +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __createBinding, + __addDisposableResource, + __disposeResources, +} from '../tslib.js'; +export * as default from '../tslib.js'; diff --git a/packages/crudx/node_modules/tslib/modules/index.js b/packages/crudx/node_modules/tslib/modules/index.js new file mode 100644 index 000000000..af9f5ac4e --- /dev/null +++ b/packages/crudx/node_modules/tslib/modules/index.js @@ -0,0 +1,68 @@ +import tslib from '../tslib.js'; +const { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, +} = tslib; +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, +}; +export default tslib; diff --git a/packages/crudx/node_modules/tslib/modules/package.json b/packages/crudx/node_modules/tslib/modules/package.json new file mode 100644 index 000000000..aafa0e4b4 --- /dev/null +++ b/packages/crudx/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/packages/crudx/node_modules/tslib/package.json b/packages/crudx/node_modules/tslib/package.json new file mode 100644 index 000000000..0a1fdec5d --- /dev/null +++ b/packages/crudx/node_modules/tslib/package.json @@ -0,0 +1,47 @@ +{ + "name": "tslib", + "author": "Microsoft Corp.", + "homepage": "https://www.typescriptlang.org/", + "version": "2.6.2", + "license": "0BSD", + "description": "Runtime library for TypeScript helper functions", + "keywords": [ + "TypeScript", + "Microsoft", + "compiler", + "language", + "javascript", + "tslib", + "runtime" + ], + "bugs": { + "url": "https://github.com/Microsoft/TypeScript/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/tslib.git" + }, + "main": "tslib.js", + "module": "tslib.es6.js", + "jsnext:main": "tslib.es6.js", + "typings": "tslib.d.ts", + "sideEffects": false, + "exports": { + ".": { + "module": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + }, + "import": { + "node": "./modules/index.js", + "default": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + } + }, + "default": "./tslib.js" + }, + "./*": "./*", + "./": "./" + } +} diff --git a/packages/crudx/node_modules/tslib/tslib.d.ts b/packages/crudx/node_modules/tslib/tslib.d.ts new file mode 100644 index 000000000..104369b3b --- /dev/null +++ b/packages/crudx/node_modules/tslib/tslib.d.ts @@ -0,0 +1,453 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +/** + * Used to shim class extends. + * + * @param d The derived class. + * @param b The base class. + */ +export declare function __extends(d: Function, b: Function): void; + +/** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * + * @param t The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ +export declare function __assign(t: any, ...sources: any[]): any; + +/** + * Performs a rest spread on an object. + * + * @param t The source value. + * @param propertyNames The property names excluded from the rest spread. + */ +export declare function __rest(t: any, propertyNames: (string | symbol)[]): any; + +/** + * Applies decorators to a target object + * + * @param decorators The set of decorators to apply. + * @param target The target object. + * @param key If specified, the own property to apply the decorators to. + * @param desc The property descriptor, defaults to fetching the descriptor from the target object. + * @experimental + */ +export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; + +/** + * Creates an observing function decorator from a parameter decorator. + * + * @param paramIndex The parameter index to apply the decorator to. + * @param decorator The parameter decorator to apply. Note that the return value is ignored. + * @experimental + */ +export declare function __param(paramIndex: number, decorator: Function): Function; + +/** + * Applies decorators to a class or class member, following the native ECMAScript decorator specification. + * @param ctor For non-field class members, the class constructor. Otherwise, `null`. + * @param descriptorIn The `PropertyDescriptor` to use when unable to look up the property from `ctor`. + * @param decorators The decorators to apply + * @param contextIn The `DecoratorContext` to clone for each decorator application. + * @param initializers An array of field initializer mutation functions into which new initializers are written. + * @param extraInitializers An array of extra initializer functions into which new initializers are written. + */ +export declare function __esDecorate(ctor: Function | null, descriptorIn: object | null, decorators: Function[], contextIn: object, initializers: Function[] | null, extraInitializers: Function[]): void; + +/** + * Runs field initializers or extra initializers generated by `__esDecorate`. + * @param thisArg The `this` argument to use. + * @param initializers The array of initializers to evaluate. + * @param value The initial value to pass to the initializers. + */ +export declare function __runInitializers(thisArg: unknown, initializers: Function[], value?: any): any; + +/** + * Converts a computed property name into a `string` or `symbol` value. + */ +export declare function __propKey(x: any): string | symbol; + +/** + * Assigns the name of a function derived from the left-hand side of an assignment. + * @param f The function to rename. + * @param name The new name for the function. + * @param prefix A prefix (such as `"get"` or `"set"`) to insert before the name. + */ +export declare function __setFunctionName(f: Function, name: string | symbol, prefix?: string): Function; + +/** + * Creates a decorator that sets metadata. + * + * @param metadataKey The metadata key + * @param metadataValue The metadata value + * @experimental + */ +export declare function __metadata(metadataKey: any, metadataValue: any): Function; + +/** + * Converts a generator function into a pseudo-async function, by treating each `yield` as an `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param P The optional promise constructor argument, defaults to the `Promise` property of the global object. + * @param generator The generator function + */ +export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; + +/** + * Creates an Iterator object using the body as the implementation. + * + * @param thisArg The reference to use as the `this` value in the function + * @param body The generator state-machine based implementation. + * + * @see [./docs/generator.md] + */ +export declare function __generator(thisArg: any, body: Function): any; + +/** + * Creates bindings for all enumerable properties of `m` on `exports` + * + * @param m The source object + * @param exports The `exports` object. + */ +export declare function __exportStar(m: any, o: any): void; + +/** + * Creates a value iterator from an `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `Iterable`, nor an `ArrayLike`. + */ +export declare function __values(o: any): any; + +/** + * Reads values from an `Iterable` or `ArrayLike` object and returns the resulting array. + * + * @param o The object to read from. + * @param n The maximum number of arguments to read, defaults to `Infinity`. + */ +export declare function __read(o: any, n?: number): any[]; + +/** + * Creates an array from iterable spread. + * + * @param args The Iterable objects to spread. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spread(...args: any[][]): any[]; + +/** + * Creates an array from array spread. + * + * @param args The ArrayLikes to spread into the resulting array. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spreadArrays(...args: any[][]): any[]; + +/** + * Spreads the `from` array into the `to` array. + * + * @param pack Replace empty elements with `undefined`. + */ +export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[]; + +/** + * Creates an object that signals to `__asyncGenerator` that it shouldn't be yielded, + * and instead should be awaited and the resulting value passed back to the generator. + * + * @param v The value to await. + */ +export declare function __await(v: any): any; + +/** + * Converts a generator function into an async generator function, by using `yield __await` + * in place of normal `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param generator The generator function + */ +export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any; + +/** + * Used to wrap a potentially async iterator in such a way so that it wraps the result + * of calling iterator methods of `o` in `__await` instances, and then yields the awaited values. + * + * @param o The potentially async iterator. + * @returns A synchronous iterator yielding `__await` instances on every odd invocation + * and returning the awaited `IteratorResult` passed to `next` every even invocation. + */ +export declare function __asyncDelegator(o: any): any; + +/** + * Creates a value async iterator from an `AsyncIterable`, `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `AsyncIterable`, `Iterable`, nor an `ArrayLike`. + */ +export declare function __asyncValues(o: any): any; + +/** + * Creates a `TemplateStringsArray` frozen object from the `cooked` and `raw` arrays. + * + * @param cooked The cooked possibly-sparse array. + * @param raw The raw string content. + */ +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; + +/** + * Used to shim default and named imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default, { Named, Other } from "mod"; + * // or + * import { default as Default, Named, Other } from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importStar(mod: T): T; + +/** + * Used to shim default imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importDefault(mod: T): T | { default: T }; + +/** + * Emulates reading a private instance field. + * + * @param receiver The instance from which to read the private field. + * @param state A WeakMap containing the private field value for an instance. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean, get(o: T): V | undefined }, + kind?: "f" +): V; + +/** + * Emulates reading a private static field. + * + * @param receiver The object from which to read the private static field. + * @param state The class constructor containing the definition of the static field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates evaluating a private instance "get" accessor. + * + * @param receiver The instance on which to evaluate the private "get" accessor. + * @param state A WeakSet used to verify an instance supports the private "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean }, + kind: "a", + f: () => V +): V; + +/** + * Emulates evaluating a private static "get" accessor. + * + * @param receiver The object on which to evaluate the private static "get" accessor. + * @param state The class constructor containing the definition of the static "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "a", + f: () => V +): V; + +/** + * Emulates reading a private instance method. + * + * @param receiver The instance from which to read a private method. + * @param state A WeakSet used to verify an instance supports the private method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private instance method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet unknown>( + receiver: T, + state: { has(o: T): boolean }, + kind: "m", + f: V +): V; + +/** + * Emulates reading a private static method. + * + * @param receiver The object from which to read the private static method. + * @param state The class constructor containing the definition of the static method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private static method. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V extends (...args: any[]) => unknown>( + receiver: T, + state: T, + kind: "m", + f: V +): V; + +/** + * Emulates writing to a private instance field. + * + * @param receiver The instance on which to set a private field value. + * @param state A WeakMap used to store the private field value for an instance. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean, set(o: T, value: V): unknown }, + value: V, + kind?: "f" +): V; + +/** + * Emulates writing to a private static field. + * + * @param receiver The object on which to set the private static field. + * @param state The class constructor containing the definition of the private static field. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates writing to a private instance "set" accessor. + * + * @param receiver The instance on which to evaluate the private instance "set" accessor. + * @param state A WeakSet used to verify an instance supports the private "set" accessor. + * @param value The value to store in the private accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean }, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Emulates writing to a private static "set" accessor. + * + * @param receiver The object on which to evaluate the private static "set" accessor. + * @param state The class constructor containing the definition of the static "set" accessor. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Checks for the existence of a private field/method/accessor. + * + * @param state The class constructor containing the static member, or the WeakMap or WeakSet associated with a private instance member. + * @param receiver The object for which to test the presence of the private member. + */ +export declare function __classPrivateFieldIn( + state: (new (...args: any[]) => unknown) | { has(o: any): boolean }, + receiver: unknown, +): boolean; + +/** + * Creates a re-export binding on `object` with key `objectKey` that references `target[key]`. + * + * @param object The local `exports` object. + * @param target The object to re-export from. + * @param key The property key of `target` to re-export. + * @param objectKey The property key to re-export as. Defaults to `key`. + */ +export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void; + +/** + * Adds a disposable resource to a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @param value Either a Disposable or AsyncDisposable object, `null`, or `undefined`. + * @param async When `true`, `AsyncDisposable` resources can be added. When `false`, `AsyncDisposable` resources cannot be added. + * @returns The {@link value} argument. + * + * @throws {TypeError} If {@link value} is not an object, or if either `Symbol.dispose` or `Symbol.asyncDispose` are not + * defined, or if {@link value} does not have an appropriate `Symbol.dispose` or `Symbol.asyncDispose` method. + */ +export declare function __addDisposableResource(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }, value: T, async: boolean): T; + +/** + * Disposes all resources in a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @returns A {@link Promise} if any resources in the environment were marked as `async` when added; otherwise, `void`. + * + * @throws {SuppressedError} if an error thrown during disposal would have suppressed a prior error from disposal or the + * error recorded in the resource-tracking environment object. + * @seealso {@link __addDisposableResource} + */ +export declare function __disposeResources(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }): any; diff --git a/packages/crudx/node_modules/tslib/tslib.es6.html b/packages/crudx/node_modules/tslib/tslib.es6.html new file mode 100644 index 000000000..b122e41b0 --- /dev/null +++ b/packages/crudx/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/crudx/node_modules/tslib/tslib.es6.js b/packages/crudx/node_modules/tslib/tslib.es6.js new file mode 100644 index 000000000..7be1c9430 --- /dev/null +++ b/packages/crudx/node_modules/tslib/tslib.es6.js @@ -0,0 +1,370 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + function next() { + while (env.stack.length) { + var rec = env.stack.pop(); + try { + var result = rec.dispose && rec.dispose.call(rec.value); + if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + catch (e) { + fail(e); + } + } + if (env.hasError) throw env.error; + } + return next(); +} + +export default { + __extends: __extends, + __assign: __assign, + __rest: __rest, + __decorate: __decorate, + __param: __param, + __metadata: __metadata, + __awaiter: __awaiter, + __generator: __generator, + __createBinding: __createBinding, + __exportStar: __exportStar, + __values: __values, + __read: __read, + __spread: __spread, + __spreadArrays: __spreadArrays, + __spreadArray: __spreadArray, + __await: __await, + __asyncGenerator: __asyncGenerator, + __asyncDelegator: __asyncDelegator, + __asyncValues: __asyncValues, + __makeTemplateObject: __makeTemplateObject, + __importStar: __importStar, + __importDefault: __importDefault, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldSet: __classPrivateFieldSet, + __classPrivateFieldIn: __classPrivateFieldIn, + __addDisposableResource: __addDisposableResource, + __disposeResources: __disposeResources, +}; diff --git a/packages/crudx/node_modules/tslib/tslib.es6.mjs b/packages/crudx/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 000000000..c8e299934 --- /dev/null +++ b/packages/crudx/node_modules/tslib/tslib.es6.mjs @@ -0,0 +1,370 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + function next() { + while (env.stack.length) { + var rec = env.stack.pop(); + try { + var result = rec.dispose && rec.dispose.call(rec.value); + if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + catch (e) { + fail(e); + } + } + if (env.hasError) throw env.error; + } + return next(); +} + +export default { + __extends, + __assign, + __rest, + __decorate, + __param, + __metadata, + __awaiter, + __generator, + __createBinding, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, +}; diff --git a/packages/crudx/node_modules/tslib/tslib.html b/packages/crudx/node_modules/tslib/tslib.html new file mode 100644 index 000000000..44c9ba51e --- /dev/null +++ b/packages/crudx/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/crudx/node_modules/tslib/tslib.js b/packages/crudx/node_modules/tslib/tslib.js new file mode 100644 index 000000000..343ecded4 --- /dev/null +++ b/packages/crudx/node_modules/tslib/tslib.js @@ -0,0 +1,421 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global global, define, Symbol, Reflect, Promise, SuppressedError */ +var __extends; +var __assign; +var __rest; +var __decorate; +var __param; +var __esDecorate; +var __runInitializers; +var __propKey; +var __setFunctionName; +var __metadata; +var __awaiter; +var __generator; +var __exportStar; +var __values; +var __read; +var __spread; +var __spreadArrays; +var __spreadArray; +var __await; +var __asyncGenerator; +var __asyncDelegator; +var __asyncValues; +var __makeTemplateObject; +var __importStar; +var __importDefault; +var __classPrivateFieldGet; +var __classPrivateFieldSet; +var __classPrivateFieldIn; +var __createBinding; +var __addDisposableResource; +var __disposeResources; +(function (factory) { + var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {}; + if (typeof define === "function" && define.amd) { + define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); }); + } + else if (typeof module === "object" && typeof module.exports === "object") { + factory(createExporter(root, createExporter(module.exports))); + } + else { + factory(createExporter(root)); + } + function createExporter(exports, previous) { + if (exports !== root) { + if (typeof Object.create === "function") { + Object.defineProperty(exports, "__esModule", { value: true }); + } + else { + exports.__esModule = true; + } + } + return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; + } +}) +(function (exporter) { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + + __extends = function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + + __assign = Object.assign || function (t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + + __rest = function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + + __decorate = function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + + __param = function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } + }; + + __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + }; + + __runInitializers = function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + }; + + __propKey = function (x) { + return typeof x === "symbol" ? x : "".concat(x); + }; + + __setFunctionName = function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + }; + + __metadata = function (metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + }; + + __awaiter = function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + + __generator = function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + + __exportStar = function(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); + }; + + __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + }); + + __values = function (o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + + __read = function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + }; + + /** @deprecated */ + __spread = function () { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + }; + + /** @deprecated */ + __spreadArrays = function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; + }; + + __spreadArray = function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + + __await = function (v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + }; + + __asyncGenerator = function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + }; + + __asyncDelegator = function (o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } + }; + + __asyncValues = function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + }; + + __makeTemplateObject = function (cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; + }; + + var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }; + + __importStar = function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; + }; + + __importDefault = function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + + __classPrivateFieldGet = function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); + }; + + __classPrivateFieldSet = function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; + }; + + __classPrivateFieldIn = function (state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); + }; + + __addDisposableResource = function (env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + }; + + var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + __disposeResources = function (env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + function next() { + while (env.stack.length) { + var rec = env.stack.pop(); + try { + var result = rec.dispose && rec.dispose.call(rec.value); + if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + catch (e) { + fail(e); + } + } + if (env.hasError) throw env.error; + } + return next(); + }; + + exporter("__extends", __extends); + exporter("__assign", __assign); + exporter("__rest", __rest); + exporter("__decorate", __decorate); + exporter("__param", __param); + exporter("__esDecorate", __esDecorate); + exporter("__runInitializers", __runInitializers); + exporter("__propKey", __propKey); + exporter("__setFunctionName", __setFunctionName); + exporter("__metadata", __metadata); + exporter("__awaiter", __awaiter); + exporter("__generator", __generator); + exporter("__exportStar", __exportStar); + exporter("__createBinding", __createBinding); + exporter("__values", __values); + exporter("__read", __read); + exporter("__spread", __spread); + exporter("__spreadArrays", __spreadArrays); + exporter("__spreadArray", __spreadArray); + exporter("__await", __await); + exporter("__asyncGenerator", __asyncGenerator); + exporter("__asyncDelegator", __asyncDelegator); + exporter("__asyncValues", __asyncValues); + exporter("__makeTemplateObject", __makeTemplateObject); + exporter("__importStar", __importStar); + exporter("__importDefault", __importDefault); + exporter("__classPrivateFieldGet", __classPrivateFieldGet); + exporter("__classPrivateFieldSet", __classPrivateFieldSet); + exporter("__classPrivateFieldIn", __classPrivateFieldIn); + exporter("__addDisposableResource", __addDisposableResource); + exporter("__disposeResources", __disposeResources); +}); diff --git a/packages/crudx/package.json b/packages/crudx/package.json new file mode 100644 index 000000000..c11f8121e --- /dev/null +++ b/packages/crudx/package.json @@ -0,0 +1,57 @@ +{ + "name": "@2amtech/crudx", + "author": "Antonio Ramirez Cobos (https://2am.tech/)", + "contributors": [ + { + "name": "Jonatas Souza", + "email": "hola@2amigos.us" + }, + { + "name": "Aleksandar Panic", + "email": "hola@2amigos.us" + } + ], + "description": "NestJs CRUD for RESTful APIs - request query builder", + "version": "1.0.1", + "dependencies": { + "tslib": "^2.3.0", + "@nestjs/common": "^10.1.3", + "@nestjs/typeorm": "^10.0.0", + "typeorm": "^0.3.17", + "rxjs": "^7.8.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.0", + "deepmerge": "^4.3.1", + "lodash": "^4.17.21", + "@types/qs": "^6.9.7", + "@zmotivat0r/o0": "^1.0.2" + }, + "devDependencies": { + "supertest": "^6.3.4", + "@types/uuid": "^9.0.8" + }, + "keywords": [ + "typescript", + "typeorm", + "nest", + "nestjs", + "rest", + "restful", + "api", + "crud", + "crud-generator", + "http", + "request", + "request-query", + "requestquery", + "get", + "query", + "query-string", + "querystring", + "query-builder", + "querybuilder" + ], + "type": "commonjs", + "main": "./src/index.js", + "typings": "./src/index.d.ts" +} diff --git a/packages/crudx/project.json b/packages/crudx/project.json new file mode 100644 index 000000000..b9483a9aa --- /dev/null +++ b/packages/crudx/project.json @@ -0,0 +1,63 @@ +{ + "name": "crudx", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/crudx/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/packages/crudx", + "main": "packages/crudx/src/index.ts", + "tsConfig": "packages/crudx/tsconfig.lib.json", + "assets": ["packages/crudx/*.md", "packages/crudx/.npmignore"] + } + }, + "build-npm": { + "executor": "@nx/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/packages/crudx", + "main": "packages/crudx/src/index.ts", + "tsConfig": "packages/crudx/tsconfig.lib.json", + "assets": [ + "packages/crudx/README.md", + "packages/crudx/LICENSE", + "packages/crudx/.npmignore" + ] + } + }, + "publish": { + "command": "node tools/scripts/publish.mjs crudx", + "dependsOn": ["build-npm"] + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "packages/crudx/**/*.ts", + "packages/crudx/package.json" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "runInBand": true, + "jestConfig": "packages/crudx/jest.config.ts", + "passWithNoTests": true, + "testPathPattern": ["tests/*"] + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/packages/crudx/src/constants.ts b/packages/crudx/src/constants.ts new file mode 100644 index 000000000..3b91fa6ea --- /dev/null +++ b/packages/crudx/src/constants.ts @@ -0,0 +1,12 @@ +export const REQUEST_DELIM: string = "||"; +export const REQUEST_DELIM_STR: string = ","; +export const REQUEST_PREFIX_EXTRA: string = "extra."; +export const FEATURE_NAME_METADATA: string = "CRUDX_FEATURE_NAME_METADATA"; +export const ACTION_NAME_METADATA: string = "CRUDX_ACTION_NAME_METADATA"; +export const OVERRIDE_METHOD_METADATA: string = + "CRUDX_OVERRIDE_METHOD_METADATA"; +export const PARSED_BODY_METADATA: string = "CRUDX_PARSED_BODY_METADATA"; +export const PARSED_CRUD_REQUEST_KEY: string = "CRUDX_PARSED_CRUD_REQUEST_KEY"; +export const CRUD_OPTIONS_METADATA: string = "CRUDX_CRUD_OPTIONS_METADATA"; +export const CRUD_AUTH_OPTIONS_METADATA: string = + "CRUDX_CRUD_AUTH_OPTIONS_METADATA"; diff --git a/packages/crudx/src/decorators/crud-auth.decorator.ts b/packages/crudx/src/decorators/crud-auth.decorator.ts new file mode 100644 index 000000000..cca04e78a --- /dev/null +++ b/packages/crudx/src/decorators/crud-auth.decorator.ts @@ -0,0 +1,8 @@ +import { R } from "../helpers"; +import { AuthOptions } from "../interfaces"; + +export const CrudAuth = + (options: AuthOptions) => + (target: Object): void => { + R.setCrudAuthOptions(options, target); + }; diff --git a/packages/crudx/src/decorators/crud.decorator.ts b/packages/crudx/src/decorators/crud.decorator.ts new file mode 100644 index 000000000..e8a83ee63 --- /dev/null +++ b/packages/crudx/src/decorators/crud.decorator.ts @@ -0,0 +1,13 @@ +import { isUndefined } from "lodash"; + +import { CrudOptions } from "../interfaces"; +import { CrudConfigService, RoutesFactoryService } from "../services"; + +export const Crud = + (options: CrudOptions) => + (target: Object): void => { + const factoryMethod = options.routesFactory || RoutesFactoryService; + const factory: RoutesFactoryService = isUndefined(CrudConfigService.config?.routesFactory) + ? new factoryMethod(target, options) + : new CrudConfigService.config.routesFactory(target, options); + }; diff --git a/packages/crudx/src/decorators/feature-action.decorator.ts b/packages/crudx/src/decorators/feature-action.decorator.ts new file mode 100644 index 000000000..45911d693 --- /dev/null +++ b/packages/crudx/src/decorators/feature-action.decorator.ts @@ -0,0 +1,12 @@ +import { SetMetadata, Type } from "@nestjs/common"; + +import { ACTION_NAME_METADATA, FEATURE_NAME_METADATA } from "../constants"; + +export const Feature = (name: string) => + SetMetadata(FEATURE_NAME_METADATA, name); +export const Action = (name: string) => SetMetadata(ACTION_NAME_METADATA, name); + +export const getFeature = (target: Type) => + Reflect.getMetadata(FEATURE_NAME_METADATA, target); +export const getAction = (target: Function) => + Reflect.getMetadata(ACTION_NAME_METADATA, target); diff --git a/packages/crudx/src/decorators/index.ts b/packages/crudx/src/decorators/index.ts new file mode 100644 index 000000000..da8babe6b --- /dev/null +++ b/packages/crudx/src/decorators/index.ts @@ -0,0 +1,6 @@ +export * from "./crud.decorator"; +export * from "./crud-auth.decorator"; +export * from "./override.decorator"; +export * from "./parsed-request.decorator"; +export * from "./parsed-body.decorator"; +export * from "./feature-action.decorator"; diff --git a/packages/crudx/src/decorators/override.decorator.ts b/packages/crudx/src/decorators/override.decorator.ts new file mode 100644 index 000000000..21ab729ec --- /dev/null +++ b/packages/crudx/src/decorators/override.decorator.ts @@ -0,0 +1,13 @@ +import { BaseRouteName } from "../types"; +import { OVERRIDE_METHOD_METADATA } from "../constants"; + +export const Override = + (name?: BaseRouteName) => + (target: any, key: any, descriptor: PropertyDescriptor) => { + Reflect.defineMetadata( + OVERRIDE_METHOD_METADATA, + name || `${key}Base`, + target[key] + ); + return descriptor; + }; diff --git a/packages/crudx/src/decorators/parsed-body.decorator.ts b/packages/crudx/src/decorators/parsed-body.decorator.ts new file mode 100644 index 000000000..cda520c4d --- /dev/null +++ b/packages/crudx/src/decorators/parsed-body.decorator.ts @@ -0,0 +1,7 @@ +import { PARSED_BODY_METADATA } from "../constants"; + +export const ParsedBody = + () => + (target: any, key: string, index: any): void => { + Reflect.defineMetadata(PARSED_BODY_METADATA, { index }, target[key]); + }; diff --git a/packages/crudx/src/decorators/parsed-request.decorator.ts b/packages/crudx/src/decorators/parsed-request.decorator.ts new file mode 100644 index 000000000..41cce6f20 --- /dev/null +++ b/packages/crudx/src/decorators/parsed-request.decorator.ts @@ -0,0 +1,10 @@ +import { createParamDecorator } from "@nestjs/common"; + +import { PARSED_CRUD_REQUEST_KEY } from "../constants"; +import { R } from "../helpers"; + +export const ParsedRequest = createParamDecorator( + (_, ctx): ParameterDecorator => { + return R.getContextRequest(ctx)[PARSED_CRUD_REQUEST_KEY]; + } +); diff --git a/packages/crudx/src/enums/crud-actions.enum.ts b/packages/crudx/src/enums/crud-actions.enum.ts new file mode 100644 index 000000000..e0b59a1d3 --- /dev/null +++ b/packages/crudx/src/enums/crud-actions.enum.ts @@ -0,0 +1,11 @@ +export enum CrudActions { + ReadAll = "Read-All", + ReadOne = "Read-One", + CreateOne = "Create-One", + CreateMany = "Create-Many", + UpdateOne = "Update-One", + ReplaceOne = "Replace-One", + DeleteOne = "Delete-One", + DeleteAll = "Delete-All", + RecoverOne = "Recover-One", +} diff --git a/packages/crudx/src/enums/crud-validation-groups.enum.ts b/packages/crudx/src/enums/crud-validation-groups.enum.ts new file mode 100644 index 000000000..92a4496f6 --- /dev/null +++ b/packages/crudx/src/enums/crud-validation-groups.enum.ts @@ -0,0 +1,4 @@ +export enum CrudValidationGroups { + CREATE = "CRUD-CREATE", + UPDATE = "CRUD-UPDATE", +} diff --git a/packages/crudx/src/enums/index.ts b/packages/crudx/src/enums/index.ts new file mode 100644 index 000000000..7178b877b --- /dev/null +++ b/packages/crudx/src/enums/index.ts @@ -0,0 +1,2 @@ +export * from "./crud-actions.enum"; +export * from "./crud-validation-groups.enum"; diff --git a/packages/crudx/src/exceptions/index.ts b/packages/crudx/src/exceptions/index.ts new file mode 100644 index 000000000..0943dfa38 --- /dev/null +++ b/packages/crudx/src/exceptions/index.ts @@ -0,0 +1 @@ +export * from "./request-query.exception"; diff --git a/packages/crudx/src/exceptions/request-query.exception.ts b/packages/crudx/src/exceptions/request-query.exception.ts new file mode 100644 index 000000000..51e70c2f5 --- /dev/null +++ b/packages/crudx/src/exceptions/request-query.exception.ts @@ -0,0 +1,5 @@ +export class RequestQueryException extends Error { + constructor(msg: string) { + super(msg); + } +} diff --git a/packages/crudx/src/helpers/checkers.helper.ts b/packages/crudx/src/helpers/checkers.helper.ts new file mode 100644 index 000000000..e3c2931e1 --- /dev/null +++ b/packages/crudx/src/helpers/checkers.helper.ts @@ -0,0 +1,45 @@ +import { + every, + isEqual, + isArray, + isBoolean, + isDate, + isEmpty, + isNumber, + isString, + keys, + isNil, +} from "lodash"; + +export const isArrayOfStrings = (arr: unknown[]): boolean => { + return isArray(arr) && every(arr, isString); +}; +export const isArrayFull = (val: any): boolean => + Array.isArray(val) && !isEmpty(val); + +export const isStringFull = (val: unknown): boolean => + isString(val) && !isEmpty(val); + +export const isArrayOfStringsFull = (val: any): boolean => + isArrayFull(val) && (val as string[]).every((v: string) => isStringFull(v)); + +export const isValue = (val: any): boolean => + isStringFull(val) || isNumber(val) || isBoolean(val) || isDate(val); +export const hasValue = (val: any): boolean => + isArrayFull(val) ? (val as any[]).every((o) => isValue(o)) : isValue(val); + +export const isDateString = (val: any): boolean => { + const timestamp: number = Date.parse(val); + return !isNaN(timestamp) && isDate(new Date(timestamp)); +}; + +export const isFalse = (val: any): boolean => val === false; + +export const isTrue = (val: any): boolean => val === true; + +export const isIn = (val: any, arr: any[] = []): boolean => + arr.some((o) => isEqual(val, o)); + +export const isObject = (val: any): boolean => + typeof val === "object" && !isNil(val); +export const isObjectFull = (val: any) => isObject(val) && keys(val).length > 0; diff --git a/packages/crudx/src/helpers/crud-validation.helper.ts b/packages/crudx/src/helpers/crud-validation.helper.ts new file mode 100644 index 000000000..f39a14ebb --- /dev/null +++ b/packages/crudx/src/helpers/crud-validation.helper.ts @@ -0,0 +1,53 @@ +import { ValidationPipe } from "@nestjs/common"; +import { isFalse } from "../helpers"; +import { isNil } from "lodash"; +import { CrudValidationGroups } from "../enums"; +import { CreateManyDto, CrudOptions, MergedCrudOptions } from "../interfaces"; +import { IsArray, ArrayNotEmpty, ValidateNested } from "class-validator"; +import { Type } from "class-transformer"; + +export class BulkDto implements CreateManyDto { + // @ts-ignore + bulk: T[]; +} + +export const getValidationPipe = ( + options: CrudOptions, + group?: CrudValidationGroups +): ValidationPipe | undefined => { + return !isFalse(options.validation) + ? new ValidationPipe({ + ...(options.validation || {}), + groups: group ? [group] : undefined, + }) + : undefined; +}; + +export const createBulkDto = (options: MergedCrudOptions): any => { + if (!isFalse(options.validation)) { + const hasDto: boolean = !isNil(options.dto?.create); + const groups: CrudValidationGroups[] | undefined = !hasDto + ? [CrudValidationGroups.CREATE] + : undefined; + const always: boolean | undefined = hasDto ? true : undefined; + const Model = hasDto ? options.dto?.create : options.model.type; + + class BulkDtoImpl implements CreateManyDto { + @IsArray({ groups, always }) + @ArrayNotEmpty({ groups, always }) + @ValidateNested({ each: true, groups, always }) + @Type(() => Model) + // @ts-ignore + bulk: T[]; + } + + Object.defineProperty(BulkDtoImpl, "name", { + writable: false, + value: `CreateMany${options.model.type.name}Dto`, + }); + + return BulkDtoImpl; + } else { + return BulkDto; + } +}; diff --git a/packages/crudx/src/helpers/index.ts b/packages/crudx/src/helpers/index.ts new file mode 100644 index 000000000..711e77651 --- /dev/null +++ b/packages/crudx/src/helpers/index.ts @@ -0,0 +1,6 @@ +export * from "./checkers.helper"; +export * from "./crud-validation.helper"; +export * from "./reflection.helper"; +export * from "./request-validation.helper"; +export * from "./serialize.helper"; +export * from "./safe-require.helper"; \ No newline at end of file diff --git a/packages/crudx/src/helpers/reflection.helper.ts b/packages/crudx/src/helpers/reflection.helper.ts new file mode 100644 index 000000000..48c370580 --- /dev/null +++ b/packages/crudx/src/helpers/reflection.helper.ts @@ -0,0 +1,170 @@ +import { RouteParamtypes } from "@nestjs/common/enums/route-paramtypes.enum"; +import { + CUSTOM_ROUTE_ARGS_METADATA, + INTERCEPTORS_METADATA, + METHOD_METADATA, + PARAMTYPES_METADATA, + PATH_METADATA, + ROUTE_ARGS_METADATA, +} from "@nestjs/common/constants"; +import { ArgumentsHost } from "@nestjs/common"; +import { isFunction } from "lodash"; +import { BaseRoute, MergedCrudOptions, AuthOptions } from "../interfaces"; +import { BaseRouteName } from "../types"; +import { + CRUD_OPTIONS_METADATA, + ACTION_NAME_METADATA, + PARSED_CRUD_REQUEST_KEY, + PARSED_BODY_METADATA, + OVERRIDE_METHOD_METADATA, + CRUD_AUTH_OPTIONS_METADATA, +} from "../constants"; +import { CrudActions } from "../enums"; + +export class R { + static set( + metadataKey: any, + metadataValue: any, + target: Object, + propertyKey: string | symbol | undefined = undefined + ): void { + if (propertyKey) { + Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey); + } else { + Reflect.defineMetadata(metadataKey, metadataValue, target); + } + } + + static get( + metadataKey: any, + target: Object, + propertyKey: string | symbol | undefined = undefined + ): T { + return propertyKey + ? Reflect.getMetadata(metadataKey, target, propertyKey) + : Reflect.getMetadata(metadataKey, target); + } + + static createCustomRouteArg( + paramType: string, + index: number, + pipes: any[] = [], + data: any = undefined + ): any { + // @ts-ignore + return { + [`${paramType}${CUSTOM_ROUTE_ARGS_METADATA}:${index}`]: { + index, + factory: (_: any, ctx: ArgumentsHost) => + R.getContextRequest(ctx)[paramType], + data, + pipes, + }, + }; + } + + static createRouteArg( + paramTypes: RouteParamtypes, + index: number, + pipes: any[] = [], + data: any = undefined + ): any { + return { + [`${paramTypes}:${index}`]: { + index, + pipes, + data, + }, + }; + } + + static setDecorators( + decorators: (PropertyDecorator | MethodDecorator)[], + target: object, + name: string + ): void { + // this makes metadata decorator works + const decoratedDescriptor: PropertyDescriptor = Reflect.decorate( + decorators, + target, + name, + Reflect.getOwnPropertyDescriptor(target, name) + ); + + // this makes proxy decorator works + Reflect.defineProperty(target, name, decoratedDescriptor); + } + + static setParsedRequestArg(index: number) { + return R.createCustomRouteArg(PARSED_CRUD_REQUEST_KEY, index); + } + + static setBodyArg(index: number, pipes: any[] = []) { + return R.createRouteArg(RouteParamtypes.BODY, index, pipes); + } + + static setCrudOptions(options: MergedCrudOptions, target: any) { + R.set(CRUD_OPTIONS_METADATA, options, target); + } + + static setRoute(route: BaseRoute, func: Function) { + R.set(PATH_METADATA, route.path, func); + R.set(METHOD_METADATA, route.method, func); + } + + static setInterceptors(interceptors: any[], func: Function) { + R.set(INTERCEPTORS_METADATA, interceptors, func); + } + + static setRouteArgs(metadata: any, target: any, name: string) { + R.set(ROUTE_ARGS_METADATA, metadata, target, name); + } + + static setRouteArgsTypes(metadata: any, target: any, name: string) { + R.set(PARAMTYPES_METADATA, metadata, target, name); + } + + static setAction(action: CrudActions, func: Function) { + R.set(ACTION_NAME_METADATA, action, func); + } + + static setCrudAuthOptions(metadata: any, target: any) { + R.set(CRUD_AUTH_OPTIONS_METADATA, metadata, target); + } + + static getCrudAuthOptions(target: any): AuthOptions { + return R.get(CRUD_AUTH_OPTIONS_METADATA, target); + } + + static getCrudOptions(target: any): MergedCrudOptions { + return R.get(CRUD_OPTIONS_METADATA, target); + } + + static getAction(func: Function): CrudActions { + return R.get(ACTION_NAME_METADATA, func); + } + + static getOverrideRoute(func: Function): BaseRouteName { + return R.get(OVERRIDE_METHOD_METADATA, func); + } + + static getInterceptors(func: Function): any[] { + return R.get(INTERCEPTORS_METADATA, func) || []; + } + + static getRouteArgs(target: any, name: string): any { + return R.get(ROUTE_ARGS_METADATA, target, name); + } + + static getRouteArgsTypes(target: any, name: string): any[] { + return R.get(PARAMTYPES_METADATA, target, name) || []; + } + + static getParsedBody(func: Function): any { + return R.get(PARSED_BODY_METADATA, func); + } + + static getContextRequest(ctx: ArgumentsHost): any { + return isFunction(ctx.switchToHttp) ? ctx.switchToHttp().getRequest() : ctx; + } +} diff --git a/packages/crudx/src/helpers/request-validation.helper.ts b/packages/crudx/src/helpers/request-validation.helper.ts new file mode 100644 index 000000000..bdbacda0e --- /dev/null +++ b/packages/crudx/src/helpers/request-validation.helper.ts @@ -0,0 +1,128 @@ +import { isEqual, isNil, isNumber, isObject, isUndefined, keys } from "lodash"; +import { RequestQueryException } from "../exceptions"; +import { CustomOperators, ParamOption, ParamsOptions } from "../interfaces"; + +import { + ComparisonOperator, + CondOperator, + QueryFields, + QueryFilter, + QueryJoin, + QuerySort, +} from "../types"; + +import { + isArrayOfStrings, + isArrayOfStringsFull, + isStringFull, +} from "./checkers.helper"; + +export const comparisonOperatorsList: string[] = [ + ...keys(CondOperator).map( + (n: string) => CondOperator[n as keyof typeof CondOperator] + ), +]; + +export const sortOrdersList: string[] = ["ASC", "DESC"]; + +const sortOrdersListStr: string = sortOrdersList.join(); + +export function validateFields(fields: QueryFields): void { + if (!isArrayOfStrings(fields)) { + throw new RequestQueryException( + "Invalid fields. Array of strings expected" + ); + } +} + +export function validateCondition( + val: QueryFilter, + cond: "filter" | "or" | "search", + customOperators: CustomOperators +): void { + if (!isObject(val) || !isStringFull(val.field)) { + throw new RequestQueryException( + `Invalid field type in ${cond} condition. String expected` + ); + } + validateComparisonOperator(val.operator, customOperators); +} + +export function validateComparisonOperator( + operator: ComparisonOperator, + customOperators: CustomOperators = {} +): void { + const extendedComparisonOperatorsList = [ + ...comparisonOperatorsList, + ...Object.keys(customOperators), + ]; + if (!extendedComparisonOperatorsList.includes(operator)) { + throw new RequestQueryException( + `Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected` + ); + } +} + +export function validateJoin(join: QueryJoin): void { + if (!isObject(join) || !isStringFull(join.field)) { + throw new RequestQueryException("Invalid join field. String expected"); + } + if (!isUndefined(join.select) && !isArrayOfStringsFull(join.select)) { + throw new RequestQueryException( + "Invalid join select. Array of strings expected" + ); + } +} + +export function validateSort(sort: QuerySort): void { + if (!isObject(sort) || !isStringFull(sort.field)) { + throw new RequestQueryException("Invalid sort field. String expected"); + } + if ( + !isEqual(sort.order, sortOrdersList[0]) && + !isEqual(sort.order, sortOrdersList[1]) + ) { + throw new RequestQueryException( + `Invalid sort order. ${sortOrdersListStr} expected` + ); + } +} + +export function validateNumeric( + val: number, + num: "limit" | "offset" | "page" | "cache" | "include_deleted" | string +): void { + if (!isNumber(val)) { + throw new RequestQueryException(`Invalid ${num}. Number expected`); + } +} + +export function validateParamOption( + options: ParamsOptions, + name: string +): void { + if (!isObject(options)) { + throw new RequestQueryException( + `Invalid param ${name}. Invalid crud options` + ); + } + const option: ParamOption = options[name]; + if (option && option.disabled) { + return; + } + if (!isObject(option) || isNil(option.field) || isNil(option.type)) { + throw new RequestQueryException(`Invalid param option in Crud`); + } +} + +export function validateUUID(str: string, name: string): void { + const uuid: RegExp = + /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + const uuidV4: RegExp = + /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i; + if (!uuidV4.test(str) && !uuid.test(str)) { + throw new RequestQueryException( + `Invalid param ${name}. UUID string expected` + ); + } +} diff --git a/packages/crudx/src/helpers/safe-require.helper.ts b/packages/crudx/src/helpers/safe-require.helper.ts new file mode 100644 index 000000000..169969f7d --- /dev/null +++ b/packages/crudx/src/helpers/safe-require.helper.ts @@ -0,0 +1,7 @@ +export function safeRequire(path: string, loader?: () => T): T | null { + try { + return loader ? loader() : require(path); + } catch (_) { + return null; + } +} diff --git a/packages/crudx/src/helpers/serialize.helper.ts b/packages/crudx/src/helpers/serialize.helper.ts new file mode 100644 index 000000000..e118debce --- /dev/null +++ b/packages/crudx/src/helpers/serialize.helper.ts @@ -0,0 +1,42 @@ +import { Type } from "class-transformer"; +import { GetManyDefaultResponse } from "../interfaces"; + +export class SerializeHelper { + static createGetManyDto(dto: any, resourceName: string): any { + class GetManyResponseDto implements GetManyDefaultResponse { + @Type(() => dto) + // @ts-ignore + data: any[]; + + // @ts-ignore + count: number; + + // @ts-ignore + total: number; + + // @ts-ignore + page: number; + + // @ts-ignore + pageCount: number; + } + + Object.defineProperty(GetManyResponseDto, "name", { + writable: false, + value: `GetMany${resourceName}ResponseDto`, + }); + + return GetManyResponseDto; + } + + static createGetOneResponseDto(resourceName: string): any { + class GetOneResponseDto {} + + Object.defineProperty(GetOneResponseDto, "name", { + writable: false, + value: `${resourceName}ResponseDto`, + }); + + return GetOneResponseDto; + } +} diff --git a/packages/crudx/src/index.ts b/packages/crudx/src/index.ts new file mode 100644 index 000000000..e2c663e11 --- /dev/null +++ b/packages/crudx/src/index.ts @@ -0,0 +1,9 @@ +export * from "./decorators"; +export * from "./constants"; +export * from "./enums"; +export * from "./exceptions"; +export * from "./helpers"; +export * from "./interceptors"; +export * from "./interfaces"; +export * from "./services"; +export * from "./types"; diff --git a/packages/crudx/src/interceptors/crud-base.interceptor.ts b/packages/crudx/src/interceptors/crud-base.interceptor.ts new file mode 100644 index 000000000..29e5ff953 --- /dev/null +++ b/packages/crudx/src/interceptors/crud-base.interceptor.ts @@ -0,0 +1,27 @@ +import { ExecutionContext, Type } from "@nestjs/common"; +import { R } from "../helpers"; +import { CrudActions } from "../enums"; +import { MergedCrudOptions } from "../interfaces"; + +export class CrudBaseInterceptor { + protected getCrudInfo(context: ExecutionContext): { + ctrlOptions: MergedCrudOptions; + crudOptions: Partial; + action: CrudActions; + } { + const ctrl: Type = context.getClass(); + const handler = context.getHandler(); + const ctrlOptions: MergedCrudOptions = R.getCrudOptions(ctrl); + const crudOptions = ctrlOptions + ? ctrlOptions + : { + query: {}, + routes: {}, + params: {}, + operators: {}, + }; + const action: CrudActions = R.getAction(handler); + + return { ctrlOptions, crudOptions, action }; + } +} diff --git a/packages/crudx/src/interceptors/crud-request.interceptor.ts b/packages/crudx/src/interceptors/crud-request.interceptor.ts new file mode 100644 index 000000000..a52b82482 --- /dev/null +++ b/packages/crudx/src/interceptors/crud-request.interceptor.ts @@ -0,0 +1,223 @@ +import { + BadRequestException, + CallHandler, + ExecutionContext, + Injectable, + NestInterceptor, +} from "@nestjs/common"; +import { QueryFilter, QueryFilterFunction, SCondition } from "../types"; +import { RequestQueryException } from "../exceptions"; +import { QueryParserService } from "../services"; +import { isArrayFull } from "../helpers"; +import { isFunction, isNil } from "lodash"; +import { ClassTransformOptions } from "class-transformer"; + +import { PARSED_CRUD_REQUEST_KEY } from "../constants"; +import { CrudActions } from "../enums"; +import { CrudRequest, MergedCrudOptions, ParamsOptions } from "../interfaces"; +import { CrudBaseInterceptor } from "./crud-base.interceptor"; +import { Observable } from "rxjs"; + +@Injectable() +export class CrudRequestInterceptor + extends CrudBaseInterceptor + implements NestInterceptor +{ + intercept(context: ExecutionContext, next: CallHandler): Observable { + const req = context.switchToHttp().getRequest(); + + try { + /* istanbul ignore else */ + if (!req[PARSED_CRUD_REQUEST_KEY]) { + const { ctrlOptions, crudOptions, action } = this.getCrudInfo(context); + const parser = QueryParserService.create(); + + parser.parseQuery(req.query, crudOptions.operators?.custom); + + let auth = null; + if (!isNil(ctrlOptions)) { + const search = this.getSearch( + parser, + crudOptions, + action, + req.params + ); + auth = this.getAuth(parser, crudOptions, req); + parser.search = auth.or + ? { $or: [auth.or, { $and: search }] } + : { $and: [auth.filter, ...search] }; + } else { + parser.search = { $and: this.getSearch(parser, crudOptions, action) }; + } + + req[PARSED_CRUD_REQUEST_KEY] = this.getCrudRequest( + parser, + crudOptions, + auth?.auth + ); + } + + return next.handle(); + } catch (error) { + throw error instanceof RequestQueryException + ? new BadRequestException(error.message) + : error; + } + } + + getCrudRequest( + parser: QueryParserService, + crudOptions: Partial, + auth?: any + ): CrudRequest { + const parsed = parser.getParsed(); + const { query, routes, params, operators } = crudOptions; + return { + parsed, + options: { + query, + routes, + params, + operators, + }, + auth, + }; + } + + getSearch( + parser: QueryParserService, + crudOptions: Partial, + action: CrudActions, + params?: any + ): SCondition[] { + // params condition + const paramsSearch = this.getParamsSearch(parser, crudOptions, params); + + // if `CrudOptions.query.filter` is a function then return transformed query search conditions + if (isFunction(crudOptions.query?.filter)) { + const filterCond: SCondition = + (crudOptions.query?.filter as QueryFilterFunction)( + parser.search, + action === CrudActions.ReadAll + ) || {}; + + return [...paramsSearch, filterCond]; + } + + // if `CrudOptions.query.filter` is array or search condition type + const optionsFilter = isArrayFull(crudOptions.query?.filter) + ? (crudOptions.query?.filter as QueryFilter[]).map( + parser.convertFilterToSearch + ) + : [(crudOptions.query?.filter as SCondition) || {}]; + + let search: SCondition[] = []; + + if (parser.search) { + search = [parser.search]; + } else if (parser.filter.length > 0 && parser.or.length > 0) { + search = + parser.filter.length === 1 && parser.or.length === 1 + ? [ + { + $or: [ + parser.convertFilterToSearch(parser.filter[0]), + parser.convertFilterToSearch(parser.or[0]), + ], + }, + ] + : [ + { + $or: [ + { $and: parser.filter.map(parser.convertFilterToSearch) }, + { $and: parser.or.map(parser.convertFilterToSearch) }, + ], + }, + ]; + } else if (parser.filter.length > 0) { + search = parser.filter.map(parser.convertFilterToSearch); + } else { + if (parser.or.length > 0) { + search = + parser.or.length === 1 + ? [parser.convertFilterToSearch(parser.or[0])] + : [ + { + $or: parser.or.map(parser.convertFilterToSearch), + }, + ]; + } + } + + return [...paramsSearch, ...optionsFilter, ...search]; + } + + getParamsSearch( + parser: QueryParserService, + crudOptions: Partial, + params?: any + ): SCondition[] { + if (params) { + parser.parseParams(params, crudOptions.params); + + return isArrayFull(parser.paramsFilter) + ? // @ts-ignore + parser.paramsFilter.map(parser.convertFilterToSearch) + : []; + } + + return []; + } + + getAuth( + parser: QueryParserService, + crudOptions: Partial, + req: any + ): { filter?: any; or?: any; auth?: any } { + const auth: any = {}; + + /* istanbul ignore else */ + if (crudOptions.auth) { + const userOrRequest = crudOptions.auth.property + ? req[crudOptions.auth.property] + : req; + + if (crudOptions.auth.property && req[crudOptions.auth.property]) { + if (typeof req[crudOptions.auth.property] === "object") { + if (Object.keys(req[crudOptions.auth.property]).length > 0) { + auth.auth = req[crudOptions.auth.property]; + } + } else { + auth.auth = req[crudOptions.auth.property]; + } + } + + if (isFunction(crudOptions.auth.or)) { + auth.or = crudOptions.auth.or(userOrRequest); + } + + if (isFunction(crudOptions.auth.filter) && !auth.or) { + auth.filter = crudOptions.auth.filter(userOrRequest) || {}; + } + + if (isFunction(crudOptions.auth.persist)) { + parser.setAuthPersist(crudOptions.auth.persist(userOrRequest)); + } + + const options: ClassTransformOptions = {}; + if (isFunction(crudOptions.auth.classTransformOptions)) { + Object.assign( + options, + crudOptions.auth.classTransformOptions(userOrRequest) + ); + } + + if (isFunction(crudOptions.auth.groups)) { + options.groups = crudOptions.auth.groups(userOrRequest); + } + parser.setClassTransformOptions(options); + } + + return auth; + } +} diff --git a/packages/crudx/src/interceptors/crud-response.interceptor.ts b/packages/crudx/src/interceptors/crud-response.interceptor.ts new file mode 100644 index 000000000..9530b7da9 --- /dev/null +++ b/packages/crudx/src/interceptors/crud-response.interceptor.ts @@ -0,0 +1,99 @@ +import { + CallHandler, + ExecutionContext, + Injectable, + NestInterceptor, +} from "@nestjs/common"; +import { isPlainObject, isEmpty, isFunction } from "lodash"; +import { isFalse } from "../helpers"; +import { ClassTransformOptions, instanceToPlain } from "class-transformer"; +import { Observable } from "rxjs"; +import { map } from "rxjs/operators"; +import { CrudActions } from "../enums"; +import { MergedCrudOptions, SerializeOptions } from "../interfaces"; +import { CrudBaseInterceptor } from "./crud-base.interceptor"; +import { isObject } from "class-validator"; + +const actionToDtoNameMap: { + [key in CrudActions]: keyof SerializeOptions; +} = { + [CrudActions.ReadAll]: "getMany", + [CrudActions.ReadOne]: "get", + [CrudActions.CreateMany]: "createMany", + [CrudActions.CreateOne]: "create", + [CrudActions.UpdateOne]: "update", + [CrudActions.ReplaceOne]: "replace", + [CrudActions.DeleteAll]: "delete", + [CrudActions.DeleteOne]: "delete", + [CrudActions.RecoverOne]: "recover", +}; + +@Injectable() +export class CrudResponseInterceptor + extends CrudBaseInterceptor + implements NestInterceptor +{ + intercept(context: ExecutionContext, next: CallHandler): Observable { + return next.handle().pipe(map((data) => this.serialize(context, data))); + } + + protected transform(dto: any, data: any, options: ClassTransformOptions) { + if (!isObject(data) || isFalse(dto)) { + return data; + } + + if (!isFunction(dto)) { + return data.constructor !== Object + ? instanceToPlain(data, options) + : data; + } + + return data instanceof dto + ? instanceToPlain(data, options) + : /* @ts-ignore */ + instanceToPlain(Object.assign(new dto(), data), options); + } + + protected serialize(context: ExecutionContext, data: any): any { + const req = context.switchToHttp().getRequest(); + const { crudOptions, action } = this.getCrudInfo(context); + const { serialize } = >crudOptions; + /* @ts-ignore */ + const dto = serialize[actionToDtoNameMap[action]]; + const isArray: boolean = Array.isArray(data); + + const options: ClassTransformOptions = {}; + + if (isFunction(crudOptions.auth?.classTransformOptions)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + Object.assign( + options, + crudOptions.auth?.classTransformOptions(userOrRequest) + ); + } + + if (isFunction(crudOptions.auth?.groups)) { + const userOrRequest = crudOptions.auth?.property + ? req[crudOptions.auth.property] + : req; + options.groups = crudOptions.auth?.groups(userOrRequest); + } + + switch (action) { + case CrudActions.ReadAll: + return isArray + ? (data as any[]).map((item) => + this.transform(serialize?.get, item, options) + ) + : this.transform(dto, data, options); + case CrudActions.CreateMany: + return isArray + ? (data as any[]).map((item) => this.transform(dto, item, options)) + : this.transform(dto, data, options); + default: + return this.transform(dto, data, options); + } + } +} diff --git a/packages/crudx/src/interceptors/index.ts b/packages/crudx/src/interceptors/index.ts new file mode 100644 index 000000000..d70938004 --- /dev/null +++ b/packages/crudx/src/interceptors/index.ts @@ -0,0 +1,2 @@ +export * from "./crud-request.interceptor"; +export * from "./crud-response.interceptor"; diff --git a/packages/crudx/src/interfaces/auth-options.interface.ts b/packages/crudx/src/interfaces/auth-options.interface.ts new file mode 100644 index 000000000..2bb25e9e8 --- /dev/null +++ b/packages/crudx/src/interfaces/auth-options.interface.ts @@ -0,0 +1,22 @@ +import { SCondition } from "../types"; +import { ObjectLiteral } from "../types"; +import { ClassTransformOptions } from "class-transformer"; + +export interface AuthGlobalOptions { + property?: string; + /** Get options for the `classToPlain` function (response) */ + classTransformOptions?: (req: any) => ClassTransformOptions; + /** Get `groups` value for the `classToPlain` function options (response) */ + groups?: (req: any) => string[]; +} + +export interface AuthOptions { + property?: string; + /** Get options for the `classToPlain` function (response) */ + classTransformOptions?: (req: any) => ClassTransformOptions; + /** Get `groups` value for the `classToPlain` function options (response) */ + groups?: (req: any) => string[]; + filter?: (req: any) => SCondition | void; + or?: (req: any) => SCondition | void; + persist?: (req: any) => ObjectLiteral; +} diff --git a/packages/crudx/src/interfaces/base-route.interface.ts b/packages/crudx/src/interfaces/base-route.interface.ts new file mode 100644 index 000000000..1d4632655 --- /dev/null +++ b/packages/crudx/src/interfaces/base-route.interface.ts @@ -0,0 +1,12 @@ +import { RequestMethod } from "@nestjs/common"; + +import { BaseRouteName } from "../types"; + +export interface BaseRoute { + name: BaseRouteName; + path: string; + method: RequestMethod; + enable: boolean; + override: boolean; + withParams: boolean; +} diff --git a/packages/crudx/src/interfaces/create-many-dto.interface.ts b/packages/crudx/src/interfaces/create-many-dto.interface.ts new file mode 100644 index 000000000..7d3b93f3a --- /dev/null +++ b/packages/crudx/src/interfaces/create-many-dto.interface.ts @@ -0,0 +1,3 @@ +export interface CreateManyDto { + bulk: T[]; +} diff --git a/packages/crudx/src/interfaces/create-query-params.interface.ts b/packages/crudx/src/interfaces/create-query-params.interface.ts new file mode 100644 index 000000000..0af762ea9 --- /dev/null +++ b/packages/crudx/src/interfaces/create-query-params.interface.ts @@ -0,0 +1,26 @@ +import { + QueryExtra, + QueryFields, + QueryFilter, + QueryFilterArr, + QueryJoin, + QueryJoinArr, + QuerySort, + QuerySortArr, + SCondition, +} from "../types"; + +export interface CreateQueryParams { + fields?: QueryFields; + search?: SCondition; + filter?: QueryFilter | QueryFilterArr | Array; + or?: QueryFilter | QueryFilterArr | Array; + join?: QueryJoin | QueryJoinArr | Array; + sort?: QuerySort | QuerySortArr | Array; + limit?: number; + offset?: number; + page?: number; + resetCache?: boolean; + includeDeleted?: number; + extra?: QueryExtra; +} diff --git a/packages/crudx/src/interfaces/crud-controller.interface.ts b/packages/crudx/src/interfaces/crud-controller.interface.ts new file mode 100644 index 000000000..435971d3c --- /dev/null +++ b/packages/crudx/src/interfaces/crud-controller.interface.ts @@ -0,0 +1,17 @@ +import { CreateManyDto } from "./create-many-dto.interface"; +import { CrudRequest } from "./crud-request.interface"; +import { GetManyDefaultResponse } from "./get-many-default-response.interface"; + +import { CrudService } from "../services"; + +export interface CrudController { + service: CrudService; + getManyBase?(req: CrudRequest): Promise | T[]>; + getOneBase?(req: CrudRequest): Promise; + createOneBase?(req: CrudRequest, dto: T): Promise; + createManyBase?(req: CrudRequest, dto: CreateManyDto): Promise; + updateOneBase?(req: CrudRequest, dto: Partial): Promise; + replaceOneBase?(req: CrudRequest, dto: T): Promise; + deleteOneBase?(req: CrudRequest): Promise; + recoverOneBase?(req: CrudRequest): Promise; +} diff --git a/packages/crudx/src/interfaces/crud-global-config.interface.ts b/packages/crudx/src/interfaces/crud-global-config.interface.ts new file mode 100644 index 000000000..e1478065a --- /dev/null +++ b/packages/crudx/src/interfaces/crud-global-config.interface.ts @@ -0,0 +1,32 @@ +import { RequestQueryBuilderOptions } from "./request-query-builder-options.interface"; +import { AuthGlobalOptions } from "./auth-options.interface"; +import { OperatorsOptions } from "./operators-options.interface"; +import { ParamsOptions } from "./params-options.interface"; +import { RoutesOptions } from "./routes-options.interface"; +import { RoutesFactoryService } from "../services"; + +export interface CrudGlobalConfig { + queryParser?: RequestQueryBuilderOptions; + auth?: AuthGlobalOptions; + routes?: RoutesOptions; + params?: ParamsOptions; + operators?: OperatorsOptions; + query?: { + limit?: number; + maxLimit?: number; + cache?: number | false; + alwaysPaginate?: boolean; + softDelete?: boolean; + }; + serialize?: { + getMany?: false; + get?: false; + create?: false; + createMany?: false; + update?: false; + replace?: false; + delete?: false; + recover?: false; + }; + routesFactory?: typeof RoutesFactoryService; +} diff --git a/packages/crudx/src/interfaces/crud-options.interface.ts b/packages/crudx/src/interfaces/crud-options.interface.ts new file mode 100644 index 000000000..1a48d4b19 --- /dev/null +++ b/packages/crudx/src/interfaces/crud-options.interface.ts @@ -0,0 +1,35 @@ +import { ValidationPipeOptions } from "@nestjs/common"; + +import { RoutesFactoryService } from "../services"; + +import { AuthOptions } from "./auth-options.interface"; +import { DtoOptions } from "./dto-options.interface"; +import { ModelOptions } from "./model-options.interface"; +import { OperatorsOptions } from "./operators-options.interface"; +import { ParamsOptions } from "./params-options.interface"; +import { QueryOptions } from "./query-options.interface"; +import { RoutesOptions } from "./routes-options.interface"; +import { SerializeOptions } from "./serialize-options.interface"; + +export interface CrudRequestOptions { + query?: QueryOptions; + routes?: RoutesOptions; + params?: ParamsOptions; + operators?: OperatorsOptions; +} + +export interface CrudOptions { + model: ModelOptions; + dto?: DtoOptions; + serialize?: SerializeOptions; + query?: QueryOptions; + routes?: RoutesOptions; + routesFactory?: typeof RoutesFactoryService; + params?: ParamsOptions; + validation?: ValidationPipeOptions | false; + operators?: OperatorsOptions; +} + +export interface MergedCrudOptions extends CrudOptions { + auth?: AuthOptions; +} diff --git a/packages/crudx/src/interfaces/crud-request.interface.ts b/packages/crudx/src/interfaces/crud-request.interface.ts new file mode 100644 index 000000000..81e02f0b9 --- /dev/null +++ b/packages/crudx/src/interfaces/crud-request.interface.ts @@ -0,0 +1,9 @@ +import { ParsedRequestParams } from "./parsed-request.interface"; +import { CrudRequestOptions } from "./crud-options.interface"; + +export interface CrudRequest { + parsed: ParsedRequestParams; + options: CrudRequestOptions; + /** authenticated user's from request */ + auth?: {}; +} diff --git a/packages/crudx/src/interfaces/dto-options.interface.ts b/packages/crudx/src/interfaces/dto-options.interface.ts new file mode 100644 index 000000000..d2a43dfbf --- /dev/null +++ b/packages/crudx/src/interfaces/dto-options.interface.ts @@ -0,0 +1,5 @@ +export interface DtoOptions { + create?: any; + update?: any; + replace?: any; +} diff --git a/packages/crudx/src/interfaces/get-many-default-response.interface.ts b/packages/crudx/src/interfaces/get-many-default-response.interface.ts new file mode 100644 index 000000000..dc1107ee5 --- /dev/null +++ b/packages/crudx/src/interfaces/get-many-default-response.interface.ts @@ -0,0 +1,7 @@ +export interface GetManyDefaultResponse { + data: T[]; + count: number; + total: number; + page: number; + pageCount: number; +} diff --git a/packages/crudx/src/interfaces/index.ts b/packages/crudx/src/interfaces/index.ts new file mode 100644 index 000000000..53ae5cb39 --- /dev/null +++ b/packages/crudx/src/interfaces/index.ts @@ -0,0 +1,18 @@ +export * from "./auth-options.interface"; +export * from "./base-route.interface"; +export * from "./create-many-dto.interface"; +export * from "./create-query-params.interface"; +export * from "./crud-controller.interface"; +export * from "./crud-global-config.interface"; +export * from "./crud-options.interface"; +export * from "./crud-request.interface"; +export * from "./dto-options.interface"; +export * from "./get-many-default-response.interface"; +export * from "./model-options.interface"; +export * from "./operators-options.interface"; +export * from "./params-options.interface"; +export * from "./parsed-request.interface"; +export * from "./query-options.interface"; +export * from "./request-query-builder-options.interface"; +export * from "./routes-options.interface"; +export * from "./serialize-options.interface"; diff --git a/packages/crudx/src/interfaces/model-options.interface.ts b/packages/crudx/src/interfaces/model-options.interface.ts new file mode 100644 index 000000000..6bbe7f0d7 --- /dev/null +++ b/packages/crudx/src/interfaces/model-options.interface.ts @@ -0,0 +1,3 @@ +export interface ModelOptions { + type: any; +} diff --git a/packages/crudx/src/interfaces/operators-options.interface.ts b/packages/crudx/src/interfaces/operators-options.interface.ts new file mode 100644 index 000000000..93771b3fd --- /dev/null +++ b/packages/crudx/src/interfaces/operators-options.interface.ts @@ -0,0 +1,13 @@ +export interface OperatorsOptions { + custom?: CustomOperators; +} + +export type CustomOperatorQuery = (field: string, param: string) => string; + +export interface CustomOperators { + [key: string]: { + query: CustomOperatorQuery; + params?: { [field: string]: any }; + isArray?: boolean; + }; +} diff --git a/packages/crudx/src/interfaces/params-options.interface.ts b/packages/crudx/src/interfaces/params-options.interface.ts new file mode 100644 index 000000000..fd8a3fd8d --- /dev/null +++ b/packages/crudx/src/interfaces/params-options.interface.ts @@ -0,0 +1,13 @@ +import { ParamOptionType } from "../types"; + +export interface ParamsOptions { + [key: string]: ParamOption; +} + +export interface ParamOption { + field?: string; + type?: ParamOptionType; + primary?: boolean; + disabled?: boolean; + enum?: []; +} diff --git a/packages/crudx/src/interfaces/parsed-request.interface.ts b/packages/crudx/src/interfaces/parsed-request.interface.ts new file mode 100644 index 000000000..24223e076 --- /dev/null +++ b/packages/crudx/src/interfaces/parsed-request.interface.ts @@ -0,0 +1,33 @@ +import { ClassTransformOptions } from "class-transformer"; +import { + QueryFields, + QueryFilter, + QueryJoin, + QuerySort, + SCondition, + ObjectLiteral, +} from "../types"; + +export interface ParsedRequestParams { + fields: QueryFields; + paramsFilter: (QueryFilter | undefined)[]; + authPersist: ObjectLiteral | undefined; + classTransformOptions: ClassTransformOptions | undefined; + search: SCondition | undefined; + filter: QueryFilter[]; + or: QueryFilter[]; + join: QueryJoin[]; + sort: QuerySort[]; + limit: number | undefined; + offset: number | undefined; + page: number | undefined; + cache: number | undefined; + includeDeleted: number | undefined; + /** + * Extra options. + * + * Custom extra option come from Request and can be used anywhere you want for your business rules. + * CrudRequest lib. do not evaluate this attribute. + */ + extra: ObjectLiteral | undefined; +} diff --git a/packages/crudx/src/interfaces/query-options.interface.ts b/packages/crudx/src/interfaces/query-options.interface.ts new file mode 100644 index 000000000..f5e248a8e --- /dev/null +++ b/packages/crudx/src/interfaces/query-options.interface.ts @@ -0,0 +1,29 @@ +import { QueryFields, QuerySort, QueryFilterOption } from "../types"; + +export interface QueryOptions { + allow?: QueryFields; + exclude?: QueryFields; + persist?: QueryFields; + filter?: QueryFilterOption; + join?: JoinOptions; + sort?: QuerySort[]; + limit?: number; + maxLimit?: number; + cache?: number | false; + alwaysPaginate?: boolean; + softDelete?: boolean; +} + +export interface JoinOptions { + [key: string]: JoinOption; +} + +export interface JoinOption { + alias?: string; + allow?: QueryFields; + eager?: boolean; + exclude?: QueryFields; + persist?: QueryFields; + select?: boolean; + required?: boolean; +} diff --git a/packages/crudx/src/interfaces/request-query-builder-options.interface.ts b/packages/crudx/src/interfaces/request-query-builder-options.interface.ts new file mode 100644 index 000000000..cc04c491b --- /dev/null +++ b/packages/crudx/src/interfaces/request-query-builder-options.interface.ts @@ -0,0 +1,19 @@ +export interface ParamsNamesMap { + fields?: string | string[]; + search?: string | string[]; + filter?: string | string[]; + or?: string | string[]; + join?: string | string[]; + sort?: string | string[]; + limit?: string | string[]; + offset?: string | string[]; + page?: string | string[]; + cache?: string | string[]; + includeDeleted?: string | string[]; + extra?: string | string[]; +} +export interface RequestQueryBuilderOptions { + delim: string; + delimStr: string; + paramNamesMap?: ParamsNamesMap; +} diff --git a/packages/crudx/src/interfaces/routes-options.interface.ts b/packages/crudx/src/interfaces/routes-options.interface.ts new file mode 100644 index 000000000..89b0beb3c --- /dev/null +++ b/packages/crudx/src/interfaces/routes-options.interface.ts @@ -0,0 +1,47 @@ +import { BaseRouteName } from "../types"; + +export interface RoutesOptions { + exclude?: BaseRouteName[]; + only?: BaseRouteName[]; + getManyBase?: GetManyRouteOptions; + getOneBase?: GetOneRouteOptions; + createOneBase?: CreateOneRouteOptions; + createManyBase?: CreateManyRouteOptions; + updateOneBase?: UpdateOneRouteOptions; + replaceOneBase?: ReplaceOneRouteOptions; + deleteOneBase?: DeleteOneRouteOptions; + recoverOneBase?: RecoverOneRouteOptions; +} + +export interface BaseRouteOptions { + interceptors?: any[]; + decorators?: (PropertyDecorator | MethodDecorator)[]; +} + +export interface GetManyRouteOptions extends BaseRouteOptions {} + +export interface GetOneRouteOptions extends BaseRouteOptions {} + +export interface CreateOneRouteOptions extends BaseRouteOptions { + returnShallow?: boolean; +} + +export interface CreateManyRouteOptions extends BaseRouteOptions {} + +export interface ReplaceOneRouteOptions extends BaseRouteOptions { + allowParamsOverride?: boolean; + returnShallow?: boolean; +} + +export interface UpdateOneRouteOptions extends BaseRouteOptions { + allowParamsOverride?: boolean; + returnShallow?: boolean; +} + +export interface DeleteOneRouteOptions extends BaseRouteOptions { + returnDeleted?: boolean; +} + +export interface RecoverOneRouteOptions extends BaseRouteOptions { + returnRecovered?: boolean; +} diff --git a/packages/crudx/src/interfaces/serialize-options.interface.ts b/packages/crudx/src/interfaces/serialize-options.interface.ts new file mode 100644 index 000000000..bfa9af751 --- /dev/null +++ b/packages/crudx/src/interfaces/serialize-options.interface.ts @@ -0,0 +1,12 @@ +import { Type } from "@nestjs/common"; + +export interface SerializeOptions { + getMany?: Type | false; + get?: Type | false; + create?: Type | false; + createMany?: Type | false; + update?: Type | false; + replace?: Type | false; + delete?: Type | false; + recover?: Type | false; +} diff --git a/packages/crudx/src/services/abstract-crud.service.ts b/packages/crudx/src/services/abstract-crud.service.ts new file mode 100644 index 000000000..ae16d2592 --- /dev/null +++ b/packages/crudx/src/services/abstract-crud.service.ts @@ -0,0 +1,129 @@ +import { BadRequestException, NotFoundException } from "@nestjs/common"; +import { get, isEmpty, keys } from "lodash"; + +import { + CreateManyDto, + CrudRequest, + CrudRequestOptions, + GetManyDefaultResponse, + ParsedRequestParams, + QueryOptions, +} from "../interfaces"; + +export abstract class CrudService { + abstract getMany(req: CrudRequest): Promise | T[]>; + + abstract getOne(req: CrudRequest): Promise; + + abstract createOne(req: CrudRequest, dto: DTO): Promise; + + abstract createMany(req: CrudRequest, dto: CreateManyDto): Promise; + + abstract updateOne(req: CrudRequest, dto: DTO): Promise; + + abstract replaceOne(req: CrudRequest, dto: DTO): Promise; + + abstract deleteOne(req: CrudRequest): Promise; + + abstract recoverOne(req: CrudRequest): Promise; + + throwBadRequestException(msg?: any): BadRequestException { + throw new BadRequestException(msg); + } + + throwNotFoundException(name: string): NotFoundException { + throw new NotFoundException(`${name} not found`); + } + + /** + * Wrap page into page-info + * override this method to create custom page-info response + * or set custom `serialize.getMany` dto in the controller's CrudOption + * @param data + * @param total + * @param limit + * @param offset + */ + createPageInfo( + data: T[], + total: number, + limit: number, + offset: number + ): GetManyDefaultResponse { + return { + data, + count: data.length, + total, + page: limit ? Math.floor(offset / limit) + 1 : 1, + pageCount: limit && total ? Math.ceil(total / limit) : 1, + }; + } + + /** + * Determine if need paging + * @param parsed + * @param options + */ + decidePagination( + parsed: ParsedRequestParams, + options: CrudRequestOptions + ): boolean { + return ( + options.query?.alwaysPaginate || + ((Number.isFinite(parsed.page) || Number.isFinite(parsed.offset)) && + !!this.getTake(parsed, options.query)) + ); + } + + /** + * Get number of resources to be fetched + * @param query + * @param options + */ + getTake(query: ParsedRequestParams, options: QueryOptions): number | null { + if (query.limit) { + return options.maxLimit + ? query.limit <= options.maxLimit + ? query.limit + : options.maxLimit + : query.limit; + } + /* istanbul ignore if */ + if (options.limit) { + return options.maxLimit + ? options.limit <= options.maxLimit + ? options.limit + : options.maxLimit + : options.limit; + } + + return options.maxLimit ? options.maxLimit : null; + } + + /** + * Get number of resources to be skipped + * @param query + * @param take + */ + getSkip(query: ParsedRequestParams, take: number): number | null { + return query.page && take + ? take * (query.page - 1) + : query.offset + ? query.offset + : null; + } + + /** + * Get primary param name from CrudOptions + * @param options + */ + getPrimaryParams(options: CrudRequestOptions): string[] { + if (isEmpty(options.params)) { + return []; + } + // @ts-ignore + return keys(options.params) + .filter((n: string) => get(options, `params[${n}].primary`, false)) + .map((p: string) => get(options, `params[${p}].field`)); + } +} diff --git a/packages/crudx/src/services/crud-config.service.ts b/packages/crudx/src/services/crud-config.service.ts new file mode 100644 index 000000000..91c9bc89c --- /dev/null +++ b/packages/crudx/src/services/crud-config.service.ts @@ -0,0 +1,68 @@ +import { isUndefined } from "lodash"; +import { isObjectFull } from "../helpers"; +import { CrudGlobalConfig, RequestQueryBuilderOptions } from "../interfaces"; + +import { QueryBuilderService } from "./query-builder.service"; +import { RoutesFactoryService } from "./routes-factory.service"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = require('deepmerge'); + +export class CrudConfigService { + static config: CrudGlobalConfig = { + auth: {}, + query: { + alwaysPaginate: false, + }, + operators: {}, + routes: { + getManyBase: { interceptors: [], decorators: [] }, + getOneBase: { interceptors: [], decorators: [] }, + createOneBase: { interceptors: [], decorators: [], returnShallow: false }, + createManyBase: { interceptors: [], decorators: [] }, + updateOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + replaceOneBase: { + interceptors: [], + decorators: [], + allowParamsOverride: false, + returnShallow: false, + }, + deleteOneBase: { interceptors: [], decorators: [], returnDeleted: false }, + recoverOneBase: { + interceptors: [], + decorators: [], + returnRecovered: false, + }, + }, + params: {}, + routesFactory: undefined, + }; + + static load(config: CrudGlobalConfig = {}): void { + const auth = isObjectFull(config.auth) ? config.auth : {}; + const query = isObjectFull(config.query) ? config.query : {}; + const routes = isObjectFull(config.routes) ? config.routes : {}; + const operators = isObjectFull(config.operators) ? config.operators : {}; + const params = isObjectFull(config.params) ? config.params : {}; + const serialize = isObjectFull(config.serialize) ? config.serialize : {}; + const routesFactory = ! isUndefined(config.routesFactory) ? config.routesFactory : undefined; + + if (isObjectFull(config.queryParser)) { + QueryBuilderService.setOptions({ + ...config.queryParser, + }); + } + + CrudConfigService.config = deepmerge( + CrudConfigService.config, + { auth, query, routes, operators, params, serialize, routesFactory }, + // @ts-ignore + { arrayMerge: (destinationArray, sourceArray, _options) => sourceArray } + ); + } +} diff --git a/packages/crudx/src/services/index.ts b/packages/crudx/src/services/index.ts new file mode 100644 index 000000000..1416815dd --- /dev/null +++ b/packages/crudx/src/services/index.ts @@ -0,0 +1,6 @@ +export * from "./abstract-crud.service"; +export * from "./crud-config.service"; +export * from "./query-builder.service"; +export * from "./query-parser.service"; +export * from "./routes-factory.service"; +export * from "./type-orm-crud.service"; diff --git a/packages/crudx/src/services/query-builder.service.ts b/packages/crudx/src/services/query-builder.service.ts new file mode 100644 index 000000000..e35d3bf93 --- /dev/null +++ b/packages/crudx/src/services/query-builder.service.ts @@ -0,0 +1,324 @@ +import { get, isNil, isObject, isString, isUndefined } from "lodash"; + +import { stringify } from "qs"; + +import { + CreateQueryParams, + CustomOperators, + ParamsNamesMap, + RequestQueryBuilderOptions, +} from "../interfaces"; + +import { + QueryFields, + QueryFilter, + QueryFilterArr, + QueryJoin, + QueryJoinArr, + QuerySort, + QuerySortArr, + SCondition, +} from "../types"; + +import { + hasValue, + isArrayFull, + validateCondition, + validateFields, + validateJoin, + validateNumeric, + validateSort, +} from "../helpers"; + +import { + REQUEST_DELIM, + REQUEST_DELIM_STR, + REQUEST_PREFIX_EXTRA, +} from "../constants"; + +export class QueryBuilderService { + constructor() { + this.setParamNames(); + } + + private static _options: RequestQueryBuilderOptions = { + delim: REQUEST_DELIM, + delimStr: REQUEST_DELIM_STR, + paramNamesMap: { + fields: ["fields", "select"], + search: "s", + filter: "filter", + or: "or", + join: "join", + sort: "sort", + limit: ["limit", "per_page"], + offset: "offset", + page: "page", + cache: "cache", + includeDeleted: "include_deleted", + extra: REQUEST_PREFIX_EXTRA, + }, + }; + private paramNames: { + [key in keyof ParamsNamesMap as string]: string; + } = {}; + public queryObject: { [key: string]: any } = {}; + public queryString: string = ""; + + static setOptions(options: RequestQueryBuilderOptions) { + QueryBuilderService._options = { + ...QueryBuilderService._options, + ...options, + paramNamesMap: { + ...QueryBuilderService._options.paramNamesMap, + ...(options.paramNamesMap ? options.paramNamesMap : {}), + }, + }; + } + + static getOptions(): RequestQueryBuilderOptions { + return QueryBuilderService._options; + } + + static create( + params?: CreateQueryParams, + customOperators: CustomOperators = {} + ): QueryBuilderService { + const qb: QueryBuilderService = new QueryBuilderService(); + return isObject(params) + ? qb.createFromParams(params, customOperators) + : qb; + } + + get options(): RequestQueryBuilderOptions { + return QueryBuilderService._options; + } + + setParamNames(): void { + if (QueryBuilderService._options.paramNamesMap) { + Object.keys(QueryBuilderService._options.paramNamesMap).forEach( + (key: string): void => { + const name = get(QueryBuilderService._options.paramNamesMap, key); + this.paramNames[key] = isString(name) + ? (name as string) + : (name[0] as string); + } + ); + } + } + + query(encode = true): string { + if (this.queryObject[this.paramNames["search"]]) { + this.queryObject[this.paramNames["filter"]] = undefined; + this.queryObject[this.paramNames["or"]] = undefined; + } + this.queryString = stringify(this.queryObject, { encode }); + return this.queryString; + } + + select(fields?: QueryFields): this { + if (!isNil(fields) && isArrayFull(fields)) { + validateFields(fields); + this.queryObject[this.paramNames["fields"]] = fields.join( + this.options.delimStr + ); + } + return this; + } + + search(s?: SCondition) { + if (!isNil(s) && isObject(s)) { + this.queryObject[this.paramNames["search"]] = JSON.stringify(s); + } + return this; + } + + setFilter( + f: + | QueryFilter + | QueryFilterArr + | Array + | undefined, + customOperators: CustomOperators = {} + ): this { + this.setCondition(f, "filter", customOperators); + return this; + } + + setOr( + f: + | QueryFilter + | QueryFilterArr + | Array + | undefined, + customOperators: CustomOperators = {} + ): this { + this.setCondition(f, "or", customOperators); + return this; + } + + setJoin( + j: QueryJoin | QueryJoinArr | Array | undefined + ): this { + if (!isNil(j)) { + const param: string = this.checkQueryObjectParam("join", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(j) && !isString(j[0]) + ? (j as Array).map((o) => this.addJoin(o)) + : [this.addJoin(j as QueryJoin | QueryJoinArr)]), + ]; + } + return this; + } + + sortBy( + s: QuerySort | QuerySortArr | Array | undefined + ): this { + if (!isNil(s)) { + const param = this.checkQueryObjectParam("sort", []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(s) && !isString(s[0]) + ? (s as Array).map((o) => this.addSortBy(o)) + : [this.addSortBy(s as QuerySort | QuerySortArr)]), + ]; + } + return this; + } + + setLimit(n: number | undefined): this { + this.setNumeric(n, "limit"); + return this; + } + + setOffset(n: number | undefined): this { + this.setNumeric(n, "offset"); + return this; + } + + setPage(n: number | undefined): this { + this.setNumeric(n, "page"); + return this; + } + + resetCache(): this { + this.setNumeric(0, "cache"); + return this; + } + + setIncludeDeleted(n: number | undefined): this { + this.setNumeric(n, "includeDeleted"); + return this; + } + + cond( + f: QueryFilter | QueryFilterArr, + cond: "filter" | "or" | "search" = "search", + customOperators: CustomOperators = {} + ): string { + const filter = Array.isArray(f) + ? { field: f[0], operator: f[1], value: f[2] } + : f; + validateCondition(filter, cond, customOperators); + const d = this.options.delim; + + return ( + filter.field + + d + + filter.operator + + (hasValue(filter.value) ? d + filter.value : "") + ); + } + + private addJoin(j: QueryJoin | QueryJoinArr): string { + const join: QueryJoin = Array.isArray(j) + ? { field: j[0], select: j[1] } + : j; + validateJoin(join); + const d: string | undefined = this.options.delim; + const ds: string | undefined = this.options.delimStr; + + return ( + join.field + + (isArrayFull(join.select) ? d + (join.select?.join(ds) ?? "") : "") + ); + } + + private addSortBy(s: QuerySort | QuerySortArr): string { + const sort: QuerySort = Array.isArray(s) ? { field: s[0], order: s[1] } : s; + validateSort(sort); + const ds: string | undefined = this.options.delimStr; + + return sort.field + ds + sort.order; + } + + private createFromParams( + params: CreateQueryParams, + customOperators: CustomOperators + ): this { + this.select(params.fields); + this.search(params.search); + this.setFilter(params.filter, customOperators); + this.setOr(params.or, customOperators); + this.setJoin(params.join); + this.setLimit(params.limit); + this.setOffset(params.offset); + this.setPage(params.page); + this.sortBy(params.sort); + if (params.resetCache) { + this.resetCache(); + } + this.setIncludeDeleted(params.includeDeleted); + return this; + } + + private checkQueryObjectParam( + cond: keyof ParamsNamesMap, + defaults: any + ): string { + const param = this.paramNames[cond]; + if (isNil(this.queryObject[param]) && !isUndefined(defaults)) { + this.queryObject[param] = defaults; + } + return param; + } + + private setCondition( + f: + | QueryFilter + | QueryFilterArr + | Array + | undefined, + cond: "filter" | "or", + customOperators: CustomOperators + ): void { + if (!isNil(f)) { + const param = this.checkQueryObjectParam(cond, []); + this.queryObject[param] = [ + ...this.queryObject[param], + ...(Array.isArray(f) && !isString(f[0]) + ? (f as Array).map((o) => + this.cond(o, cond, customOperators) + ) + : [ + this.cond( + f as QueryFilter | QueryFilterArr, + cond, + customOperators + ), + ]), + ]; + } + } + + private setNumeric( + n: number | undefined, + cond: "limit" | "offset" | "page" | "cache" | "includeDeleted" + ): void { + if (!isNil(n)) { + validateNumeric(n, cond); + this.queryObject[this.paramNames[cond]] = n; + } + } +} diff --git a/packages/crudx/src/services/query-parser.service.ts b/packages/crudx/src/services/query-parser.service.ts new file mode 100644 index 000000000..33c0e08ec --- /dev/null +++ b/packages/crudx/src/services/query-parser.service.ts @@ -0,0 +1,442 @@ +import { + get, + has, + isDate, + isEmpty, + isNil, + isObject, + isString, + keys, + set, +} from "lodash"; + +import { RequestQueryException } from "../exceptions"; + +import { + CustomOperators, + ParamOption, + ParamsNamesMap, + ParamsOptions, + ParsedRequestParams, + RequestQueryBuilderOptions, +} from "../interfaces"; + +import { + ComparisonOperator, + CondOperator, + ObjectLiteral, + QueryExtra, + QueryFields, + QueryFilter, + QueryJoin, + QuerySort, + SCondition, + SConditionAND, + SFields, +} from "../types"; + +import { ClassTransformOptions } from "class-transformer"; + +import { QueryBuilderService } from "./query-builder.service"; +import { + hasValue, + isArrayFull, + isDateString, + isStringFull, + validateCondition, + validateJoin, + validateNumeric, + validateParamOption, + validateSort, + validateUUID, +} from "../helpers"; + +import { REQUEST_PREFIX_EXTRA } from "../constants"; + +export class QueryParserService implements ParsedRequestParams { + public fields: QueryFields = []; + public paramsFilter: (QueryFilter | undefined)[] = []; + public authPersist: ObjectLiteral | undefined = undefined; + + public classTransformOptions: ClassTransformOptions | undefined = undefined; + + public search: SCondition | undefined = undefined; + public filter: QueryFilter[] = []; + public or: QueryFilter[] = []; + public join: QueryJoin[] = []; + public sort: QuerySort[] = []; + public limit: number | undefined; + public offset: number | undefined; + public page: number | undefined; + public cache: number | undefined; + public includeDeleted: number | undefined; + public extra: QueryExtra = {}; + + private _params: any; + private _query: any; + private _paramNames: string[] = []; + private _paramsOptions: ParamsOptions = {}; + + private get _options(): RequestQueryBuilderOptions { + return QueryBuilderService.getOptions(); + } + + static create(): QueryParserService { + return new QueryParserService(); + } + + getParsed(): ParsedRequestParams { + return { + fields: this.fields, + paramsFilter: this.paramsFilter, + authPersist: this.authPersist, + classTransformOptions: this.classTransformOptions, + search: this.search, + filter: this.filter, + or: this.or, + join: this.join, + sort: this.sort, + limit: this.limit, + offset: this.offset, + page: this.page, + cache: this.cache, + includeDeleted: this.includeDeleted, + extra: this.extra, + }; + } + + setAuthPersist(persist: ObjectLiteral = {}) { + this.authPersist = persist || /* istanbul ignore next */ {}; + } + + setClassTransformOptions(options: ClassTransformOptions = {}) { + this.classTransformOptions = options || /* istanbul ignore next */ {}; + } + + convertFilterToSearch(filter: QueryFilter): SFields | SConditionAND { + const isEmptyValue = { + isnull: true, + notnull: true, + }; + + return filter + ? { + [filter.field]: { + [filter.operator]: has(isEmptyValue, filter.operator) + ? get(isEmptyValue, filter.operator) + : filter.value, + }, + } + : /* istanbul ignore next */ {}; + } + + parseQuery(query: any, customOperators: CustomOperators = {}): this { + if (isObject(query)) { + const paramNames: string[] = keys(query); + + if (!isEmpty(paramNames)) { + this._query = query; + this._paramNames = paramNames; + const searchData = this._query[this.getParamNames("search")[0]]; + this.search = this.parseSearchQueryParam(searchData) as any; + if (isNil(this.search)) { + this.filter = this.parseQueryParam( + "filter", + this.conditionParser.bind(this, "filter", customOperators) + ); + this.or = this.parseQueryParam( + "or", + this.conditionParser.bind(this, "or", customOperators) + ); + } + this.fields = + this.parseQueryParam("fields", this.fieldsParser.bind(this))[0] || []; + this.join = this.parseQueryParam("join", this.joinParser.bind(this)); + this.sort = this.parseQueryParam("sort", this.sortParser.bind(this)); + this.limit = this.parseQueryParam( + "limit", + this.numericParser.bind(this, "limit") + )[0]; + this.offset = this.parseQueryParam( + "offset", + this.numericParser.bind(this, "offset") + )[0]; + this.page = this.parseQueryParam( + "page", + this.numericParser.bind(this, "page") + )[0]; + this.cache = this.parseQueryParam( + "cache", + this.numericParser.bind(this, "cache") + )[0]; + this.includeDeleted = this.parseQueryParam( + "includeDeleted", + this.numericParser.bind(this, "includeDeleted") + )[0]; + + this.extra = this.parseExtraFromQueryParam(); + } + } + + return this; + } + + parseParams(params: any, options: ParamsOptions): this { + if (isObject(params)) { + const paramNames: string[] = keys(params); + + if (!isNil(paramNames)) { + this._params = params; + this._paramsOptions = options; + this.paramsFilter = paramNames + .map((name: string) => this.paramParser(name)) + .filter((filter: QueryFilter | undefined) => filter); + } + } + + return this; + } + + private getParamNames(type: keyof ParamsNamesMap): string[] { + return this._paramNames.filter((p: string): boolean => { + const name: string | string[] = get( + this._options.paramNamesMap, + type, + "" + ); + return isString(name) + ? name === p + : (name as string[]).some((m: string): boolean => m === p); + }); + } + + private getParamValues(value: string | string[], parser: Function): any[] { + if (isStringFull(value)) { + return [parser.call(this, value)]; + } + + if (isArrayFull(value)) { + return (value as string[]).map((val: string) => parser(val)); + } + + return []; + } + + private parseQueryParam(type: keyof ParamsNamesMap, parser: Function): any[] { + const param: string[] = this.getParamNames(type); + + if (isArrayFull(param)) { + // @ts-ignore + return param.reduce( + // @ts-ignore + (a: [], name: string): string[] => [ + ...a, + ...this.getParamValues(this._query[name], parser), + ], + [] + ); + } + + return []; + } + + private parseExtraFromQueryParam(): QueryExtra { + const extraParam: string | string[] | [] = get( + this._options.paramNamesMap, + "extra", + [] + ); + const params: string[] = Array.isArray(extraParam) + ? extraParam + : [extraParam]; + const extraKeys: {} = keys(this._query || {}) + .filter((k: string) => params.find((p: string) => k?.startsWith(p))) + .reduce((o: {}, k: string) => { + const key: string = k.replace(REQUEST_PREFIX_EXTRA, ""); + this.parseDotChainToObject(this._query[k], key, o); + return o; + }, {}); + return keys(extraKeys).length > 0 ? extraKeys : undefined; + } + + /** + * Build an object from data and composite key. + * + * @param data to used on parse workflow + * @param key composite key as 'foo.bar.hero' + * @param result object with parsed "data" and "key" structure + * @private + */ + private parseDotChainToObject(data: any, key: string, result: {} = {}): void { + if (key.includes(".")) { + const keys: string[] = key.split("."); + const firstKey: string | undefined = keys.shift(); + set(result, firstKey as string, {}); + this.parseDotChainToObject( + data, + keys.join("."), + get(result, firstKey as string) + ); + } else { + set(result, key, this.parseValue(data)); + } + } + + private parseValue(val: any) { + try { + const parsed = JSON.parse(val); + + // throw new Error('Don\'t support object now') + if ( + (!isDate(parsed) && isObject(parsed)) || + // JS cannot handle big numbers. Leave it as a string to prevent data loss + (typeof parsed === "number" && + parsed.toLocaleString("fullwide", { useGrouping: false }) !== val) + ) { + return val; + } + return parsed; + } catch (_) { + if (isDateString(val)) { + return new Date(val); + } + return val; + } + } + + private parseValues(values: any) { + return isArrayFull(values) + ? values.map((v: any) => this.parseValue(v)) + : this.parseValue(values); + } + + private parseSearchQueryParam(d: any): SCondition | undefined { + if (isNil(d)) { + return undefined; + } + try { + const data = JSON.parse(d); + + if (!isObject(data)) { + throw new Error(); + } + + return data; + } catch (_) { + throw new RequestQueryException("Invalid search param. JSON expected"); + } + } + + private fieldsParser(data: string): QueryFields { + // @ts-ignore + return data.split(this._options.delimStr); + } + + private conditionParser( + cond: "filter" | "or" | "search", + customOperators: CustomOperators, + data: string + ): QueryFilter { + const isArrayValue: string[] = [ + CondOperator.IN as string, + CondOperator.NOT_IN as string, + CondOperator.BETWEEN as string, + CondOperator.IN_LOW as string, + CondOperator.NOT_IN_LOW as string, + ].concat( + Object.keys(customOperators).filter( + (op: string) => customOperators[op].isArray + ) + ); + const isEmptyValue: string[] = [ + CondOperator.IS_NULL as string, + CondOperator.NOT_NULL as string, + ]; + // @ts-ignore + const param: string[] = data.split(this._options.delim); + const field: string = param[0]; + const operator: string = param[1] as ComparisonOperator; + let value: string = param[2] || ""; + + if (isArrayValue.some((name: string): boolean => name === operator)) { + // @ts-ignore + value = value.split(this._options.delimStr) as any; + } + + value = this.parseValues(value); + + if ( + !isEmptyValue.some((name: string): boolean => name === operator) && + !hasValue(value) + ) { + throw new RequestQueryException(`Invalid ${cond} value`); + } + + const condition: QueryFilter = { field, operator, value }; + validateCondition(condition, cond, customOperators); + + return condition; + } + + private joinParser(data: string): QueryJoin { + // @ts-ignore + const param: string[] = data.split(this._options.delim); + + const join: QueryJoin = { + field: param[0], + select: isStringFull(param[1]) + ? // @ts-ignore + param[1].split(this._options.delimStr) + : undefined, + }; + validateJoin(join); + + return join; + } + + private sortParser(data: string): QuerySort { + const param: string[] = data.split(this._options.delimStr); + const sort: QuerySort = { + field: param[0], + order: param[1] as any, + }; + validateSort(sort); + + return sort; + } + + private numericParser( + num: "limit" | "offset" | "page" | "cache" | "includeDeleted", + data: string + ): number { + const val = this.parseValue(data); + validateNumeric(val, num); + + return val; + } + + private paramParser(name: string): QueryFilter | undefined { + validateParamOption(this._paramsOptions, name); + const option: ParamOption = this._paramsOptions[name]; + + if (option.disabled) { + return undefined; + } + + let value = this._params[name]; + + switch (option.type) { + case "number": + value = this.parseValue(value); + validateNumeric(value, `param ${name}`); + break; + case "uuid": + validateUUID(value, name); + break; + default: + break; + } + + return { field: option.field as string, operator: "$eq", value }; + } +} diff --git a/packages/crudx/src/services/routes-factory.service.ts b/packages/crudx/src/services/routes-factory.service.ts new file mode 100644 index 000000000..6181c00d4 --- /dev/null +++ b/packages/crudx/src/services/routes-factory.service.ts @@ -0,0 +1,549 @@ +import { RequestMethod } from "@nestjs/common"; +import { RouteParamtypes } from "@nestjs/common/enums/route-paramtypes.enum"; +import { get, isEqual, isNil, isUndefined, keys } from "lodash"; +import { + createBulkDto, + getValidationPipe, + isArrayFull, + isFalse, + isIn, + isObjectFull, + R, + SerializeHelper, +} from "../helpers"; + +import { CrudActions, CrudValidationGroups } from "../enums"; +import { + CrudRequestInterceptor, + CrudResponseInterceptor, +} from "../interceptors"; + +import { + AuthOptions, + BaseRoute, + CrudOptions, + CrudRequest, + MergedCrudOptions, + OperatorsOptions, + ParamsOptions, + QueryOptions, + RoutesOptions, +} from "../interfaces"; +import { CrudConfigService } from "../services"; +import { BaseRouteName } from "../types"; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const deepmerge = require('deepmerge'); + +export class RoutesFactoryService { + protected options: MergedCrudOptions; + + constructor(protected target: any, options: CrudOptions) { + this.options = options; + this.create(); + } + + /* istanbul ignore next */ + static create(target: any, options: CrudOptions): RoutesFactoryService { + return new RoutesFactoryService(target, options); + } + + protected get targetProto(): any { + return this.target.prototype; + } + + protected get modelName(): string { + return this.options.model.type.name; + } + + protected get modelType(): any { + return this.options.model.type; + } + + protected get actionsMap(): { [key in BaseRouteName]: CrudActions } { + return { + getManyBase: CrudActions.ReadAll, + getOneBase: CrudActions.ReadOne, + createManyBase: CrudActions.CreateMany, + createOneBase: CrudActions.CreateOne, + updateOneBase: CrudActions.UpdateOne, + deleteOneBase: CrudActions.DeleteOne, + replaceOneBase: CrudActions.ReplaceOne, + recoverOneBase: CrudActions.RecoverOne, + }; + } + + protected create(): void { + const routesSchema: BaseRoute[] = this.getRoutesSchema(); + this.mergeOptions(); + this.createRoutes(routesSchema); + this.overrideRoutes(routesSchema); + this.enableRoutes(routesSchema); + } + + protected mergeOptions(): void { + // merge auth config + const authOptions: AuthOptions = R.getCrudAuthOptions(this.target); + this.options.auth = isObjectFull(authOptions) ? authOptions : {}; + if (isUndefined(this.options.auth.property)) { + this.options.auth.property = CrudConfigService.config?.auth?.property; + } + if (isUndefined(this.options.auth.groups)) { + this.options.auth.groups = CrudConfigService.config?.auth?.groups; + } + if (isUndefined(this.options.auth.classTransformOptions)) { + // @ts-ignore + this.options.auth.classTransformOptions = + CrudConfigService.config.auth?.classTransformOptions; + } + + // merge query config + const query: QueryOptions | {} = isObjectFull(this.options.query) + ? this.options.query + : {}; + + this.options.query = { ...CrudConfigService.config.query, ...query }; + + // merge routes config + const routes: RoutesOptions | {} = isObjectFull(this.options.routes) + ? this.options.routes + : {}; + this.options.routes = deepmerge( + CrudConfigService.config.routes || {}, + routes, + { + // @ts-ignore + arrayMerge: (a, b, c) => b, + } + ); + + // merge operators config + const operators: OperatorsOptions | {} = isObjectFull( + this.options.operators + ) + ? this.options.operators + : {}; + this.options.operators = ( + deepmerge( + CrudConfigService.config?.operators, + operators + ) + ); + + // set params + this.options.params = isObjectFull(this.options.params) + ? this.options.params + : isObjectFull(CrudConfigService.config.params) + ? CrudConfigService.config.params + : {}; + const hasPrimary: boolean = this.getPrimaryParams().length > 0; + if (!hasPrimary) { + // @ts-ignore + this.options.params["id"] = { + field: "id", + type: "number", + primary: true, + }; + } + + // set dto + if (!isObjectFull(this.options.dto)) { + this.options.dto = {}; + } + + // set serialize + const serialize = isObjectFull(this.options.serialize) + ? this.options.serialize + : {}; + this.options.serialize = { + ...CrudConfigService.config.serialize, + ...serialize, + }; + this.options.serialize.get = isFalse(this.options.serialize.get) + ? false + : this.options.serialize.get || this.modelType; + this.options.serialize.getMany = isFalse(this.options.serialize.getMany) + ? false + : this.options.serialize.getMany + ? this.options.serialize.getMany + : isFalse(this.options.serialize.get) + ? false + : SerializeHelper.createGetManyDto( + this.options.serialize.get, + this.modelName + ); + this.options.serialize.create = isFalse(this.options.serialize.create) + ? false + : this.options.serialize.create || this.modelType; + this.options.serialize.update = isFalse(this.options.serialize.update) + ? false + : this.options.serialize.update || this.modelType; + this.options.serialize.replace = isFalse(this.options.serialize.replace) + ? false + : this.options.serialize.replace || this.modelType; + this.options.serialize.delete = + isFalse(this.options.serialize.delete) || + !this.options.routes?.deleteOneBase?.returnDeleted + ? false + : this.options.serialize.delete || this.modelType; + + R.setCrudOptions(this.options, this.target); + } + + protected getRoutesSchema(): BaseRoute[] { + return [ + { + name: "getOneBase", + path: "/", + method: RequestMethod.GET, + enable: false, + override: false, + withParams: true, + }, + { + name: "getManyBase", + path: "/", + method: RequestMethod.GET, + enable: false, + override: false, + withParams: false, + }, + { + name: "createOneBase", + path: "/", + method: RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "createManyBase", + path: "/bulk", + method: RequestMethod.POST, + enable: false, + override: false, + withParams: false, + }, + { + name: "updateOneBase", + path: "/", + method: RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + { + name: "replaceOneBase", + path: "/", + method: RequestMethod.PUT, + enable: false, + override: false, + withParams: true, + }, + { + name: "deleteOneBase", + path: "/", + method: RequestMethod.DELETE, + enable: false, + override: false, + withParams: true, + }, + { + name: "recoverOneBase", + path: "/recover", + method: RequestMethod.PATCH, + enable: false, + override: false, + withParams: true, + }, + ]; + } + + protected getManyBase(name: BaseRouteName) { + this.targetProto[name] = function getManyBase(req: CrudRequest) { + return this.service.getMany(req); + }; + } + + protected getOneBase(name: BaseRouteName) { + this.targetProto[name] = function getOneBase(req: CrudRequest) { + return this.service.getOne(req); + }; + } + + protected createOneBase(name: BaseRouteName) { + this.targetProto[name] = function createOneBase( + req: CrudRequest, + dto: any + ) { + return this.service.createOne(req, dto); + }; + } + + protected createManyBase(name: BaseRouteName) { + this.targetProto[name] = function createManyBase( + req: CrudRequest, + dto: any + ) { + return this.service.createMany(req, dto); + }; + } + + protected updateOneBase(name: BaseRouteName) { + this.targetProto[name] = function updateOneBase( + req: CrudRequest, + dto: any + ) { + return this.service.updateOne(req, dto); + }; + } + + protected replaceOneBase(name: BaseRouteName) { + this.targetProto[name] = function replaceOneBase( + req: CrudRequest, + dto: any + ) { + return this.service.replaceOne(req, dto); + }; + } + + protected deleteOneBase(name: BaseRouteName) { + this.targetProto[name] = function deleteOneBase(req: CrudRequest) { + return this.service.deleteOne(req); + }; + } + + protected recoverOneBase(name: BaseRouteName) { + this.targetProto[name] = function recoverOneBase(req: CrudRequest) { + return this.service.recoverOne(req); + }; + } + + protected canCreateRoute(name: BaseRouteName) { + const only: BaseRouteName[] | undefined = this.options.routes?.only; + const exclude: BaseRouteName[] | undefined = this.options.routes?.exclude; + + // include recover route only for models with soft delete option + if (name === "recoverOneBase" && this.options.query?.softDelete !== true) { + return false; + } + + if (isArrayFull(only)) { + // @ts-ignore + return only.some((route: BaseRouteName): boolean => route === name); + } + + if (isArrayFull(exclude)) { + // @ts-ignore + return !exclude.some((route: BaseRouteName): boolean => route === name); + } + + return true; + } + + protected createRoutes(routesSchema: BaseRoute[]) { + const primaryParams: string[] = this.getPrimaryParams().filter( + (param: string) => !this.options.params?.[param]?.disabled + ); + + routesSchema.forEach((route) => { + if (this.canCreateRoute(route.name)) { + // create base method + this[route.name](route.name); + route.enable = true; + // set metadata + this.setBaseRouteMeta(route.name); + } + + if (route.withParams && primaryParams.length > 0) { + route.path = + route.path !== "/" + ? `${primaryParams + .map((param: string): string => `/:${param}`) + .join("")}${route.path}` + : primaryParams + .map((param: string): string => `/:${param}`) + .join(""); + } + }); + } + + protected overrideRoutes(routesSchema: BaseRoute[]): void { + Object.getOwnPropertyNames(this.targetProto).forEach( + (name: string): void => { + const override: BaseRouteName = R.getOverrideRoute( + this.targetProto[name] + ); + const route: BaseRoute | undefined = routesSchema.find((r: BaseRoute) => + isEqual(r.name, override) + ); + + if (override && route && route.enable) { + // get metadata + const interceptors: any[] = R.getInterceptors(this.targetProto[name]); + const baseInterceptors: any[] = R.getInterceptors( + this.targetProto[override] + ); + const baseAction: CrudActions = R.getAction( + this.targetProto[override] + ); + // set metadata + R.setInterceptors( + [...baseInterceptors, ...interceptors], + this.targetProto[name] + ); + R.setAction(baseAction, this.targetProto[name]); + this.overrideParsedBodyDecorator(override, name); + // enable route + R.setRoute(route, this.targetProto[name]); + route.override = true; + } + } + ); + } + + protected enableRoutes(routesSchema: BaseRoute[]) { + routesSchema.forEach((route) => { + if (!route.override && route.enable) { + R.setRoute(route, this.targetProto[route.name]); + } + }); + } + + protected overrideParsedBodyDecorator(override: BaseRouteName, name: string) { + const allowed: BaseRouteName[] = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ] as BaseRouteName[]; + const withBody: Boolean = isIn(override, allowed); + const parsedBody = R.getParsedBody(this.targetProto[name]); + + if (withBody && parsedBody) { + const baseKey: string = `${RouteParamtypes.BODY}:1`; + const key: string = `${RouteParamtypes.BODY}:${parsedBody.index}`; + const baseRouteArgs = R.getRouteArgs(this.target, override); + const routeArgs = R.getRouteArgs(this.target, name); + const baseBodyArg = baseRouteArgs[baseKey]; + R.setRouteArgs( + { + ...routeArgs, + [key]: { + ...baseBodyArg, + index: parsedBody.index, + }, + }, + this.target, + name + ); + + /* istanbul ignore else */ + if (isEqual(override, "createManyBase")) { + const paramTypes: any[] = R.getRouteArgsTypes(this.targetProto, name); + const metatype = paramTypes[parsedBody.index]; + const types = [String, Boolean, Number, Array, Object]; + const toCopy: boolean = isIn(metatype, types) || isNil(metatype); + + if (toCopy) { + const baseParamTypes: any[] = R.getRouteArgsTypes( + this.targetProto, + override + ); + const baseMetatype = baseParamTypes[1]; + paramTypes.splice(parsedBody.index, 1, baseMetatype); + R.setRouteArgsTypes(paramTypes, this.targetProto, name); + } + } + } + } + + protected getPrimaryParams(): string[] { + return keys(this.options.params).filter( + (param: string) => + this.options.params?.[param] && this.options.params[param].primary + ); + } + + protected setBaseRouteMeta(name: BaseRouteName) { + this.setRouteArgs(name); + this.setRouteArgsTypes(name); + this.setInterceptors(name); + this.setAction(name); + this.setDecorators(name); + } + + protected setRouteArgs(name: BaseRouteName) { + let rest = {}; + const routes: BaseRouteName[] = [ + "createManyBase", + "createOneBase", + "updateOneBase", + "replaceOneBase", + ]; + + if (isIn(name, routes)) { + const action: string = this.routeNameAction(name); + const hasDto: boolean = !isNil(get(this.options, `dto.${action}`)); + const { UPDATE, CREATE } = CrudValidationGroups; + const groupEnum: CrudValidationGroups = isIn(name, [ + "updateOneBase", + "replaceOneBase", + ]) + ? UPDATE + : CREATE; + const group: CrudValidationGroups | undefined = !hasDto + ? groupEnum + : undefined; + + rest = R.setBodyArg(1, [getValidationPipe(this.options, group)]); + } + + R.setRouteArgs({ ...R.setParsedRequestArg(0), ...rest }, this.target, name); + } + + protected setRouteArgsTypes(name: BaseRouteName): void { + switch (true) { + case isEqual(name, "createManyBase"): + const bulkDto = createBulkDto(this.options); + R.setRouteArgsTypes([Object, bulkDto], this.targetProto, name); + break; + case isIn(name, ["createOneBase", "updateOneBase", "replaceOneBase"]): + const action: string = this.routeNameAction(name); + const dto = get(this.options, `dto.${action}`, this.modelType); + R.setRouteArgsTypes([Object, dto], this.targetProto, name); + break; + default: + R.setRouteArgsTypes([Object], this.targetProto, name); + } + } + + protected setInterceptors(name: BaseRouteName): void { + const interceptors = get(this.options, `routes.${name}.interceptors`, []); + R.setInterceptors( + [ + CrudRequestInterceptor, + CrudResponseInterceptor, + ...(isArrayFull(interceptors) ? interceptors : []), + ], + this.targetProto[name] + ); + } + + protected setDecorators(name: BaseRouteName): void { + const decorators = get(this.options, `routes.${name}.decorators`, []); + R.setDecorators( + isArrayFull(decorators) ? decorators : [], + this.targetProto, + name + ); + } + + protected setAction(name: BaseRouteName): void { + R.setAction(this.actionsMap[name], this.targetProto[name]); + } + + protected routeNameAction(name: BaseRouteName): string { + return name.split("OneBase")[0] || name.split("ManyBase")[0]; + } +} diff --git a/packages/crudx/src/services/type-orm-crud.service.ts b/packages/crudx/src/services/type-orm-crud.service.ts new file mode 100644 index 000000000..ba3077f08 --- /dev/null +++ b/packages/crudx/src/services/type-orm-crud.service.ts @@ -0,0 +1,1371 @@ + + +import { oO } from "@zmotivat0r/o0"; +import { plainToInstance } from "class-transformer"; +import { isEmpty, isNil, isNull, isUndefined } from "lodash"; +import { + BaseEntity, + Brackets, + ConnectionOptions, + DeepPartial, + EntityMetadata, + ObjectLiteral, + Repository, + SelectQueryBuilder, + WhereExpressionBuilder, +} from "typeorm"; +import { ColumnMetadata } from "typeorm/metadata/ColumnMetadata"; +import { RelationMetadata } from "typeorm/metadata/RelationMetadata"; + +import { isArrayFull, isObject } from "../helpers"; +import { + CreateManyDto, + CrudRequest, + CrudRequestOptions, + CustomOperators, + DeleteOneRouteOptions, + GetManyDefaultResponse, + JoinOption, + JoinOptions, + ParsedRequestParams, + QueryOptions, + ReplaceOneRouteOptions, + UpdateOneRouteOptions, +} from "../interfaces"; +import { + ClassType, + ComparisonOperator, + CondOperator, + QueryFilter, + QueryJoin, + QuerySort, + SCondition, + SConditionKey, +} from "../types"; + +import { CrudService } from "./abstract-crud.service"; + +interface IAllowedRelation { + alias?: string; + nested: boolean; + name: string; + path: string; + columns: string[]; + primaryColumns: string[]; + allowedColumns: string[]; +} + +export class TypeOrmCrudService extends CrudService< + T, + DeepPartial +> { + protected dbName: ConnectionOptions["type"]; + protected entityColumns: string[] | undefined; + protected entityPrimaryColumns: string[] | undefined; + protected entityHasDeleteColumn = false; + protected entityColumnsHash: ObjectLiteral = {}; + protected entityRelationsHash: Map = new Map(); + protected sqlInjectionRegEx: RegExp[] = [ + /(%27)|(')|(--)|(%23)|(#)/gi, + /((%3D)|(=))[^\n]*((%27)|(')|(--)|(%3B)|(;))/gi, + /w*((%27)|('))((%6F)|o|(%4F))((%72)|r|(%52))/gi, + /((%27)|('))union/gi, + ]; + + constructor(protected repo: Repository) { + super(); + + this.dbName = this.repo.metadata.connection.options.type; + this.onInitMapEntityColumns(); + } + + public get findOne(): Repository["findOne"] { + return this.repo.findOne.bind(this.repo); + } + + public get findOneBy(): Repository["findOneBy"] { + return this.repo.findOneBy.bind(this.repo); + } + + public get find(): Repository["find"] { + return this.repo.find.bind(this.repo); + } + + public get count(): Repository["count"] { + return this.repo.count.bind(this.repo); + } + + protected get entityType(): ClassType { + return this.repo.target as ClassType; + } + + protected get alias(): string { + return this.repo.metadata.targetName; + } + + /** + * Get many + * @param req + */ + public async getMany( + req: CrudRequest + ): Promise | T[]> { + const { parsed, options } = req; + const builder: SelectQueryBuilder = await this.createBuilder( + parsed, + options + ); + + return this.doGetMany(builder, parsed, options); + } + + /** + * Get one + * @param req + */ + public async getOne(req: CrudRequest): Promise { + return this.getOneOrFail(req); + } + + /** + * Create one + * @param req + * @param dto + */ + public async createOne(req: CrudRequest, dto: DeepPartial): Promise { + // @ts-ignore + const { returnShallow } = req.options.routes?.createOneBase; + const entity = this.prepareEntityBeforeSave(dto, req.parsed); + + /* istanbul ignore if */ + if (!entity) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + + const saved = await this.repo.save(entity); + + if (returnShallow) { + return saved; + } else { + const primaryParams = this.getPrimaryParams(req.options); + + if ( + isEmpty(primaryParams) && + primaryParams.some((p) => isNil(saved[p])) + ) { + return saved; + } else { + req.parsed.search = primaryParams.reduce( + (acc, p) => ({ ...acc, [p]: saved[p] }), + {} + ); + return this.getOneOrFail(req); + } + } + } + + /** + * Create many + * @param req + * @param dto + */ + public async createMany( + req: CrudRequest, + dto: CreateManyDto> + ): Promise { + /* istanbul ignore if */ + if (!isObject(dto) || !isArrayFull(dto.bulk)) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + + const bulk = dto.bulk + .map((one) => this.prepareEntityBeforeSave(one, req.parsed)) + .filter((d) => !isUndefined(d)); + + /* istanbul ignore if */ + if (!bulk.length) { + this.throwBadRequestException(`Empty data. Nothing to save.`); + } + + return this.repo.save(bulk, { chunk: 50 }); + } + + /** + * Update one + * @param req + * @param dto + */ + public async updateOne(req: CrudRequest, dto: DeepPartial): Promise { + const { allowParamsOverride, returnShallow } = ( + req.options.routes?.updateOneBase + ); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while updating + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, returnShallow); + + const toSave = !allowParamsOverride + ? { ...found, ...dto, ...paramsFilters, ...req.parsed.authPersist } + : { ...found, ...dto, ...req.parsed.authPersist }; + const updated = await this.repo.save( + plainToInstance( + this.entityType, + toSave, + req.parsed.classTransformOptions + ) as unknown as DeepPartial + ); + + if (returnShallow) { + return updated; + } else { + req.parsed.paramsFilter.forEach((filter) => { + // @ts-ignore + filter.value = updated[filter.field]; + }); + + return this.getOneOrFail(req); + } + } + + /** + * Recover one + * @param req + * @param dto + */ + public async recoverOne(req: CrudRequest): Promise { + // disable cache while recovering + // @ts-ignore + req.options.query.cache = false; + const found = await this.getOneOrFail(req, false, true); + return this.repo.recover(found as DeepPartial); + } + + /** + * Replace one + * @param req + * @param dto + */ + public async replaceOne(req: CrudRequest, dto: DeepPartial): Promise { + const { allowParamsOverride, returnShallow } = ( + req.options.routes?.replaceOneBase + ); + const paramsFilters = this.getParamFilters(req.parsed); + // disable cache while replacing + // @ts-ignore + req.options.query.cache = false; + const [_, found] = await oO(this.getOneOrFail(req, returnShallow)); + const toSave = !allowParamsOverride + ? { + ...(found || {}), + ...dto, + ...paramsFilters, + ...req.parsed.authPersist, + } + : { + ...(found || {}), + ...paramsFilters, + ...dto, + ...req.parsed.authPersist, + }; + const replaced = await this.repo.save( + plainToInstance( + this.entityType, + toSave, + req.parsed.classTransformOptions + ) as unknown as DeepPartial + ); + + if (returnShallow) { + return replaced; + } else { + const primaryParams: string[] = this.getPrimaryParams(req.options); + + /* istanbul ignore if */ + if (!primaryParams.length) { + return replaced; + } + + req.parsed.search = primaryParams.reduce( + (acc: {}, p: string) => ({ + ...acc, + // @ts-ignore + [p]: replaced[p], + }), + {} + ); + return this.getOneOrFail(req); + } + } + + /** + * Delete one + * @param req + */ + public async deleteOne(req: CrudRequest): Promise { + const { returnDeleted } = ( + req.options.routes?.deleteOneBase + ); + // disable cache while deleting + // @ts-ignore + req.options.query.cache = false; + const found: T = await this.getOneOrFail(req, returnDeleted); + const toReturn: T | undefined = returnDeleted + ? plainToInstance( + this.entityType, + { ...found }, + req.parsed.classTransformOptions + ) + : undefined; + + const deleted: DeepPartial & T = + req.options.query?.softDelete === true + ? await this.repo.softRemove(found as DeepPartial) + : await this.repo.remove(found); + + return toReturn; + } + + public getParamFilters(parsed: CrudRequest["parsed"]): ObjectLiteral { + const filters = {}; + + if (!isEmpty(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + filters[filter.field] = filter.value; + } + } + + return filters; + } + + /** + * Create TypeOrm QueryBuilder + * @param parsed + * @param options + * @param many + * @param withDeleted + */ + public async createBuilder( + parsed: ParsedRequestParams, + options: CrudRequestOptions, + many = true, + withDeleted = false + ): Promise> { + // create query builder + const builder: SelectQueryBuilder = this.repo.createQueryBuilder( + this.alias + ); + // get select fields + const select: string[] = this.getSelect(parsed, options.query || {}); + // select fields + builder.select(select); + + // if soft deleted is enabled add where statement to filter deleted records + if (options.query?.softDelete) { + if (parsed.includeDeleted === 1 || withDeleted) { + builder.withDeleted(); + } + } + + // search + this.setSearchCondition( + builder, + parsed.search || {}, + options.operators?.custom || {} + ); + + // set joins + const joinOptions: JoinOptions = options.query?.join || {}; + const allowedJoins: string[] = Object.keys(joinOptions); + + if (!isEmpty(allowedJoins)) { + const eagerJoins: any = {}; + + for (let i = 0; i < allowedJoins.length; i++) { + if (joinOptions[allowedJoins[i]].eager) { + const cond: QueryJoin = parsed.join.find( + (j: QueryJoin) => j && j.field === allowedJoins[i] + ) || { + field: allowedJoins[i], + }; + this.setJoin(cond, joinOptions, builder); + eagerJoins[allowedJoins[i]] = true; + } + } + + if (isArrayFull(parsed.join)) { + for (let i = 0; i < parsed.join.length; i++) { + if (!eagerJoins[parsed.join[i].field]) { + this.setJoin(parsed.join[i], joinOptions, builder); + } + } + } + } + + if (many) { + // set sort (order by) + const sort = this.getSort(parsed, options.query || {}); + builder.orderBy(sort); + + // set take + const take = this.getTake(parsed, options.query || {}); + + if (take && isFinite(take)) { + builder.take(take); + } + + // set skip + const skip = this.getSkip(parsed, take || 0); + + if (skip && isFinite(skip)) { + builder.skip(skip); + } + } + + // set cache + + if (options.query?.cache && parsed.cache !== 0) { + builder.cache(options.query.cache); + } + + return builder; + } + + /** + * depends on paging call `SelectQueryBuilder#getMany` or `SelectQueryBuilder#getManyAndCount` + * helpful for overriding `TypeOrmCrudService#getMany` + * @see getMany + * @see SelectQueryBuilder#getMany + * @see SelectQueryBuilder#getManyAndCount + * @param builder + * @param query + * @param options + */ + protected async doGetMany( + builder: SelectQueryBuilder, + query: ParsedRequestParams, + options: CrudRequestOptions + ): Promise | T[]> { + if (this.decidePagination(query, options)) { + const [data, total] = await builder.getManyAndCount(); + const limit: number | undefined = builder.expressionMap.take; + const offset: number | undefined = builder.expressionMap.skip; + + return this.createPageInfo(data, total, limit || total, offset || 0); + } + + return builder.getMany(); + } + + protected onInitMapEntityColumns(): void { + this.entityColumns = this.repo.metadata.columns.map( + (prop: ColumnMetadata): string => { + // In case column is an embedded, use the propertyPath to get complete path + if (prop.embeddedMetadata) { + this.entityColumnsHash[prop.propertyPath] = prop.databasePath; + return prop.propertyPath; + } + this.entityColumnsHash[prop.propertyName] = prop.databasePath; + return prop.propertyName; + } + ); + this.entityPrimaryColumns = this.repo.metadata.columns + .filter((prop: ColumnMetadata) => prop.isPrimary) + .map((prop: ColumnMetadata) => prop.propertyName); + this.entityHasDeleteColumn = this.repo.metadata.columns.some( + (prop: ColumnMetadata) => !isEmpty(prop.isDeleteDate) + ); + } + + protected async getOneOrFail( + req: CrudRequest, + shallow = false, + withDeleted = false + ): Promise { + const { parsed, options } = req; + const builder: SelectQueryBuilder = shallow + ? this.repo.createQueryBuilder(this.alias) + : await this.createBuilder(parsed, options, true, withDeleted); + + if (shallow) { + this.setSearchCondition( + builder, + parsed.search || null, + options.operators?.custom + ); + } + + const found: T | null = withDeleted + ? await builder.withDeleted().getOne() + : await builder.getOne(); + + if (!found) { + this.throwNotFoundException(this.alias); + } + + return found; + } + + protected prepareEntityBeforeSave( + dto: DeepPartial, + parsed: CrudRequest["parsed"] + ): T | undefined { + /* istanbul ignore if */ + if (!isObject(dto)) { + return undefined; + } + + if (!isEmpty(parsed.paramsFilter)) { + for (const filter of parsed.paramsFilter) { + // @ts-ignore + dto[filter.field] = filter.value; + } + } + + /* istanbul ignore if */ + if (isEmpty(Object.keys(dto))) { + return undefined; + } + + return dto instanceof this.entityType + ? Object.assign(dto, parsed.authPersist) + : plainToInstance( + this.entityType, + { ...dto, ...parsed.authPersist }, + parsed.classTransformOptions + ); + } + + protected getAllowedColumns( + columns: string[], + options: QueryOptions + ): string[] { + return (!options.exclude || !options.exclude.length) && + (!options.allow || !options.allow.length) + ? columns + : columns.filter( + (column: string) => + (options.exclude && options.exclude.length + ? !options.exclude.some((col: string) => col === column) + : true) && + (options.allow && options.allow.length + ? options.allow.some((col) => col === column) + : true) + ); + } + + protected getEntityColumns(entityMetadata: EntityMetadata): { + columns: string[]; + primaryColumns: string[]; + } { + const columns: string[] = + entityMetadata.columns.map((prop: ColumnMetadata) => prop.propertyPath) || + []; + const primaryColumns: string[] = + entityMetadata.primaryColumns.map( + (prop: ColumnMetadata) => prop.propertyPath + ) || []; + + return { columns, primaryColumns }; + } + + protected getRelationMetadata( + field: string, + options: JoinOption + ): IAllowedRelation | null { + try { + let allowedRelation; + let nested = false; + + if (this.entityRelationsHash.has(field)) { + allowedRelation = this.entityRelationsHash.get(field); + } else { + const fields: string[] = field.split("."); + let relationMetadata: EntityMetadata | null = null; + let name: string | undefined; + let path: string | undefined; + let parentPath: string | undefined; + + if (fields.length === 1) { + const found: RelationMetadata | undefined = + this.repo.metadata.relations.find( + (one: RelationMetadata): boolean => one.propertyName === fields[0] + ); + + if (found) { + name = fields[0]; + path = `${this.alias}.${fields[0]}`; + relationMetadata = found.inverseEntityMetadata; + } + } else { + nested = true; + parentPath = ""; + + const reduced = fields.reduce( + // @ts-ignore + (res, propertyName: string, i) => { + const found = res.relations?.length + ? res.relations.find( + (one: RelationMetadata): boolean => + one.propertyName === propertyName + ) + : null; + relationMetadata = found ? found.inverseEntityMetadata : null; + const relations: RelationMetadata[] = relationMetadata + ? relationMetadata.relations + : []; + name = propertyName; + + if (i !== fields.length - 1) { + parentPath = !parentPath + ? propertyName + : `${parentPath}.${propertyName}`; + } + + return { + relations, + relationMetadata, + }; + }, + { + relations: this.repo.metadata.relations, + relationMetadata: null, + } + ); + + // @ts-ignore + relationMetadata = reduced.relationMetadata; + } + + // @ts-ignore + if (relationMetadata) { + const { columns, primaryColumns } = + this.getEntityColumns(relationMetadata); + + if (!path && parentPath) { + const parentAllowedRelation: IAllowedRelation | undefined = + this.entityRelationsHash.get(parentPath); + + if (parentAllowedRelation) { + path = parentAllowedRelation.alias + ? `${parentAllowedRelation.alias}.${name}` + : field; + } + } + + allowedRelation = { + alias: options.alias, + name, + path, + columns, + nested, + primaryColumns, + }; + } + } + + if (allowedRelation) { + const allowedColumns: string[] = this.getAllowedColumns( + allowedRelation.columns, + options + ); + const toSave: IAllowedRelation = { + ...allowedRelation, + allowedColumns, + }; + + this.entityRelationsHash.set(field, toSave); + + if (options.alias) { + this.entityRelationsHash.set(options.alias, toSave); + } + + return toSave; + } + } catch (_) { + return null; + } + return null; + } + + protected setJoin( + cond: QueryJoin, + joinOptions: JoinOptions, + builder: SelectQueryBuilder + ): undefined | void { + const options: JoinOption = joinOptions[cond.field] ?? null; + + if (!options) { + console.warn( + 'relation "' + + cond.field + + '" not found in allowed relations in the controller. Did you mean to use one of these? [' + + Object.keys(joinOptions).join(", ") + + "]" + ); + return; + } + + const allowedRelation: IAllowedRelation | null = this.getRelationMetadata( + cond.field, + options + ); + + if (!allowedRelation) { + return; + } + + const relationType = options.required ? "innerJoin" : "leftJoin"; + const alias: string = options.alias ? options.alias : allowedRelation.name; + + builder[relationType](allowedRelation.path, alias); + + if (options.select !== false) { + const columns = isArrayFull(cond.select) + ? cond.select?.filter((column: string) => + allowedRelation.allowedColumns.some( + (allowed: string): boolean => allowed === column + ) + ) || [] + : allowedRelation.allowedColumns || []; + + const select: string[] = [ + ...allowedRelation.primaryColumns, + // @ts-ignore + ...(isArrayFull(options.persist) ? options.persist : []), + ...columns, + ].map((col): string => `${alias}.${col}`); + + builder.addSelect(Array.from(new Set(select))); + } + } + + protected setAndWhere( + cond: QueryFilter, + i: any, + builder: SelectQueryBuilder | WhereExpressionBuilder, + customOperators: CustomOperators + ): void { + const { str, params } = this.mapOperatorsToQuery( + cond, + `andWhere${i}`, + customOperators + ); + builder.andWhere(str, params); + } + + protected setOrWhere( + cond: QueryFilter, + i: any, + builder: SelectQueryBuilder | WhereExpressionBuilder, + customOperators: CustomOperators + ): void { + const { str, params } = this.mapOperatorsToQuery( + cond, + `orWhere${i}`, + customOperators + ); + builder.orWhere(str, params); + } + + protected setSearchCondition( + builder: SelectQueryBuilder, + search: SCondition | null, + customOperators: CustomOperators, + condition: SConditionKey = "$and" + ): void { + if (isObject(search)) { + const keys = Object.keys(search); + + if (keys.length) { + // search: {$ne: [...]} + // @ts-ignore + if (isArrayFull(search?.$ne)) { + this.builderAddBrackets( + builder, + condition, + new Brackets((qb: any): void => { + // @ts-ignore + search.$not.forEach((item: any): void => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + }), + true + ); + } + // search: {$and: [...], ...} + else if (isArrayFull(search?.$and)) { + // search: {$and: [{}]} + if (search?.$and?.length === 1) { + this.setSearchCondition( + builder, + search.$and[0], + customOperators, + condition + ); + } + // search: {$and: [{}, {}, ...]} + else { + this.builderAddBrackets( + builder, + condition, + new Brackets((qb: any): void => { + search?.$and?.forEach((item: any): void => { + this.setSearchCondition(qb, item, customOperators, "$and"); + }); + }) + ); + } + } + // search: {$or: [...], ...} + else if (isArrayFull(search?.$or)) { + // search: {$or: [...]} + if (keys.length === 1) { + // search: {$or: [{}]} + if (search?.$or?.length === 1) { + this.setSearchCondition( + builder, + search.$or[0], + customOperators, + condition + ); + } + // search: {$or: [{}, {}, ...]} + else { + this.builderAddBrackets( + builder, + condition, + new Brackets((qb: any) => { + search?.$or?.forEach((item: any) => { + this.setSearchCondition(qb, item, customOperators, "$or"); + }); + }) + ); + } + } + // search: {$or: [...], foo, ...} + else { + this.builderAddBrackets( + builder, + condition, + new Brackets((qb: any): void => { + keys.forEach((field: string): void => { + if (field !== "$or") { + // @ts-ignore + const value = search[field]; + if (!isObject(value)) { + this.builderSetWhere( + qb, + "$and", + field, + value, + customOperators + ); + } else { + this.setSearchFieldObjectCondition( + qb, + "$and", + field, + value, + customOperators + ); + } + } else { + if (search?.$or?.length === 1) { + this.setSearchCondition( + builder, + search.$or[0], + customOperators, + "$and" + ); + } else { + this.builderAddBrackets( + qb, + "$and", + new Brackets((qb2: any) => { + search?.$or?.forEach((item: any) => { + this.setSearchCondition( + qb2, + item, + customOperators, + "$or" + ); + }); + }) + ); + } + } + }); + }) + ); + } + } + // search: {...} + else { + // search: {foo} + if (keys.length === 1) { + const field: string = keys[0]; + // @ts-ignore + const value = search[field]; + if (!isObject(value)) { + this.builderSetWhere( + builder, + condition, + field, + value, + customOperators + ); + } else { + this.setSearchFieldObjectCondition( + builder, + condition, + field, + value, + customOperators + ); + } + } + // search: {foo, ...} + else { + this.builderAddBrackets( + builder, + condition, + new Brackets((qb: any) => { + keys.forEach((field: string) => { + // @ts-ignore + const value = search[field]; + if (!isObject(value)) { + this.builderSetWhere( + qb, + "$and", + field, + value, + customOperators + ); + } else { + this.setSearchFieldObjectCondition( + qb, + "$and", + field, + value, + customOperators + ); + } + }); + }) + ); + } + } + } + } + } + + protected builderAddBrackets( + builder: SelectQueryBuilder, + condition: SConditionKey, + brackets: Brackets, + negated = false + ) { + if (negated) { + // No builtin support for not, this is copied from QueryBuilder.getWhereCondition + + const whereQueryBuilder: SelectQueryBuilder = + builder.createQueryBuilder(); + + (whereQueryBuilder as any).parentQueryBuilder = builder; + + whereQueryBuilder.expressionMap.mainAlias = + builder.expressionMap.mainAlias; + whereQueryBuilder.expressionMap.aliasNamePrefixingEnabled = + builder.expressionMap.aliasNamePrefixingEnabled; + whereQueryBuilder.expressionMap.parameters = + builder.expressionMap.parameters; + whereQueryBuilder.expressionMap.nativeParameters = + builder.expressionMap.nativeParameters; + + whereQueryBuilder.expressionMap.wheres = []; + + brackets.whereFactory(whereQueryBuilder as any); + + const wheres = { + operator: "brackets", + condition: whereQueryBuilder.expressionMap.wheres, + }; + + const type = + condition === "$and" ? "and" : condition === "$or" ? "or" : "simple"; + builder.expressionMap.wheres.push({ + type, + condition: { + operator: "not", + condition: wheres as any, + }, + }); + } else if (condition === "$and") { + builder.andWhere(brackets); + } else { + builder.orWhere(brackets); + } + } + + protected builderSetWhere( + builder: SelectQueryBuilder, + condition: SConditionKey, + field: string, + value: any, + customOperators: CustomOperators, + operator: ComparisonOperator = "$eq" + ): void { + const time = process.hrtime(); + // const index = `${field}${time[0]}${time[1]}`; + /** + * Correcting the Error [Invalid Column Name] or [ syntax error at or near \":\".] + * When using filter or search in relational/nested entities. + */ + const safeFieldName = field.replace(/./g, "_"); + const index = `${safeFieldName}${time[0]}${time[1]}`; + + const args = [ + { field, operator: isNull(value) ? "$isnull" : operator, value }, + index, + builder, + customOperators, + ]; + const fn = condition === "$and" ? this.setAndWhere : this.setOrWhere; + // @ts-ignore + fn.apply(this, args); + } + + protected setSearchFieldObjectCondition( + builder: SelectQueryBuilder, + condition: SConditionKey, + field: string, + object: any, + customOperators: CustomOperators + ): void { + if (isObject(object)) { + const operators: string[] = Object.keys(object); + + if (operators.length === 1) { + const operator: string = operators[0] as ComparisonOperator; + const value = object[operator]; + + if (isObject(object.$or)) { + const orKeys: string[] = Object.keys(object.$or); + this.setSearchFieldObjectCondition( + builder, + orKeys.length === 1 ? condition : "$or", + field, + object.$or, + customOperators + ); + } else { + this.builderSetWhere( + builder, + condition, + field, + value, + customOperators, + operator + ); + } + } else { + if (operators.length > 1) { + this.builderAddBrackets( + builder, + condition, + new Brackets((qb: any): void => { + operators.forEach((operator: ComparisonOperator): void => { + const value = object[operator]; + + if (operator !== "$or") { + this.builderSetWhere( + qb, + condition, + field, + value, + customOperators, + operator + ); + } else { + const orKeys: string[] = Object.keys(object.$or); + + if (orKeys.length === 1) { + this.setSearchFieldObjectCondition( + qb, + condition, + field, + object.$or, + customOperators + ); + } else { + this.builderAddBrackets( + qb, + condition, + new Brackets((qb2: any) => { + this.setSearchFieldObjectCondition( + qb2, + "$or", + field, + object.$or, + customOperators + ); + }) + ); + } + } + }); + }) + ); + } + } + } + } + + protected getSelect( + query: ParsedRequestParams, + options: QueryOptions + ): string[] { + const allowed: string[] = this.getAllowedColumns( + this.entityColumns || [], + options + ); + const columns = + query.fields && query.fields.length + ? query.fields.filter((field) => + allowed.some((col: string): boolean => field === col) + ) + : allowed; + return [ + ...new Set([ + ...(options.persist && options.persist.length ? options.persist : []), + ...columns, + ...(this.entityPrimaryColumns || []), + ]), + ].map((col): string => `${this.alias}.${col}`); + } + + protected getSort(query: ParsedRequestParams, options: QueryOptions) { + return query.sort && query.sort.length + ? this.mapSort(query.sort) + : options.sort && options.sort.length + ? this.mapSort(options.sort) + : {}; + } + + protected getFieldWithAlias(field: string, sort = false) { + const i = ["mysql", "mariadb"].includes(this.dbName) ? "`" : '"'; + const cols = field.split("."); + + switch (cols.length) { + case 1: + if (sort) { + return `${this.alias}.${field}`; + } + + const dbColName = + this.entityColumnsHash[field] !== field + ? this.entityColumnsHash[field] + : field; + + return `${i}${this.alias}${i}.${i}${dbColName}${i}`; + case 2: + return field; + default: + return cols.slice(cols.length - 2, cols.length).join("."); + } + } + + protected mapSort(sort: QuerySort[]) { + const params: ObjectLiteral = {}; + + for (let i = 0; i < sort.length; i++) { + const field = this.getFieldWithAlias(sort[i].field, true); + const checkedFiled = this.checkSqlInjection(field); + params[checkedFiled] = sort[i].order; + } + + return params; + } + + protected mapOperatorsToQuery( + cond: QueryFilter, + param: any, + customOperators: CustomOperators = {} + ): { str: string; params: ObjectLiteral } { + const field: string = this.getFieldWithAlias(cond.field); + const likeOperator = this.dbName === "postgres" ? "ILIKE" : "LIKE"; + let str: string | undefined; + let params: ObjectLiteral | undefined; + + if (cond.operator[0] !== "$") { + cond.operator = ("$" + cond.operator) as ComparisonOperator; + } + + switch (cond.operator) { + case CondOperator.EQUALS: + str = `${field} = :${param}`; + break; + + case CondOperator.NOT_EQUALS: + str = `${field} != :${param}`; + break; + + case CondOperator.GREATER_THAN: + str = `${field} > :${param}`; + break; + + case CondOperator.LOWER_THAN: + str = `${field} < :${param}`; + break; + + case CondOperator.GREATER_THAN_EQUALS: + str = `${field} >= :${param}`; + break; + + case CondOperator.LOWER_THAN_EQUALS: + str = `${field} <= :${param}`; + break; + + case CondOperator.STARTS: + str = `${field} LIKE :${param}`; + params = { [param]: `${cond.value}%` }; + break; + + case CondOperator.ENDS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}` }; + break; + + case CondOperator.CONTAINS: + str = `${field} LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + + case CondOperator.EXCLUDES: + str = `${field} NOT LIKE :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + + case CondOperator.IN: + this.checkFilterIsArray(cond); + str = `${field} IN (:...${param})`; + break; + + case CondOperator.NOT_IN: + this.checkFilterIsArray(cond); + str = `${field} NOT IN (:...${param})`; + break; + + case CondOperator.IS_NULL: + str = `${field} IS NULL`; + params = {}; + break; + + case CondOperator.NOT_NULL: + str = `${field} IS NOT NULL`; + params = {}; + break; + + case CondOperator.BETWEEN: + this.checkFilterIsArray(cond, cond.value.length !== 2); + str = `${field} BETWEEN :${param}0 AND :${param}1`; + params = { + [`${param}0`]: cond.value[0], + [`${param}1`]: cond.value[1], + }; + break; + + // case insensitive + case CondOperator.EQUALS_LOW: + str = `LOWER(${field}) = :${param}`; + break; + + case CondOperator.NOT_EQUALS_LOW: + str = `LOWER(${field}) != :${param}`; + break; + + case CondOperator.STARTS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `${cond.value}%` }; + break; + + case CondOperator.ENDS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}` }; + break; + + case CondOperator.CONTAINS_LOW: + str = `LOWER(${field}) ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + + case CondOperator.EXCLUDES_LOW: + str = `LOWER(${field}) NOT ${likeOperator} :${param}`; + params = { [param]: `%${cond.value}%` }; + break; + + case CondOperator.IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) IN (:...${param})`; + break; + + case CondOperator.NOT_IN_LOW: + this.checkFilterIsArray(cond); + str = `LOWER(${field}) NOT IN (:...${param})`; + break; + + default: + const customOperator = customOperators[cond.operator]; + + if (!customOperator) { + str = `${field} = :${param}`; + break; + } + + try { + if (customOperator.isArray) { + this.checkFilterIsArray(cond); + } + str = customOperator.query(field, param); + params = customOperator.params || {}; + } catch (error) { + this.throwBadRequestException( + `Invalid custom operator '${field}' query` + ); + } + + break; + } + + if (typeof params === "undefined") { + params = { [param]: cond.value }; + } + + return { str: str, params }; + } + + protected checkFilterIsArray(cond: QueryFilter, withLength?: boolean) { + /* istanbul ignore if */ + if ( + !Array.isArray(cond.value) || + !cond.value.length || + (!isNil(withLength) ? withLength : false) + ) { + this.throwBadRequestException(`Invalid column '${cond.field}' value`); + } + } + + protected checkSqlInjection(field: string): string { + if (this.sqlInjectionRegEx.length) { + for (let i = 0; i < this.sqlInjectionRegEx.length; i++) { + if (this.sqlInjectionRegEx[i].test(field)) { + this.throwBadRequestException(`SQL injection detected: "${field}"`); + } + } + } + + return field; + } +} diff --git a/packages/crudx/src/types/common.types.ts b/packages/crudx/src/types/common.types.ts new file mode 100644 index 000000000..a79e7877c --- /dev/null +++ b/packages/crudx/src/types/common.types.ts @@ -0,0 +1,7 @@ +export type ClassType = { + new (...args: any[]): T; +}; + +export type ObjectLiteral = { + [key: string]: any; +}; diff --git a/packages/crudx/src/types/crud.types.ts b/packages/crudx/src/types/crud.types.ts new file mode 100644 index 000000000..915290f5a --- /dev/null +++ b/packages/crudx/src/types/crud.types.ts @@ -0,0 +1,21 @@ +import { SCondition, QueryFilter } from "./request-query.types"; + +export type BaseRouteName = + | "getManyBase" + | "getOneBase" + | "createOneBase" + | "createManyBase" + | "updateOneBase" + | "replaceOneBase" + | "deleteOneBase" + | "recoverOneBase"; + +export type QueryFilterFunction = ( + search?: SCondition, + getMany?: boolean +) => SCondition | void; + +export type QueryFilterOption = + | QueryFilter[] + | SCondition + | QueryFilterFunction; diff --git a/packages/crudx/src/types/index.ts b/packages/crudx/src/types/index.ts new file mode 100644 index 000000000..97a5cad1c --- /dev/null +++ b/packages/crudx/src/types/index.ts @@ -0,0 +1,4 @@ +export * from "./common.types"; +export * from "./crud.types"; +export * from "./request-param.types"; +export * from "./request-query.types"; diff --git a/packages/crudx/src/types/request-param.types.ts b/packages/crudx/src/types/request-param.types.ts new file mode 100644 index 000000000..40cbb698b --- /dev/null +++ b/packages/crudx/src/types/request-param.types.ts @@ -0,0 +1 @@ +export type ParamOptionType = "number" | "string" | "uuid"; diff --git a/packages/crudx/src/types/request-query.types.ts b/packages/crudx/src/types/request-query.types.ts new file mode 100644 index 000000000..8f87af7d6 --- /dev/null +++ b/packages/crudx/src/types/request-query.types.ts @@ -0,0 +1,111 @@ +import { ObjectLiteral } from "./common.types"; + +export type QueryFields = string[]; + +export interface QueryFilter { + field: string; + operator: ComparisonOperator; + value?: any; +} + +export type QueryFilterArr = [string, ComparisonOperator, any?]; + +export interface QueryJoin { + field: string; + select?: QueryFields; +} + +export type QueryJoinArr = [string, QueryFields?]; + +export interface QuerySort { + field: string; + order: QuerySortOperator; +} + +/** Extra object or null */ +export type QueryExtra = ObjectLiteral | undefined; + +export type QuerySortArr = [string, QuerySortOperator]; + +export type QuerySortOperator = "ASC" | "DESC"; + +export enum CondOperator { + EQUALS = "$eq", + NOT_EQUALS = "$ne", + GREATER_THAN = "$gt", + LOWER_THAN = "$lt", + GREATER_THAN_EQUALS = "$gte", + LOWER_THAN_EQUALS = "$lte", + STARTS = "$starts", + ENDS = "$ends", + CONTAINS = "$cont", + EXCLUDES = "$excl", + IN = "$in", + NOT_IN = "$notin", + IS_NULL = "$isnull", + NOT_NULL = "$notnull", + BETWEEN = "$between", + EQUALS_LOW = "$eqL", + NOT_EQUALS_LOW = "$neL", + STARTS_LOW = "$startsL", + ENDS_LOW = "$endsL", + CONTAINS_LOW = "$contL", + EXCLUDES_LOW = "$exclL", + IN_LOW = "$inL", + NOT_IN_LOW = "$notinL", +} + +export type ComparisonOperator = keyof SFieldOperator | string; + +// new search +export type SPrimitivesVal = string | number | boolean; + +export type SFiledValues = SPrimitivesVal | SPrimitivesVal[]; + +export interface SFieldOperator { + $eq?: SFiledValues; + $ne?: SFiledValues; + $gt?: SFiledValues; + $lt?: SFiledValues; + $gte?: SFiledValues; + $lte?: SFiledValues; + $starts?: SFiledValues; + $ends?: SFiledValues; + $cont?: SFiledValues; + $excl?: SFiledValues; + $in?: SFiledValues; + $notin?: SFiledValues; + $between?: SFiledValues; + $isnull?: SFiledValues; + $notnull?: SFiledValues; + $eqL?: SFiledValues; + $neL?: SFiledValues; + $startsL?: SFiledValues; + $endsL?: SFiledValues; + $contL?: SFiledValues; + $exclL?: SFiledValues; + $inL?: SFiledValues; + $notinL?: SFiledValues; + $or?: SFieldOperator; + $and?: never; +} + +export type SField = + | SPrimitivesVal + | SFieldOperator + | { [$custom: string]: SFiledValues }; + +export interface SFields { + [key: string]: SField | Array | undefined; + $or?: Array; + $and?: never; +} + +export interface SConditionAND { + $and?: Array; + $or?: never; +} + +export type SConditionKey = "$and" | "$or"; + +export type SCondition = SFields | SConditionAND; diff --git a/packages/crudx/tests/__fixture__/database.config.ts b/packages/crudx/tests/__fixture__/database.config.ts new file mode 100644 index 000000000..1b9ef016f --- /dev/null +++ b/packages/crudx/tests/__fixture__/database.config.ts @@ -0,0 +1,20 @@ +import { registerAs } from "@nestjs/config"; + +import { IdentityType } from "./model/identity-type.model"; +import { Nested } from "./model/nested.model"; +import { RelationTest } from "./model/relation-test.model"; +import { TestingModel } from "./model/testing-model.model"; +import { UuidModel } from "./model/uuid.model"; + +export const databaseConfig = registerAs("database", () => ({ + type: process.env["DB_TYPE"], + host: process.env["DB_HOST"], + port: process.env["DB_PORT"], + username: process.env["DB_USERNAME"], + password: process.env["DB_PASSWORD"], + database: process.env["DB_DATABASE"], + entities: [TestingModel, RelationTest, Nested, IdentityType, UuidModel], + synchronize: true, + autoLoadEntities: true, + encoding: process.env["DB_CHARSET"], +})); diff --git a/packages/crudx/tests/__fixture__/exception.ts b/packages/crudx/tests/__fixture__/exception.ts new file mode 100644 index 000000000..9a0d42662 --- /dev/null +++ b/packages/crudx/tests/__fixture__/exception.ts @@ -0,0 +1,21 @@ +import { + ArgumentsHost, + Catch, + ExceptionFilter, + HttpStatus, +} from "@nestjs/common"; + +import { RequestQueryException } from "../../src"; + +@Catch(RequestQueryException) +export class HttpExceptionFilter implements ExceptionFilter { + catch(exception: RequestQueryException, host: ArgumentsHost) { + const ctx = host.switchToHttp(); + const response = ctx.getResponse(); + console.log("handling response", exception.message); + response.status(400).json({ + statusCode: HttpStatus.BAD_REQUEST, + message: exception.message, + }); + } +} diff --git a/packages/crudx/tests/__fixture__/guards/acl.guard.ts b/packages/crudx/tests/__fixture__/guards/acl.guard.ts new file mode 100644 index 000000000..99d1a33e5 --- /dev/null +++ b/packages/crudx/tests/__fixture__/guards/acl.guard.ts @@ -0,0 +1,32 @@ +import { + CanActivate, + ExecutionContext, + UnauthorizedException, +} from "@nestjs/common"; +import { Observable } from "rxjs"; + +import { getAction, getFeature } from "../../../src"; + +export class ACLGuard implements CanActivate { + private ALLOWED_ACTIONS = ["readMe-Read-One"]; + + canActivate( + context: ExecutionContext + ): boolean | Promise | Observable { + const handler = context.getHandler(); + const controller = context.getClass(); + + const feature = getFeature(controller); + const action = getAction(handler); + + const filteredActions = this.ALLOWED_ACTIONS.filter( + (actionItem) => actionItem === `${feature}-${action}` + ); + + if (filteredActions.length === 0) { + throw new UnauthorizedException(); + } + + return true; + } +} diff --git a/packages/crudx/tests/__fixture__/model/embeded-dates.ts b/packages/crudx/tests/__fixture__/model/embeded-dates.ts new file mode 100644 index 000000000..655fd5ad0 --- /dev/null +++ b/packages/crudx/tests/__fixture__/model/embeded-dates.ts @@ -0,0 +1,9 @@ +import { Column, CreateDateColumn, UpdateDateColumn } from "typeorm"; + +export class EmbededDates { + @CreateDateColumn({ type: "timestamp", name: "created_at" }) + createdAt: Date | null = null; + + @UpdateDateColumn({ type: "timestamp", name: "updated_at" }) + updatedAt: Date | null = null; +} diff --git a/packages/crudx/tests/__fixture__/model/identity-type.model.ts b/packages/crudx/tests/__fixture__/model/identity-type.model.ts new file mode 100644 index 000000000..fb05a2ca6 --- /dev/null +++ b/packages/crudx/tests/__fixture__/model/identity-type.model.ts @@ -0,0 +1,10 @@ +import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +export class IdentityType extends BaseEntity { + @PrimaryGeneratedColumn() + id: number = 0; + + @Column({ type: "varchar", length: 200 }) + type: string = ""; +} diff --git a/packages/crudx/tests/__fixture__/model/nested.model.ts b/packages/crudx/tests/__fixture__/model/nested.model.ts new file mode 100644 index 000000000..49e98870d --- /dev/null +++ b/packages/crudx/tests/__fixture__/model/nested.model.ts @@ -0,0 +1,33 @@ +import { + BaseEntity, + Column, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from "typeorm"; + +import { IdentityType } from "./identity-type.model"; + +@Entity() +export class Nested extends BaseEntity { + @PrimaryGeneratedColumn() + id = 0; + + @Column({ type: "varchar", length: 200 }) + identity = ""; + + @Column({ name: "identity_type", type: "integer", nullable: true }) + typeId: number | null = null; + + @ManyToOne(() => IdentityType, (type) => type.id, { + cascade: true, + onDelete: "CASCADE", + nullable: true, + }) + @JoinColumn({ + name: "identity_type_id", + referencedColumnName: "id", + }) + type: IdentityType | null = null; +} diff --git a/packages/crudx/tests/__fixture__/model/relation-test.model.ts b/packages/crudx/tests/__fixture__/model/relation-test.model.ts new file mode 100644 index 000000000..423935f56 --- /dev/null +++ b/packages/crudx/tests/__fixture__/model/relation-test.model.ts @@ -0,0 +1,33 @@ +import { + BaseEntity, + Column, + Entity, + JoinColumn, + ManyToOne, + PrimaryGeneratedColumn, +} from "typeorm"; + +import { Nested } from "./nested.model"; + +@Entity() +export class RelationTest extends BaseEntity { + @PrimaryGeneratedColumn() + id = 0; + + @Column({ type: "varchar", length: 200 }) + name = ""; + + @Column({ type: "integer", name: "nested_id", nullable: true }) + nestedId: number | null = null; + + @ManyToOne(() => Nested, (nested) => nested.id, { + cascade: true, + onDelete: "CASCADE", + nullable: true, + }) + @JoinColumn({ + name: "nested_id", + referencedColumnName: "id", + }) + nested: Nested | null = null; +} diff --git a/packages/crudx/tests/__fixture__/model/testing-model.model.ts b/packages/crudx/tests/__fixture__/model/testing-model.model.ts new file mode 100644 index 000000000..71e78753b --- /dev/null +++ b/packages/crudx/tests/__fixture__/model/testing-model.model.ts @@ -0,0 +1,48 @@ +import { + BaseEntity, + Column, + DeleteDateColumn, + Entity, + JoinColumn, + ManyToOne, + OneToMany, + PrimaryGeneratedColumn, +} from "typeorm"; +import { RelationTest } from "./relation-test.model"; +import { EmbededDates } from "./embeded-dates"; + +@Entity() +export class TestingModel extends BaseEntity { + @PrimaryGeneratedColumn() + id: number = 0; + + @Column({ name: "first_name", type: "varchar", length: 100 }) + firstName: string = ""; + + @Column({ name: "last_name", type: "varchar", length: 100 }) + lastName: string = ""; + + @Column({ type: "integer" }) + age: number = 0; + + @Column({ type: "int", name: "relation_id", nullable: true }) + relationTestId: number | null = null; + + @ManyToOne(() => RelationTest, (relationTest) => relationTest.id, { + cascade: true, + onDelete: "CASCADE", + nullable: true, + }) + @JoinColumn({ + name: "relation_id", + referencedColumnName: "id", + foreignKeyConstraintName: "testing-relation-fk", + }) + relationTest: RelationTest | null = null; + + @DeleteDateColumn({ name: "deleted_at", nullable: true }) + deletedAt?: Date; + + @Column(() => EmbededDates) + dates?: EmbededDates; +} diff --git a/packages/crudx/tests/__fixture__/model/uuid.model.ts b/packages/crudx/tests/__fixture__/model/uuid.model.ts new file mode 100644 index 000000000..621f687e8 --- /dev/null +++ b/packages/crudx/tests/__fixture__/model/uuid.model.ts @@ -0,0 +1,13 @@ +import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from "typeorm"; + +@Entity() +export class UuidModel extends BaseEntity { + @PrimaryGeneratedColumn("uuid") + id: string | any; + + @Column({ type: "varchar", nullable: true, length: 255 }) + name: string | null = null; + + @Column({ type: "integer", nullable: true }) + age: number | null = null; +} diff --git a/packages/crudx/tests/__fixture__/module/test-module.module.ts b/packages/crudx/tests/__fixture__/module/test-module.module.ts new file mode 100644 index 000000000..9db46b77f --- /dev/null +++ b/packages/crudx/tests/__fixture__/module/test-module.module.ts @@ -0,0 +1,47 @@ +import { Module } from "@nestjs/common"; +import { ConfigModule, ConfigService } from "@nestjs/config"; +import { TypeOrmModule, TypeOrmModuleOptions } from "@nestjs/typeorm"; + +import { databaseConfig } from "../database.config"; +import { IdentityType } from "../model/identity-type.model"; +import { Nested } from "../model/nested.model"; +import { RelationTest } from "../model/relation-test.model"; +import { TestingModel } from "../model/testing-model.model"; +import { UuidModel } from "../model/uuid.model"; +import { RelationTestService } from "../service/relation.test.service"; +import { TestingService } from "../service/testing-service.service"; +import { UuidService } from "../service/uuid.service"; + +@Module({ + imports: [ + ConfigModule.forRoot({ + isGlobal: true, + envFilePath: [".env.testing"], + load: [databaseConfig], + }), + TypeOrmModule.forRootAsync({ + useFactory: (config: ConfigService) => + { + type: config.get("database.type"), + host: config.get("database.host"), + port: config.get("database.port"), + username: config.get("database.username"), + password: config.get("database.password"), + database: config.get("database.database"), + entities: config.get("database.entities"), + synchronize: config.get("database.synchronize"), + }, + inject: [ConfigService], + }), + TypeOrmModule.forFeature([ + TestingModel, + RelationTest, + Nested, + IdentityType, + UuidModel, + ]), + ], + providers: [TestingService, RelationTestService, UuidService], + exports: [TestingService, RelationTestService, UuidService], +}) +export class TestModule {} diff --git a/packages/crudx/tests/__fixture__/service/relation.test.service.ts b/packages/crudx/tests/__fixture__/service/relation.test.service.ts new file mode 100644 index 000000000..b6deb8ff5 --- /dev/null +++ b/packages/crudx/tests/__fixture__/service/relation.test.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { Repository } from "typeorm"; + +import { TypeOrmCrudService } from "../../../src"; +import { RelationTest } from "../model/relation-test.model"; + +@Injectable() +export class RelationTestService extends TypeOrmCrudService { + constructor( + @InjectRepository(RelationTest) override repo: Repository + ) { + super(repo); + } +} diff --git a/packages/crudx/tests/__fixture__/service/testing-service.service.ts b/packages/crudx/tests/__fixture__/service/testing-service.service.ts new file mode 100644 index 000000000..1e4034ac9 --- /dev/null +++ b/packages/crudx/tests/__fixture__/service/testing-service.service.ts @@ -0,0 +1,16 @@ +import { Catch, Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; + +import { TypeOrmCrudService } from "@2amtech/crudx"; +import { TestingModel } from "../model/testing-model.model"; +import { Repository } from "typeorm"; +import { RequestQueryException } from "../../../src"; + +@Injectable() +export class TestingService extends TypeOrmCrudService { + constructor( + @InjectRepository(TestingModel) override repo: Repository + ) { + super(repo); + } +} diff --git a/packages/crudx/tests/__fixture__/service/uuid.service.ts b/packages/crudx/tests/__fixture__/service/uuid.service.ts new file mode 100644 index 000000000..b000207fb --- /dev/null +++ b/packages/crudx/tests/__fixture__/service/uuid.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from "@nestjs/common"; +import { InjectRepository } from "@nestjs/typeorm"; +import { Repository } from "typeorm"; + +import { TypeOrmCrudService } from "../../../src"; +import { UuidModel } from "../model/uuid.model"; + +@Injectable() +export class UuidService extends TypeOrmCrudService { + constructor( + @InjectRepository(UuidModel) override repo: Repository + ) { + super(repo); + } +} diff --git a/packages/crudx/tests/auth/auth.controller.spec.ts b/packages/crudx/tests/auth/auth.controller.spec.ts new file mode 100644 index 000000000..08b9621b7 --- /dev/null +++ b/packages/crudx/tests/auth/auth.controller.spec.ts @@ -0,0 +1,72 @@ +import { Controller, INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { ClassTransformOptions } from "class-transformer"; +import { useContainer } from "class-validator"; +import * as request from "supertest"; + +import { Crud, CrudAuth, CrudController } from "../../src"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { TestingService } from "../__fixture__/service/testing-service.service"; + +const BASE_CONTROLLER = "/auto-controller-test/"; + +@Crud({ + model: { + type: TestingModel, + }, +}) +@CrudAuth({ + property: "id", + classTransformOptions: (req: any): ClassTransformOptions => { + return { req }; + }, + groups: (req: any): string[] => { + return ["Read-One"]; + }, + // dummy auth no user + filter: (req: any) => ({ + id: undefined, + }), + persist: (req: any) => ({ + id: undefined, + }), +}) +@Controller(BASE_CONTROLLER) +export class CrudAuthController implements CrudController { + constructor(public service: TestingService) {} +} + +describe("#CrudAuth", () => { + let app: INestApplication; + let server: any; + let service: TestingService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [TestModule], + controllers: [CrudAuthController], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + server = app.getHttpServer(); + service = module.get(TestingService); + }); + + afterAll(async () => { + await server.close(); + await app.close(); + }); + + it("Should return emtpy body (no user authenticated", async () => { + return request(server) + .get(BASE_CONTROLLER) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(0); + }); + }); +}); diff --git a/packages/crudx/tests/condig-options/global.options.spec.ts b/packages/crudx/tests/condig-options/global.options.spec.ts new file mode 100644 index 000000000..08a2ad8c9 --- /dev/null +++ b/packages/crudx/tests/condig-options/global.options.spec.ts @@ -0,0 +1,102 @@ +import { Controller, INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import * as request from "supertest"; + +import { + CrudController, + CrudGlobalConfig, + ParamsNamesMap, + RequestQueryBuilderOptions, +} from "../../src"; +import { CrudConfigService } from "../../src"; + +const conf: CrudGlobalConfig = { + query: { + limit: 10, + maxLimit: 10, + cache: 2000, + alwaysPaginate: true, + }, + queryParser: { + delim: "|", + delimStr: "s", + }, + params: { + id: { + field: "id", + type: "uuid", + primary: true, + }, + }, + routes: { + exclude: ["createManyBase"], + updateOneBase: { + allowParamsOverride: true, + }, + replaceOneBase: { + allowParamsOverride: true, + }, + }, + serialize: { + get: false, + }, +}; + +CrudConfigService.load(conf); + +import { Crud } from "../../src/decorators/crud.decorator"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; +import { TestingService } from "../__fixture__/service/testing-service.service"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { useContainer } from "class-validator"; + +const BASE_CONTROLLER = "/config-options-test/"; + +@Crud({ + model: { + type: TestingModel, + }, +}) +@Controller(BASE_CONTROLLER) +class GlobalOptionsTestController implements CrudController { + constructor(public service: TestingService) {} +} + +describe("#crud", () => { + describe("#CrudConfigService", () => { + let app: INestApplication; + let server: any; + let service: TestingService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [TestModule], + controllers: [GlobalOptionsTestController], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + server = app.getHttpServer(); + service = module.get(TestingService); + }); + + afterAll(async () => { + await server.close(); + await app.close(); + }); + + it("should use global config", () => { + return request(server) + .get(BASE_CONTROLLER) + .expect(200) + .expect((res) => { + expect(res.body.data).toBeDefined(); + expect(res.body.count).toBeDefined(); + expect(res.body.page).toBeDefined(); + expect(res.body.pageCount).toBeDefined(); + }); + }); + }); +}); diff --git a/packages/crudx/tests/decorators/crud.decorator.spec.ts b/packages/crudx/tests/decorators/crud.decorator.spec.ts new file mode 100644 index 000000000..dbe34e266 --- /dev/null +++ b/packages/crudx/tests/decorators/crud.decorator.spec.ts @@ -0,0 +1,408 @@ +import { + BadRequestException, + Controller, + INestApplication, + UseGuards, +} from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import * as request from "supertest"; + +import { + Action, + CreateManyDto, + Crud, + CrudActions, + CrudAuth, + CrudController, + CrudRequest, + Feature, + GetManyDefaultResponse, + Override, + ParsedBody, + ParsedRequest, +} from "../../src"; +import { ACLGuard } from "../__fixture__/guards/acl.guard"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { TestingService } from "../__fixture__/service/testing-service.service"; + +const BASE_CRUD_URL = "/test-base-decorator/"; +const AUTH_CRUD_URL = "/test-auth-decorator/"; +const GUARD_CONTROLLER = "/test-guard-decorator"; +const OVERRIDE_CRUD_URL = "/test-override-decorator/"; +const BASE_EXCLUDE_CONTROLLER = "/test-exclude-routes/"; + +@Crud({ + model: { + type: TestingModel, + }, +}) +@Controller(BASE_CRUD_URL) +class CrudBaseControllerTest implements CrudController { + constructor(public service: TestingService) {} +} + +@CrudAuth({ + property: "testingModel", + filter: (model: any) => ({ + id: 1, + }), +}) +@Crud({ + model: { + type: TestingModel, + }, + routes: { + only: ["getOneBase"], + }, + params: { + id: { + primary: true, + disabled: true, + }, + }, +}) +@Feature("readMe") +@Action(CrudActions.ReadOne) +@UseGuards(ACLGuard) +@Controller(AUTH_CRUD_URL) +class CrudAuthControllerTest implements CrudController { + constructor(public service: TestingService) {} +} + +@Crud({ + model: { + type: TestingModel, + }, +}) +@UseGuards(ACLGuard) +@Controller(GUARD_CONTROLLER) +class CrudGuardControllerTest implements CrudController { + constructor(public service: TestingService) {} +} + +interface WithExtraProp extends TestingModel { + customProp: string | null; +} + +@Crud({ + model: { + type: TestingModel, + }, + routes: { + only: ["getOneBase", "createOneBase", "createManyBase", "getManyBase"], + }, +}) +@Controller(OVERRIDE_CRUD_URL) +class CrudOverrideControllerTest implements CrudController { + constructor(public service: TestingService) {} + + get base(): CrudController { + return this; + } + + @Override("getOneBase") + public overrideDecorator(@ParsedRequest() req: CrudRequest) { + return { message: "route overriden!" }; + } + + @Override() + async createOne( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto: TestingModel + ) { + this.service.repo.create(dto); + return { message: "overriden-body" }; + } + + @Override("createManyBase") + async createManyOverriden( + @ParsedRequest() req: CrudRequest, + @ParsedBody() dto: CreateManyDto + ): Promise { + const response = ( + await Promise.resolve(this.base.createManyBase!(req, dto)) + ); + + response.forEach((res) => { + res["customProp"] = "extra prop added!"; + }); + + return response; + } + + @Override("getManyBase") + async overrideAll( + @ParsedRequest() req: CrudRequest + ): Promise | WithExtraProp[]> { + const response = ( + await Promise.resolve(this.base.getManyBase!(req)) + ); + + response.forEach((res) => { + res.customProp = "extra prop added!"; + }); + + return response; + } +} + +@Crud({ + model: { + type: TestingModel, + }, + routes: { + exclude: ["getManyBase"], + }, +}) +@Controller(BASE_EXCLUDE_CONTROLLER) +class CrudExcludeRouteControllerTest implements CrudController { + constructor(public service: TestingService) {} + + get base(): CrudController { + return this; + } +} + +describe("Crud Decorators Test", () => { + let app: INestApplication; + let server: any; + let model: TestingModel; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [TestModule], + controllers: [ + CrudBaseControllerTest, + CrudAuthControllerTest, + CrudGuardControllerTest, + CrudOverrideControllerTest, + ], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + server = app.getHttpServer(); + + model = await TestingModel.create({ + id: 1, + firstName: "FName1", + lastName: "LName1", + age: 20, + }).save(); + }); + + afterAll(async () => { + await TestingModel.delete({}); + await server.close(); + await app.close(); + }); + + describe("#Crud Base", () => { + it("#getMany - Should return 200", () => { + return request(server).get(BASE_CRUD_URL).expect(200); + }); + + it("#getOne - Should return 200", async () => { + const testModel = await TestingModel.create({ + firstName: "FName xx", + lastName: "LName xx", + age: 20, + }).save(); + + return request(server) + .get(`${BASE_CRUD_URL}${testModel.id}`) + .expect(200) + .expect((res) => { + expect(res.body.id === testModel.id); + }); + }); + + it("#getOne - Should return 404", () => { + return request(server).get(`${BASE_CRUD_URL}1999`).expect(404); + }); + + it("#createOne - Should return 201", () => { + return request(server) + .post(BASE_CRUD_URL) + .send({ + id: 99, + firstName: "FName99", + lastName: "LName99", + age: 99, + }) + .expect(201) + .expect((res) => { + expect(res.body.id).toEqual(99); + }); + }); + + it("#createMany - Should return 201", () => { + const bulk = [ + { + id: 100, + firstName: "FName100", + lastName: "LName100", + age: 100, + }, + { + id: 101, + firstName: "FName101", + lastName: "LName101", + age: 101, + }, + ]; + + return request(server) + .post(`${BASE_CRUD_URL}bulk`) + .send({ + bulk: bulk, + }) + .expect(201) + .expect((res) => { + expect(res.body[0].id).toEqual(bulk[0].id); + expect(res.body[1].id).toEqual(bulk[1].id); + }); + }); + + it("#putOne - Should return 200", async () => { + return request(server) + .put(`${BASE_CRUD_URL}${model.id}`) + .send({ + firstName: "FName1-updated", + lastName: "ln", + age: 21, + }) + .expect(200) + .expect((res) => { + expect(res.body.firstName).toEqual("FName1-updated"); + expect(res.body.age).toEqual(21); + }); + }); + + it("#patchOne - Should return 200", () => { + return request(server) + .patch(`${BASE_CRUD_URL}${model.id}`) + .send({ + id: model.id, + firstName: "FName1-updated2", + lastName: "ln", + age: 22, + }) + .expect(200) + .expect((res) => { + expect(res.body.firstName).toEqual("FName1-updated2"); + expect(res.body.lastName).toEqual("ln"); + expect(res.body.age).toEqual(22); + }); + }); + + it("#deleteOne - Should return 200 and empty body", async () => { + const deleteable = await TestingModel.create({ + firstName: "deletable", + lastName: "delete it", + age: 9, + }).save(); + + return request(server) + .delete(`${BASE_CRUD_URL}${deleteable.id}`) + .expect(200) + .expect((res) => { + expect(Object.keys(res.body)).toHaveLength(0); + }); + }); + }); + + describe("#Crud Auth", () => { + it("Should return the model assigned to auth decorator", () => { + model.reload(); + + return request(server) + .get(AUTH_CRUD_URL) + .expect(200) + .expect((res) => { + expect(res.body.firstName).toEqual(model.firstName); + expect(res.body.lastName).toEqual(model.lastName); + expect(res.body.age).toEqual(model.age); + }); + }); + + it("Should throw Unauthorized", () => { + return request(server).get(GUARD_CONTROLLER).expect(401); + }); + }); + + describe("#Crud Routes Override", () => { + it("Should override getOneBase", () => { + return request(server) + .get(`${OVERRIDE_CRUD_URL}${model.id}`) + .expect(200) + .expect((res) => { + expect(res.body.message).toEqual("route overriden!"); + }); + }); + + it("Should override createOneBase", () => { + return request(server) + .post(OVERRIDE_CRUD_URL) + .send({ + firstName: "override1", + lastName: "ln", + age: "25", + }) + .expect(201) + .expect((res) => { + expect(res.body.message).toEqual("overriden-body"); + }); + }); + + it("Should override getManyBase", () => { + return request(server) + .get(OVERRIDE_CRUD_URL) + .expect(200) + .expect((res) => { + res.body.forEach((body: any) => { + expect(body.customProp).toBeDefined(); + expect(body.customProp).toEqual("extra prop added!"); + }); + }); + }); + + it("Should override createManyBase", () => { + return request(server) + .post(`${OVERRIDE_CRUD_URL}bulk`) + .send({ + bulk: [ + { + firstName: "first", + lastName: "last", + age: 19, + }, + { + firstName: "first 2", + lastName: "last 2", + age: 21, + }, + ], + }) + .expect(201) + .expect((res) => { + res.body.forEach((body: any) => { + expect(body.customProp).toBeDefined(); + expect(body.customProp).toEqual("extra prop added!"); + }); + }); + }); + }); + + it("#Crud Should return 404 for get many", () => { + return request(server).get(BASE_EXCLUDE_CONTROLLER).expect(404); + }); + + it("Should throw bad request exception", () => { + return request(server).get(`${BASE_CRUD_URL}invalid-id`).expect(400); + }); +}); diff --git a/packages/crudx/tests/decorators/crud.options.spec.ts b/packages/crudx/tests/decorators/crud.options.spec.ts new file mode 100644 index 000000000..a39f82e1a --- /dev/null +++ b/packages/crudx/tests/decorators/crud.options.spec.ts @@ -0,0 +1,366 @@ +import { Controller, INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import * as request from "supertest"; +import { v4 as uuidv4 } from "uuid"; + +import { Crud, CrudController, JoinOptions } from "../../src"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { RelationTestService } from "../__fixture__/service/relation.test.service"; +import { TestingService } from "../__fixture__/service/testing-service.service"; +import { RelationTest } from "../__fixture__/model/relation-test.model"; +import { Exclude, Expose } from "class-transformer"; +import { last } from "lodash"; + +const BASE_CRUD_OPTIONS = "/crud-options-test/"; +const BASE_CRUD_PARSED = "/crud-options-parsed/"; +const BASE_CRUD_SERIALIZE = "/crud-options-serialize/"; + +@Crud({ + model: { + type: TestingModel, + }, + params: { + id: { + primary: true, + field: "id", + type: "number", + }, + }, + query: { + join: { + type: { + allow: ["relationTest"], + }, + relationTest: { + eager: true, + }, + }, + softDelete: true, + }, + routes: { + createOneBase: { + returnShallow: true, + }, + updateOneBase: { + returnShallow: true, + }, + replaceOneBase: { + returnShallow: true, + }, + deleteOneBase: { + returnDeleted: true, + }, + }, +}) +@Controller(BASE_CRUD_OPTIONS) +export class CrudOptionsController implements CrudController { + constructor(public service: TestingService) {} +} + +@Crud({ + model: { + type: TestingModel, + }, + query: { + alwaysPaginate: true, + cache: 200, + limit: 2, + maxLimit: 2, + sort: [ + { + field: "id", + order: "ASC", + }, + ], + }, + params: undefined, +}) +@Controller(BASE_CRUD_PARSED) +export class CrudOptionsWithQueryParserTest + implements CrudController +{ + constructor(public service: TestingService) {} +} + +class BaseModelDto { + @Expose() + readonly id: number | null = null; + @Expose() + readonly firstName: string | null = null; + @Exclude() + readonly lastName: string | null = null; + @Exclude() + readonly age: number | null = null; + @Exclude() + readonly relationTestId: number | null = null; + @Exclude() + readonly relationTest: RelationTest | null = null; + @Exclude() + readonly deletedAt: Date | null = null; +} + +@Crud({ + model: { + type: TestingModel, + }, + serialize: { + get: BaseModelDto, + create: BaseModelDto, + }, +}) +@Controller(BASE_CRUD_SERIALIZE) +export class CrudOptionsWithSerializeTest + implements CrudController +{ + constructor(public service: TestingService) {} +} + +describe("Crud Decorators Test", () => { + let app: INestApplication; + let server: any; + let service: TestingService; + let relationTestService: RelationTestService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [TestModule], + controllers: [ + CrudOptionsController, + CrudOptionsWithQueryParserTest, + CrudOptionsWithSerializeTest, + ], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + server = app.getHttpServer(); + service = module.get(TestingService); + relationTestService = module.get(RelationTestService); + }); + + afterAll(async () => { + await relationTestService.repo.delete({}); + await service.repo.delete({}); + await server.close(); + await app.close(); + }); + + it("Should create and return shallow result", async () => { + const firstName = `${uuidv4()} fname`; + + return request(server) + .post(BASE_CRUD_OPTIONS) + .send({ + firstName: firstName, + lastName: "testing-options", + age: 20, + }) + .expect(201) + .expect((res) => { + expect(res.body.firstName).toEqual(firstName); + }); + }); + + it("Should update and return shallow result", async () => { + const model = await service.repo + .create({ + firstName: "updatable", + lastName: "lname", + age: 20, + }) + .save(); + + return request(server) + .put(`${BASE_CRUD_OPTIONS}${model.id}`) + .send({ + firstName: "updated fname", + }) + .expect(200) + .expect((res) => { + model.reload(); + + expect(res.body.firstName).toEqual("updated fname"); + expect(res.body.lastName).toEqual(""); + expect(model.lastName).toEqual("lname"); + }); + }); + + it("Should replace and return shallow result", async () => { + const model = await service.repo + .create({ + firstName: "updatable 2", + lastName: "lname 2", + age: 20, + }) + .save(); + + return request(server) + .patch(`${BASE_CRUD_OPTIONS}${model.id}`) + .send({ + firstName: "updated fname 2", + }) + .expect(200) + .expect((res) => { + expect(res.body.firstName).toEqual("updated fname 2"); + expect(res.body.lastName).toEqual(""); + }); + }); + + it("Should create relation and return allowed join", async () => { + const relationTest = await relationTestService.repo + .create({ + name: "relation test", + }) + .save(); + + const model = await service.repo + .create({ + firstName: "with relation", + lastName: "repo", + age: 22, + relationTestId: relationTest.id, + }) + .save(); + + return request(server) + .get(`${BASE_CRUD_OPTIONS}${model.id}`) + .expect(200) + .expect((res) => { + expect(res.body.firstName).toEqual("with relation"); + expect(res.body.relationTest.id).toEqual(relationTest.id); + expect(res.body.relationTest.name).toEqual(relationTest.name); + }); + }); + + it("Should #recorver an entity", async () => { + const model = await service.repo + .create({ + firstName: "with relation", + lastName: "repo", + age: 22, + }) + .save(); + + const id = model.id; + await model.softRemove(); + + return request(server) + .patch(`${BASE_CRUD_OPTIONS}${id}/recover`) + .expect(200) + .expect((res) => { + expect(res.body.id).toEqual(model.id); + expect(res.body.firstName).toEqual(model.firstName); + expect(res.body.lastName).toEqual(model.lastName); + expect(res.body.age).toEqual(model.age); + expect(res.body.deletedAt).toBeNull(); + }); + }); + + it("Should load results from page two 2", async () => { + await service.repo + .create({ + firstName: "rep 1", + lastName: "ln 1", + age: 46, + }) + .save(); + + await service.repo + .create({ + firstName: "rep 2", + lastName: "ln 2", + age: 46, + }) + .save(); + + await service.repo + .create({ + firstName: "rep 3", + lastName: "ln 3", + age: 46, + }) + .save(); + + await service.repo + .create({ + firstName: "rep 4", + lastName: "ln 4", + age: 46, + }) + .save(); + + return request(server) + .get(`${BASE_CRUD_PARSED}?page=2&offset=1&limit=2`) + .expect(200) + .expect((res) => { + expect(res.body.page).toEqual(2); + expect(res.body.data).toBeDefined(); + }); + }); + + it("Should return serialzied model at GET response", async () => { + const model = await service.repo + .create({ + firstName: "testinx w", + lastName: "serialize", + age: 59, + }) + .save(); + + return request(server) + .get(`${BASE_CRUD_SERIALIZE}${model.id}`) + .expect(200) + .expect((res) => { + expect(res.body.id).toBeDefined(); + expect(res.body.firstName).toBeDefined(); + expect(res.body.lastName).toBeUndefined(); + expect(res.body.age).toBeUndefined(); + expect(res.body.relationTestId).toBeUndefined(); + expect(res.body.relationTest).toBeUndefined(); + expect(res.body.deletedAt).toBeUndefined(); + }); + }); + + it("Should return serialzied model at POST response", async () => { + return request(server) + .post(`${BASE_CRUD_SERIALIZE}`) + .send({ + firstName: "post test", + lastName: "ln", + age: 72, + }) + .expect(201) + .expect((res) => { + expect(res.body.id).toBeDefined(); + expect(res.body.firstName).toBeDefined(); + expect(res.body.lastName).toBeUndefined(); + expect(res.body.age).toBeUndefined(); + expect(res.body.relationTestId).toBeUndefined(); + expect(res.body.relationTest).toBeUndefined(); + expect(res.body.deletedAt).toBeUndefined(); + }); + }); + + it("Should return deleted", async () => { + const model = await service.repo + .create({ + firstName: "deleted", + lastName: "ln deleted", + age: 91, + }) + .save(); + + return request(server) + .delete(`${BASE_CRUD_OPTIONS}${model.id}`) + .expect(200) + .expect((res) => { + expect(res.body.firstName).toEqual("deleted"); + expect(res.body.lastName).toEqual("ln deleted"); + expect(res.body.age).toEqual(91); + }); + }); +}); diff --git a/packages/crudx/tests/helpers/checkers.spec.ts b/packages/crudx/tests/helpers/checkers.spec.ts new file mode 100644 index 000000000..220f4b9e2 --- /dev/null +++ b/packages/crudx/tests/helpers/checkers.spec.ts @@ -0,0 +1,83 @@ +import { + BulkDto, + MergedCrudOptions, + createBulkDto, + hasValue, + isArrayOfStrings, + isArrayOfStringsFull, + isFalse, + isTrue, + isValue, +} from "../../src"; +import { safeRequire } from "../../src/helpers/safe-require.helper"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; + +describe("#Helpers", () => { + it("Should be an array of strings", () => { + expect(isArrayOfStrings(["str", "str", ""])).toBeTruthy(); + expect(isArrayOfStrings(["str", "str", 1])).toBeFalsy(); + }); + + it("Should assert whether is array and not empty", () => { + expect(isArrayOfStringsFull(["str", "str", " "])).toBeTruthy(); + expect(isArrayOfStringsFull(["str", "str", 1])).toBeFalsy(); + expect(isArrayOfStringsFull(["str", "str", ""])).toBeFalsy(); + }); + + it("Should not be empty", () => { + expect(isValue("str")).toBeTruthy(); + expect(isValue(1)).toBeTruthy(); + expect(isValue(true)).toBeTruthy(); + expect(isValue(false)).toBeTruthy(); + expect(isValue(new Date())).toBeTruthy(); + expect(isValue(undefined)).toBeFalsy(); + expect(isValue(null)).toBeFalsy(); + }); + + it("Should be an array with value", () => { + expect(hasValue(["str", 1, true])).toBeTruthy(); + expect(hasValue([undefined])).toBeFalsy(); + }); + + it("Should be true", () => { + expect(isTrue(true)).toBeTruthy(); + expect(isTrue(1 == 1)).toBeTruthy(); + expect(isTrue(1)).toBeFalsy(); + }); + + it("Should be false", () => { + expect(isFalse(false)).toBeTruthy(); + expect(isFalse(1 > 2)).toBeTruthy(); + expect(isFalse(0)).toBeFalsy(); + }); + + it("Should throw exception on safe require", () => { + const req = safeRequire("", () => { + throw new Error("sample error throw"); + }); + + expect(req).toBeNull(); + }); + + it("Should return a BulkDto", () => { + const options = { + model: { + type: TestingModel, + }, + serialize: { + createMany: TestingModel, + }, + params: { + id: { + field: "id", + primary: true, + type: "number", + }, + }, + validation: false, + }; + const dto = createBulkDto(options); + + expect(new dto()).toBeInstanceOf(BulkDto); + }); +}); diff --git a/packages/crudx/tests/helpers/request-validation.spec.ts b/packages/crudx/tests/helpers/request-validation.spec.ts new file mode 100644 index 000000000..fe4420e41 --- /dev/null +++ b/packages/crudx/tests/helpers/request-validation.spec.ts @@ -0,0 +1,284 @@ +import { + ComparisonOperator, + ObjectLiteral, + ParamsOptions, + QueryFields, + QueryFilter, + QueryJoin, + RequestQueryException, + validateComparisonOperator, + validateCondition, + validateFields, + validateJoin, + validateParamOption, + validateSort, + validateUUID, +} from "../../src"; + +describe("#ReuqestValidation Test", () => { + it("Should throw `invalid fields` for #QueryFields", () => { + const testNull = () => { + validateFields([null, "", "ws", "22"]); + }; + + const testBool = () => { + validateFields([true, "", "ws", "22"]); + }; + + const testUndefined = () => { + validateFields([undefined, "", "ws", "22"]); + }; + + const testNumber = () => { + validateFields([12, "", "ws", "22"]); + }; + + expect(testNull).toThrow(RequestQueryException); + try { + testNull(); + } catch (e: any) { + expect(e.message).toContain("Invalid fields. Array of strings expected"); + } + + expect(testBool).toThrow(RequestQueryException); + try { + testBool(); + } catch (e: any) { + expect(e.message).toContain("Invalid fields. Array of strings expected"); + } + + expect(testUndefined).toThrow(RequestQueryException); + try { + testUndefined(); + } catch (e: any) { + expect(e.message).toContain("Invalid fields. Array of strings expected"); + } + + expect(testNumber).toThrow(RequestQueryException); + try { + testNumber(); + } catch (e: any) { + expect(e.message).toContain("Invalid fields. Array of strings expected"); + } + }); + + it("Should throw `Invalid field type in` for #QueryFilter conditions", () => { + const test = () => { + validateCondition({}, "", {}); + }; + const testFilter = () => { + validateCondition(null, "search", {}); + }; + + expect(test).toThrow(RequestQueryException); + try { + test(); + } catch (e: any) { + expect(e.message).toContain("Invalid field type in"); + } + + expect(testFilter).toThrow(RequestQueryException); + try { + testFilter(); + } catch (e: any) { + expect(e.message).toContain("Invalid field type in"); + } + }); + + it("Should throw `Invalid comparison operator` for #ComparisonOperator", () => { + const test = ( + comparison: string, + customOperatorsList: ObjectLiteral = {} + ) => { + validateComparisonOperator( + comparison, + customOperatorsList + ); + }; + + try { + test("$customAdded", {}); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toContain("Invalid comparison operator"); + } + + // same as previows but with default customOperators usage + try { + validateComparisonOperator("$customOperator"); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toContain("Invalid comparison operator"); + } + + // should not throw anything as it as valid custom operator + try { + test("$customAdded", { $customAdded: "" }); + expect(1).toEqual(1); + } catch (e: any) { + expect(1).toEqual(2); + } + }); + + it("Should throw `Invalid join field|select. Array of strings expected` for #QueryJoin", () => { + const test = (join: any) => { + validateJoin(join); + }; + + try { + test(null); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid join field. String expected"); + } + + try { + test({ field: null }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid join field. String expected"); + } + + try { + test({ field: 12 }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid join field. String expected"); + } + + try { + test({ field: true }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid join field. String expected"); + } + + try { + test({ field: "someField", select: undefined }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual( + "Invalid join select. Array of strings expected" + ); + } + + try { + test({ field: "someField", select: [12, "string", true] }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual( + "Invalid join select. Array of strings expected" + ); + } + + try { + test({ field: "someField", select: 26 }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual( + "Invalid join select. Array of strings expected" + ); + } + }); + + it("Should throw `Invalid sort field. String expected` and `Invalid sort order` for #QuerySort", () => { + const test = (sort: any) => { + validateSort(sort); + }; + + try { + test(null); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid sort field. String expected"); + } + + try { + test({ field: undefined }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid sort field. String expected"); + } + + try { + test({ field: "someField", order: "INVALID_ORDER" }); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toContain("Invalid sort order."); + } + }); + + it("Shold throw `Invalid param` and `Invalid param option in Crud` for #ParamsOptions", () => { + const test = (options: ParamsOptions, name: string) => { + validateParamOption(options, name); + }; + + try { + test(null, ""); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toContain("Invalid param"); + expect(e.message).toContain("Invalid crud options"); + } + + try { + const options = { + someSlugField: null, + }; + + test(options, "someSlugField"); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid param option in Crud"); + } + + try { + const options = { + someSlugField: { + field: "any", + }, + }; + + test(options, "someSlugField"); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid param option in Crud"); + } + + try { + const options = { + someSlugField: { + type: "any", + }, + }; + + test(options, "someSlugField"); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toEqual("Invalid param option in Crud"); + } + + // disabled scenario, throw nothing, return nothing; + try { + const options = { + someSlugField: { + disabled: true, + }, + }; + + const returnValue = test(options, "someSlugField"); + expect(returnValue).toBeUndefined(); + } catch (e: any) { + expect(1).toEqual(2); + } + }); + + it("Should throw `UUID string expected`", () => { + try { + validateUUID("inv-uuid-xx9871-1882", "any"); + } catch (e: any) { + expect(e.constructor.name).toEqual("RequestQueryException"); + expect(e.message).toContain("UUID string expected"); + } + }); +}); diff --git a/packages/crudx/tests/interceptors/crud.request.interceptor.spec.ts b/packages/crudx/tests/interceptors/crud.request.interceptor.spec.ts new file mode 100644 index 000000000..fa4c4055f --- /dev/null +++ b/packages/crudx/tests/interceptors/crud.request.interceptor.spec.ts @@ -0,0 +1,212 @@ +import { + CanActivate, + Controller, + ExecutionContext, + INestApplication, + UseGuards, +} from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import * as request from "supertest"; + +import { + Crud, + CrudAuth, + CrudController, + CrudOptions, + ObjectLiteral, +} from "../../src"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { TestingService } from "../__fixture__/service/testing-service.service"; + +const BASE_CONTROLLER = "/controller-no-options/"; +const BASE_AUTH_CONTROLLER = "/intercept-auth/"; +const BASE_AUTH_CONTROLLER_OBJECT = "/intercept-auth-object/"; + +@Crud({ + model: { + type: TestingModel, + }, + query: { + filter: () => ({ + age: { + $eq: 57, + }, + }), + }, +}) +@Controller(BASE_CONTROLLER) +class CrudNoOptionsControllerTest implements CrudController { + constructor(public service: TestingService) {} +} + +// dummy interceptor to simulate auth +class BaseGuard implements CanActivate { + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const key = this.extractTokenFromHeader(request); + + request["model_id"] = key; + + return true; + } + + private extractTokenFromHeader(request: Request): string | undefined { + const [type, token] = + (request.headers)["authorization"]?.split(" ") ?? []; + + return type === "Bearer" ? token : undefined; + } +} + +@Crud({ + model: { + type: TestingModel, + }, +}) +@CrudAuth({ + property: "model_id", + filter: (model_id: any) => ({ + id: model_id, + }), + persist: (model_id) => ({ + model_id: model_id, + }), +}) +@Controller(BASE_AUTH_CONTROLLER) +@UseGuards(BaseGuard) +class CrudAuthInterceptorTest implements CrudController { + constructor(public service: TestingService) {} +} + +// dummy interceptor to simulate auth with object exposed +class BaseObjectGuard implements CanActivate { + async canActivate(context: ExecutionContext): Promise { + const request = context.switchToHttp().getRequest(); + const key = (this.extractTokenFromHeader(request) ?? -1); + + const model = await TestingModel.findOneBy({ id: key }); + request["model"] = model; + + return true; + } + + private extractTokenFromHeader(request: Request): string | undefined { + const [type, token] = + (request.headers)["authorization"]?.split(" ") ?? []; + + return type === "Bearer" ? token : undefined; + } +} +@Crud({ + model: { + type: TestingModel, + }, +}) +@CrudAuth({ + property: "model", + or: (model: any) => ({ + id: model.id, + }), +}) +@Controller(BASE_AUTH_CONTROLLER_OBJECT) +@UseGuards(BaseObjectGuard) +class CrudAuthInterceptorObjectAuthTest + implements CrudController +{ + constructor(public service: TestingService) {} +} + +describe("Crud Decorators #with empty options Test", () => { + let app: INestApplication; + let server: any; + let model: TestingModel; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [TestModule], + controllers: [ + CrudNoOptionsControllerTest, + CrudAuthInterceptorTest, + CrudAuthInterceptorObjectAuthTest, + ], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + server = app.getHttpServer(); + await TestingModel.delete({}); + + await TestingModel.create({ + firstName: "fn 1", + age: 50, + }).save(); + + await TestingModel.create({ + firstName: "fn 2", + age: 57, + }).save(); + + await TestingModel.create({ + firstName: "fn 3", + age: 57, + }).save(); + }); + + afterAll(async () => { + await TestingModel.delete({}); + await server.close(); + await app.close(); + }); + + it("Should return only with age 57 #filerQuery on #crudOptions", async () => { + return request(server) + .get(BASE_CONTROLLER) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + const validFn = ["fn 2", "fn 3"]; + res.body.forEach((body: any) => { + expect(validFn.includes(body.firstName)).toBeTruthy(); + expect(body.age).toEqual(57); + }); + }); + }); + + it("Should auth with dummy base guard", async () => { + const model = await TestingModel.findOneBy({ age: 57 }); + + return request(server) + .get(BASE_AUTH_CONTROLLER) + .set("Authorization", `Bearer ${model!.id}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(1); + res.body.forEach((body: any) => { + expect(body.firstName).toEqual(model?.firstName); + expect(body.lastName).toEqual(model?.lastName); + expect(body.age).toEqual(model?.age); + }); + }); + }); + + it("Should auth with dummy base object guard", async () => { + const model = await TestingModel.findOneBy({ age: 57 }); + + return request(server) + .get(BASE_AUTH_CONTROLLER_OBJECT) + .set("Authorization", `Bearer ${model!.id}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(1); + res.body.forEach((body: any) => { + expect(body.firstName).toEqual(model?.firstName); + expect(body.lastName).toEqual(model?.lastName); + expect(body.age).toEqual(model?.age); + }); + }); + }); +}); diff --git a/packages/crudx/tests/services/query-builder-searches.spec.ts b/packages/crudx/tests/services/query-builder-searches.spec.ts new file mode 100644 index 000000000..e71ade5b4 --- /dev/null +++ b/packages/crudx/tests/services/query-builder-searches.spec.ts @@ -0,0 +1,877 @@ +import { Controller, INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { Expose } from "class-transformer"; +import { useContainer } from "class-validator"; +import * as request from "supertest"; + +import { + CreateQueryParams, + Crud, + CrudController, + QueryBuilderService, + QueryFilter, + QueryJoin, +} from "../../src"; +import { IdentityType } from "../__fixture__/model/identity-type.model"; +import { Nested } from "../__fixture__/model/nested.model"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { RelationTestService } from "../__fixture__/service/relation.test.service"; +import { TestingService } from "../__fixture__/service/testing-service.service"; + +const CONTROLLER_NAME = "/query-builder-search/"; +const CONTROLLER_NOT_JOIN = "/not-join-search/"; + +class WithDatesDto { + @Expose() + readonly id: number | null = null; + @Expose() + readonly firstName: string | null = null; + @Expose() + readonly lastName: string | null = null; + @Expose() + readonly age: number | null = null; + @Expose() + readonly datesCreatedAt: Date | null = null; + @Expose() + readonly datesUpdatedAt: Date | null = null; + @Expose() + readonly relationTestId?: number | null = null; +} + +@Crud({ + model: { + type: TestingModel, + }, + serialize: { + get: WithDatesDto, + }, + query: { + persist: ["id"], + exclude: ["createdAt", "updatedAt"], + join: { + relationTest: { + allow: ["id", "name", "nestedId"], + select: true, + required: true, + alias: "relationTest", + persist: ["id"], + }, + "relationTest.nested": { + allow: ["identity"], + select: true, + required: false, + }, + "relationTest.nested.type": { + allow: ["type"], + select: true, + required: true, + }, + // invalid on purpose + "relationTest.id": { + allow: ["identity"], + select: true, + required: false, + }, + }, + }, +}) +@Controller(CONTROLLER_NAME) +class QueryBuilderSearchTestController implements CrudController { + constructor(public service: TestingService) {} +} + +@Crud({ + model: { + type: TestingModel, + }, + query: { + allow: ["name", "nestedId", "nested.identity"], + join: { + relationTest: { + select: false, + }, + }, + }, +}) +@Controller(CONTROLLER_NOT_JOIN) +class QueryBuilderWithoutAllowedJoinController + implements CrudController +{ + constructor(public service: TestingService) {} +} + +describe("TypeORMCrudService Query Builders Search Test", () => { + let app: INestApplication; + let server: any; + let service: TestingService; + let relationTestService: RelationTestService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [TestModule], + controllers: [ + QueryBuilderSearchTestController, + QueryBuilderWithoutAllowedJoinController, + ], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + + server = await app.getHttpServer(); + service = module.get(TestingService); + relationTestService = module.get(RelationTestService); + + await app.init(); + }); + + afterAll(async () => { + await Nested.delete({}); + await relationTestService.repo.delete({}); + await service.repo.delete({}); + + await server.close(); + await app.close(); + }); + + it("Cleanup database and create entities", async () => { + await Nested.delete({}); + await relationTestService.repo.delete({}); + await service.repo.delete({}); + + const samples1 = [0, 1, 2, 3, 4]; + const samples2 = [99, 100]; + + for (const i in samples1) { + await service.repo + .create({ + firstName: "fname " + samples1[i], + lastName: "ln " + samples1[i], + age: 22 + samples1[i], + }) + .save(); + } + + for (const i in samples2) { + await service.repo + .create({ + firstName: "fname " + samples2[i], + lastName: "ln " + samples2[i], + age: 57, + }) + .save(); + } + + const type = await IdentityType.create({ + type: "testing type", + }); + const nested = await Nested.create({ + identity: "identifier 01", + typeId: type.id, + }).save(); + + const sample1 = await relationTestService.repo + .create({ + name: "sample 1", + nestedId: nested.id, + }) + .save(); + + const sample2 = await relationTestService.repo + .create({ + name: "sample 2", + nestedId: nested.id, + }) + .save(); + + await service.repo + .create({ + firstName: "fname 44", + lastName: "ln 44", + age: 44, + relationTestId: sample1.id, + }) + .save(); + + await service.repo + .create({ + firstName: "fname 45", + lastName: "ln 45", + age: 45, + relationTestId: sample2.id, + }) + .save(); + + expect(1).toEqual(1); + }); + + it("Should #filter by {age} and #fetch {firstName} and {lastName}", async () => { + const params = { + fields: ["firstName", "lastName"], + filter: [ + { + field: "age", + operator: "$eq", + value: 57, + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + + const validFNames = ["fname 99", "fname 100"]; + const validLNames = ["ln 99", "ln 100"]; + + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + expect(validLNames.includes(body.lastName)).toBeTruthy(); + expect(body.age).toEqual(0); + expect(body.relationTestId).toBeNull(); + expect(body.relationTest).toBeNull(); + expect(body.datesCreatedAt).toBeDefined(); + expect(body.datesCreatedAt).toBeNull(); + }); + }); + }); + + it("Should #search with #orWhere condition", async () => { + const params = { + search: { + $or: [ + { firstName: "fname 1" }, + { firstName: "fname 2" }, + { firstName: "fname 3" }, + ], + age: { $gte: 1 }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + const validFNames = ["fname 1", "fname 2", "fname 3"]; + expect(res.body).toHaveLength(3); + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + }); + }); + }); + + it("Should #search with #$and and #euqal condition", async () => { + const params = { + search: { + $and: [{ firstName: "fname 100" }], + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(1); + res.body.forEach((body: any) => { + expect(body.firstName).toEqual("fname 100"); + }); + }); + }); + + it("Should #search with #or condition only (only one condition)", async () => { + const params = { + search: { + $or: [{ firstName: "fname 1" }], + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + const validFNames = ["fname 1"]; + expect(res.body).toHaveLength(1); + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + }); + }); + }); + + it("Should #search with multiple #or condition", async () => { + const params = { + search: { + $or: [ + { firstName: "fname 1" }, + { firstName: "fname 2" }, + { firstName: "fname 3" }, + ], + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + const validFNames = ["fname 1", "fname 2", "fname 3"]; + expect(res.body).toHaveLength(3); + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + }); + }); + }); + + it("Should #search with #orWhere condition + #plain or condition", async () => { + const params = { + search: { + $or: [{ firstName: "fname 0" }], + lastName: "ln 0", + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + const validFNames = ["fname 0"]; + const validLNames = ["ln 0"]; + + expect(res.body).toHaveLength(1); + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + expect(validLNames.includes(body.lastName)).toBeTruthy(); + }); + }); + }); + + it("Should #search with implicit #$and condigiton", async () => { + const params = { + search: { + age: 57, + firstName: "fname 100", + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + const validFNames = ["fname 100"]; + expect(res.body).toHaveLength(1); + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + }); + }); + }); + + it("Should #search with implicit #$and (with object) condigiton", async () => { + const params = { + search: { + age: 57, + firstName: { $eq: "fname 100" }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + const validFNames = ["fname 100"]; + + expect(res.body).toHaveLength(1); + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + }); + }); + }); + + it("Shoud return #relation from #join", async () => { + const params = { + fields: ["firstName", "relationTest.name"], + search: { + relationTestId: { $notnull: true }, + }, + join: [ + { + field: "relationTest", + select: ["name"], + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + const validFNames = ["fname 44", "fname 45"]; + const validRNames = ["sample 1", "sample 2"]; + + res.body.forEach((body: any) => { + expect(validFNames.includes(body.firstName)).toBeTruthy(); + expect(validRNames.includes(body.relationTest.name)).toBeTruthy(); + }); + }); + }); + + it("Should not return #relation as #join is not allowed", () => { + const params = { + search: { + relationTestId: { $notnull: true }, + }, + join: [ + { + field: "relationTest", + select: ["name"], + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(false); + + return request(server) + .get(`${CONTROLLER_NOT_JOIN}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + res.body.forEach((body: any) => { + expect(body.relationTest).toBeNull(); + }); + }); + }); + + it("Should load #nested #relation with #sort", () => { + const params = { + fields: ["firstName", "relationTest.name"], + search: { + relationTestId: { $notnull: true }, + }, + join: [ + { + field: "relationTest", + select: ["name", "nestedId"], + }, + { + field: "relationTest.nested", + select: ["identity"], + }, + { + field: "nested.type", + select: ["type"], + }, + ], + sort: [ + { + field: "id", + order: "DESC", + }, + { + field: "nested.identity", + order: "DESC", + }, + { + field: "relationTest.nested.id", + order: "ASC", + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + res.body.forEach((body: any) => { + expect(body.relationTest).toBeDefined(); + expect(body.relationTest.nested).toBeDefined(); + expect(body.relationTest.nested.identity).toEqual("identifier 01"); + }); + }); + }); + + it("Should apply #$gte, #$lte and $isnull filters", () => { + const params = { + search: { + age: { $gte: 20, $lte: 30 }, + relationTestId: { $isnull: true }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(5); + }); + }); + + it("Should apply #$gt and #$lt filters", () => { + const params = { + search: { + age: { $gt: 20, $lt: 30 }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(5); + }); + }); + + it("Should apply #starts, #ends and #in filters - with #custom operator", async () => { + const params = { + search: { + age: { in: [22, 23, 55, 56, 57] }, + firstName: { $starts: "fname", $ends: "100" }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(1); + }); + }); + + it("Should apply #contains and excludes filter", async () => { + const params = { + search: { + firstName: { $cont: "name", $excl: "100" }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(8); + }); + }); + + it("Should apply #not-in and between filter", async () => { + const params = { + search: { + age: { $between: [20, 30], $notin: [23, 24, 25] }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + }); + }); + + it("Should apply #eqL, #ne, #neL filters", () => { + const params = { + search: { + age: { $ne: 20, $neL: 30 }, + firstName: { $eqL: "fname 100" }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(1); + }); + }); + + it("Should apply #startsL, #endsL, $contL and $exclL filters", async () => { + const params = { + search: { + firstName: { + $startsL: "fname", + $endsL: "100", + $contL: "name", + $exclL: "99", + }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(1); + }); + }); + + it("Should apply #notinL and #inL filters", async () => { + const params = { + search: { + firstName: { + $inL: ["fname 1", "fname 2", "fname 0"], + $notinL: ["fname 0"], + }, + }, + extra: [ + { + maxLimitPage1: 10, + payloadTime: 22, + sampler: "none", + parser: [ + { + limit: 1, + }, + ], + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + }); + }); + + it("Should throw #Sql inject detected", async () => { + const params = { + sort: [ + { + field: "'id'", + order: "DESC", + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(400) + .expect((res) => { + expect(res.body.message).toContain("SQL injection detected"); + }); + }); + + it("Should apply #$ne filer", async () => { + const params = { + search: { + age: { $ne: 57 }, + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + res.body.forEach((body: any) => { + expect(body.age == 57).toBeFalsy(); + }); + }); + }); + + it("Shouold apply many $ne filter", async () => { + const params = { + search: { + $ne: [{ age: 57 }], + $not: [{ age: 57 }], + }, + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + res.body.forEach((body: any) => { + expect(body.age == 57).toBeFalsy(); + }); + }); + }); + + it("Should apply one #filter and #or", async () => { + const params = { + filter: [ + { + field: "age", + operator: "$eq", + value: 57, + }, + ], + or: [ + { + field: "firstName", + operator: "$cont", + value: "100", + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + res.body.forEach((body: any) => { + expect(body.age == 57).toBeTruthy(); + }); + }); + }); + + it("Should apply many #filter and #or operators", async () => { + const params = { + filter: [ + { + field: "age", + operator: "$eq", + value: 57, + }, + ], + or: [ + { + field: "firstName", + operator: "$cont", + value: "100", + }, + { + field: "firstName", + operator: "$cont", + value: "99", + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + res.body.forEach((body: any) => { + expect(body.age == 57).toBeTruthy(); + }); + }); + }); + + it("Should apply one #or bare condition", async () => { + const params = { + or: [ + { + field: "age", + operator: "$eq", + value: "57", + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + res.body.forEach((body: any) => { + expect(body.age == 57).toBeTruthy(); + }); + }); + }); + + it("Should apply many #or bare condition", async () => { + const params = { + or: [ + { + field: "firstName", + operator: "$cont", + value: "100", + }, + { + field: "firstName", + operator: "$cont", + value: "99", + }, + ], + }; + + const qb = QueryBuilderService.create(params); + const qs = qb.query(); + + return request(server) + .get(`${CONTROLLER_NAME}?${qs}`) + .expect(200) + .expect((res) => { + expect(res.body).toHaveLength(2); + res.body.forEach((body: any) => { + expect(body.age == 57).toBeTruthy(); + }); + }); + }); +}); diff --git a/packages/crudx/tests/services/query-builder.service.spec.ts b/packages/crudx/tests/services/query-builder.service.spec.ts new file mode 100644 index 000000000..e1cd223af --- /dev/null +++ b/packages/crudx/tests/services/query-builder.service.spec.ts @@ -0,0 +1,108 @@ +import { + CreateQueryParams, + CustomOperatorQuery, + CustomOperators, + QueryBuilderService, + QueryFilter, + QueryJoin, + RequestQueryBuilderOptions, + SCondition, + SerializeHelper, +} from "../../src"; + +describe("#Query Builder", () => { + it("Should create a query builder", () => { + const qb = QueryBuilderService.create(); + expect(qb).toBeInstanceOf(QueryBuilderService); + }); + + it("Should craate qb with builder params and custom query delimiters", () => { + const params = { + fields: ["firstName", "lastName"], + filter: [ + { + field: "age", + operator: "$gte", + value: 21, + }, + { + field: "relationTestId", + operator: "$notnull", + }, + ], + resetCache: true, + }; + + const qbOptions = { + delim: "_", + }; + + QueryBuilderService.setOptions(qbOptions); + const qb = QueryBuilderService.create(params, {}); + const qs = qb.query(false); + + expect(QueryBuilderService.getOptions().delim).toEqual("_"); + expect(qs).toContain("fields=firstName,lastName"); + expect(qs).toContain("filter[0]=age_$gte_21"); + + QueryBuilderService.setOptions({ + delim: "||", + }); + }); + + it("Should create a qb with search param, with encoded result", () => { + const qb = QueryBuilderService.create().search({ + $gte: { age: 21 }, + }); + + const qs = qb.query(false); + const qsEncoded = qb.query(); + + expect(qs).toEqual('s={"$gte":{"age":21}}'); + expect(qsEncoded).toEqual("s=%7B%22%24gte%22%3A%7B%22age%22%3A21%7D%7D"); + }); + + it("Should apply order param", () => { + const qb = QueryBuilderService.create().sortBy({ + field: "age", + order: "DESC", + }); + + const qs = qb.query(false); + expect(qs).toEqual("sort[0]=age,DESC"); + + const qb2 = QueryBuilderService.create().sortBy([ + { field: "age", order: "DESC" }, + { field: "name", order: "ASC" }, + ]); + + const qs2 = qb2.query(false); + expect(qs2).toEqual("sort[0]=age,DESC&sort[1]=name,ASC"); + }); + + it("Should apply join param", () => { + const qb = QueryBuilderService.create().setJoin({ + field: "relationTest", + select: ["name"], + }); + + const qs = qb.query(false); + expect(qs).toEqual("join[0]=relationTest||name"); + + const qb2 = QueryBuilderService.create().setJoin([ + { + field: "relationTest", + select: ["name"], + }, + ]); + + const qs2 = qb2.query(false); + expect(qs2).toEqual("join[0]=relationTest||name"); + }); + + it("Should create a response DTO", () => { + const dto = SerializeHelper.createGetOneResponseDto("modelTest"); + + expect(dto.name).toEqual("modelTestResponseDto"); + }); +}); diff --git a/packages/crudx/tests/services/query.parser.spec.ts b/packages/crudx/tests/services/query.parser.spec.ts new file mode 100644 index 000000000..c55fd12bc --- /dev/null +++ b/packages/crudx/tests/services/query.parser.spec.ts @@ -0,0 +1,117 @@ +import { Controller, INestApplication } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { useContainer } from "class-validator"; +import * as request from "supertest"; + +import { + CreateQueryParams, + Crud, + CrudAuth, + CrudController, + QueryBuilderService, + QueryFilter, + QueryFilterOption, +} from "../../src"; +import { UuidModel } from "../__fixture__/model/uuid.model"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { UuidService } from "../__fixture__/service/uuid.service"; +import { QueryBuilder } from "typeorm"; + +const BASE_CRUD_OPTIONS = "/crud-options-test/"; +const BASE_QUERY_FILTER_SAVE = "/crud-options-test/:age/with-filter"; + +@Crud({ + model: { + type: UuidModel, + }, + params: { + id: { + primary: true, + field: "id", + type: "uuid", + }, + }, +}) +@Controller(BASE_CRUD_OPTIONS) +class CrudOptionsController implements CrudController { + constructor(public service: UuidService) {} +} + +@Crud({ + model: { + type: UuidModel, + }, + params: { + id: { + primary: true, + field: "id", + type: "uuid", + }, + age: { + primary: false, + field: "age", + type: "number", + }, + }, +}) +@Controller(BASE_QUERY_FILTER_SAVE) +class CrudQueryFilterController implements CrudController { + constructor(public service: UuidService) {} +} + +describe("#QueryParser test", () => { + let app: INestApplication; + let server: any; + let service: UuidService; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + imports: [TestModule], + controllers: [CrudOptionsController, CrudQueryFilterController], + }).compile(); + + app = module.createNestApplication(); + useContainer(app, { fallbackOnErrors: true }); + await app.init(); + + server = app.getHttpServer(); + service = module.get(UuidService); + }); + + afterAll(async () => { + await service.repo.delete({}); + await server.close(); + await app.close(); + }); + + it("Should return 200 Ok", async () => { + const uuidModel = await service.repo + .create({ + name: "sample", + age: 10, + }) + .save(); + + await uuidModel.reload(); + + return request(server) + .get(`${BASE_CRUD_OPTIONS}${uuidModel.id}`) + .expect(200); + }); + + it("Should assign value from filter to given field `age = 22`", () => { + const path = BASE_QUERY_FILTER_SAVE.replace(":age", "22"); + + return request(server) + .post(path) + .send({ + name: "sample 22", + age: 10, + }) + .expect(201) + .expect((res) => { + expect(res.body.id).toBeDefined(); + expect(res.body.age).toEqual(22); + }); + }); +}); diff --git a/packages/crudx/tests/services/type-orm-curd-service.spec.ts b/packages/crudx/tests/services/type-orm-curd-service.spec.ts new file mode 100644 index 000000000..33302d140 --- /dev/null +++ b/packages/crudx/tests/services/type-orm-curd-service.spec.ts @@ -0,0 +1,301 @@ +import { BadRequestException } from "@nestjs/common"; +import { Test, TestingModule } from "@nestjs/testing"; +import { v4 as uuidv4 } from "uuid"; + +import { + CrudOptions, + CrudRequest, + CrudRequestOptions, + JoinOption, + ParamOption, + ParamsOptions, + ParsedRequestParams, + QueryFilter, + QueryJoin, +} from "../../src"; +import { TestingModel } from "../__fixture__/model/testing-model.model"; +import { TestModule } from "../__fixture__/module/test-module.module"; +import { RelationTestService } from "../__fixture__/service/relation.test.service"; +import { TestingService } from "../__fixture__/service/testing-service.service"; + +describe("Services - #TypeORMCrudService", () => { + let service: TestingService; + let relationTestService: RelationTestService; + let module: TestingModule; + + beforeAll(async () => { + module = await Test.createTestingModule({ + imports: [TestModule], + }).compile(); + + service = module.get(TestingService); + relationTestService = module.get(RelationTestService); + }); + + afterAll(async () => { + await relationTestService.repo.delete({}); + await service.repo.delete({}); + await module.close(); + }); + + it("Should clear database", async () => { + await relationTestService.repo.delete({}); + await service.repo.delete({}); + }); + + it("Should create a new record", async () => { + const entity = service.repo.create({ + firstName: "testing", + lastName: "create", + age: 19, + }); + + await entity.save(); + + expect(entity.firstName).toEqual("testing"); + expect(entity.lastName).toEqual("create"); + expect(entity.age).toEqual(19); + expect(entity.id).toBeDefined(); + }); + + it("Should find one", async () => { + const entity = await service.repo + .create({ + firstName: "findable", + lastName: "entity", + age: 19, + }) + .save(); + + const foundEntity = await service.findOne({ where: { id: entity.id } }); + + expect(foundEntity?.id).toEqual(entity.id); + expect(foundEntity?.firstName).toEqual(entity.firstName); + expect(foundEntity?.lastName).toEqual(entity.lastName); + expect(foundEntity?.age).toEqual(entity.age); + }); + + it("Should find one by property", async () => { + const entity = await service.repo + .create({ + firstName: "findable 2", + lastName: "entity 2", + age: 22, + }) + .save(); + + const foundEntity = await service.findOneBy({ id: entity.id }); + + expect(foundEntity?.id).toEqual(entity.id); + expect(foundEntity?.firstName).toEqual(entity.firstName); + expect(foundEntity?.lastName).toEqual(entity.lastName); + expect(foundEntity?.age).toEqual(entity.age); + }); + + it("Should find by expression", async () => { + const entity = await service.repo + .create({ + firstName: `${uuidv4()} unique name`, + lastName: "entity 2", + age: 22, + }) + .save(); + + const foundEntity = ( + await service.find({ where: { firstName: entity.firstName } }) + ).at(0); + + expect(foundEntity?.id).toEqual(entity.id); + expect(foundEntity?.firstName).toEqual(entity.firstName); + expect(foundEntity?.lastName).toEqual(entity.lastName); + expect(foundEntity?.age).toEqual(entity.age); + }); + + it("Should create with return shallow and total entities count", async () => { + await service.repo.delete({}); + + await service.repo + .create({ + firstName: "en 1", + lastName: `entity sample 1`, + age: 20, + }) + .save(); + + await service.repo + .create({ + firstName: "en 2", + lastName: `entity sample 2`, + age: 21, + }) + .save(); + + await service.repo + .create({ + firstName: "en 3", + lastName: `entity sample 3`, + age: 22, + }) + .save(); + + const totalCount = await service.count(); + + expect(totalCount).toEqual(3); + }); + + it("Should return soft deleted", async () => { + const model = await service.repo + .create({ + firstName: "soft", + lastName: "deletion", + age: 20, + }) + .save(); + + const removedId = model.id; + + await model.softRemove(); + + const builder = await service.createBuilder( + { + includeDeleted: 1, + }, + { + query: { + softDelete: true, + }, + }, + true, + true + ); + + const results = await builder.getMany(); + const removed = results.filter((entity) => entity.id === removedId).at(0); + + expect(removed).toBeDefined(); + expect(removed?.id).toEqual(removedId); + }); + + it("Should return param filters", () => { + const parsedRequest = { + fields: [], + paramsFilter: [ + { + field: "name", + operator: "$eq", + value: "sample 1", + }, + ], + authPersist: undefined, + classTransformOptions: undefined, + search: undefined, + filter: [], + or: [], + join: [], + sort: [], + limit: undefined, + offset: undefined, + page: undefined, + cache: undefined, + includeDeleted: undefined, + extra: undefined, + }; + + const filters = service.getParamFilters(parsedRequest); + + expect( + Object.keys(filters).filter((key: string) => key === "name") + ).toBeDefined(); + expect(filters["name"]).toEqual("sample 1"); + }); + + it("Should create query builder with join", async () => { + const relation = await relationTestService.repo + .create({ + name: "some testing relation", + }) + .save(); + + const model = await service.repo + .create({ + firstName: "findable", + lastName: "model", + age: 32, + relationTestId: relation.id, + }) + .save(); + + const builder = await service.createBuilder( + { + join: [ + { + field: "relationTest", + select: ["relationTest.name", "relationTest.id"], + }, + ], + }, + { + query: { + join: { + allow: ["relationTest"], + eager: true, + relationTest: { + eager: true, + }, + }, + }, + } + ); + + builder.where({ relationTestId: relation.id }); + const foundEntity = await builder.getOne(); + + expect(foundEntity).toBeDefined(); + expect(foundEntity?.id).toEqual(model.id); + expect(foundEntity?.relationTestId).toEqual(relation.id); + expect(foundEntity?.relationTest).toBeDefined(); + expect(foundEntity?.relationTest?.id).toEqual(relation.id); + + const builder2 = await service.createBuilder( + { + join: [ + { + select: ["relationTest.name", "relationTest.id"], + }, + ], + }, + { + query: { + join: { + relationTest: { + eager: true, + }, + }, + }, + } + ); + + builder2.where({ relationTestId: relation.id }); + const foundEntity2 = await builder2.getOne(); + + expect(foundEntity2).toBeDefined(); + expect(foundEntity2?.id).toEqual(model.id); + expect(foundEntity2?.relationTestId).toEqual(relation.id); + expect(foundEntity2?.relationTest).toBeDefined(); + expect(foundEntity2?.relationTest?.id).toEqual(relation.id); + }); + + it("Should throw bad requewt", () => { + const t = () => { + service.throwBadRequestException("custom bad request"); + }; + + expect(t).toThrow(BadRequestException); + }); + + it("Should return empty array for primary params (not defiend)", () => { + const params = service.getPrimaryParams({}); + + expect(params).toHaveLength(0); + }); +}); diff --git a/packages/crudx/tsconfig.json b/packages/crudx/tsconfig.json new file mode 100644 index 000000000..f5b85657a --- /dev/null +++ b/packages/crudx/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/packages/crudx/tsconfig.lib.json b/packages/crudx/tsconfig.lib.json new file mode 100644 index 000000000..3ef2d089f --- /dev/null +++ b/packages/crudx/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node", "reflect-metadata"] + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/packages/crudx/tsconfig.spec.json b/packages/crudx/tsconfig.spec.json new file mode 100644 index 000000000..9b2a121d1 --- /dev/null +++ b/packages/crudx/tsconfig.spec.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/project.json b/project.json new file mode 100644 index 000000000..957c61669 --- /dev/null +++ b/project.json @@ -0,0 +1,14 @@ +{ + "name": "@nest-kit/source", + "$schema": "node_modules/nx/schemas/project-schema.json", + "targets": { + "local-registry": { + "executor": "@nx/js:verdaccio", + "options": { + "port": 4873, + "config": ".verdaccio/config.yml", + "storage": "tmp/local-registry/storage" + } + } + } +} diff --git a/resource/nestkit-logo.jpeg b/resource/nestkit-logo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f52281bc444aee09a3619d7c31822bbdb33b10a0 GIT binary patch literal 19884 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 DU6~)9 literal 0 HcmV?d00001 diff --git a/serve.sh b/serve.sh new file mode 100755 index 000000000..274f92418 --- /dev/null +++ b/serve.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +if [$1 = '']; then + echo "You must define a package name to serve" +else + docker compose exec -it 2am-nestkit /bin/sh -c "yarn nx reset" + docker compose exec -it 2am-nestkit /bin/sh -c "yarn nx run $1:serve" +fi \ No newline at end of file diff --git a/test-all.sh b/test-all.sh new file mode 100755 index 000000000..c8536d6ab --- /dev/null +++ b/test-all.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +docker compose exec -it 2am-nestkit /bin/sh -c "yarn nx reset" +docker compose exec -it 2am-nestkit /bin/sh -c "yarn test" \ No newline at end of file diff --git a/test.sh b/test.sh new file mode 100755 index 000000000..ee32e6769 --- /dev/null +++ b/test.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +if [$1 = '']; then + echo "You must define a package name to run the tests" +else + docker compose exec -it 2am-nestkit /bin/sh -c "yarn nx reset" + docker compose exec -it 2am-nestkit /bin/sh -c "yarn nx run $1:test" +fi \ No newline at end of file diff --git a/tmp/local-registry/storage/.verdaccio-db.json b/tmp/local-registry/storage/.verdaccio-db.json new file mode 100644 index 000000000..91c6b8cd8 --- /dev/null +++ b/tmp/local-registry/storage/.verdaccio-db.json @@ -0,0 +1 @@ +{"list":[],"secret":"ec0f2d95416e56a58a0d7d59fd5dfe5e63d7ffd7ca652f14c18449104144e7d7"} \ No newline at end of file diff --git a/tmp/local-registry/storage/types-registry/package.json b/tmp/local-registry/storage/types-registry/package.json new file mode 100644 index 000000000..e4813bd23 --- /dev/null +++ b/tmp/local-registry/storage/types-registry/package.json @@ -0,0 +1,46263 @@ +{ + "name": "types-registry", + "versions": { + "0.1.0": { + "name": "types-registry", + "version": "0.1.0", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "main": "index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/Microsoft/types-registry.git" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": { + "name": "Microsoft Corp." + }, + "license": "Apache-2.0", + "gitHead": "6781f96b2ad534dd390e1ee114cfd12032ecbd2c", + "bugs": { + "url": "https://github.com/Microsoft/types-registry/issues" + }, + "homepage": "https://github.com/Microsoft/types-registry#readme", + "_id": "types-registry@0.1.0", + "_shasum": "fba0a8ecbe1c10a47cdfe91039afc0d95b7f4438", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "5.11.1", + "_npmUser": { + "name": "typescript", + "email": "typescript@microsoft.com" + }, + "dist": { + "shasum": "fba0a8ecbe1c10a47cdfe91039afc0d95b7f4438", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.0.tgz", + "integrity": "sha512-hQXuYwa1flMeJ9AJb2cjJcRxQJRqzb2HBLd8P0YgXCjTgsFtnHrLXY7X8FZmRgZJSmryyp/wryzrO0WXaG1hpA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBS2bj4nFpTZj3jbe/xdw9K9KtlO3drB98PSTfnIOYH8AiAw+8aQtz9uA0j5a9gw6ZyLhx8wQMYKoLE1lVIhMGfO8A==" + } + ] + }, + "maintainers": [ + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.0.tgz_1478134738455_0.17277935077436268" + }, + "directories": {}, + "contributors": [] + }, + "0.1.1": { + "name": "types-registry", + "version": "0.1.1", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.1", + "dist": { + "shasum": "ce6ba33f8a0997b7144c61bff71ed28c8a64814b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.1.tgz", + "integrity": "sha512-ZmIa9surbbdL4IEri+YWlswtf7lcmNM2P2xeJ/xcRmx3sKibTctDXEbxoYRQB+ge+kATR1WwkQoezvtofuSD3g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGyXMs+fIpQOfTiK+aaskzlM5f0w+YEOv2sNEtCnxVE8AiBfZtcGSiWgymgmb006oZkSxKpzijgQCNJm9KBhx8A3lA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.1.tgz_1478195272950_0.9120005948934704" + }, + "directories": {}, + "contributors": [] + }, + "0.1.2": { + "name": "types-registry", + "version": "0.1.2", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.2", + "dist": { + "shasum": "db5544089ce4b1b5492c8d19e7732f2cf642c36a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.2.tgz", + "integrity": "sha512-sYAVzFdZmgh62j+W2NpgGDgBjQcFz5K3FVk7pDpknaNgGjGlAO3u/fgAV4jBbv+LLkrrtELUMwUAv/tOPHyzOg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIH/ksV928lWB+iE7vQ1ElR81Nc0IqMAdqSW3/vUP2KJzAiEAvLnm+TtAfkcxyjg0U7XBM8/ocViXp82tgwuyABvbFXM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.2.tgz_1478196793843_0.22045400505885482" + }, + "directories": {}, + "contributors": [] + }, + "0.1.3": { + "name": "types-registry", + "version": "0.1.3", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.3", + "dist": { + "shasum": "4166b57140f012fcdedbb58344034bc002740254", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.3.tgz", + "integrity": "sha512-3xDpo5CNAdFk0+A4fC3v8/6Cdv/wbSGCFxi68U9mbGc+Cv/F5vJ71XhJIt49pMvbbCKifLRDXtStZ0N+7WAhvQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAsH1IivFVGBL+Bu8aISlpa6olawcrt4SDMsgtR2y12vAiEAnzsCbVEvmMWdLpQ2PYuLiC3u4dmurgXU2BYKYDOCjow=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.3.tgz_1478785835052_0.8055824220646173" + }, + "directories": {}, + "contributors": [] + }, + "0.1.4": { + "name": "types-registry", + "version": "0.1.4", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.4", + "dist": { + "shasum": "d87906d7c5d30c38102d839e293f8f5cdc43d33d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.4.tgz", + "integrity": "sha512-8zSkAWg6Uc/TubRRV9Q8Xt2R5PmU5hMzuvSJHRHW/gWKmFzOU6yTl039TZXF+yuDiFtNocmEQ1YKvxXc5SrCFQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDWGHhVB/HfYaco6jBO6TTPjfSjVkS5aQVj8BQhmbrqZAiEA5OgmeUDaKaw+bkjjPbShlE16kOb7J48nUOm6AR30LiI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.4.tgz_1479152272876_0.4780094481538981" + }, + "directories": {}, + "contributors": [] + }, + "0.1.5": { + "name": "types-registry", + "version": "0.1.5", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.5", + "dist": { + "shasum": "8c7916c6b8877e5d2ba58f45637e07b5a2c132cd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.5.tgz", + "integrity": "sha512-AUIQhrhU5bpIt0E2KWrQUNwIRetJ6OQ4A7Z8ER6i+uZwv58x3vSPfHD2O9fHeDt2UJsFhSoqv+4SiSjzl75guw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFPltD4NM5+hTwqJ19LdN/DihlPaPQUPxU40Ue28q316AiA30f9+eM648UJuWHNT90jUEv1DzoLB3BbhgqVk9ktLqA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.5.tgz_1479157804590_0.6985531949903816" + }, + "directories": {}, + "contributors": [] + }, + "0.1.6": { + "name": "types-registry", + "version": "0.1.6", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.6", + "dist": { + "shasum": "241fc385abc50179daed8099ae3044b2d705fdef", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.6.tgz", + "integrity": "sha512-koYxdvRpakAoVTDD46d1MhiJqaHgwc//DfPPXInpLdYI1GRQpuvqpd746YbuHPlamo7nImaOijZfT23oDdYdvA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAJHyz5otu9JS3eVSNvCMaRvQ6wvybc3Bd9kgMwTxJEZAiEAoIUy5UWpR1AmANHkk8itUyb/LNQZQ+VO8mt7RG5xFW0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.6.tgz_1479221778908_0.8574118420947343" + }, + "directories": {}, + "contributors": [] + }, + "0.1.7": { + "name": "types-registry", + "version": "0.1.7", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.7", + "dist": { + "shasum": "17e2bac6daeac6d529f1962719aca6699bedada6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.7.tgz", + "integrity": "sha512-/xFXVlpYzghIDV659vMOuhFMz4fdvmfdxxUS5L7MBHkRDQghsEv+MMNLQqg/98eGs0H/1nIC69B78xlxsZs04w==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDS4x7/mtYd7+h3Tev/2bFcVmxxcKLuR9Rr5hVVF9QxCAiEAqJUjyU9m75Eo3PcZ/BiozOxg+n/uNMQsdz9NjcR21Xo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.7.tgz_1479236941321_0.07451427378691733" + }, + "directories": {}, + "contributors": [] + }, + "0.1.8": { + "name": "types-registry", + "version": "0.1.8", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.8", + "dist": { + "shasum": "bd7b2e54136cf1a3108d6ff00d2b7a9229788eb3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.8.tgz", + "integrity": "sha512-XgWCP3nXS8xKiGkhQwn8g6Rii9LXe//UjiSszykAQ3cWOUwlhT8XhA1KAIlyRIAMEHyuAj27ZiG2KggZ+2lSPQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIF+Ghc3RRCbBO57NhU2LvZFW6a3hhV0Ur8pU/K6pGrnzAiBnFK8qgzPnZ+HNB7loyFlw/Ewz0kQusoyUm30kgamL/w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.8.tgz_1479240941273_0.19263592921197414" + }, + "directories": {}, + "contributors": [] + }, + "0.1.9": { + "name": "types-registry", + "version": "0.1.9", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.9", + "dist": { + "shasum": "7666248ee70d2ed130354a020cb2aed2810bd9e2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.9.tgz", + "integrity": "sha512-Xf2Ihz7iK3H4eH/5USC2f0QKtFTXRHQXHE3ebwug/T4/HX1KZk1Q6wA/DGDVxd5mGKfRJowsi51bfienkqkIyQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIH4qdPYv31f13OedBZvhAeoNiyYqEuVoRnYdOg81deknAiEA6b4lfbrY8TX+C2wtlUnJla++sa+AXl/1grLQUZUVWhk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.9.tgz_1479243916003_0.30600901367142797" + }, + "directories": {}, + "contributors": [] + }, + "0.1.10": { + "name": "types-registry", + "version": "0.1.10", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.10", + "dist": { + "shasum": "5421c8c6b0c62d438d12d6dac9f2fb6e8f89984f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.10.tgz", + "integrity": "sha512-OrqfjkHP71E+5OoqTkiCT5Qm0LrCvuRwHCKLb9MjHa1YghkRL1FsvZSg7+IbIncGvGWo3ovWlT47MWzH5MY0RA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDZpwSPr+FyfZHGxAxhlPGNmK8jrMAgeXN7V2VPyq/eqAiEAzin30FCmJlXEYw+aeXUSp6xeRPe6w6GgF80DJTmWpls=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.10.tgz_1479261790165_0.3779536336660385" + }, + "directories": {}, + "contributors": [] + }, + "0.1.11": { + "name": "types-registry", + "version": "0.1.11", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.11", + "dist": { + "shasum": "83fabed71a80ecb0aa3cbf4ffe191b30fc39f9db", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.11.tgz", + "integrity": "sha512-ggxluq+LSL+e/q55Y0/8iVW2jNHOiZ8wXihhwC9TVdRmJrRvcvBbybUhGKMwitB72tDpvKN4hf6XfwwxhXqjow==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICm1A6benjgVdsgor/QWXeTsXX2iVrO57WMBN9N1QfZjAiApUI4usY6mzk3Ut8Y6fJNxU1lxdy5/X4FSImdkRluEHQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.11.tgz_1479313216121_0.6514699205290526" + }, + "directories": {}, + "contributors": [] + }, + "0.1.12": { + "name": "types-registry", + "version": "0.1.12", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.12", + "dist": { + "shasum": "db3567527e7f004957f80ccefb7d3d0070573841", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.12.tgz", + "integrity": "sha512-FpSoshDOkMo0Br4apQZm5PVqcX5pHDvx/xFbJ6pIm/s8QCc8fKnTgPW+jjZ+jZaKt7tG/TFPi7DCOgb9ex9VBA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBtvp5Ghf71o8q2F6UkOgpxn4XpbpknA/hPBukp0k2EBAiEA5P+yLtbnGHjuWa/gdK9Mxp24HKfChybGfBVQ+vJXXZ0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.12.tgz_1479324375480_0.9451001982670277" + }, + "directories": {}, + "contributors": [] + }, + "0.1.13": { + "name": "types-registry", + "version": "0.1.13", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.13", + "dist": { + "shasum": "a8b0ac710bde6b7422523b4b676eba06f0a18955", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.13.tgz", + "integrity": "sha512-bP8TFxvhvVo5J1w7UsVkckyePDaZ4kKiZdgtY5fYA5U6fhl91Z4TJ3Dzkf3siiuCQqu0RLe+e02nCF7t9/3LHA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBOSckXPCHWraauouoXKBBSkSj5Yrz4gtcndyIvWoX5TAiEA2w7VGityKTjGOGOtY0ahUirXzGxLkfMFyfbrkKXXEms=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.13.tgz_1479409304396_0.03396848659031093" + }, + "directories": {}, + "contributors": [] + }, + "0.1.14": { + "name": "types-registry", + "version": "0.1.14", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.14", + "dist": { + "shasum": "22f45b9149019769b8233202c7c692866309855d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.14.tgz", + "integrity": "sha512-+mevUmwjHEHcAtg6i4kF0VyMj9UeljJ6rQ3nAe84O7iul5a5o6FkYk0xw2yfF3zVMWTyjxZyuWO0dF4fh+FxKA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCs8sQEAsNMRM4uy1Vb+W27iH788k9SsJyx6ifVNOMEogIgDXpEYQ1IAT/PwBMsFx/kmdQ8w2U2QPTW6FyJl3zjp1E=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.14.tgz_1479419227681_0.4777035021688789" + }, + "directories": {}, + "contributors": [] + }, + "0.1.15": { + "name": "types-registry", + "version": "0.1.15", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.15", + "dist": { + "shasum": "34802ce62d86b3fdbacba22bd60abe167749ffd9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.15.tgz", + "integrity": "sha512-EXLNzlRzh24bO6IwoMAEuubfHvWoeOEnyMIBdV/sCeKU+EQLi6sPrx6ReqSUWmG0bu3SXDy6nD5/Tf2lbxYHWA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCS5qQ37Tnnr90QAZtyXI8w4E+0b4WRbUauHlUcQ+AZ/QIgWnIZA0BA7TkpTsMCE19+oIABJKfUrf23xVM8g46RgJE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.15.tgz_1479420531692_0.8768468310590833" + }, + "directories": {}, + "contributors": [] + }, + "0.1.16": { + "name": "types-registry", + "version": "0.1.16", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.16", + "dist": { + "shasum": "3c94bda32101c92ca539d011e1972b81a9aa8e5b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.16.tgz", + "integrity": "sha512-5F6+Vy2MqF1FqxP5xLgxvao11IR6LUG0wbxnMB1qI92m2raXEYcw4GZdWlEPpgJo4eRcpeM2i5DZ5JbMfOs9sw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFTQtcZ1LP0ICMoXe24/iiBBulT9Czo6e7EP10htUZD5AiEA/pPSfIb9pQVSGJl18mA1WtDUpEPWN1Fv5KP9ieMyS5g=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.16.tgz_1479491441169_0.343088417313993" + }, + "directories": {}, + "contributors": [] + }, + "0.1.17": { + "name": "types-registry", + "version": "0.1.17", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.17", + "dist": { + "shasum": "3a449b961ba4ba783d008317b802ba951aa05dc3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.17.tgz", + "integrity": "sha512-pOvcrpLUBxYjSN/YwUJkaoOau10oKwOYTfugLlAz0bj6P+cqPNxegtqq2MwJb51n+BQ4Fipdy8fI7Rs/k7aWJg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCifPTh1qYoLJCNjYpE4GSf+dt3iKWI0XN7oVYoOrrwkQIhAOj7MNyReTflabTBrwcXj9sayE8u6kxphMKuIoK+5YMy" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.17.tgz_1479505060352_0.40281090745702386" + }, + "directories": {}, + "contributors": [] + }, + "0.1.18": { + "name": "types-registry", + "version": "0.1.18", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.18", + "dist": { + "shasum": "b85d986236b4472676a72723c3d0bba9f953e95f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.18.tgz", + "integrity": "sha512-tlJ39mQwu2/IhzqkiJ4OxoCBtpSkO8W6i0KVW+dSaWWzXVD/PahN3+fxGQ23rnHGNnWmZ4w9pLEc/u4z8GZVUw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC7Xv4Vv0Np4tRMt4fM/yH9axEUVXeK3oiKLn1F53pf0QIhAM4zwk0VHwbN+EBc/t39RWWHSliDt8hVNzUER+K6mlSr" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.18.tgz_1479739702939_0.613062203861773" + }, + "directories": {}, + "contributors": [] + }, + "0.1.19": { + "name": "types-registry", + "version": "0.1.19", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.19", + "dist": { + "shasum": "f33f47cdca4e3c28fb7f86ed880333835d7b0f6a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.19.tgz", + "integrity": "sha512-wEB1DayjjzKWOOT/+myYISY5akAERgnBBkZwd+/qyO7relpnkdBTr3jm0zyRsFd8Df/f/maJajZloKAHJe38tg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCvNNGJtWNfT4Y4XQgCUushMHExL5Xlx8B6lCgUr1zTRQIhAKTZh8xrOBQf/XoS0ZI5FGvweaDWiZFtCXFcl9sFZrf1" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.19.tgz_1479740182620_0.27140310825780034" + }, + "directories": {}, + "contributors": [] + }, + "0.1.20": { + "name": "types-registry", + "version": "0.1.20", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.20", + "dist": { + "shasum": "08472cdc3890403270ead70d9a40fb6b41944e85", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.20.tgz", + "integrity": "sha512-Il3hRBV68ZftBmOxtI2Qn3P1pvhEsjh2gx7Y9jmYe73AdOgQZC43kAvZp4oIPIQIPUWxKtxcCCpWadu8Yvl+Nw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCLkm8CfoIP6aYlEPlorA6HGJngo4mmSALRL2cuQdZjGwIgU6WVoKuY2J+gz2NjBgyusE1/WjEDbUsSl2OIlHshA1A=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.20.tgz_1479746986396_0.35237224982120097" + }, + "directories": {}, + "contributors": [] + }, + "0.1.21": { + "name": "types-registry", + "version": "0.1.21", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.21", + "dist": { + "shasum": "6e6ad2430d8edc2aef0fe6c4b1d09ceefb7786ed", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.21.tgz", + "integrity": "sha512-wuQFLlvPk1EUFxLWgIM4x3igpyhpVNmHG3hpAgv6tKrc/FbTKewafZ5ff1QO+DRZZtZ1RFlvEIjziwRnoaDPKA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICBvLwjpQYXhxb2vRog7hoVtg9F5sDQFYBcQPPH1PMMsAiEA/IAGp0O6mR4mD0gqUsYwdakMaUlmL6kljIjfQQzeiYw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.21.tgz_1479751244257_0.9847156994510442" + }, + "directories": {}, + "contributors": [] + }, + "0.1.22": { + "name": "types-registry", + "version": "0.1.22", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.22", + "dist": { + "shasum": "4cadf3316ad2556c25fce258a6e4fad64745f48e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.22.tgz", + "integrity": "sha512-M5TW6x08QmCGoGWyo9vH2syXGw+GkO9j1PW8v1PxDgIRle4aHhGWViaDtZI77it53BTBS8pVF/8zpL3FF/ye4w==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD5mTRgbDThreMYqmgvVg2IGP8HvWr0IaukZXf6wsmSgAIhAOUrVSQVeiZSk9d0rRWD+MFDSN1F34vbJRTPitYzLn6q" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.22.tgz_1479781595730_0.5430828155949712" + }, + "directories": {}, + "contributors": [] + }, + "0.1.23": { + "name": "types-registry", + "version": "0.1.23", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.23", + "dist": { + "shasum": "a041e493fe09f600f8f3e931b3725b98f548e8d6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.23.tgz", + "integrity": "sha512-DcCBg7yrNDLthhN1lnxBMp617Oeve2/qFrI5zUz2suvj9zuDhc8i9/30G8smoaxH9ap3hI6XKtZsbyvraV8zqg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD9l5+6MBTxpO57puimNhnOAUh7HzrEMj/ZnNQ8FMqUlQIhAJtz2nb1eWD6mEBxu9fcMCtt/gdbVwZuwoB6vQ3sG/n5" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.23.tgz_1479848500564_0.26659063366241753" + }, + "directories": {}, + "contributors": [] + }, + "0.1.24": { + "name": "types-registry", + "version": "0.1.24", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.24", + "dist": { + "shasum": "90fc8bcf3b432dec8c69d8e2af8360354a6d126f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.24.tgz", + "integrity": "sha512-TbFirK1x/HENZJTveyshpL2eRhlMgaP4PB29Snr1HMBBnqW3KVgAuwz79pOUE441/6atXmILhpBNVmTl3kD1cw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDWpghqzgpDl31bE8tGrav6qplxQmnrm/tqNTLNKeukLwIhAKcRlv5rRtF7ndhYUTFQP12MR8YI2iDkUYHqY+kZMb4R" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.24.tgz_1479849056566_0.33400461566634476" + }, + "directories": {}, + "contributors": [] + }, + "0.1.25": { + "name": "types-registry", + "version": "0.1.25", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.25", + "dist": { + "shasum": "825b737c68cefda5bf6536038d02248c202057ea", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.25.tgz", + "integrity": "sha512-hzBcHJng8DjZthfAd0Vax0Mi9/xDofPVLpCnQWCdMzYAvY/yacdGZwLD19XFgcq4JFATDljcJBlvanUz7q7DFw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDkOboXiagDfO+upXCK4Q9VyG2k0qP5N7hCaHqaUeoRCAIhAIqNFbwVZnIRbPMp7AIZMEDqFMJsQWsBBio9KksjDO50" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.25.tgz_1479850167727_0.6713888191152364" + }, + "directories": {}, + "contributors": [] + }, + "0.1.26": { + "name": "types-registry", + "version": "0.1.26", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.26", + "dist": { + "shasum": "31b828a92044ca3bcd7c6f821f2ed7f760069812", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.26.tgz", + "integrity": "sha512-lQmpsr4/K78mrkx7QVRXPfSv1fXXZHvkL3seSh7O76lNJQ2Wq/qhwPlq7QNMyqAVVY6V42nGBXJOnZiD6BOBRw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDr4ffH9Lcbyxzcbk3ZwCJet3oeg39I/kSoDB5KP1r5EAIhALF26Zs5cl8Lu59ExqiOCDlLmbf6Jb3S4qB5SHjK2zel" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.26.tgz_1479852026236_0.6375144952908158" + }, + "directories": {}, + "contributors": [] + }, + "0.1.27": { + "name": "types-registry", + "version": "0.1.27", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.27", + "dist": { + "shasum": "017dc94500ed0934857dc3da44e580040aa115d1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.27.tgz", + "integrity": "sha512-Op/vE+pxwtlU8v66TquQkGB9/1jw84Bp324pyREUwjgUJ0/hpvyhIovPT8pr7UO6lwC4lQdfqxqCrU2biwETuQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBd+nx/kbxW2aV7bkvWGuE2r3NKfsxKrX44c9fa5Nt9sAiEA+Ug/Sm4dZY0Ohvnq6ncZLnsu6Uwyx/ES0U9BLrI06tw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.27.tgz_1479857944451_0.15745194628834724" + }, + "directories": {}, + "contributors": [] + }, + "0.1.28": { + "name": "types-registry", + "version": "0.1.28", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.28", + "dist": { + "shasum": "53f78cbaa23e3ef96befe66442d587ea0c716232", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.28.tgz", + "integrity": "sha512-IZZOfvGUctOQD61KIJxtFzI3YjoPiHvqIVQTncwOjIgxllXF0r5E3L4jwmqG+zugHlw8otDiyO3+vCySp4r9kA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA4zXRZI4hoUDQfphieb+b0eFvQZAlLNxxUYgcbhV878AiEA3pyXcNfczxKGWxMKQlQ/fUC3Nn/r/mYnBTwKgulYitE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.28.tgz_1479925792555_0.0039939871057868" + }, + "directories": {}, + "contributors": [] + }, + "0.1.29": { + "name": "types-registry", + "version": "0.1.29", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.29", + "dist": { + "shasum": "9f5d1d59c6ad78237f142dc3b2312e260a3835ba", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.29.tgz", + "integrity": "sha512-StDVUCH987hOV+lsQUr7jTSPJcY4guCiTqOiVMRuhtrdYzI8qS+aeKraaIhx8HKOzp8NF063MjaFDdrhBn0sZA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDpSzkuZUW3/wAVlYGu05YDX/KL8WUU9iM+QfYTNSrlUAIhAMZgyNEDYc8M6TaFKpocmk+2wflyR8kwvQtTYy/lLMVh" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.29.tgz_1479934416093_0.8048593518324196" + }, + "directories": {}, + "contributors": [] + }, + "0.1.30": { + "name": "types-registry", + "version": "0.1.30", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.30", + "dist": { + "shasum": "c4eef61ab65dc232e0b40d3657ef0d66be9cd099", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.30.tgz", + "integrity": "sha512-LDF2u3Wtku65CC+MlXeht7zKhHIPLtNgHrMcOACiWWmCI6Ve5Ei4pUY7IdgU+aRBHnOalb5jRc04LKnGXaZ8Gw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBs/UTVt/oQWHDs60IxFiZ6r5Lv9SmTxUvmai7Wbj9cCAiEAx8OspticYLQ/r8LKIR0vRdWuVlrfmEKQlt8WsaYB+RM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.30.tgz_1479934577249_0.1948679715860635" + }, + "directories": {}, + "contributors": [] + }, + "0.1.31": { + "name": "types-registry", + "version": "0.1.31", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.31", + "dist": { + "shasum": "f23b445c30d684f02671047caa483885beb6cae6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.31.tgz", + "integrity": "sha512-osSW5QsGheBZW/60geiUR4EvNokjY0F55zC8kDrQYl/oYC/p68B/Czmuf3dyswJReNKBZiYnlW2lBqBxKFYc5Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDspf/pgg9O6uDEuVMGPCVi2F0OHvPN1JrdDBSebAW17AiAVtvZR+gfJMpLxQMcNg2+hoPIJizIjEgzDWkxBZUfBRg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.31.tgz_1480356298205_0.5418345348443836" + }, + "directories": {}, + "contributors": [] + }, + "0.1.32": { + "name": "types-registry", + "version": "0.1.32", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.32", + "dist": { + "shasum": "cdfbda792de77bfc3117bc3ec9fe5ac4fa2bfa94", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.32.tgz", + "integrity": "sha512-ic4FEyC5GSKwXhItwlcLKG5BvZCd2IfDiXkXtgaYq6Qi+XSp62Yx/8Zdk7C8W7gXjWJJTUswrw4sZBXWBsJgmQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCcFyW7RXpq3UnJYeFNI4bwOlZlU6uExXI3zGnQ5lNS8AIhALUQh+Rgnsjzm8LEuGDQcryy/dQUJdSJLfD1CxX4S7Nx" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.32.tgz_1480357817246_0.4583755941130221" + }, + "directories": {}, + "contributors": [] + }, + "0.1.33": { + "name": "types-registry", + "version": "0.1.33", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.33", + "dist": { + "shasum": "ec9dfcc883e03c21bec5714e19ef5d6727484a00", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.33.tgz", + "integrity": "sha512-AmM0GS6LjrC5KKSdbbexlDV/c7XG/rTa1Q8wxZa0WWhYtRnbnv1TfzSftFfvqjr6LNiGEEfC9sibWXhUfNGXQQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBYyd4XniQ30j7PdSlov44jg5OSubCSi/xOYwybh7XmkAiEAoaTF1QVNUtZki/m3ETPkHUklW4C6ifKgbykPmj5RLo4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.33.tgz_1480446164927_0.4415100570768118" + }, + "directories": {}, + "contributors": [] + }, + "0.1.34": { + "name": "types-registry", + "version": "0.1.34", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.34", + "dist": { + "shasum": "38794fe7cd09c9a679a4c19ccef95b8f2ff77cdb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.34.tgz", + "integrity": "sha512-2NKSB3yM+y3rSeeDiUimKmicv3m9UN7HQdBxmkbvimsb3foNPpPtPxmAyuzAgMO4lFwGxa6pzMxKmDcaDoQouw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIB9lt2iSbCqNZuSV2rw6HrVjP+QGVdnZVcBPmdmS2wjLAiB74+E0yqXHVVxs9ospzKZZkkM3tD+rDBvMaWUv/gx8Uw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.34.tgz_1480457533595_0.80660624592565" + }, + "directories": {}, + "contributors": [] + }, + "0.1.35": { + "name": "types-registry", + "version": "0.1.35", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.35", + "dist": { + "shasum": "85871eb26c98e4201478114e34cd2164bee7a252", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.35.tgz", + "integrity": "sha512-ZtVDC1A4QhtqNfvQlKWK8eDEcESrBGGWcmhSj5UwdxNZmjqjdUVVokQ9lNjBcjnraqJsN+xT5LDJTH+GUDfZzg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGGwENN/xRNrhAcFduE9jpKLuq6gzbAJs3ECF9sapUMSAiEA07kPJvj4/EcyMbTvzccREtBWyhjK/EK0l9PIKmsExq8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.35.tgz_1480459250275_0.3861661572009325" + }, + "directories": {}, + "contributors": [] + }, + "0.1.36": { + "name": "types-registry", + "version": "0.1.36", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.36", + "dist": { + "shasum": "ff353cde95613e8a487fbbb30cc6844e8461b35d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.36.tgz", + "integrity": "sha512-EGf5aAjCxwhb3JwwCCXzwyIq4QOJGIeE/i3/U4H4XjKX6KVpSI/4QPg1MVZzac6IifVhZS3MDG04Zaf7eiTKmg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIF0fBhCtVZz6z5Q25USmGjWeNOyb092GUJcvgRFNavdTAiEAm0IrTb6BtbvxgeU+6oMIn4TTGll7RdDQ0LZV2CIUFdA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.36.tgz_1480462347673_0.6967863736208528" + }, + "directories": {}, + "contributors": [] + }, + "0.1.37": { + "name": "types-registry", + "version": "0.1.37", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.37", + "dist": { + "shasum": "56e3b9a3a8d15a00d1c4656895698342c8bc9f85", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.37.tgz", + "integrity": "sha512-iOFOwAHyzHVJQ57zeuFWe1O2iZ90JgP0I/w+i5oeUBBUYtTottg4U8Aey4jNoHLRNTv9B/2/LefqO0UJYOYMiA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDEngiffv8HP09H8kY43pQJgM2x1lvtlYeQBf+qKHwKcAiEAp+l1WZOgmLCu6zTcNQDa4+J0cSs53FCZ8tIq3Tdm/0c=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.37.tgz_1480462554921_0.1912498134188354" + }, + "directories": {}, + "contributors": [] + }, + "0.1.38": { + "name": "types-registry", + "version": "0.1.38", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.38", + "dist": { + "shasum": "8276f0ae566f0839b89695ab62a9ed9eac48bc65", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.38.tgz", + "integrity": "sha512-qV3DaWLGr36I4gFOO66LWSXzD6mp6WOiVhbJJ5z+5MAiRswnZ0eeVlQlbxDeSWyg4aaj3v4/3Ph2gqQNUYnKiQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAkmOk+MoDYvb+j6sLOLnmWcvZeMFKARYriWWzRrA8nTAiAZJdLj6sS9zogtrzpcSRYf3kEBaUMOO4cbzLAlTzfYQw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.38.tgz_1480462727671_0.4870409811846912" + }, + "directories": {}, + "contributors": [] + }, + "0.1.39": { + "name": "types-registry", + "version": "0.1.39", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.39", + "dist": { + "shasum": "c31e017ec91bdec8b07a49b1e2867b8ac466eff0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.39.tgz", + "integrity": "sha512-2yBMxpAlMajYhLYHT/sK9lSP09Qotbr23MWZQ6L0TAJTPMtEjuYXSsTxEyPSeDd2x9aw3VBgEbTH+SV5ScdUVQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDQVpZQUOMVcqpInpj6nRYls8x7hYLMM6Xje0mqfpl5QAIgLMA27/HyxZ3/slVzYsc5ImjAk83xhQD98DyE8QLXQTI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.39.tgz_1480462945529_0.6574138693977147" + }, + "directories": {}, + "contributors": [] + }, + "0.1.40": { + "name": "types-registry", + "version": "0.1.40", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.40", + "dist": { + "shasum": "3f4886803e20b6887bde99879df322fdf4ebdd5e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.40.tgz", + "integrity": "sha512-G1IHeSFdvRRWAQ9fYPM49dLrGrJNMB9M2v+Pw+HUMCtRQuKSRWAt47Rol9Nw56NoBdhtUFTDajh3l2ohhRqEXg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFMAt3WShCYV3gny4qCcdP1jlln/nC4ajInkWa1MMalBAiAgxfvr/fljq/02NIfk+TQ8/osXW/yP8WTrdFRZ1h2cXA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.40.tgz_1480463967758_0.028148257872089744" + }, + "directories": {}, + "contributors": [] + }, + "0.1.41": { + "name": "types-registry", + "version": "0.1.41", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.41", + "dist": { + "shasum": "68f7a9cb47aa6bbf0bc1c6199e0ad6432204d78a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.41.tgz", + "integrity": "sha512-AwPposLZIr+2nekwm6d7Rv88eUsVPFlvqR54hnHEDqRZ9qwKCSu/AhaQnoO4K8ivVTPt2w1BQEtiqelIceQ9BQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD+Xwr5E6TqRF0UdjVt+k3p/VX37aSKJgVuKu/NbBPY1wIgKwqU7MD5zCECcNMzZiRSi2TOxHstrqeiSHBsaaGk9i8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.41.tgz_1480465411388_0.5587801858782768" + }, + "directories": {}, + "contributors": [] + }, + "0.1.42": { + "name": "types-registry", + "version": "0.1.42", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.42", + "dist": { + "shasum": "778c98f7d6b026281192cbc23ca648be74d9a56b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.42.tgz", + "integrity": "sha512-+Nu6GXyjfEwfrlVRoyDujhUbHmyBTA8G/ySb9jMlCLERP9X3JTS52BAYMPYw0rQ/mF3bWGZzi+JiQ2dPL61cbg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICkORPEMBNr6ht0vGfCzRaorqyuo64ZAC9C3QS4CBVy4AiEA13TxVlKLn3By/pwjD6y4ZKQ5I/w0fOLCkxE0VigNKBw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.42.tgz_1480469251237_0.47664923104457557" + }, + "directories": {}, + "contributors": [] + }, + "0.1.43": { + "name": "types-registry", + "version": "0.1.43", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.43", + "dist": { + "shasum": "8f78356c7f3e01bfa4b2af33114f6e3fbaa54d94", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.43.tgz", + "integrity": "sha512-N9YVeeC6bZinyLCYXd4iWXA/rVwrhGTeoWEjruKm8ZdjtRnAyKOyzTUsfqXWxNENxYQGM7MrbNGVQjs7OCO8Aw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCwypWWgKSqKgKja9kHlNta+vB8y6ky/CQqGKwQ2zWwswIgVwrxL6Y+Ka2Lc6MFEd+06m3m5UhQ7nRWqGsJejTCY4U=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.43.tgz_1480532949084_0.08263617614284158" + }, + "directories": {}, + "contributors": [] + }, + "0.1.44": { + "name": "types-registry", + "version": "0.1.44", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.44", + "dist": { + "shasum": "5022e8c1d43bbb6d0545413736eba79d6ba801e6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.44.tgz", + "integrity": "sha512-ZG9FRC/rYz7sUuaCpzXrk97OxfXwyF7NlRPdWQ1/6sQaWjOG2DHuHfBsn/t0E03a15pVaQqjJhBkVrQFK9bvkA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBgk5C+3qiUnOj0DswJ1ubOA3TLaLiQJknAYs90SGiK1AiEAqzDOX3oVLzIMPsa9QnXZEalRLwtrrzkbFSTstZdC5LY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.44.tgz_1480543408364_0.7991916355676949" + }, + "directories": {}, + "contributors": [] + }, + "0.1.45": { + "name": "types-registry", + "version": "0.1.45", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.45", + "dist": { + "shasum": "ed63b06f40220f34af345ad5f9b47723fc7d1123", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.45.tgz", + "integrity": "sha512-yvCinu37TWrf5/gGWaOc8VeQrSTr08nvdXQtBUbZTc3vugRGVu+KYChwBtEEv/O+Gvg7oLqEu8B0qD67iWf0BQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCOglS4U+jUdB26/uKHisO57sVRlJp6O8XnPAuKlijucgIhAOKpF3MHzX/yREefcOmsPkvIdlN/CjgzgNXTBkGhXLy1" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.45.tgz_1480550424821_0.711015562992543" + }, + "directories": {}, + "contributors": [] + }, + "0.1.46": { + "name": "types-registry", + "version": "0.1.46", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.46", + "dist": { + "shasum": "939d2a4571be04dae541714bd0d7d6255e137db7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.46.tgz", + "integrity": "sha512-Shbg8viyJW6F0qG5rD3j1Be5lNBc9lpahHQAzGPMYUUM39AVso/R7/CoqRXd4AKq+9OM128KC+rYeGARPgjdJQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDKcjP0cJ30RXTZF27kQ6veIGyizqCWJffunlqET14itQIhALJFn6ihCjUxK8UygbO5PsgdR6mfS1W3xruuArkDzzcR" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.46.tgz_1480551909924_0.19276496372185647" + }, + "directories": {}, + "contributors": [] + }, + "0.1.47": { + "name": "types-registry", + "version": "0.1.47", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.47", + "dist": { + "shasum": "e384f19c3ec0803c26cd64130a3548c5fdaccfc5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.47.tgz", + "integrity": "sha512-FSDNULbnY2WzVCTr16WKI9yv1nDndsGeunl59HUTYgg490FjQjVyS6zJ8wuvKkge9PJZeZEN9iF+K/L/zrW8gA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICTWySmtKK7QbJ3RUwe5nzSgpMbsopN7TVK0QZiyqRtFAiEA1ldpVZ6StyHGrNJiidv4l8Z97na5Qru62/WwV4oScbk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.47.tgz_1480555138510_0.13634923216886818" + }, + "directories": {}, + "contributors": [] + }, + "0.1.48": { + "name": "types-registry", + "version": "0.1.48", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.48", + "dist": { + "shasum": "d25cee6a7dff30b01eff448871e449311cfc4bdd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.48.tgz", + "integrity": "sha512-h+cBVvkUAHMgjzKfbAL2WCIh81ZHdKn466ncmiNegLW4fmfLDBzfYHZFiH2EADPK78+KyCzmg3UyW5eDq09+Bw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCFqPanuiwNhb94o8hH/1XZATqrmvcADag7X9VK1FpdaAIgXwkKnF+yu0lPz8gEPiCGonv49YOPYnAZf0BleTTdrYg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.48.tgz_1480973774241_0.16853510751388967" + }, + "directories": {}, + "contributors": [] + }, + "0.1.49": { + "name": "types-registry", + "version": "0.1.49", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.49", + "dist": { + "shasum": "3c0dfe0d071675a74c4cb88df8e7ab6d3c79459c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.49.tgz", + "integrity": "sha512-GJA65dXqzyEOnaxBRq/UOOVHRWGudALR3VndqJTkb2EzZQepT9aP3ShjFoPSAb0fzRt+LngPJkFkTbWxFAtNOA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCTop18cuPSzsjh6JVvBH2CSsw6fTD1YGMBTxJufl3+tQIgdT6r0tQeKF2hh9Aec1avnTfBtuznZCG8b5E3ZYTsGy8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.49.tgz_1480978296540_0.6999062416143715" + }, + "directories": {}, + "contributors": [] + }, + "0.1.50": { + "name": "types-registry", + "version": "0.1.50", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.50", + "dist": { + "shasum": "6b744caa1e55530f7e98f2e6eebeeef2848fdb00", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.50.tgz", + "integrity": "sha512-dcgKQaSBS5gBjwkfmpjpoh4Q+IaDOdJuuPjFS1ESac0o53EJVUdjPC0jTE5hT7lOe4XkPHENLmG/CRpvv3R7TA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCIjMvQokH8SHa6k5Cto98RUGXQUPswjpyj/jaYBnikeQIgSdJox76L937H4Rd2rKeFRR3UZqgdzeuS4oUqf1dcVFI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.50.tgz_1481037263570_0.7079629611689597" + }, + "directories": {}, + "contributors": [] + }, + "0.1.51": { + "name": "types-registry", + "version": "0.1.51", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.51", + "dist": { + "shasum": "a689bf6f063a80d83bdcd7b3fbe503ddaf67efea", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.51.tgz", + "integrity": "sha512-MhF4cWqlBCt6c6RL+ndSIT/I9AgiBNgzTRB4YzfefvQvArFwCZsAF5ofLqvFKRrlG4+Ghg427wKKjK8iKvGbxQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHBfuGPte7BZByPiNu7ku6a23t90sD25jEG5Ey/aVH3SAiAyGsgbd2sjdfYzZgrQpYVh2pJqOONXyEfXNckYtwb7Eg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.51.tgz_1481076323481_0.35959251690655947" + }, + "directories": {}, + "contributors": [] + }, + "0.1.52": { + "name": "types-registry", + "version": "0.1.52", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.52", + "dist": { + "shasum": "028fc5965fb5c41ae03c6c56887997f7145cfff3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.52.tgz", + "integrity": "sha512-U2uT2BzeZAGkyoSfZBrgWx+v3l46BnlOhe0MAnDPG3l0CTpt0PWd27Vo3Ebs/hbrln4tHNaVEe2hSSnX6l6SrA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDrF7zD4OUyRhJQNrD+wOlECYuCaZAePxWh9TwdxglI5AIhAMOKyOtontGj75go4H6IoMmtUab2PpxhQKsXXSJc0122" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.52.tgz_1481139100703_0.8204035519156605" + }, + "directories": {}, + "contributors": [] + }, + "0.1.53": { + "name": "types-registry", + "version": "0.1.53", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.53", + "dist": { + "shasum": "49862fdfb2fb194685636a311c3d5e2874e6bb25", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.53.tgz", + "integrity": "sha512-/Tch+Qgp7t6Fufq+EdSUKc8qONk6aICwGNX70VbKx3N0Di9azirIOkVy/QzUI8h6kjOP0UfAmO8medZKIj4j1w==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDmhk8Hn3/U01l4fyayCCEU7taQl6k7QeCtt+FsHMX0aAIgMdldWG8+j4x9Cfl4V8WFMIw6vr4iAj2QjX4LL3NYskc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.53.tgz_1481148562436_0.9716424026992172" + }, + "directories": {}, + "contributors": [] + }, + "0.1.54": { + "name": "types-registry", + "version": "0.1.54", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.54", + "dist": { + "shasum": "cd4dde27bc1318cbb549708694d000917a597f1d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.54.tgz", + "integrity": "sha512-3tD+S1TNfa+9iapMr8SULd6K2uXNo8o0zYGrCJ/3Zm+ORa0oPpGpJ70Ff07n/qyU1KG23r5o0RK2nxKaV2EeuQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEABnDf4QHgFX3OE9l4bIr6wTcL5bM9GLTaM6lkTLJ+0AiEA9h7A+lca/eAtkcwkM5OPDd3u1FNY/GgxNShKoMZv1Oc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.54.tgz_1481150597273_0.9905049304943532" + }, + "directories": {}, + "contributors": [] + }, + "0.1.55": { + "name": "types-registry", + "version": "0.1.55", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.55", + "dist": { + "shasum": "fbde51410f3c03e64bc1ce62d34f157cac6c30a9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.55.tgz", + "integrity": "sha512-HUG4XfjITKRi2JYmWEFbXjN5TSdMOWNtkJh78DrPka25c9ZDHDgivhad0YBbcRvR08FwXKWGBB7xHWs5DbpKBQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCXcIFZmYQepsOUtj5R7ibZGnmV3m6eAYrPJrCpOe03nwIhAP+cOq2waJZ5ThWZoDlSQgP20spkIjwOja0xoEqZ/Zp0" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.55.tgz_1481171630215_0.5773201696574688" + }, + "directories": {}, + "contributors": [] + }, + "0.1.56": { + "name": "types-registry", + "version": "0.1.56", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.56", + "dist": { + "shasum": "8d99dd4c16301e262a0cb29b4059adc04c2504c5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.56.tgz", + "integrity": "sha512-9v3rg5cYgLU87HV+DiF6S47nhYRsAVfeNgzZxNKzgDEcnfdME+NM8pSfta+VQhM3+VdPzp7aRsqZz9o/Nb4IzA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDTWGrkFTHmyfAbdl1YqBYPf/34UENmTUERSQW0iDUk+wIhAL6GHFknL1TGgr62nBWwlNxEHNahzOpsp9WD+F75hHsc" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.56.tgz_1481208397457_0.6098321606405079" + }, + "directories": {}, + "contributors": [] + }, + "0.1.57": { + "name": "types-registry", + "version": "0.1.57", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.57", + "dist": { + "shasum": "b103a96b3d04c1e1066eb65da304aa671795588f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.57.tgz", + "integrity": "sha512-v5uOGrFbDPWvW64Os+mpVHanS+mEVMZmGTkUa/TO1kjAqu/mjSI98msN6AKfji0sAJaanyfq7+p4sRZHUKY2pw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIChDYS5Hnq0V3CxY1athJ3KzR1I9duPjnQ6l2nRDFgnOAiA2WDRhL8RXEu2C5i2jt29bJA75uDwaBZf6f6+Owl60nA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.57.tgz_1481208724730_0.3946613552980125" + }, + "directories": {}, + "contributors": [] + }, + "0.1.58": { + "name": "types-registry", + "version": "0.1.58", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.58", + "dist": { + "shasum": "7747a721d1ce777a8045d35c89c98962f6d188a2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.58.tgz", + "integrity": "sha512-r8wWj8nYp9LkESvD3fToEPoSO6usHUt74VjwdCJx1RmeJZ8XBJ5EGiD/bG99fChaqhiihfvz3Q28P5MTVI76RA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDgtK8N3G48a9ddt/e1esZvFTC5YCun8xOP9xit5M1/wAiBL9p/0FdJKJMO9kTd1U9wTwmkaP2hdhM+Osy2kcQnahA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.58.tgz_1481208910852_0.16336339549161494" + }, + "directories": {}, + "contributors": [] + }, + "0.1.59": { + "name": "types-registry", + "version": "0.1.59", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.59", + "dist": { + "shasum": "df5c1f892967589d1facb57b9bd7d4ffe6b7a63f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.59.tgz", + "integrity": "sha512-E/WZ4MQiPVGNa7q9Dk2V53Y2b2inU+EqO+VAE6nhQ/vuriysHBksiNa72W6Nc7QWNtQHzbDycJlzqnjyyYQdXg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIB3PhKjGCKGZkmZKHZTpVluRSQcYP6c4swuh7etYdYzEAiAuLzEmToDKVTjqlt41KtV+roTNLGLXhwLbWpdRHdMPBw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.59.tgz_1481213994727_0.2297708890400827" + }, + "directories": {}, + "contributors": [] + }, + "0.1.60": { + "name": "types-registry", + "version": "0.1.60", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.60", + "dist": { + "shasum": "07c4dabd1977b06ad852731a33a2fbb4839aba90", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.60.tgz", + "integrity": "sha512-4CyAl7Bx1W65QUd+iYvAJCUmpfAHYsHaprI6WYM6wrveFiElYcmp/DTn1P/InsWahhcTXCpqIXkqQG6xxkC/WA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIB3t+5aWkPwYxWziaNz0Qn9oWmf+UVZ4EFlG21txbZx8AiEA5joWFZixso7qgfTjyQ23I9BwETXaVBdjW9rNuDe0UTY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.60.tgz_1481235353031_0.745983648346737" + }, + "directories": {}, + "contributors": [] + }, + "0.1.61": { + "name": "types-registry", + "version": "0.1.61", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.61", + "dist": { + "shasum": "882510534fa6f83d090e32e379885e07b17201cd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.61.tgz", + "integrity": "sha512-7FsUgETmVRH3e26XH7xZbPhNGsqnp1hxOCshI3ZQta7Qs+wmiL9jZ/6RJh7RhqIM3/SP8w409Pye2y1/3ARVfg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDh/SRp49V/qTrdztSzRKBttFeXM7pVjx/KoskgD1/fXAiAuAUdSdKh5K6kwOTzDuu9bc3D5QGOhVHeWHQCxE9v6vQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.61.tgz_1481235538065_0.2815151042304933" + }, + "directories": {}, + "contributors": [] + }, + "0.1.62": { + "name": "types-registry", + "version": "0.1.62", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.62", + "dist": { + "shasum": "1152d5acec32d2d157a359e3f6343fa18062b475", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.62.tgz", + "integrity": "sha512-P/0az4lwHzgLCnCkkx5Mu5cGbVCsd4QvCCzodi5U7T0FPsEaj2oj1TTN2VyjDzxK1MrRX3cJqcPo5zjjZU/9Vw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDOowUbFrhlqfrv34ZPaKrp8l0uYhKyVPJ7xJFBJ2EdXQIhAOGmQrB3Or+bqg+ih6tKApuhFWH+HCXbTFxxS0pqZocs" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.62.tgz_1481239912111_0.3493129229173064" + }, + "directories": {}, + "contributors": [] + }, + "0.1.63": { + "name": "types-registry", + "version": "0.1.63", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.63", + "dist": { + "shasum": "7d2346bca057b26ef15dcd2a9bf79d0ea722fd9d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.63.tgz", + "integrity": "sha512-8yK9DAhJWbMRXFpooKuzujxTeZExALbekrn3JgHVgDbXTiLUXR6xp/3EJBdDeB4q+6wjYDjM55XLmNxi4QWfLQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDfdNAEBRiABBCXI7Sxm8Zpl1/7hgCFCCpLjRthLQ/QNAIhAJzTYd5p8AG7PrYgMXH0ca6a7OUtrmFIB2gY3vA5kLVq" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.63.tgz_1481303470186_0.37555102072656155" + }, + "directories": {}, + "contributors": [] + }, + "0.1.64": { + "name": "types-registry", + "version": "0.1.64", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.64", + "dist": { + "shasum": "7e4a47d6dee4ea6066e0b2bb616392195d6ec578", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.64.tgz", + "integrity": "sha512-o8cs5fbP5N3Nn5dReWvcHMa2r7CrqS7jxIa4HtDi7yLU1QRP0KM5sRO8iBEAWprbC2nPRDl7g3W7r+mLI4Fh8Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDe2xbB/33m4PaH+CmVHV/PMZaOb9FX7bhwcGi3QMP4kQIhAPznA6Z7fQqm4GnJE4KaLs7l1njOCZi6rJ/ronkrtyh1" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.64.tgz_1481477579845_0.9306431813165545" + }, + "directories": {}, + "contributors": [] + }, + "0.1.65": { + "name": "types-registry", + "version": "0.1.65", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.65", + "dist": { + "shasum": "2ff68a2efdca57c0e9d95d05ca5bbf96d4c74d4f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.65.tgz", + "integrity": "sha512-vkgw6n41u7c/K/rlsW7fLrGDbCdBl984mccQExML6GzZEbvVqSYLy/c/XKkO2m0cZm3ZiSilo0j0TZFKGU6WZg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDqQJWiMMjDLPcZb8CVpiYIGDvgzPus9g1FlimuwEM78AiEAnCI4Aa4JVCfFmtf0v1MpiBRKW7RgdVCWRdUwz6ZhMa0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.65.tgz_1481583100733_0.8194460365921259" + }, + "directories": {}, + "contributors": [] + }, + "0.1.66": { + "name": "types-registry", + "version": "0.1.66", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.66", + "dist": { + "shasum": "b1abd809723e8ea30bfec3320e80411b583065f0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.66.tgz", + "integrity": "sha512-J+Lkd0TGQKM+XuwgwtdZ/B+Dz7UaPfQIII5LJWhSd9IcwT0Yv3wTTrlATXq+UiG0pz0npMd8XOhoi/8yTO0xsA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCcccvVWg5G5ytVJ87jN5uX4yBiqNbtSw5jLv6shLmgUQIhAJ8PNvMTiZnSAXv2JIoIh4JRBdiNeN6KDjzmCG/YEF9L" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.66.tgz_1481820800159_0.5941622226964682" + }, + "directories": {}, + "contributors": [] + }, + "0.1.67": { + "name": "types-registry", + "version": "0.1.67", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.67", + "dist": { + "shasum": "559c2ab178a5e21a1dd7829d477d6df21143c206", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.67.tgz", + "integrity": "sha512-YbgGxU437k+VS9LEgCOIpAUMfQdEHyR9RdCiki3a6saFWKIRU02/84YVOURZVroAh7NiAlDk7ylj9PLsMfEXPw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCF6CmRqQEqqAPf6eLvQjESuTXFYl+ZirC/0eaBFHb0mwIgPUflsLKN1y7rATt2vlr7c+XD4CrT4WD4SP2ghnN2OZQ=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.67.tgz_1481828655709_0.7398256338201463" + }, + "directories": {}, + "contributors": [] + }, + "0.1.68": { + "name": "types-registry", + "version": "0.1.68", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.68", + "dist": { + "shasum": "ff8596219c688465a94f83efa32e2105a5871170", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.68.tgz", + "integrity": "sha512-wzK43HfQ/H42xESL77VN5wiXTbKQkbV0zdVKU42AQ1ikiBvG+6khWO8SffDj6nwpgfYV6aKOJtNJjiAJHKLxDg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDHWdPvkOOYNG6ek+TKPOrUiQFL5RuqBh3VuiU8Jbc3XQIhAKkhXoG2EgOpuaGP113T1DgyBBXD/N/BY2HyhMrVTyIz" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.68.tgz_1481833977095_0.3840383018832654" + }, + "directories": {}, + "contributors": [] + }, + "0.1.69": { + "name": "types-registry", + "version": "0.1.69", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.69", + "dist": { + "shasum": "4b672e2073ffe75af5ae9348bcb2a69f1fdc361d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.69.tgz", + "integrity": "sha512-0AqLx4kPtMJxD7OreQ2jR3aXQYhVaUQ1C5NWVtxX8IcKoi9oyFx3lsjNicTMJ8Ji8rUr7rl9iRQjeGxvvFFI+w==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDOwRnEPruSa5EQPQKzzoZtCllb0uN9DWZMIN8vAOtz+QIgNgcQirnlwXMp5CuJEBjSwIF2qmRguvU8RLRSLZjSabg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.69.tgz_1481905549690_0.3349931105040014" + }, + "directories": {}, + "contributors": [] + }, + "0.1.70": { + "name": "types-registry", + "version": "0.1.70", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.70", + "dist": { + "shasum": "717885a9f192d33c5a86886a6d9846bfeb14a3c2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.70.tgz", + "integrity": "sha512-GpgfZzcgOFxofD4bTfvjYC+HdaQrMDFUeRBBxH/pxUb72kb+17aaWjPmmBQgwIxMofw5Yk4/XKX1e9BHlNFERA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDUbpBBarCJL47EmbKxX0I5JDK/npdh6TJMTORU+M0QRAIhAJtkNwfNGBDTeYBBzGXZe8SL5sup9o3DXZZmt4yihNni" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.70.tgz_1481944229502_0.49454326648265123" + }, + "directories": {}, + "contributors": [] + }, + "0.1.71": { + "name": "types-registry", + "version": "0.1.71", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.71", + "dist": { + "shasum": "d49db1a9b7ada82e9375ffefeb6f1ed546f1c1db", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.71.tgz", + "integrity": "sha512-/FqliFWYkzqosAs934HBcZ4lqpmdLfmNJ4lkBgOLuuLs+4qHPwYG404zp3HUFwy78on9O6lZTnrLHuyMglgphg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCFK344e9JKcKL7y3VqKcAiC1jeIAk4ixjMhNV94SnMXwIgUNEgh9bkHkKjMjyx4LjeTOhJGkMURsrwfHhI6h7dEYA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.71.tgz_1482159594328_0.9254342298954725" + }, + "directories": {}, + "contributors": [] + }, + "0.1.72": { + "name": "types-registry", + "version": "0.1.72", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.72", + "dist": { + "shasum": "36af228dfc9155c4663042ca1bd95cbfb242dec5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.72.tgz", + "integrity": "sha512-/Y9Zab8jkh5SoS1ZeKpxbTjnCpDHyDNY+Yplfm6ff28oizJdVIf0Teic447stSSTjw/DoN3AXq/BWX2gkDEAvw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHQd6219iVhPEjKfaWxPV8UfQhk5HsXjST5LktwaMdjJAiBq2R94A+kq0FC9iRRhAUV0CDVyQwLUYlS7SP1lHvJ/Tw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.72.tgz_1482160434460_0.11234249197877944" + }, + "directories": {}, + "contributors": [] + }, + "0.1.73": { + "name": "types-registry", + "version": "0.1.73", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.73", + "dist": { + "shasum": "3f7296da3cb4dd773147f6e5e899e20c70a7f6e6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.73.tgz", + "integrity": "sha512-y1zDq/FC3govZQDzLH1/b1PenRYXfEbw5jlDlfUk6d+oItqo6XodFDwZgSykn6vgyQUt2L1CRKRW2pSZPJUEOg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHD41B35DqK1mlEKQ4DJ4I+dUtUqf2B1ZRMfycrQkYoqAiEAngibcCDDoMl+asjBC7mXD/6lLcGssTOqtRoAdAXvqeg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.73.tgz_1482187007341_0.2121784531045705" + }, + "directories": {}, + "contributors": [] + }, + "0.1.74": { + "name": "types-registry", + "version": "0.1.74", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.74", + "dist": { + "shasum": "e2f361f94c57d35a2215185944d528ef806608a2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.74.tgz", + "integrity": "sha512-EKPsBMLXSWL/86qSSWbvx40RdZlWOYKPo/am4Zdv0O87S9pVf4QX5wPCQJtHUFbVF/o745Ceha0+39bIvt8qHA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQChPkXM/41G2hhMvI2cAuHqVw7bOHruo30BuivY357eNQIhAOZlFLmqXTbyjnVXCWyOJ34h+MY5k9WBo0IdWnnHRiDx" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.74.tgz_1482235908032_0.9047458569984883" + }, + "directories": {}, + "contributors": [] + }, + "0.1.75": { + "name": "types-registry", + "version": "0.1.75", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.75", + "dist": { + "shasum": "4e7b746ca6712baca10c6775b5efe40e271dd58c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.75.tgz", + "integrity": "sha512-XSh4Fa4y5qiVB0/RAVNfFmOuBM4olmVQ9XmsRK3wxcXbIcGWtwZe80jckJAv8Flk65Bm4ffH+CWaC+I+P+Iz8g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEW29qWH5UDH3VMp1B4nOj4M0LRqpF3cwY3Yxv7V+g6qAiEA+VjLax1+K8f5dOP0JHVLIMYrtoZH6RFXHgNZxKGmeKU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.75.tgz_1482243005806_0.11152671976014972" + }, + "directories": {}, + "contributors": [] + }, + "0.1.76": { + "name": "types-registry", + "version": "0.1.76", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.76", + "dist": { + "shasum": "51795fa12331a01fd544955abe802ba6b0d20864", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.76.tgz", + "integrity": "sha512-chngVr7EGoDD80O2tQ0QOnNyWTDxb4jY4h28kQm0sJWS0+rQk98EdLwl32+qkSaQsdlVjZfpOZ5D3UyhxwX2KQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCg3QzpLfSBLZm1rn4yA+8QiT/wi+ZGd+y+gSicOacpbwIhAPhmKwR14jfjWE9YkLHImvpg9cvGpu27m/amXJwHD1GV" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.76.tgz_1482243683822_0.6399715496227145" + }, + "directories": {}, + "contributors": [] + }, + "0.1.77": { + "name": "types-registry", + "version": "0.1.77", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.77", + "dist": { + "shasum": "4604038ae24254459ea88ee4f1bcaac1b44d3bfb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.77.tgz", + "integrity": "sha512-Eisw2bKqdLxIMmNstTOt8c+taqJtT/977mVHh9myYhkUZPYroEUBFhOCOENvxnAlOcwQUXURVej1ncRaqyKXgg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDKz7jAZe13qgfXStc0fQSQJA/AKDHzBoJ4nZjqaEIaxAiEAmT44JFLHCAg4/vxsJOV0vL4pyOuRq/Dev3BXclhkWwc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.77.tgz_1482262724785_0.9841413209214807" + }, + "directories": {}, + "contributors": [] + }, + "0.1.78": { + "name": "types-registry", + "version": "0.1.78", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.78", + "dist": { + "shasum": "45cd32534e4429b52d0a0ab8d9ec8f98270d27c6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.78.tgz", + "integrity": "sha512-a0tZ+sufnyVy/lvj/6+48Cah36rplj3i4YPZvBeeuvH8Gu6G4cZ/3cAG25LydCnLu1Mc7VE5S3oPaelpCREOng==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAzEBCRCvPWMPOHpP6f28XaMCHsQ4LJE3dU06smMtgyPAiEAmNTOK84ZoK28VkcCK0TEixte4htknMIak5O66IxWvHc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.78.tgz_1482502606246_0.648517755093053" + }, + "directories": {}, + "contributors": [] + }, + "0.1.79": { + "name": "types-registry", + "version": "0.1.79", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.79", + "dist": { + "shasum": "3c81fe6126818032a820af3ea33942813a58f42d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.79.tgz", + "integrity": "sha512-SqVVTmpbDtAdoKWosccimj4OYARJFFOZ0//kopU5KwN0x5+u2ZPi/ixH/4zm5AtWGEYk//kMWAbMHz4heyGxZA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIH1vQQ4i29b1XcuynUSzVzWtZkdXL4cBUoUrEyWxDox2AiEAvv8ozm3XtGYz1FgqO+4BWJWDOi9z+ZJ5CCEsWNu68sc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.79.tgz_1482614157354_0.26821903116069734" + }, + "directories": {}, + "contributors": [] + }, + "0.1.80": { + "name": "types-registry", + "version": "0.1.80", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.80", + "dist": { + "shasum": "ccce73a0570042b447403107514058f9919659b0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.80.tgz", + "integrity": "sha512-l2s/wK02twd5eeFBa/sBn+HE0rcbV5qZ1wq0OxTodjMGXqld1UzAwn1mQuuKtIP8+D3mW17jGIuXRxHnnSgBCQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCyPH+sMFGOGoMsaVbMCpfNQt8NajvlxCHem5Ovd4aB7AIhAOZHq19kGY4/i8/gqKaE+X6m4mnv0FsWRThV+bxnlw16" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.80.tgz_1482678155553_0.2884897196199745" + }, + "directories": {}, + "contributors": [] + }, + "0.1.81": { + "name": "types-registry", + "version": "0.1.81", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.81", + "dist": { + "shasum": "a9399c514aae052ca1d356c231a8fb135410c37a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.81.tgz", + "integrity": "sha512-hvw3yePy5jTeWteI9pU6K1JVXH3CVGG/q/UeB6xtqkK/+MIJbal0T8IAX7+rCVPX2REspvnEn/5k1N3Iw/k+Iw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD5ome6mdP6tL1EgLff2GLDWQUumsHElbVs1RD24YiyhgIgeVHHUHFhfMyIPQVO73QFSFAbgipb7863wI+Dg8Rsqdo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.81.tgz_1482817996773_0.20134487538598478" + }, + "directories": {}, + "contributors": [] + }, + "0.1.82": { + "name": "types-registry", + "version": "0.1.82", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.82", + "dist": { + "shasum": "6c6418ca25dfa7470ab958ae0bbd88b255501ed3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.82.tgz", + "integrity": "sha512-AMH7iWWnMdZXbNQjtB0RDx3kCQZXTpuPZIs4ns8xrRaQZfJm2g16UJ2hcCqwAObF7ZUOB/38fO1uJJ6Neyiz/Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIENtz9DIHeNXRzdA8SWC+oH/V+YyhjZTOqcSxo1LuPwUAiEA9Z7iUbEUZrF8SlPJ+qn/bxwSC98zkdsRYdXtl3hp+YI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.82.tgz_1482873480415_0.6848506883252412" + }, + "directories": {}, + "contributors": [] + }, + "0.1.83": { + "name": "types-registry", + "version": "0.1.83", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.83", + "dist": { + "shasum": "e3dd0ec47e127a15a1e6ea17d38b8acd3c3d40a1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.83.tgz", + "integrity": "sha512-bmbBq2yK6wF3dqfye99PRGXcn2LZF9S7E4NzkmMBOaedVPGapEfvhspzUoAaDsiZxlxvBG3b1gcSjSyWDi54tg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDbBVi4vaYbs8KWQojoxA/viWzro2jMZ5BPuqfv2xaL4wIhAJyOgpEjPJQWe5D+ZLO4GzIryRFlXEu+iypR/78kZDty" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.83.tgz_1482888148113_0.21331308293156326" + }, + "directories": {}, + "contributors": [] + }, + "0.1.84": { + "name": "types-registry", + "version": "0.1.84", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.84", + "dist": { + "shasum": "33c491a90c3cf7da2f5a7a0acfa6e8d9af083bca", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.84.tgz", + "integrity": "sha512-8bPUOUbD+aa8xqC4n+50z+GDYCjPcNmmI+9wzS7jkV6MrvuJc64ZaX7825RSLeralsBVlXKiwQrRYVlWOoPbvg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD8O9wzfdlVKi3tPqZUFXkysSa5IMJ5aENAAV7m8ZlKHgIhAIxO+IL4CAIuEMlehFIMHe++t2LDbe1nQXP8BJvXiip6" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.84.tgz_1482896179928_0.9778410736471415" + }, + "directories": {}, + "contributors": [] + }, + "0.1.85": { + "name": "types-registry", + "version": "0.1.85", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.85", + "dist": { + "shasum": "f3e4ea5677a402e42a7274a1893b989d78585179", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.85.tgz", + "integrity": "sha512-HE9mVMKF2eOFIPMLM6Hi3UCWZKPRp/KU14ez/4lH5KXxgdSYvae/DgKpPxmhkyRx2Q1k2DCOmmZTGuBT+DnwGA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEAM2FK+83HPQOW+ZK8d3w46HY5gxJFTF3j2mc9TpDUbAiAh7UqVSxhxLEF4TOzuYL/s4AvETVVUEwIIhnw7pQgi1g==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.85.tgz_1482934129411_0.6428402808960527" + }, + "directories": {}, + "contributors": [] + }, + "0.1.86": { + "name": "types-registry", + "version": "0.1.86", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.86", + "dist": { + "shasum": "01c9a18d2a9beec15ad97b882ba4ce3f1a58330d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.86.tgz", + "integrity": "sha512-kZlEaw/h6uuzHDyPbgc6u9manpX9f94BOyndsZD6gWGCyDOATiZPoPOdknlYLDT0ZeN3AYZsnhCr+bOQdgM+Zg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCW5p2ZWlADDaGfXLScvJRETcJzESO1612WZuiX4ekPwgIhAMwZoaBQbJbzXOjIx6LhDNhZo5jld38gASOCJF7FWyOy" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.86.tgz_1483053252343_0.4146701900754124" + }, + "directories": {}, + "contributors": [] + }, + "0.1.87": { + "name": "types-registry", + "version": "0.1.87", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.87", + "dist": { + "shasum": "cab69b15f661237cb089c4a8a7cb902cc9ffe9bf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.87.tgz", + "integrity": "sha512-uY0DOOCYYIkM43ZPhZgM76xFbV6/FRlldmJe16Li6av0EBGZLe2Ol58EgIJFcxZjKrZBs0cvgQpuujQa1O04kw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC+KMLoTssimd+JhmZQaz7DrsUStxKyup7O/37nbySa1wIgNJAN2nVUyNBWvdv+7TsWQtXlFfwnZiRp7iGMiQoMUF8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.87.tgz_1483058528359_0.1933013773523271" + }, + "directories": {}, + "contributors": [] + }, + "0.1.88": { + "name": "types-registry", + "version": "0.1.88", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.88", + "dist": { + "shasum": "a2fe62b00a715a7dd7b81e64b9dfab3a9122bc7c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.88.tgz", + "integrity": "sha512-77LQb2EuFqbNBj07AXPYkYWWL+T2Ng20UYB5JXjbAW64deYu/r83P9oCjaEJyqQSBezI1KHpb8gd2F78F91JMw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEsrIgDHUdxMW1NjBAKczaHnofxYoZFN/VqgpR5FCgx8AiBdY6Xwd4t9mIBUaer3Sl/9h6cDwoi5irmqBtrbNDLMaA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.88.tgz_1483119924691_0.5529304903466254" + }, + "directories": {}, + "contributors": [] + }, + "0.1.89": { + "name": "types-registry", + "version": "0.1.89", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.89", + "dist": { + "shasum": "072774a499602706cc517e594d2f17614ebd2fce", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.89.tgz", + "integrity": "sha512-PAXjkktLWloIUM1/5j8W7N61MCcyv2Da8QALGtusErpghn/IkUHgdhnAhGJs3oAG6dHEP7esFa0P4UrUZZx3Ew==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC28JJNvjqlNJ5lOKAuJlo2oLnSMG/rwAob/qPiqSyPowIgJrjfBYd+3FxrbE6BCrNpNMWiFjH0yVCfgS80FocRfaY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.89.tgz_1483223892754_0.2280204351991415" + }, + "directories": {}, + "contributors": [] + }, + "0.1.90": { + "name": "types-registry", + "version": "0.1.90", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.90", + "dist": { + "shasum": "d7b6f76452e4b2c26e0e47a414322a7de105edab", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.90.tgz", + "integrity": "sha512-sI9u6saMwO6OAxbkN+7jKyTkk+Jr5YP7pk/ta35OrjwtN2SpbZU6UjCCitxdrhEHQpmQqJn8TQV9Q6sk0cUfjw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHgjO7bO9b9xiVvFq2AD/ItAJp+om59I1bqu+9vb3LAhAiEAkEho91xoPFa4cdpPYppac9JFqbIUB9n3hgKyOAITvkE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.90.tgz_1483337080707_0.19127770676277578" + }, + "directories": {}, + "contributors": [] + }, + "0.1.91": { + "name": "types-registry", + "version": "0.1.91", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.91", + "dist": { + "shasum": "7fdb47fd198d73b5993d359b5cf83742d50078be", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.91.tgz", + "integrity": "sha512-wzAcWXhxlnWjL0emcFPIzoLxTJIygKZs0Y/OjNMfCmxgFdfHXXf3e576ZfSP7qntlFTWvHRmmpl6ISzLmOEsEg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFOCyL/YEY+WE7djbF9U1BzmjjH8NDX6a0a/yYlnkHzRAiEAvBl8gcrCucp65tF6mbTC4E/mRQaHmvS9e745Vd8BZEU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.91.tgz_1483339045392_0.8728981425520033" + }, + "directories": {}, + "contributors": [] + }, + "0.1.92": { + "name": "types-registry", + "version": "0.1.92", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.92", + "dist": { + "shasum": "d8f38a54455aaef0781a1766b28ca150e6771382", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.92.tgz", + "integrity": "sha512-kDsfIDJziif8V8PiJvI3wwW3i13p09RQ6vTmnKIm1YGIHMeqIc3oKB3dGptptEYLhZCi9/weWsX1PYsAoeua2Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFh5LkhPovyBk/LgbEkMuysB2yF/eRcDKnM/6NjKFV3fAiEA0KFJGbJzzSuXRIF0X36kY6uG8pJC9so5iYQPKNN2On4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.92.tgz_1483380585918_0.6159550624433905" + }, + "directories": {}, + "contributors": [] + }, + "0.1.93": { + "name": "types-registry", + "version": "0.1.93", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.93", + "dist": { + "shasum": "8ead6659a0a28eba88f44e5b2df8b348a2821151", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.93.tgz", + "integrity": "sha512-DoQ7mzbRFIRLiGL09l3nR5afy9EO37izIXko9pAQSGoTuwmnlloqZE08T4AyBQYKE5QCBMZNx6ua6AOuX4YMqQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIB+z9dukiWhpk6f1SbghhnGWjoYo0SvvS+fnxbRJULt9AiEA21mLI+gxCNCYwqgdvfrxmItxRJc3d4luZF9kiINDRjI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.93.tgz_1483398659813_0.9113002172671258" + }, + "directories": {}, + "contributors": [] + }, + "0.1.94": { + "name": "types-registry", + "version": "0.1.94", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.94", + "dist": { + "shasum": "5620a83a458c9a2cb2e2333390e80fd4238c5c5c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.94.tgz", + "integrity": "sha512-XgHnz0f9WL7JMONYmIv1ujxelz3E7aJ4duBye+ZRWJkoiUgKPWRdgmbo8qhmCUOGRtLZd3r8iwbKL+RslQlZyg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCv0VtcY0O8z19x0OAgK3ncjr9aie85e5iH3P1f+awvCAIhANrHvPnsdgxsFgysJAwmxOgWdtG6Ou6PTYr8QmGippyI" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.94.tgz_1483405753794_0.07908235490322113" + }, + "directories": {}, + "contributors": [] + }, + "0.1.95": { + "name": "types-registry", + "version": "0.1.95", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.95", + "dist": { + "shasum": "b8fbfdfb9b56124baf644cd8991258a20021f7d4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.95.tgz", + "integrity": "sha512-C+sCjSgbd0hrjES2kmE2QjvllRwJblqHjWMGL+mMppaNKSvxxTjmdz7XZqByWVRCgZuEQmNXtQy9nsBo3lvaXg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDpOgn2oJDdHKJI29MpEHOlMqflf8oXwGI3BEwN7woM3wIgNk7zZSsGOJx7H8EePlEkaWkO/mipoBRRcQO+w2BqaNE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.95.tgz_1483454123778_0.5386005190666765" + }, + "directories": {}, + "contributors": [] + }, + "0.1.96": { + "name": "types-registry", + "version": "0.1.96", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.96", + "dist": { + "shasum": "269dbf9bdf6ec82db506a3aec66321452ec602a8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.96.tgz", + "integrity": "sha512-M90K5412Dz7NMp0dcDoiRKMXVkHYjpJnMDwHH+KM3HD4nNb62Gy2b/Pd5Ibgv0ppJLnHTf9XGy5cIMDsI0UQMQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCztb+fApId4aTs0hYyT2N+NgCsWCaB6KL6H/i8787awgIgQrBccUolDpjyj/qFRtv+aLWVsmxsOhYXij502saUDJo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.96.tgz_1483454915892_0.44944828283041716" + }, + "directories": {}, + "contributors": [] + }, + "0.1.97": { + "name": "types-registry", + "version": "0.1.97", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.97", + "dist": { + "shasum": "0f9b8773190c6d70da1ac885a2b71860edf4149b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.97.tgz", + "integrity": "sha512-8kKSug2cxsJbkO7kyfLwzHzjQK59iY9H5FhcwFC3zZ+IJ+xa1qNlGgeJ9scaeyy7Y/wZX/6OVS57Ros06/jGPg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCGNtGEOYSBACE9mOrQt8+ZdXxEdo5a3J9orV/KgC3DiAIhAIEVStOs2rMs88uqvW/H/heBri952ZuY/jRtdkrW9jZj" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.97.tgz_1483455688321_0.08711561560630798" + }, + "directories": {}, + "contributors": [] + }, + "0.1.98": { + "name": "types-registry", + "version": "0.1.98", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.98", + "dist": { + "shasum": "66a5ce42f22c7a150cad80faa0bdfd23604ccb6d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.98.tgz", + "integrity": "sha512-awk3Gm5UXmM0uwBWlR2BzcR22dKS3z2aiOf96jz0YwP/882Li8A+p7c+aSjRCN8g9JVA1U6bRKbKAU68tTufdA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDvstdvln2JhGAVZO3O+sRzREfkok9QWbb5tcb7s9DdmQIgD5P7reRFjOfKWbaddG+1A/PjI7JYBDQFBE/BkXThGP8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.98.tgz_1483477775151_0.507910383399576" + }, + "directories": {}, + "contributors": [] + }, + "0.1.99": { + "name": "types-registry", + "version": "0.1.99", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.99", + "dist": { + "shasum": "f8abf464eeb68ef28f04039066cb64354cdda211", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.99.tgz", + "integrity": "sha512-lk62FtNeeMhbtazK/HUybDrmo+6Le+lk42tzHwowiZu799tY79UamG8ok7Usrn66p284teVm9mxByKkzsoIlVw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCKPUWzcrricOznnPkPafZSxHHwNLOkHDqEWqshXb1BnwIhAMtOcOfIXtxbvtGEm0fXkUJWnuR3Dg3bXOzroRa/c/g9" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.99.tgz_1483477986504_0.5500520977657288" + }, + "directories": {}, + "contributors": [] + }, + "0.1.100": { + "name": "types-registry", + "version": "0.1.100", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.100", + "dist": { + "shasum": "c121ae2afabafe0065345a06bcfce1365d61c12f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.100.tgz", + "integrity": "sha512-oiLvk0YLBzdDGSFz/6oM2pK/wVup9AJw1GcoTMUvghM846b7B1Yux/ZxMR4CzdBUIVPz7/3CgUZfQzlrjmd7qA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIH2OF1OVbBfuXa1KxXOcnyRCUTOg0y4+PQCPGMT6eMO3AiEApMf5jZY/Y+fVVFMtqXOnVPpqDFMN/dLvnU42jpMGhys=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.100.tgz_1483540614514_0.43320672679692507" + }, + "directories": {}, + "contributors": [] + }, + "0.1.101": { + "name": "types-registry", + "version": "0.1.101", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.101", + "dist": { + "shasum": "a59b8d0d154d73893137c2ea892275a970323548", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.101.tgz", + "integrity": "sha512-aF7t8LnEON/0mTvLrnhdZ5aNUG8fx0+RogrGdbwCKHN9f6Qo5HnU7ePKbfCr2svE3kPAL7OfYV8TNaDftDr35A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDbfsur4F1Wuv6xwecHjz46cxZ+hiq6hhSFmyFCftXHEAiEA48O/2dqigH32q/W1Q59vVrOZ+xO6+JFA5tyK4zw1g0k=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.101.tgz_1483560689614_0.32754180091433227" + }, + "directories": {}, + "contributors": [] + }, + "0.1.102": { + "name": "types-registry", + "version": "0.1.102", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.102", + "dist": { + "shasum": "01853b6207f2308093d0ef5ea07367d73c83afdd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.102.tgz", + "integrity": "sha512-oiqX/O1FbtefsLlsUkWKRB7QjpY2jRcJNVcyfDq6o5gbrAthYZTpVSk1y971f/cKqJHbOOwsfRxyO5jaucXGOw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAgXxzOV/E76DsuJpLstuZYxhUXU7iT+9rf9lLu09wNHAiBY9X/QcubBGoK+wql2kkKxZPgYgyqxqfx+iZj3+XGGhA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.102.tgz_1483569412702_0.5276120356284082" + }, + "directories": {}, + "contributors": [] + }, + "0.1.103": { + "name": "types-registry", + "version": "0.1.103", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.103", + "dist": { + "shasum": "e77541f4cbadb8610ba2fc762e4df0520e93e96c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.103.tgz", + "integrity": "sha512-n5X9TrapnNhtkW7lT8guy8JQg1tj27UiJd9Wf+7O+1at8qQuVtgjDj0aPzE4yblmQu9pNAOtHhdeXeUdcL16qg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC8ECJNRN1kzLTLI0lUsclHnh83mDoFyBfcMEr70FO7fAIgK8QK0bFOfUk21EGaBqWUs9uAmpWfr+WXunvNDKyoZ6M=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.103.tgz_1483575796683_0.617237526923418" + }, + "directories": {}, + "contributors": [] + }, + "0.1.104": { + "name": "types-registry", + "version": "0.1.104", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.104", + "dist": { + "shasum": "0c3e1451533585c7556bfebb7ddf655681edac3f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.104.tgz", + "integrity": "sha512-m9GF+YJLfaBZf8PoRLZIFuwAPzaGYto00OPjIWa7DEXPsgOWfz1gNOqbVCZf+0H6sik29UXbafduBNimV+7KFA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDjcZadgHFeAIvLURVG4SDZdH6RCscT7Dhaoo6is5LbYQIgSi81mUMhRwtxHcafEPeHVqlsOYXxWAL0zS+KCNnA4/o=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.104.tgz_1483586183604_0.756333717610687" + }, + "directories": {}, + "contributors": [] + }, + "0.1.105": { + "name": "types-registry", + "version": "0.1.105", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.105", + "dist": { + "shasum": "cd935213854473a01f51a02ec779f27bd0a866fb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.105.tgz", + "integrity": "sha512-iac32JMgs8ZkE//0iBBPhDmOwfFB68KdXMBN4hk4Myr/3Y9c2AIK1LzrEjzbIlQjMqquVu1wY08jZIWIycFZqg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICoezc6VPnhTcWUHefVc64fyom7auNcxxpvMMMbK/7bcAiEAz69CPZJXO+HpxnIdGU/UB+H8iWjWrsOP3DMH+lU1rlg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.105.tgz_1483634331153_0.2038703199941665" + }, + "directories": {}, + "contributors": [] + }, + "0.1.106": { + "name": "types-registry", + "version": "0.1.106", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.106", + "dist": { + "shasum": "5a4011f7c3c39659d24efece07b0edeea05f8e53", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.106.tgz", + "integrity": "sha512-TasoJo5kZY4e0VfGZTnQdrX4+KtBBbmDR8TbZRVQERZ3jkemByV+nwO3Ok4Hu/k4+tc6P0RS6pqTXfptQB4srg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE3YQNMCWMXgy4OyT5hKJlGHK6WzcCgu+5Rkts3+3nAQAiAT86j+DrmFtiW+T8B2vCxPyho+tLxF3FjvXXHnjzk2Og==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.106.tgz_1483637376836_0.7731161883566529" + }, + "directories": {}, + "contributors": [] + }, + "0.1.107": { + "name": "types-registry", + "version": "0.1.107", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.107", + "dist": { + "shasum": "fa621f852106b5e701193bf521bef51fe1b226b8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.107.tgz", + "integrity": "sha512-IXVRpe6J+KFgXbfFNPpE62bFCwvjYluAmyjRd/81/ev4ExGKgYyFzY+vOMHfDRLz0064l4K2iCQmfAQAaABq1w==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCqhHQ3YCSmbkeLN05lDMCRg63BNV29/3j83bp31vO6vgIhAJexv8asnOvnq7E8u2sMCozHC27DRrVNIzhFOOgdZ0BJ" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.107.tgz_1483643735597_0.9415723527781665" + }, + "directories": {}, + "contributors": [] + }, + "0.1.108": { + "name": "types-registry", + "version": "0.1.108", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.108", + "dist": { + "shasum": "1261157df981ac918b78acc89587afc9745c1984", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.108.tgz", + "integrity": "sha512-WpgCXOMO8SDPjZNu+GAncVSyo0MUuyLknX/qHgTJWZUUwWVIu8M20n2c1zd2tCB+DYC+jtp9I1FgwRp7Ah2+wQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCk0pyq2+5ghPKMvwQYA9wHAK5Z5vXh1QyB5qA0FH+CvgIhAKhdcI2bf96I5nnwL/dpyjeS+QoGW71tQBTtXdkKypLJ" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.108.tgz_1483648875606_0.2515000670682639" + }, + "directories": {}, + "contributors": [] + }, + "0.1.109": { + "name": "types-registry", + "version": "0.1.109", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.109", + "dist": { + "shasum": "c75775b35e71d7d174ce831489e580fada4f5445", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.109.tgz", + "integrity": "sha512-0rzy2voWZRVtOOXbfMX1YCrU6Q3gNP0ZM2OAI6LKBkDiBTEURWHS5I7wrFyH+uX2sahKeb07SbLjgSWq9bNu4g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFMKqXWSJOnJ2KIlZiyfOHv/c3UgYmm0JGrK4fm2RQXxAiEAtAiy5IqVbW70bioqgkq2XJsQgPc+bnZov1nVAZrk8mo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.109.tgz_1483656557943_0.810173116857186" + }, + "directories": {}, + "contributors": [] + }, + "0.1.110": { + "name": "types-registry", + "version": "0.1.110", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.110", + "dist": { + "shasum": "de38f8b1b83d1c69473826b3fa773ff3465ec280", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.110.tgz", + "integrity": "sha512-M+0FNuLPM/JC5SHqlYd5tJSOpBeH/Dm6wcUW2pabtOBnBak2U+qGhYFCQjiJbn/Zu4ay2in8Yg7WBRxH1WnJQA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCFldsP5/BUzI6TK3WIopZtoFnARUO4J7OO9vbgdE8m3QIhAITvSN0ltGGSpC8RCk0JAnboXCy3yAVdVTTSmc14iaLh" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.110.tgz_1483712756532_0.7736259445082396" + }, + "directories": {}, + "contributors": [] + }, + "0.1.111": { + "name": "types-registry", + "version": "0.1.111", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.111", + "dist": { + "shasum": "cfca8a9139a34e79201df1ff022fec69852d5ebb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.111.tgz", + "integrity": "sha512-J9ygWvcYJ7HsAyixMEbboQX2a9LV/YaRJ4AHKjrxoM56t860fViC/kvsNxencC2CGiQH2Pa5atYty8Ery8wylw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCsifHmmqPf12vFpebQo6i0COVGSqKFHtUdXte2DsscAAIgapxp02U94GHWF6nCO5EO6XUMBpGNgzog52oO5wR2X1s=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.111.tgz_1483713028298_0.9316183396149427" + }, + "directories": {}, + "contributors": [] + }, + "0.1.112": { + "name": "types-registry", + "version": "0.1.112", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.112", + "dist": { + "shasum": "215026ac8bca2dc266bc5e977490308eb064c3f5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.112.tgz", + "integrity": "sha512-fOCCoG+pp3xuo3VK8pM/HY/pzrpaTPJ/1d2FI9CaCH0BLANS58Zj3aTRx4U8M4ISJ7hZ/yvvbX1ao5qTcAl3sA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCMnnAXTAKjaB3IeHpvlgMgSz8pZEJ2faSO765gEHLZWAIhAOFcDDO/xaRTjjPUF57mo71gP7JHRYW6ZE4kt1re7y1i" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.112.tgz_1483720588795_0.10626220284029841" + }, + "directories": {}, + "contributors": [] + }, + "0.1.113": { + "name": "types-registry", + "version": "0.1.113", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.113", + "dist": { + "shasum": "c52754150956276f33a82f557eb4fb26027c049f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.113.tgz", + "integrity": "sha512-Q/Hs0uZE/1FMWVvXDAqMbPJ4d3ilu7q1eNvP/DIsFjSd1rI55mbdtZPGZ1BfgStqDmkxqnCM1rxATchIjUc+QA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIH0iZ35i1cGtevjyWu4zX+pi+SBnZxpTJYr6lx5PxMjPAiBiogMdj1b+IdXms++9Jb/WSpRJupzcnl+M/AizXVy4nA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.113.tgz_1483721853075_0.10489477613009512" + }, + "directories": {}, + "contributors": [] + }, + "0.1.114": { + "name": "types-registry", + "version": "0.1.114", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.114", + "dist": { + "shasum": "ca7da8c35ebc558133bac9a2d8d6a744f976d4dc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.114.tgz", + "integrity": "sha512-10uqnhIIAVjgn5l7QpnbeCHAwgsyCHV7+ETdWc2p3TdCaZgVQ5LCyvKZE8VJYclFQyHzCbsejOY/oyL61atMAA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIArSgSfINSAW7IMUyrma/Zi7Uo/F+vJv/NuQ4cnkbrQzAiEAoyqEJJhiSO3iUS42BvNd2o0DJHbY8KQKnlFNGbzfpdU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.114.tgz_1483727168726_0.7558421166613698" + }, + "directories": {}, + "contributors": [] + }, + "0.1.115": { + "name": "types-registry", + "version": "0.1.115", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.115", + "dist": { + "shasum": "212e33f9e98140b84725736527911fbd7a3e01b5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.115.tgz", + "integrity": "sha512-t5HS6P6hdj3isqx+QFbL+NnDmKv1JD5j8qwq0rpwGj2pPxsqdbHQvZNLWYMYdbifoFtdsycEvqN06mMoJnN6fQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDf5DXaTzCkzHIkXT/3igtyQYxaYR2/Ufek6yX+izQaTgIhAP7wItyy/NejYBBSc7uNKcx/ICRDMPXMjc0923EDti1q" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.115.tgz_1483752534932_0.4088886482641101" + }, + "directories": {}, + "contributors": [] + }, + "0.1.116": { + "name": "types-registry", + "version": "0.1.116", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.116", + "dist": { + "shasum": "bceda1ed65cfd97892b517becff0cd79292d6154", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.116.tgz", + "integrity": "sha512-GGy/wB5qCzpEBUBb8N5YiuOBND2Lj8FBl4KEmA2PiMb7EMwPQBH98h5K5McY2GYabyLyqfPWE5w/VCPzGTdiXQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGvbIAoP2vA7veEgq8BSONs0JYh4Nao2wDIYtMJouQh1AiEAl7qW6UmqdQSvz3BC8KiBO1h8dr/fvf9p5z3VCkCtWC8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.116.tgz_1483752807936_0.7595702749677002" + }, + "directories": {}, + "contributors": [] + }, + "0.1.117": { + "name": "types-registry", + "version": "0.1.117", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.117", + "dist": { + "shasum": "587b78c372be19c6a3639a8ec5b94c05d29bd8ec", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.117.tgz", + "integrity": "sha512-24IKXBDRcW/e/+ErVeMkv18Nc2+YCpflJzDSoSF73mPy7ZQIcGiL4IBNA2Awh2uza8A6dMsaDzUOKQfOhZSMWA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCLf3Z5l9kB4jpKN14lSBY1u0VNbiiTHe9kvjw/nE3fIwIhAMtqMMK/udZwtq/1du7ZGfdcVHMWnd7D2Q4aemBhmDsk" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.117.tgz_1483819754053_0.8082983465865254" + }, + "directories": {}, + "contributors": [] + }, + "0.1.118": { + "name": "types-registry", + "version": "0.1.118", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.118", + "dist": { + "shasum": "8ae058d988807b3a7f3b7b4c062fbefdd3e2a1db", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.118.tgz", + "integrity": "sha512-UKzk8ap7GWBdpz0tCc40b83q84+4qFctAlySK4PkQOcEIo9p9PN+nH4JLW8uHRU24aO9zr5ikbGBKpg+hBBqRg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEaHqihBVrwXxD8pmPh3MKwwoXxSWmUmuNW9yGpvwWguAiBeS8cYR5RZnfa+fpas07wv+E+7NRifUg+4YfHgj+keuA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.118.tgz_1483925494046_0.3480991537217051" + }, + "directories": {}, + "contributors": [] + }, + "0.1.119": { + "name": "types-registry", + "version": "0.1.119", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.119", + "dist": { + "shasum": "13d18978bb25809920db9692c2bc9e49c375c4a3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.119.tgz", + "integrity": "sha512-bFgaPM7DoSvSyi1rGP0jdra3vv1PuXMYochEq0kdO+8wtAVfmM58n7vxGRSSjdhcxfCzAd83wIVa+S/yak4xfA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHlPIhYi6XLT8jXqfwKTZsH5AcCvOZX3z1uPRsssaPz6AiB1bdWXpQ8ljpLGCZYVZ+cOrTg6ZYkVavVj80Z72xjhNA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.119.tgz_1483926496246_0.10725456918589771" + }, + "directories": {}, + "contributors": [] + }, + "0.1.120": { + "name": "types-registry", + "version": "0.1.120", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.120", + "dist": { + "shasum": "4b93344c3b93be244a451a3b64003abab10e1b72", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.120.tgz", + "integrity": "sha512-Y38lIOVIwJNoc4x61ugHK6clkjvhnCCwJ8Zc33DcaS++UvVD9vG0KBCQ5mwsCc11V7Fz7hNp2Dbl63nG25DwLg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAux4k1fH4/L7QwE8f39d+JihBBsIkqyvCenSz3e03BKAiEAk1nFhiBqb6lmeArnwILLpCy5q0uKJpxbpRmjg6b69ug=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.120.tgz_1483975336870_0.3276192802004516" + }, + "directories": {}, + "contributors": [] + }, + "0.1.121": { + "name": "types-registry", + "version": "0.1.121", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.121", + "dist": { + "shasum": "40334d786eefbe022b735c3f3a65970ef8bcf15b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.121.tgz", + "integrity": "sha512-f0womiSKQHtDkdSkAAl9Eo7Jzk1UNeXLtZ5zCE1SphQFELqE8XZigIBlQaD8+s/zhtYs3m0mOEF3vVgUpk34Cw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHeNOWZpqGyGo65hjmB5Tb8lUiOQ8iTIcsUo/KsuzJs6AiEA9jAglzo5c8HFGXga52oniwnqN+bgMdZHujQQnZ0rO5s=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.121.tgz_1483981394996_0.9206117365974933" + }, + "directories": {}, + "contributors": [] + }, + "0.1.122": { + "name": "types-registry", + "version": "0.1.122", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.122", + "dist": { + "shasum": "ba0ec646b4099e9a7bfa36cf2f0c0e4f935c695c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.122.tgz", + "integrity": "sha512-1R1wePL1xMixtOejKloyoDhw8aXIB3hGPPEV5D8KQ9Slwv0S9X/8gY4L8ua2ux0PJ5LyZauBig3VaBpudYtn0A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDgPf6IDe7TMRbPCU8OlRsO3kS2ZR+kLJ+pTbxfaJ30RAIhAKAWwIJPueSspeFGrYExv+EFTn3enZWLbW3MpShs7SiF" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.122.tgz_1484078142775_0.3839285857975483" + }, + "directories": {}, + "contributors": [] + }, + "0.1.123": { + "name": "types-registry", + "version": "0.1.123", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.123", + "dist": { + "shasum": "16edf444ea6db5401261beee4ece5ccf59059192", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.123.tgz", + "integrity": "sha512-lzveVnYkfdllpsx/8WzAKEXE3333yLEqJJ0wd3m3Nu21t4Iv2c5sWyou/+yvpu38vduEO/2YG9hfylrnNs9zXQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGJ8wdnTltHsgQ3IcoJ9chgx+8sc3kSA2sXRHQ7PVOK3AiEAgb3xl6aCspmq6Kw/yd8txTBR+pcaRT3WBTu2RMjoOZQ=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.123.tgz_1484079621416_0.8918303013779223" + }, + "directories": {}, + "contributors": [] + }, + "0.1.124": { + "name": "types-registry", + "version": "0.1.124", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.124", + "dist": { + "shasum": "90e038c3a00248fd7dbc0c5345c9d71b32843990", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.124.tgz", + "integrity": "sha512-74KjKnb8Ko/yZJEaaidFQLXGpgL8TJrmMa3HIr6dVYfw68Ih1TfbZXYMFc40s4ex/Qg0kHH/mRYy5uCbFHEbng==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDXawg/uPf3d6Pm75W3co5+zYsDIAlF00zu6MnerTZHYwIhALT3A+pHc5kqxNaDs3MTGZVBK00zc4j8xBHUFB5Wzbzm" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.124.tgz_1484080173283_0.5410986002534628" + }, + "directories": {}, + "contributors": [] + }, + "0.1.125": { + "name": "types-registry", + "version": "0.1.125", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.125", + "dist": { + "shasum": "9d92d9113bdc2a22cec34d52c9467f699d4c1007", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.125.tgz", + "integrity": "sha512-gEfYo6msqLp0X0AfoyqDmweoNVsaNP1Z6RbmYmPfDzY1Rzjlec9NqPq61pp0umjnMPNmA3ZPKsJohbYoluMMjQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICZF01Tk3rk7wpRtxFsEAP4aSkSXp0QkqknykoNdWjutAiBjzCKFh2c7sEBxzOjSs35m5+jdb8R5+dwdJ6sUNcpB5Q==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.125.tgz_1484240091461_0.5196035939734429" + }, + "directories": {}, + "contributors": [] + }, + "0.1.126": { + "name": "types-registry", + "version": "0.1.126", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.126", + "dist": { + "shasum": "a2e85fc8cd62d67e2453e239c2a61f58deae5519", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.126.tgz", + "integrity": "sha512-3dqzfcSXTHupvAsDB8nnFzejVRsIw4ES/ngh2paMh3pK6WbEZP/IJJLwLCkLI9aseY3hPOYUFHeVRfk+1y9suQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC5HA0aYyYqoxxJF6EytjlaZwQWnwLREtredLJif0V8CAIgVbQq7LliYgtAq5ifq5Bp1CIV+HshIiFKT+jhN13l6I4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.126.tgz_1484321256485_0.17450910340994596" + }, + "directories": {}, + "contributors": [] + }, + "0.1.127": { + "name": "types-registry", + "version": "0.1.127", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.127", + "dist": { + "shasum": "1cb49572f94e092bae3ab7cb89c6b360b909bc6d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.127.tgz", + "integrity": "sha512-j5qUyxWzL4MAq6yQkKCIGpc9SF/t65uQoRK4wj5pWx16TzogeUZ/HFkX9ktfkEn1XGRQ0XQB97c6XCRWKG1DlA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEm7KEMMik86s5YXiePuaBwzIJf4oqktsaVpmNu4Si+lAiA3ET6pkMlTdRkEYcFI0yv3qp6aNUO+znjzP1HG1Zk2tQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.127.tgz_1484337401623_0.272250835550949" + }, + "directories": {}, + "contributors": [] + }, + "0.1.128": { + "name": "types-registry", + "version": "0.1.128", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.128", + "dist": { + "shasum": "2b3bb079e668f6f6233b9c69bbf86a2931e15161", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.128.tgz", + "integrity": "sha512-enGPbzPamIHdfw6rhI0lR5eUnWwjI2dHAh+ow/GArJbdV40rL6oVdSOQm1WKScUClj4HAipZ83ZtRDaamovO7g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCl5GFGvZzHrCriy2WQq5E1HJa/mOKDy8hN4folpfYmTwIgTYD18XxKZy92mk/PNJiU1CwGoDX1vkJjVF9d8+LUA2Y=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.128.tgz_1484342563206_0.3719085487537086" + }, + "directories": {}, + "contributors": [] + }, + "0.1.129": { + "name": "types-registry", + "version": "0.1.129", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.129", + "dist": { + "shasum": "407921e5e74e41b03957db663cc77c686f4c8459", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.129.tgz", + "integrity": "sha512-0Ykuuk843S+ULQCzruTuyYaS7rw1wwI0HUjQmLdF2KHUHaN4771rzFCexBA2FZN/8EsHzU2KyrYdK9Nl/DkyRA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGZ96mFz22hlpYcqQ9f6SMa2N2hlm0gEHQ+5oQNBKnPkAiB1aKKThI/BHFYPfU5mrETZkwrcqgzoOMfqm9wXHk7ZEQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.129.tgz_1484410325357_0.04304152028635144" + }, + "directories": {}, + "contributors": [] + }, + "0.1.130": { + "name": "types-registry", + "version": "0.1.130", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.130", + "dist": { + "shasum": "22ab87cfdfd9e21cbae6581d1dcc6e135fca5cf5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.130.tgz", + "integrity": "sha512-sFQRtJEYCmiJPqp5AKIZhKvhMR0ph8GnSfOWuBWqwJvcJ/Gjd1PuIKDq+wzagUhIixjLXJSGt2s515T8M4AihQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCxg/v5yZn87NNYhkoMKLvyPO48VNVwaF1DaPvt1RZ1lwIhAMcpipz2QBD7K8dTnSEhu9GWGV94YsqyaRsMBRQu5phY" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.130.tgz_1484683900231_0.2752859899774194" + }, + "directories": {}, + "contributors": [] + }, + "0.1.131": { + "name": "types-registry", + "version": "0.1.131", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.131", + "dist": { + "shasum": "79a1890fdcae7b9f1ced13950a67ab4cf2dd779a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.131.tgz", + "integrity": "sha512-ooZPmshcOsqGGYS69NvU211z6XNg7bKaSLQBNrRlg/ZDJ/aFc1URH7p8s/T3w8d7AkVZLV7kiPas6wu2DAV5aQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCJyRf5qhkaZS3Uqkt5ZRBSbvYjxFirxbPzSgyuzsS+oAIgfLqa6KalZYga5SnQuQL0fYLF7ZlkbOe9eWAPWAeXHE0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.131.tgz_1484684109901_0.22959199198521674" + }, + "directories": {}, + "contributors": [] + }, + "0.1.132": { + "name": "types-registry", + "version": "0.1.132", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.132", + "dist": { + "shasum": "07b30a3f045fc49272080e9c8cc80f9cdf1e5f54", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.132.tgz", + "integrity": "sha512-cozaRxhfb2pCq1jift5deACiPRBSozwN+zJJSW+VGmI0lX3dVyCCkzS8qQ6FfgEgbtBs28f08iGqgaOD58/M3Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICeIqlxWJQFvL0UjJau2R9yR6LAzxaNUzRHrDEcF52O1AiEAzsWOMP2ELFFQTd3580N1ew+gv3/EPcs2ov7oo0ipK3M=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.132.tgz_1484687430803_0.2063485502731055" + }, + "directories": {}, + "contributors": [] + }, + "0.1.133": { + "name": "types-registry", + "version": "0.1.133", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.133", + "dist": { + "shasum": "a87bbea6c558708d8fb59fcc51b7ad36ab4b12c3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.133.tgz", + "integrity": "sha512-n6xf7brn6lNF3UQkGXLNu6CX2q2KKdy3foqbtq/Xve6d3JdFp8paqpGkCSPMetPpPF05YkU4myA8jE8yS+8e6A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCKGxyBVkDCUeLzgiJgKbwsBC9fBbpv/IBbn4N06SSv5AIhAMZd2qhjR4SYt28c1By0NHq2oayhie8H5L4LE37jiiR0" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.133.tgz_1484688588350_0.9209906423930079" + }, + "directories": {}, + "contributors": [] + }, + "0.1.134": { + "name": "types-registry", + "version": "0.1.134", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.134", + "dist": { + "shasum": "64675ff3dbfbdde385c9a3465de9360d24051a31", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.134.tgz", + "integrity": "sha512-uFcn9W9SwxsDylbom/pH93INZ/NYYPnDyTeTF73OjtFFPzczr95B37ruCRhMu1GPKAxtVp3Jg6k5KMWala09VA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD8Ce/Kk7ZkmRp/P+ef7+7cda522MXwKHKRhZHXY/NtvAIgQx4PBC0ISA+Q/fbC2j3e+X1v9HsGYM3C3LAxpAk7rGM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.134.tgz_1484689238676_0.2372267502360046" + }, + "directories": {}, + "contributors": [] + }, + "0.1.135": { + "name": "types-registry", + "version": "0.1.135", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.135", + "dist": { + "shasum": "67eb209317a648db385e2a4217d7556dd06db7ae", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.135.tgz", + "integrity": "sha512-jWdxxiIgTLfbiEsSYAfCZWbHbLKtG9DN4Y3MfE7cBcGJaqvuzXJ17oOri1tgmidYrlw0VkeAwKhiZoQbN3K4ZA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAFWENmnnRUo32bk7eYNdLE29fBiU8n57Djjg2iwd02QAiEAuR481kGlbpHGqgIhBbHOHLl2deTBocRAgW5Cprk6LzA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.135.tgz_1484690459806_0.2147701559588313" + }, + "directories": {}, + "contributors": [] + }, + "0.1.136": { + "name": "types-registry", + "version": "0.1.136", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.136", + "dist": { + "shasum": "bba9ab11e20085c6cadb68a659294070494bc0bf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.136.tgz", + "integrity": "sha512-rG83/fgUIfWoCP+AiLBLqOtvBzj5XhbpErVZbWF6QpOPROwJz4V1EVTJwuu8fOQJFkDiu1aQVx0w8ul+MS5AqQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCCcGOnZxzm2i4x4pwxOdkyJoW1pkjA2//1dBiQeXcVZQIhAPbtB66LXV3//+Vt2MeTef3w+JC0n3uk+LN6smKjBuDa" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.136.tgz_1484690664253_0.9652705532498658" + }, + "directories": {}, + "contributors": [] + }, + "0.1.137": { + "name": "types-registry", + "version": "0.1.137", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.137", + "dist": { + "shasum": "3b00960c288699c87e25bf97557a2b3d59ad0f50", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.137.tgz", + "integrity": "sha512-h6PJXjzQy74LMVfBIh9vbmZV/yOqkEdJbAgkctrxn4e/DKPDHvxHI41M2vpQvvzC1T6NXinqQ5eGsRM5gewCAw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFIxj1eqF40Ntevi9tIntvTcGnkIdAjKxsYBnKK7zUd1AiAP0fq414r5qSP24VIut6xzPZrVo5rsHpHqB2uv5sSsoA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.137.tgz_1484696538152_0.19571426510810852" + }, + "directories": {}, + "contributors": [] + }, + "0.1.138": { + "name": "types-registry", + "version": "0.1.138", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.138", + "dist": { + "shasum": "65c6b1e276bffaf79096ae680d976b0cb34de7e9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.138.tgz", + "integrity": "sha512-n/f1dqslVL1Gh24qk0rZGCKTm1q4ssQcIiu+O3dZxRYwHIE+IyvOashanhdtIReKIfdDrRla5HHCUz64QwTCKw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIB3Khr1GH37nTMjn9AIzUmvRsKbcaeOXu6MahDEq/kmBAiBTTWneQyMs0SNsEXddgB30A4vHIN+2IejmeHi+6cNxDw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.138.tgz_1484699325842_0.26278503448702395" + }, + "directories": {}, + "contributors": [] + }, + "0.1.139": { + "name": "types-registry", + "version": "0.1.139", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.139", + "dist": { + "shasum": "e4e16da8f65f583d351f222fbf4d302e16b0b5fa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.139.tgz", + "integrity": "sha512-J/8AAq8Q0Ngez2oFqqUQi3qD1/hvmWH2axbeSbZnsxT5x2eq2N/6YJC4px0YkY3MAxb6FEAz9rwm1j7XPRlU+Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHsUCwQHB/5EXBpZfyyjrtMVdpTMPcnhab5yzGuAkE5WAiEAqmubhsdbUXY2GbmTmBCNI5ejKkzSnsMwzz80qnCbIBs=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.139.tgz_1484703490500_0.638816136168316" + }, + "directories": {}, + "contributors": [] + }, + "0.1.140": { + "name": "types-registry", + "version": "0.1.140", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.140", + "dist": { + "shasum": "de2dfb31cec0ab463f4e47f8b628dd6189403097", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.140.tgz", + "integrity": "sha512-dncGLilM81zbBMQHUrYa96D+sL/1kxLuNxJK+WkHag0YG+TQYs8PvHSmuVCWmvORzR3imTxAwIv0Hgoe+jLBHA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIF8UMVvcxaQpi2Zf1DYTslvRixi4Xa1R3cZoBkHJ3GILAiBWsyBdBi+sqRnKCGqTQO+LGWM/s+xF19VIAWofQI0OkA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.140.tgz_1484712691869_0.6999468223657459" + }, + "directories": {}, + "contributors": [] + }, + "0.1.141": { + "name": "types-registry", + "version": "0.1.141", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.141", + "dist": { + "shasum": "2b62e1b4f751dcc46f0024d56cdd2464bc2b0f48", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.141.tgz", + "integrity": "sha512-UQgz/nJJOJQni3jZ2ByYLiw65dDpmU/HPhblnlSZAH6dix4VAOJ7Sg03xlIDm0IHpjNnp1NicERbl7CibN6Psg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDXsiV6Uq/K3H6XXW5tEh73u7Ph5slbBK5UC76N97dqXAiEA/lhYCidDn8HPmwuOe8w2C36l/lZSTg+b7FbLD1/TFyY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.141.tgz_1484762541958_0.3968447567895055" + }, + "directories": {}, + "contributors": [] + }, + "0.1.142": { + "name": "types-registry", + "version": "0.1.142", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.142", + "dist": { + "shasum": "d574be3f718bb866749562c1f699905295c1dec3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.142.tgz", + "integrity": "sha512-a42l8g4ylbFum/AYYf4EYxMtdknEv/Amp/bj7Z0LPzLvkie174AKRIZ2BDEftKfRczyG7pOoYMOHf44xwm3Ksg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGYdIHIASa5Alak0zknkep2rNpHvtL3x1lV3kQZZ6rpUAiBrx/ik5+bZUOGZ1QkEhyLXD5xYLqVhBRPnEjsirkOkiw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.142.tgz_1484762888967_0.5407027434557676" + }, + "directories": {}, + "contributors": [] + }, + "0.1.143": { + "name": "types-registry", + "version": "0.1.143", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.143", + "dist": { + "shasum": "31fe2084d692d8416bd6244c8200782f169b4648", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.143.tgz", + "integrity": "sha512-fUmDZS+Ijj+LEUhWCm7vPHo/C4EJzq6DQbEouYgLJ+hR4DNykQuwnulrcLVYpopD1Ni3ymRJSH07vJDb6iO55g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHVUSbGljXpJ5ZleAiq0fka0sdEX77ZhlPGNdcMf9BoQAiB72HWMMFB/UMHB3ZR2Nhp8nUPf5ZEzkMLc9+u/kHhVPw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.143.tgz_1485475444917_0.6680144341662526" + }, + "directories": {}, + "contributors": [] + }, + "0.1.144": { + "name": "types-registry", + "version": "0.1.144", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.144", + "dist": { + "shasum": "8c6ffbbed34ee923baed53346fa384ad1a3f43e7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.144.tgz", + "integrity": "sha512-QyJza4Ah0WCn6z42gczivoPYC2cNiKZUK52Io2Y1SF+jt7CMl2E4k3xxcyMWN2kkbC91zEF2S0N/blFzsf6tow==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD9qpikxBbCrU42E92lOdSjF9XYD/RMoIbppioXTyPglQIhANBXfP7LEfroR7BEWzzcCDAVc5V6dXXzp0JLUBJGIrAo" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.144.tgz_1485475734292_0.40977670438587666" + }, + "directories": {}, + "contributors": [] + }, + "0.1.145": { + "name": "types-registry", + "version": "0.1.145", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.145", + "dist": { + "shasum": "a18e305db2d2e1d261683e17a70bd3affe2a774b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.145.tgz", + "integrity": "sha512-TbXVzWihuZVvdaM0LWblgcuDMm68Jw0Tdlo5KzJFbdK65BPtQ60ylT12UcnjTEeW6P2dCMM/ZxfKeitisFYjkQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDY1Jw3jOwKB3oEDzceognKObeppepyEZnOu04cRgweLAIgClzs5FxlaHaXdrjTusevh3/J1QEOolcq76KiWO0ew88=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.145.tgz_1485563587532_0.9617646920960397" + }, + "directories": {}, + "contributors": [] + }, + "0.1.146": { + "name": "types-registry", + "version": "0.1.146", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.146", + "dist": { + "shasum": "43c98228c792596c5fa6a8b4387a0e24551d6710", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.146.tgz", + "integrity": "sha512-WBwW5oQVtAlNtGTX2lz3qaYjO6pC9v6yvUocW5ucEMW1yMGjViV+DnK7uXBrUrkzEX/EKqYEdB7IAIoDcZEwkA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDK/svxmAENaBnNkaaeSpuS72c3NXagV8f2oJ9dz6E6xwIgE7VoBY8WNt79PcxJIWmNWHd2dKrSzx0rlzUddROdEXE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.146.tgz_1485563807720_0.5923668902833015" + }, + "directories": {}, + "contributors": [] + }, + "0.1.147": { + "name": "types-registry", + "version": "0.1.147", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.147", + "dist": { + "shasum": "e5d7973020bc996b9b14377703efc052d430f5ab", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.147.tgz", + "integrity": "sha512-+zueAGXzRKcTMmQp9pSH6ptd41sL/l6wsKqXcvHRsFy0zHFolvyRbdDC4X4r5UeKWQ53NYEOhD2CoAmGYRF2lg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG74pIHkAwbSHAdW+PioDDHb4Sf3oIT5Y9/kVrYZ90FsAiAS3SDRzEwu0XcOIy/w/i7ce3Z860eSUvHqmnNykVuLpA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.147.tgz_1485666911322_0.22842120751738548" + }, + "directories": {}, + "contributors": [] + }, + "0.1.148": { + "name": "types-registry", + "version": "0.1.148", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.148", + "dist": { + "shasum": "e3363cc59bfdf1ec687aed1977037724cd7b86f9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.148.tgz", + "integrity": "sha512-5ibKZ3AkvmgrIn3f90UvWCbjHYsCAJ7gNa7rRNBnI++eLNTQbP8/dfmEt5UM5QuahGibAU/saNYYILGpIn4pzw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA+atw/StWTFchFVbzjqWBaQMkubznftwoBHmeOwg9wnAiEAooKNKPT1uNrEA2dDsGZwTOTSlDuaVf6PmYVCDFZEsnM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.148.tgz_1485667184864_0.25953751686029136" + }, + "directories": {}, + "contributors": [] + }, + "0.1.149": { + "name": "types-registry", + "version": "0.1.149", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.149", + "dist": { + "shasum": "7d66f7dfe77c755152405ce82014b3bcc7ba5a4f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.149.tgz", + "integrity": "sha512-j71f/eJCNHOpwVnYLGDvo79lKEK4/OVsC+V79D5dtYmJfW4L30A9vwnYXS3QK8nwToU7KcJKvIPdGVJppis06g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDPACViv6SdEYFYALrvOE1seJkV4gnSJekSUouYA6c5hQIgepK3GWsmgVsga7kj4zBLda5N5Z+pVKdGYAW1UNbPfHY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.149.tgz_1485668195070_0.2961627102922648" + }, + "directories": {}, + "contributors": [] + }, + "0.1.150": { + "name": "types-registry", + "version": "0.1.150", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.150", + "dist": { + "shasum": "e3722ae9334b9099775288611b3c7ef21d189d78", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.150.tgz", + "integrity": "sha512-2u6DZoszgybr0Pknrmn/dq/9LBTG9n1VTs8y/eizcLEJIX+KO9twx5lP3xNylaMZ/67NoljVTrtJJCv3oJNDDQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGEylZSf1uEI4O3ma7SXptblp5Ebnqia9QTcgXUZWxgRAiEA2g8huI/thmHQHOUteoj06DCaMF3zstKdiLqIE2+8gNA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.150.tgz_1485801166988_0.18589562666602433" + }, + "directories": {}, + "contributors": [] + }, + "0.1.151": { + "name": "types-registry", + "version": "0.1.151", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.151", + "dist": { + "shasum": "cf87ff4570463490fd984cfe8812e0f4447623aa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.151.tgz", + "integrity": "sha512-hSzrVLpOB7H4/uiJfRRnObi8FwRYPqxKNEaWdOtifgbJPlrjvgR8F0KH5OziQj3HMpNDy0XJQEBJK9FdaeVRNA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIH4K1Ae00vDwm7OwoaQadYQxqFa3qo+OCMextPZTB37TAiA+HTIf9fenU374ZvPo7to/fM5w9X5bNWLuEtCHB85GaA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.151.tgz_1486500877313_0.9608797349501401" + }, + "directories": {}, + "contributors": [] + }, + "0.1.152": { + "name": "types-registry", + "version": "0.1.152", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.152", + "dist": { + "shasum": "de5898f41891e8f06637492ba049712fb0fc9833", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.152.tgz", + "integrity": "sha512-mKqJ3QVQ6b4rWLPnQ/iEPithL7cgkm4wO4kb3wF+pr67pyvRJIE/9Uk5R8TTqPUSzU2JmTm0Q4AE6oP8ISJiJA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCn4P94Ia/8fsG+vu/6wNmpGtyo4rhTS9XY7gJRhuarpgIgVkW7WUQZTuobb0rR90aS5L0oUYuHnVarXVnJS9RV6ws=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.152.tgz_1486502099237_0.25044508115388453" + }, + "directories": {}, + "contributors": [] + }, + "0.1.153": { + "name": "types-registry", + "version": "0.1.153", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.153", + "dist": { + "shasum": "a0866f38fcd9c58a71a5344d2911e229bbef62f9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.153.tgz", + "integrity": "sha512-M4uqWzvmQfMidRnKV5cNT5rHqpU3VVBlXPtli/pOC/wtJwNlHyDi9S8nUCR1RvPxTlZFbMW7izWVzPCEDlg4Bw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQChaPJKfDHcP9HQYI1n5pP7zCixYUbHddLsdOUI1i8fPAIgUkmTUlpMdtXLLv+fE5rI92tzvctb219C58TngYLnlfQ=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.153.tgz_1486507524853_0.06988868536427617" + }, + "directories": {}, + "contributors": [] + }, + "0.1.154": { + "name": "types-registry", + "version": "0.1.154", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.154", + "dist": { + "shasum": "f742a3b3e2410282f52983fd68aadada9de1f771", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.154.tgz", + "integrity": "sha512-dMDmfiYqcj26zRmllodMvUphahCxIrDaJN3WEaeaqvCu9WHyxMobaR1FmNdo7zi+IBN46fD9TwiJsFYrQWWwGQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDyxWXIZrlKWY5s8bSNFH6WWPC479tH1EfDExskCmZrcAiBeWaOVLeDCUeytRQaM3gSwXyXXqJUCsyBacBdkIqd7Sg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.154.tgz_1486589493286_0.9812644515186548" + }, + "directories": {}, + "contributors": [] + }, + "0.1.155": { + "name": "types-registry", + "version": "0.1.155", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.155", + "dist": { + "shasum": "e447647fd54ecdc472a9036982afa97f838685d9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.155.tgz", + "integrity": "sha512-+xTU3Ynwc6cG7kkR/ZpWs9kh9BP8ycWoY7yus0gpDDKf5Am1cGciBg0ZY8DZZO8nqVWY2wFpSagB2L+ifyCHfw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCM7lo1WBcOjqEY6/LlHaw79+VvWfFH1QdMDbPf4TRy8AIge5nDtOi+p8x4N/FkPS6Zi5ZL9pn6MBbBXCfHpg1KbUk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.155.tgz_1486669060236_0.9728511685971171" + }, + "directories": {}, + "contributors": [] + }, + "0.1.156": { + "name": "types-registry", + "version": "0.1.156", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.156", + "dist": { + "shasum": "5a0c54eccdc977976ecad3753e019ec9ca9284d9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.156.tgz", + "integrity": "sha512-rB6G+kYR8T3I9ueQKonNhNpXL1s9+RvxLEr1xwIj1S0deUlFyF7+e+W4d2aghw3sfqWZo6xgS3KT9fvT9uQ1tA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC1C+h5idrFL1L5rgk13TqrO36+WniAutpXXZIgnzHoOwIgCAOfLiM0CQrIDyvkzApo+5D4j8Dwn1J/+/q+J+va97s=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.156.tgz_1486677051548_0.6647746644448489" + }, + "directories": {}, + "contributors": [] + }, + "0.1.157": { + "name": "types-registry", + "version": "0.1.157", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.157", + "dist": { + "shasum": "378debe00e66684cd4e9627ccff8014e82599fbc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.157.tgz", + "integrity": "sha512-84PnE8fT1Whaf5MKRzwU9EuigvdB6Jg6FdQSKdd5XjLauufMmPBhaEixgUh+0hrHLjT5M3CwTDjn+3hVpkcVHw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCfPh5/hIPu7J5a/TsLVEmcNavjN9LK79QutjS6P8eS2QIhAIbfrJqDnOKx8On9uM525q77l1clsjG2hTDZGzAyydVi" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.157.tgz_1486677735903_0.18401265400461853" + }, + "directories": {}, + "contributors": [] + }, + "0.1.158": { + "name": "types-registry", + "version": "0.1.158", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.158", + "dist": { + "shasum": "4a87b01b0cb2adc9f56dc79d31b74fe205ea39dd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.158.tgz", + "integrity": "sha512-FQG4s4lukx3cbjmr5wW9xO2HlQDOuPWMuviOzXY/IRxzIclrK/zoZud23UGYpJy5g4VahiZmMjzlbCiDdoxs4Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDk3BybfUMXGpb6yrDNhWZg4gwvVer4hh14KaCABdVgJQIgI9d5671WqceX1JwBM7jLJVhnxAngfYuaLKKjdwvWqFw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.158.tgz_1486677970435_0.7575245553161949" + }, + "directories": {}, + "contributors": [] + }, + "0.1.159": { + "name": "types-registry", + "version": "0.1.159", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.159", + "dist": { + "shasum": "1c5f210d91e0fb6dbf01b6f4c7615051bda98fcf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.159.tgz", + "integrity": "sha512-kMsqBjHrw40yfI2S3Jp4+s3Z8irgzsQF58/6a5RS9mgQirZBRMuD63Kc9kF0TxqPrQf86SKdoNsDSrDfJteqUQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBtfwXwj5ziey1W6XUzG4b5mVH+2U7eL3OIFP5hGPAxiAiEA9J0U+0yLrIZ5tx+iqQXgOmbQbcDxbeTp88aEdkdFe34=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.159.tgz_1486680392200_0.2633925366681069" + }, + "directories": {}, + "contributors": [] + }, + "0.1.160": { + "name": "types-registry", + "version": "0.1.160", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.160", + "dist": { + "shasum": "f0c428d539e67bf593aa876cc7d06fbde4781a03", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.160.tgz", + "integrity": "sha512-qwd9AX2HOt8N4JdJLLwAV/OibqqiGolWxYCiL7IAGHF5svkl+iBCn0cZvVnzVryYkPRFXFIA0gxGxFX1anFOIg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCJyi7JOus+JbtgfchCA5Sm+1UgichY0TQgDdPjK0yoMQIgRvWmTSP52+E8+yFRoegt8ius7HuhoOKGF5fN+rZenDo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.160.tgz_1486680707069_0.3524938302580267" + }, + "directories": {}, + "contributors": [] + }, + "0.1.161": { + "name": "types-registry", + "version": "0.1.161", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.161", + "dist": { + "shasum": "498a5edd228c1196892ad133b4a6249390794860", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.161.tgz", + "integrity": "sha512-l367IdEmeYUX7nFWkgoAB54GHJYhSLoT3E+yZ1lKUgnxqNCIUNbZXl5JcEkT592w2DLdtYBmQzmxq49ZnYupZA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIB3szVnqfezGR+ArhUSwTMtUcadljJixJOsGUntKz/oNAiEA9Bd77XLW5m3xVTGSPLH3LvqQqjYEFlPr2C/xxDxnVGk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.161.tgz_1486683476767_0.2336682064924389" + }, + "directories": {}, + "contributors": [] + }, + "0.1.162": { + "name": "types-registry", + "version": "0.1.162", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.162", + "dist": { + "shasum": "3c0d67f357a18e5daf77e1a89d00634a3a82b8e9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.162.tgz", + "integrity": "sha512-VUCVeQVnZ+wGrVwGaxAoYHwKdLRJeNRwlkxKdXhLBeEj7G+UKoEtcYGLLmJp8TYfB3Cy7nWXjd7r/JXAwboOxQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGHNenjIz2Ljr+v1lurdKxC8VCiHni2DtWuejCcDJl6JAiBzRBcn6PIKvzyW0H9d6brHTTILLgd7QKLOvVNUbXYdnQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.162.tgz_1486686985316_0.7140589114278555" + }, + "directories": {}, + "contributors": [] + }, + "0.1.163": { + "name": "types-registry", + "version": "0.1.163", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.163", + "dist": { + "shasum": "6f6259a6408b6158dc99e7c74e7898a9b28ff0f5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.163.tgz", + "integrity": "sha512-qPdichWOTY7JLhZTCZeKLw84ZsOAPtaqmySs3vg5nh0l8iNHxX39TN3uI2y/S9pFAWPir+NjCFvFBdn+GYkrgw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEZjl9h8zDQmFQ5klGDfLvOpOPRks8FHOv0yBZODl6xVAiAvu7WCgWECPsYJoB2WUKHHD7e/nezAj4r87O+rYxHbww==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.163.tgz_1486687471855_0.5643473824020475" + }, + "directories": {}, + "contributors": [] + }, + "0.1.164": { + "name": "types-registry", + "version": "0.1.164", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.164", + "dist": { + "shasum": "b29cb76ccaca9998d15cc92b5228da0f65d96d6b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.164.tgz", + "integrity": "sha512-5MXuhND9fNmddJRH3iEVSrSX3IQH/O2gAiV63oKQYqIKBSzq7tnHFxtiRL/sg6+Zue9R16KgMvMi4ohz9Hv5Vw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFL0Q+2ANsQAo1JgWiT+wt6QZffJkqQWXiMjV2RlpS2BAiAhh/XUuHrEfhZGaI/ZUEgPb0PAzTHvgtip5Q95SgVP1Q==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.164.tgz_1486687699824_0.24605830758810043" + }, + "directories": {}, + "contributors": [] + }, + "0.1.165": { + "name": "types-registry", + "version": "0.1.165", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.165", + "dist": { + "shasum": "53c6cd9bf56d9b29a5382360a1121a58f25b8edd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.165.tgz", + "integrity": "sha512-oRM9aDBsbObeLZminC5K8wflcCpwNFTzPaSoiu+3keXnETjqywdlJBoKNYouVWuE7EcVfcsHyhUdwDUbzGp+7w==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICr033hQqexAWQ6AnNXuzTj/ykOwFoUBfL74jy3KGDXtAiBa7Q8z+juo89z2OwPqadkR6JyQdDwHkH2woM7uy1Uj+g==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.165.tgz_1486761885781_0.15745725040324032" + }, + "directories": {}, + "contributors": [] + }, + "0.1.166": { + "name": "types-registry", + "version": "0.1.166", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.166", + "dist": { + "shasum": "4af7ab3d859027023f26ff7550a548f53d750bda", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.166.tgz", + "integrity": "sha512-CVA8DsQtssiO+7H5Xg2RKv7AZ805s+iOgNlNPn5zi4BqDVL6qafoy9QI/kCBSzl3x7TMR6btOQV6GYfZ+pNskA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCDSBD5QhTQ/oRjHs8c+QQGHQgsfFSae7nVEaMzLKKNCAIgJiZunzJXoQxjeWAn0MHIxrONb1M9YwyyqV9iS0CzT58=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.166.tgz_1486764599122_0.7840674987528473" + }, + "directories": {}, + "contributors": [] + }, + "0.1.167": { + "name": "types-registry", + "version": "0.1.167", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.167", + "dist": { + "shasum": "f53c76a2468cdabc6b0838bc8a4a10e1310c6ff8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.167.tgz", + "integrity": "sha512-g/bZopbSNvJrUxn3HRmG3kdP1uOHRr4RavuBqpvWZ6dBdNx5gjBKGtqupfZ5slR4IZdykxINtQxQ7wrIJhWTaw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC9KE0mD34KUxR9lTcJeD6tdAd/2N2ULN6lXrmaBz3mOQIhAKaHDrP1ugO1JD9V1iw8pJ4uVJXA1l2eueHYxFhkHEyg" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.167.tgz_1486765500928_0.24827895360067487" + }, + "directories": {}, + "contributors": [] + }, + "0.1.168": { + "name": "types-registry", + "version": "0.1.168", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.168", + "dist": { + "shasum": "209abca7047ae40862cbd1f83ae60e6ad9b616e7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.168.tgz", + "integrity": "sha512-rInzoZ3MDK3bJRCUSCO9oNnW8i7QjaXcF5opLVpXY879kQ+Py1sM6+vPgFi5YJxRCQyFseyoZdqJkck1j8ZaIQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDvoMScKGYfh/1qyZ2L0B+2oIKCeADf09M82lWI02sBjwIhANk3bNpZUuasCPVQWNcRv2+Vn9iex+Cfs7wm45tmh7KY" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.168.tgz_1486768279865_0.3310528064612299" + }, + "directories": {}, + "contributors": [] + }, + "0.1.169": { + "name": "types-registry", + "version": "0.1.169", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.169", + "dist": { + "shasum": "9eb49f679585c423746f3b138df969ff5dcd9d55", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.169.tgz", + "integrity": "sha512-3PG+NhovYYzqxdvDNSLcGzr2xwseW0gSpFby9J54hE655R4mnr4v0O7YTUdKkQ9ZMCH4UMSYGkqm50mudVznqg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCOk1BeDHEDNNWDlXhijQU7KqWrQOTsIYdSReXtfHbPMwIgZaNwmUNxRpRF70i2vLh4hmzQbvhmTiDP1si5lO7cfG0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.169.tgz_1486773133409_0.4084503201302141" + }, + "directories": {}, + "contributors": [] + }, + "0.1.170": { + "name": "types-registry", + "version": "0.1.170", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.170", + "dist": { + "shasum": "e13b6bc138cae2c264df1f73d390f3052d68cfde", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.170.tgz", + "integrity": "sha512-W5VifufB7OfECyktJFtu4FU11cTCLl3CpZwPGGrt9YymWqgIp83dbTAJF6+xJgF+sPwM/uvz0x7+pjRF2Ou7kw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCDGWJmNVodA6u51OmASXxPYfEJMie82iwr4cN4/vBYrwIhANjLkeTEMDxd8k0WpCA/7WGb7HnFyf89FAJlTlay9PYa" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.170.tgz_1487108196239_0.22749932599253953" + }, + "directories": {}, + "contributors": [] + }, + "0.1.171": { + "name": "types-registry", + "version": "0.1.171", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.171", + "dist": { + "shasum": "4092ec0b60e27ccdfa47ca1d729912e936367c53", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.171.tgz", + "integrity": "sha512-PWe61jVtVe6yHFzXectZC4Lf4DutcaIOeiObh/WPSuRIBMwpeyFQTszvtZojx6acbVXwSXvTuKCq8ru13bd5Vw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD1SEwH/+7raKutxHIB/wDKoXUk/TcWTarHOSMnEyNRNwIgdSj/SYYFqLjXm23JyWei9VMym2qb9LiDldJPFZgc/0I=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.171.tgz_1487180470678_0.001935307402163744" + }, + "directories": {}, + "contributors": [] + }, + "0.1.172": { + "name": "types-registry", + "version": "0.1.172", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.172", + "dist": { + "shasum": "85403fa89e2a2b4ed904a254310df20ffe213a68", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.172.tgz", + "integrity": "sha512-q1htf3OkjPGfxH6B559wAZH/8CODNoLn+UuI7SLi2TkkHmgVJq7H7wLLAjbVF1McHTRa+QaPcSU5cliKKEXP4g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDUpmb8HisGXlfKB95h5lenERbrP+8rHfSksMKsrF1BRAIhALpn1kDVAaO5TwUkfP7yHrPF2KXD/Oe85lE8xUfFA/Zp" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.172.tgz_1487208913446_0.8674230366013944" + }, + "directories": {}, + "contributors": [] + }, + "0.1.173": { + "name": "types-registry", + "version": "0.1.173", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.173", + "dist": { + "shasum": "515e387db380d9a4e95050f597a34744af68a8b1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.173.tgz", + "integrity": "sha512-8e5vS+VBWtBJ+PiqF/VshPqM/pgH9P07O3BFXO/A7a46k3nrtZZRairuzKr8bJK94ZEqTSZ3NuFTgd1X+o1EzQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIF+pBNrV5j511mEKYuKqE0AiGEY/yBAw5/SZrgYe54AVAiEAp68fHbR0nnmLgLPN3ayhWfLKUjaSrGS10XoT5rpkLZw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.173.tgz_1487358351006_0.0357284948695451" + }, + "directories": {}, + "contributors": [] + }, + "0.1.174": { + "name": "types-registry", + "version": "0.1.174", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.174", + "dist": { + "shasum": "40437ee3a3f88fd00d3e124ca3f3215d7fd343ea", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.174.tgz", + "integrity": "sha512-Rq+5sGMXn/TEpAedkrwAhpeNR1eZ5VOcJl2h3ZvqWK4vygUyHYzzQbj6l8+5YhvGVchwP7Fw0yWHltEJPV0Kxw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFp8l/ra5wcPFYxRNf183bZfNttR4D51s1wp3T5eiG40AiEA/D1DEINulZ5Zdd5PCqBRkox176BY0eOgZb6/KW8oHxE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.174.tgz_1487358681468_0.8964782091788948" + }, + "directories": {}, + "contributors": [] + }, + "0.1.175": { + "name": "types-registry", + "version": "0.1.175", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.175", + "dist": { + "shasum": "71815d4f7c6b155575f8e658843826c9980fd7b7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.175.tgz", + "integrity": "sha512-DerwON6F3ajDd/JkneYTiIOTavHuXzsPm6CvXsSO8DH2UzNOTYEeYOmM16ng0xHRQTJUNnNN6VwfxHtSeygThQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDuMFggdRep5imtTu0bDkdU+NfUdNxWbo+6600xauhD4AiBPz/QMZEI0/6rfs+mWq6tWxuLjaZvGYsJTLXOChQmd6w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.175.tgz_1487577493675_0.8431043918244541" + }, + "directories": {}, + "contributors": [] + }, + "0.1.176": { + "name": "types-registry", + "version": "0.1.176", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.176", + "dist": { + "shasum": "6432455e5aa592d8416d363168b0f285deec08d3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.176.tgz", + "integrity": "sha512-sOQlP02/CO2rVAIC1AzPu7qQFvLInO5L3P8GsHPfNARcCTAlz9TkGZ+smMOpcd7M+zs3tcZg7trLFUKbrhes/Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICgagAiYeLDQQ/u39b+sFL4dXNx1yr/a8sW3N1Iv6kVqAiBLGyRmqzanXrtwINlAZfreY8BROcX+1eKZhVcBNYj+UQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.176.tgz_1487577981082_0.20759662427008152" + }, + "directories": {}, + "contributors": [] + }, + "0.1.177": { + "name": "types-registry", + "version": "0.1.177", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.177", + "dist": { + "shasum": "a15525704306516a0734f7ccc52dcd47bdcde1fd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.177.tgz", + "integrity": "sha512-dWjILBsFEtCI+ays1Gam0UmCA7XBHuCelpB3ZkeufQ0V9U8riHNDp1CiKAQrRQPO+6W2xm/NdLKVH9PjR34BAQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIG5/aaBo/3oG6vaOtnHDDRT3mfHnVfLVVhdLS6ZogWSFAiEA8tf/+ujMJ+NLKf83m+1bflB42zMq+ylu/bcB3o4lD9A=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.177.tgz_1487628217508_0.9301437605172396" + }, + "directories": {}, + "contributors": [] + }, + "0.1.178": { + "name": "types-registry", + "version": "0.1.178", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.178", + "dist": { + "shasum": "1ff5d1d010166b66c85bc54a3ab2926c2b9b1281", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.178.tgz", + "integrity": "sha512-Vf2fc7NZ4BixBm54eVD8MZod03b7v9zltq20XRrFGM4k3bG0W73NkDz092SOWZcSBlYSH9VP9mWDKZqIsnnPzA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE8ZdolmuJqgrcDmNn2lBOFHVudctWIVw3BJC2Y2p0SkAiBOOa1Vlb7pIRnp0nmNFHtQ5kn040Hd3fyqAZm82VLoMQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.178.tgz_1488206773359_0.066991635132581" + }, + "directories": {}, + "contributors": [] + }, + "0.1.179": { + "name": "types-registry", + "version": "0.1.179", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.179", + "dist": { + "shasum": "229f689bf74a33c558f743bc0626bfa378141255", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.179.tgz", + "integrity": "sha512-dKayJ4Gu43EMRYBfXHn+IiLbxPHlormrZA26rrQL1CPy6SDVvVs4NiZZ73kpcMMJd9w5HrD0u6XLCah5/GOVsQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFEpmExQj+Ao7fCDmIlN/DkbJdsDTSPgBVkrS6jkNNrWAiEAvw85bpqP8u07oiwQR1TgBECyN1DxbroobsKP6z0vWWM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.179.tgz_1488839697620_0.922977737383917" + }, + "directories": {}, + "contributors": [] + }, + "0.1.180": { + "name": "types-registry", + "version": "0.1.180", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.180", + "dist": { + "shasum": "89497027d7d6c4f3762c78824af75958aaeb4a49", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.180.tgz", + "integrity": "sha512-vFN3Q4AN6Esf0pwogsJFKeDMiBZZUqaNyfcbZjmZvFrTvuinbQ8hZGrXNcABJj2t3YjYUQLxxczZDy3pJvWgtQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDVmRcYOEsCwHYDMJuE6FzyE/4SzkRARo+M5+zJfZ/UIgIgWzg6MWSl+D5zLn0Pgb+dGAtAftnF4O5uLOfV3cgUOKA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.180.tgz_1488840889972_0.5350511916913092" + }, + "directories": {}, + "contributors": [] + }, + "0.1.181": { + "name": "types-registry", + "version": "0.1.181", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.181", + "dist": { + "shasum": "08ad26ef8bc3f01f561b06b08e543f7c319a8d34", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.181.tgz", + "integrity": "sha512-N2XYJunHNj3K9uu1OmjHM6Lu9EyP+RvNlE4LpVR0qhMPd8WFcJFKO2OoEaoGgf1yHjQf0Wsoq7Le0aLyOjE8Jg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCX7t9bZnvsL5XL0g6pNKA9aZ2uaZFbZKAix3DjFln09wIgF5tmcbLdGbK4/v2rCQT+cjdDudJWR9kdXXgSd2BjQfc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.181.tgz_1488848435905_0.5107800320256501" + }, + "directories": {}, + "contributors": [] + }, + "0.1.182": { + "name": "types-registry", + "version": "0.1.182", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.182", + "dist": { + "shasum": "528d43cf83094e47a5be6c86dba0465f5440f13d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.182.tgz", + "integrity": "sha512-IzzbUzMbxPnWUXv+17KeGwXYv29U1gfWM7kB2Via8SqjSD2MyjEB8j0gsHpFHnhghcti7cNzcSuBvwWe+OJnNA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBRL9V0gh8qBln3stv5Hv4yavZqvM8ARkC/AhvKeWmLxAiEAz4LobLmKwq5NapTv9DRet5n5eEwO2z+cRlvE7jMlm3A=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.182.tgz_1488919082309_0.7281663832254708" + }, + "directories": {}, + "contributors": [] + }, + "0.1.183": { + "name": "types-registry", + "version": "0.1.183", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.183", + "dist": { + "shasum": "3b611231f011ec9dd5109f492a3539f2bc9960b3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.183.tgz", + "integrity": "sha512-Q0AeQwGd595R+tGVvFxNdecgwferMAgJq9znlMD2sYNQUiVJGI/dwEPPmUd2fHrLo0G9E5MSSPUEoZVZKJLRjA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD3wRpOyeI8k89/CDbvG53OLL7OMWPJnrMTZHk9FjnbCQIhAKer27C0Ra2i2Pw0+refxL30npFuUp2U/NsfnAJNs6KB" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.183.tgz_1488936552156_0.2743205619044602" + }, + "directories": {}, + "contributors": [] + }, + "0.1.184": { + "name": "types-registry", + "version": "0.1.184", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.184", + "dist": { + "shasum": "e64abfea6f5f9e08cfb15c95563c0068c837af30", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.184.tgz", + "integrity": "sha512-PV0OYMqSf7fcaLgYLfyktLZEGApGWyooIy3J8Uxs174l+UQN/ktXtGN2RHNUKth+FxibqR00HuMgKUvMLWDCOA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDmILBjG6SaCWfad63xAQoYSvHrY7nEIvnbwamLKYw9mgIhALNZCT2WzSD7yP9P4hOUjjz9j+8TVDfxN48MNttPrsI/" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.184.tgz_1488948174502_0.6156645552255213" + }, + "directories": {}, + "contributors": [] + }, + "0.1.185": { + "name": "types-registry", + "version": "0.1.185", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.185", + "dist": { + "shasum": "df535de4a5500ecf090361c8b72b45585bef472b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.185.tgz", + "integrity": "sha512-vG6Ko7KWddadi8kIxLVJrAv9dArK9so0wTneWcuG66tHa0m7xyNB/mWfyTuE6miBMned3CDV6AHAfLzlKbOgCg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDloAMbUkey35/0HRL3Yg1ied/xMFWh4d5vO5EfyM3MsAiEAwsZb10OPsTGTAq1j3m4B5dY1pbZ7PMotsfAcGpGLbPA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.185.tgz_1488961832427_0.6895125622395426" + }, + "directories": {}, + "contributors": [] + }, + "0.1.186": { + "name": "types-registry", + "version": "0.1.186", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.186", + "dist": { + "shasum": "e208b9618300d32be117689719e3f96fe6481461", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.186.tgz", + "integrity": "sha512-+ISru0dddXYgwBRagpLoHmR0dEaUFe76Nhn8vBT2cCtmyaCMPJFme/rOCTGrCje/8tX4JW8g3pjeQrsAwwDZ8A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCs3rjSDEzfyzrD2vpCyf31heTkkMsN5xuXjUcsh2hBywIhAPubTs1UimvrtppXNWnbJHlwVJN/wSGZMM2dCA2S+QVw" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.186.tgz_1488962616222_0.2098258319310844" + }, + "directories": {}, + "contributors": [] + }, + "0.1.187": { + "name": "types-registry", + "version": "0.1.187", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.187", + "dist": { + "shasum": "767cbc327891047912ec2d593f8f85fd3f3ac5d0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.187.tgz", + "integrity": "sha512-DNGlBCiJh7GCw0awaNoug5zxGaBKHpxhuFAVEnbsWOk7xkhTyk8JcKY4k8NrY0Ka3sC4Gi5Gdj7LB42AZXRSOg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC3PI0vdRcgTtZ6VsAn7wdZHHSG0GU9oTcidTvNP1EDOAIgUtGUT9Qx+4ATF4B0s5p7HH8hfJXPIjOdwQWP/QJ4sLc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.187.tgz_1489003364315_0.061344530899077654" + }, + "directories": {}, + "contributors": [] + }, + "0.1.188": { + "name": "types-registry", + "version": "0.1.188", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.188", + "dist": { + "shasum": "9653dc682fd2b27e2dddd240f989579a7fbdf064", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.188.tgz", + "integrity": "sha512-TZQE5ZdqlURuphq+XODwsnoU6WgbD7b8n8mC95gJrWKwVFTb4/PigqNar3TUBUfGmF+tbcQcfEws4MQauBVPnw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCnurQhk/l05N4vF2wObA/WYc8t3eE3W4IZS4blmfrSmAIhAKKgx2Q5VuQuhVmrTZpOb79Wvup0oF/AVxk3Jrv+aGA3" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.188.tgz_1489019279695_0.20072278147563338" + }, + "directories": {}, + "contributors": [] + }, + "0.1.189": { + "name": "types-registry", + "version": "0.1.189", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.189", + "dist": { + "shasum": "454a30c7faa8d4d179a9d19312f8578673673467", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.189.tgz", + "integrity": "sha512-Anx6Wjk1GyzK3mmG7VojSrTi1oVoPy5ATbRRv47k6Hdor8L6JmDviA118GYjx276eQJl8/J0OFGnVuBDc3UW+g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCNzFFj1MgMkCatthh/jbOhnv5LfG2A0K3Bt+EXCvDbewIhANwZZvUbKZeyGr6kducMyspaQUosP+xNjQyUXBQPy8kf" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.189.tgz_1489087422557_0.24495280697010458" + }, + "directories": {}, + "contributors": [] + }, + "0.1.190": { + "name": "types-registry", + "version": "0.1.190", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.190", + "dist": { + "shasum": "f999a44ab198263c94a398d82619976efda8feff", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.190.tgz", + "integrity": "sha512-bCg5hXxbo3qkbgTGhMHOH9cPXsxMPyoSkkV2Ed2USr6v135u2ngM1UxWH7zCzm2WU3UpbT1MuNj1HcUySfrkeA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBpfuJ3WE0trHRHOmMSKevQ2MjagxmvCbZR2CKgE70JfAiEAwmGxSc4oVUOtZ91JLnTMd2aF64LcCIqOr0sWSAm8Bgo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.190.tgz_1489097691136_0.3254410461522639" + }, + "directories": {}, + "contributors": [] + }, + "0.1.191": { + "name": "types-registry", + "version": "0.1.191", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.191", + "dist": { + "shasum": "57186963e62f74b24047e6e5319c6996df84bdd6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.191.tgz", + "integrity": "sha512-zJpggaLAH7geFgalK1eryawsB3mkAXWeLEtioDreJCDkBw7jqeAKaarBXZH+DEQ1ODFBeXLUiT1MKM3e+qMmSg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEKz3IKQlEYA16Dk06owgjAdj2UjfW9FGyL6OuTLJNxKAiEA+1BZYFL++Iy5ZmooaORL5x1c3KdPTjPGsXX0DbtbJXA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.191.tgz_1489124490071_0.8777792470064014" + }, + "directories": {}, + "contributors": [] + }, + "0.1.192": { + "name": "types-registry", + "version": "0.1.192", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.192", + "dist": { + "shasum": "55a462aa19b31f8344a3849bf756b5321ee07fb6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.192.tgz", + "integrity": "sha512-+e4Z4//lGS9fT648sRxiW5sepBsH66PgC+J/LWzc6S4ZEMKL7M9Fojp/13uzadWoXxX9O8sOovXjWBbqd0KD5A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCk0mUgxJ35NyHuCmOmVZYQkQ3u9O0ewpGI09oLsqvF3AIgRZkhzOzWj2Txy7pG/iYUyJovSrXzEYQOUufvcKedeRY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.192.tgz_1489126102066_0.7979169862810522" + }, + "directories": {}, + "contributors": [] + }, + "0.1.193": { + "name": "types-registry", + "version": "0.1.193", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.193", + "dist": { + "shasum": "ccd483a8e44936ab61b193313b6c4a6dd64dae31", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.193.tgz", + "integrity": "sha512-EQHSf6ivTGbuu/kIkqSP7sFbTyn/TVzjAL9mFsiqeNEY6EfXijJ5hYxN6kVdvpX9pVE0NWyN6D/m4SzZ6AqOMg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBeeI7hz6wcgzPnjhIdZ7f8Ev8b2/Yl5FAsFvAc3r+igAiEAq+i/120cGK2PEvNQrUoY4I3idpcgyKtSgVaIsm0HZ/8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.193.tgz_1489126370819_0.4982127870898694" + }, + "directories": {}, + "contributors": [] + }, + "0.1.194": { + "name": "types-registry", + "version": "0.1.194", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.194", + "dist": { + "shasum": "87777da61fcf9a55335e5f653dc84c5667b3a1e3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.194.tgz", + "integrity": "sha512-A2+L69hs0H1Bcld6i1dBny0ZI/EbjOVu4hC+f/PHN5xGNRHNVCwQFdaGvgHghYqzq/zxdiqPsf5pS1FY4QSdNQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCl7UHIXOEirJQLuZULoJbMhNPwWeYr9G0aZSpkUGtazgIhANCgn8txgEy18C3P51m2gxXSfcCaCVkqzixt6ZYcq+Hr" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.194.tgz_1489126747415_0.3905931869521737" + }, + "directories": {}, + "contributors": [] + }, + "0.1.195": { + "name": "types-registry", + "version": "0.1.195", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.195", + "dist": { + "shasum": "03115744a0fe722806f0c143221f1222df51c871", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.195.tgz", + "integrity": "sha512-JCJa/xrHrxDD/T1cxyV0O/4orvYalnxm4pMuze5TP5QFHI/IxdnJQZX80ZUUn3IwzfVPYu1GXw2aeCmvbTQYIg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCQI4EJTvllkG1o3pD9dJzmIG3J4brYDWGrEqEkLzmIewIgfTjHXvn1OAwj7vKxPX1HicuHX+9o14NrYdwUDDRqQqg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.195.tgz_1489127429559_0.17228434444405138" + }, + "directories": {}, + "contributors": [] + }, + "0.1.196": { + "name": "types-registry", + "version": "0.1.196", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.196", + "dist": { + "shasum": "c946af6b10c50c8b54cab678506285c2349f5798", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.196.tgz", + "integrity": "sha512-JTRND8uwhV/0eS4i9OqxthdaOjW6f2gY5bCMsw6ax6s8IT1effk2SyLYxYrmZYgJOx07YYGb0ALiUuFO8to/EQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAhXnZeWDlq3AT7PLTJMrT9AuXL1d7CbOKxaVbEdFMEhAiEAuh2B/sYeWkWeovZFvZfQ1vwDnJzxAMA3B4N1+Uw51jw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.196.tgz_1489128179101_0.24410372995771468" + }, + "directories": {}, + "contributors": [] + }, + "0.1.197": { + "name": "types-registry", + "version": "0.1.197", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.197", + "dist": { + "shasum": "983accf13ff81799128e9d85a0711ba6dda67ee9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.197.tgz", + "integrity": "sha512-u6et5QZ4E9Kqk7fH9HDWaPThkmarSs2d7mJgahfeDnobPaKZtpvdvfb+SrCr5yNg6x/Szei9azfnA4Ic4JzKbA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAq9Q4rXyC2vhRDPV+ndbefaG74VhV0IWu81hmu5EpytAiEAxInUAwvPQUvwGQ5jYSijcGXqee710jB38bTv8eKU32k=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.197.tgz_1489128509658_0.6469918941147625" + }, + "directories": {}, + "contributors": [] + }, + "0.1.198": { + "name": "types-registry", + "version": "0.1.198", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.198", + "dist": { + "shasum": "c9d0ff7d329af23018781d0ccfee5253a9b974d3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.198.tgz", + "integrity": "sha512-UvctgSsRiCYzFwIVLl4JwqQWM2XWfvKgF1j1nepBoqtfQfAFRzakaC5W5YmubWFQNdLnhTh+rhNvG4Jl6VzDEA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE1rRodn4oE/Vw2YpvKW9I2/pDwkHXsyHtlhSrZ5qIiFAiBLraTsTrBH6KGyL0Iusz1uyg1ic2i4zG2SCdKFNpi7YA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.198.tgz_1489129135528_0.6486007084604353" + }, + "directories": {}, + "contributors": [] + }, + "0.1.199": { + "name": "types-registry", + "version": "0.1.199", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.199", + "dist": { + "shasum": "305aae690264260539a48c4e39c260e2cc791f11", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.199.tgz", + "integrity": "sha512-jyknsJQXkk/9HvN70293Z6ODkN7Eg4nyMpP3Id9DQVAGTaz5iE0aa1eJ5F5mhIyUYqJFL+YAfcvXnFWh4OMUNQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFENBH5yrflHuF9RdE+7qjJhb3zuzHuzkqbKSgIgU5nYAiEA2N+54WWTIwF74dicVZNOYsMnNmcU52IapJUVqkv25nY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.199.tgz_1489129827614_0.9193285796791315" + }, + "directories": {}, + "contributors": [] + }, + "0.1.200": { + "name": "types-registry", + "version": "0.1.200", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.200", + "dist": { + "shasum": "52d097c4bfe52020dfc424a0b243f456ccbd1919", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.200.tgz", + "integrity": "sha512-F0mZvbYnz0VOWhINpMntxMvALG9j9PNmDQtFVhEtFDBSjDT+AU9ilxTPl1zF2xTs9XAAZzBVVTCEc2YDwk77DA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIB71xurY5UuDmeZYe+7zaw7OP1+raMSxKLFoGAsafbwsAiEAqU/hRxEfDAl2AtP9nYclqYKrjxY02RxRhSrj8LlQjHE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.200.tgz_1489130977235_0.8185720541514456" + }, + "directories": {}, + "contributors": [] + }, + "0.1.201": { + "name": "types-registry", + "version": "0.1.201", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.201", + "dist": { + "shasum": "c2e08a86d129f66f88421a8602770a7a1168f672", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.201.tgz", + "integrity": "sha512-+uoIGH3xvog43CwRmQ7iqHlKq81qSZjOGDMYC9d5pgc8gPoOwqIubw8TP9jc51BJahRV34SCXL+eiFZ9hmXCHg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGPJWLu1XfKdfcEp8cg7qtjN35t4IhU/X6u9tzar6hU9AiEA3CTTzpMqVjg0pl3SJ/BTTTuAh2JfXRHm9stD0ONiz0k=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.201.tgz_1489191820210_0.9810243577230722" + }, + "directories": {}, + "contributors": [] + }, + "0.1.202": { + "name": "types-registry", + "version": "0.1.202", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.202", + "dist": { + "shasum": "15ee68ae662d1ac52efddd01605b2fba6379dd9c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.202.tgz", + "integrity": "sha512-8Gi5kkGLS6pPWr6aedTkeLe6o0hL/HXQ5lKWFUr/Bu7Ae8iXyafrp3HgCenv5PLOsboqgQgq/hp1M+Eh6sp1Mg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHphrNQ7WrKKyHVIV1ZPmcg/CTpgx0rKoUsygKa1V6cXAiEA2xmhrxggy8O85ry/81ERdh8WciyCbktpTwE0CsJ+t+Y=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.202.tgz_1489192346063_0.3781157673802227" + }, + "directories": {}, + "contributors": [] + }, + "0.1.203": { + "name": "types-registry", + "version": "0.1.203", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.203", + "dist": { + "shasum": "d3237fbe7ed6f682c2be52efa1b78070dea21fcb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.203.tgz", + "integrity": "sha512-SOQbmq72ThKqSUO/uFka8PalehFrePVdR42QqmLtkvranQVfw8ug6zkG9xDlsoTe/3flC4yw3okmOwXE9p7TPA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCt0a8IcWAlLPrKxHfTq2rwoD/RHYOhahE4h4H+kwAZzQIgBUNkKGhzfL0OoKyMleNQ5w6QdEnzd7D+FB8OTL/uJUM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.203.tgz_1489195069987_0.08327291905879974" + }, + "directories": {}, + "contributors": [] + }, + "0.1.204": { + "name": "types-registry", + "version": "0.1.204", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.204", + "dist": { + "shasum": "2232fc5de3f5ae4bea52d0b0ee3c6b9ffbdca0a6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.204.tgz", + "integrity": "sha512-3Vnxcl6rxqEha9vD0FzN78630BDobIN7Ah+d70Afjtpi9pYLTNMbYlk5htNhOxRszQW3/kulpO6X7oBEgG0nxw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDHcfL5wAa8twpDXWzBU/uQ0INXUeDKbQnJVT/8Ogcz2gIgTvKW7FuZy7IHpHGqSGsB4scll4YYROqFzAbZBm5x4yI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.204.tgz_1489196213132_0.6011816910468042" + }, + "directories": {}, + "contributors": [] + }, + "0.1.205": { + "name": "types-registry", + "version": "0.1.205", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.205", + "dist": { + "shasum": "fceb2855da5c31332876c218db60aa7be987f7f0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.205.tgz", + "integrity": "sha512-0/l0rTjYwT9JHnhZMNY3jXZDADFPQmgKff3eh9tgBkDFoxyL+IJPPu4b/QjJwqQh9e7fLMPGwYBimS332S4opA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICWRpl/g2/9R7D76A2oGG6dcoVTvgUN3XRHiOM+qUiWWAiEAyO05W2/e3OQjhHJL5EsXG4KiBFAbL7vMGm2fmur1C4Q=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.205.tgz_1489457039128_0.6597737558186054" + }, + "directories": {}, + "contributors": [] + }, + "0.1.206": { + "name": "types-registry", + "version": "0.1.206", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.206", + "dist": { + "shasum": "41eb7b63a763bf66d9f3ff5a2a4fd436b35701ba", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.206.tgz", + "integrity": "sha512-yflDuAHeV9eBtvd+JPc28jPa1DSrfV4LzvOG/z/kWsqiXM5Cv516jaueprnLLTGSSHlyZmshD2SC/QwlJzaKiQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD7uDpUgs0SAoOX/DYCoqZnGbnx39QcznkV1aclJjmRcgIhAKvRBms4OY66LUV+FB2gsNYuZ7zdZ3qWmTOnjjXURUcP" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.206.tgz_1489511740968_0.9219428419601172" + }, + "directories": {}, + "contributors": [] + }, + "0.1.207": { + "name": "types-registry", + "version": "0.1.207", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.207", + "dist": { + "shasum": "d1fcfe4637b2b5095b66faa5aef98907fe7169bd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.207.tgz", + "integrity": "sha512-GktgN71c8dp/J/PABJ+6KOEzKhRykep160dTN32RRlkzhO+I3okVJFbFHlZTwRkTvFoQUSpo3ppo0ps/IOX7YQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCFqdVN7iBwTgvorDK7Ue4s0W9+rxVfg28EEYxLO1oqugIgYqcikSPFBZVmf2PYraMn6OYRLr4iofXer4Jn+Tr+MV4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.207.tgz_1489675183991_0.6387127242051065" + }, + "directories": {}, + "contributors": [] + }, + "0.1.208": { + "name": "types-registry", + "version": "0.1.208", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.208", + "dist": { + "shasum": "285aca47c1b25421552d8d74b5fcc4a453952fe1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.208.tgz", + "integrity": "sha512-rSlHZLbJC7rfxnee2pzreFvLtYvbcRv0WMz3wgY5EPoZxl2OGUsw9/L3IbysWc/i2K4p0G16bpJ2hp4vYL9UfA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDnu2SruR3Y3f3F0Ks4MpBfPFuLDIESWId01rzknRP0ZQIgNJofNTV9ZJpNIDsD1fYPE5QsLew2rrGd8canv80DDUc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.208.tgz_1489773757321_0.7859511522110552" + }, + "directories": {}, + "contributors": [] + }, + "0.1.209": { + "name": "types-registry", + "version": "0.1.209", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.209", + "dist": { + "shasum": "b168b5a19af0b2f4d053781f8d8b226d338a3570", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.209.tgz", + "integrity": "sha512-mdBVsf96dDh3ttzAI1lMkxkeVeN+wVksxb5xVzFwN7yqhoK3vGeMj9I8OyUUN0dbbg6zWnyk98XlU/+iYv0ZjQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDCdbL8ygiegHOxXUFv0AITetcpC+BhFepCw7RKhZsQ9AIgDL8ykq5AlxRD3fYJxo7CfYDD9qhA3mexab2c0nmtLfI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.209.tgz_1490034374591_0.3092060962226242" + }, + "directories": {}, + "contributors": [] + }, + "0.1.210": { + "name": "types-registry", + "version": "0.1.210", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.210", + "dist": { + "shasum": "48fb736015d685dea8cf57a894387ad145dce1d9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.210.tgz", + "integrity": "sha512-uGbm0GHoAer/Y/WrwHHvnfbAU7DKxD6xBg80Jv5SXyCwg28Yd9DKvEVEqFzwdV7f5giSbDzcHvpoHUvf4x8tew==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCmSUcRvczebvnPRRNMXS4A8C/fkYVC2KxvQJyNpHvPKAIgXyPdTfdHYML3zoBXM/lcXSqm8YoB0wOlyeOn/56ieqE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.210.tgz_1490045698827_0.10120328073389828" + }, + "directories": {}, + "contributors": [] + }, + "0.1.211": { + "name": "types-registry", + "version": "0.1.211", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.211", + "dist": { + "shasum": "d99f3dda6c3daabe7af1d987f1b4b3a36fc5809f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.211.tgz", + "integrity": "sha512-MIzzwi2EPrI1fXxCaLVAGVXGMMt1sKEv6HSX7w/pEYA49wz6O2P1hPGMlGn88tQ0JuOR00DiyeMy+uuOB+1tvg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEuf0pbZfGIi0PJVLQ9X24qZyj6vv9ZybRDXIYKOSzeQAiEAxUDX6gxTWFaBRyhMkr1EznzVtsrr96wAkQrxFEYzmJU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.211.tgz_1490047506864_0.4804755188524723" + }, + "directories": {}, + "contributors": [] + }, + "0.1.212": { + "name": "types-registry", + "version": "0.1.212", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.212", + "dist": { + "shasum": "1e5c46945e5af5d7380dfe67f76926f37ce29361", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.212.tgz", + "integrity": "sha512-IaaSK0YtaPV1sivsrOtaKeJHrZp15j7ubDhPIBiXUjLjFmNIx02XXeGoSpgohSAIxd16RqKWhoGVTCSeNzzgDw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDuqWBz9F2CPbPgwLJ3pRa8stgB3HNhltAYIHeSrX7/MgIhAPMDWnzXkF01wqKPEom+A5MaiKd9sp8cs2AByu75y782" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.212.tgz_1490048958351_0.41221653250977397" + }, + "directories": {}, + "contributors": [] + }, + "0.1.213": { + "name": "types-registry", + "version": "0.1.213", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.213", + "dist": { + "shasum": "894988f5231c322d7b42f6c60ba825be85241a7c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.213.tgz", + "integrity": "sha512-on4Cc/SBr/gBip6lEOJbvwyodtF0zADQMX6z8J/vlVn6NILMD34qwS4WS80M9M9PCZt3E84X8x5/SDtu5hGerw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIC4cLzI1+T+sprA7irw6MdDs4v2sx17sD7HAFl9gC7GkAiEA1ZgmS9AyimlFsVIZf4WJy37Ns0p48Cw4ytio2UR18UI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.213.tgz_1490049657793_0.8695775484666228" + }, + "directories": {}, + "contributors": [] + }, + "0.1.214": { + "name": "types-registry", + "version": "0.1.214", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.214", + "dist": { + "shasum": "8f259126972401923db6252519dd314d9cf40899", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.214.tgz", + "integrity": "sha512-85FEeZpH3U7mBWD5s2ETZYy8yU5szBjW+A4QbsNf6WmfAJ65fzAtr0n6HFxcW23EjI0uXtD1YSzsN/db3kw8aw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEtkwv3RUMemOMCnefmyXy0SVQ3cOE+3j6DaFPjnGfUyAiBfEuAAhl1kLtLwsUJUfOIYzZ2yZS6212ebdJkhPPnF9A==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.214.tgz_1490125967128_0.09145718486979604" + }, + "directories": {}, + "contributors": [] + }, + "0.1.215": { + "name": "types-registry", + "version": "0.1.215", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.215", + "dist": { + "shasum": "3fde30ac0e8785adcf6eeaba34f823232268b341", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.215.tgz", + "integrity": "sha512-9sjpF5rORzK3bh4hnp+heuPDDDdnAzsFCRi6pS/YdgOYlzIar2+1QmEcNW4qNvAxW9TZ1HAYZ+gVlcKdhXLpNA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEUA+Iqr9tx1lDI1NxJBAH3KJuHhzsPEovdMABb50NpHAiEA4ESGhsb06yizPt62052rlv4L5hDzAgbAH46wuU/+LQ0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.215.tgz_1490126764546_0.7361978448461741" + }, + "directories": {}, + "contributors": [] + }, + "0.1.216": { + "name": "types-registry", + "version": "0.1.216", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.216", + "dist": { + "shasum": "549454de71fb98e57319c9d00e038db19747e75a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.216.tgz", + "integrity": "sha512-OFsch4C2+4Ad68EkD8xKgYoW2163sDduJN50RKoDfFShq0NfOSuJa58BZUxdT3sVnSYfK8nQNCzxDx+nZNPIsg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDwhwFR7rNuVf0defVoH0n9BH7AcIKYnXdu4CkXVPSO1QIgdgTuT+kwhQ7mYtM7NYRdYGWlH7/BEw4mMJzw2vck83U=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.216.tgz_1490127596760_0.2619672263972461" + }, + "directories": {}, + "contributors": [] + }, + "0.1.217": { + "name": "types-registry", + "version": "0.1.217", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.217", + "dist": { + "shasum": "6253d0799dda59fef90163a9c8ea3e0233dbb5a6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.217.tgz", + "integrity": "sha512-fhr/2kXDV96rK/C4z96vmvbPBgPMOrXjFMVBr+nh1OAIHaJ3BSs2LtWM+4QGOUklqenTT0+/LpuAFgWMulgkVw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFGriQ3pUzBL5lmLzNjcKvSeU4joNMOquyigo6oRjDSrAiBz3mOzjSMbjKV6/HrguWVd2l++i9/lwgq2moAFBvQY2g==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.217.tgz_1490130524305_0.09878989914432168" + }, + "directories": {}, + "contributors": [] + }, + "0.1.218": { + "name": "types-registry", + "version": "0.1.218", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.218", + "dist": { + "shasum": "9cee2c1db8c70b8fb0697c0c87aa7e50438ade01", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.218.tgz", + "integrity": "sha512-4Wzo/WDjUzXjl/h+nWr6z+H2UFfTuLqwD+Bzk9BpQgfve2p7ggM9THWMMdDhZte3bFHvcOuOi6xYId3zp4TmnA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICUwH16gDu+hZDtwI7+ov7LEf5Hud/QLjB/zO9X2GYIjAiEA7WGM4n54Z3KjqcveCmGamewexfDtS/Zx0KVDYzAj/H8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.218.tgz_1490142852213_0.5145705984905362" + }, + "directories": {}, + "contributors": [] + }, + "0.1.219": { + "name": "types-registry", + "version": "0.1.219", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.219", + "dist": { + "shasum": "52ab1bbc63f921a0aaf5fe9c197729ff52c9edd0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.219.tgz", + "integrity": "sha512-kTng6muUWxBoR7PN5WCQY964rKGGJJzq39zxA1B+BrYQB+zr/UdjRU8rH/B3BHuc50Qy874YZtOCaNhPgNOzew==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC/pamVPZcRz5gns/gxzESroumpHW5rEIhhPVXzb+uNEAIgKLjHMZQJAHWj64yvMujMPqzQ4LY7qJg+MlghrxHZS9w=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.219.tgz_1490215942142_0.2717545328196138" + }, + "directories": {}, + "contributors": [] + }, + "0.1.220": { + "name": "types-registry", + "version": "0.1.220", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.220", + "dist": { + "shasum": "46dacfce8378751c228e337f6e626e0d32affc68", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.220.tgz", + "integrity": "sha512-UBmYgr9PLZkCp5NwDTpiJeuw/f4BHtmv48xXYBO3ryHFakSq3XCUXKEkWepiiSCDMgmF2z2dUWL1Vv4P+DMdkA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD/OvELwU/3OqggPeAOeQuagufH51fTrOHuW03BszX27QIgcbvYT0OPLQSX02j/cbcNT+LF1BARAGVHVkyisPcOFvc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.220.tgz_1490223504851_0.40855401824228466" + }, + "directories": {}, + "contributors": [] + }, + "0.1.221": { + "name": "types-registry", + "version": "0.1.221", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.221", + "dist": { + "shasum": "14246b49169fb1f4f5fb9ba6512a596189f9c87a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.221.tgz", + "integrity": "sha512-0E9DAkc0yP2jFVQQMstickAim8fZ8qmjZtyvNxbb01+kYbzCPmH+33DtFubd61PDUXlTHFa7zcprIn+3Oin5eQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBIDl/hA+wD6TWyyATwjbe1UACQDkWcOR6Ndi936serkAiAEz/KGGG3tRDDR1NPSFDqO42HR8fHnH7fN2463zq8lGg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.221.tgz_1490371350813_0.7513582650572062" + }, + "directories": {}, + "contributors": [] + }, + "0.1.222": { + "name": "types-registry", + "version": "0.1.222", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.222", + "dist": { + "shasum": "107fc2ab7bf264ff48ae2a353872bbb52ba10cce", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.222.tgz", + "integrity": "sha512-wLw/fDpsuCNLQ9bvC07R/juqB5QwSI7VqW430UXXbajHIdzpX3w5o7vV+hfiln5lZGzHhI8nV5KbFb1lWJ2mIQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDRB4sAqH2O2E3glMTtIrE7bm6WPsWIBCGeKG0kRC523AIhAKVKbxPPtDA5x7nbA7WodEQW+itWQVwwITDd9IAq2rlC" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.222.tgz_1490373443849_0.16751326364465058" + }, + "directories": {}, + "contributors": [] + }, + "0.1.223": { + "name": "types-registry", + "version": "0.1.223", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.223", + "dist": { + "shasum": "b0c6816c89daac9b1eee89ff9614ab50142e76e9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.223.tgz", + "integrity": "sha512-/ap0Y7SMKML1CEeP4GgxclTv17EAmFT2UnegjALjX2Gtu3cRnwgS0r6ZQ4wtWpO8Ly3wacBkAQOD4NZ+bVYDEQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC/E5VPycOjHRowHDFkpc8jUPmBTUrO6Uz+39xpaP0U+AIgJSjR8QUQGI1LkAoeyfUBOkS3KDZ4wyN9rs0QCTnKzo4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.223.tgz_1490631640105_0.3223096802830696" + }, + "directories": {}, + "contributors": [] + }, + "0.1.224": { + "name": "types-registry", + "version": "0.1.224", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.224", + "dist": { + "shasum": "03c0fe731eac6e9d5f0881ba9ffb8af63284813f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.224.tgz", + "integrity": "sha512-sG7Q7rWOsBjPa1jQe5WObFYsk30V4/uYMg/+sEETOhg9UREMpodxyOCIoSRhX6PagPBWnDlktWTrHGYF4TkkIg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD4FI78lfSOYVyHbyf5NMU67B6L8z5kNqo26u3qhEsv+wIgJULvtkjOw+cfF0inpE0jXOrBLF9SPamsBhrGLnl8j0Y=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.224.tgz_1490636270347_0.21683383313938975" + }, + "directories": {}, + "contributors": [] + }, + "0.1.225": { + "name": "types-registry", + "version": "0.1.225", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.225", + "dist": { + "shasum": "e53cc6c9172644728b450592c4b0710b6447dae3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.225.tgz", + "integrity": "sha512-bEHTpWTds7RnIt9yTbPtlcyBbebV3f0l7TiK4Am/WOqmIXmgl2gahOxdWxghYBZ3vxmNOO9x9yQ2UCZPVkniiQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEMCIE1defVNjC2sHiW4w+gaUwk+KckXDlPcq0Y2z0j9lN05Ah8kTeC18akhCMWqgHXg+Cd+drzz0dTxF5/W/fISj29S" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.225.tgz_1490647486566_0.429100597044453" + }, + "directories": {}, + "contributors": [] + }, + "0.1.226": { + "name": "types-registry", + "version": "0.1.226", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.226", + "dist": { + "shasum": "c6e1e88b3caca9adc5e9f2eefa7ace76c6b39b97", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.226.tgz", + "integrity": "sha512-BC7XX5nKZTNbHgA6NGYaLIm+42eyQNujJ5WFexddH/McO4nuG5CfIqSlsKEyH9yzn/iWCNm/CXhp17VmDzh7gw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD1UTKkEeiBUZND9PEGhdWasf0xv/UnVmwwbkCoFe5CuwIhAPlQbwK4KcV00ZnxxUkY1ET1SHTvBBN88az+tpOwpOtx" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.226.tgz_1490652299731_0.4414956490509212" + }, + "directories": {}, + "contributors": [] + }, + "0.1.227": { + "name": "types-registry", + "version": "0.1.227", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.227", + "dist": { + "shasum": "a14be31756a94a16e33d55b148bc7f8ea9dc8d18", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.227.tgz", + "integrity": "sha512-g7gkGkeXpSAT1uE6cFoaGmvFqeNxCQ1sRabkOStZq1F380FryKQn4ImcjaziwMo2INwDnR3x1wDIB8FJXPywaw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDzl9GJT5IlBXw8Tn7xkMChmFpG2PNPEwCB8ocQ48TyTAiEAtZvvynooIyc8Hn32XJahJqWDXITELnIh1Dx3vjmh/Qc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.227.tgz_1490720317627_0.9270433010533452" + }, + "directories": {}, + "contributors": [] + }, + "0.1.228": { + "name": "types-registry", + "version": "0.1.228", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.228", + "dist": { + "shasum": "797adb60132e29e91fbd336f4c6d9ef53046737a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.228.tgz", + "integrity": "sha512-bzUWxGEi5uMaMpiiPpw7lZl0i65hYwPPEFv7CHociACgwCN5HnEjsX7oIBiZfAJtrhfhB0NBnjsAGdwlqtnK5A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCzlIZEhNowUFPSgXCezqS9zjTbeGZPw7V+j29l14S/2QIhAL3jko7Gtib/J8H5JmMhNVjpv9OTATl4NxKCHEoqRd2q" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.228.tgz_1490720669052_0.919360886560753" + }, + "directories": {}, + "contributors": [] + }, + "0.1.229": { + "name": "types-registry", + "version": "0.1.229", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.229", + "dist": { + "shasum": "05c192e2124de6632b165c3285bc02b18b64a7b7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.229.tgz", + "integrity": "sha512-fulHPwigaX/ipClTs5lx4Kqi3gU9EMAtVxk1tbD9igw2aUXiBYnON1Vm4UdoiRgfvR8nJw/izG4T22Pipdb1JA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICkKi0Z4qPomuzMrbysv910Ru+ggGqcMiiFglInPTV+0AiEAvoiMpURP1SsCb2mFFLIb1RhBjM4gd90pa0DuJ7jbiDo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.229.tgz_1490732648155_0.9835232561454177" + }, + "directories": {}, + "contributors": [] + }, + "0.1.230": { + "name": "types-registry", + "version": "0.1.230", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.230", + "dist": { + "shasum": "03138755af1d5700abe20ed7e0211d980fb8bc7f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.230.tgz", + "integrity": "sha512-WBtlMwZgcZuvxOsqj3XCtphaXd16trysIESSnE9Fnq4VHP06DcSnOv+G3SfhodfLuJyPJfnSp0J4bRZICKpk+Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICFNSFIFWefoFggKH89+CP8Qnm5c0A9DyXJwJvte8tvdAiAHUZCRPUTecI8dGt2TVvsLdvhI4SuOMspa8K1Fz0eGog==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.230.tgz_1490737592581_0.9441179721616209" + }, + "directories": {}, + "contributors": [] + }, + "0.1.231": { + "name": "types-registry", + "version": "0.1.231", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.231", + "dist": { + "shasum": "3a16752e8464b388c7c288ec541a3b9b1038530a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.231.tgz", + "integrity": "sha512-WDWYxCkXneox0Jbp2/JSruZInwDPjryRELGOFutJLQaJLQb4FxhyKCjJ47nDOme0okji02AyDG8u0X7tp3sJtA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIC1J8xO1DKtle6p5Q8VbqmIqKLRuhPQXqmWJyf/0dcvZAiEA0Deww3que7VDyVyc27wVc8bEGE7beazE/7a8vhYy/8s=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.231.tgz_1490738272620_0.23720022663474083" + }, + "directories": {}, + "contributors": [] + }, + "0.1.232": { + "name": "types-registry", + "version": "0.1.232", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.232", + "dist": { + "shasum": "31093cf70e8a11429783fa6b6a6091f4982a4ea9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.232.tgz", + "integrity": "sha512-ggiqBq0I04ON7CK6TO4WpmUOLboA246Aj/X8y6GF0gRhbT0I5H3xbfByjdvw5btSZ8WP8wEJZOmfurtMbNVcrA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDWkCm4PYUt61HLxoNngassXpBSWqe8lLGH9xg6YHJCVwIgP/yPW6Py9S6KVy962dJyOU/C8v4KPCkJHDwy8Nyt8Ns=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.232.tgz_1490740216447_0.2936589636374265" + }, + "directories": {}, + "contributors": [] + }, + "0.1.233": { + "name": "types-registry", + "version": "0.1.233", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.233", + "dist": { + "shasum": "788a087d2305d02ece91e8d7b6e7513d362ecf1d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.233.tgz", + "integrity": "sha512-QVvoSBZF4sznrDb1cVFIWgAo8i6xVT5NOfcOXowV/tHNcFyo+1/L7Oxj+9oLgSn26lPHT23YSKeyase/6WPDAQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDSWgmX4F0KTQVmhlZMVTeubH0q/y31py5lBO3QV4IDwQIhAL2TXX4N5YWLTCGCgH8iB3dFuty/4yvGc0+SNaP0pU32" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.233.tgz_1490812390536_0.6448069335892797" + }, + "directories": {}, + "contributors": [] + }, + "0.1.234": { + "name": "types-registry", + "version": "0.1.234", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.234", + "dist": { + "shasum": "ee093840eb135709cf2f58375407347103fb7680", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.234.tgz", + "integrity": "sha512-3stJNIXqULjlVx/6L5n5llHkQ8iFV2pT2ZuKo8yhwSWjqHy5E810PF4Xurt4XbcTVqkkT+kXPWAT5Ex2fcDlZA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDxndjdetq1daaJ+0HoRKf8Pd7KEshusrEvK7cdO348ZwIhAMU3f9rxsBsrycTKtydHvPTKCssFyughQVFcGH4/tegz" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.234.tgz_1490888637136_0.36538478382863104" + }, + "directories": {}, + "contributors": [] + }, + "0.1.235": { + "name": "types-registry", + "version": "0.1.235", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.235", + "dist": { + "shasum": "d71a8a912af0b413ee105dd1389b62fcf95f19a8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.235.tgz", + "integrity": "sha512-lAAuoGVgwkVy3NMX1SpHEDONs7qOkbI2F0biyMdmTUwFvMfQJCYWVFwVkTQExTdcPPG8Tll2W240s5eSID2rsw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHEv+hQ9dvPFNbBvoZeJQk7rEEcAvBGPAK0Cg4hTx1dAAiEA95WT2B0dUleizsduMnQY/qdL/mB+JhAb3Cev30D+Ux4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.235.tgz_1490913830297_0.7696261266246438" + }, + "directories": {}, + "contributors": [] + }, + "0.1.236": { + "name": "types-registry", + "version": "0.1.236", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.236", + "dist": { + "shasum": "7932770eebecf04e82a2fb288a8ae4ec06d5f364", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.236.tgz", + "integrity": "sha512-YvMz84mV8PAxnW9h+5HuuTR4ScSacsodIET6v5D4M/CcHqEdz6WuNQa8crrZlN+LrkUCemqjPHMkx0+UGXzRqw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBOGaFujOdItm/bCDhbscMuQVkbMYFsGy3drAatqKiHIAiArcgQO0NtbyHxMdN/iyStmYwN1fV87YmhpOYdzZiOXPA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.236.tgz_1490979375448_0.3747933942358941" + }, + "directories": {}, + "contributors": [] + }, + "0.1.237": { + "name": "types-registry", + "version": "0.1.237", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.237", + "dist": { + "shasum": "bc8f27af039ece128cfecbcbfdff02f245fca316", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.237.tgz", + "integrity": "sha512-8aNCzJxJbYFYTfE89FA3MFrG0FLIRv7yD+C6KiU8BW2eJiul3OEqwFEaXKoaeBpsLYuFBjNFkl3WycFJG/HURw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCqur+XWCeD6PkY11F8sppH3/+H/4tnItrDT/uG2JFPJAIgUaSHCqZB9esvMR7icP40nAq4AEFpFYgZf5CFN7pI2fw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.237.tgz_1491837047917_0.8168698435183614" + }, + "directories": {}, + "contributors": [] + }, + "0.1.238": { + "name": "types-registry", + "version": "0.1.238", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.238", + "dist": { + "shasum": "6aad731532fc15187880f603216eb54e026f7dbc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.238.tgz", + "integrity": "sha512-lmqKtI6BY9op1CM7JceRYmvGty7aTeg8GeVzCzeY2YSv72FyDy7HfAnaNhlPFnIpxGKy2wjYSWInzyfmUff7gQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD+sTFS5jlc9Drmhvgb+ms5CseXcEaXAbLECoH3w2k7/AIhAKdRDXz443kQgrwK6Arl/ofPoZ9HHtGOIUK3cPxRPaoa" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.238.tgz_1491944876913_0.2796625434421003" + }, + "directories": {}, + "contributors": [] + }, + "0.1.239": { + "name": "types-registry", + "version": "0.1.239", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "Apache-2.0", + "_id": "types-registry@0.1.239", + "dist": { + "shasum": "d4bbe83b08045ce5bf8b9db18558e4d361433709", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.239.tgz", + "integrity": "sha512-uVOcDBNUCDaOXCtAqcZ+CXjMUjZ4DhQRlYAV2mdgXkDMEsPa+7aKVx5up0GEFQ/o2SCUwrlAVMqZNyVRAr++hA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDoCtR6jr3DX7rFF2xX0eBVc5MYYdMulOhgj7tACSIvnAIgMn1kWI1gn9Y+8xksmcPF+V/J+TgPbg9ZF2gG1mgSKKw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.239.tgz_1492123605654_0.2720383533742279" + }, + "directories": {}, + "contributors": [] + }, + "0.1.240": { + "name": "types-registry", + "version": "0.1.240", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.240", + "dist": { + "shasum": "b1c1f96bec6f3eb5a62c1c65a4d8949e049c9b98", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.240.tgz", + "integrity": "sha512-/cpPK/XBMWmBN9hQZQzt/Fn2XW799qwqIn5KRLaoRuzdPTSxPnEtHP7vJ/3zB+aqejsM65q1chy849sM2n0bDw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD+razOGTwBxcfe+LeMTm9VulgVWD+b3gjgLHS6EKb8zQIhALKOcE/e5OW8x/UL3ndc/zIHOIzGfhroV5rvvxgcqTTk" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.240.tgz_1493242818981_0.7756773021537811" + }, + "directories": {}, + "contributors": [] + }, + "0.1.241": { + "name": "types-registry", + "version": "0.1.241", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.241", + "dist": { + "shasum": "273864b530291742daa791c841fb60c414eaf351", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.241.tgz", + "integrity": "sha512-tTuuK7RH/hCyKgmKqDXKpvtV82jwvPbGgCbunwdjSXypArvOU1TVodesCMq4+gQ7+D0TmJnb/5nmSf6/crpyLQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCo/dn9NcG+jBxgoFwojtDQwnD+eSwJkLQuD/w6YQWjDwIgF/L14huJthr8fKSUeEC53w+jV/7FTFfxLf/r361tDCQ=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.241.tgz_1493244015610_0.6292181287426502" + }, + "directories": {}, + "contributors": [] + }, + "0.1.242": { + "name": "types-registry", + "version": "0.1.242", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.242", + "dist": { + "shasum": "68159fcf39ad1c3e5235290e0caa254704c30271", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.242.tgz", + "integrity": "sha512-Vm3+O7Nr97b72RW5W/LAAS+6T4jHV95yf02Fq4GQDuMkgRQelPk2Rjf2mW+544wM6Rm/Fk9uP/r8niPZhhDYMA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCKn1CZDLxc618sUixWQz4S/p71dIdwjJ2fkNLsMk020gIgXMHkg8ogaw0yWXk3sS5A/uu2LPxkiEXqMhn7bJb3Gc0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.242.tgz_1493305225244_0.34476013272069395" + }, + "directories": {}, + "contributors": [] + }, + "0.1.243": { + "name": "types-registry", + "version": "0.1.243", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.243", + "dist": { + "shasum": "35c47f291fc055bc48ebf7fea5c60506363360d5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.243.tgz", + "integrity": "sha512-XToG+xI+ITduVDrp4X2Vi2TnkTAyKG23iTq0Q5Mq1mC0YAV7oeQRm7Wwi6O1rRWnP6OUaG38rflwrn46/q5Pvg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDlp1P21cJ7LpvXpTrcOtxLdMZyYQfX8V2xp9ncO5FEXAiEA1irTt2rI+7U/9dP7mBNZ7HFzykcs17qtV6QdQFRmy7o=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.243.tgz_1493313016765_0.3401507542002946" + }, + "directories": {}, + "contributors": [] + }, + "0.1.244": { + "name": "types-registry", + "version": "0.1.244", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.244", + "dist": { + "shasum": "3d0e5f0a3b1694e05ce1c93aa7232b5d9dc9ad05", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.244.tgz", + "integrity": "sha512-FntsSHNIx4kafmiz6FbuBenva0mQKunXJQrC3ZIK03Wo15yEY7+J2w+iMQU4f28AcQQPpwfVhww9w9uOJQR9tw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCQgZVABP3Omo66AB2ziEpm0e1wDTFsAiq5N3jXr66J+QIgUs4suR5lxsycHumOhEstJlGG3ILApqWe0beud5YNM4Y=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.244.tgz_1493319668165_0.6641689105890691" + }, + "directories": {}, + "contributors": [] + }, + "0.1.245": { + "name": "types-registry", + "version": "0.1.245", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.245", + "dist": { + "shasum": "7aa830d943fc301db4161c2b5d46b08fbd6a61c3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.245.tgz", + "integrity": "sha512-QhUligxkHFkURnJdI9FJozSDYoyUDRx2iciO+3kHWz453OQFuneRebpCADuoH/mrOBw+l9kppKFuZBp+3+SvKA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBBlpHMDnkoQO0ywB1yNoVjsuzZ4IsnZWdbymt4EmVKAAiAyJueb5nm8V4ZEXrUgcubrTmN9qZkHP35OEB3uA1OUhQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.245.tgz_1493650248528_0.9111127865035087" + }, + "directories": {}, + "contributors": [] + }, + "0.1.246": { + "name": "types-registry", + "version": "0.1.246", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.246", + "dist": { + "shasum": "e83b26b441c8ea9931568cd8bf2649cdec131371", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.246.tgz", + "integrity": "sha512-RU89pcdw6Y94fyzg0f4G0NU0RSx3edCVRs/6oBxo+KW2+H8sCv3sdZ4xdg21xZ4RkkaIlf7s8+yLLfQ4bGzbkA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFLfpt1sZ5q6Atfc1CROWFeeP7r9hf8i4ugEjFfHsB0tAiEA+8MqULzqoa8LMHhQoOsObjEA+88cyvjSKAHoepW7fS0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.246.tgz_1493650503297_0.5094491462223232" + }, + "directories": {}, + "contributors": [] + }, + "0.1.247": { + "name": "types-registry", + "version": "0.1.247", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.247", + "dist": { + "shasum": "5fe00e6995438ae116cd61cfe0a6cc8f16a259c8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.247.tgz", + "integrity": "sha512-PLu1gfFNBFSKnb6mEEiEDpOBmCPB8DAWfv+xxfiTJoF6amDy+XdZpHNIvQbp8fjzppBJzeiEm4f5oQQr4zOs3A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDIZ4Yq9WeriEv5gZKE4Wm7Nvh5Pnj6F1TPiCL3MKlyzQIhAJGeYlHry8LrJzUODcirPxWJuYCxlMPM99oM5AI7hmjJ" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.247.tgz_1493667513560_0.34572793333791196" + }, + "directories": {}, + "contributors": [] + }, + "0.1.248": { + "name": "types-registry", + "version": "0.1.248", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.248", + "dist": { + "shasum": "78ce26182a8dcb5d450b6cbf8eac0bcfaa2b51c6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.248.tgz", + "integrity": "sha512-m9gJTt7svwLoEw1v9n8AabeO1Asi6xwfyLKj5pYuybHaOj6VLrxRtf+4pRG0EYXVuxfAyoWbB/bKSrvZ/RETxw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDg4WnsF2ZwBm1F9QDfxR+/OaWpVMeFgx5Sw9kkrDGlgQIgQTgyemCf8qNtDbxClZgq3Ak7lfGm+5AHqLk6FRfyLVQ=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.248.tgz_1493667751880_0.15040783653967083" + }, + "directories": {}, + "contributors": [] + }, + "0.1.249": { + "name": "types-registry", + "version": "0.1.249", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.249", + "dist": { + "shasum": "5b38d3216ccdc853185964985eb8fd7ce6fb1413", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.249.tgz", + "integrity": "sha512-kpiLXUIRHC1/ex7N6NMKxLRvuLOC+gFejiN637hcFouFMDGt5yfJJSHCZgboPoSKkWLzPpC6T70y1IFkOdCXXA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCB2GYtMLmmm/tWz/hcWDWGkyG/wpNj+q0rSxaG8sD8owIgEjzt+dMvr6ENPeV0yihzYR1m7lX1pWdhGHvclQkAM80=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.249.tgz_1493677427381_0.2631541364826262" + }, + "directories": {}, + "contributors": [] + }, + "0.1.250": { + "name": "types-registry", + "version": "0.1.250", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.250", + "dist": { + "shasum": "1bc9013007312523734f10c67c2eb82c6fd052e5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.250.tgz", + "integrity": "sha512-7Ft8EacCUSIdcwu8axFujfETUtQKhUE2bGkJll93WLsWOLTY2KxMSmlWll7QWG7agnkZNva0uEXgNmtYupHiCg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBcSaCfnECeywgfUKQPQLFfRYo39nRdPoiDErLNgnzH8AiEAnFVPiGpE4RfVj8/qxHxeO+r6a19WXRUqTkHCD9BCmnk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.250.tgz_1493679799132_0.7941736856009811" + }, + "directories": {}, + "contributors": [] + }, + "0.1.251": { + "name": "types-registry", + "version": "0.1.251", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.251", + "dist": { + "shasum": "ffb74268878bea0009f43cc0a45f18bd73211167", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.251.tgz", + "integrity": "sha512-eWIBsctfHH+gFfFKwcsP9ZEMDUs0R06/fh1bSeSJYI/YQrBdble0EvCQ36lsjWVCDjDrQPyeFb07ODloHGIKjg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDCromCN2P6l+eYtjmyJYzbWMLLwcrED42uhg7DV21XAQIgEcQL4tntRRavNnEJ8VJ0iEvTcYPwrvSZ6LOAw+RJf04=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.251.tgz_1493681259490_0.4107412463054061" + }, + "directories": {}, + "contributors": [] + }, + "0.1.252": { + "name": "types-registry", + "version": "0.1.252", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.252", + "dist": { + "shasum": "adafa2695208aac610e53caec8948944fcf1291d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.252.tgz", + "integrity": "sha512-eEK24h2ch6Olt2Hg396fM8uZYe0yljBWLNlOgA+aCxSSJKLQnuSnTTnMPuV+cTvhb+sNUnXqM+nGfM2oZRhehQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFNhHnc0OfJ7cxXY46Zy+jZ0glRrhIUnWZ1QXVLDmDP5AiAauChBOG9D8IHq5em3rdSbeRs+XoiZXJ5mgXvHYphA4Q==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.252.tgz_1493683933345_0.22620621672831476" + }, + "directories": {}, + "contributors": [] + }, + "0.1.253": { + "name": "types-registry", + "version": "0.1.253", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.253", + "dist": { + "shasum": "5b4629c174d29863163270f63742bd37aa7c3b1e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.253.tgz", + "integrity": "sha512-LkCGxkCM9Oglp9EXxXcOZd8exzOgQQGWOhXitSnzGIx4b619VdU3ELnZYv4MVQMfycxfvDCs62QMCn1cYMYh3Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDWlzk+UBE1KyIKBKuGSZ74pxvcunOZX2IS8Mie7Q2AKwIgRZkmdLlYvXKM5fks0JNkjnoyeg71OW1qUlF5s3ZwDmg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.253.tgz_1493746355661_0.2558626865502447" + }, + "directories": {}, + "contributors": [] + }, + "0.1.254": { + "name": "types-registry", + "version": "0.1.254", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.254", + "dist": { + "shasum": "8891f7b887994aa932bee92f55a4d3d68b6d62ac", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.254.tgz", + "integrity": "sha512-K1PZVnJ2hkZm9pZ2igwm/vc3pMTJ8OZ7LYH6olAnZtosJKJJfSas+Y+IpxYN47Ua0H5hZWB8ZNElrxLSLRYxgw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDBx/B5las0d6bTtWsOEdWr3yeTg7Bla6E++G79p2IU3AIgPSlO86PG+A5zl4Slj/IEvOzbwSGByhh39rYfqxMfVKs=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.254.tgz_1493832758836_0.11291090818122029" + }, + "directories": {}, + "contributors": [] + }, + "0.1.255": { + "name": "types-registry", + "version": "0.1.255", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.255", + "dist": { + "shasum": "89bdd0b1a32ba91417f8a66c50cc9c8410327ab6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.255.tgz", + "integrity": "sha512-tRw0RrM0MHbmLUGJSls//YjwvAg8S5gb0CUd0vfIoND+np3J9kbG4ylr2TjmGl4YsZN52DgZiyYOLBPO2ZSvJQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD5ZpYGD0ThqCCmo0ZbF7jOZV6S4r0M0L3ZFXWeV40IzQIhAK1XKGe7njyOA3Ur9pg6BNf3zUU5wnkidNVDn+1KogKF" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.255.tgz_1493834189765_0.3970148975495249" + }, + "directories": {}, + "contributors": [] + }, + "0.1.256": { + "name": "types-registry", + "version": "0.1.256", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.256", + "dist": { + "shasum": "b8dfcf1faa8ec46408d6a4bcbe50f831a860fe8f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.256.tgz", + "integrity": "sha512-ER1vU97Ywb/RnjmV380OGGMNkejV34ppN/05odq0Uz5ftzuxHrR8tZOpB2w68JJlu2xAsDBRIvlVDMRSq+uINQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEyf62DKC/lbADREZ4Ajfe9gUn5dvwQgrGkH2qLWjSy/AiA9u3xVMVfNoO823h83BRylp9oAh9fd5vbtPPSWzWBxkA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.256.tgz_1493834679580_0.20439842995256186" + }, + "directories": {}, + "contributors": [] + }, + "0.1.257": { + "name": "types-registry", + "version": "0.1.257", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.257", + "dist": { + "shasum": "ac6a8049c8c5c41a152d8f5a9d74c71cacb8e629", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.257.tgz", + "integrity": "sha512-kW7X2S8q8XM/Cs8gyqerztzk6ElH2GUamIpjtn9SXmFxoUaoLtwUGqBemmXyJshcR9eu9EJ/OhyZjXju1jClhA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDyVOpAwZUruStgkZ/X94uAgPK88TtTt3JSImEuk3egngIhALZfKrSMfVjuZLG7cHVDT3e5nAkvv7vyQ0WiZbFOeAkH" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.257.tgz_1493835214276_0.924356495263055" + }, + "directories": {}, + "contributors": [] + }, + "0.1.258": { + "name": "types-registry", + "version": "0.1.258", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.258", + "dist": { + "shasum": "9786257310b2f6890e72944eff80cf5206469128", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.258.tgz", + "integrity": "sha512-JiSeJ6hQijwvpPFiwvTcpo6yDJfepIeEK8xxBppe965RHCx5M7qeBgwk0ubauXztqLX34SAG6w3zMBEBcNXyqw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHLwt5lESObPFnMvafNVV2XfzOj948i34YG/bywDGJchAiA4UkTPxhk47dHDqtvtZZJPIbPMzJ33/0OsQBgljgRGhg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.258.tgz_1493835464698_0.6256665189284831" + }, + "directories": {}, + "contributors": [] + }, + "0.1.259": { + "name": "types-registry", + "version": "0.1.259", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.259", + "dist": { + "shasum": "a81be860d1316c43cb5dc50dfbcb36d2504990e9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.259.tgz", + "integrity": "sha512-B6DhR83x9b32VsYPfLLANz4N1mRyxVGSJZTKuHqNSymrILwxZGPe9+PvypF0SI9wIFj5G3Ky3OnUCKVd8fUxrA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDgu1IseMFnVdjQMDkMlFfHNepDU9T8UNJhkEwj6ggsOwIgc1YK8l6fiw8I/VH58hqCX/QTf+tj7J0mthgpuN+xw8w=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.259.tgz_1493836773787_0.40410459297709167" + }, + "directories": {}, + "contributors": [] + }, + "0.1.260": { + "name": "types-registry", + "version": "0.1.260", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.260", + "dist": { + "shasum": "1e7201c33237d5420277b1f7544678cca82e22bb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.260.tgz", + "integrity": "sha512-/Zv+Igym8U6atfo1IdtYy0FNSM9WrtmqQViXRgHGl7jmyFaeBrA4sfwNaC6bGffQ54sNfeGwHDELSGKSfltKaA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHCBgz6yIbaTJnvjmlfoL6PzzjGHpVdWMbr7nz+NL8BUAiEA66GzoP3K5dacBhzvV1Uqkwthq1tWfo67HbtQn+FLwnY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.260.tgz_1493841420581_0.4552301182411611" + }, + "directories": {}, + "contributors": [] + }, + "0.1.261": { + "name": "types-registry", + "version": "0.1.261", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.261", + "dist": { + "shasum": "576f2fca1e08a881cb2b1a72e31a50c5c7ec05b9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.261.tgz", + "integrity": "sha512-Iegqt5e8/+4jSCQAspsPfEm6z1cQNpNJNrwGMaIoW+ChmjL5BesxolluBTdgmFlzKetATOvBJrmSLHKlbyUj+Q==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDt5tUqb1WPk6IJ9FQYT9SGl21/z6BnjjFzjEWGt6u4hwIgZpKsPMkTO8lKqpSVojA+ybMPFgmyQh6Ofa3TNSRP6gE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.261.tgz_1493917570121_0.7420377912931144" + }, + "directories": {}, + "contributors": [] + }, + "0.1.262": { + "name": "types-registry", + "version": "0.1.262", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.262", + "dist": { + "shasum": "461d884a3cec9aae59a993c109b8f59dad25eefd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.262.tgz", + "integrity": "sha512-3Jev5/Dcw6nNCi/iE3kfr+QNBGj4vlsqiu3zRaIZ9w9FBRFKjtfSPwcDJCqbFSsPQgJ5SyW8R1opSU2xaUuLsg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFPFIpZv7UV9OJvvko/kvyuynny9HBi5LMbDvTw+R8dAAiABPKaad6yZghFVEOWuloPX8Gjg1USsf//LV9O56e0Z3Q==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.262.tgz_1493925419257_0.8313572257757187" + }, + "directories": {}, + "contributors": [] + }, + "0.1.263": { + "name": "types-registry", + "version": "0.1.263", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.263", + "dist": { + "shasum": "a64696b532871d3d9b2241455262a5b1ec329c62", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.263.tgz", + "integrity": "sha512-NvGClMNkc0jdIUVjyw2lnKfZWQ9NXI9qlUBhTTVRqrWGY7vtamweXRDbfIIuJybz/4PQKglRMJkIHJhOKB9/Ww==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDD5DYsPwNy/pkrogR1Lvw9SIqpZv1vCF76cXhe6d8+QQIhAJotm98GPnABjIUhfkuYALooV3JP+cdiXiSneuwQrBMd" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.263.tgz_1493943620737_0.6066922030877322" + }, + "directories": {}, + "contributors": [] + }, + "0.1.264": { + "name": "types-registry", + "version": "0.1.264", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.264", + "dist": { + "shasum": "2c665410c693103a5cb00abb1fa2368d15337b7c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.264.tgz", + "integrity": "sha512-4e8g0yTuoO18IttmEK4Rq/Qt5vyG0K3BwaeUx7n+uV9CE1XKjE4BuUTWxNnnD2/pg7p8KV286d+9VG0lueqbEg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGSymxvq3K/VoRpiQUq2a3waOAxleEoZ1k5mTPhgT4qbAiEAzt9wJ2mdW76JJkapPvqFTIb6JVgg34qJ1cnT2fw0eF0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.264.tgz_1493944626181_0.5357315633445978" + }, + "directories": {}, + "contributors": [] + }, + "0.1.265": { + "name": "types-registry", + "version": "0.1.265", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.265", + "dist": { + "shasum": "e5643ae348869f00acfbf4cf75816162738a56bf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.265.tgz", + "integrity": "sha512-Y1nlI4aXeRjL2X7cnosHTr6REMzgid5og3f2Zbad4pBojcmKRM442laPPlVfaVm7v3/kYaXqirUPJGtXD1GR/g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAu8dQbdye2UWdRVKQx+bPSUaYJIIu4WWt2qIgQZZBhYAiAFtOu8LxpGrtchVy2/ydAP405xjQzf+yLcMNsLE3lB1A==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.265.tgz_1493947168350_0.284829331561923" + }, + "directories": {}, + "contributors": [] + }, + "0.1.266": { + "name": "types-registry", + "version": "0.1.266", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.266", + "dist": { + "shasum": "a13f9d56ef528a379f462fb7373cff1ff465f64e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.266.tgz", + "integrity": "sha512-MPx1RL/N/FBkRstA1D/0ETIfPhHlIfrnNXwWQFfxVlEgvwEZCX9pTj18q1HndZQ5rO7TM35F/rCt9F82Ik5HHg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCuOguy4NwMWTTqKh+UiW11aQdjK54V7A5yh8HLCRKqzwIgMC+YXZ+tulhp5WNlk+7IW3eNlFnoOuS4/soHes4rvto=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.266.tgz_1493957206673_0.5203482597135007" + }, + "directories": {}, + "contributors": [] + }, + "0.1.267": { + "name": "types-registry", + "version": "0.1.267", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.267", + "dist": { + "shasum": "50c495f89fce05c22e03dbd6bb564ade83cea2f3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.267.tgz", + "integrity": "sha512-JgmGcGde1kxzCktFUM8aHfku0VOt1p6U7KfUdGNwgDdnOWtDDOiHtgHya93TjKXIgz1+S6J6Dx217SSlvXKC/w==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIG7DbbvO9Hu5686Jgsu8K6de39Op/IrpErx1aR0S+2wgAiEA+wVAuOvgIJ2d+Rkczlk71EtAGD8z949yzw90oHPuNxw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.267.tgz_1494000216942_0.017731610219925642" + }, + "directories": {}, + "contributors": [] + }, + "0.1.268": { + "name": "types-registry", + "version": "0.1.268", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.268", + "dist": { + "shasum": "9cc199c5ce4f40152379cc2aa4ac08aa85496781", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.268.tgz", + "integrity": "sha512-VTymnD/bP7fqopyapdejjK6zD+RZZCSscvovdo5Cbwv5Ww/Hi2EGXFhkesTHcUeaHVWahWwKRIFJbr7KZx6Vpw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDKuw+olAQOrZouJ6EQH41XTeEyOHfvL3dxDECD5UBMOQIhAM6lwJFZ0SrteI5RxzWnhrCWmx3G8DfjYmbSPrwAWOEV" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.268.tgz_1494026960074_0.6547162723727524" + }, + "directories": {}, + "contributors": [] + }, + "0.1.269": { + "name": "types-registry", + "version": "0.1.269", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.269", + "dist": { + "shasum": "c9caf8fdcf124fe6396af48a9ab0cda1df70e6c3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.269.tgz", + "integrity": "sha512-xqM7I0enDOaqRNTE17TLmpFUa4/2ZG6Ro2t52AAJqU+U2h/LxoWyixQIt7/NwVDqIap9oY7bd76v0bnqZ9dZOw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBVxjoIpvBYiLx6uVn9DnoIv2fKTZ5xlUJx6i7hBT9qsAiBSE+7Vi1xIMZtiBRgau51jIma/wQU7TXDX952XrCeW9w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.269.tgz_1494886938329_0.601621164008975" + }, + "directories": {}, + "contributors": [] + }, + "0.1.270": { + "name": "types-registry", + "version": "0.1.270", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.270", + "dist": { + "shasum": "0d121f44d3c09843a33dbb7b4cadf02a10d4893d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.270.tgz", + "integrity": "sha512-udL6uEYafFTq1KPl30WaYS4u23Ya3B+HIUR/fXurNTj5d2Jx0VOvBvm7Ag96U64Go7ErbPnVvPm8ilJfnEn5JQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHWXwGqiMYWpt8eNmVDZHKNO4q7R3lJrWrD7rt2sH9WAAiAd/Nr5RpiDHOxucrIHHzP5Xr4gNiNoU7CHJ4NHmKL0UQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.270.tgz_1494887197244_0.19854340725578368" + }, + "directories": {}, + "contributors": [] + }, + "0.1.271": { + "name": "types-registry", + "version": "0.1.271", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.271", + "dist": { + "shasum": "83b914f8cda1a39d2cb268641eaee92797602db1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.271.tgz", + "integrity": "sha512-mDnGp8PyF8CJHRy5d5gGF/WAnHYL7QUTLPDR5rHtkucPHADqDuMnvryyMdHh+KYfbRNBJJsMa+jcZdMv+SOTXg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDI8bQoEqtTKUIRbh+tDYKVRIYSvQPzJht3NsnqQFht1gIgJbPslhj/bz50q4nqdkG10PfxTaP/xUqbkWVBndht8yg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.271.tgz_1494967562149_0.48092433088459074" + }, + "directories": {}, + "contributors": [] + }, + "0.1.272": { + "name": "types-registry", + "version": "0.1.272", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.272", + "dist": { + "shasum": "40c45740f4c732111db7879a81c67bcaf310a36b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.272.tgz", + "integrity": "sha512-Rc7Ach39/ENXzJlExZTyNT5Wt3Cj/GnPMhq6bUd4LqUrUonYrvpOipXHrBRfMGmotuTitZqXoh1IV12kwxwc0A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHaCdo5N5zRivRoVMcaaC+QOYw3bwSKsyP891AwXZiOIAiEA11FPrKrFzJa8ha17J/WNAiHlHaz+Y8fAQz80pd5IgaY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.272.tgz_1495144024428_0.2677678333129734" + }, + "directories": {}, + "contributors": [] + }, + "0.1.273": { + "name": "types-registry", + "version": "0.1.273", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.273", + "dist": { + "shasum": "2ce83b2948e1f7e617ae3ee138f6b5b5a8d9cc44", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.273.tgz", + "integrity": "sha512-OFATcqwJYuW2y8cqLKW31E8oc18BcoIfcZ0f3FBiXxXvl3JqbYPwA2Oox6wJ81zWsfq/HhfEEmJFxxQLO/Aa7g==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAZz/DhH9pccIoOidNxx9LGk4Md3EnGMcu9Ffx3/Dp+SAiBDjc1EsBnhA3P+/+OUdQ6S7bMaiSb7mhdmirifELmJTA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.273.tgz_1495150152472_0.7542544910684228" + }, + "directories": {}, + "contributors": [] + }, + "0.1.274": { + "name": "types-registry", + "version": "0.1.274", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.274", + "dist": { + "shasum": "ba6e553c51365443303afa558f9a4f625534a45f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.274.tgz", + "integrity": "sha512-Y9+sFERfEPEijlOIqnhdg1HqNoYRSjvFgwdMUevqcxmzTXAlgXKvrKYUDs08VSYrPsQFztJCgxd6I2vdY4YzFQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDa6ou9LQP/R9igxLrwllbBf+8PY99zRRw9UixZfTP26gIhALvkb24Bjdpj63xvt4oKa1yHa4ptLV1uVNXSCiVJn/YV" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.274.tgz_1495150603828_0.28979950421489775" + }, + "directories": {}, + "contributors": [] + }, + "0.1.275": { + "name": "types-registry", + "version": "0.1.275", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.275", + "dist": { + "shasum": "97e5f794f71d531ca1349248db593ad08d3c9586", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.275.tgz", + "integrity": "sha512-SQ338PFaDev4+wpKrbNSSFmr4tHhaeyau5cTwDYon2IvMlEXX2o22QL7AHRRu2op9G8Y1uLppV1pnGplpueRTA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAunUioutSeyieFI99SbxF7RG4UCCMdicojsa2Cmgs+2AiEAikF8vwbzoZpHUj8jwNGYnV9IefehRCC0vxaFrf21cmU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.275.tgz_1495151289529_0.21304746344685555" + }, + "directories": {}, + "contributors": [] + }, + "0.1.276": { + "name": "types-registry", + "version": "0.1.276", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.276", + "dist": { + "shasum": "4927d71b02eb71f91841a7c2185ebe32d81a0370", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.276.tgz", + "integrity": "sha512-wX1k/9pAoK+K3xfBhWom+v1VZiWbA9XdShHW+Tv2rS6tHLlE9fh1PuiaV0fPKHYet+x/YnkTlzyTRkzL7qjs9A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBq87LNHtuEBVNthvVUsOiwxPdOsBvFtmZfqJ4BjAzZ6AiBBjxm4EGJrar6cl0EF5D7f8v3WOcHzD0DEyWzeXt1c2w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/types-registry-0.1.276.tgz_1495152451577_0.8948723585344851" + }, + "directories": {}, + "contributors": [] + }, + "0.1.277": { + "name": "types-registry", + "version": "0.1.277", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.277", + "dist": { + "shasum": "d099562add2ea2888513eba4144c187e89825272", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.277.tgz", + "integrity": "sha512-m3TQ54YDMSC3XsiDp/U64mQ/yA+CLRJKPVTOlMdJQ5TdzfD0Y0D3lKpMJueaIm0mUg2Tm4R28/711cM0+lobHg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDrjFnHoy8ghjZmA/b3Hfi7VT0739UV+Pu6P34ob4jvWwIgHndel00W6GYDoJbbF5y5M30BEguSu6x8plabgb4TYM8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.277.tgz_1495224270820_0.3222827569115907" + }, + "directories": {}, + "contributors": [] + }, + "0.1.278": { + "name": "types-registry", + "version": "0.1.278", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.278", + "dist": { + "shasum": "0e5d7cec35996f746e50a54a3a52465b762589de", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.278.tgz", + "integrity": "sha512-L8uWajDy6zJZXWzET5nGKz6R+eKEHuO5wkBGwYIGT2QkLYtVHOp/kXjMQVNhbndwRMKLnEesdVASSsE7wjbbug==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFaoNxaAXDULZRS/GOU3hVEEUaaVSBVgR+tkJK7HmzliAiBuC0f8UBYT5suX8p5fBSnahG0ZAoTpNAy6rYny0hGOOw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.278.tgz_1495227110460_0.5170747474767268" + }, + "directories": {}, + "contributors": [] + }, + "0.1.279": { + "name": "types-registry", + "version": "0.1.279", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.279", + "dist": { + "shasum": "462d9f0ec0bbd70bc1b0f7cf19282368edccc9d3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.279.tgz", + "integrity": "sha512-wi+Z/fIqcqlLYubTSg33ASTuWoD62gjgJUeD8cvcHQGt33tBo1b2aGN8SimnwO5HHlZS4g/gRhthgflg+7DUFw==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBrsklNOD4mznSB9u5QhK3k0jJP830pakmKmnczKJRgdAiEAgXMcnqBBV7aNVk8x++QnTpnoW4jtcVx8eajjKqIDLCA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.279.tgz_1495228589190_0.2219937660265714" + }, + "directories": {}, + "contributors": [] + }, + "0.1.280": { + "name": "types-registry", + "version": "0.1.280", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.280", + "dist": { + "shasum": "be7c0ceec26ca6c9adbeee6a65baad74901b9bd0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.280.tgz", + "integrity": "sha512-bMiIjxMdoVxZBvV6EW1S/cGesaJQ4BV5b0c1BLTZ5W9R8IuEbvo+UTXn/q3uVWT71gp7OBkDzf70XjVxrARnQg==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDybQXH9nn2a/qIzZ7vbiQLkKpeUEmhH9fP0M/dnVdcUAiAF+6ae7xAwViahVNCURvycCOFzQeMl/pheAWVudzFhnA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.280.tgz_1495237398697_0.7686692662537098" + }, + "directories": {}, + "contributors": [] + }, + "0.1.281": { + "name": "types-registry", + "version": "0.1.281", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.281", + "dist": { + "shasum": "3572c2051291fc56f9f533cdbc4b511b9903a90e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.281.tgz", + "integrity": "sha512-QDQBlOEV4OendsV/3RUmLlWcO2gX/l9VODfdJ+XlIiKi4ekdFtMEAaj/NM/gvXaQtw1+rJlP3fnSP+txEhxagQ==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDvBPTnxnl+++vqr+CHJSKHWtJUPcbfqIA99nHkc05lwwIgdkvDe8mLH49GafAL+nkYC96mBHbaSfrbTvPLJ9rMjdw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.281.tgz_1495473655559_0.8339784904383123" + }, + "directories": {}, + "contributors": [] + }, + "0.1.282": { + "name": "types-registry", + "version": "0.1.282", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.282", + "dist": { + "shasum": "6efe30ad0dad25cfda9cbed8a548e9a84589a501", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.282.tgz", + "integrity": "sha512-+JiEPnnNt1hW0QDeYzo5DDa6b7DNPCtSF3oDRm6vH/t8/KdgbLjV822QAeQab0uNwaiCxUegGpiWYJk8BUl6LA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIC0L8uBPUnJGMUMBxbo6f3SryASi38qxXovN2NIYUPF2AiBIPuEuw0SlG8i3OZBbAqBSAEklos3jcOxPkUiW+TeXYg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.282.tgz_1495485734389_0.6041409629397094" + }, + "directories": {}, + "contributors": [] + }, + "0.1.283": { + "name": "types-registry", + "version": "0.1.283", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.283", + "dist": { + "shasum": "d91fa421765ca8f3406b33a66e998bb385f77f05", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.283.tgz", + "integrity": "sha512-R8Ol+zpJJB3Ni+8fOxjbllY7MCCJSkhThurXtgFSY5nN7d3lZBFkzYFduu3gcIkSECeOIfVa+ZtHYl4XqRIC1A==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCID4TA7lGdc+zYQZE+2H7tsecmYgr+X9q9HyOG+O6RSXOAiBySWjrmJJ+VSvmjbBrt8akC+fwfpHMI0CD9hGmTAOcYw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.283.tgz_1495486435149_0.38612267351709306" + }, + "directories": {}, + "contributors": [] + }, + "0.1.284": { + "name": "types-registry", + "version": "0.1.284", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.284", + "dist": { + "shasum": "a70f68ab06d6598c0914c7827521463e78beb9ae", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.284.tgz", + "integrity": "sha512-DX9oOiAYuXkQ28FTqTgUlkFce8D2MfNHGM8T869gsJiq/R15AUuoIZwaGJWlpYgVgsts17TCMbWlffQ2RNN/ZA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEc5HcYfCndLv9ZrGF9SMp33dgIIkH5SlaKZKsiqfh2wAiEA06WD9l2TaWKgL7OSXYbZOW0fSIdJByE/7w9mPtolpLA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.284.tgz_1495490329442_0.7630576686933637" + }, + "directories": {}, + "contributors": [] + }, + "0.1.285": { + "name": "types-registry", + "version": "0.1.285", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.285", + "dist": { + "shasum": "5b8a164d903693e1062e6b13afcaf818453b81de", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.285.tgz", + "integrity": "sha512-QLc8+wRqH5vQDdGWk8I3HLtERE2W5UuUpESsATLsSXSlUplB/v6732kAABZ3r4GFDV6Aaa+YMS2zU1gS+BNBxA==", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFSmyoFnvZh7VGiVDTJJidKVJOoS+lrdgKQ/bcphdqLWAiEA/x1wi6GyXyLtXLu0hOAJp6dVMQIQpmzIkRP4o4I9O9o=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.285.tgz_1495847806132_0.8735610344447196" + }, + "directories": {}, + "contributors": [] + }, + "0.1.286": { + "name": "types-registry", + "version": "0.1.286", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.286", + "dist": { + "integrity": "sha512-OFgpjhlLjpS7Ky0USYP98QUpAzXu1sdup53RQES4TGYgIeIjo156rFBcoR4TmkRX6YIshEs1Jc3KoseT8OYF3w==", + "shasum": "f9920260a205004ccf787e22e82a27ec38e580ab", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.286.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCcxDN/tNRdhoaIUxfn77wvN+CnGuXnos1a81XZSF0CCwIhAPVMfUARkr6+Vm1GTS0ox55+/mr4jF+l8R9SYDjUHbKP" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.286.tgz_1496273462678_0.04016287554986775" + }, + "directories": {}, + "contributors": [] + }, + "0.1.287": { + "name": "types-registry", + "version": "0.1.287", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.287", + "dist": { + "integrity": "sha512-4K8kuXOflx/C50iCMazeKobqEnqZFjQhyOWB0mdI1Yi4ZrHrTgFpZc3j+CO3dqJYGVuz50IRm7JyuD1jnksakA==", + "shasum": "f9bdbb20f4ff47b229470f041b22f9977ec0ff9a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.287.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGiVsRIGmyllE2cgNhD36QDKHeDQiZ3O8JHPdL7ToyKHAiEA68MzuLBnSYrTGF7GfJYsUwV1YipFOFrLT2PSHlD0qfs=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.287.tgz_1496286322124_0.8251450371462852" + }, + "directories": {}, + "contributors": [] + }, + "0.1.288": { + "name": "types-registry", + "version": "0.1.288", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.288", + "dist": { + "integrity": "sha512-5cf6von8dmSsEi7vvm8lqOArqiosfTGk7KPSobzRBawYPaizcvNpfurxMoGukYd7bjAY0QEVOk3LugStof97RQ==", + "shasum": "55e2fefb3e23f062d49f16eae7c73458a2bb4b6f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.288.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDCN9TzCF2aJXqw5FnBaF8mEbwDxus5NSPxmgfdQMoDEAIhALme/mcjfuIIrERHWYGugIE1PByBRBJQB1qsYNl6TqoK" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.288.tgz_1496287149501_0.3176159583963454" + }, + "directories": {}, + "contributors": [] + }, + "0.1.289": { + "name": "types-registry", + "version": "0.1.289", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.289", + "dist": { + "integrity": "sha512-XiCnjQtGIUf1q5bEapOyd2h49ziV5aBjsoRdZgrqulCvZSk66tvauvMtkh2D/5uKkCueZKeuhbyuu6cCkQ53tg==", + "shasum": "e6d460d630869f45a19087b521c82fda39820a1a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.289.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICXHbw0/MP8gIxrOoYbTONkJWEUdrKIY1czFTJZTIOc9AiEAl0pFrqm2kFXANgb/g688v/nLqPDv0NSP2BhGJNddsIo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.289.tgz_1496293273746_0.14044278510846198" + }, + "directories": {}, + "contributors": [] + }, + "0.1.290": { + "name": "types-registry", + "version": "0.1.290", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.290", + "dist": { + "integrity": "sha512-3BSeeBUDKBkTCdF4gcDXWihIst9te/bGJtEGnNRIQi8DHZK7rHK/oEwNPsrgTq/VvVXTKrnf8chbBLbVRQbkYA==", + "shasum": "bd0eb02438f5ce202c845b69b6f691bf8607de42", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.290.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCd4jYRdtypqvIPYjrrgqtM6f5r4ADpgqhhsc0t78J8NwIhAIEbXKKmg+Bbi5Dhqbo0EbS0bWzCRR1waroj8RSKPwXa" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.290.tgz_1496294360265_0.6393742540385574" + }, + "directories": {}, + "contributors": [] + }, + "0.1.291": { + "name": "types-registry", + "version": "0.1.291", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.291", + "dist": { + "integrity": "sha512-60HbGNJ2qLFw9AeR6J2Rq0k3VxhBMqlcQ349tvHh0vUZ8gQSALoatq/mDCEtyY72jbE95q5TqPsrhv/5ZDu3UQ==", + "shasum": "2294eac015eca1f68f63b42f755a428fbe542c95", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.291.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAfkEED+RyLDeWtS95HuBwDM2AYpZbNMXSb0b8TQztMQAiEAhorDpprjyyOhSlFz9/afWy+BUz9dAVTUD3ktZcyEcec=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.291.tgz_1496294606430_0.7851886018179357" + }, + "directories": {}, + "contributors": [] + }, + "0.1.292": { + "name": "types-registry", + "version": "0.1.292", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.292", + "dist": { + "integrity": "sha512-4vcpUHVl1z2vPl5h5KET4DQWVUUUVS/vi6fr+vnDCuswX2C/j3v4SgsyI+IdaCYQ+EXwD0pYrKwMC2UvNVqB/Q==", + "shasum": "25f8ded167d5ae06c68c616f805dc5028c8457d1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.292.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE4UQ/QQhEMnQLPck4f9cd/7I3uLx41yQX0t8izw0JL9AiAq+zPiaQLuAPlEh7Rc1OWe0tCDOuum2+6AObcLlLUmkA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.292.tgz_1496295278102_0.6208381103351712" + }, + "directories": {}, + "contributors": [] + }, + "0.1.293": { + "name": "types-registry", + "version": "0.1.293", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.293", + "dist": { + "integrity": "sha512-Hv/2LK0gU4c6nBQf92xYHpgvU48c1Ow5g0PauFa03lBd/RWTn5BtbK6tEX8ygm41or27DS1czoCu9aGiz+kN8g==", + "shasum": "67973938869b2122e6ad85f03050dd2b536a4999", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.293.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCuMKOKbRwKtZ5atjBv+J1Syv0VCJhDzNVUTpxmm5CxTgIgTEaAwsy3+zlVC84ElORyyHUze4HVCDKUsoPgee8aCPo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.293.tgz_1496295591662_0.45493424381129444" + }, + "directories": {}, + "contributors": [] + }, + "0.1.294": { + "name": "types-registry", + "version": "0.1.294", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.294", + "dist": { + "integrity": "sha512-fZny1GGb4zrM0N240K7tkBroLT37w0elDVanSmG6y34Rl795UQaZhOJR8F/MbyErymNCqAZ/2MabWVc5eXZvBg==", + "shasum": "d0e0ba7b3ce7e7a888b0c2722f8f95f15386073a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.294.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC9gZDx//wGh4QwTZDAFXen7qrONMF94EC2FL/IJa7vJAIhAMwQQqdpAUE4iq7Or7//oWtKnJgWMLy8+xLpiCAo/Dyb" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.294.tgz_1496295979192_0.15748949721455574" + }, + "directories": {}, + "contributors": [] + }, + "0.1.295": { + "name": "types-registry", + "version": "0.1.295", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.295", + "dist": { + "integrity": "sha512-1t2mzX1UDczNpZsx6PlQsv6CeP8SnUzejY3fjDDP/KLuJhrBJsKUNCqi5KZTLC9rTc6E5x0kZ1wCmQk7xc3lWA==", + "shasum": "1a142603bfacaca502785e32d3d9022552473425", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.295.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCH4YVvAq/HPdMKHov7mb6ZeqIG263iZaf6ny2MQc6aBgIhAPF+Yap/qpE6l6o/IULfArPPBkyimjSJzzw/bb4Qk88x" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.295.tgz_1496296287411_0.12487222696654499" + }, + "directories": {}, + "contributors": [] + }, + "0.1.296": { + "name": "types-registry", + "version": "0.1.296", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.296", + "dist": { + "integrity": "sha512-YpqQCqfWR3bxNRTZ1gcrHiosC7iR84TVYZ4zAnaoixTiaWUFuSIYKbO3hfHMHDLPGVH+4bcBXYm370fjSit0vQ==", + "shasum": "18b66e30cb5eced688f286beb97a23316e7169e6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.296.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDDNLPQWTmjLu3It8ViMbKUSccUX38xQg2WpLMq3wyjzAiANWOH5El/G2qMIfYzAo+ErJWWNnc9eFu47m+XeAcak0Q==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.296.tgz_1496296850497_0.38197632413357496" + }, + "directories": {}, + "contributors": [] + }, + "0.1.297": { + "name": "types-registry", + "version": "0.1.297", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.297", + "dist": { + "integrity": "sha512-foOxuvgvbl0SBMUdb9Hd2xd+QOhGG/CRYUzzIU2ISKY2ixlMTiUzo6h+Mw02WUE9MGvRy8DZUgAtpA3Yden9Iw==", + "shasum": "0924223f7cc05e13f3e8cf743a4cbda78a553519", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.297.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDcyDkIa9jsIIqa+fAxE51uEqaxwtbTiYMKujLuO9tQDAiBcnBWKxWtGG98fEUU+3DuOE8tLKQoDLQ85m2SZgq2RkA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.297.tgz_1496413427214_0.06973645417019725" + }, + "directories": {}, + "contributors": [] + }, + "0.1.298": { + "name": "types-registry", + "version": "0.1.298", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.298", + "dist": { + "integrity": "sha512-YrhdbQ9oTqilbwh8bex3WAoEF63onCjrxhzHoQtJiEuMS3ypvCaDyR6zocGu0HbKgkiNQwQOqAt3x55Plgcrag==", + "shasum": "37c8a605d1f824915a8871e16d931cabdeb17bed", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.298.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCkoczf8Wgh01jDaRuI49SJm0b4D2qhB9KJ4EwxATbt5wIgQrBHkhZf77+wlFOcdn2VtssV0ZoFwot4wtxnWFHBV5s=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.298.tgz_1506028769210_0.9759275787509978" + }, + "directories": {}, + "contributors": [] + }, + "0.1.299": { + "name": "types-registry", + "version": "0.1.299", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.299", + "dist": { + "integrity": "sha512-O+Kz5gPBPtnKMp7qIOfdMCHBP60XiBZCP3Laj/MBK/uMy287mcdSqfZZkwO0QUUp95gmBu1/1Vi0vSoEIlv8jw==", + "shasum": "a4c6e36da0f3dc3a223f4c09ec1e8f7967c07014", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.299.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDm0LbR8TLjIK9TdcHOJg58AY8cIjMbj7Dh6d5qqtTYbAIgSfOvrRj6+5Jx+GPD8X7EsFBjkQQsZ7UKHtupGU3loYg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.299.tgz_1506103211506_0.9933295915834606" + }, + "directories": {}, + "contributors": [] + }, + "0.1.300": { + "name": "types-registry", + "version": "0.1.300", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.300", + "dist": { + "integrity": "sha512-FTSBpZkRYBfzyK2POM+271rkQRBqzh1urCZT4vXNVKSX8dyeAv6caZTGAYhM6xBn99SSoNhYEzH/ZgPiimLYgw==", + "shasum": "908c8f162852467cabc8c13f910b1d02a4ad3f66", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.300.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIB7efyBPXQNhzy7z1lWMotqn/JLuwLPCkH2OQJzVxbu4AiEAkmyC35oTs0xqQhRhu1iOoDOrFsWbf5fjlMwmwFxxssY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.300.tgz_1506354169181_0.388381210854277" + }, + "directories": {}, + "contributors": [] + }, + "0.1.301": { + "name": "types-registry", + "version": "0.1.301", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.301", + "dist": { + "integrity": "sha512-krc3NgW/3al+9CoBB3UOmg1mlNv0rziO+ty54bux925gVFqsdd2hsLMV/u3sxDHuMj0Yo+yczG8pzlVxmmozUQ==", + "shasum": "35df336cec0d958e62814b03daccfcc0c21b4fb8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.301.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFmUt7UP8OBzl40B2Q3hW2Sith8b+kMswycl51VwVTzPAiEAhQzQXJAnuD1GbxyQqGyZQWAlCsLeft+EuXzPZhCD9zU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.301.tgz_1506450098954_0.10048871207982302" + }, + "directories": {}, + "contributors": [] + }, + "0.1.302": { + "name": "types-registry", + "version": "0.1.302", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.302", + "dist": { + "integrity": "sha512-Ijr/mWyPgkpdJLk8+MhO4SIzKGkhD3aJ4L0BGRVicvMAoeoN8MsQd2XY2Z1kvTjVtrks/nIS0gBMjsDb/lDFiw==", + "shasum": "f9872f1e119e8099e95592e45d87a68fb3455285", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.302.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCEIeSKli6IV4S7GD2BGEwJD6cddT0UrK1Uynjg1QYTwgIhAO8V9Mjm72WU8d0xr+TqgKJNb7tO46/JAs0Tuzz7/INu" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.302.tgz_1507218575889_0.48351813363842666" + }, + "directories": {}, + "contributors": [] + }, + "0.1.303": { + "name": "types-registry", + "version": "0.1.303", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "_id": "types-registry@0.1.303", + "dist": { + "integrity": "sha512-XEgIskMHFqOw9c/0yz3qu5jmnAWniCYPUUD7a36VWG3pUwWw+pHBH0jE4WXC7Szk+ChbBcNS+s351y40ZU8DiA==", + "shasum": "3a1d65e80064c38b5cf07a2c972fc52132cc3bdf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.303.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDr0VjdRUBnHTSZKbwzucpYwACqB0x+THnMyTPzBIMgYQIhAKRzATwBDaPhPrm9x2cxmeBM7L2LbT0QKOOAQ2wXF0O3" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.303.tgz_1507224936718_0.04908960382454097" + }, + "directories": {}, + "contributors": [] + }, + "0.1.304": { + "name": "types-registry", + "version": "0.1.304", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3e33573d8a3a7addbbd54183dab82607f8c26ed75f6cc245a296909d73a15784", + "_id": "types-registry@0.1.304", + "dist": { + "integrity": "sha512-V0BLN3F6FEqVo2kyIEN17P0spbu/LtVd7B6IIr6SYEejRxo2+pKlrU+mtgSywk+zowDcJIRK88F7EAO1x8qZCQ==", + "shasum": "52b5aad6eb55a4b1fb5d33c167aa2070b343e7fe", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.304.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDG1lqCScwpMQmbxCnbeq4tQj4n3n13aCAn4gfLwPlo4wIgG4LTbrokeZr4phxbofISYI2+qSoW/sh4DUBSun46y8w=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.304.tgz_1507233934546_0.7118843903299421" + }, + "directories": {}, + "contributors": [] + }, + "0.1.305": { + "name": "types-registry", + "version": "0.1.305", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fb1735445adf95fc52b1aa70111964410e6d690459223c1d15b143ae4520ab7b", + "_id": "types-registry@0.1.305", + "dist": { + "integrity": "sha512-QWwB3LvUfDk5Zpap9pbyXuPptrZXw8RQWm+AQhF4fwEj2rpPdO9gMwEihhKyzhNZ6SnlYFGUSodMvAwpFRaBrQ==", + "shasum": "0ae2dd83911e403a4959c4cd5a3d8938b9837ff9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.305.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCN3SLInZWJ1C5rLL7Ijv4i+UKfOlDWGAwHmCtjcXbmIwIgKOGm/FikSrEf2eLjkBHN4zvmH4TapfHrRX6Z7s1h0f0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.305.tgz_1508254267625_0.10802935669198632" + }, + "directories": {}, + "contributors": [] + }, + "0.1.306": { + "name": "types-registry", + "version": "0.1.306", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b7069f849f8cb3165524d6110520a1263e8fc85043369a6d38198910a7aad214", + "_id": "types-registry@0.1.306", + "dist": { + "integrity": "sha512-NVxEJ5XclXYxBWGpDZfa7JNo93Hb5BaDaa2CNSZ3LgY0F3GQlf7x9CHeUzZqxGArr+Y14qtn4opNlZTo/0NTEA==", + "shasum": "9312d6d99ee568a3ab1943c2304dc9648ecaf3aa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.306.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEsOb1fRn+fpwXqg8X1t7CmE4vpapzWYxuMLhQvQCobTAiAP01fD+AKypbkQ/ERgSDeGpDBqFli9tTkAfQDcrt7fUw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.306.tgz_1508439745257_0.9665834433399141" + }, + "directories": {}, + "contributors": [] + }, + "0.1.307": { + "name": "types-registry", + "version": "0.1.307", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3b8ee904000fcfb28e639399bb408c09b5fa20c2bf4ccb79de4d36138b851cd6", + "_id": "types-registry@0.1.307", + "dist": { + "integrity": "sha512-ho7IHIPRETn6/xbtrgN5wCB6Awwt/Q+mLqv/THENVnD43nzF15d6zqZ25rcFSFlee/VFnJSMwRJzlUdJaYwdZg==", + "shasum": "995f9267a5d9432a984216bb740ca8e09cc4950b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.307.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFIPBlxqg3w8vdloB86rx5VAjmlxf1MJeKk1ZayaUdf1AiEAkYIh24ewLpFCHzKLZkFRd5VPG11K8xrvWP+hvIBBUn4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.307.tgz_1508510284578_0.004542915150523186" + }, + "directories": {}, + "contributors": [] + }, + "0.1.308": { + "name": "types-registry", + "version": "0.1.308", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9c41adf0343ca6fe67fcceee147bd9bc17876a320cd58a520e2c93b6abab76d4", + "_id": "types-registry@0.1.308", + "dist": { + "integrity": "sha512-IKtS6edDOIckEg3X4ZlRp3zx+LrphCrerKovK7snbCaZxOnSsq3bOQB64NQ06tfxx7naU1J33GjsSXnX97rYVA==", + "shasum": "ffe8badd7eaf4dbeff6571235422fed569a54c79", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.308.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE3qbXMaoamoMjxKdJbpoyzDtULNplQ5igpXWtJZHjIMAiA1E0Ci5hV54JkcmqXHp0zTk7VVqQLjdCGhqZY4fGXs5A==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.308.tgz_1510680443823_0.9383879320230335" + }, + "directories": {}, + "contributors": [] + }, + "0.1.309": { + "name": "types-registry", + "version": "0.1.309", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8dd2a899c5f0c2c07883d4d7796f92e06d1bd865efc455159d8f54db2c8c725c", + "_id": "types-registry@0.1.309", + "dist": { + "integrity": "sha512-jKrot0ARzt+47d6OdZ92ol8bOxiDCRikl2TzQpxcPplYoxnjfu075Rj49Qmx9vijGjxjtsDwV+4suDu7A5xEDA==", + "shasum": "35a3b06da4565340482f8fb81e605696910efe05", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.309.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHhm0wnzkJmeFokEsj6kFI1S0zcTnXF+T3A9wxCwLPSqAiEArGrK7DXyMw70OnzgiaxLSLuWD/2UDDOjkvgtcOcQi54=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.309.tgz_1510681504601_0.1531330414582044" + }, + "directories": {}, + "contributors": [] + }, + "0.1.310": { + "name": "types-registry", + "version": "0.1.310", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "309aa7380ef18f7a148db1759bc13a4cfee9bb4aa6e81c4139ee00bbebeb90c2", + "_id": "types-registry@0.1.310", + "dist": { + "integrity": "sha512-SvrtAwXU0xWacy87TLhI1SJfGJTtMgzGUPha+YzaP0qSaGWPPv85KiO36jtytZ3IdM2Fnuda+DKHJjJOvsqZqw==", + "shasum": "3f93ffd18f001cec87861be575e9d85091fea7fc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.310.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICAKGeN/TxnWMexH7dhpgWC6bOEIyrEJNlU2mC1wDPoHAiAsjIO/ZnfnK+2cRO+qg2KShv3uaZ+bdWqvSnbEErHaZg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.310.tgz_1512775438683_0.7283512181602418" + }, + "directories": {}, + "contributors": [] + }, + "0.1.311": { + "name": "types-registry", + "version": "0.1.311", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "07c2d0c92c6769fb136c76211f5ef90f4ae4837551918949a9bbe3fc7509c4f6", + "_id": "types-registry@0.1.311", + "dist": { + "integrity": "sha512-zQMn4ugK+nYcPtU05w+kuVBXAxj1JqhFWAu+t3g8G5hKXGjHNRE4cWusOm1k5DdmIspGJrUS3sXe5j7t2JgJFg==", + "shasum": "78bfba6119a865267ce2a0a383b8247eaf3da70f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.311.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDKe9TEuF6j2uEHB/CzN2fzefuZasF1fbXhwrveD2YWGAiAPmiIeZjeu6qeyrtfcAFJztPXv8s2axInQ6s8F5NX0pQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.311.tgz_1513193271045_0.7888138846028596" + }, + "directories": {}, + "contributors": [] + }, + "0.1.312": { + "name": "types-registry", + "version": "0.1.312", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1656c703553f3557fdcf98e282ef97e682c5149834d67bd68872aecea4964844", + "_id": "types-registry@0.1.312", + "dist": { + "integrity": "sha512-xMzbvTRqW3mX39gfQmrJod24i0NbqXioKFzF5tInipiQtMzON2mJMYmQiiEJE1B0xaCP7juEA+qRLX3BazCx6A==", + "shasum": "8c6b99789bf9b889d811cc4e24cfc1c1a972cef1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.312.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDaukjhOn9Z0liHJ/SX7x9X0+A67Gjc349FJCsQtOwaSQIhAJLqiXITQgAxAU90tADGV8ygxdCmbyWaGx+HFx9T2EZn" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.312.tgz_1513205184138_0.6628103191033006" + }, + "directories": {}, + "contributors": [] + }, + "0.1.313": { + "name": "types-registry", + "version": "0.1.313", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "26eb1a8aff80fa0c6211ae7350a5e3873a53e75dd14fbbbc8cde8a42a87d09df", + "_id": "types-registry@0.1.313", + "dist": { + "integrity": "sha512-l5AbE7iz1r1CTaltQjqsJPEAWSkVmdikdX0MvkUa45tyGYbujb3NXmPeKJFL+lbabM0f/RC1gYVupg2hezshJA==", + "shasum": "b3af5ccd80d5d8e647625e878abd743fd839b314", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.313.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCYkkji5j26Y3sfAVuk4vyC6HeUWN0KzdEcgyNyvDQYUAIgEtlBEfmISmGfJmUh4H4f++/Q5EMTrukmi/P7TcXwjCg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.313.tgz_1513272322925_0.20424372842535377" + }, + "directories": {}, + "contributors": [] + }, + "0.1.314": { + "name": "types-registry", + "version": "0.1.314", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "10b886e0744688701d26197d1433b150e590eb29fc7e5830d10072c633f41c5a", + "_id": "types-registry@0.1.314", + "dist": { + "integrity": "sha512-z0X80yxc4dQtLIAknvkjFNpPjONqwCz+cT4YtMUGIHItsEys5/Ircq7Fh9PCCYdFZHV2CA+31e4H3Qnpi6Pc7A==", + "shasum": "4acb48834a63911469951acebdf78b04eb3e9ee0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.314.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDGgwdob5jfxs9CDmYbl4K4iZroYCJsVxWgP8Jb5FGBewIhAIKu9OeGbXivhc28MaS4u0U1nc1GgcD+OXZmXNO3WE1/" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.314.tgz_1513284520492_0.8192161598708481" + }, + "directories": {}, + "contributors": [] + }, + "0.1.315": { + "name": "types-registry", + "version": "0.1.315", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4f4803a74d01cc8d5366b70bd5f07ab6784f3ef4c4e6af7e7499e61eca7237f6", + "_id": "types-registry@0.1.315", + "dist": { + "integrity": "sha512-IVBUzTOYFszgOP7NeGRxfICbwuZMKXIF97LpmvZAeuCyM2cGodoL94YH2GZTMvxIPfDcTh7p+/z/gJiAr/7Sog==", + "shasum": "fc6c7569f1fcad2cb2ec9bca2549fbf8ce56dcdc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.315.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGvFT0OSkuhyh99YjOoPSg6cpzhUZ5OYq35oF271mlWqAiEA5QWq8UaC+InLsogKqOmu11qteGJiBN0HqIaEDIJbbko=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.315.tgz_1513379363384_0.47672752058133483" + }, + "directories": {}, + "contributors": [] + }, + "0.1.316": { + "name": "types-registry", + "version": "0.1.316", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2eeeaec786f31e0296fc523c531a97a15ec9450288a9edf1c89a2acea228a444", + "_id": "types-registry@0.1.316", + "dist": { + "integrity": "sha512-UihkYrKxtLVvkwy07D30XT7W9zrKeoHo8LbUGMIjehlcn0C3RT7KL8/mWyC7lyEPgaCm+EYIpWeQVsnt40TzPA==", + "shasum": "037ae04af560ee2740a4013d946931d826daa8c3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.316.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC2ec35fRksje4hKmijuaJtvfur4nvlB/bl8iPVxA1xjgIhAJTswEwzoBDikdq23LGJ9A9jYoZY4wd9o5yIA+LB5Yhl" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.316.tgz_1514428269020_0.7640221458859742" + }, + "directories": {}, + "contributors": [] + }, + "0.1.317": { + "name": "types-registry", + "version": "0.1.317", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2d9a5287b6d4b53e6f70fed09581100dfb143f94e780a1321e073672f4b7bd56", + "_id": "types-registry@0.1.317", + "dist": { + "integrity": "sha512-wZTw38ISr8AKPu9CmoXpEV9qxJPY5y4SSAFJUXVrTMCGWbucTggI+76FYlLwAkO0M/jUZ6iKLKSROvO8FQrELQ==", + "shasum": "2489ed10116c3fb5fa14fab0fdadda6af4e117e6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.317.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCsqFjhJITAUOV32txMsCSNSnDWEdkxvptYqGdoT1tYGwIgMHrjgD7hl6/axgevg+0q5PutDF1qcOfzRCgtQpA6EZs=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.317.tgz_1514932805570_0.77610974595882" + }, + "directories": {}, + "contributors": [] + }, + "0.1.318": { + "name": "types-registry", + "version": "0.1.318", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7d5c8b025e0ec0e570be8329980781c4ddd2958eb8b848dd6c98f0a8cc9281c8", + "_id": "types-registry@0.1.318", + "dist": { + "integrity": "sha512-1w5LwRJEx3R9s7h3kbT4FStNGQf6Q7JUfLQk+kcn1P5A4C7lWqiZNZ+b72y/xQf6VV8KBLYPzd1wy6Zw1FmiPQ==", + "shasum": "b75c8b102b244348de21bf9b53279c5b6ee70999", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.318.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICb08XhvgleMsTwcCnbJS4zxhYqwcd7auMtkrybSBlyIAiEAsC4Lxbm100PxOgh8f400VmBDBStobtWcCnAQ5HSw1MA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.318.tgz_1515013590988_0.2079935979563743" + }, + "directories": {}, + "contributors": [] + }, + "0.1.319": { + "name": "types-registry", + "version": "0.1.319", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1533a68322b6dc6d6e192d1775c284f762fe2dfc68c1a453590a7b5191b7b26e", + "_id": "types-registry@0.1.319", + "dist": { + "integrity": "sha512-Mv+b10k8+V3OkOsB9iFFl89tLRquDWs3aYPtbBBBCKliHjNf9VD/LTwv9d1vtKlsVRGbyhYeUWuxXs6xD6QdBg==", + "shasum": "c525be5eff69349b667cd17e60f86246a7f5318d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.319.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICv3lWlZvkXlES3eM8M7HRt7f09rfbP83NsejjjOfr+IAiEAwwLiGJe04T705FSkavTWS5Nc5i4CIn66RkDSmvUQMmU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.319.tgz_1515173162641_0.7743338588625193" + }, + "directories": {}, + "contributors": [] + }, + "0.1.320": { + "name": "types-registry", + "version": "0.1.320", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7b9fbc51ca3f53e6de3bbc03d8390ca647f845f812ec315cf76a909ae30105ae", + "_id": "types-registry@0.1.320", + "dist": { + "integrity": "sha512-sDstJmrgdyrVYsxPm5xiBwunuzWbL7jOevzJ3y/dnsu9Hoste1n5INAiow28zQjSO0mqfZq7j/XhfedFTSpwTA==", + "shasum": "b7a39c357048512b87b49e31abeba27b4812b628", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.320.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA957lR7S0daG2JkRYSy6xZyfd8TepJrzyEZ6NCh5ONUAiEA56xrZlc9CWCBQJsG4S1JQkl0yAczyZ2X+r4ngn+VnEI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.320.tgz_1515174828322_0.4788201944902539" + }, + "directories": {}, + "contributors": [] + }, + "0.1.321": { + "name": "types-registry", + "version": "0.1.321", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "78154660f20c4abea89aec68a3c8141b8e5f5c3a8e6c10184a01bde5efbc2c10", + "_id": "types-registry@0.1.321", + "dist": { + "integrity": "sha512-dPad9Fzok7Nl9ZJRQJirbDFEqIDQ0rGUCSxJyG96elN3PATdoXOvZ4wKv45oYnAfFg7PB5Qe42YhjO0oZfU7QA==", + "shasum": "29fcf1fbc74667bdef4414cf73bfa5e3cbf2cade", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.321.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICCn5+anDxB5yzOKCdXHTDXX+hJY07VIPd2RiDPytZh2AiEAlflwOoVjI3DL5tuxiQTF4XNh/MS4AIRXk5V2a98h4vI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.321.tgz_1515180076280_0.2189045469276607" + }, + "directories": {}, + "contributors": [] + }, + "0.1.322": { + "name": "types-registry", + "version": "0.1.322", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e5747c22ac1ee666bde3505120cce0562094bb3175ed72e37db3ad8397119163", + "_id": "types-registry@0.1.322", + "dist": { + "integrity": "sha512-sgW2bqHU/6cZGwcWyzEMN8/EuNrrgx/baXLbDtaXb02N/2qGGqXof6uACLNJghRdHvHux7uUIkfm/ILuf/B/hw==", + "shasum": "cec9ccb00b3f4b509c656369eb93f446ada2b739", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.322.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCiof7igl4efpBoIKzX4ttW2bIr7S+4hmZV5y0DvUQKdgIhAMNwFIZmyrGVNN+CsKUXkNqtm+v28SXFrO4vVv3YuVdH" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.322.tgz_1515180946506_0.8770986059680581" + }, + "directories": {}, + "contributors": [] + }, + "0.1.323": { + "name": "types-registry", + "version": "0.1.323", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3389ab01a9047b3ad0778ff22e62f1de5d7e52dd47f40f4d51d9ea383363c90b", + "_id": "types-registry@0.1.323", + "dist": { + "integrity": "sha512-uaa8cgwG3b8DL1O7EJIrfUt2nuqKhgllqq1ll5UtlLXH4aUphA+zC6+JIM1aUfoV2ayJQ16wlUvrp1S9WkcbDA==", + "shasum": "847959a039229cb28819ad833999384249044d0e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.323.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCUJsAv4Rn2ZvpXpgtdfHAADA7tmQly8Z4fMKBYNQVLLwIhAMono2E4jl9EDuXRPSdPGDptnSK3xzbfHI15yDaBHfPJ" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.323.tgz_1515196343482_0.1848198256921023" + }, + "directories": {}, + "contributors": [] + }, + "0.1.324": { + "name": "types-registry", + "version": "0.1.324", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "37b139e00d764e88a713a99f553efc926133ce4b6ff1221da67e80d1abab6f69", + "_id": "types-registry@0.1.324", + "dist": { + "integrity": "sha512-TiiTmzrfGWni4mMNv3mXDZmmz3Sea5C6qYdncSBOebkFy7p3cNjlWXwamxgDqpCNR2vYnUZA7a/L+Z3aAE+SFA==", + "shasum": "1ec98b1430ff3b6d94f999c1bec20d5bec9fabe4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.324.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDjIwl3ItIJIudRYRiTm+FGg1GEPLoHopH3bnT3qKbvvAIhAKCXLpN+rYVTUsF7N+U1twLnfchRPT7217PSj9EaHZ97" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.324.tgz_1515310536009_0.22251922823488712" + }, + "directories": {}, + "contributors": [] + }, + "0.1.325": { + "name": "types-registry", + "version": "0.1.325", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "dbebf3da35229bbef5be2a242729404950c5b93baa581ae6a7c6264d1420f5ea", + "_id": "types-registry@0.1.325", + "dist": { + "integrity": "sha512-OtZDE1iHlR6Xv71qfbwM38V/RjCiYskLKhn7XT3x1Ish/hp6ePXqbDaPH6ZwR9zmcrCY2IpCO3YFe0SsQsyrUg==", + "shasum": "128ea50165e893b136eac38eb1ab417fce6d10da", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.325.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDMvCx4Y/J9aGHMb/wFwtJKEwCJrfJKkqYMWOwnqqmeCAIgSK6OFYRl2rwj2BmYZS8pkSVtxdsChnnfp9t0FRIhaKM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.325.tgz_1515313406364_0.01575160911306739" + }, + "directories": {}, + "contributors": [] + }, + "0.1.326": { + "name": "types-registry", + "version": "0.1.326", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "189f63b0d688bd26fe1b595805c258f80ab626539723d3acd75f99a2c5a947ce", + "_id": "types-registry@0.1.326", + "dist": { + "integrity": "sha512-DoU4mVOasfJCtY6Ns4tIaZKERY4Va/9x5gmdAnXlsxConmzspj5lCxUm4qydPhoQEaSHEd841hby/ileJ4atjQ==", + "shasum": "d4f151050326b1738e347a8ae241f0b7c6b8fec5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.326.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIANaK6NA2+NDUVxQmEyizAOex4VDpOSP5ZbY0Rb5s7CJAiEAqfsKA/GdCbl+MZF96bGXyL7zenM2QRFiSQgfLdK9v2M=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.326.tgz_1515363568251_0.8301441217772663" + }, + "directories": {}, + "contributors": [] + }, + "0.1.327": { + "name": "types-registry", + "version": "0.1.327", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ce4f90beb100dc379658c917393c240d42f9b10754c0b206f349e21cc6e5806a", + "_id": "types-registry@0.1.327", + "dist": { + "integrity": "sha512-wHC1pDVlJWESdB+t02mukEoI+tI9mQO+WjcTWkOW9V3aY3XNpaU1P+g9f/qCXqhOoKHGb7FxnegrXSU+X4tEmw==", + "shasum": "b6b68e3149c47db20167c0940b75784ad0f2f771", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.327.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGqaRnSM59iy2vSRwHvsFQbQGrI/dTaVIn2K+w/ZoEV4AiACtQz47YhFlMFJdfWbnuF6ACdggC1u53qnhlblRlYoxQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.327.tgz_1515436281405_0.15679839765653014" + }, + "directories": {}, + "contributors": [] + }, + "0.1.328": { + "name": "types-registry", + "version": "0.1.328", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "76b3ee95c5168f4b0660077c6bdee5eab4900b64e854ff09b3993a7b0a608c87", + "_id": "types-registry@0.1.328", + "dist": { + "integrity": "sha512-9tg75Rkanm0tS8QADJhVpzOZcib9Y5wdCPKDHIkh1UZ1JxN9qKwP31KHXYc29mt+AIX+mq1SXxg9W+Y6VyTwPQ==", + "shasum": "00eeef1ec25ee55c824bc8d140369cb67ad36e9a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.328.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCv4VEALshgeVMg8Tsz7fWPVeGSqfF1Bijc1sE9Ba22iAIhALo00l9cdWKWJdEE2rzKFk1IPjLsqUkBiw46GaYNOiwy" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.328.tgz_1515437672252_0.730270474916324" + }, + "directories": {}, + "contributors": [] + }, + "0.1.329": { + "name": "types-registry", + "version": "0.1.329", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9dd217ed027ab066a9ff5dc1f7564431ac1fea5848e3c5cf83878d88ab9c476c", + "_id": "types-registry@0.1.329", + "dist": { + "integrity": "sha512-kZcfwdL4c9JcWITW40yahYIqITprSPmEVl306ErCuf5ZcRqixai5x1Z3wP6OP7+F/WAv0AmbzWNnJ+bu5E4mTg==", + "shasum": "29a70f90c9e3cdd38df32b21dab664ddb4bb4fd8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.329.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCc6ShgFnRss62ym7PJGDO+Ax0gWaQGb2u9vY2lgABWWwIgQfXzz935La5Wb32vvooLRV/Ueh+ndm6kNkSA1kliqTg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.329.tgz_1515451181073_0.7366650507319719" + }, + "directories": {}, + "contributors": [] + }, + "0.1.330": { + "name": "types-registry", + "version": "0.1.330", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4cbce79114c6aebcf3ca8e21da403c026176fdd759bc13d46cc0a4ae449ca51f", + "_id": "types-registry@0.1.330", + "dist": { + "integrity": "sha512-FLqyx+C4MSBh4mN8/AklGw5kf2blEx2OVuHSXBqLXgQg+pkIzZLILGhS8mwGee/BpnZCRB7nHwbyLhfrDxtVqQ==", + "shasum": "ca5224515426c4497eee8c6299203f7948732dab", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.330.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA4eymR7anOLhEqoVenlGJurV/+8PQnqVLzoNSoYLtReAiEA71DxImzwsecjZ+gWwl4Oc3IOGF5xiVgIA1dJaBoeqm0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.330.tgz_1515454851095_0.023145974380895495" + }, + "directories": {}, + "contributors": [] + }, + "0.1.331": { + "name": "types-registry", + "version": "0.1.331", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "aed9e6c3aef8e09ef61355ade27c29e1b53791d30d6c822532b312de5c0ac169", + "_id": "types-registry@0.1.331", + "dist": { + "integrity": "sha512-DH0EnPHR07O/Lj452x5UEThtxpXtvPOvCpLDxRm8FTD2iaDY+ZLHtEK8E/uBhDSZgR49c+qKrsomf9Pj2lg61w==", + "shasum": "01614ec8ee222d91a27be789d9e75c7c205025e5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.331.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEzUDsx79ybGCBO+La1xJpvgS3PBOogCHSAQa0xhcEKgAiBGJjW1Bu1MRbexHp3hbzvKxUbLb8CopWAEvj5TYHFABg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.331.tgz_1516320263575_0.9272312603425235" + }, + "directories": {}, + "contributors": [] + }, + "0.1.332": { + "name": "types-registry", + "version": "0.1.332", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2fffda6f8fce4bc6916bc0d71324babe7e20c4f8cdd102d3594d8c53c8496d60", + "_id": "types-registry@0.1.332", + "dist": { + "integrity": "sha512-8RyFgSF6M6t6pQaXWPx1kTX+ymkWymuHigyD3HqnEA/msOZ1ECi8tdJy9fbdf0vG0Z3Uo8MwGochNM3vpeYvMA==", + "shasum": "c01759c1f0c8a27124167ca7b3b475d5e7f134ba", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.332.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD/F2+HrURCYanF89U6j9nmxRPhQs4S/Gx8Za+zKWavpgIgBrBL1JjYxvsS8eZYluO9EIoN6qgoNRMYKGEnbczWoGw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.332.tgz_1516738417765_0.7453116616234183" + }, + "directories": {}, + "contributors": [] + }, + "0.1.333": { + "name": "types-registry", + "version": "0.1.333", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "08dcf484d6b20689ae87586855c184599b53118906e5758a108bab5e828ab338", + "_id": "types-registry@0.1.333", + "dist": { + "integrity": "sha512-TSaf5+gke1FxgNBhHxwsDM4ABY+Yb0ipU0PU+thapVbmcEz9ZmkmdspcnXbr99yYvA4Ywr9/BxdqOX+LIdRQBg==", + "shasum": "63c353064bfbdbf2218a023f6d6cfe4ea66ba983", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.333.tgz", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDceACM/0ygtArWqGlOb4WbTrAWEs3l2tvB/3c4XrhN2wIhAKVhuXat151S6fcKujTfLCl4RxK3Wg6c1IVa1D2IiPyv" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry-0.1.333.tgz_1517511660480_0.020001821219921112" + }, + "directories": {}, + "contributors": [] + }, + "0.1.334": { + "name": "types-registry", + "version": "0.1.334", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "920cf7b47b614517c09f92ce777844854fb33b52d164248855236afb98c684ed", + "_id": "types-registry@0.1.334", + "dist": { + "integrity": "sha512-5PT++2egE+iGgozhYHSMgB3wcahtW3Q/JaYS0wuRTU/4ISstKQxft7CuNF06kgXiQosjmB3btfVNt8H3KwgImA==", + "shasum": "cafc8476a29c4b770b583b3ddc93d8ac957b2d00", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.334.tgz", + "fileCount": 3, + "unpackedSize": 203382, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAKxOg5JjXrEQNA1qqBYMMInfcQqyedY2Cipe7+2mFjCAiA0bkopI2TBLGgjVlZTnV+I0GoXTDNB4r7pwZ+K6M7sKA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.334_1518122510634_0.43233069825560055" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.335": { + "name": "types-registry", + "version": "0.1.335", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1752f4c99f0fa5dfae1aa1e2ee0186cfa1a64322b73e6744a38f5c446a9cbc8a", + "_id": "types-registry@0.1.335", + "dist": { + "integrity": "sha512-U/vObfaZorb5woo5MeVzQPA746EuvA10d9aApCHxdoGq2GhVd8cPr6fh86ct1EKJn5RV2+VAb4Ih4Cy6ToIXvQ==", + "shasum": "fd28eeaac6baa827d039959c8921a8f1d3557027", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.335.tgz", + "fileCount": 3, + "unpackedSize": 202923, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBytGkQ1j3ZJpx0zEVfXrz/pUppf2pCGOoLYHW7TiU8YAiEAhYM6/N0RrqSM/ujvJyX6gGv73Nki6dj4EqMYNkbYM7Q=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.335_1518218998923_0.43247787600312604" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.336": { + "name": "types-registry", + "version": "0.1.336", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7703cd521586c5d60cad1305011cc29d7a8a93cc2a9be212a38835dc06fd5fcf", + "_id": "types-registry@0.1.336", + "dist": { + "integrity": "sha512-mZBTOg3DaDlj7fqxK0YNlaJmWku49AWoEGMzZce/L1Q4yh/35WAPeD5S/VUpOjOfNGWclYvAGz+ppxOxYuFgJw==", + "shasum": "59cbebf8e81fc633e39ec58663fdfbbd3cf33899", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.336.tgz", + "fileCount": 3, + "unpackedSize": 216303, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAmXE9M+7+g46mKFAm/rQRTZIpFvaMFePMdaGxxldYAcAiBakvB+16IRCSoQvD+tEqujMnJ+JnhOBJD/RkKF+1WYvw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.336_1518472949836_0.9746926170798558" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.337": { + "name": "types-registry", + "version": "0.1.337", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "69ae2094def713089323c85725f3cde63cffa74ebbaa4b9deb52f0f032919945", + "_id": "types-registry@0.1.337", + "dist": { + "integrity": "sha512-ChhXl1jV734LYq62Vr15N+ard2pwGvcVfuEpbtjk5sKX0CJx8IALg4Y9YkSkLXCqLLrV7xHpbGKXCq14y7LYXg==", + "shasum": "b703f34c31a5ac9164daeca6d035a0c859114771", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.337.tgz", + "fileCount": 3, + "unpackedSize": 218508, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFEnuyvKDA/YJeXpEqSkXR8TQfjMkT+3ITnX0CwwtSS2AiEAhyfPvV8GMpZ4s7BekSdubKDeM/otx+uiTdn/vdUaG+g=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.337_1518892321600_0.22707105796877936" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.338": { + "name": "types-registry", + "version": "0.1.338", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3ca12ec6b77b5b33f19f4fcbec7ac234d4d5aa77d4fb5b100e3805784b63d50e", + "_id": "types-registry@0.1.338", + "dist": { + "integrity": "sha512-k7C6ef3YmTHPvx7IS4leK2WYKGo1lXH0XC8lGzMHND4p3cvClF/aKDRoJ1kkCaTSGZjr3dlD/8Qn9Wa6YNKhRw==", + "shasum": "f8213f1e607e312e93201a1172d06136e81845e3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.338.tgz", + "fileCount": 3, + "unpackedSize": 218797, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDCOeM5PpNRMocoHv6XA/uj0TDjA3X9bf66RWNCh/YiiwIhALyZkkLUPK1AgdmslO+n5GwXyEICMIBFD7IjF7etH9z5" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.338_1519151538723_0.13642951527820646" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.339": { + "name": "types-registry", + "version": "0.1.339", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "33534fcd135f8a5ef1f85e54540a5c545bbcc8199186d123741b52f9bf845401", + "_id": "types-registry@0.1.339", + "dist": { + "integrity": "sha512-O7/akWISNww7O9/6e7Gf8epsucjYWRJt3RnCFBiqEzUXLEtJMqnEc12nxJGDNaNpkGrhGyKadiVYgD3TAKThJw==", + "shasum": "3f9a9bfdcfe6e3a1c68aeadc6f9e04634f937bce", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.339.tgz", + "fileCount": 3, + "unpackedSize": 219845, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAHX+L83CNlkBYy/mfNC6hU0eoJMPDWBoNqfnBdOEU77AiAYpdFsKDvncXpS6P317AInVC3JkPvBLg1ep8HvDb+6kw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.339_1519772754971_0.6925488897460019" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.340": { + "name": "types-registry", + "version": "0.1.340", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2355b33ae24b3b64e3e9242ee7e9860772b41b99bc83e4491555b57fe36c153d", + "_id": "types-registry@0.1.340", + "dist": { + "integrity": "sha512-eyRllKfYSPAuDT5TLc3+tXnn9ljDgfIj9rRJh0M86TX6/0PRymq5iOqxBVi+hKGBVd1tptdwHqiug0ntK4yGhQ==", + "shasum": "d0a29b5f0eefcbb4e8e00224029cc0e60932ea62", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.340.tgz", + "fileCount": 3, + "unpackedSize": 219924, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCJcXWmkSo4gWFo/LWXCfBq1jdL3/lCJl1kSq53tje9sAIgfAXMDU8VG+J7+ILEoGf24ea8Rq4OKNutuyigmdL0XuA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.340_1519848517543_0.2330696269341832" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.341": { + "name": "types-registry", + "version": "0.1.341", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "13a2ed5175c999eeeded0105b1e44055176357272179412ad8a62753232219f9", + "_id": "types-registry@0.1.341", + "dist": { + "integrity": "sha512-149Mi0vZQ5Jawo4vnXS2YKBRRkIr+FHbylIdHK3MvWUloR6CqwheJFFgZpeQYGvjFjSsZp6brut7NTxXV2+djA==", + "shasum": "5aad1d6f5e7eba82c0652a2613825749981c9269", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.341.tgz", + "fileCount": 3, + "unpackedSize": 219895, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDzIM1b0+tIXg7/Hr37RCHNB3iXbPCKNOlKOOepzIOihQIgHwo6tUUzAiNMEiaeTWwecd6iuKOvqX7gAxYk6w8s9bM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.341_1519896589325_0.5270454782480047" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.342": { + "name": "types-registry", + "version": "0.1.342", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1f786f54fe7b6ac12bf6a21a3e1a137f36bb6bf6d0c50f00aabef9eb36fd1892", + "_id": "types-registry@0.1.342", + "dist": { + "integrity": "sha512-xRjlKT24OsckSU9FJGiXZFJyOxBFxtu7GT6QL+uPFvlQdV+rB/L2tBoNNrQO1LukTk8bh8HU+YUyAJvlqQrATQ==", + "shasum": "6b7990fe8b149008212b491c3098f20512e17474", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.342.tgz", + "fileCount": 3, + "unpackedSize": 219929, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCSZYnFCQpYQMKc8MWoVAZrevGjC2KnhonMx1Qc7Ya1IgIgNLkVY6Zh0E0oW2ZXYGm8wldY4RLMg3VIfU8eEUWDcsE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.342_1519925379672_0.8115115529392014" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.343": { + "name": "types-registry", + "version": "0.1.343", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "04d20fe2af3141d79c128b4b7825dbde191a33110eee0a6ec59a60243134b387", + "_id": "types-registry@0.1.343", + "dist": { + "integrity": "sha512-lQuWaLa7vF7m3LxS4Yra5IYih5zyxR9sDTdNBriGOqRChEHGPx7crixPONhJyCToQGJeMK/twicmhQgQPx25Tg==", + "shasum": "e520b4f678c6ef9c06a31624f9be732a10d43331", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.343.tgz", + "fileCount": 3, + "unpackedSize": 219987, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBbTMqKFPh/yTHWhDykAN72A5NyXuXM/TGeIkCd5lrXnAiAUZmuKonEYXkca2lo6GZtjOreiaxWg7ph1ndPxIAxflw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.343_1519930302737_0.4318137688862509" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.344": { + "name": "types-registry", + "version": "0.1.344", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f710098d606ceca64453b736517cc9b9151d3aa68f191f367a3854edc1a2325f", + "_id": "types-registry@0.1.344", + "dist": { + "integrity": "sha512-c4hH4MxdeS2ei1hIHKffhkifSka1IpUUB8YvIKbMQ+4sNHTYBH0bxI2fPKr6cjkkf0L8ZE73dyV/0AvOjbr1wA==", + "shasum": "0dccb48a68e16935ea236719f239b5591140c8a7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.344.tgz", + "fileCount": 3, + "unpackedSize": 220162, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCID/EZuvHMb/FuAOezGupYmcY+Ph4h8ftjRCnSyHUaz+0AiEA8+1HqR0M04BA+JjNgJuH1RMCweDPsYlsCiYZOMsP44s=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.344_1519932965991_0.9922970768576569" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.345": { + "name": "types-registry", + "version": "0.1.345", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ffb73cfddb5bef955f1f9c2ba9f7fb3e19b26b591afadfd56e69ff253842978a", + "_id": "types-registry@0.1.345", + "dist": { + "integrity": "sha512-cuLjeLNqT9S2qR71EKZx0pxeIq4a/rERz0OypZmTY36hm/b5VMS5aDyzzuHsph4Vc+s06U+1k8Ta5s7m9Bq9jw==", + "shasum": "edae8ba5a94412a66603b44832ea5b6f2e31efb7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.345.tgz", + "fileCount": 3, + "unpackedSize": 220289, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCPftVdYtz6chH5Oi9hoMdg2e2Nq+DI4bQ9Wv8vHT9FkAIhAK5nEw+ZNDFdhijwwbdu9sS16Eb4FioGodezTTujoUVA" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.345_1519944964526_0.2722110764298815" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.346": { + "name": "types-registry", + "version": "0.1.346", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ef1b51643f462fc37f4388a3be4eb7ccd819f82de7c7234d94ca062845e5718d", + "_id": "types-registry@0.1.346", + "dist": { + "integrity": "sha512-iXbkTvehiiqewTtS1YarDxVjCccJ+gxnIdDgV62QnMufvXyzhrmVpUEPU7i8knkZpUmvvshEDLLQJ5zwSiREow==", + "shasum": "15918285ea592f807a049fae1e4602c8cbabad93", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.346.tgz", + "fileCount": 3, + "unpackedSize": 220289, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDwVKoNGQKUP3n7IGHH2vMrq3DOMOr/QU0z7VxMTVP/aAiEAneYid5ja6UFngZQhMSRNs3FT8WJ4Q59hibBRYRQqIdo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.346_1519946350758_0.8662950325499608" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.347": { + "name": "types-registry", + "version": "0.1.347", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "eacb3f9c8fed5b29f55b05a9257ffae6f4e4485cbc2b9e9db07bfe8beb69cfff", + "_id": "types-registry@0.1.347", + "dist": { + "integrity": "sha512-SYqEbtgtx/cpvUTFNw1yuwFTrrgp3AA946lWNMNNYLXFsGOw+4iJRHYtoyLYb27G30fH1BpOEhq8bC5PGnB7Og==", + "shasum": "588ee8bb7336d8c389a49aafb538e6b1d81bceb2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.347.tgz", + "fileCount": 3, + "unpackedSize": 220289, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDQXGpS098rc5VG85p640wj7DGOOQ2nQ44Vbl4VvAM6swIhAINC3Rt8R9IDoZi4al7V7AJk20aHgYtXZsfP6klyR3Zt" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.347_1519947252428_0.7066968260082598" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.348": { + "name": "types-registry", + "version": "0.1.348", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "df464366e4613697bd25a5012c3dcd455441c12f250e9734203230908e0f7165", + "_id": "types-registry@0.1.348", + "dist": { + "integrity": "sha512-r4j7h390TZ3lyT0AWvFzj6eRK5CKc/Kn1OtMj6kM5hjDWidggHv9zzJ6+MgBM14Hfibq2S5DJXd/ycUlaF9nCw==", + "shasum": "fec7eef29a4cd2068951a6a476685a5f2d2b5e93", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.348.tgz", + "fileCount": 3, + "unpackedSize": 220289, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCjwf23ZmQAlcyiObJNFcEu0CpHEXAu9bif6PM0qNbbLwIhAPJqZo82igATBQmXPY5g+W9sNJSSPdlsg5+UcHcm0HRC" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.348_1519947934104_0.6517247404976501" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.349": { + "name": "types-registry", + "version": "0.1.349", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5cfc03ad9bfb0829cc350d071e3315d9082740a0777c5588286a573f233b2fbe", + "_id": "types-registry@0.1.349", + "dist": { + "integrity": "sha512-p/C3MQRRN/QfGxrEe048t9cpgsB7BIy+MF5tuP/7/sBR/LEWxyaizjygHPxfDuQ4pwywShlqKRnbhjPIonLhbQ==", + "shasum": "c539ac1290a075c425180efa378eff458dc67766", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.349.tgz", + "fileCount": 3, + "unpackedSize": 220289, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC5Uql6bBk6uCDhtSZDO91rOWnTzjZD3nQAM2xlARdzYQIgL3S84LRrhoQCVHACKmQ9IJRaVUH3PZxF2Dbyj0ezcyM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.349_1519988233144_0.21680308118068803" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.350": { + "name": "types-registry", + "version": "0.1.350", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "864df6cb17b8f1660c48deabe5bbc869f35728ebc86e6e91afc2d06b09d7b006", + "_id": "types-registry@0.1.350", + "dist": { + "integrity": "sha512-XXniWVQgcKRBsYPFwbPvzTOOVBBGie7E5PQg26LQstCYJi0piqaTnKZ8L7+J0SXW65LPOydaKy5Ouhx8qD/0dw==", + "shasum": "64ca391100af20bde77c9c39f7d7902c1934f84f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.350.tgz", + "fileCount": 3, + "unpackedSize": 220320, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCuhekD551c1T4yMxCsAmTsghmZejTSAtVOk+1lctMsBAIhAJqkxcX1nJqmQGEgwRKz0//0AVLAyxpDzv0ItVvAzxO8" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.350_1520009175875_0.042342908733665974" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.351": { + "name": "types-registry", + "version": "0.1.351", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0ce895638b08155de51ce78bd02ca53dd4f88ab1601961b7f12b44ef8615ef13", + "_id": "types-registry@0.1.351", + "dist": { + "integrity": "sha512-mCf7WLpJI4sENeUH9Gz3iSM69JXkWqZ1UsDMYOXvccC0IL7c3cWVKz66Td4C8Z4g4J26wl/3S0iNj/K+jiu1TA==", + "shasum": "97dab1d94d17710b3e7718b1b48c100df7290c7b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.351.tgz", + "fileCount": 3, + "unpackedSize": 220319, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGB4dDIuvGEC7BykNSsreGQ0m4Q1Ga9dtvmqbrr4urVAAiAYPVVbV5lnebfh/ryq9K1iSJz7QWPGz7ZCvqgEnzEDGg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.351_1520012506274_0.7288023996417248" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.352": { + "name": "types-registry", + "version": "0.1.352", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "37a3e7d53f4dfeb5d2900d0f363f5b0f5ca8696b6d123c16c8d5f180d95f8286", + "_id": "types-registry@0.1.352", + "dist": { + "integrity": "sha512-d4N/GRK21F1ci2cCKcij9MeBE9OwaX+QCsaH5XESY30YNZyQCwd1BMhmpW6eXnJnlu5ud63OORk3ft3iy/kzBw==", + "shasum": "b85d7429548b4ac69163828895a267e11b280a0f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.352.tgz", + "fileCount": 3, + "unpackedSize": 220319, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCdcpxF5GsqRbTEd6I/tFrOOc1uG8AoFRDM66RTeFxmaAIgDVOOmm9QXuSciwV6dsP/6bIYvn+V59nn5L9g3+w/MY8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.352_1520013305238_0.7785978677240193" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.353": { + "name": "types-registry", + "version": "0.1.353", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "67b395e128c5eaef45df6a974b001162f9c0471bdc6bca8f3226662c76369080", + "_id": "types-registry@0.1.353", + "dist": { + "integrity": "sha512-4+sGB8TX0/6md+d4vGrQe8qMJtPnG98DOK0eGoo3Lwx5c2nSE1zdfV7+jYJrWXcbv4zYE38+Dsf+4g/IbcPxTQ==", + "shasum": "ee6ef955140f45a5a51545af70dd6b8cf5704e12", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.353.tgz", + "fileCount": 3, + "unpackedSize": 220319, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDwC1XxYCyF4Bs0Yx65GFYu1Ao8TH9UuJDVtHWi6zK1aAIgeD28D4kDiWJWA/jmS7KCteyWrdPuYI6jduUkHrg02Xs=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.353_1520020171375_0.963804014645488" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.354": { + "name": "types-registry", + "version": "0.1.354", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "51e28f4e8a7d2b16cc88f211e9d2dce5046c1647b2d9df3086699518576f8d7b", + "_id": "types-registry@0.1.354", + "dist": { + "integrity": "sha512-qdgfwGJlekJjGvFLAjGpHYPbA0/E8MiZLbsZJIH7Ki5R9AnO/Nk7FlJmz1E4F5pa0fypVrj1GMg8mgGToKYn8A==", + "shasum": "5ab37d548e6d7cbece02c7b81d82d168cbfcec5e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.354.tgz", + "fileCount": 3, + "unpackedSize": 220319, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCB82d2H4YVF95S21fffmxljx1H5DJzEex3x8DxAtoDAwIhAPqsuFZP5mBAuaVYKn12vn2zu1P4edP051G/Aq6d/AFD" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.354_1520025937465_0.5957232814864672" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.355": { + "name": "types-registry", + "version": "0.1.355", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9b89d8e9453c5b746a6d2ae83efc1da496f5dd968d778d6e5d91fe67b431a81e", + "_id": "types-registry@0.1.355", + "dist": { + "integrity": "sha512-SGkSlL8HO/YhoHGOCWdmG64jugBlx427xAFN5xkpNSZelzZubNEm06HgORSYqShFZNJ9+kttszm4etYfHix9bw==", + "shasum": "7cc7d67d038f908d0403989f7ec3a9a50700d6d5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.355.tgz", + "fileCount": 3, + "unpackedSize": 220319, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFsHTAvXz7y4jl0e0iFDry+vX6OSp5ShgVprPPF0loFlAiEA1hZB8RjNJu1PeC0kxrVuhBlACg3U3Exmp35b44TMYSY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.355_1520026846203_0.5210451740773474" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.356": { + "name": "types-registry", + "version": "0.1.356", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "adeae1ec39be55226be3f4641941af6af404b4d93b306692c995b86245f5da44", + "_id": "types-registry@0.1.356", + "dist": { + "integrity": "sha512-ZUYyeiNE4/+Xi9mckVPnGFDyDt0aOElXLU+xRD7GHa1EMHSbJhj08ZGwFLgIMAveqY2jAWJ3/svP8Y74xxKntg==", + "shasum": "4687314e1c01b48f4bae45989857caf0a29ab30d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.356.tgz", + "fileCount": 3, + "unpackedSize": 220319, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAU5hPUIjmXs40AO/t8VLaSSdUmTtAqQTtMRN2YangEyAiEAni7isGkQMMnh7vjzu0sb3LrsRRyZFEOq5Zbvi7QFja4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.356_1520037791604_0.5072190884419603" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.357": { + "name": "types-registry", + "version": "0.1.357", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "207e17780bf24e90d28f4e0b2e0bebf6f0418a975a5e9c19e760c1300b2e35b5", + "_id": "types-registry@0.1.357", + "dist": { + "integrity": "sha512-ODIskOCRrTK8EqbLbeq8oNN1Dt9lwwMi0B8EVaiGx7aIs2OqAOYJMC8FNgmoxVAgahaQm8L5tTJKwQ4FINqYDw==", + "shasum": "210111116f2d05957a50a5ea09d3c5401ced7035", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.357.tgz", + "fileCount": 3, + "unpackedSize": 220369, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICyASHmZ966sAPDOtBFk/0nyztvAdGHSY8A0r8O3jrpEAiA8jAx1IetWwe/fia5ofDyApBPbZ8O9MKKWfy1xd2sulQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.357_1520038716913_0.5026407017862864" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.358": { + "name": "types-registry", + "version": "0.1.358", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4ccb7951bd64bee98801f20a072fd0727f84504adf0f40639b600f21f1d2b5c5", + "_id": "types-registry@0.1.358", + "dist": { + "integrity": "sha512-yUx4ae1PRU9YQm2LGRSYu7cV0atIW3TnMxGo29aHGsUqyDqc9YiSNPvFb4sA/W0vvI+oKspHNhZyEUhvd7IKjQ==", + "shasum": "4c28bcccd8e72c3691a63646dad0ed8bea7707fe", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.358.tgz", + "fileCount": 3, + "unpackedSize": 220417, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIERIn5LIn4fwSfyRAzJ9e/ZNifrCxAQBxPfteB+q4zPlAiEAystu3kuRA/9g2dhCq+7BvX8HiROzJklknD/pR7BcCNM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.358_1520039173818_0.4842597165361451" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.359": { + "name": "types-registry", + "version": "0.1.359", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7297dbe882fa5a34eff8c613efbc2dbca7fa7d8bd789a58afabc6704dac18a7e", + "_id": "types-registry@0.1.359", + "dist": { + "integrity": "sha512-d7XA18AzqnbO0aQRYXHz1njLtBKQaxbISaNpeF7XIX5i05Th/0Egs9H9cHx+fkprupnNrZMXQMQ4X9McNKc9zw==", + "shasum": "74f0b6caf365cd2d9a8e8275339b193485318102", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.359.tgz", + "fileCount": 3, + "unpackedSize": 220369, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICeFHCt3ckf5x9Wzj+Y9Ih9vo7NmHr66DSQwNsRevqRJAiBSKG1n443dt7iqtZ9Q7hR2zHC44c7LkPE/7VpbO4UcGQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.359_1520039528798_0.7910909248810469" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.360": { + "name": "types-registry", + "version": "0.1.360", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "569b219a477d560740dd275da0c6a3325a020cd4829aa8d2ad775a616f2f352f", + "_id": "types-registry@0.1.360", + "dist": { + "integrity": "sha512-QAS5CdVIQfk5nMbxfMSCRvCGwXTIdKA4a9lzScLHoYGKx16S1Q7XkhvJUgGX8x5I8ul5EclII4IaKoJeMqdJEA==", + "shasum": "faef28d28a614065de57f146d6d543a591567a87", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.360.tgz", + "fileCount": 3, + "unpackedSize": 220369, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDWoV6iQZEUGhIF6Idc+BV+0NpS0mo1bWfjg5jjKfphTgIhAIRt7cTjFzTH2EdxNj/9k4ocKQg/ZFogGcL+RTg+ng9x" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.360_1520039859754_0.5868422970978826" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.361": { + "name": "types-registry", + "version": "0.1.361", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "adf6ad1ce690c4b24a36f8fbbddafcfbe7b01a71be6a142c3852353a3dc63c9d", + "_id": "types-registry@0.1.361", + "dist": { + "integrity": "sha512-UXGMVUzHh71vdajhXBYDPrgpNUt5ZpX9m6ioa/6FZ23pqXaXSGvDv1G+ORWq3b+0gCiwcdk4BZitD3DzJ8wIKw==", + "shasum": "0e2b3634de85630eb945ba39442e7d1945cb6966", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.361.tgz", + "fileCount": 3, + "unpackedSize": 220369, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC/va5LrrgEPSB7SKagkNNIWPf4wGIvqMjg5iIlIMIqxwIgKvG5E+nPxPVGrj62fmQjcG0b9bAx5CuPogofBVvpyT4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.361_1520057481038_0.6508458153406571" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.362": { + "name": "types-registry", + "version": "0.1.362", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3dfd90894c48800d19e298d12eeebe5ab700a2145e964c38c20df459e316a375", + "_id": "types-registry@0.1.362", + "dist": { + "integrity": "sha512-vWEscr4Hvq+GccQBB70m4AaT0fV7kDHTZvSbBReI3T9y4mvDlcJogMOsNCo8XfTFTV5oa0qOmykJxavy7gxxSw==", + "shasum": "3a3bed06eeb492b69acca161c8352756ce236b11", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.362.tgz", + "fileCount": 3, + "unpackedSize": 220369, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDQx0MmO3T/Z9VpsGTmAku7hyE4puA0uCXx8CDhhdNpWAIgMvL5emz40WXTvfbqxzxgFsIURGym/jP2j68SQsu9F04=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.362_1520103082598_0.39116228454318613" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.363": { + "name": "types-registry", + "version": "0.1.363", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c0c0735b581e055d4e21a831b4b3b8475a12b34ab5d9cefa0a5b9c5558e5de33", + "_id": "types-registry@0.1.363", + "dist": { + "integrity": "sha512-cmkjVkKn1XSUZmq7sMu6nK6eEVwO7BWl/BR/6SmQOHKvJYMaQekoWyQwzIiLPLWZ50adW3D/dMs4Bd+zbE6Svw==", + "shasum": "e88ee69fdaa83912b2fce4b4e4f4f3c410e2699e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.363.tgz", + "fileCount": 3, + "unpackedSize": 220353, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGPf09K3VuKCv9N/fsCyxjDtfgYD7UM1Ifsq4Cp8O4L+AiEAhNXwlvogRYc9MxgdV5yvrifH0rbr4Ove2lIlwgaGVBM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.363_1520290884401_0.1092276641428398" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.364": { + "name": "types-registry", + "version": "0.1.364", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8430fe194dd1446f1ac34993ba268fe7125e81f1d7833bea003ad238ddd605b1", + "_id": "types-registry@0.1.364", + "dist": { + "integrity": "sha512-m6ZoqezqKrGI3KBdEAY8g20lTqa1NRdCwD08gNibn6DDHosWdSEOn/uirzJO+EgqLC0ylFaGFD9okc4YQFegSA==", + "shasum": "199d07bfb15a16926d7e4217b7280a900c5c6183", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.364.tgz", + "fileCount": 3, + "unpackedSize": 220748, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFX5/YWPa80DrXovRK2qMrzHUPseIY2Pn/daK0LdOxjPAiB5qfgYN58Diwtih7+XMS/niaPwcMHgCELgB5pTsG65qA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.364_1520296856833_0.807180489036472" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.365": { + "name": "types-registry", + "version": "0.1.365", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "55393838f34d09eb19b7c9e8f688a5f181a803a1c4a1db1e78955c3453d3685e", + "_id": "types-registry@0.1.365", + "dist": { + "integrity": "sha512-vKw3b3P+NVg0BPJAN/ABYZH8DNpLgsfXoxaqn7sdOFaBvN5ofj53kT41yNQJo02Y2u9AEi1rmSFODGTwTFCo1g==", + "shasum": "2d14e4e601defd4f3f538552c0f04a7f0a8679ff", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.365.tgz", + "fileCount": 3, + "unpackedSize": 220836, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAVwDUspkKo/AHYpoGGFRDM/McvrQb4P9Em9rgV4pBRUAiBaeAvDFIlAgghz7B/Qu6k+Bc2pbuTzQQirolTJUJ2j8w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.365_1520303167407_0.19961585082952293" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.366": { + "name": "types-registry", + "version": "0.1.366", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a1f56a09d71be7691bc851f041ade8483e36f39e95d3249242ec50980b87a7af", + "_id": "types-registry@0.1.366", + "dist": { + "integrity": "sha512-XAIQp6JKb4KSHC6+rerSfMKbAZFemHhC5+7zYon1CHIsN40oLZJ8YHHVUe/pobxQqN/sg0sLSthzP9B21wvBUQ==", + "shasum": "d6a45b0d550bce3e48daf10bb0ac7cf9618ade45", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.366.tgz", + "fileCount": 3, + "unpackedSize": 220866, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGUDeKCtHi/Z7Jf/zONR9bQN5iPwbgH2LA2pBd1r3D4AAiEAsH8BV4jsUijxtXYqdijjkMUBdVcb8lHVYChHVpf1kqc=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.366_1520303619163_0.10020757610904307" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.367": { + "name": "types-registry", + "version": "0.1.367", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7c6225c33d041482294b9a6e493e5eeef1d41709ba0d9599b0e6bed84eed24f6", + "_id": "types-registry@0.1.367", + "dist": { + "integrity": "sha512-O6X75KrOOP2zqc2V6WEwmZ0MUZPuS91RELw8ZowFbQNhENJlEGR9jjJRoElvFSnl9uKivYfClgdxPMAE3OWXjw==", + "shasum": "7beffdecb5f3f271c58e953c6e2ac9018ea14110", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.367.tgz", + "fileCount": 3, + "unpackedSize": 220909, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDeSVzWPBZqE7qLjfHzvnSR38KIc99adgHI6m/9J5HbWAIhAPXYAGHMi5SF6e86pIQOwaILlv+R2SiM2PL5U232oHq1" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.367_1520325186116_0.36097321087993106" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.368": { + "name": "types-registry", + "version": "0.1.368", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e70ac247e789d61d639b6cfe582bf96783fc7cc7d90c9c2e8d3b36575a34faf9", + "_id": "types-registry@0.1.368", + "dist": { + "integrity": "sha512-1Q+KjrunOkbieOGVREYfQNPQa6P9Ce/m1pRr7vgG5OINXa27/fFfjK5zNwQ7Bs2cSyeeHpFV+e7IkoR+nXIkUg==", + "shasum": "ae9f86ba826f2cdf24bf0f90f2549998ba6163c4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.368.tgz", + "fileCount": 3, + "unpackedSize": 220945, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCCLUvxR+ZLaIv52vkribP0WMJP4M2YMr+t/xY34wWO9wIhALjWrH+zVdePyr0grdcC1aSs56J+cvAStdXLjmQq5QYq" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.368_1520352711114_0.17369188737400099" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.369": { + "name": "types-registry", + "version": "0.1.369", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b3e05e81bba223f46f6bf47ca700cf2e83c2e28c0336e00d6c0bdcf102ed35de", + "_id": "types-registry@0.1.369", + "dist": { + "integrity": "sha512-5/99c0FjmSf8MJ8GoxCTmS+qM88ffV2CGVSIAeh0/P0c+x/t0REKpUhIp8/cpVPU4hFBtKFaEKXShR1Kcy+fxg==", + "shasum": "36c41e0826056262bb6889080f6562e32cbf1215", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.369.tgz", + "fileCount": 3, + "unpackedSize": 220945, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFdttJottpEv42DViFaB9aX1HNxeKiuL8PIAJYwBV8D4AiEAiSjS2xBDynIb0OfoklilGFJWZ5jAgLz9JytD/YJWLpU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.369_1520368394704_0.7940009699380506" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.370": { + "name": "types-registry", + "version": "0.1.370", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ec68270e6ee7e794463a5738793bd5606c30a8e808362e61e9ee8344ece714d6", + "_id": "types-registry@0.1.370", + "dist": { + "integrity": "sha512-9wo4Cq+XgR3CaBuSFhEhH8RMYrpF2HJqSDpWyORnkWHKFCiLWVFk+u42LTyqu3xxseaawNemaHfTxKJM6Jr1AQ==", + "shasum": "b00fca9cbd35e9bea469d34ed8016f0b2b3b28e3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.370.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCTwDJU6+qGkxuJ7vM9LkMAYdJ6rrE8l49jdHOW0hWaYwIgSQPhvqtyQlwNj5H4puTJEQuLsvlQZL7T9oZfTs25zOg=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.370_1520555091764_0.22497908976126513" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.371": { + "name": "types-registry", + "version": "0.1.371", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b88129c15119f60569fdc2ef368cc323167325ad8b6c120028eeb309460add84", + "_id": "types-registry@0.1.371", + "dist": { + "integrity": "sha512-06ngncfaFEaezgRyW0E4TOFqR6Db6C9xwfdrOFhCn0lAXFvLzOQjHLg6ES/9pEKsQkGuSNTUIvkyVmpbe33I/w==", + "shasum": "980a0e8d2694d46ce39755409ecacc67a570123d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.371.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICyEDslyLCfH4HwQb/FIAnc5WZk+gRGXzDtWlCRqdadyAiBrJ7yiemgm4ajR9yy8uE4ueUWi/utqOqKAQhY1PXO2SQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.371_1520556163962_0.04350268655325462" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.372": { + "name": "types-registry", + "version": "0.1.372", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d8fedd301d1fc580835e05875f5745f82d10a5ae499f4054aae97609b608d534", + "_id": "types-registry@0.1.372", + "dist": { + "integrity": "sha512-cSGfcu9uEm878xtzRKUDYo6EfSXsPaNepTAjrfOkYs1pxKtMwAbJM51ouXdyhsp8ad7vK5lVMl3M9VUZu2+wdQ==", + "shasum": "46fee99468f786b37552ad68eacb5a56c540a0dc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.372.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIH+ZbLX0ak7n+ZDDqtTlxmJ2+cVYga2E4b4riDP+vprEAiATBkfRXOYui1uW3QUswg+nZ5w8zbTBqp8dhDiOkfwu4w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.372_1520556864274_0.20525275602207582" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.373": { + "name": "types-registry", + "version": "0.1.373", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a5b2468d144f4c966c976eb4f2d14b37a79c59642c622bd783f71355ffe1e690", + "_id": "types-registry@0.1.373", + "dist": { + "integrity": "sha512-MH6JDtwSm3JrHbwEyvbvbz2rzn1BUPEPh7MyvP6KDJGDraqVuxokr2bzirQtWZ3mCD/MCmHfkXwK1OlsHO05Cg==", + "shasum": "fa075b55b32e2468a55fca62decfdcdbd2c09264", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.373.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIF7twTpuN5njacvo2IlQuDuV+Q8QymQA2QhsQMW1ohEiAiEA75YzKi1HzIFiFED0K3w786TKOg9dwxb6eXlBcpIWA3U=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.373_1520557424844_0.24847573348217566" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.374": { + "name": "types-registry", + "version": "0.1.374", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "25c5d43c6ba7a8b7b32f8e46efff000609fab8450ef4d593e9c27d810d268907", + "_id": "types-registry@0.1.374", + "dist": { + "integrity": "sha512-jG8+Cl5lF2WVobbuIaFBXkOVlbi3RurFU5DMJTnXsmQsE39rEu6wxZ91IbnW6X4kXBsp5w76ciKOAN/BUisVIw==", + "shasum": "ef8467211e589dd47cb124ef0bdff28ecbe32482", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.374.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDwlcsSBVSJAyraZmXCLvMSTjuer+oKF6NybEsBT1eiCgIgaLF2g9Ul6Ewbkc8lsDmz1VkYE4GI51t42IGIiMtcXIk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.374_1520557830221_0.4953125103499805" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.375": { + "name": "types-registry", + "version": "0.1.375", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b0c030b3488c23c0bd5009da106a642dff7d309639f15ab71b83d265b647b562", + "_id": "types-registry@0.1.375", + "dist": { + "integrity": "sha512-nlDYSSkNXgX/Z4zQqFi77YuClNkJUfb3u6VfP7Z+nyq0Yfl4hl1A6yJa5znsX01piCnOooo0b4lpR/a3A05t/w==", + "shasum": "1428e560b1bd28890aa95ff479e15572a4f34f07", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.375.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGaVfqP7Ekb6vvn2s56l5aL8Ml89lRjBTP0vGfy9+uGCAiBNTL76An365zF2nTd7d7dbwUcRJbwlczsw4+YspZGKFA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.375_1520558157308_0.27226053755947244" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.376": { + "name": "types-registry", + "version": "0.1.376", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "222b5b9e6643f6023d2eea9020aa59d1d0e3cc84c0dc044cf82605c9ec6144e5", + "_id": "types-registry@0.1.376", + "dist": { + "integrity": "sha512-J1dfJylmgE9xSB2lY04YnMgYwjcokRqre+nBN0/5PXNvC3TKOJoyfe9870PPcOm77kxGHi4Pvoch+OAudgkZdg==", + "shasum": "08386d064448358c80f417b02f1dabf765d5e494", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.376.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDPEljAPTcqKf1ltf7LjTOYQnwG4PqwjCv3TPb4Yy1zKAiBpGSVhaX+6nqaUgdh8dqMeYAL12NUX+O3F20ZuuL5E1A==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.376_1520558499513_0.2133459053439346" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.377": { + "name": "types-registry", + "version": "0.1.377", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fd7312992cd8aa9543544fa590db232c12a6f7f64955a3276a7024754c233e13", + "_id": "types-registry@0.1.377", + "dist": { + "integrity": "sha512-vZLqAi37T7SnjWR5yAx4XRwDGylST29HIlNFS6MdGq6VrBiAMWgklfYZrrgFx9gjmAypyRArkbofJWek7sQDSg==", + "shasum": "5b85a3b0698ca3c7de0b0c04eb2e03efdeeda755", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.377.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIApiKEKIbaId7r7MbDfCIsSL39DTrc8Yx2u32vAk8cYQAiEAz07kMPRTm55PfcUOrtzPipMWtJkWoblybJ1DjHf+aTY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.377_1520558848685_0.09625526086837599" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.378": { + "name": "types-registry", + "version": "0.1.378", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1936a9affc24fccab805e52b8d67074e6fe1b8fecb81e6bef5cad8715cf91128", + "_id": "types-registry@0.1.378", + "dist": { + "integrity": "sha512-QIX5F7m2KC+j7OnXclSaEpXyZllEk2P31MVohl7vkvvXfFjAj7WxMxkbPe7vx6EiUxN3ovoNOoajMSrT73XbJA==", + "shasum": "cae503dce9b0bd7a2d077d05ed3ab793beb2e076", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.378.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIClNRtoqoOEze1YnsOOWvVwzGVWHcuiE0FTkY3W+cLejAiEAiZnbBd8CeoNcAv6M6u31UJTePaTDYKxrF2p0dLe97a8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.378_1520559213901_0.9925621526965931" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.379": { + "name": "types-registry", + "version": "0.1.379", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f7ef009eb51525ddb3c83e22f1d87ea5ebf7556dda1ea7c8734ba2caeaf23ebe", + "_id": "types-registry@0.1.379", + "dist": { + "integrity": "sha512-X0rJAr68+KgHHiQpmQAigTYOC4m7UxgFtvNagHF2W0IUmHwy3Pwr9hK8PVDtLygBNX1ri7AAvz5Z9HuUPxTOeg==", + "shasum": "7b4a5f376450fdea30c8b90a9fa4ffebc84da371", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.379.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFtZzDzvzODLWTXLFF3mdGtPZL5JiTozTa4PGcpc13iFAiEAjpGUktyzuVHbzooSR0DUeXgbr5XQcJqRMSOe+2kC4Bo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.379_1520559547444_0.5129849886236977" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.380": { + "name": "types-registry", + "version": "0.1.380", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c7bf6caca37ea5d25079f734465e7924d02f82ca7e4fa6b7c563d78dbb92551e", + "_id": "types-registry@0.1.380", + "dist": { + "integrity": "sha512-MO8A2XL1PsDvqHYx3Zvs3CZr8+Wg2P3x9vvtauxiCA3AekEdq4HB4+49soosAT7Sd+UK9x9D4ov1rb2eesNfFA==", + "shasum": "28eef1f184db815f45342f426193ff62c98507bf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.380.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAnMnMS9Nqv4vxf0hPAiWXKcbo6UC/xv5i26LWArGOg8AiAGwBbT3NTk3tFGuXtp8Ldg30XYhR1onawcYYJqBHS0Pw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.380_1520559876283_0.7749926318372653" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.381": { + "name": "types-registry", + "version": "0.1.381", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4eff552aec566e794425361c15e4984b3e0c80717727802026f22f80a8df44b6", + "_id": "types-registry@0.1.381", + "dist": { + "integrity": "sha512-vH28+zMZN/NE/g93YDMI+dQyI5dsyFA05OU9JXeJ5SR5k93rovai1gkslt4MSsX1f4mKUikOqJP6XBTTbGskTg==", + "shasum": "1a48ba8990e7eff2b478c66d0a73165551bd6255", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.381.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDpI9WYmy+QWplwTO6uYP909YsKHYVYhjv5M0FBLX/oawIhAMJdIjWURUPLCN9KLAaUbCjfBuNgXMGjd+bmwbT9rmTS" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.381_1520560208222_0.38940116509709144" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.382": { + "name": "types-registry", + "version": "0.1.382", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3e22237f9cb5ddff375e45251043badf4caa8487d1714540262ba60d6cd05429", + "_id": "types-registry@0.1.382", + "dist": { + "integrity": "sha512-N4p6ZBD8NNrKyPlil/8g1GuYMxG8i/lfikjYf95uh5NadstSAqroEANrVXmElCcjGx6efmgO3WadkKUumuhdRw==", + "shasum": "a0151ceeea15a778a3d967cc2f6216460b49a968", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.382.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDyOD6cAIgxjXiHnuzu+PfuKWnaKZoFhp2oOGsMcbYBDQIhAKHFIS335+TTAE2vF/bu8GIYlKlYVSU93nCuCwXGL8ev" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.382_1520560545275_0.09527245246429117" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.383": { + "name": "types-registry", + "version": "0.1.383", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5c2ca64d31f66759b2e0f961d2e128e50b2a5add4ccf014c8aa26849a29a52d7", + "_id": "types-registry@0.1.383", + "dist": { + "integrity": "sha512-uf25p3CaJsahwYtzaSoESHfxuRJ+0xVKMAmmBF9EQiob4ItZmDaVyunUk/7M31ZFNCzq/jE5zCI5IFyyzhOJXw==", + "shasum": "ce9f9c2ea3675d3dfc7fbf07a275c233b7483b6d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.383.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAzR3KnZnFfaN0/pXmHCv967J7cEPgQUk4XG0LZTRNYOAiBt9M1icaK/i6GzfDfKDt5+qWiQX+gtE1jl23VK/Y0GBw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.383_1520560904036_0.8449097255218274" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.384": { + "name": "types-registry", + "version": "0.1.384", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0d0e84477441b74cd46429a3d506728cd2ee14fb28b5ad3579f6510df511242e", + "_id": "types-registry@0.1.384", + "dist": { + "integrity": "sha512-Rv2VqROe6B4RAK/dixlyZsV35qFcyFwl8yac34WZfgIIh3ut0Ep2G+sBS8QtdysSbLRHcWNJlcADk6CpWc8vCg==", + "shasum": "5d825cbaa4c2b33c2b058fec9ee1391688958e94", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.384.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHiwcofxF2AZJG2UdND8d2XOpybV/3bQIt1iqqG3c38rAiB5Sq2rc8q1w166lpPfwWnpRSY3tuCC0tryvhYNnfCzuA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.384_1520561252389_0.4782714948387512" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.385": { + "name": "types-registry", + "version": "0.1.385", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d77b9e2573b1658d12be9fe4770a73839162adf81978d5677202d4976be43907", + "_id": "types-registry@0.1.385", + "dist": { + "integrity": "sha512-/HACl78WIIzciIJdJhMoLh/UWAiTtLI1u2fOvpRcn89myNxSZ88rFdB7JqXVyznWkS1Chy0sCmExe5ty/mmfkg==", + "shasum": "80965dd5712482431fc73e39336bf1be6366d904", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.385.tgz", + "fileCount": 3, + "unpackedSize": 221438, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCQhfcGus4PKGBtkYQQpLVzrTWHcPDujqm7Zucn9b7XiwIhAOkpIhCpPYSs4OFVF2lKCWh815nSkRogViyM4oWrtnJt" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.385_1520561604336_0.21458119652229124" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.386": { + "name": "types-registry", + "version": "0.1.386", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1f66a498d37f4ff47400e5e224065489da9737ebd6f8acef3ba631d7a6d19e5c", + "_id": "types-registry@0.1.386", + "dist": { + "integrity": "sha512-U3FbNoPK2pww98hwdr+uHpsYYqoT+663FIyk442xXfuJ5JRvFVBTPNr1GLabiiAK9xqUxfEPIfm0homFPV3BuA==", + "shasum": "0ee86c0edac1a0db22fe1f0396654cdc900a68ae", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.386.tgz", + "fileCount": 3, + "unpackedSize": 224187, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBNHQZO3OGYzlx2qijn9q1csPsJ6leSoNYnYBwmKiEMpAiA3/z6XS+gwii4YSXwkQLrHfbOWEnhcjeY6pksuBh3Keg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.386_1521846160763_0.5621106102564235" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.387": { + "name": "types-registry", + "version": "0.1.387", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5fa1ab7b1a924490ee17cf4ed2b515fe472ceaea17120f416699d1454f3c717d", + "_id": "types-registry@0.1.387", + "dist": { + "integrity": "sha512-2tQUeF+fyt8xQVL2AjdV15qaUWfi69cqYzlFOZoCQVisdJp/7CltjVlSFe4zEd6D9PwwUqBjRHVo01VVl3U4lA==", + "shasum": "5acdbb0dc80136187600feb0ee914747a4959fbd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.387.tgz", + "fileCount": 3, + "unpackedSize": 232347, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa6JH0CRA9TVsSAnZWagAA/EUP/Ak2UhCfdFXcx58IiL51\nsuVkzqvWH/rXL8fOa/CGwsw0ropOH6GB8Wdbe4fmt2leTgGumw13HQd/HHgz\nbrRglAlxwVW4Quhd0jIT5AUos6zq6zfTnj20erE5oJ43UxoghzOZvJAkOZzk\nCtMnGKW+Pl5SbIMsqAMxtVw4Fo9OHrIX5ceduorA9eWR6ewRykpV0XM/1kT0\nNhcand5V4X6bUQLeA2NXyV0JdMX71R8pxB4E2WtQGozYzzZyCq4/mkTmlbuv\nMw6wzoqOpmP5fX/cjEZTVnbDPG6XI0VkTgIQGWZYHiqNxgODAB+V5KsRHs3g\nzTERnvYHaWQIl7SWFkDvvwVquVmtVmwafPGxSltYMncMwIEs9cZ+gbaUwgi0\n+int4ZbiesdaLUYXg0n9pZl0tIKVLAGeECijn4YEidJ8aALMTS/8kk34HZnG\nw0VYenInCvavlwlJVFIyepOCaQarNA/OnrsxUw3bRtaFCTpWCq4dK5MZN4WU\nfuyz6X31bbdMTA67yV4QrOdcvqvAOIW9NHKUBcpzEQqNqNVke96NYE6yEv9+\nYnOGtCY5Qz/8HMfwdhvN9l5V+1sEtPu3a8SMpCY+n/U9WTjbDuOBB9agGoAw\nJXAXEOBheIkkczLVXZ/nxLlsmNT0k4aapbPYPg10hF3aBDK8t/7Ht7ksB86G\nrhrP\r\n=3BSs\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE3TpubIMjwaKWdyx2De7dBu3+USDDFgV8ySwo9YE+W+AiBfyp/6dWxuMFeHRk4yoSBysZsnuGqBI0vhtJb44FLdhA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.387_1525191156081_0.7770319220607151" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.388": { + "name": "types-registry", + "version": "0.1.388", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d0c7d7307107ac2b1a0bb9b375ad83971d8ea83b0e7fd82b4c152641483a2b39", + "_id": "types-registry@0.1.388", + "dist": { + "integrity": "sha512-jqA37XEJhP9MaGPEM0ciXIA2wfSkLpqTlA1SYeMlOSJ7fSAFJO4Xdr4VdHJVzfWVXjx+JKSNLkpLQqewctWc4w==", + "shasum": "1aa9da8fcb380ac8bc23c2b6d8a737de0fbd69ed", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.388.tgz", + "fileCount": 3, + "unpackedSize": 8407, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEHPgCRA9TVsSAnZWagAAwawQAIyIXzVbpcvTrk7fgu07\nHbbXQpradnerm7k3Zwo04nrFGowr/q9cIgbVVhgmVKha5arTJUswGfCeY/Lf\nlYL8XGMATzRai6TOleuBuZVNMDYOeExqzLWTwucLKcTi10FuIDAEf95uoqZo\nLpLc+qaKd5TetWr4Cn9g7eV2aUUSgEXiK4RBX9tU5+GT2n6EMBPhzIr3I3qT\nYAmqqYM+kmL0pp8aAX6ydbmWAs/ejJIh72e7CnfZZLQ7pgpBpItqduxujFCn\nJcizoNCb7IiN3LLviTTSasDBxtcGPWU/X6whX8+7ppHuyC+fLaneMG3svOTh\nWrJMuulQbf0V6JiOvm6AYY0nP1l8LyG2uDWIm/668F16FRbL6TGq37eK7q7O\nCpyB/rXeAlecDo33Stt86Irjz7zStZo9mx3hTzZDXOZMyPZpX/yYKLc8Rp63\nCsIv6vxfPjgEx7pZHNSWyoKExdr+DhMlv/OwANgbEKpcgeMz2gEr3ojaRpXX\nNWJuuAVTAFZPEXh0Bd4bDogwIvOEJ5eAXtvtGZaGbWyFI54iuoBvtqMadWYL\nNoS2WqiHKnuwqVzD4O9VO6knt9ZjQaJCI5uh8FDlM2Y8bEbkBu/l5qEh7vC6\nyJb7oA3T7SL0IJs7VMKxa15nxQtsJE5bzTPuW3gnB/A+7VVNFh3HB0n6Q/RA\nP6bX\r\n=N00L\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEBqZFiiyeVOTo051Uqtt826VmfGjQo9DxdQyYqsOMprAiArdHjnryXsp+A3SiQct/VW+bHq15+iZ9LjLEe+p4jNLg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.388_1527804895602_0.39654217875561604" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.389": { + "name": "types-registry", + "version": "0.1.389", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b60b78aca1334d52339852209058ed7223e442d8fb62b225c2966676781bf6ef", + "_id": "types-registry@0.1.389", + "dist": { + "integrity": "sha512-VPF6mZfKVnJahsXkNVjsv92wbwwUJIrg+xOGiRO0TZGtiN+rN3I4wuQjTov1xBEZIDPQuVRwjPMEb+/bP43biQ==", + "shasum": "ad4d3bc6d6781d011336805ee8d52e779a759011", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.389.tgz", + "fileCount": 3, + "unpackedSize": 240667, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEdkiCRA9TVsSAnZWagAA/T0P/35HaSNv4g4RH9GV0iQj\nPctzicaQcJd2X65mR9BNh8wiSwNBTOK+NAczXlT+SXah2LPkaIwwuEgsn6Jf\nDlxG4k5zvQbQLEbAzE98Pv8QkM05/DKYZ5dgAVYKQg2uyhzdxrDYjY1apHc0\n9OTrvSMJBDRi5tQlXKa11X2Ut0QctUH+QiyqXaKjXIEeOnZG2AuZrqRdf2zw\nYS0tEvTXOm2N/EX+ujq8Fhjmj3rb9beAXnFYDrjT0t4GCjkRmqWFrdkzcflY\nBKE89MZ9td/0sh/CD50J+2twFwzj/MIzwCc2lCXNcMW9SMS9OLiGz/J+57p3\n0J3yfsGTn5/pgIbFEHha0MG3vScPCgaynmBDm9DZRkqBNcMIgRkiO5/GyFQb\nvGie+eZJAMUuK6NAp/dAla6gKXnv8eM69+yb5p7Rxx4Tl2ss1I968p7lrIAq\ncGuGhuyhVWMG3pg+pyqusPHFO5XdmWREoOhRekHbdUop/1Bogc5a/w8DJ4GK\ndqZJJ/Qz59sFWLKQcOjTaMnPdAww2eiocmxX1gtTf7eEFm/jYadzTCMw9qoi\nlBTOARti+1JXbtuVLgY2bzFinoi3sNyZk7D5CcF9BEs5HndwTpkAHfIf9esu\nBdKUdGJGtIut68nY85FNP+lZ/pqMBDOVDFD1PGo6r6e+Mu6EUaMaB5eaK7TK\nCDJc\r\n=inUy\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG5z+++wdHLGmL30QrWnPEgsccIXvoDkOr8yTbKDdb8RAiAEWCUCAx3KZSCf7ZS452atC5/mIp0wq2/+5ROrXviTXQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.389_1527896353932_0.1874747248127513" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.390": { + "name": "types-registry", + "version": "0.1.390", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e5b402815e7e827b8862cb0236e5cc3a3222a5aa0fc1a4ce39d75a7f3846edef", + "_id": "types-registry@0.1.390", + "dist": { + "integrity": "sha512-JHd/kJ7ZQ2W9j33jn9NjvzkUX9YKxE4fUewiSiK0WCT9p5WkOzRsnUSgHRfiRAEWCUggOitBT5boiaK7gBnk2g==", + "shasum": "056248bf4f333ab0b5fd71a4072037a8b53ae73c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.390.tgz", + "fileCount": 3, + "unpackedSize": 242676, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGyQGCRA9TVsSAnZWagAAkqAP/3lS/vGXVxCoHWu7z0cm\nFOSH9WIGFtU0+LpODW1SyDruAjG9u2r2wcF//Zir7iQ1lbdHr1CiuwPhqfIU\nsedkfxaVXPSlHwlm6k709NjRrhswuneut9fsUBH2ENJD2VoVQ4k57LSBZW6b\nOa+jWEZzQBdHfDgL5iyFwra2sToFyB8fHXlIBP3SZrrRDNwhzj9y0NbzPNVy\nyWqwjYrQ5tK9RfzE4PLBXh4nCpRFmvNHRnB0RqkpBYfdxIEDbXdRfdRBS+G0\nBxjz5NtW9z7hv5havhsr4+EDNusITjdnTAXXs535ABusQ4K4DDwZBOoSJV0k\n3ykAHx5y/SRu6d7wQS9sPNgtPpvgRjXAN8CJDGWc75SE1pycACam2PxIjK2v\ne6OnHZWLtgi4XnPXBl7KHPJ3TRwd05W0YCNOK+K0OmA2tz9JWmjia0xgUfft\n1xl8ETHC5zsez1lh4Yp1BdBabxLO0pvKvrmX0AHIjqr+y2XfIcbibxsxNRwV\nkA95aCCKMG0+W1cPDpPOg+sFpr3G3Zqgo/PS0ONoo1KcxqD3CyeWGyzrB+Cw\nUWitDockHiCJXpYUtP0VIm9wzvqzNCXEk2ci1MjWGjrztvoorZlaiVeeuOAC\n8PUNJJlVC9Y3VdZ/aoJqo6w0ydWOJOR9DRnmJgjWnWLTOJsx3UKpbFaHWDIm\ns3zX\r\n=mlJ6\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICWt+X8v2saEEoJFOeNI/lpNPS6BYdWt3gP2hZI8JmsIAiAxsfrzGuzRBKTvJ/kikEs0umWNrW7VVOVMJBsKwj8pyg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.390_1528505349261_0.6428736093899181" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.391": { + "name": "types-registry", + "version": "0.1.391", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "09fedf12831dc35ca3356f1b0d954bb898c42437b277d6466e1cb8dc17838c89", + "_id": "types-registry@0.1.391", + "dist": { + "integrity": "sha512-+DWedioBg1uI17Zu0e5igchbdsAzD4rba43La6qRScKYnSMWYbWel8RJANI+5g3DP27aYEsTcQnXP+FY3IV3xg==", + "shasum": "9a49f9cf308f484e4f5ff7ac2419c4de862c286c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.391.tgz", + "fileCount": 3, + "unpackedSize": 243874, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbJTapCRA9TVsSAnZWagAA044QAJJHWUBMxH99+31zf138\nqXZa+oky17ZX5JhOXVX5JMOBjAN64A5EqpeF+xWXNFfW0oMkHdCaJLlcOptE\nVY0+ekF6LPJlQA6psSRwiksk3ZQUfd7TtYmKpaSjuO0Q90uoYh0RIpZljixa\nuVXb3XDcf6LnsqyUXs8PZNBuHCBJCOnt3F62PBTBNXf3QGSLO51axvXnaMub\n/YGDiLi89G+oDerwB6/u62+1IvLa2ZFpjHgQzJyQ4bcugm0XFLwaq0TvEogO\nY3pT+kJdIuI4JjuPIkyFZrUwZDcuwpfNgxGVuVwTxB9BueiDNH3ybS3WNvPQ\nTqMrJeDdGxHnPmiCC1FfuGhp4k96I7kZ+j5gNUk29Y+E+TQpjJmHtGyVNwuF\n6ITfIKr2Itm/FEFEFv/kjO/Y5DPBwgzqjITAuIHD1HBCqqRAT9OBY9JjAKBT\nyvl4HmPDVS+kN0J/x2eFYwCidYJQ7X8HrGcAMbhsXy6oLcIcQUtUFsgHz5ko\njY2CoDKhBbBGH74NyUDgOTy2xarX2AOfNq9q0B2iPoF3WsDFfgiURYDQINqJ\n6JP0oCVqamVGhYPIxsQI+Vc04GKCKcQkcFDkD0knIlgoUERv5/rhQb5vhpAV\n06i0flfiLkBs0W6JOq/3giSz+CGwk1chdNLXV/IkmkJ5QWNU7BJAUc72tcRe\nC8NA\r\n=ZiTV\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE6rkPLE7XvE2dPCKDTqxMzztIF/Jyp5Vq0uvsvOcVnKAiBV88e6hy3R3OyaqRCQxItVIk9PCrU4HYqtbGHqfAt8uw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.391_1529165481166_0.3088727301851626" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.392": { + "name": "types-registry", + "version": "0.1.392", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c0a1aae408f8b9ae05784933a6f9ab3c7cb73d1936c7fdb27ec8f89fb079c6ab", + "_id": "types-registry@0.1.392", + "dist": { + "integrity": "sha512-q00B/qmgSCqX3xWxGI1srri8UqwnLJZiqebWcMvQBFEEKYe0NW9VItpmc0fHhax9Cok2j6uGW/WZECLCqDgtwQ==", + "shasum": "ecad0b373be988b07f65e92b34c9abe9fff2ac83", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.392.tgz", + "fileCount": 3, + "unpackedSize": 251151, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbRCyZCRA9TVsSAnZWagAAU/EP/i/tDs4e7Ra+Q89YzGbg\nF/j2mwd8fnfjundxrvzf413YoKtKvmA5uVJbbmw3zCmsatjTSp007wq6QrS1\nkF09PQBJTbJfTe1is2t0N3c8Sf0CjdyCo+IF9tv/H/LlsfIf8j7l24hOXl8I\nsPFp5WUUG9BOfIkjZ4Tu5ejg2NC6zslbu+hd9DQwLC9PP41QKb1gCQ/UOp8w\ne6L4zXS53VEHnH6PiyUCRaQqBDZwlBeKJo5JqbEriEROscWKix803lS3uOXO\nIomEeNA+0jEFbAUGccRlbCT/SFFk8oFrvc9OhOAwVTBYYXZtmC+pAZNuCIB5\nU1IvV1YAoDKcojudGj9j8KU99OYGU8tVSqyV5TSDokUSbqqbo3+RDqlJRGS4\n8XnhEwkJvqan4nOPsjx49iBYkxUc/Unco+ZadRCdz+QeGpnZofYryvNqn8AF\n0szzFa3l49aOaE9CKBZECYN7dq6l+yw40oR0jjHAgayz7vrWQiy5jMatiBpr\nY57wBp/OPRCDo0gAFRbZ5yO5mQ1+7smuLVYJO1dT77hpPpF3qTC3p+xHc64m\n+20E0sOdH1k2BXdcQ6pjgOVfO/6wc+MDqtsMdOU15Nn0Peqp3WUH/lkL3thT\n2XbueuX3KBy778nyPWr5KQZm+5DPEq+0yq2qsIUhP4vM4k9YxslqSYVBkMg0\nV3NN\r\n=FIZh\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCcDjr9vrh7KwaNZKtALw/h0fXYIpc9xgYun5VkyyUcRAIgd34f1nOQNbNFkkjWOze9ysBoXcZJwYEKi1cdp3NbRZA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.392_1531194521599_0.5499200095854342" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.393": { + "name": "types-registry", + "version": "0.1.393", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "14a5d5c9b1fe994dca639308abce721dae62feb82ec7bc862b60c62e3389276d", + "_id": "types-registry@0.1.393", + "dist": { + "integrity": "sha512-3QpmMZPh7TatlLVRTjROXWFT20Cr6EBxF6MqGW5E/V451KFUOGn7q/lkElzoc5y6DCl8wAO2kX0CQNgqVdWQMA==", + "shasum": "4d1828640373f4a0aa94d3efdec720bba9c04639", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.393.tgz", + "fileCount": 3, + "unpackedSize": 295496, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbhtPtCRA9TVsSAnZWagAAi6gP/2CBb0oSgqfNASYPdLjI\ni2zp6J+tL5mVgVGB1ZmdA6skRCXgxB8IjG0wVh1e1mwzJFSs0nGzFcmhHZ5y\nMKt2JtXjhQCvlO7l4OahzszyjkqgRYt4ZIpechl0I4AI2t/XOqLljQYZGzT+\nonZj2n+VZPhZlwTds/I8n8Hkz7Ay3cqByPR4LtxNvfR0rJxoBm4Dxn7vAlVM\n4nlmtXi9lOpL+R7+ef1WLLBYhliyLAsCvXsqMOF1XaAo6Rk5S8wJnoA1fDKe\n3P0QWMtKHZNcEAmgJZwZ87TobtXl/N7h38qr63JTbhca3x/FR6ZQYI+fAKba\nqEl4JCRZxDdLv9kW7g3rnB70vvXdfJiYXRki7uG7O4GBUnF9OCLK4OfNnqXw\nb5ucZV6eBJrkSyzMq80aaa76BnDoZ9LR3sxhOEdXgAAfH9yth8E+R4L9nkQf\nT1CUwIOUKlN4YPwRV1Z0bCxajvGgLPgS0Blotlgh8fFqhnZDFpanN5/W8sDc\nlvi+HdRMAgMDLaYOe65qEj+Tvucneg4c7t61IAjIkpj7V1WvoBtPrlqfg850\nG7ohh625/n6ps28TuywOdHlHUlgqd5WZ2ZE9GtE8CYKK2UzKbyW0UwvuSCzz\ntpOOuK/QpPWPoA8f/SSD+uZYxODD8BPudlTpfoFpZwIiXExOEN6WPFDDar39\nRJXi\r\n=mSKB\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD4QIanboxf354lzX2PH9lnExNweLuLlXkksmwKMpF41QIgLCZ+lSQdU1oBT8mvNEIzJFtggFCnOY2YegVD+IEFJEE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.393_1535562732915_0.3869490533490272" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.394": { + "name": "types-registry", + "version": "0.1.394", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f885922527ef84e85957470f9ccef5113bb9a211bf4d9a9c22e2388ac3995381", + "_id": "types-registry@0.1.394", + "dist": { + "integrity": "sha512-Am6jJIj/xGrODDN90FuijYcESVTkgpZdN1nYXM2evVQz6+ttye+OUCXwu1oa3AE9it12e5Gcg/pcgYVnLOWxgQ==", + "shasum": "8e93af6aa430802af279eae632b18184c1acc0d0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.394.tgz", + "fileCount": 3, + "unpackedSize": 311447, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3OvvCRA9TVsSAnZWagAAbWYP/RvbBS8U5Ao2BLqUQefv\n3z5uD6+5gtp3WvQJSbvOfoE3bT9bkSG3Z3sFeYAkTJzGVbIGlrOQbDYKd/ih\nQJIg/vd+nGcMazsvlQo3qWI7G0HM6oXBfbxuya+gp20P7aYmjxJfQ3BuDFy1\nB8+hVI0AdI8285CS0Ewcf01O6QvhUhebFYFi9bU3CMvH3R4fPlLl7RV6kBZI\nHrh6osRWBHtOL5uW/5PRI5+VXO6u5pZWMtrOADBRqbtyICYd4snsgF/ij3am\nvc0s0qhqJttsqL1gxRdZpRCnZEgbCvk+XmmekjCzoZPk9Guy+lTw26yhrOQZ\nDomKlx5Ffn+6nADv0yxW2L1gNQ/KhpkIKGQ4RPHB9D+mY+c7/lmQ54ew/uwl\n5E75Cbn90XivhGnL3l0inbIWoWxgMbjHfiNJq482gs/ni3ZrfsrDmq2aAkSy\nXWbcJXr69WfQuoRjgjGJ3HRC77vKq1eODPuDagYfuDn6vltY+qD2lWxRMenK\naAmTj1Dalf9D/7OtXaZL2KoWNY98VIh6HLX6k2o5C4XHSRT6Nhpjwu20rw4J\noL1wAtgaqKDJckXeuIUSKZr7CXBiggqC1/+B76XwifaKgiM2y0UgpL8IQWzw\n7t1z36JctXH9w7JbOpyyg5C/AIZXWhtUwDugE5HO8HRfhbeJU4ap2+d5jMNr\nl2PB\r\n=l2pL\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDuHml18n3xCPnReg62b3/Vvpw309bR5gxlua72jhinbgIhAO9GETmxKXuoJAEMdNPQwERXmssraAOHrwXm+NZi+7Gm" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.394_1541204974707_0.43513900101608205" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.395": { + "name": "types-registry", + "version": "0.1.395", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d1477efa7a078b8d0c5f16d079e79109b8825bd75ca64bf9d07d67c17394d6ae", + "_id": "types-registry@0.1.395", + "dist": { + "integrity": "sha512-Sggg3nle6Gjx6dgaKVf3PVVRiz2JYjS1XUlxHEnwcuCw/jrJxfk7PqdDQRjzbi31vf2WPqGS4Pt1GfIszn5i6w==", + "shasum": "93e71f28c3d36b32ed43dc70eb39b4ce3d5e3162", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.395.tgz", + "fileCount": 3, + "unpackedSize": 311355, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3O8lCRA9TVsSAnZWagAAXWoP/0PY2bVtEyvDFlNnNkR7\nzpjlmClyAv1EIACdRk72Xt6SI2YMwhoYAMC+QepIZ4PFhvFEVK7OPtfZdc+I\nNI8Khp7u5c5TFXuXmaU7fQcg1WEhWZWQOe0Zl5dg8FQd6Rm35fGKoix4V6tN\n1KyQ+Q7Za/DkiobYmFS1sMUSBXSPwst3L1CwUCLxn5VoI8+OShuT8f6RUcXT\n5BEsPBX4eRV/0+h5anrWwNgVk+TLFlVQKl5AEnrg5qhx580lyJ5e+cHRkEg3\n5I5PjsVZn0IqMB7lypSFfGaczR+VWtDQ5SIaQsmK6LDRzuo3mOacIqc0Grep\nSySe6+soaYw32HDpjo884eYpU1HZr28u74f69lHv+UbkcJa5HfNaLZYbkeIc\n8igXP91zWchnUrNQj98M76w5ljihwYgmfvNAAoaShciA27AS453Kj9r+ppgR\npMuXolfcyq/5cPU0ESjViBgGBt/7S/ELc/Mm/oilPttDHv7Fx3sTXoUBkdn2\nh9eNOHdcnaLF6zr9ONFRS7a6w1dSZyaI6qFzlGzBuhPzZInBZwd/7iBLnwvB\n4NOQsnQt1mh+x4gjAnmTqwFj9tx5sDwttfpfYsiSpZ1jrY0rlq8nZNsh9Bhb\n+wQBAIOSxGgASz8kLmWf1dePSPaZj/oVVWPKV7VFrbT8OyUD5di3yscQo98c\nvSjG\r\n=4lMR\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDpno9JsgS3/rCvkjO4ONtkHo172NFST4uAnWHL3xjLlAIgOytoy8EkHY5FjqePGsIIqDrLy1XnnPc/CQjJIrc09BI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.395_1541205796619_0.6718325618987007" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.396": { + "name": "types-registry", + "version": "0.1.396", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1d80931aab5060db6717fbd17019b8d6bf5da6310ed8b396b83a8daf27baf733", + "_id": "types-registry@0.1.396", + "dist": { + "integrity": "sha512-xfpiAoLNnva+/tHvsD42yPZER5mATr8Q5BDdpXUitZULOdQOMBA4+0rhXrV/6EA6NPpUvGnkXyxlhbVWfhKXig==", + "shasum": "ac641ab372ba5970c40ab9e75c6d90f25e9a77fe", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.396.tgz", + "fileCount": 3, + "unpackedSize": 311355, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3cYsCRA9TVsSAnZWagAAy/4P/18wrdQ32Ka/ToUJhuHp\n2ey6mFt0dAdU5QT3DpFa6DL4lJLvf4siVmdZzOPVIuKC74umUDq1fGJwE/Zf\nL5SA/drXb23b9LaB0A4TI2eBeX0bnFzs+MeQTV855pszXimz7Yey+XIWYYEu\nLxpuN30d8jS2ZBXcDZMoIlbrAoFYfoVnCz4raKzvOBdFGwIwszsMNEPZWakQ\n2KftJo7GatgTSFDpSJ2rYmmwhiPVdoc/6p7YEgqyQfczkWfsqrLbdTI1ypZz\n7f7rKqZcKwOOKKVjluj2tue4c8z/MHBB2p81qTXQhneO3g15OtKodCtGIqyu\nHgfkz8+JLj5iODMVpLS84zsqU1t8tJZgAPktE4OYcotC730WBoTt8y2hxWvz\nrD3XSgNRvW9T9VK8EeE1JoBMZZkvLq2f1Lv1z7euXPq/VVFNM+K+So3VjDNA\n6IxbubIGW2kSj3AB4ZGqY0HkbBVbqzn+GCQTna7JBQXhThJVxpGuFZyFOFMw\n3YaPlWtAq44dwCrHwozUWFwPncVjbo2JUouKxSFK5STanRDve9MaIasZNeIe\nkvdtrT1xbjBX6dCw+0YLoZ9OL05bRMYzNdmZUXdo6N8KG5qAsFxGb+hPb2mi\n6xzKy8kGFqJqwvmDCdmrbtg8mH903USzML+u6mPexoZ7jBi17BrWp2waBaMb\nD/EW\r\n=e7TS\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA3fYMntFg/Yc17M6YNlockqlyDERWiYX2pZ52VJQxOBAiEAreK7mdTSg/IThlyOt/kW0Pn4fM7lRRtkP1bzOq9UA9o=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.396_1541260843769_0.7993311059271224" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.397": { + "name": "types-registry", + "version": "0.1.397", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "abf42ff749f5582b6e2cc4594d781fd8214042bf4b5dc6848e1b2bbc64dac32c", + "_id": "types-registry@0.1.397", + "dist": { + "integrity": "sha512-t8WscTOmtfZW/np5zpyhL5DiuDef7bezPsxBrkCy5dGd7YoAnpk7Xl1Al5GGjL021MIym2glvt2faqaZcjAilA==", + "shasum": "ba45f52e7eb34e43742b59900cf67a232e82c93a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.397.tgz", + "fileCount": 3, + "unpackedSize": 311421, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3f+tCRA9TVsSAnZWagAADMYP/3CpoNscFA2ahSjwhYI/\n/Kk6AnqS56Oyw3Rt8PtvuUUYMqjNeKDOrdf4ncyRazpuilv/DyxHDS/thxf4\nkmkFT7FrkR4DffJNXsQNoGeiSl2Ly1Sp23datQLjQaFDNCCjojZXCrQ+7Dt8\nnHX/AAADn4I+zOHMwOpwEhPEVhh5VFl8xezGFJzM+Hoax18QUOMBDeGwNfZA\nLs4LqD4foc5DEq5ha3xx0deW6pXbczSTRWgdZDdhYTtaXMZa6SWkWvfT7UR/\n0P9PDoCztZS/ttBcZiM0fdsh/sZJvaAbVgwJ9ATeZE/YZQMZyY2ZZsk9jvCQ\nhn6Zk0wSKqZqjKfMtMmSh6sT3I/JW6FOrmjq3agY6RdrY3pGYKKpWc6hyKhA\n0758L0o547qhym7QdbVPxhVmdhqU/HeQt4SlSdCqoUPowRUT+6sS5Xxh/vLs\nrecErdZG5H2fOKFCsi40d3pgKIyGQevCmbrnk+wkbgrKWC5eA2azM8b1mfQp\nuDaBjBED3Lh5oxQIyWXj4HEE2koqozsHdgX176sZjEPNAnAKKOKusfEdIq5d\n6je08M2YLOcu+PQwVaQ1LwkdRRFf6K7dzkOptZNtw5HHbQ7OW4br4WELpVoO\nYz9onuQVb90InzwJU5Z5ksplh5RiwBEPEjFG0lesc1mUl1yiXH7y3x1ngXgk\ngFEa\r\n=pRpK\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCDKykr3gDZ1267AFMG4wtZUh7ACQzmYAU2ArjsfzT4OQIgAKQE8cNyOCYv+VzluCK6xhqrKi+cahsFMuFOR+I3ve0=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.397_1541275564136_0.5760780227024274" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.398": { + "name": "types-registry", + "version": "0.1.398", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3a2c2c880e6aeafbc85a18fb7ce17a3af9140dc8e3115570135ac5a1232c9dae", + "_id": "types-registry@0.1.398", + "dist": { + "integrity": "sha512-FSsCqJxn7BC2+HCXiVPDFFVA1ZDDiZ4rHbqNZ2dpBngK4ul73a4FhzfBtEVfFaop7y7lE9ifPAGY+L1cOazmJw==", + "shasum": "47547de7c6f47e7f12de6b77bdb09d122e7abdc3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.398.tgz", + "fileCount": 3, + "unpackedSize": 311421, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3qGpCRA9TVsSAnZWagAAKdUP/iav8nAE5Ufaq14DTOwS\nBgVkW0HUPCZU7G7T8l7OLJZX1laR6Cj+E3pDubXU1S7nDWgCA/ZNO6taGEyw\noHiP0PuIcsO/Z91eNf+os9bl1/7WlGQKis8UMJdZ7KXDQTu8/eV/UUY2axOx\nt4RYatVcKo7OjMbmaeTR2xCGQ8IhD6wMQU5ck47I1iu8CUyy3JT40cpfGXO3\n7IRK1lGiERekZi7J80/US5YkY0ERCRz5A42w5tuHyrVjtIuuIpXY26BbjfBL\nNvlamZyhPhiXr7Ji5jKnCB1bALiyMHsj6u4WB6p1o7V4OJdlkhMKdKL58FEr\nJsoiCyLIUDzo/hD9uQqLphlfWofTY5hKfG62UQPoj9clPhPD19eznkHYoABk\nQWjilgIhhttIl0u+HsrT0MevTu4DtWPzrOgJCSdiqdzuI8uV7Tl+04fUIjQL\nK+H+y9VNz0P4CXraoDYrgosrq6v30bia3y6pWziNdfG+1P6blYwNzHKMOF1J\nubUxLyr36DE4ekyA15N9vY1D8hsQO2Oet26Sti4Ltp4Y8BUJllJYqUz5zhdA\npA8gK5AS6Cgqh+Ja4K3EvCq4Gr3gK5XBqSVvZg476CY3Dp9vnrSkUVp5Ix39\nQG990UKFcFlIOU1M2ckElR1QE3xHWlRvC1cSoBVlabnCdNhKAiSqYtckLqy2\nYFtd\r\n=d7EM\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD3AiH7TnY3JvLrIq8kGVSzO1plVpIJ9EhtyQlpbxpxGwIhAMcqtO8ttdvMI5WEVKA9eunb6gHU2Bi1IJYFrzAX9jpv" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.398_1541317032430_0.1602690862464522" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.399": { + "name": "types-registry", + "version": "0.1.399", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "293123f8aeaf5cd1478c881c9f44c8323b8af8fc84b17eaaf48986f9980897e5", + "_id": "types-registry@0.1.399", + "dist": { + "integrity": "sha512-b+/vGP5WTSzJtZr30S/XHdYHrSamFiS/IG+Ucu+dLfNEW+NPLCSi1H1yfwWeJz6aJwg3NRn1YRoW4E6zm/TAVw==", + "shasum": "726000609fe82d229b2cf46591ec83cf2341c547", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.399.tgz", + "fileCount": 3, + "unpackedSize": 311420, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb39LcCRA9TVsSAnZWagAAyLkP/RLjM+VZ5VXloUgR6ZZN\n4NE0vl4gCvTuB9bqM80rjLU/fLYE2gV/WQHF3LnN3VNigdcOXbI80zrYOajf\n38+QkI5jQSvP2rwXR7UMwtRUponNf4cGK7t1F6cgRloiaOy18f9ACFqACzyU\nPVQvYenxqj88cvpyy7cc9Zuv5wBPW3UES8NH05Tv1N34+ymWNcz79NJ9WbuI\nHJTD+VQwX0Z0ilC80/jiXp/JLuBcR4jfJiTSE+hUw979qcqqiA8LV1QG+MGC\nA1PduIsq/DxcfCm8QFdNgGJPGzG3DnpBNTge+/UWtaSFqRAgQyApeq9qgmVo\nm98rxcaU6xD5oWpgrhaM28egIcm+97W3BujEzLkHWNJiQXqFaO1wHgEAtfBB\n5PfSuLnaxyRAjjVZZAsfMqRnbnAkQCipuOYEvw62+OgTWso1vv2nZhTc8XHb\nncz4VS292APKvjMfRpS1W8/oIaXW7kLiFYGhmu8pqo7jaEubfALZXuSE+8Jd\nZpFYzurF/JMxDdBuMuwtQFYGS7QmHMN6AVZOqfm38VBrIL6toVbFKwBza8bl\nYWZH9WcCBWu2f0GGdz2Emx9dqgxXYrqJQDTNWKyCdWzO8gaSibFBurPfePtA\nT6zA5wnCJGOlZIiQusPfvWEheMk9JHHJVUQyHAhZaneBqDqdLQZMcRqefCB3\n2w3t\r\n=HmKY\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICBBvyduNDPbYp+976K9znyNlIEfg3dpHt35Plqm1HsJAiBQ44aw++hbA/zr+V+ceKKKRtTc5dlmDCu51KMSOZg4Wg==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.399_1541395163304_0.8320322269086069" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.400": { + "name": "types-registry", + "version": "0.1.400", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9bc956f5003934c5e596644e2279ec06f269d22b6369237c968a393963637554", + "_id": "types-registry@0.1.400", + "dist": { + "integrity": "sha512-k9PBt3b3jrRu+m3HNUSuU6s5DFoSozAkZ6izmO3lE3gVKXOR25EGQ+xqz8PguYt9emjxQ9+N+YVf2FK3Ej127Q==", + "shasum": "02ad94e79f6a056e446774ccc624798d97876c10", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.400.tgz", + "fileCount": 3, + "unpackedSize": 311521, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3+BKCRA9TVsSAnZWagAAwFkP/3w2lBJSyu4Pw1wu9Ovk\nGxB7KDDXHRayd7YDsHEVbgBgXyVmzXzbCDygG4c6IxUnvgtp9Gj9rpKWDxMT\n28l1cu3i2gM6fI329RSMoP/Qhh8DhRgUTCp5xWzVAXpC2g5Z6OwCEd7G+2Nv\naKKE6UjtXtJX/BmbFlG9Ska6rnL3uTQwtk/C2vINtI4KijYyrWFrYNOw9/n+\nqRUhY8Qd2NvX5YlijFa02mxmlKbLDfLaUUZLg2mbZausYRwMeVLbE3Mr/Sxb\nGWYKDJ+KL/qqPZ7mWtKnF6GvfyNc2dF8TlfF/KEXVJFGW7pMhfx/ovKcoORR\nSRFjbRsCcaWTretrSa1ERq/e9y4LpYn7Bd7WMe9h4DdBq7QmqkKRdW2by7xv\njeAXVJsrBOnk+5jwQh4aHFAmRrX6y6SSTPMadYoFlb/OWdhmPS/7vpU+KT04\naS2A/uGTYYcD4ureqC6MQZ5dzZS71SM91vW8EXRUodWls2UPvWsoP7w/IqsI\nT4oeZfcW8jbBIw67a674EiO+s7RFyNs6kCMvdStQmBAyOXUt1ooSJeHKRAMn\nRek++/upxwXDFk8/dg3qfUMz5Ff49Of2Tg2kWfgHGUCPh4YNA0xkII856Uk/\n9//J5Vgt4L1leom/at5Z59RsjZhYu20Kug/pjD9OGtdt5ivNf3BFOLL28Cnh\nziOA\r\n=zwKj\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCpnEKCT/56aN5xbOPIgyaQcNwt5lk60miHuZTmVKdSlgIgDUeydAa9ZAaiRwz4W78MR1UgWGz1HbWGtasdCAn8TNk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.400_1541398601765_0.2326496092863526" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.401": { + "name": "types-registry", + "version": "0.1.401", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4dcbf5b2eedcbced9a392330194fb57c1494fd76113e72341d0f51cb3fb6a382", + "_id": "types-registry@0.1.401", + "dist": { + "integrity": "sha512-KbdjojpK7R2qYvsjZuYx5cSJXa7T9dSTA2OYJComRGI6JL1zpIxVrHGQt/tzSePXyvoZ63f3L0RyYhuKA7Agyw==", + "shasum": "b36a202f50db4ed5c7176202475ddafe224e6798", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.401.tgz", + "fileCount": 3, + "unpackedSize": 311553, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3+GDCRA9TVsSAnZWagAAiycP/RKyFXcoHHy/rzWabdNh\nUd4qiPTs6Xh2gl70AyCXMebG1hSnqbbjnXc0coDtJaQSegy2fO9wBYpLdrQk\n18I0KdeVqm3m9bQKP4J3wolzWmFJ1MlMshilE0NrbXO7VlYGQyW+YGUg7byX\nrZjmgdIFLz/kSX6S2s1/EAfOr9h3jT5YTCXmSyhUW0HvqBTSGCEe4eaR9LvQ\nSNrwFC/pnWlCc3YJdkcgUIkV1H/D7U6xpnNjsVYoYSkTkfffwGrqnPVrxcvq\nGPwId2E2RWSYq4hylBfFtcAJRYVscBcd+hEDuVtRIOjd4G8iC4HYO0if4t5V\nXLQRgMH8Ja7dXGyfryZPDnBDhGNCTu/wQs/yYWkWtmbWRcY/fn2ekjDXjQco\nOBV69LVztq1RL0GihRwlHX792/DHSxQ5Byqm0lUlUeRZDpveAdg3D4IfKkjt\nvSkxltxicYPxD05fa98zgLzfTuatNRRAiq3Zc8kHqcPinE3HDikEwDOZ24sJ\nJBwAXtAgz/t2m5HJCBklj0rpn0t9cI6JJ0AJdM17LBqbkXIdbhq+n2CfkSfB\nNe5jkt3/Cs6awX1msjpAvStxbhkyibS3uZyQcr5AUsAgndk794tpSlCo0ovf\n8wy/9k0bYiDDsWypoLaac05Mi9vqWu0sI5+zG7OHci8Odqz7ixXkSxMMylB7\nf5O4\r\n=4u12\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDt5foXBbYDjgPlI4ulb/cTIsdWxVLmWQ3Frp1/trOSQgIgDxvaSzfHfCOI1HkEkBA80GbEg++gV2HqMUFbNTRIK3w=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.401_1541398914823_0.22029679780101885" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.402": { + "name": "types-registry", + "version": "0.1.402", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f140f200aad36f2ebc1b6241942157d81290df0a99f29b0280739dde3c119cca", + "_id": "types-registry@0.1.402", + "dist": { + "integrity": "sha512-SW3L4Fo15gosASAV6DuHL5SHX8GCtfGZbihveKyPhMGDFZkjQQEVGk7U3+AilI0DU7LpqKTdfR7MReuuvZuZFA==", + "shasum": "1a80c79eb9e93c89ca0f69ee1acf245068ef96e5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.402.tgz", + "fileCount": 3, + "unpackedSize": 311712, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3+RICRA9TVsSAnZWagAAxSYQAIPdlDu20Y4JpaOqN+ql\nPYzaJT3M7MPRRBcjALq/2G8Qy0Xrk2j1/CzPQtjOeUDw2ZK8HjisQA6PaFg1\nA/EWGZ1nYRer287edDE0dhuhNWkKq3ZJLIop9z+xDslll2kEpq+8kAcJEH5T\ntVYozLsZl0dlfSjX4RhFfII9StJgeJXNnjw3P/MVbQSLBvLDXYAt5WoxrOXO\n1aCtu1H70Y1Mlc71JNNpnrVCGB5cLmsQ62+qIT68DR2rMI8agMcTWDlRD0u0\n6CbscxaBWXdqBAJsDLqmw3RbZfEaQZu0Ug1fUFIDKbJ/MDRinXwg52rMwdJr\nzejUsPkUAPWXM2OPSbHDElrNB6sRF+by2JvzmSuAiiCf0IJmI4pp4vzHijO1\nqOGmuCMJhsch5cSC6Vd8vWPnDSBmEGuxkmd6tE4wrF8YVKAoiySevhY6dLmM\n8LLGEYl5xSO66ysqlM9hraye5yiHL/A1HAMpZGIZSI0RU1uSKa39lLs3pb4v\n8Zwls1DPFiKpKslj3rKDhFKlImFpzfTTVQyg7Scyn3voAggGjHOa9MdYHonI\nyvpC57cR1moCmguCEluGOpM3B2BTgZKQEBAyVuhAZtkOf6yzwB03Dzkr3pJr\n4JXB2lyUt7QNn3lCDJTYiMqYHBpyBXoze0f2aefXCUJrMJz0FpwbhPaJFhrC\nCMVw\r\n=tGoc\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDpF8W96OrMhUQBSV6tHGmmuhzfFyPr8XeuOworw62zEAIhAOTSHfJDo8yxRx93GfLa5bGmKpPTPseJs/EHSMVRurqI" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.402_1541399623760_0.811901437217567" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.403": { + "name": "types-registry", + "version": "0.1.403", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c3f213f12b345afbbe40917008e4ce8b12eb7ad1bc0fcb27045b267beb900696", + "_id": "types-registry@0.1.403", + "dist": { + "integrity": "sha512-aFTJhlxZ8tU356t0VDgRzylZAt36VDBEyLoeKScutW9uyYzE96Agq6URrWcwSMZjQ+dKYAuCa0sAMvxEIggGgw==", + "shasum": "b4a21d43d5d3fbacb4d14bd182321cace0f4e8ca", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.403.tgz", + "fileCount": 3, + "unpackedSize": 311761, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3+YjCRA9TVsSAnZWagAAxWEP/3CQbEju7DwZeLHVb5PD\nwX3RA9pvDoRjDvuUj+Ge8bILSWLZcxt8KMAH9qIjILRFgI87zx4IRm8HbAiN\n6Jiwo66l9kvrTZC+dCXVktpuqMucXkNlVdJKKIPd7pynA5tkbLQ3uw4yLk8J\nxoXZrdJKXsEfULtvKdlNBoYxZPl9u4qYH4NTqQAyXiuY73RTxharKN3cp+yw\nscvFy2lqDGqr5qGSh5vSdOvpusr++4hrJybaw7w45ZCUsB815qXSFW+iwqej\nS10xbWrVB+n2LE9Hec+8l+LLUVXdC+kKd+jFsrOyIE6KCwS0Bs2qu2nIvLdt\nBXxJPhNoX/aPFR0SA2D8LKdyYdKEOgE7bvvBIlGrvqPXQCOOD/QCwMr1e5DM\n8WtCTc5e+ZSFzQm2ptQBQxHNmFmZ9ibaURZ5gXQEiCi+oWzFY70SMoelLCBy\n+bHSTG1i8zis7F/kLWXhwnSJDOOp2LTaxjHO6hH/oks5ILSGkYiuq9pm/url\n0ueIus3dtrMFTAcnuvsIdkw2Wx8RDrAoABnkfL/Mke9Q+H1yK/kCuNF+hJre\nP8+dunO8anwvsrWsI6H42TjI+t57brgBLvTZwg44/MmwCGMj4sR2ybBoNAwS\nokJ5n4A4DR119GiXVpzlTx3eo2PZn5wev5SZeeKYXe8x3Ov9vDntaUXtXox5\ng0Fi\r\n=QIuM\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIERAiwHvSClvWwviEYkBOQjpFjPZY0FuuW3v5f9eCPhOAiAXpVlkFqaqEqoZAM5NEcViVDnSW3epoYC0robrRjp91w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.403_1541400099215_0.28724980436780334" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.404": { + "name": "types-registry", + "version": "0.1.404", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7311d414547572649b74b36c98877dc54bac86101ee6e720276b29326ee920c5", + "_id": "types-registry@0.1.404", + "dist": { + "integrity": "sha512-3f6A3ck1Lwieg5tfbVzUeh0Li8p9d2uWvCj6rSYsMd2FHHxHz2beu420EGKBpGUtdAiGuMqx2tiS9pHcZW0z+Q==", + "shasum": "cc66605989a5636dbcd64ce3d247cebb8bb424e7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.404.tgz", + "fileCount": 3, + "unpackedSize": 311762, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3+fnCRA9TVsSAnZWagAA1IMQAJ7ZJEUlf89MLn8aXE5K\n+3RaZWt8DLx5eNP50+lFAYe3OXNdUWfuB8mW6phcBHn0nxUqKA18TM0ayADD\noYNWngsRx5zBDusYM39O8xJH7j85U0SKK5h2KslzpM02UtoZ2Hf/X9zoPhKI\nxHyM0QIbRQpQn0iBHHqikQxRCi3XRZQLNWBmrQrtOKRfOHuUUnx1XbP37cSY\nmA973cBz/M8qduI8wSKsZFpiLlN0dxcP6UpQ+zvo3XoBpLKLouGQEB+9oFp+\n5t81WnMrpsgVfGXyJUGnaQQH2NWwaBm09MwLF+mFtSkGm5lxolkgf7ZAtrPU\nE74VK03n9Vh8q0bHJym54HmHTLTimDFHwSE/ey+ZnXT1CxNEftd8TLTIeGZU\n8yGXAb/54CgD8DriQsfxFUnIOBE+9vHQpDUPJP0ryNGErGg/VmabJFE5SSoJ\nL2j3lWCkqfoF1duHF0q1m8Asc0MSymd2BgJU2MsB8IFf7knwHQSZIemyu4Nh\nhzg3FOazLr+DAjeU8Gp+qKeKBJeFH9C6vs2nmb7hORToOmcDSDMUIHR8jqab\nPCgwc0WFoe5BM2raNMD70rwUAkJB5EGTL7hGN9MIGYRsrpGBDNAhg72DeZ1Y\nxyfKLria6v79Ry6/fEa2WouIqqk181dkOjHhA9W0jobQTKcASfCUGd1d00lr\nUpWx\r\n=MiEG\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDT+yWwlSbd4uh0sVwmqgOhCsDrii9nTzGZsPKj70BHowIhAIVV13Du2n3MyHdqz1xtQTNveJ0phYYDgKktQ/X+1Knq" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.404_1541400550778_0.008052531075625202" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.405": { + "name": "types-registry", + "version": "0.1.405", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1647146a2f6bc7baf81089416917275d30aca55392943de24ac4163bde4bb0c0", + "_id": "types-registry@0.1.405", + "dist": { + "integrity": "sha512-QID/Jn3IZ9yIIgf5zhPkjSIJNfj3yZ/56Zj1MVxUECZ7qH0Jt5nnbL+D6oMbXLOgVzO5o/JNBCzlsRiLYCs/fA==", + "shasum": "5d0d49ee82bdc7498de81e27ac43c63dea0fc8d4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.405.tgz", + "fileCount": 3, + "unpackedSize": 311800, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3+rkCRA9TVsSAnZWagAAG9wP/iSEZZWOgD8Z8EcaW0vO\ncxDsZrCQsvAdo7tztBlwjkIClgz+Yr3wf3yGec/+dJV8ZXVGSErQFAkvtODm\nzA/As5IibXs9D53suj6R8RVeYELFuHp1ofw+nosoQhosiiE5CWrVYT6QZGXy\n1AvKMQ7+Dv0/64T6qtpMyjeUDO7IlXwBKkSKPnmvB4KoZk7l7x7aPupo2lr2\nfi4+O0VJVE73Qp3nEh0fM4y9H6unAsiw43aVjcvPIr0yBOC3il9o+4ECspxz\n//Mf0Q9EotTmIi5CJ9o24J3fw4w0QY1MiBsMlsWyecZNKCYjPAnBqqsJwVKT\nl0TgvS4VHAxSCZyLZPFKmsW9uaToqMX9FXrbyZfQLGYyOSJo89pKCGp6kGOd\nlEuMKhqsiUbYGDW5x84ym5jucqOWe3OS73Wld+HswXG/cIugw2Tejw8S9EOw\nHNq5dLX0oKhrqFF/eM+RBfzxyBjCZDZMXh9ynA+pGum7ftDjcZYItgO70LpD\nuiB21H0Edvk9/30f8zlD69Ttw6otnCKX7X8nc6cTOXdGO4VbpkLUBhIRtt1r\n7GWER2U4jDv/FtMEMeib/C0DIzg+YSQe4AuegKF8ztI/wJ1RTMCxXmuEAEBk\n/OCmW/kP7G1n/QfqRJgf/+m6Lf+mstiKCKSA0r1Y6oHkGpPQpIx57HAfZDMU\nVHWj\r\n=R9xO\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAYHqoSjNMx6HzpNmqwYhvMzT7/6qJ+mGqhvz70VdvH7AiEAyUu7tJ6viTKyXs3330jrst6uMLNGwVPupfYNY21JbYw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.405_1541401316094_0.7783890494251828" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.406": { + "name": "types-registry", + "version": "0.1.406", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ec8b96807a8ca3e8736757d8bd68f6aa15378293c59c3ec84cbf38aedc0e1820", + "_id": "types-registry@0.1.406", + "dist": { + "integrity": "sha512-1zMF8G3B/scvONVN+7TbuGuy8iL28QoQnCJbr/Lxc3U38CdvuKYVqjZG/hUkX2GFd6jG40qPMMtoL/pLBWDAYA==", + "shasum": "2aff1e214076d1633173fa5cc21226103167da48", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.406.tgz", + "fileCount": 3, + "unpackedSize": 311850, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3/CPCRA9TVsSAnZWagAA0UEP/2gJoLG9LgymudLCh/be\nmUf/nvl3qY9pW6wV4rnji2WNk3cPKof6fyXSAVmUfODiqqNip8rbOnefKV7y\nqRh91fHwun+twCfJ6s057uPKKUqvfXc2symZHuj+H3C04gRErBI9UuI9sXDA\n1gp0XkGl1DHtwJT+PLt0jCi0sTzScfiSNzvukY9slap4PZZU0bAzsbf8Gj/0\nR6YLVb+HbFeHaP5CNKo/CJewj1AFM8ahNeM1GorCPKwgvrCFwKLWhRRuX0z1\nVpYGR6YpmofoEr6/qDbQRVbBpn/ifVcVdUx1v69QaVoAVPWIKWf/G7tsVLT6\nOLIjXXzox4amsYzV4EdaVrYgkPkxUHVuYq1NDX9t2neDmbyEz5rgcPunen4m\n50j0D563rjGy/w3oDmk5nzLcWfrf4ctmTUPtePNoZ/3tBHyY9KPoKsP+WeD9\nTgo8mpou/6wfSOD93/LSNxLSGKTo3k+ZvfqBrtRRQhHfwsXVQ1rLuDXO/SU7\ndQOGOGhidB4PtS5c4le7q1rlGqTOuUoXwUZuNFfWQuhITwbskAal9Rq8Am7x\n5LscuZ0BaqLFlVmDqK24uPDMFDF/XxlRHcTpKyv2YcWk1hb+vIcPjmJ8Ma30\n9NIrfVIVuXwBa5JosTOGT4XP/WmwGnYjICRY9KCfokT7vk6HKmcHfC6Qt30k\n8/H+\r\n=8W3O\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDc4Rw9/WuPdrI0ePgJC6kKbZekKb199EEQRNbkO2qAxgIhANi/2LvSaQeztS61V3aK73SgVsS1jaDfw7BU7NyOHI0W" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.406_1541402766069_0.9186721165611109" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.407": { + "name": "types-registry", + "version": "0.1.407", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b56f26608efd7b3f0e6ef9a74f66719b0897dbbbfe8c74d00d7af281f16144af", + "_id": "types-registry@0.1.407", + "dist": { + "integrity": "sha512-xA9wFuNR8WVQbToc5PFGtEsI6KNU/Z5l2+KBgx2CRqlW1zyF8rzTQEuadeQh+dAR0jgSFsaonrueQFeHtujfFQ==", + "shasum": "dc3ea15e499c6c66e138bf7ed272541babdf503f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.407.tgz", + "fileCount": 3, + "unpackedSize": 311888, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb3/JtCRA9TVsSAnZWagAA8f0P+wZRTrcXmdhUaV1/5tbf\nR9psDwSnBMP1IXStD1PS+/qJtcnjMm4YyCSq/RX2bRVtjXSHDjovgrCoPkxO\nWErFWDWXM8Vhob0Bw+YAanK1zOh2OM4dc7HQv/FO1+isoGEILsn+MdeUP8xh\nf3XS/Hz+rB1FisiWlk3Cg4IKOC2y0KxENOhdFdhi9fEblYBHs4LdU9ApubLM\nS9GUjf8OHZLL7pL4VdM+caizEcWbepB9NBpSTMKMX7hvn78XTg1oJqs5ZN+W\nFGyz+hWzIUc/t5uivtR3/ZwiBUsdB0sID/HLFjtTsZGZmhnbe9pfTlD4Xrn3\nFQMewv+k4yMnekZF64neFSfmOTrZ5aWl402ako5P3feu7atfAN8UxtspcBiV\nJIqITTR1ngkaowKxn2HUOqXLiefperHpiyrXTzSIGrZXGzGdvj+UHEqRoczi\n+rndibEV6acFkipWdp4yTfwbUn1jJ+XDgKQtTVWYozvW9Rrk0hMmK26UPB8h\n9b4Ks+0onRPaXKv8v4Q4O2+0U4X+7w82TOLqzw0BbAeEfFdf3Z5qJcBPH23P\nUyENWQAPctR8UtGHfz5VcQmCel9lAlC4LRuELrFZa3nQjO8KkVg2JY8Utr5t\n+Q5/Di6O94V0fCDQaSqxVcitjbXBvsZTg1NvmP3gxAiru2w+7KjQuI9oD244\nh9Ce\r\n=lr24\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCy8AdZ4RpHiKlaLU2S5tN4crzBuZMvema2zl1/P1PfEQIhANOXizhQ914FkPoBnB11IH3U3KkOzVafVqFJ0RrjpZhg" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.407_1541403245125_0.23157180377450137" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.408": { + "name": "types-registry", + "version": "0.1.408", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6eac76700e8996344ed1fefab0c73e80415b2bb6ada6625aa2a4ea345b48d2d2", + "_id": "types-registry@0.1.408", + "dist": { + "integrity": "sha512-bSsryQYwC4FIWZtrjoHISj4y0qhaCS6SN1sBPvEDbQg772dGaHwgRNP2DhjfN1ZxV3IzRAYCrWpFyEtABXu/Hw==", + "shasum": "b39ac88b3325da2f1922ee3c0c2cbb7cc55fcfce", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.408.tgz", + "fileCount": 3, + "unpackedSize": 314343, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6hnJCRA9TVsSAnZWagAA9nMP/0oZKTc738GbhZVk4/aB\nmFpFgD7HD0kUgH1ipVzhiZpm0hWPlG7rYIK5jDby/URVJvW0LNfg15Bs/srN\nHH7nzD+PKEq2ui+EI0/Sef02F5xwDxEdTRse+DMtvhjf8U5AnhMNVAQGnmnh\nEbkOsKlGT/4/QXkO37+zh7g5aY2P8n1e6LoxfwyFxgw/w0UkXDYSJ4L3TlK8\nNboo7eE1/s4rNmrEFFFYYA3UijN+Wpx1U/ZN1u8SfiTq6HV192TQ3xsaRQa/\negWaOSL9wgQyFjKOnSwrDmD2p9UB6f74Ew0eVmrQbKGmnjgOY0cpQ+1jbkLK\njLXKTudjudLngH0nkFwn5Ed/CtG3QAIi8ZFX2/C+1s2emBW5FQAJnOF06ec1\nTuCdtc+9zfhNrnwgT4DLPyy9LuUthcAp8BJCwbW+x7kZoF1SfZo3gtEY47WI\nFMUtytWcwO1Nn+h0tyLi5Nt/DyV1kwowV3SdbbvY+CLVoVhObI8CRtsQVI7C\n0Z9AXtf9NLbvSr1yRBtnMSRUWb120BVxBg0XYVn6y5jNYddql428G3J2Bzsu\nj7e2t5k5hFKOAB7a9pIPTMkNyN1F/irOZEgLY1k6LpNahDxdWSXgSSiEJR4c\n9JilHTyOQgX0I68a/19dy1AUVPhc+TFbacGyJyqh+KeAmwiVCKl6blb/M8Ft\nj4Nl\r\n=Kc2H\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD08Y0UjNtk5bi4iAKC6EzUHAq2x9EQyfDJGYRSfZhWiwIhAPA72L9rfcKM8u6sWYTevCeIzj/wFm2X9WYZK8HaN2vo" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.408_1542068680589_0.6664694509472562" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.409": { + "name": "types-registry", + "version": "0.1.409", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ae074038dd294a5d49385dbc349e83b0f34aa66ac04d4ea8eae412a33c7fc00c", + "_id": "types-registry@0.1.409", + "dist": { + "integrity": "sha512-q6TVKBpOnLhokJiM8fqyVqHcW+rsoON8snhVdV2ll7tGLdPtJXtu70x9tS6t9UDPXXgs7g82o8dhbL0linYjfQ==", + "shasum": "01933ff79b1c0eb6a0730a75832b55dccab49c50", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.409.tgz", + "fileCount": 3, + "unpackedSize": 314519, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb61TuCRA9TVsSAnZWagAAbC8QAKPjV3rLX1T+Vqti8V8H\n/95AZqgTGM1XwYbRp61hNI5zwRgethlNcQ8f5kbdbaFStBcvdU9o5jwDjS0x\n0kDpvBkpyUquPxSz8LErT12wdOa/Vklukx7PMT/+LKjygwv45IL9lmCOrfY+\nPCpEqRmuQ1LbwH0tKbMhvgxm0A+3izcd85ZHnN+ikJgAenr5k/VzMi1CkqFS\nUuBCEPHrA6r0QevkV+M+3J6odGISE0ee8zMF+q2ZATYLnm2Zfa3yOSSYMbF/\nvRMFta2D83i8PVD4cT5NAUjCKB2aOO11sTwSw3lvoWcA4v7RgGqJFNCNcmQN\nkjUY/y/Fgq9enLNEUocYsq4dq4P4zm6Mx29z+J5lhpFvaISI/kMvKU/r92G3\nfchsocsWMlAtVckNfPjRUEs6kgDtIwKIl27eotAFKQvVxy+bJL1FpJK9HV6C\noyQB1eMvtW1j6+jw/z++nIBF/ovcPZV5Za7+Yx2SGe3lPdTJd4JbewnB544h\nNOJ3aoDkWquyUVYh3FROiVrw+jy+qSXWYVcMMHaDEi0dBtcjSBN26Qw5R9bL\no24zluxSWcur4f3TWikC1fly5oSBdrARd5PFf0WQJMREqLBXlXVkPP4bSHBd\n+RcXlt8SeLTkuhbNEAPvfWLieBtbnKdfLpbPDjqda3nxxdfrfQr6ahxGBXgv\n3gyJ\r\n=mQn5\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDz7ZVsWx0s6BnhIq2MmXlXUjn2bskUBQpxZli9CekQ7gIhAJFO1ELe3PddEo9yYsjJ9wOm6FaQV8nJeu3iGIhNSVzK" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.409_1542149357561_0.806513172004854" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.410": { + "name": "types-registry", + "version": "0.1.410", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "99a2d6c0738ca0ac81e95d2edda25122d661304c632e1e76d9b54d81526f0f5b", + "_id": "types-registry@0.1.410", + "dist": { + "integrity": "sha512-07y2n2vImeoqshPd/LcEoesrx40KtXudIhdOysYhgwlS9naAfdHpMSiJNvKjRrxB3NnOZZacYT8Rme9T+oRHmQ==", + "shasum": "01654c3c961827ea62ba3e194ba60a36782c977e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.410.tgz", + "fileCount": 3, + "unpackedSize": 307603, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb7L35CRA9TVsSAnZWagAAxJAP/jNKLw1O07YhSBuuBGYj\ngCNnPziEGmq0c6rLeNi96HSPBh9MMWckmmqFsmpSYXpxNb1K6hT4svCaVnYp\n8AeUDtUFufBKm3XDh4HX/gVAzdIOlpDzRKheu1E8xc1+6ntxxt71NXkzH9AA\nZccFokKr7Sqxv6fhzIiC6NEcBgDGdbYrG3xx3HCR0w0C7nmDnTUilk3UCpx7\nXFpQOOwxfbwZpjSRjDJH6sP/a1rqSQzZU0o8Axw9h27IBQBAHHuGemkLOC5+\nCLwwneoX9urz7vF7SwT2Vf70524zgtnPnuSDbAEPLjeO6MUPegTqmaN0qKqq\nF97UXYySTVX2df6AZt5sM2zjj4m0RyYHEcwmtHGp0h4jLIt9g1tSPBbZSi4W\n/P5EfcW+MbDfcQDv/DL/tIUnVY7vNz7U+iTCGMLIzti6uT6fgDfApaVwTMzb\nBazGt/nnKvM4rhrRZt+OMGzmkSTuL7aYP7v2Yhc79H7kcfm+uMsiJMhYwqML\nEWhXVJLPDqE4KV7kDPnSGamk7zkHaLa3qbSW5mQ/nmH7Mv09TxLBQip73LX5\nIZiP53XTGo51AvWkg4rt8kYJz57vNpO5/8I5eB3d0edkrlOPrCT/fyRSRTVH\nKNjKo7kiAPb3//rOgQKCtXAopfijCj5QS7pzEEZjCu/URzPD9pM00IxA0FGd\nBIch\r\n=9h9b\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCZ7PUCYLVcbmyWSvLFSH636Ls1a+9eOwqwEvdp2JX/XwIgDZVaU+fsY1U05oQaDF51UAZJJ+RLbEschJP+E8lBBno=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.410_1542241784234_0.7775035244575523" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.411": { + "name": "types-registry", + "version": "0.1.411", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2384af64201564ef910099b496dd881520f096c4b19194f4f4360262ba5dfa28", + "_id": "types-registry@0.1.411", + "dist": { + "integrity": "sha512-i1fu3ZBapZJndg6EGiyI5ZCHX7avTujlhixDSzvkznSfyLrSqcfk0OMOVLjgo6P8Mf6hqGbMo+CoKLK4v9GxUA==", + "shasum": "be96e0cfee1694b22b487e7035f41c2872504e24", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.411.tgz", + "fileCount": 3, + "unpackedSize": 317488, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9ndLCRA9TVsSAnZWagAAHrUP/jq0+qUZslhHB70hm6fa\nTzqtCg3KxToXwsJEy1ihVrQRemQdyHdQqs2/PE3rWlXn0mD4RaRPi6x//ApW\nxPiFWlhb7N0VbIvveyq7iMBNsrdtKSKTpSeFPw81yXi8ztwAi91JHDRybBfT\nM+KQYbaKHc5dvN+8wBOFtMEh9FeZN7Nx7VA9iN+Yt2ZejmoXqyp9CKfmfiCS\ntiCafkgIlhrUvSm95hRtWop/R6OC3qpRQZ3DX9htZNP165DtoDm5bh6BPa8i\n+lltLOG2oXyA31xJt80A99MCEUUUqgUFBjD5kLftlGmZT1pbFVEbjYJp6WzJ\nhThvm/kWosjQYGiNFkz1lqeiCgoCkGFSAsOta0HaNCRKjpkzGM2Gw2hMc+jx\n6AfiQRcF1EIGbk3vuQ95yFsEaV4kYdB7DFWLy6gP2UzyPHpmJQFA43oT8Djd\ngzq5fQaD/kxSWEEqIQQkBJjaazdMeO2KS/haBwoJLBGXH+Mxop+46bQHwYvS\n8aeS02mfTUOFi7KOlx4+cpIxc5apbRQeBxeXu9uRzAPjogWZBOOvLgMbETQe\nHdUsfyi2mlcj1WRFZR2k86DNca8lLS/Vtc9fL9qHiaVuG88o0j/qgtcZMkTq\ngFwwv+ngd7HQEijkj9ue+t1TBpdSRsjYtcfxH0VWxabf6V1a8MaJBYw/0hQk\n+7zs\r\n=16nu\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBd3T8+pF2jeUyX0akAfv0j0xDEktevAzc3JdWdK9MBHAiEA6/k5bSiFXHxVss+1tD4892xVl5MAw6NRbw6Z4gKCHec=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.411_1542879050283_0.4922533864309928" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.412": { + "name": "types-registry", + "version": "0.1.412", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8903c081529b33b5049861a140eb901dfe0683da22431df5ac65510a458b23c2", + "_id": "types-registry@0.1.412", + "dist": { + "integrity": "sha512-bsfLtNm26hfFfrqkkJ0kZ46fdp/OzRvGds3I2MXsSW2Lesakoq9ctEzUW6GPbd8Jg7pVK0CrBMqfTIwxYIlLfA==", + "shasum": "3e821a202e5db7563bb86baec5f8b1a1ef50b435", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.412.tgz", + "fileCount": 3, + "unpackedSize": 318103, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcAHsnCRA9TVsSAnZWagAAZFsP+QFMJSyfF0jCq8K2dpHJ\nPqbW8vz91VOmcEkeIpelnOY0md8x9GrvtTvysHxrKwrWIZBDvHxqRWpY0LEb\nFqaJbiQC4SArKxTwh7yqgJSmjUhBOxtp/GEFE23NEVJ3AWTrQA5QdFlE4IOv\ndxKeTyO96Nh6I9ToN7cuCJaFEi8KF2ZQeeKlXqOVRujPl88zMvYWWkWF/v8d\nPcW8X4fuiuc3T0Pj+zJT7288X7XCjGr0JC8JOTHOPdNdntZfNYH4CGKBnC/L\nfbZjRcLik3FH0zt2xe7YFJjRXLOTUFR/E/+anlpX29X9HH0vMUaJ4X11osQF\n+x1dE+EKW4Ftz/VAFgqMetwRXLrIA17XS59RJkNtzG45+vr/JtFa5mU2zrTZ\n0uHL+Xpr3B2o+xv2HLeQAphi2LafRKlrVK0n+p1yk9MOn2dWCaJYv3oaEdyu\nfujYhHg9ZVXzGvUaZwCSN3qAVMQDM6KGHwvM0ZSYQQ3Efr8aNf9zegEGstJ0\nYRokzqDZphCUKa/0c2B5psgwsSuvpJgqmTUhuZyjxj4ebjUblr1q7NgNBJvA\nhTzH1/ynm/O2KfnQcikAvmXHyDqeu8Wy1ZDnVeqsy+9G8BUY/23te3BU/4N0\noQQ9Dffx+u8+HuILHJsPM/I9B+WahyyquilMs+TPOrcWHR431UwUC0qYc43s\n+X/m\r\n=1cN4\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICrON/fGXbndNs+mGCg78x6BmNQ+GA2paIssiniu+EhNAiEA4JNmTPXg8aLnGNXhvMPSQ7QEMDavXZI/+HotHPZt//I=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.412_1543535398543_0.6263324129203927" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.413": { + "name": "types-registry", + "version": "0.1.413", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7714d61badcf996626052d061d6d079229255f5d8b2b92fb5aecff3f701be423", + "_id": "types-registry@0.1.413", + "dist": { + "integrity": "sha512-EHYVl98b3pdEmJVibhBEIUaIt9NeHf/59q/Df1U8RX84u43eEI/4u6/XuVy8RMvRPPqC3i2LSSUnWBwPVr5V/g==", + "shasum": "fefc36c7cbf8c42fc16c7b0793ef1c066769fa21", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.413.tgz", + "fileCount": 3, + "unpackedSize": 320240, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcCrdfCRA9TVsSAnZWagAAkrcP/0eD7qIukou0QxS1UYea\nYHTaDsUO6zs8fcQdJxYSvGkS6fb6g0POnjALpGL6V7hi9+guecjtLtD7Scbu\neCnXfZBF84zxiZufRqiy98TjVgP1ZXNX1Ay8UuCSxGPOlMFmbcYlDf/UinuZ\n3kxYERD29DbzSWdcR98GrSN4L+wZnY/FVauK1yqadGLBZQqKhlENinFlCmld\nEfie8Y1DHvRwCI4dwMBhsiAuBpkgAmpz6rIkqeYoCW+vTQY+Siw6zCEvLRj3\nZ9xeNQYGaeDJNx9NVozGavrendL36rHGegq1pwxMQIzFSMurjXEXA+J76ACS\nL9R5ODKOso7cebUSH26k/aFuKFsQrs0NKqDdtuonxMIz156AkIMo4KcvxGW2\num2wvU5A8SAdvru6Oa9uBjk7HsDRM27OhLuEfk4gO3JfQs6hGQ2UC6Z/+SwW\nQoIbWkcQUNvrLoDvCh6VZK8rSXug///FY/dUQdQkUkbEGfIvG6lm06B8Qov9\ngcu8QFA8dZmxtZIg1EanXNtHpesFjwR4uE90sZOHg/DCrpJ2ui4NXaBxAlzl\n2BpDkHwFQNUv7bfMUfmpaoAU7f76oTMoCJk7lZbJ4ehmMHURvUT0wERCSoLD\nTYpYFyhUGgbalHW/i/i6wK2WLIcT5iArIqJEb+wsdmiVzxLqUxrm6NV4MyJv\nu3vh\r\n=KMg1\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDnMZ8FWeKbtREa4GHRHDlExdTHI9+t+ahOMn1J8cVrKwIhAI7zDrp2bbWvIUY1hLSRuw/V+XN1eDoQPYI1DfBrQQBo" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.413_1544206175144_0.12286211692135707" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.414": { + "name": "types-registry", + "version": "0.1.414", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8113ec949506773276e11ded5e2e28e163134fa10fbac0f0d772c03627f963b5", + "_id": "types-registry@0.1.414", + "dist": { + "integrity": "sha512-jGg/4Ri2l8BSO6kWskafLRNIyM7qKaUwe2mNf7PZEK8nbqU4ZqOfRhaig4rjLPsksrBTeZO8o6WJe096lBkPkQ==", + "shasum": "ed4dd861cc2635e942b0d279d2c41e30c18e4963", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.414.tgz", + "fileCount": 3, + "unpackedSize": 314862, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcD/bDCRA9TVsSAnZWagAA6LEP/0veXpz6VrwWKf7lOQ3a\nqzNcghztDa7MVuqxvafQXn0Cxu3ltLMtfm02bXe+2BVB7BZ+fUf1Gfk/kHN1\nADFYMqGMXUHWZBKKrd388oFpkpKENYKUsPEXnQkN3Xn/dxaBtu8WDc9Giaws\neLbIleCkeXrx3a8tPyhBOdxSF0sqY2c5SCLMRUolZI5ZhH9c9baipWFhkDxI\nIrCPAVtQ+WCG05+0RtTxgC7iJciavruZ7tLha8tyb+QctDcZp4y1141T7nxI\nuRNt+vsS63QT6iU05Izw2KI0YM/XlQZumQUtsbQQDUFqGSgMibn7fFCdEA98\n6lYYwpZyIdUVMR9ydicpB49UQa/VtsXGIScnQ9NiMOFFbtVoeTHwmG+opdnx\n7umjwONy5Ep9pKPYA6wqxBraEwpENMbOg44PXb+LSHkG7nLkTgQKNgioW4PS\ng85sRp6l55zpVMCfl7FwrTJEcx3mnnpT4h+A0Wjr8N5RFF5b09v71vciQO2A\nRr60754qfnYsal1WEL2VUQg7oSsX90tv595HTkFTkRgd/sLNl2JUtoCBSnP7\n5TxFg9AyUDBrqOXjrZQBnLgPMOqz0Ni3a+xTrI/bX4KSfGHxg/hBOHNdhcqz\nLkiSQprx3jk1zDMeejC19c52veKPFadKirLR7heWc3hJnroo8wYz1Rj4b++b\nytuH\r\n=vbuW\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCJLQnhHKj4C+YxWEd06vABVKS6HtJQ5irlSt/nILdF5QIgeFgbWP3GnupPsRFSuyJG8cPAD3cm0oInvlVNAjCowQI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.414_1544550082626_0.6226853717095273" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.415": { + "name": "types-registry", + "version": "0.1.415", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "56fb78a2661454be87faddba6c7ad3d4e6e7715f9e3c80610559a54ce019dd29", + "_id": "types-registry@0.1.415", + "dist": { + "integrity": "sha512-OFpSKxuwML8u/Lq8NJKczpItHf1ALejAY9+bdNnkOXZq40ZXLetNY7cNxpS3Z6o8kOAtQBRx1yzwaG6Mqn8K+A==", + "shasum": "381abe31503028c2e949105df8339fe8460d6509", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.415.tgz", + "fileCount": 3, + "unpackedSize": 326124, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGTiACRA9TVsSAnZWagAA+o8P/1p2v+7bSkjlhmBNzv4J\noHZpQweUa2DKAUCd84z+DYvWG++YdTe+SD/SDEkvtG96YuTs/fdKJq1u7sTl\noGUaWm+OJPsULTW9YV15sObLzgwfZalrSJjBXJcgZWKbJo1JF+3NwvTz54wv\nfXLedWfjzvfBz/eBxPxpvOD2Sf4cRzudczKBGh5zNgroVpl+ANECspBkWSKZ\nlslyWHbOGlS69wthl+uRgAyauGAiXtFaaUzjEqsnfg6vjy4KlPnldnMUhrTV\neJJoZSG3/lp4fGbvIxKPr7wpyBvcv0pHMOLlokoB3lG2sfm9uXBqoVsKPAlb\nyPTBZaP4QmRqVrsP5EfeEulLpfUYFOBWFyVXV7YDZ6zWrZJhdb9rvty4hr/m\nnGrsbS0t1AYsJBeqWG3iBpBHqSpv2FNfcVzMYwswUI1w6yStZeAWFZp1KTMR\nr0BcFgMvPqkks4vpNt3A8g8KoRnW/TFLWVd5J5Iu4FD55oj968i7J95eqHgT\nHzFDpGYPyL1H4eBtwiTBrlFQj+rVkuVq/k+3sIxLiCxDszt3B3ycSY8gw03/\nWtmEEZU/C4T1O0PfhbVomhdQQi9Yi/pp3ixyEB0PSOYAnjEKQTlqOx2hzoyX\nARaZLdDhgIAGXuLuduv7+4zcgx/nAGx76FA8PBBbKvGDkB7SgkL0X1j2nhgk\n6MGW\r\n=Kdwz\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAdyGsh3TjfJhUZb+XwJx5LTQr7h25PPsQOYw4ey1IowAiB/HmjmduEvreFbEEVnUxvT7q6qVxLR/ycuw/Bg4AdtCQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.415_1545156735844_0.6719353904353338" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.416": { + "name": "types-registry", + "version": "0.1.416", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fb559d5d3ec759028a07d340dea508e97f8d6c3a51b2d87fe05bd7bfedb9b7a5", + "_id": "types-registry@0.1.416", + "dist": { + "integrity": "sha512-UH8/8YzU2SnGXl4c2fCbYcAMBnMR9MzKe6cWtUsoe/feTx4XPB5mPAcxpEFg1DzAbHQNWeXDffG1tGP4R2VfIw==", + "shasum": "f1f9ed429da29f36cdb3bfb540ec43a26b3f7e80", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.416.tgz", + "fileCount": 3, + "unpackedSize": 328913, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJCEGCRA9TVsSAnZWagAAe+gP/iUnv1apTZmGPj/lSlMQ\nL9lhDtN3WbJ9WyjlsjNxqyDi0SZW+9oLfmKLB73agrgJ+LXVJ437MB6Yb6M6\nNr3pdTqMRJ/husE6xDPrvX78SUwguU0GekGQkjMGlZJ424XKje2Al7BzuxLI\n8iISeJJ+kaDBGvm/5uFNnDIp66P6ND5dWpwtG5ygIckC+o9ZLwLF3hmeFjFj\np8qxu0PzZzk3jHQSc9tB9IrPIWzo9w5956f54POL+V5GydYaxGHoNETTwW0y\nf1D3JH7votSfffQqZjyBFL4VR8k5aNqnNf834PG3ENRTzrh/X3KJGvFfrgNW\nvtLz9FsEf2Dqqqf8kbV8XUIhJmfyioJhtqZgqtA7JotPjkmJJJ7JhJzvuddO\nsGsvUV9C3qdHxHbBaZyyMw91C+gsDk2/bwM8v72CjULXiUbyoeUhAaOYpSoR\njY9odnuYLciMBQSOOK/SPL96D1nYBHCA1mUqXaUYYsHshXdXG4O6AO6enaqq\n5YURpfI6z3Nx7P4igfYJAaT+pkPT+dmtMN5+DNzKZoBdtfhQb4DbHwK9OzPg\nSiLZBApAih2+lU9oLCBIAZyhLfUhSbZyxM/kTVBp2rdbejFYHrcjAmXufzQQ\na7AsmNeK9Cq7lCuZi33+On10lc9vXc5sjnt+CHdG2Qd0KSNC2fIgfxe2WQwV\nrC+x\r\n=VDg3\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCMr5a46YbSjKPgnnhZWaeIhcwn5jyLIjg8pjO5Ma6/awIgSV+JZGLi3b3gdz6s1vYQta5UQXvgPhHYkxRBBLzP+D8=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.416_1545871621975_0.7972106374238193" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.417": { + "name": "types-registry", + "version": "0.1.417", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fe3231a8b24fb3e6e0c48c41f8dcbbbcee5135a2c3ea2cc4e7b1e626e8768da2", + "_id": "types-registry@0.1.417", + "dist": { + "integrity": "sha512-Pb3h+vVGGjniVPeFVluKTUuRPjgvk3V+LJRGgNKUNDnf3U6r8+EmjfzAkmW6yWN8ShsSrtnezG8zNtmZ/PJiIQ==", + "shasum": "8cdf78ca3f7f527a64954f95e3eec160fde705bd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.417.tgz", + "fileCount": 3, + "unpackedSize": 330848, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLkNmCRA9TVsSAnZWagAA0YgP/3n9vgMyDUrgBtAqhnI4\n7qPOv5camZ+sFdR5czYcLVFaSgJKPC45YMsoKZEjTRcbz4GWaBSi1UhCBDmz\n9mzGM8fcKW/So09Lacc/mlZ8U7To2ELRHFOWeCK9S8rC8+kaXvbkBUTC1reh\nvTHp7W0t72JAFCArk7bCHATlqjmbj33FkzD+7qaHdQKdZO2LNtabIjwyxA0N\nNJ0sCAD39MrMTNKwzn6eMpgKNNXMHZAYl8u8ca4bWi7ypslPkWegpthtfT3S\nsFzLAZjJUstXI/mP2Me7PNnpF7efCwaEKJ3zsZjnodLnvNN/CuXuwGBGX0DL\niejg1gTbzT/VIbXdJvSIUAv4i9fnjyY8JEHEChKQu4BLviL2/LU0HMvf/dh+\nhSx7iy0egZcUaPiQyN6jj/RnDDKh4fszw4UkA8hcBAm/K+ICS8jkOwVtfbQ6\nN0kn+inkJYNq5m/IhqI8OtQvGGjnKBetxuUiM62+/y1gyxMaIdsJEHU2ThgI\nXILOdQp76FMUC+eukwaDSnfEyG10cZ1CRND9SG0UQ8koVHiSJlRqeVfL/FM8\nFbtocpbqV/GjjI5MLaZxUuJvIzTur2SwmAvLmfsmt4GLp/5R7+xOweZZRddL\nUjOAWQklS8GQzyX+aLnHtRvOIX4mM04A5vxuUGFdbCtpA/9yTHs9TNpBjpDa\n/J8V\r\n=TTmj\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCHR2sXz2wfJjfquNRGEYaAWLr1yjZMSsvOvzf+Fd4x1gIgKzTQS4BlUSvc9VOdlpyA1nreM9sklAlpHmNJAil9Z9A=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.417_1546535781413_0.962170609013737" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.418": { + "name": "types-registry", + "version": "0.1.418", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2bbfc3c4b867db65dffc16f26532a767309025b8a79b0798476c60cf612839fa", + "_id": "types-registry@0.1.418", + "dist": { + "integrity": "sha512-tXd6YeB+RaqQBcPccvMD0lRtZ4vD0wtlHyO3dKEvKRlwq/0GVWnoPorECs39a6aPT41NC1Yb9KuCDs5D+DRISA==", + "shasum": "69d1626de21bcaf2e3b50e4fd1e64523ba356f89", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.418.tgz", + "fileCount": 3, + "unpackedSize": 331020, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcPMcQCRA9TVsSAnZWagAAorIP/2JNJPa/kGM/VfzIFQLk\nanMb+nCuVMszaheSriYO7sXMnJ6xybtex57UT10igeE4fhRPz13A2e5mlyLX\nlYJ5cvfMd1ID4ziMAH+NTwprSqjwVf1mndhyFiVZs+pv+5c7fpUclmVAQidH\nL1GKodYhWI4+uAgpH9zO88Yi8yHaAsZvmGCsp+v7hDTajCALwRdHg0toijE9\n09YLKuDs9+dcvEnsrbZlV298JRbVCHkQFfEBxnCMyM8GusGnE6WtpUb3njvj\nPd1YK121CmuI9Qn9LlcKfh3HR6NAp/pr8fRwh51qNYT5g7KQZ3BdQRlpx1Rh\nohSSoVC22L5ZLdrKGoF5cSl8icF3WQw2EOJc50vQIjGGMvAj1GxAk2LDtMvg\nQNMv3umX7/5ERapV8XfXvseVHUwJT2bgiiz5XDiUk8Lyd97r0S5ICZ56kGA0\nTFSmLlJijihRVPTSSD9j0GVCxnOKKYSXzB2FKFTGqIb+8Xj+ciUBYnFnj7eu\n0m5VCumn/DzyJqfzgcCs3nxIYqG6pId1P02co9T+Kz7ZTdjoZwN1m0C/9n9a\nNL3kGvKChQAKjDHWqke1yquM83tOrjypPZJ5sM9HmieIHduORwubkLnXRlXS\nlyWvXjrPxtkq6YqVP7PDHlFPAEk085fxFzPiUCdBp0WMoieAXcgWdJHFzx1a\nwUyY\r\n=Ek3Y\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDDJBhvQiSbmms65OpIySrXr0Gwaha/TxAwrCUGaRmrKwIgGjfcoBGJAhx7XPbTs6TTiE11GJIw998hXsUExXWAqoQ=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.418_1547486992224_0.7443691472274223" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.419": { + "name": "types-registry", + "version": "0.1.419", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "13237a8ed3debc39a3cab210b56644e109dd2494540a172b33080d40fbb4ce2c", + "_id": "types-registry@0.1.419", + "dist": { + "integrity": "sha512-dvM5IcHdY77i4tYobWlOlxo7Mq2tXBz4uEaj9bF0EEREjqz+DhMcMU8M2V5INPmWNeNjH1B60s3bt9EQ+FmLRw==", + "shasum": "91edf6fb4a57a68f285ed9c589be175f20674aa0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.419.tgz", + "fileCount": 3, + "unpackedSize": 333410, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcR1NtCRA9TVsSAnZWagAApUEP/3pNRV9Mqxyt7Yn+OE0w\nIboWm8Hrtivzqr7FJw4I2nXUT+jUuRaBOTwUl03JnEyA5WiHJMP7T7tGjJfR\n3T4ofdfkwzzdAIujOCZPc2gu/2JL6aOChxXV3djcqAcFhCdL3ol9AqNBDOzZ\nAFn17zEpOf58cL2nNZK0RPzcWR5JkWGDk28VqNkvIKSyj273ZfEooH+OMwbS\nYAeX5VlZjGoo6cOLDmrzb977VNmeovD7dVCmsNXArESWsTHlRz5Pn3kelYhs\nXf9+NXdXeoz51mg2mNENqItQSw8n/NIAFkij+zegcwFp/sP8wS+oIqm+s3N6\nolTgy7VkHhJ4f4bv8HReD5nu2VaPmciJDt7+rsnqujxXNqqUJDBbDpRmdVAX\n0I4PqOZWLMsCA6K7TQzoyBM8Iig5JQXH5FsBRyiuimHu1XWeZ0o+EARIM7fY\n+lGLfgItXMS+7eSlEDZx6s2r4TYlJGZEzcyAB87KAH/sFA/Y9te1qEQYIbZj\n7dcHqMnUQgfNc92stnfHNA4gGLRV1TI8tLR7GhbtySMEY6N9SK52/kg4mUre\n51mbhg6pYLYzdo+o+lADgMGYhIFvPMj7jWPdWMGSevZmQQNvKa1j4KBdiFuh\nPZCj0/BUE5OrpcohQ59GYukWYijkHlkBi7HbAvM8j4zLzLFVVi8bEVRZqpl3\njBCL\r\n=CGq2\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHDnaxvGL3lmYawYakBrwajqEEvleMCDIg7ql9LF3jfvAiBVnxSmSLVB8lEyMUzKR5gTEYMv0qfoFsxi5NEJGjj4VQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.419_1548178284756_0.797543262598343" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.420": { + "name": "types-registry", + "version": "0.1.420", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "99a17ec71895990d74624ad8be239fd48326406836ea64c79a8e13a1ec56bdaf", + "_id": "types-registry@0.1.420", + "dist": { + "integrity": "sha512-qPzfT4GHSeYeNBKEgHkP21zKEeTGZv7mSsmay4XosIbgk5p00QbDt9iSPiUgKviGhTAupYaz1ppbM4Wa2saplA==", + "shasum": "07f81c1d57baa342dc6e582ef58318d5eca30abd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.420.tgz", + "fileCount": 3, + "unpackedSize": 335579, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUJcxCRA9TVsSAnZWagAAFuYP/0KND0iwp8g4bZTE8rGb\nKckU2vfwIUYxjMRhFw/WTlVmCDhRPijE73/CkG/68wdpc8QhqsDrr2uXBiSq\nKbmvZjWC9kjmTjN9pY809RyL+XeeZzzusEMMQ8qVdPmeZj8C2Xwnc3z6Fn+2\ntibJjHClfLI5AGJL8JsjqnYHORrfsFPBrk7bgscyd3SnswwmkZrtxTXh0YIG\ndcRTU2e6owv5fEH8DV2og3k25vEJ8FF/9h4OcFqBPbaVLSdSID9d1qhaxvJ/\nM9iAwZeffiOTVSHZXPO5VCdsQxdZl2O5O++AXVofgwqIlXT8Uqjndv5WLNoj\ni00R+ghw2U9uBJe/bujsn1L3T5dUFDmvbCmZvVt6bOQTKwQyxeH2S6X4RriV\nIemIaC1zHSBLN71qKYhuaZmSw9l4x0lOy4PU77YXROCd5U9qhWKtMV4nvaki\nzu3t5+zM88ypv2QwOcdsycn3V5RNX2CD9V9uiQX1IVFUaiQledgNcxHZJzbI\n1cga7Dlf65UCUeq+dKcHnbfNv5PaFJRUl+OG0VR36RUytm1xI+XKisGkbV9H\nAIwL4LqO9xbCknRYgyf6P6G48SW5BsIncBeOk1xYjtw0KgfmWHlyygqC84k2\nEb/lRmPNdaAAfWzoxbEnSJX2Wd2uooIHJVxDVgI1Qx1YUq3dFF08hjfVCDRh\ngQMs\r\n=iTMB\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHfhuCu1+p0J3+qo0oo2ahi/TSJ1O72IeTCXQNOVDp38AiEA2xcagl/L6TZKoWtgpD1GfZfhPXF+jCGkhfkmtwYM4kU=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.420_1548785456344_0.7034688294581681" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.421": { + "name": "types-registry", + "version": "0.1.421", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "826f2ff4b2547e56ffa076c93795bba5996666fb24fc36be08f6adfd59c9a3c4", + "_id": "types-registry@0.1.421", + "dist": { + "integrity": "sha512-Uj1uLqwzew+BqIj4HFq4eJ1DrAd7tg++kYvcfUtIt2bcmCpp30xOLGtc7ppSNI2PGbaCuL/1grTKDUYQDjgZWQ==", + "shasum": "dd48e59697adf8869890b45c55b60a9985d59aa4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.421.tgz", + "fileCount": 3, + "unpackedSize": 332235, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWddDCRA9TVsSAnZWagAAJ0oP/RBLvvnc9uhf7utn3ZPL\nQCfxtPrMGUFE3j1YaYK8M/mP3mWyzfmKcHaxKruo560z53Y0QhKdSJh+nRv6\nuEVED4Ihv7vpgEySophTR74bib1CQ01K1QFneDlKiVJg5IJo5y5eBBBEU75I\n6HDwy1Uc7neU6SG06RI3HbWkA0O5j6K6SQ2ZNvqysH5nv2YH7/jFYxPttkBE\nBkzOiVLissX0mnImQkca6Zlrzd+Jsv+acU5xF/iP7ULjIP1blWkzkVfYkRl/\ngzQ8hgUklVx9UGgC2XPK1g1bj5BQOkoL8yVE3i32EaSCEi6zQ64oRHrH1dkF\nWY+Pvq3OwNilfDJWFYQaNouPCHknjB02hRGPNVGca9MnFsdZ/6Bet8sRyk3x\nbpWNiH4nuy/yUiifDoW3odk9gqoUH1/mEjIPCDuUbWUg1zop1HFtpCKKuGxn\nu0xmuYkch5ezh2BvJAXKBFhRhziMeUc6YwGBfXSsjauFE0YFMNdec78ci5EE\n7IYEwO+Yx+l2u7q5SyoBUV/lWQ3SosXWvWR2AleR5tNkGB90dGAOOiWgFMzY\n5jSeMEbTSoSWjDuIS9wvsqA1m4XJ5RbI3jHlmz//9CWSHDgLxPkbudNOH2ud\nLWHsD/o7ofT5Q0TmgarhiUZRr/vS05gHrA/HG7W7kZOnF6ypq/P5adh+L1rl\nQ5tM\r\n=fW5a\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDnafL5urA/m4SQxkAFcvVTnDkBnNfNUrjnT8DfYuid6gIhANCorUvBkVSRH3fBmiqY8KKkQ3/apybFY3eo8GBBXnhH" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.421_1549391682520_0.22972080676039908" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.422": { + "name": "types-registry", + "version": "0.1.422", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "72f99302267291638c7842f2e8f0d14ee001fbb7ec3024b21e8e4fe6489934c9", + "_id": "types-registry@0.1.422", + "dist": { + "integrity": "sha512-FRLJfEe22D/0wGEc0lUk17V4jStU7LSwZi11/o4L9snB/kJl20yeamZCu8MaT1qzE1XYfQmDy02hb4MlKB95TA==", + "shasum": "41ebcdeba0919ea4b0c79a4f295197b7626a749d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.422.tgz", + "fileCount": 3, + "unpackedSize": 333141, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcYxwKCRA9TVsSAnZWagAAYWkQAJexZ+977NB3FDxPQRkp\nHdfOiCb0r5HZwago9OyXOs8y/qLbvjvRQnA+p7gDISDBAJ2RymPI15ALhkRx\n8ucFSSCyl4tTNM02ryfrxPeGiCjVmxF3YrOSRlnmTG6bGwivFjnd6lhGwxJF\nM2aDqQP90F/6cXQI4LLdOaQXmu15JV2elzPY/RS26weaPbBQ++H/y3Y8Akqx\nm5S0+FEVqhGfBEs1gd0qSBIMQLT4/zjo5QE91PtQMX+JraYXyFOCJ0CCjoGS\ny3zob5vGxu90Xwa9II3aHd8FvjGaB+Ygj2fI1bZoVYhx+3zoY8vVy3yLLbP6\n6/VEw+9/eMa07BUGgiM84L1GD/1Ac1QH4lE+T/0MaXyAyTaPjvh1Oc6AUJEC\neBNLuJPZC71ucNisFk/LFrL/h7jwVNzktBbP1CagkA4tGaYLgSc2Ph4FXHSY\no5inUAJeExkwVmcyBKBW/L2yirh0/wpvKQE4M/h4jGPZf4BsVOzG/8rh3Tgy\noDXcgOxSlVcE62C+o1Pv6Elq1+qbBaTVh8y7B2zlNR/upY/bQ3GKluKWO9dt\nxXikGqA4r5k+SfFIs8H4Mbchl2FBN2tvuiOUf0iy1sevqz8oG5kOZEFU6RSa\nR3eHLHGdzPHSQM9Adl80xq5nYHt47St7Yzh0IgILZ7OJwlyV59l4d8RZyvxC\niiP8\r\n=lIdO\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCfmmoL9DQBr0yG0R/qDvtv2Xe0rAKb8MrBNrEqEGoCIgIgdozQLdRylfAou8HJ7Vpv51QzgZwuSaJmkhYW+qhOjqY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.422_1549999113272_0.8633799401978517" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.423": { + "name": "types-registry", + "version": "0.1.423", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "40fb1290509897edd55d084629769c4fcabb4918755ccd02d994d332170f1385", + "_id": "types-registry@0.1.423", + "dist": { + "integrity": "sha512-rx7bd/thXfDJ8ejIvq3HCgl9S+bKNVDWAtJ8b13c39eCSoeMTzcJBN4WSRke1BOLQYQIPup83MJD5PGYfhDI9Q==", + "shasum": "a36c9559433b3f89e3778c209b2d6e625b1b5985", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.423.tgz", + "fileCount": 3, + "unpackedSize": 335017, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbFb/CRA9TVsSAnZWagAAhIUP+wZCz4pD1jEs16rffKAY\nquO5C52xL7BIiyDJ5jYUf2EX2yIOwzOQAXvq9LdjfVtToY9W4UwA2+Jz/Y90\noKupG1pFAEMdEAVONJvZTzdcuqLq75RMgcJDcOGrU0yegWJI9Mnr4Qz5LUyh\nu8uTo1SSbKSb3Of4lxg9PLfv3Yry6bbyEGtwzfd9y7/Z4XmGI47YAbPOrn6U\n08Y/tRNQyWEiYZAe1IQVohVsUQeyQQlz5kXn/YBOUR8Lq1UVJ39wx1ZQgYCJ\nNcePgpK1NXxoFBI0ZOd+i3ti4M9lr/45tetaACpjbfMoWGw77qEpPMp3RysK\n4MBTQZ+lnvUoP2oKkqp19OmvgHiBZIkowLLpcZHkNX9lFwtIL7GdStlisPou\n4MmKI8DQye75iA0vCXtaxj9ZuVKtfmRdIvLNXwcyKhvfi7qVu4L57Id3nQIQ\nkLeD1DXIu+0YHpt2fjhgU7wvmBPT1eQ3c0AGXBgACJRey6NmW1RXvDxq2Fgl\n9EdPBl0cuZLTnd7LdOd8e3bqW4n/lEo99TT8/6rlhYsjCHdUMBksKA+U/Kx4\nhbbEcnOfEh8WiIm/vp0sQD5XMqK2vuRQv/fSvpcY7HW4lmWO9J+YneD/lrLK\nnXlVjAd1B0OfpOAsC/z+aOFGyK3Y9qxC+4NOzBqUsLC+MQZjhHldt0+VzMss\n8pM2\r\n=2m9v\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEMCH3xmfKnzmoSSl38jZ23HvSRbEi6laFRfOE3ORFGUjIECIDRgfJtCA/zg+3XEJ8JVOMLKc15x1rMOiRVKrKhsO3/L" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.423_1550604031067_0.33613056340747005" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.424": { + "name": "types-registry", + "version": "0.1.424", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8bfbb2c722bfd4a1b2bb814c4ddb7d5281eb9e480d6e61e4a8c5df9906be9cd2", + "_id": "types-registry@0.1.424", + "dist": { + "integrity": "sha512-K1czDsVTC+H5kVruAzHlETQ0FJbOYX0pT+DAokTkZMfJ+zvIiWZGptua0R4jjvC5p1eZ+frQyqM5pnQTxcMhEQ==", + "shasum": "99c90ce89dd05cd057c132a15f7a4be66bd38188", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.424.tgz", + "fileCount": 3, + "unpackedSize": 335908, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcdZNuCRA9TVsSAnZWagAABOsP/iT+UTs3Xd1WCHkm1Mmx\npHfZs0GQ11wMS8TYL2LDm0ag3CrsOdUxjdq9gsxAz2SFPsEJKa+zbnJr1K7b\nmz/nEPBTCjAwpK7tcpOJc5IAxQT0Zb5tJ6P9m63eeR80vBgliBw/8fiz8W/7\nmwyjykcQxw2XrhPitAt3ObZptKVTpp2ZhS6/kZbrWTRQhk6FmIp0cAPI418y\npS521En4U0zksP/ICaKCdTgCms1/4uzxqIY6eszNyykhZCAJuw5gx65SRgRE\n6/lrKL1ptq19tNGv7KeGLtfQSnJapixVie42S0nM6wYshQXiSVooUC8cb5vR\n+OFM5ZP7boPOXayo4obxAl03rTJv0daP5tSqVYEwCyBcZt4QS91JM7iEetRO\nWfYBURwwY3PxTWO7tV8Jx1eF3cwh20QDXped/AT18xhk8JKom8P6VKlQJbRi\nGwgckfsK0d4O+D1+g47/IJD54aMQPL7E4yKJtG3erJEShpRngO54V3rKmh2O\ncWXphPtv3WY1qDzWjwEQt/21XQYcFX/kGD1hs33v0a/9zNWifhHlJ17YHVhl\nlVQndxo7B++Abp0mGtGIB/QcUS8gs1JcqcjcEDD5QIycjkYCrp0vbj2H5MQf\nLYlpgw+YcghQ+1prk14jcoR39qC3OUyxnD35ec9zwsN3hfdmrcP4kA+jBZ3c\nMuA9\r\n=v6Tt\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCcPNpE6/WwYW2qScw7kDC8rn7ZCC4emAqEmdxKm+JhHwIgUPBF0lxk08vsaWtAV2/0HvOgU+cIyhs5SVZ3TGSYq3U=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.424_1551209325383_0.8270825239982964" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.425": { + "name": "types-registry", + "version": "0.1.425", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "60f53a0dda458489e311702454e7c69b90d79706954935600bd8e3d46fde444b", + "_id": "types-registry@0.1.425", + "dist": { + "integrity": "sha512-OpOMAuE7j0kQyV9MRw6Tq6CD2UMf8mxROrEEUks4A07KLO6JsISShQLjDPgIAe1ZD56QQAA5Sve+tfSQCLzlQw==", + "shasum": "fc2d3c9f462fe2a2e4cdb51fdb4aeba2b67a5827", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.425.tgz", + "fileCount": 3, + "unpackedSize": 346044, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgAELCRA9TVsSAnZWagAA+7wP/33QZlOczoDw+sCf91c8\nITTlXq3TXGQwTRtqGMCOO+f/Y9UGv53aGCKivk7S+vUsYneRCMhPw2DymILy\nq5B1WvAajD/J89S7wWFv0u23d7AsH7FMTy6+PMhldDZyVC1Y9gfkFFk95q2h\n/qelxOe1Tx4CSsD1snqsGwGc0cnh0QuiS5R00T2/u+NML3SSX02JdHs8FJcU\nli2Xrs2GZePjrSwAcnCMjRmUJmtGdw+Nle7hKLcJVTDN57Mpu/PBl94snOKh\nVQAvNBf7qfSC/y8BwrEL80Mw6D2OBJ5k0kxxATrVx/EH+ORf/rkuBvJYf1iM\nqROZd7ZuTd2Hj1vD/upKsC/I8NeBvY6h21wkDV+FyWrPcC8GAht3nFc1na7i\n3gU67wRGlmEp8o2zntOehdoDc3dPrY/fmh01iCXzs2yR5mDOQy9MuKkNDuXN\nkYnx2LcP48T3zAyD3mD2AGffBv/RuF7Tnlc3xG0SMUvbvYwneCweI6P/pJ5k\nZzD7///No8tY9KutNz2F0LSXHcDWeqH3hf+vYVqAmnebtwctZ6I6deDdUVLE\nVyub4/vrwxjbQR2MMyT1DqunjTE5iV4jV9NBKyJ4MRs+Nk5BHjpCK90F1tin\n1x8er3ePMNArUUb2tjC7n92fLIpiqDNxjenTJOBOVT9qCUve9LRMSkisn4Yd\n99/7\r\n=zadJ\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGHnSnPmvkASHX7TVCUgdV1WvxtgfD+wp/Ht9cyXhfuMAiAOIHzqL2YgBHkUY8xB2uSRe6gOSyxI44+NVMbPn4ZcEw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.425_1551892747026_0.38491409527819953" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.426": { + "name": "types-registry", + "version": "0.1.426", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "482642ee11fecd9d14170c2b2c189c69ff604491c636e14dbe950d64612ba526", + "_id": "types-registry@0.1.426", + "dist": { + "integrity": "sha512-BHu15JTq+KrEdvrTlVr4q6gIShmmB67rcoEoxbQZqTfX6X/12X58JU+E8UJ2pFn6yHJDh0woqo2UfGcxNF2sZw==", + "shasum": "76447d1a0c7a1a4a791b73ed67d48c08f6d50808", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.426.tgz", + "fileCount": 3, + "unpackedSize": 348172, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJciaF+CRA9TVsSAnZWagAASKcP/jeOl7wGS0BCnybvgXuP\nFnNcdVycMnxICCCOY//tDlXK1ewIZYoFPKPMljG9stoE4G51HSDLK67qj6oB\nSyt0dmL2dwZs/tOlS2zJS784rpylsdnln+33rafV7HkkIVBHz0NrtQkPqASU\n2eAyLvb6kclbHXitO7oRaqI6eLIddzYtmuU+N/oW+3u+Mf6mlGpJEwkH4xuy\n2so+iw9nhHuBhPjJygMHhvDHV1oY21xQTY7AZvePh0h1RDpzNAchlAJHDuFI\njZkJA4IhmCqAQrDjDz3ULKeRbyEYa6din14N8AMYXwvE7Ilzla1ENZkr8e3s\no0/EPGjlQjEzIuX4YOM37gfgXOwS2d6r/PMi5r8DD52ZYdM2xiKXEDk3PruD\ndWc38sKjPaT8P8sIVfGIFxTvoIW+gVbmvIhxD+aS2p06MCskLzOk3hHv9LKR\noQabaojH/6gQsicL9y7KyVZ8aXfEejqDOiD/LentCC3boxDn9aAK/B41wB9F\nH31m+rlP54pNWa0LgIbofj8usYzs/ONPb0DIbAAY/UbnL9wUezM0TjnHS+YH\nN6jBW6o5qkl+ZFi+RRLYjxKTgJIDx+oF/TTwntlcPYcETwFvXjW4fb82YcTF\n01nQdY4bq9nIh53wh8YufR0+oUwp+vJtqgW6KZre5rVJC1ar/433UpkGrZkk\nCLg3\r\n=CBEk\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD2vhSxhjT9DedOAWAbscMAp72LJs71mIR+ZHkx0TbOkQIhAJOMWjBW0ZA4OrPWgIELvLf5airHaoizZF8a0ULsaOZR" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.426_1552523645873_0.224800043224765" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.427": { + "name": "types-registry", + "version": "0.1.427", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "426b9d6d7446c2d9f5b1eea3826aa7c64309f232455f50b1b09f76be7a186dca", + "_id": "types-registry@0.1.427", + "dist": { + "integrity": "sha512-d8R1tB+rWV7zY0gFXEsFarUwWUv5LurhNKgKonOi1JOF6nUzPi311neqi0guXHe1vUUOlcJpcPlQJ+87O1GGHA==", + "shasum": "f80855366c3dd23d07aa5ad79dd89a9511c518ed", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.427.tgz", + "fileCount": 3, + "unpackedSize": 347639, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJckuN4CRA9TVsSAnZWagAA7jIP/08C66M1Ph8+bNCqD0A9\ncqUMwMurAHnD5caUyDC5XppfreR/oE9KyrMWGyET9Mty0AXaPYZXw+hnD2a1\nKpV6iEyu/Nc11cyRulyOliXnrKZXxM3SNZNEW8xASIYzvruNPRG7GsZ+/IU2\nXXDoxgeTdCJggIsiw5TXYexzxyir5h0g7mEz3wvtBwYdGsI7+ZSMCKFW0W7J\nNHmzQmrjq+T78GcRhRaNmPu7NzsXc4deOd0NgLAh13G2xECapZx632ytZjL2\nyr4GhC5u15dBa2nLNBGqKGmqaBByys4auxQ9/bnS9afqU/gU8mvrn0Bi8ySf\ncL85VwJ4VWpzbFSotVZK+i56u6Rs/KiWECzu17gbbQ2ILvjdIcfbI63PcCqq\n5Bixp+jR8sDt7/gYDU1krdAVv3h7Zu+iHW5fpWa2STppUym2epfl5eOE4QAQ\ngs58QW9g5nGMAdDguc2nSDTsr3oLBpV3SoY5zuEv/ULqCsP4mBnIoAXAkvXL\ndRU+hS21VZYE6e/mxtYsP2mmjVUyja4C5rXwA0Axv4Kl/DTWoJlpaoY0afAW\n5MFl9pSJSjFcqPoY7wUfKByG1s/lB0AZdTfCW4AmPQUg6Ia1WeDkm0l+cKcB\nthYOrUL0VqNMNpvZ5WN/3naEEm+RfUFIoVyedOXlpSjflDexZvXu/o2oo6s7\n71Ov\r\n=tnfw\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCAb2oUQbsCKcI/VFZRKWnVjfe+6PJzkhns8C8ItQPUhAIhANz0RlN4ahs5DQj+Wumcog7oHauHQ0tvRGHNLRMxIBNR" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.427_1553130360010_0.37141213559425545" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.428": { + "name": "types-registry", + "version": "0.1.428", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b2785b058b7b83a86ec65864349d2eb2419085721955d6cf8e959055b4161c48", + "_id": "types-registry@0.1.428", + "dist": { + "integrity": "sha512-ZxXz8YdoRVCzQuiV6Ea/PjZ/JZ15DvrVgA69heJqOkyZG8OhYoFarFw+MHfPfuRpjAZJXyaWuftAyfw+3daODA==", + "shasum": "720c9cce52c8cc0bdd38b96baef07cdfff5f8c12", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.428.tgz", + "fileCount": 3, + "unpackedSize": 348862, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnCXQCRA9TVsSAnZWagAAhDwP/A062F76ijjuQDnQ/BoM\nVah4KBVLbrm7WBYOJ+2g4O9jxmovc/QzOZpyoFw/5+kqfVn5Tm7DElo+WaKW\nPPgxf4Q5miykVbLTqrN9UBeMShRt/0niNWU4yZ0+dC0p/qpkM2YrfCVJhibV\nA4qCXQ4hEbhRzVhqJaIL08FD6M6/Zl2kFzpftxtbAsEbCHwIfK0yhmZ+Xo2O\nVoBZSy4qN5GRwlltOkPr47ulSkJowCtGtv+GVFfWeOo/h/QOoDkgRtuF6wn8\nQLS27EN7PBkrc92NUzaUrZTWe/vRzhBpH5bDx3AnJVgEhJOze/FZMEQsm9Xx\nd6Zx8m11xKE2nKN7GhsDhS3ibUP0h0nHUPAs5nkCDKOVFD++X/V5VZTioYWj\nBhkLmclqWTulM7B7mX5kuAFV2GPKq8pyIbKM9cmLerOif4d9MBLufU6OyPA4\n35Mx1iiUJG528Z3Lycey0IAGXm1uVyl09Z2sAHCFurlnnBKSwsfl3YrB8sGS\ngCZfxlK+8/EdpfzKvDn2k021mwiOtqPqD4QxECUKGgjq+AGC9RU0JVWE04i1\niMnZwyN3mRhLCZt6ltj+XnbY616fsYnrQzRMW5E+OFev5ETvVyb1jBFNfwXs\n05CmA3XOj2G18OQpaDBYuiRyDyqvF42cxvBwUtnP48kPwm4T4oz8qEekkrG4\n84T7\r\n=ruf9\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDI+zwxDf84ulaH3j+dok4Vbo/BQWJqWEI3KeVJVKi3tAiB936IDw9cQbVpcFsEHBzxJGrXVWO27IhQG9d1x3Y4A/g==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.428_1553737167945_0.28057156863102684" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.429": { + "name": "types-registry", + "version": "0.1.429", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5d8fddef1861b80008695a420f7045f268cb246bf30b9a1d54e4c225a5ddad77", + "_id": "types-registry@0.1.429", + "dist": { + "integrity": "sha512-wErjvWFwPf1Ud1nBm67TVwtY15GqFZor2nqMzVCdaUkfWeo5z8Xn6La+wruHRUhq2GkViaJ23buMNJoPHYnO4A==", + "shasum": "1de67ae799c5951dfaacdb0ce4a45d1f558286cc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.429.tgz", + "fileCount": 3, + "unpackedSize": 349946, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpWK4CRA9TVsSAnZWagAAmLgQAJ5HdR4H+9IH5w6Wxgrx\nrfigtNPG+JyeSSa7TeLefGVI08oiblF7eYZAjvVUVoDJ7+JLtAUP5clxYO4C\nIa1/0RPGAdEiixz4jYy/yHJUbobGnhoTqtEUDOvPidBEV8GJV70FPj7q47Zp\nbzwHyDr/4mGlZUs7lxtdO6k0Fat83VltRIHW5HkfDssLFzv45fn/Ux0HQ2Mc\nE+daWWm4gvKakN6DhEX4lMwNZ9S5BLwY2nLqI0xwBRZ9qGZVyXdYVejwEjMZ\nl869C1+KIKqamDdy2SMCufKwu5Ks6Nsx0NrMXjUXAFNV3VJNXi69lY68Dip7\ns43TcPhEepNCF+4HOzHsTNm4tnz6FIqFyAUq0keT+j4mXUjt24+z1RRXlHd+\nlsRvhgat9ZB9N9FeWOlf0Xqozk+MMU7YaK6X28JcY8Gbk5BYxmyFDq6bZVhl\nbia19pQ5z8mbL1hCVVI+quBVkSoGe62JQ/sqT4CIVEcWEaTn/RXyBh1tODnB\nDgDSHvPHCbTGTbDqjPQFX/TjCQgDzgKI0Eu+HjU2vOzVVKBXA7uQzASByeia\noe0qCqZ4eavLMSydHS6CD9t7h4R74AJ76i8laOHZu5k7lqWyiMzHb6bigr8i\nWPi0wxu/kp59QG1CtRl6O88GbVjmFN5oHWan5OifScUqP9qHxE/amDCfz403\n84F6\r\n=v7hS\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBp79Abv3JYmFQBVR3dA1ISkwlatc4zc3Bdn23gVo2I/AiEA39xVG/XhRC5LPehrdJXLfGSIpXsLtdBX2FhtXb5Alug=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.429_1554342584242_0.11368709688353507" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.430": { + "name": "types-registry", + "version": "0.1.430", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "99ab5b00d51bac227d960def5a689f8d6c1bd533bf5f8233a239049588433ea7", + "_id": "types-registry@0.1.430", + "dist": { + "integrity": "sha512-HCt9xoR60PNOuv+1aV69IG5ljbe4aXHPLR4nHNiQ9WRufhdSzOLcVpWOOftR48Kpa+4Le6/vzCDNsfmu7a0Qag==", + "shasum": "be2635d87d1a41908d3856fcafc9fc9a07b466d6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.430.tgz", + "fileCount": 3, + "unpackedSize": 349278, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrp/FCRA9TVsSAnZWagAACzsP/AkrO41YOJEkpOWmdCRk\n+q1YbE8A5+MHIzXeanD9OmeypzfNSecPMwZ4xgwScbaWle/ElUo5UmBt49ld\nPL+rJDuS/VciY8PqeNs2vt5XUXx5R+MtU3nE9hwj4jYeoYqZrO5us3ZgD5c8\nyN8zJBt20C4HLGhgQXgbYPvP7RC4WVpvAKIG3Gx+qtgY005QIAGY5BQT2Lxn\n7xVWGqnFQv+j34wBwMpqviNkSmNfyfYtVitmRmdTYgRv/wUyPLEEY0eWfGc5\nA0HHqAdzEyV1Ha/XtonnqObSfzBV7Ut2nl/eJT3feAWAiEkSEnYJDo2uUBqS\nHNfblvn/quWEp6jvxmQtxs/RHuU19H8O7qHOsyqNJhnkxMbLQolzbFMBf03p\ntLJA12SLGraIyD23ceXn0J+UHnWGqiuCS1WnqCu+/y7weYdTvYo3RblxA9mk\nm2Ud2QETn0hHgsj7sIgXd4swQIAIiLcp0O+pJQLLh50tckoz19bb1P0vFFDh\nxXvJEEVtmL8bfAxexBAxFRc80BWakPxlz6Fmhciw2NvXIWtsN5v3lwi/Lih1\nrlcIKF8fpSPnfwo67ql9dZZzEB5cJzKD3JkNsr1aRcJzG48N2fz6jyM5B/B4\n4r7rPmM0uJBg+su6gHkjpG9dFvxU7KAJLGNVtc5/MzC9ptK+QeMr6NiAQ6JU\ntfSc\r\n=SHUv\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIB2/CigwlKNIYfcd3rsAt68zOfMC0A04ejT+q7u06iH8AiEA15bU3zPINQl+EtIkhYXt8rbUv0b8OFKcShmBEWj/d3A=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.430_1554948036473_0.8689006806706776" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.431": { + "name": "types-registry", + "version": "0.1.431", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "538f569fe62602fcfd239553ed2f8834e64a1a810770271e733878ce7d5355fa", + "_id": "types-registry@0.1.431", + "dist": { + "integrity": "sha512-nT1g0Qbc7nSUG1UwotZ71ZtaexcUMQpT6bunxpmMzBhNSlV61EW/1zR4aLRHJBAGd+kNzsp8/qaN1T49yeu0oQ==", + "shasum": "a6420322c893a0570ad54ed3fdaa7b26a211a5b6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.431.tgz", + "fileCount": 3, + "unpackedSize": 349240, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJct93BCRA9TVsSAnZWagAAseEP/0o3R78rDTwt6L82vBVq\nzDOMYMJlKx7YpEtxAfqlDZ5UVOQeKqhCSxTWmZiRBkAvNMQrgqm0QUP43yzq\nEPmkpe3aSNz04qs13KbNhwP1eZvMEeRT802GH7UIq60VO1a5XYV5Yyu2dOds\n4jfksW3xj1THNKyHBt59zK/aH/6nzOc1s/6V4NzSUBGJtKazQLCXOEVRKUjM\nWHUWjxoP0b1TwvWDAZ9+4Js4WWodbtiP/Skgd6Yeq4coTZApO2hgE0L+e7i8\n7qzAPvsinztB2nyNZn0jGjuEZF9AyVXRwVkt++m99Jn1WixZ+7yxqJs/1Byc\n3QO5Ytpiv9aWjYtwcPk1lKDdVU+gtGHpH1T0B7vnLFdRDEvNnqJWu5zGT4gK\n8YJOd/+00zjz9/zr4o+mQWkXkV0bN3NZ2KwVbptpjH3ZVIsfEDZX4xs655+e\nbJL8cZfjS7Lbf1NtLYYZltLbs2mT2WnykB7G/FhnypscvUsquloxzVX45TnG\nqIID4be8RL6cbwU/ctb90wKCUmUGF/Ych0mBs8fs2oSVyA/IKIdJleqalyRk\ni9LHbmYkXj8XWnRxOJTp8iE5M8Fv1MEWC64eD64P17uFwjoZaAfNnXBYFMbg\nj7pprTB2jEQllfr+joXI7k7L+7Jp0rsY6m37EXy1xlrd16sgfencpqhZzd4e\no+bA\r\n=TYyL\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIF42zQBPUzLJVUTvzt9CVFllD4Jnu3XDiei/wuBsLdemAiA+hqS4DthK7q/IKfzFA5y4BHFvU38jQ71wqVbgpQxWNQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.431_1555553728443_0.86158707106051" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.432": { + "name": "types-registry", + "version": "0.1.432", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f50a164085bedc424ddb9ceb0567a301bcd91c228cb341dca8acde8baeada847", + "_id": "types-registry@0.1.432", + "dist": { + "integrity": "sha512-tSX7NB5FJ+QQIUOi1141T395A2598JqKHVdHdygCw/1YcK9y5R+ws815dPND3y7xW9kHVu6ZmmR8fbxCsTu7Gw==", + "shasum": "c37d5f70f6147d86002909d327d18348dd5d2596", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.432.tgz", + "fileCount": 3, + "unpackedSize": 349704, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcwRqUCRA9TVsSAnZWagAAhoMP/1xxjbRg49VlbjBxvSK7\nJDJDuBYrQtuSxd6LJ54jlWpraCfdL9E8FjQhrGpTRT5z2DKWQF0ZjCNW1CGM\nHfsLb+9gUe3s5D1k2y6PrgCkG6UZ/OKaGbYK9sWrhGpmSoKoF3H+gbNbpzso\nFGTAEXT4rO+Fud1V64MIOZMQqKJf1QnMjgTxxbz4OMFTcYsM1MYJtsirCk8K\nh4/yn9YRyUv+YBxlboaDQeBHP0or+MF8HkdQ7qp+R7v9drTX3BghjAZcPj9o\nCyfTBSQRsM7/MTCrfWteKT1tKgpkwb3f2e2PR1V1bkbaEeqEwo1ZyqTIOq55\n76cxlT1oXo3mfetmxQe2Jcp6ppXQ9CTwMn1lmN1u+3qxL/NZW6L0tkNw0/4l\nngKAqPz+AN5mJayy/x1JZWKVe1+iz+CxzOxOR6ynr98T4ywNxDZe8f4OduyV\noafmv9odbRvWYxFOF4pWaVHALewVpgvRtcAj4EVZt7Dhz9TCT4ccNnN6OmzV\nUjOemTrH/kdSPoUx5qbwKy8lg/I6wB1B+LLfw8JmsZkivJS2AZdt3Ap1hE6r\nDSLvAEHi5S7YFNqGMfvyrpVoIl0TkNxvX8kNHl6VnYbNHQKa0zz0agat/8lB\n/7imMYYawTxXRv+hK5j2L4m8+LpPn0J8Y+Jlcf1e+mmXBjRIe+ZWXPvTQK3h\n/e5y\r\n=VfGx\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGaiw1zA405Yb1CRu/gfeArg7y+5Ggk3Nq8lfOtrIFnCAiEAvAD2DBgTVL1wfgvQVKz7ADd07DeTJp8xOfz1A/wHiIE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.432_1556159123951_0.27176862077531405" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.433": { + "name": "types-registry", + "version": "0.1.433", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "02466e1a16cb1046eb8f19f8d704e1bdc1ec957061850e66c0e16f9b99527708", + "_id": "types-registry@0.1.433", + "dist": { + "integrity": "sha512-05vyt2hF9Uc2tEsvn5l8R8Wmbu7He3uWWAXa5ZJOjJzdIIugNdpga8s24orM8VnFSrENsfNmJ5vXNqiD8iPpyA==", + "shasum": "513b625c053c2f57bf7fe502e2717fc7b6c972cd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.433.tgz", + "fileCount": 3, + "unpackedSize": 349798, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcy2ERCRA9TVsSAnZWagAALTAP/RdGgD6aQHth6rmtG6Ya\n4fuSldnyCo01pbKAYa6wQCccd5kw2irVfrNGWBVyAZpCQO/2+wU2RXzLxbV1\nTpqBp2zQ2PrdmJ0XAEfj0gu/VKYv6X6ZEfkdTTbQ/A9Rpy8BS3qfJYrIGFfX\njYpaFlPZKKtoXn0vgS8YJ/e+AmJKP7U+ukJ32tsKW7UjRGP4dOYEw64AChyY\n977OMg7FIraGNdYnF32gNw57tfOcntDX+XBNp8gYzLT0XJPHJzLLed23Txed\n+e1QvSn/nSJF5RGePraDsdm9wn8HPeE2SMt9bUtvV3da0Q2B0FFWp/3qJnDG\nqanjryPwK6tgcourdNff8caKnYiyVj9+gW1iNtj5Dj6CGd8Yt7c6UeHIKxfD\n25ZuY+h6WfuL4E4k0KVpID+iPClCBfN5FQIRcC4aGE+PYVGUumrLwEPWwsxs\nTx80BxijqflOQyM9Xz3+8GQgWnr/41PCVn2PTP+u9WlXKV+yeJUoliEVroFu\nDX7I9oYwScGkJi+53iBP4F6iayvvyxc/8WW5hD7F6GT8hulry42yB/6tO8c4\ndjcsTIozKx8rOVctHWYG1VsyQoUO+yLh0WSUkEVkUyrRZrRZRCLjHnlAwpJz\nOi6HWG1WmIFaNe61KOuyfi4wLhTxLlAbSNSZ9uEylCBwtDnUWbgO64vNocoH\nmreL\r\n=BpPE\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC8ScRSnwEGV1nwYaCgZm+trzHYUMXTd7BGHiaAYQMf8gIgEMz16/Ci3wxHigFRnyI9PRF8tqEeBhg1jprfa8AQZJE=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.433_1556832528731_0.8092215347312168" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.434": { + "name": "types-registry", + "version": "0.1.434", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ad8372094c5e801eb743525332c4c8c5048669eda0c216abcd5423ed8b1d4ce6", + "_id": "types-registry@0.1.434", + "dist": { + "integrity": "sha512-uXMQFjLJkp/l9OJD9kAJDgUAj3ExlWviuIxd4HHbNtEK7ujzTDd1z/8k0z6iSTgi5hUdPhkJx93gXcpS+WkP+Q==", + "shasum": "19f20b07774c062c2c6d341fc9d665009c1ecf2e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.434.tgz", + "fileCount": 3, + "unpackedSize": 350485, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1KCiCRA9TVsSAnZWagAAUYcP/RY2SRjxkWGIf19OZjX1\nVMgDmt6tiHywV5BtHljI/Gw031bkomNOb9fRDh/nBuq/ENZRsxC7QhBQNSgM\n5jKrRQTAal+IAhL1DXohoC+Kyntz6a7iFSrFOrPz5UrjEC51cxbbicj1QDhd\niaYqdaWtG2bm0I9P5IgFW9OO/EjUzsrCKkr/lT2l99CZajMfxoXJ1jM7bgJC\nojUpLCVYqhUU4vGYMU/5dlLMRq023tYOvJkWkg7CxSDEvaB/drZUZDUe7OBS\nn6VfkqrAn9ZfErjN1ACW0yVXR+1AmgMe56In5NT2Z6g8C4Womcee/XxpZeiV\nBz6CXAyySDjfgTKdNaKt4c/W6/Zjq0lsHthEdppakdGwp7aDJQR5tJ5OluQY\ngPo7zwQtJtEH80iLwTR/Iuf33kzHPkuk96QZwbJOvpW+JJxYtbpemjtq9o0h\nfH0kkw4R+CA+pTLFk3UDNrW8nQQd06otmqLkPp22cmcYn+DT5yyYCRIbrb1C\njYLbPXMRi7JsnWJ03Mb0mimxXPW0ljYdWDD/AIcnvHF9dRy1+82KkId+72RE\nro5vnNBG6qrQT8hQGj8HXf4p5+Lu5UgMgbR4ugswHazsOr5W0ioVBh/KNpz2\nej5rJX4YkzIqlxpWfRzbxWBoXTjifTQ5rijhlwsQxYPTmFRh+gVLPR/xmob3\njqOt\r\n=ePho\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBo+pvrCy3m+Qi4brQhT9kx1mYFZBoqUVOkgkgks4WxaAiEA7wDoqBG/22G7X+xAS2Zb2XXN8ah0cO1RpT+deCeFFK4=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.434_1557438625392_0.5206140826807775" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.435": { + "name": "types-registry", + "version": "0.1.435", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "238316a855c2a1f39d429fa022ab8c9bf5f172d26d05af8450f9af09a918938f", + "_id": "types-registry@0.1.435", + "dist": { + "integrity": "sha512-LBaG05MZeB2ZJyW1WZnF9HpmJpfi+BP6vfQWUB6OY/On8/IF+tx546ttc8jMunrgHWhbGvqDi79ON2aESqhMEQ==", + "shasum": "331bf8b86ff5c5a2538688ebbe74e26a15258fc1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.435.tgz", + "fileCount": 3, + "unpackedSize": 352674, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3dzjCRA9TVsSAnZWagAAgO4P/3lf3IavUgD2iXSBatpY\n7f6faPj0NHK3YwCBDVybutghIJzonVC2QKH1SXxFFEZJhF66YM7aKuwUUWo6\nF8U+tFIoX2LGExPELSyb9A9ZeNY1VxkVdrGdELd4AefpXShIYXgMOR8TLSpb\njqqMQA2rOqV1NvGmE+xzTy8AcZms8g3d57YV+8KtCcDJX9JCBBVyElXzxkJW\ncwKQsUBU0xn6EsrDvfQYAcQIi9DD/5M5ueRre4siqaNij68qiNuF6bKW5jjW\nMcuzVQVUgmdnqJvlgBR5Mc7o9wfq5H+4skksPo0hSDFo2j4Gw/Mjdb7OgCdp\nZIVZCETlBYD/COj9Vu5oYKUr2tTE3U7uQajhst1t2ItPhnugF4CmNH7sLbic\nN3i9Lchs78r7bUOBEWw/+i12J2Tk5cUoi7vOwOf1VEFez9fkZMbWyksH7IgO\nRSvv2VYZfcr0+eOrdJsK8rOUHfMiDjUEV/vEXd4Cc5y1+RDS0gO3YBOdAsiD\nY7b1hiQ9W08XgiHiVmGEUJ5PsPY6UH4JzZ7qMc8dRuF0fQ1jq68hJz2SjPGS\nQZalEGtJFaNwoTGbOt/hzAR3z1pP+1A/4h1J6i6dkpaTm8ggcPneSxxk4Ke+\noe9i+xaLaq4XscHnSsbMr1ECnv9KVn1oBpPSn9NsJX6C/iWLApHpSr56GIje\nfxkC\r\n=rvJk\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEsau0K2waXCypazuTeJnbnAgR1ZcqBfEnUxem1hsHqrAiEArSXEGg0ZdJG956cV+qM00qp85XL4dbEkFpL4RYsRwik=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.435_1558043874962_0.07750842649504919" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.436": { + "name": "types-registry", + "version": "0.1.436", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c1b1432644994ae80f38f668ec029d56bc9031c5ff96ea7911b43c40d8ec3a22", + "_id": "types-registry@0.1.436", + "dist": { + "integrity": "sha512-DPGt+W8TFlEcTscacilgwlZPnQhWfKNT1Skw3mINyQ9a9JexFrROsVBpejSNVH2KS+RukB10hOpufHdm9eMr/Q==", + "shasum": "2b7d6b02deacf80c8603ef2d76be4810929c7b42", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.436.tgz", + "fileCount": 3, + "unpackedSize": 354310, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc5xoZCRA9TVsSAnZWagAAYkMP/3R7d8NC9e/sbVg4jEkp\n8lDVD4wCVgfYovZB+QvLjAq7+IqmbP7shz4SufhmY+HoRGwWYCljr2doDBX7\nKQVbI3RgizVV1dO5O9VIROA+7RGStug82H24jb2jGNtCjZn+vJg2hjkIsSNW\nr3EaIJkLMcrmx8PHQ8lOQEvczirtEehVRUr3N4nfu53CxS34obnrXx4Q6nru\nu0CnzAf2Rl6pZWmBMSqOijavjSMPNOiegaZOQ7Psfg14xXeMzf9OV78fbhWZ\nUio92opvWZcFzgCJanRNkgO6/SGs71rpoO34uHKyPnEWufxaQLq3EJ+Y6tlf\nPLXs2ML9zwYPEHc1B6V5l0/mpDdbEOy///9Vroy++e1arozSDQctoZAKT7yh\ndg73a/5I04pTbHPCjP4KvEcXpPxrtEB+tuKCvoGuyfZL9rhds7SHJ3uG7ttS\nlQTOJc+8s5zilAWe5xzCi4XX1dqx8mDKRyTXEy2xjSyKszn9cf0fGMUxpsd6\nuJ59sKIaSPGIJnIM5x1AH9I9d/c2P0/KKs1tc7EtNRg3J4eK3aKWVyHCpF2K\nrSV1DiClDpxXSuM3HCTubQO25yAu6j7ncDLJuMGV/K0b+U+qKTU5fu3Kiu2W\nPQWU/IVHg+7mGxfWzCTrm2fZE1A/Yqe2RZy2roEa7GnDAkZcQ00gWvBu+NKj\nWU0m\r\n=5kh3\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGlPMWRdDwATuP5wEf1KRgs8rOnxeNLCP5/lZEzRe3dAAiEA66WB/jHNUZFP4zkwzpIfpDLWtti98Js9GqfCcGYIRek=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.436_1558649368760_0.4859676953731402" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.437": { + "name": "types-registry", + "version": "0.1.437", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fdabffcac1ae9598eb25e0d4fa059303a16c0c3d15642386d7253db9ebb4d5c5", + "_id": "types-registry@0.1.437", + "dist": { + "integrity": "sha512-mBJ/zyQr/wQbbZBURJRNfeqCAGBWt5D5vhAlyKvURJ5EUephiywfim0DpIVyBCuBW2PiNA6GXh99XRidGRq+mw==", + "shasum": "f900d8e5cb06f08cfd2728e28aee472b30904f21", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.437.tgz", + "fileCount": 3, + "unpackedSize": 358073, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc8FfTCRA9TVsSAnZWagAAVhcQAJ58xrniC7cTm+qhjxz4\nd8xNxmFIVqvGGDhBbHk5MLlvoVEtOgapzL4SPiv9ICGfG0k6CaqVVaqTbGZf\n1V5UvhNEA7EY2mT7nna+OXMPsKJGCCSMvhABt9qVaKZogu9QbtXDTiJAEXR7\nvkq3xY2qFTXFizZM/6wSUWmjCapKyQWwDj62JPY8uo54azloOkJHLFptWqCs\nIgoYQY1uwQIFLPvorWxzjbs2j2vQbcpPCqb2+OBIu5ZmZ5CqghYTCGBnmHmw\nT5IrA1MxW5HnUJRcJVWN2kcYsSwKoaAlWIm8+Yr8QIojU9s8hinj7wq4j0Zf\nAQ9D5mByW6osr8OUjEktj21an2mozEcM+zIt39LxlOsQ5upR5q0b+ZXGmop3\nCaZwMl1DoMt3zj585nyzoTvGJesAb0rUno0Bba+PCE3TWijBz06VNbCLsOHs\ntsC92aSrM64mw1WXPsrGlsdTLLGSlwjFKlmkguDyYmPx/oMPVWwY64HrOE7U\nVCjOZ4l4wVNrI860aFtXFjpIeRjeEkVS1il8uKl8jcKm30TJfkD47sCIcwIk\n+KM24dTwFmYle/kXpHuB6j2EQeZpMCkdIJk70fmmbAzidxMHxnVgHJuPtsSD\nD2qHv3h/+a777EmeYiGPRFrA07biBGbD2B1KbsGMOaXNf+/Gedh3Vj6Uz30w\nhL82\r\n=db29\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHl6rWCqLY+nzd+F96zfd0UOUBzZ/piYn4os543+gBD2AiBZ7A6bVbyNMblrzkKEwzL4hLeo1rzUZxoq3J6nwQ2ryQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.437_1559254994476_0.6893594042096438" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.438": { + "name": "types-registry", + "version": "0.1.438", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c7185ac32e04ed46f79bd3c5833bdc3721bb9e6c3bc738c725bca6df5dbbf853", + "_id": "types-registry@0.1.438", + "dist": { + "integrity": "sha512-jIqRdCGIoafUmxSanh2ebkfaqNMJ7eHeo6lTxU9IMVU1kA6WLQTwojHknUGsGflMRJXnv4CX9ycuTsrAasSohA==", + "shasum": "e90e83e827d3b79f7caa825bd73a3f037bdce2d2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.438.tgz", + "fileCount": 3, + "unpackedSize": 359799, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+ZQLCRA9TVsSAnZWagAAbdgQAJlmT6RFyfuSRD9nxcvK\npk/GJbzy7AgONwrwVZvlkiSYYgLHy5RJr2/2L4QzPdtnXclQaNlNaGqcZ4Vc\ndu9Jgx0HfONXmvys6G/2uKKsszfGvy9S8J5Bpw8+FFwCeM6Nqpi2G5BejZ3d\nvnPwOnyoFU+M21xqwmZpiDa83Ux8R3DIuGMdFVs01e1QPE4gnk21pts+QiR6\nLUmIop+6Hd/gDfxjH+yGKa5ofxgAyVivheNcFsKuzjzEYtx4vb4LmZnqdcYW\nmLkuyK+1Zzq4xsmKMlnygojo9jPC1aNGXgcCN6bX4+gVZnVDizRHg4qdNrs+\np1lbzQMIflENfyguWGo13iiym0KqPeHSbBTyE7W43eBkORd15pa8quLYm7kq\nvXnL69ZF7fFbk+rDeCSVU/GJur9RTlkgRTElHtB3SevGa7Y9sj6dbxU/VT5X\nrtLms5kIZZ3pNzhdmJMWpcpLFvdsBNB5EhpE4x7CNruafwoiimnz20x3kJzy\nd2YB4qwGmnzxs8s13nrgBl5OJhD9VDuYVxiFl8ASiZ547Osenzq+uU/aKBjI\nBMFlH9fpKHuwMFFRu639QWOhXBzOkFzZNqiAHT8N8NtFPRRPPUaMr/f0t34M\nL/vO5uFu38UiQOeL8695os4zdxH5ofAKBJ/0J1UU61ioOwySTyFd6Fz98/iG\n4YNJ\r\n=Y7kI\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBhyPQlGl1TU/LT0zTP6n3f6iScOe6vHIErPdf5gGRDfAiEA3ARgg81x0DvzvuAcuZHUSm6YEcsD1MNndgLx21U21bo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.438_1559860234374_0.8394443341529527" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.439": { + "name": "types-registry", + "version": "0.1.439", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0cda9342178c6c496760b2908bb52f6887d0207473e80d1c83760363707219ef", + "_id": "types-registry@0.1.439", + "dist": { + "integrity": "sha512-LlHj1N5EfRTfmEL3wWiIJCJ46DAS15EGGt7+yfK95Z9bRfT4Vn9Prj80H4V3pQoeklNo1AlwZNIWF3IX7QBewQ==", + "shasum": "87cb41043aa06852f6e79a384dfe9468fe232280", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.439.tgz", + "fileCount": 3, + "unpackedSize": 360412, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAtZQCRA9TVsSAnZWagAA0UMP/is3RJ6+mSD3NwZnU3CX\nq+h4EONv6yT7wOH46COu31wbGu53qtzH77N2qU4dwYbzJiyFF28cAEFc1dqZ\n733S5U/K6/d7X70aV5V6BQ9LN9noNu5ftqHrrHODZHcCMuz2SrGBowXx11uB\nxc7YLvzxCS1xzBofPBIMh4wks6LSRPfo1ohbLvFCEeMAFqVebkuU0qcu+Ff1\nRGcNmSwIWlXLJOYRC1Lj+PN/ZnL9wK7yN/mZWH6VjPgtVLvDMMos6PO6QcIV\nDhpA7b+uouSIwaMqEwjGjuQavk6V0u0aPW0Q04ylMTvN44qBJGBqcbwFJ7+g\nAQv/uOGFZHYaZvSuQBDI+znaqXS4M7rdF1EWYgXt5vtUYYJJPJYIxgvvJ6iU\ncmMJ9a6XylKbTni+Xz1rt9OoSSfRYm/kb48EYpDYUycvoXYKvLIk/uqW5h2L\nzGnKDBcIYdXGbWazoUiukh/JAToOIwPIvNc4REujNhNrIUgA/x0/eawATOuU\niV+0qqKu7Pl+CI/nx9PSCPe1ZP5+yTW6wXLLuaXwnupD6ECRwknLYR35y3Us\nOMIaqik4F95YM7I9pnVuhnFwcP3Ig7PRzfa3/+80upnUsw+38Yza/E+JiBzg\nZgT9i7s0F6bb6zzhvilECQ0BuIrl2w6KpGa4CQhKs8LbeGgHqLmvzx7fbi/W\niioO\r\n=Q6PQ\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCCWh4I/b0BxVkZ3x3fzDDWsecBwzWO7c+J2cPOqSaqOwIhANdUKOTcaH5OMe/pde3A3p1O18jix/o5qPa++Bm6fblF" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.439_1560467023727_0.3512847101090293" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.440": { + "name": "types-registry", + "version": "0.1.440", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3f7af926b6e4bb5dd5bd1ddf58b4223b3042eb626772b818ca8cbe65d1725f52", + "_id": "types-registry@0.1.440", + "dist": { + "integrity": "sha512-kJOOQ0ZQubbsMoi0bClqtw2QHCQz8G+FvJNACwUb9kIPZFQbPpJzFr091i5ihqsk7UwVyT+GqzQU4QR/MrFbZQ==", + "shasum": "70069ee83a181145817d78821aac935c74290344", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.440.tgz", + "fileCount": 3, + "unpackedSize": 363405, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDBSiCRA9TVsSAnZWagAAXdgP/30SL7QkjwtOT2rF0Du1\nm49eotHjHa6huA1EGW13JXa6vW1ew3VWlbt0QCKiwqQSC+4eg5q7LO7ukts+\n1YPd1c6opZ53fLw7T1yCvFrolb69Uibn/KOH3FHgfsqAMW9KUWvIC4J7DnHi\nK3Try/UbMq78zaTMmx2/plHUjqnKJiMrXxfMgeZ848BDW3DJEtEiDZHXEN1n\nLTPxCOZ3oGtKXwUaPFSF/0IhsicO1XDxSiz/6sR3HAmj1yqmCADfmNgaMG8k\nf4RfeCjl2SDefIHdxsLx9Egq+Ku73jWo/Jw/8zcNaepa6dclQbCTbLwV8z10\n8F/YA6Qk6eryrhoIUvkkY6MH7IMdrtaAPhX4hb7dJiCKNpNa3bVXSQnO6cQH\nNOEVI1IaApjcPi1uirIA4q7fPqqpmVKGTTVAahA+DQmVBx/j8UYLwMT/Uu/j\npniGQLHvKOny52Ivz1+feCuBoFXbLF91fzlXYyAw50qHMxh1n0z7fkRgvlx9\n68vFjezHmmOldlIA71LtBiXp0A8iZDBaPqql7udK6bnmUCcvn+hxxkfaeEj+\n6pmkNJH/ZUvkmN7mYyXhIdIGgiRm7+XGMds+TyCTqZRnBthsbPnw1RhZQFmF\nF6DgtDQJwMnG5GbBK0Ga2kLq3u1FQ38do+F3dEWrOjPoBM6Vz6ElVruW1jep\nW22S\r\n=GBiA\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIB00w5sMuaqJ9OJv/mgqIutftsxelcNbHDf3OUEr8nHMAiEA4IzP1LIMtUYvvZwnp6wYRh0q3rH+sNXTx6mm/wx4r8k=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.440_1561072801537_0.1521223441509525" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.441": { + "name": "types-registry", + "version": "0.1.441", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "72a44631c7631e92b3dcbd1b891dffc86966a364566b5d288ce3942e6204de9b", + "_id": "types-registry@0.1.441", + "dist": { + "integrity": "sha512-MRjC4aUew+MO3+DzaxGC0Rw6EpyU8SrByggT/bpPU6CAFYwupMcW1PodqR0MvtVWSfMha7T00DQohExzsg2bZA==", + "shasum": "4ffeaa2c6316065dd8a6d8637f151d2b08e143f2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.441.tgz", + "fileCount": 3, + "unpackedSize": 364831, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdFVLSCRA9TVsSAnZWagAA0okP/jYF1saUF5Ahv1HmaTLX\nyAhVkd5subTnysaZ3Os/xy2RiPkM+TDQhDy28bsifdhL4KNr4cB9FfgY8d91\n+P5XYh/IJ7EytrOGHBoMWYxMFFTNgaGFTt1VR+9V2pD7weI2XpkNc0BhHOZ+\nPdRnxji74jsir38kEk625WEhDiPssFKTCTy28iqx7JkwDiX2NtdB3Y0BNuJY\no+hCKQR4UULlbCFeEWcHIpcGJKetIDghIMnlrqPMv7D8ilNBITZGOGJhewfl\nx9BD0b3+ZZ/2x9UTG/WA9eBruRPsZQKY+opHDRyU0SfVOENsh9hbC8gDTFUw\nkxkUX41WyQfQzbEhmisxToGIZV6H07fQnyVg80WYbvOD++ehmyP4ipe1kdJe\nveTxXjFL6L53TqE2sPqQSOh2cAwQ15zCEB/KAIoYwXgM3C7+M4FBK1MHYRXW\nTkdT2V2BzsTecuHab7p0PlH4qhPJUwhXJA53RCf8Tml7V3oSQI6vqo1+Hiyj\nkC9kx1nSGoq48cNE7DyROd0kApuTfXDXKQehkYe4x/aDOqQWY65jycNoR3OO\nO0x59Cpyc6L7RD6DgRq9uEdl97T/tuCoorKwb/dgq9HlmLXwpiUM2Z9aZVME\ncfZ6q08SL5YOfenwhk6A+/3Luf1yUqFOD3+zGhmKVxSw6duYNKQ1bSw0rdT9\nTFl9\r\n=6eSc\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDTllfxs4WKajqaVBjBUD540PxIwu1lfptXKETV7yUUHAiEApYH/gvYQtF1KXps+RhhEvvNLHGHv2ARoO2EhThhSqUs=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.441_1561678545849_0.31561150540042404" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.442": { + "name": "types-registry", + "version": "0.1.442", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "78f23146466465e8853131e0e85f0a38ba8a658b73ce2fd3d053511eb091e388", + "_id": "types-registry@0.1.442", + "dist": { + "integrity": "sha512-jQRY+2Qq6U5rYHHANgAmb13lxEcbfp6PbWxN/MKHMkpCwt+zzmSk8MKBD5dNCi2LbSa4RjBdsIRYCSmdoMJLbQ==", + "shasum": "af91452030b185e7ab3ffbd1058d0d7b4625df58", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.442.tgz", + "fileCount": 3, + "unpackedSize": 368406, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHwHACRA9TVsSAnZWagAAwdQP/2owGDyRKsY4KfuvcH13\nA2SDO23/uVl5s2mtsvM43XTb9SQZyA572aq6PqFDWk2PHgrmz8AhVlJuoa9H\nUBPR9WbyzzDJvbenl7o8z9dYwUj7QnxNIFxc7LkYQRsYSh4ywVuVFn4d1bFy\nNAcmx1jqYJzI7E7/V0DoUsZxbWQqdXDgvBLRg0Mwa7El5xfBteyEG1dnXtBJ\naQz+bMSfvqCzzaAAaIUkY+ZWy1lUBDTWpLlyiM4aQgLoRMGPxeRUrR/HIFLz\nw883hGG7KssI97lxoE+WXNyuNRueBUlp3TdaHFTYtNl+D4NSkLJH3Rp+kgiZ\nG5Mw1fkXlTsz7HnwQhqlhZJ11H+T3GNC19YwKL9dUUPU9GwaqoAmQ1uzpF0W\n1GcXBGQwfYWMSVUaT6DbFtIAs0xF2DBBD1+sWch0vYy2mBVgmQNtWv6YsRnH\n/UkTJMDq8U2pe5w67yoOJ7HPaLVw7AblouNWtS55zBxETAwI7dR2i8S29e7k\nv/nhzVoazzKp4j1MXDxS2Yvmv/O3QEa0n61OLfuKcXY0wt3ZTRCbJOaYN0o2\nGBoV1csbg/rSkmyCxAaa/QD3jbndcnGsavkvaQMWjnKlVKWqNy4JPPDbkFYX\nDyj1GCjUhIFTy4xdqsQ1oSOA3CxXGlSfoGIYOnllla98QBSt30CrKhOdBNff\nD5yZ\r\n=HPgL\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIE0wIEQ4+xHyP5+ExFQ+dTELQdxNjPk4u96Pi0meJBBJAiEAiZV3F09UASVpyuOTnOF5TEfiCf8am65I/LrEb1hYEdA=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.442_1562313151450_0.06822011042053622" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.443": { + "name": "types-registry", + "version": "0.1.443", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6af2f73e7e9eb5cf6d25c1cf6ca0d66baac30d7edcca5abd01d48da1dc1ad35b", + "_id": "types-registry@0.1.443", + "dist": { + "integrity": "sha512-zi5jLaHfTbQbHAvVdEANAM4lt8h3stCa/mBTdUWmTLK90V8ZDLsOAi9HflEjw+o5MuFVVI7ClcnvSU0C+Ajq2g==", + "shasum": "98b5a9ddad3aef286db3511f7f7eb71803afd43c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.443.tgz", + "fileCount": 3, + "unpackedSize": 370235, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKEBGCRA9TVsSAnZWagAAiGAP/0oO+bpgzCpw8v37Xf4V\nh7VD3ZPIUCDW+fxNqO4pARGxeCxbjPJw2wcR17ri3Un8ZdNUbfFxKQVlAq25\ns18npFZfmaPMxTF0Z+TrnMKfRv94acFnqysjrf4iwURtdK2z+k/DJyTT2lAb\n+xUOF+WMPwv/XGANsw08VP7HaOpxZQbwL7MUizBEwlsNe8FoIZ8U3gSWtGNC\n77xekSC20T4+ctH4a3XMcPqTYAt3kZov8SZcuCiH7dH6ORmyYJNs1Yltmy2E\nBEl4dtNpl7W2I13nqr1kjdnPAGnt8c6rQ2DB54bU01ALlx8hlOE4w5ynKGg7\nvtnEV5Z+Kj7FbttKDHTycOz1OJPZmJ+9RgUZwIlMuoQWUBJBcBiatLq7lNSz\nZU1MPGC4obOIPIMrj8ZJWA6H676HLkQUZnF66GMBoaV86VA0j+1uFQsZhrhp\nXhnPF+mZCLIeK6THrwFBkitASEBzd2lt1CXBID/zcSw/zR3oS5LJZL0og01U\nhu0k5511P3fT9Y+DC0eMlVb1K2o0QjiW7ce70Ru35ZvmAfS7UvaMnC9hD9Ck\nUEDrivMe+D0TluD5IeSeigG1nYmYL1lWznInsseHkbLF8O6CUBzYpxQtWRAm\nSeOlFLzxc3KeR04Dud4IPJ8d4PsctQlQucn+VzSjFsLGBG8vhCnQxi3S39Et\nLnZ5\r\n=K8OQ\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCAOXXDNQFruibFF8Nx2WUS1KZKfLRtbhIPxF8qX3Y+igIgBHc3p8HR6nRC11UxKzBF78nJiPVvBplyIfo6c10z6xM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.443_1562918981995_0.9379017133847813" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.444": { + "name": "types-registry", + "version": "0.1.444", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c429d3dd54835edb39f34cf98b0bd38227f7450a524df091fe701de4c3bb1d5c", + "_id": "types-registry@0.1.444", + "dist": { + "integrity": "sha512-cgBZOcXRfT24WmFhhuifQjATykmdL1EQuYxg3TjmciG0v8MBT5n0fa9LM4jGbLsbpZP0DctbDhZ/HJBxLEZoew==", + "shasum": "a0cc1e7b27846b2465cba074b0da15dd0e070eec", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.444.tgz", + "fileCount": 3, + "unpackedSize": 368937, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMXuiCRA9TVsSAnZWagAABgAP/33R8Xdz8YeN8oXk7ctu\nCAV1akSwylEQafNk8aMwk5R95ANEZZM2+mf2l6RFV2px1DfSdxx+y+B1YAYa\nuJDh2w+og3LZP9ynYRYhMyzSMm2f6CrSkIt9NfNHHryY+2o5M0H+kTCvp5ha\nZWy8W9IqS43CAF95rieFHQo8PL78/+4CsozwEh67XyeLY41AkvpNrecT5bPC\nDl5+MT7GMHiluR2uCwacJES8ad2bnWGZwFDBU5qxZ80IvuilgNIVRKXy2eCe\nX2yhyNcBNpJeM9S1bY3xK7Uqa7s6ybZF3Dh7zWANSU9dLAKntTj4M87ytK10\ncbwh+6XRWRSCbtXdDJes7P/Cl7DHRHSvblwKnnU63aGj3+Dfqh1QLr/21OL6\nDPcus6Pfk8dNM4nqaKQB2uKLAUttBky/LvaD28XKavqypV9aKpWYnw3LWV2H\nBljZCfuzKmDXF8q8C4N/mmB1O00GFfBPH2tIHDiy9dkm1QA3hAuKlk7rj8RU\ndXRXxr3EFmZ3/n9msTZJZvCj1cNg8rmjV75EZW77AeOiv7AKGBpmz4Qu8nal\nvHlgayLEkaLbE6C4/ZldVtfB+mBzBVaQ7NFVmcmWklr8m0/UqakNFR632E2E\ng2Ojdub3LB8nOXQgGNWLV7OPoRiuSVw4qB2VXKuKklBob20jF79UVi79LgEb\nAPcA\r\n=KwnL\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHl8YMKDPj4YXIGm5dx+p+HuvYiFpCdxHaGure5ovpo0AiBsKLRssMTpfZe7my1nfryVy5GkS5GKniN8q6tkoUy+PQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.444_1563524001746_0.440999541743067" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.445": { + "name": "types-registry", + "version": "0.1.445", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6f0c6e8787a780c690472eac11d7714922cb67f8e1fb0ea85f150607a2eac0ca", + "_id": "types-registry@0.1.445", + "dist": { + "integrity": "sha512-0yR400pKOuozc6raAZL4SiiUTGt/etiQp640scKEX8BUwiqSGHryphoqIAlenwQFWUQfGiUdaumnXoY5n8pQpw==", + "shasum": "776e06377ceca99c6653036248e7a6cd2e529aa2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.445.tgz", + "fileCount": 3, + "unpackedSize": 371549, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOrh4CRA9TVsSAnZWagAASrYP/RTj1O8RgGS4icRUXOgP\nplZ+uWttUxv3HZuph0FREONkA0dwKJB0ymmZx+C+DQzniJgdQBiZuIrC7bYx\nG0+I4/H23GHRExlDW508wwWGBCD3Mq9x4Gl7YnMxl2C5YD4vO9JNxxOwg2Nn\ndiigwLu+L/JH9hHRjs1k0YvRAJBxjwAFXV/a5PRrDMPW5nXJA5B1UpzYFcUo\nbDquq7LlSZz7iAmaQD1nHQ4ao+RcOHF0R9I33SIn4O7tyNSgvGm+hiS/D38Y\nI/kUaQdb7KQvTBcCU49MKVPLogsrTP4s2CMsqKQQgbDQ885+nSq8vK9VGj3I\nK6l5gX/WpWeHusTnOulkWz86+KZLgCBSW9HhMzS36ZRwJzIvBWvggnUz02K/\nbjSqc8qoAdZUhOmGX1iGccTljf7V/dlLb2K9xi3d3HXp8JBVsZgOEbNe5vGz\nTcjE20i/YxL//LK28VSvMfyTmtJEnWrlxdb+AXa+QWMiUUPQ4mYJAIvaPKUN\nsRxG23nyLGt9o5SY7BHk2G1rPk7LOm6DhcEUNDOoY49aUrzIttstK0tD6Zn+\ndoLq2FTuSb2RPSNxQrcvKG0JcIMfx9yaIpdI9jaKiCDuG/HjKdP2sZw+qPDF\nASDYntmh8V5mMmsYHJfHEj1x19F5/4w7E8Idj7NTfsSaRV21CzKlbDna366s\nJvPs\r\n=z16q\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCBRW8LE4186OlpVre6rQ1DbDj5+UpNE+Qg7ZXNKGUD+QIhAOD8GW2WCCOEFmUlkF3p8jvDORjGsp7LMx2rEBL+ZVsw" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.445_1564129399789_0.9135014393330425" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.446": { + "name": "types-registry", + "version": "0.1.446", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d902ea1a0aa946ad4a41b6944f63225425d08c6958171ac5a416151d46640c8b", + "_id": "types-registry@0.1.446", + "dist": { + "integrity": "sha512-aNKNybhzCihUHAehKO2KtQAj3iRo/egLlAxcwUXoGeq1E9MCXGF0ChPzN8Tkg3iEJ45xFxiCjrnsU2aYn6YbmA==", + "shasum": "1465d01dd57a855a2c3c496da97185aa9694c91a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.446.tgz", + "fileCount": 3, + "unpackedSize": 372840, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQ/PpCRA9TVsSAnZWagAAixUP/REYFaV2MnQLdzLmclAQ\nkPYYZSQCdIfMq2hEV3kejy13N4Bl6wzN0+2H6kV2Qhs8tjAhSjG7DLpY2kqI\n90G9lsEC156h7LoDkH2f9o+brjpmdjZpcchcaInqeVBRoXqZjTpA1rXl+ZA+\nPnVWyjtOMqQBjFOGZjMe1JQWhVtReuaYuBZPSx7kdqiuXeIPFTDk9IDlE5cX\n5iQlc8sT5JKHgt2PrhXpHfvlWH6mdl930YvoKYQ28df3VaYLSux/OwHicoDo\nccYJhS7b58Cm4uXxUHoYOgL4qSvbhlPETsJHseDKvC4kuF0CCksV5pMIaoTE\nH+M2dmQwH6VfijwRJdrgHlOS4WgV1B4vd5fLK7HuoQ5IuDnNcf/Ek4kfNY4G\nRRDz5C8UjaaqO2Q1OZbH0r6GWwAfiVN7eapRcj8Gk8ARb1zgs3/TCgVBzK0x\nctZMMYfWqSuqC4A70l7FevAOGG1a4Pi+ifiyqzABwfC5PRpcPg46YjlNoTMz\nO4RFxalEs0Fb3+acQJqLNr7xHR2kP8Vj3QwuJBSWqTYh/r8lOxHvLg6rfg0K\n9Z3e8G7DLad6KUEfNBlvOTZfLMHAXaGMS4OmjVhMVaxNjeOazOI6YziRt3FJ\n91Fx6TkLUP9PLMbgk3+sx1jxn/QvJZ13ikEdKf2ZTwQL6akZ6jF6pQCnrUu2\nR9OS\r\n=kSxp\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCDxTBaRUniInUcuksq+SVTrjghDQyGBlA4ccUr3okOMgIhAPSboLUIB2vDBrEwxQPzGiPQB1VLkYjCbj8clGEiE8d/" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.446_1564734440956_0.5026253590744849" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.447": { + "name": "types-registry", + "version": "0.1.447", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d02cc9d88dc08ba89dcd3d036a7149033c7ead7f4a880ae3dcd7dd1bb7eeb88a", + "_id": "types-registry@0.1.447", + "dist": { + "integrity": "sha512-6R8vzDC2zixs/FS6mho3L0eK6h9bp03EqhRGR7CUeT/njl8bKOIjs6w1opzQDi5kuI2RMrD8O1EcXaWiUEj9Ig==", + "shasum": "f8991f62059641786fc53bba69cf337c368eb2cc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.447.tgz", + "fileCount": 3, + "unpackedSize": 379248, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTS7eCRA9TVsSAnZWagAABkkP/iZeG7rAq/GQm35skBKF\nwleer870CPNjjVX/b4Ynhy2kRCFhP2fUWLQpjHSt1AEiEBrQtrAAa2YUBQBx\nGibICDo7uteIUxl9dMWGGr5S67tKrhFYXq778gM1gFMMsn1k4K/fLhi0K2hw\nCx3UkpzMj8wPqH3xTVQl5CKJjqxnFCY3gbn+apSdID/PF9A5BfYBNQeyWw33\nC6RbDS8PCfwkGTjECR3KFq1Z5NHYDeJZbjXTq5SYZNjNxTKU4xziGuHtWiJG\neVQJaJuCTd4OSgWQ52xwZN6DlG4ObVietW/JIw2aFzaCgtEbtyEi7CHyafZJ\nzCsrSU3xXA0xvmaAtr9RlQ19qBVhxC9NroiHghRcbsbb2EhNEX8Q2c58qDa/\nru5mHAlQTTkxNkTo1Dxy33arZe7Ea96hOwRL1LKIOjGzZtaTThn/DoM2thqF\n3vsTmwMQ6w5dIogc2iVSzAUV5YwAtD/FvE6f6phEdxQfLR0+xBsW+F5jf1kX\nCAWV4aAL8LjYd7yH/YmN8fMGt5vvR3rFe8VMqBO6iOSXkgAMhgoLELG6jbWR\nHizX/1lgEysCve986zIYyCMXcopXzjLE9Jr5PV3NhIFUQW7GubVv6hUgEza4\nn17mcdWNF2CBqNHf+nGc2xOih6rfOZNfXM3BUYQ5eWXp89lsZci5MlvrYRnw\nOg44\r\n=w0Um\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCE0JjSgCT4Gq87gCca3vJxCoZcarcxRUZVp4o80wleqQIhAOTLML4ODkF+Fj8v7ZwBSBKut9c7q3L2CEl0H4GbFNyG" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.447_1565339357208_0.21053422692036294" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.448": { + "name": "types-registry", + "version": "0.1.448", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b187de8de50c74c3ddb32d56bc9e9c6582a8179c2b2b8680f2a3a40a2b007661", + "_id": "types-registry@0.1.448", + "dist": { + "integrity": "sha512-NYlFOmv4vuT8yrm5nddYamwtauHFZ+Gxrdc5KO+eSYnkOX1pcjFsNcmtsykvkBy9e03dPIze1djNjHgtLc0dkg==", + "shasum": "f8e9d0f0fb18e3c5666003cffbbdccea64eaee7f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.448.tgz", + "fileCount": 3, + "unpackedSize": 379873, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVmwFCRA9TVsSAnZWagAAT7YP/27asmNQe9J/uqVaB5Tz\nw7B9lW47W9wEHzy1Ux/MuqQ4tBxtwclQg9LvZxZEKeQALzE+9x2UP11XuGC/\nyAGy7ojZrLf+WXQe3ZAXGgRzWgqA5y3qcdA2vXiuczA+pkCK+KigeoSgxeek\nCZiUgl/NhflX3VY1c++0eXiaq1iXZGzTGpvvkcEdebE/ex3OH6S+JsdvVvky\neGrFsNN8R0fJMRfW7C7SIZBd/xXLmqbCmRpZXIc/18iC7F0dGKOUIyIjk5Yi\nUTq8wyGPwnPnjH81MmtzXAMsKiszGiBoImktPK5/wbmhRT3L+56fn5nLIXSu\nZoVftebV+GwLYvAJRXNgXCrUYT61cxJ+Hq71cezu0iNseIG7TXY3gPG5ss6G\nwRZ6J8X4/dFsTX/sS8lSfmur3jSjynusTq38QWHyH8q0LMYyw+VRcYtFZep9\nTnCfr+mqtgDt2asFHYnD/TCDil7Dmawy+hAFSyEXe3ErMf6hGmy5/QF/Vdg8\nYRub79z+F2yJDTjc6XsdIAykno9G13PfjM4iqUeAnZ1HV03yjpMNLvDZCv6z\nkLcO9AedTnt7h8A/bHEeEgoTNbZ70gvawSAJcFhxlmcZKlm1AdE0cZUfwW1o\nkpNSGlFJdgdHuriJInAvPqM30WfzZI2t1a3wrJ0VmVtYAhxWZ3eW6CB9tMfX\n8NkC\r\n=HZll\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDV8xFcIs4rdgcMH+r8kviehPbwKVzqj0/45gNB4chRowIgIOqRV0kgV/bXqmpLdWGrbsXz8zCC4NHOu0xCGwDMHmw=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.448_1565944836953_0.9881907726246486" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.449": { + "name": "types-registry", + "version": "0.1.449", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "154eb366db4cd1466d6427544148c91f7ee719d9c7d2a54484997efe5d104d3b", + "_id": "types-registry@0.1.449", + "dist": { + "integrity": "sha512-Ya7RxEyzMe3i/F6KMotLTaQu2we/SCM5b9lOiU98BIr0jll+uZjC6cjvyvwpNjKHZGQyXH/CMndta4s3xB5alQ==", + "shasum": "4d4ef9b19673bbf2b09fdbfdef1ae3f21ab7a853", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.449.tgz", + "fileCount": 3, + "unpackedSize": 383491, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdX606CRA9TVsSAnZWagAAjncP/jt/Mivu+XP8/fKC1/UC\nFe5Vco8bhHUeeS54ky4YX4BB9plrjpjXiP2vpcBx8xaSCR4HyB19GCVrgIOX\nxX3gNSAjRmARl8hDEBJLqjju2zyo9MwguLVGwAYIywBdWcEUC1WCjK4rQ6bg\nbjFJS0ZP8EydRHOwZh7zB95luM3Lgo1WluGEyERWOd4bqxVY8VDtVdifGIJS\nKlMgRM/RQJRhuVXkmIzNFFnrtFgE6RAUuoQAtpbj3a5BeYLn+y1BJ77JPgN/\nLgzWdCC1SL/hbE/HFiARNgV+d7TO0dd+uyiXHRqLOszlUYjT60oNg6FqTSGO\ngSkDg7ZfrRpAcxD+Kwk4NXeQBtIDX9qbux4lCmkysC5EH8v/p5wk8JkqJJl5\nhzDqgArbdwn3UKjgYBmk76PMc6TSvKsDPKLUB0YCwJYk6eQTAKoTCmHVrVd1\naF+qoNe3ROxmMj7zk8oeaY74RLKbxgr7G85DqL5Bv/90AqhiUsoG9/gTgRNi\nx+azv2lRuXotqMTxs3ao6+iGkoBeoYHCZVA2DsORKhaFScVyJy4nQpVLSWcu\nfyWQeCayCZTCSxcyGeNpY2ifyyH3mdpBzxPggUcpWbBOrv+mxsuqGQJ2wGJP\nFyuLjINZYxW96vemjDtAg0OEjRWTKDBOPM2qv+W4VfGZN/cWXztK3Jcz7HY7\n+GEh\r\n=Tb0x\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC1XYaMzkcytezoxAlmdUp5oOqX3IR1T+U3FHDNtrlJ7AIhAPn3DsBiQsSlwLecJEnyfwNXT8Rt2kZuRBBzPl1FDDXs" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.449_1566551353309_0.16007477595752628" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.450": { + "name": "types-registry", + "version": "0.1.450", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3a6243bd303e373317c66eed2cb544b175f09c9e73e0e54f90b6dc09652dbc97", + "_id": "types-registry@0.1.450", + "dist": { + "integrity": "sha512-a2lz+QCwK1sXCyPE4ICTp70DWv4S/TBW7+bsJz+IOIvbe5fBnA4wbEAECOWR02V+V++F36SHLzsm+8Ur9hA2QA==", + "shasum": "ac50b208e3e76f21ecf919644c96d7db3586e443", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.450.tgz", + "fileCount": 3, + "unpackedSize": 384318, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdaOheCRA9TVsSAnZWagAATc0QAIZ3fJ0yOrsMEryCPuXG\n3vgmhdj5rv44JdiEVhfVtS3DmvxN1zhmhRaKFbDfKh+XgOtA7Dm6J2oC/I+Q\nbK/qrZxe0KQy5vLzdxylOpLaPYqgNSOL2AEHXecctZJNA5GrSD8TRN8Iu6R9\nqbjK2WI7DGDBfeswvbRjLJLse7jSHZJCeeZoNT42aGCygSCU0emnRTg2PT3t\n9X48cHnKtfXjxk7I6EskMUyLZKBgkX+WEk4EyVIPvGsraw8PqNQ/U/oQ2Ctz\neMBiYk4+Rb72NPDjOWG8lMqQ5LGVTtlz+knw9Jh0luaxUIRC7CjNCJcaygiR\nQpcz0GBk0KCdIlFdbeFmgJCtH7hfZK4g2Nb+oUidxE4KvI8Kc0uFpmBYNLE/\n5V4Y16dlnxLn1a2WYmbjcE6MEvnKM+asz2DHNWzYl3rpjQwOjMb1Hx0Jqe37\na0nawlbabmVlGI9+itAwudkaZKLV9L9+g1j3f3zOvlh2P7aZvucTBFbOjj3S\nXmqKkniccgLMEzLDt9Ma2Uv/D3mHT6gwq/NUZOjpv/ADHfWrAdUX2zJ9O/pd\nIrktPE/PeQNJoT5fDUUVKG1n6XB/QRN5dvPWBAf7no0IJ7NpERY4KhARcddL\nvobzZgCGQ5kL1QluxPE4faFVogMrFnqTtzkfTo3sVW4QRudA+ojItaBeBCAd\ned/K\r\n=69XX\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBNJUboeJC5/g78PytLkYQsNHX00p5ZWVctfW+QyHasXAiAo/Zd+S0FpLoL3Xm/yKuQfyuAQzQvsbXtEe+LiGD24sw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.450_1567156317561_0.9086531393993209" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.451": { + "name": "types-registry", + "version": "0.1.451", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6c2a87cbaed08aec3d658edc8a62afebf68d2fbe61eea60a21d473e26c429a6b", + "_id": "types-registry@0.1.451", + "dist": { + "integrity": "sha512-fzOdlEVKK+TMjCJBRGiIhswUKJGIdJ2x7ambP/kBXPoGtgmwgIjVCrzFXXeZjbLjoAHhZccFsmv7hIvjUEv8eg==", + "shasum": "0d67dc116b2a2ae53d016c0dafefa7e53209573e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.451.tgz", + "fileCount": 3, + "unpackedSize": 384929, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdciaACRA9TVsSAnZWagAAQ1YQAJp83SfhH+ufRZhNYWcy\nOwU9db7wvbU1jkh+Q9jiIGZWb3czM0NQwqRtdTokegcsRA+CyVYsNHPRw1Ek\nOPbpBQ3mZyNLzH3Q8kCnroen6E2NHCNqZVF1AFsEJB6ssmhiUmOF/k771cmB\nJ88FEjLeFlLoQoeCZ7g1efhnTPAZgQCySMGcNhxq8BXUm4g+7tkur6/2minQ\nCVvTOfFQujaqvt9yDmfJ1X3/kPaIugpFu7Bw2ckvJFihqYmBCxb2GSECHMBn\nRCNWcbt1+xBVbN0PNr6XTLBLRgNCG3tmYDfbLoLkvLODmD92CmWHbXFpzYtv\nuXkhlxgvI1C55mG9OeTeyJjnL5d6y62OOM/TBG954p2H18CIxQiaeG4OXjSl\n03g+2JjhuyULXl0CN0QDSET+sY2ZjCwMIkhfERxncNhWA3ahB/7SthDSzrFm\nupBZbOihszUkYC122/HOioTAU07m8KhknN9iGxfqhdVFyWLErZFSWXkw5ZQv\n9vpQNNnAh4WdEey9a2oVDSA6QU89PdkF3IWNDQqejWqy0SYvjUFNriBgdCZd\ne8C5N9ebUr8+hp0jOtY9lvJOnRjaqr3bN4s5zb72ZrlmdwyepBz2c/gOsc/e\neYnMrucGUlgr3RXJzN/YYTM7MpOdepkiRd7bO/16QIhVEvHYKXNv+r52/zzy\n/eT/\r\n=hLbX\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCZuWWJfBvb9EuswVu+escm15RSkpV+u1i+Yb2C8RfoZAIhAOn6wXLcmi2gRW72NSarzZc+lbPS/kAUY7QsaLw84xin" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.451_1567762048076_0.4958288304027305" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.452": { + "name": "types-registry", + "version": "0.1.452", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e25fa3cd521b8ee8526c1412e9527bdb07d4b33ca76409a4adcc4f1a4f4c741a", + "_id": "types-registry@0.1.452", + "dist": { + "integrity": "sha512-5BjPIvrJ9EmZaln6D5gwgIc43Js/cmBFruQLr4bYEQ5lEWGZfNGsv2ZcQ5EB2D+9+DQKWixNpFGCRl+EJBtfSA==", + "shasum": "17490f26ba70886b8227b25668b1e38de852a8eb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.452.tgz", + "fileCount": 3, + "unpackedSize": 385810, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJde2UmCRA9TVsSAnZWagAAIjoP/33puwoS8J9Qz32Zlw2X\n7KaqzoBlCAuJJMWm45o4nfSYIY8otIkPWhSUBsE6lbZCQm9O2BJNNU8AtETl\nHnEV+aqS1+WNa+LS1z+tWWupMwu6leocZyFX+Wu6qqcIpccN0yzuD7cLLSln\ncB2TQQ5oC8BkO1ESBRSsLZ1CzqPZ3qSf0ySqIF1Qu4jU9mAQP92ysE6sZvSj\n61bRWeyXEIfxqE9dBW5dj7ujPvSiSi8uVPvMh3lFJudQtE5juXyOQ2lZ5UbI\nf8hIiv9CXEXmY90ddNtqm0KW1vOeRvImFS5OxzgT50CKai3iDsmVloPHD1cY\nBEvl/nDn0XSpl810mU6fFRd+uf8L7NRm78m8fpDqHka+N3ifOVQSqTVUiFvj\n2WhtuEbZ3TjOcU7iCs62M4ASJB9t+uXOCCELAtvUiIW3S2b2y9KEM1tzhSnX\nTDcUKiUGciTU5TvHgs2/U6NoVmVYMPK0uAWKLw+eEwlEZk6FROZ4o7NxZBNp\nfZM/32xceBBvMYY5XUrEztIm9Z3u5L8EE2SgIpRyLzLuHLXm9yv52tPCtR79\nvug0ekrRg9/Wp4M4p+Wn14mvWoX145W4G/jmWO4kNMalaAtMjJsj4e8K4Jbn\nJBKh7z6ScrVaZ0CrP/O3ExIdF3mqB8bESXRm9CKWYp1lSDcAJmBtXnDKGv6O\n6Kyt\r\n=KGZ+\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCOgoZBc+makxRWK31134Vsv5wHU6XWmHWRkNiHzyzQWAIhAKleAbBA96RoOBmxwW5A6GBIPsfnGOSlFHi3so2NKnG+" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.452_1568367909294_0.49061421385700754" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.453": { + "name": "types-registry", + "version": "0.1.453", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ff0dbaa5665195b2684f1c9e75517d3fd44bc6ed9a2c077709846a556c26316d", + "_id": "types-registry@0.1.453", + "dist": { + "integrity": "sha512-2p/6nW+NhSRJFX0T3aXG1RaaQC/srIZifTm7lOuqUQeGMc4VsPbmz/WBwNECfJhEhbR9662Fl2ZjPWjo0+3PZw==", + "shasum": "6033b66cccf11d5365891ec2f38f3ad9148a75d4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.453.tgz", + "fileCount": 3, + "unpackedSize": 386189, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdhKVPCRA9TVsSAnZWagAAAw4P/0dLmbby2fHt7zgCdta1\nZp1xMuu98XT/i6mNeGuA6JVk+N1TWBpIIoNPgS3tknVL6G+31HIjox60bgW5\nn5TW0uEqkIDfI5xEZnO9lCmFcpCv/EDRhlDj9JSJXkz/NqiqhjucgsJHZpg+\nbUQl3OMZTsTGl1HfPNFRF7KUVsYauG9mXgqTi2tqsci1qOdrs0laoVykj8hT\nAC62aDlvJWuqsJxY7m9bxAit9l+QtnpLRBIynDpJx/4yBooTxhQq0vJiSavk\nk7a21iij6EqNvntm0nPJErZAkOQKctH2Zd2/vkvT2RvJyiGaIrXHKNcTfW7T\njntAgm73buMJWhrg/fa7HAEME/5+4MknEB9X3XTXhFURmmMDJwJYO4ekqLkh\n6Xw0NLLluXc8Ybn3mACQ3jcGYcsTgHtE0KHCXQVcQUuCPxBpRVd6w1MM32W1\nGCAcN+m3LA0rdJuaexKC07E6Y0QewhQJxOC+ZBuUZZFAPA2a6wY2p8IeBaKo\nuilETVHdmMexypHMscy/CJ97vkWoTqykvCucZC8ylTfDux0ik+sHMWawaTIb\nfHI1S+FWwyup9O9mOc+KAZkQbVG7uSCbCa3WuDr2A8iphQ3SP4889AlcC1VQ\n9l3J4qXf2jcnSY/zcKS55tMHzDmnSUw+2FBXQFGrufTczrXhYQuG1x1gT+9v\nSCGg\r\n=lz+H\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBawjSqwP8h+rOs0V1R0Qxi01goNC2+kNn921SejKhy9AiA0XSgk98KDwaiwBibd1QBg4SGhflH28nBnH9m+FKTXNw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.453_1568974159111_0.49736119916891264" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.454": { + "name": "types-registry", + "version": "0.1.454", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9d8c5c0e78fe98f07e0c469c8c920238bfeda45cfd58c8edf884b50fc653af1f", + "_id": "types-registry@0.1.454", + "dist": { + "integrity": "sha512-aVaVFYV/DJ/73F8r4RPuYXKVq09idQ2rGsMleJ+KiQRqaWCb+p+HlM21J+FKeKEiebRTmUKJyrUrF+zWrB3LRw==", + "shasum": "b2d52acbf0acca0deb917458cb94d5bd8540dc4d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.454.tgz", + "fileCount": 3, + "unpackedSize": 388005, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjeUeCRA9TVsSAnZWagAAgyUQAIxLTYOIW6Fko7GY7kjt\nXVEEDPl155dNy4O1yRgrX1yqQxknc7aWV+VDPKE9NUkzXsN/07hEBKxL/Q2m\nY1dFhQ5AnbWliCHswlfdC3rnPJ+RBxJuoNO1ed34U+9ty6gHYRoVSKcYnLuE\nee37th1gPv99qFCccBJrxLctPVl4Ktg34XBtCpY2OAqOhSiY93/Xw92vkQhH\nUW/MSM7G+Csw2THYb9axgKSmHhJqxmVW8LjQTqay6CzowNLGP+ZUQQPPM2nR\nu6t9LGY6QGUi7tsPCUpEUL43ePFcFYhkJYQqdYN7464YuL7Meh40RNdkFQSi\nX5S7W5tOuMpOq2G14+2ybfIRg30xCsI62uNHsLUHuegsuDV2InuA8iSCcR9f\nu6+/5bMuyv5ihdGK2gAbTS253BDwW+XcyhkKuXv4C8PjlMtEhLaePAODQRBq\nD+upRGXCDdAHes6TBJbwdlHPilHZEnq9xBcnAxJND2PGZZxwzsKDueru7nBE\nPCeuWbvyiRV5IlNZd8xvWVFSsjP8xhYYur0OuRAxXzXsuUH5oacE3JTj9Q8w\nlUcNbJM72VDUeJS5ewS3/IQ6BsX9WYEEg3r/jcKgVGTUIpGfUbIKI/Ydmln1\n3TD74NKEKbhIGGibliooROYDyFc2AdjNvK+f7yi1x7kesVHwc6LZrPIZV1qX\n3sel\r\n=AlZf\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCRbpl/IXQwG61Llg7Xkn2p4cw+qu+FvK7I9tA+n2q0ngIhAOFJqH2hliS27kMzbmQg1ynPUklSZ0MKYFPpTRdm431i" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.454_1569580317804_0.8268452267415818" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.455": { + "name": "types-registry", + "version": "0.1.455", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a14ec8e7372cc9cf2ba8f408a5e91885ed6d9725b8c19b784d7621d2f96484ef", + "_id": "types-registry@0.1.455", + "dist": { + "integrity": "sha512-r0ApNQeZBVAjV9eaRUawMz+oUwpRB591PeWn6rxiQ5jni0gOYfrPvR54ZTrz/YEqDTco8g7Li+bNYFthAW23wg==", + "shasum": "b4ed6408263caf0e54d0da5372ddaecb7874ea09", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.455.tgz", + "fileCount": 3, + "unpackedSize": 386031, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlNIUCRA9TVsSAnZWagAAg3oP/1pCG7M1UJW4r/ZyU/5z\n7SizpSF71BfuEglUC+XyYZUKeIyVHbiK4NtzRkSMCdVs1h6kxRGWoDdgplc8\nUANrpXk8u+bLopJS+bLQsFH8wy++Y9jdspg//OwiKqhdN56UILKRsvQ/Nvme\n0svG48t7F814zNiskn0E01Q6akkk4RBSJlWeVi5Yz9BfGnpXa09HRXgDpTsF\nXjMQuviMbxcftEVPVkBxMJ0bwXnggcnIeaAt3MTFYpT7Sxs7iy6qNwndaW6H\n5kYh2NH4VRVc62mybW1HhrlXIHDaVgBb1DyTuQ6U64RGIKuhVSaqaTSmxYBD\n3v2i1f0Dl8pyJ+sdhA3UJ7ztaEUX8t2OqK1Q6uJVFU0E2DnWX5CVcIaAvjA9\nosRO3fOQIwSbw0vSNlKUpwAsGLyH8xxF8BGP0uHidqaMEJVgZVWkc634SRY7\nkLHNd4D5k78C4iBR0kV+bYqjuR0XjN6HEmyEg6MtHARElHjdG43jUzrRU2og\nyffCdcAx8gM3KLzJcSpP0ZLC/JkaC3EBpVgoLEFzuOaXGrA7Ag8teuiRpOcN\neXC2QYCXoQYaDbYbFCTWvS/9OV17DL3OAAymlYKu6IiY1sZ9BfQsT5vKiPA8\n4pyh1l8HiQsA9W6EXTjFThkRnN4mldcWfe5zV2rZ7+eloVQ/WkL2clbFSL27\ncpps\r\n=V/FC\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCHlw0UFamKTTLO44ztQKdkUO2Pb+o+Dd8nlHnXBO7j8wIgeB827hlaG773p4PErPAMPFWHsFltXc9BTC+S1WCnPKM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.455_1570034195101_0.7225280818165492" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.456": { + "name": "types-registry", + "version": "0.1.456", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b72e0cba267c900c958ce25ee41adab5314260e301e44c413205b48fd091e040", + "_id": "types-registry@0.1.456", + "dist": { + "integrity": "sha512-bd4s8a5VkULMqSE5NmkZNAoI5FSoYZeZS5zXWy3fPfBmNQNBVFp8fjqf9YvILqk2HSAFUyAxvCQeJJpxhBI8Lw==", + "shasum": "dc9e93cba79be9cd00f8b7cf3fef177e4f161c3e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.456.tgz", + "fileCount": 3, + "unpackedSize": 386322, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlNv3CRA9TVsSAnZWagAAxHIP/0NMTVz6zxFhUlVcmmp8\n62yGbpukFv5Ba2cCM6dTYFQF8pYgw0xqPVzzwyTinA6MCnv4EC8VTiotMKxk\nxSvK9L57V1ua1bFrrktRsyq7wILMxOdkdapi/mjnjSkc09OOmM6tFLJTUcEW\njt+JW3UZB/5S5lnF2YoIPjmUR5/XDUfo2LOOgwXxG65RwrhiDOzDIk86aZ76\nFFVZyICy8Oqe8nJgB70Iutiz8V/MvspYdrZ/1O0uhkqaLrtWncBj//S/MJWG\no1+4L4nC19m4zR7codCIW2r2J/qtLYhfvyp/2q/p20cqXtMihmyCwgfLShnr\nboI6zAeVthuRyTzOuWegjxpFJxhHJ8Gi1mXCovo1QMpZIxOQvkNa6x8l6Ebv\nnY9pbRRfErkw8AXE6IzvefkNtezkC/09KTFfrR2OsN8oWnWjVyuYtIvLj4eY\nlHxo8I4spEBlQV9QgsyX8Ipp3mtrxTlJt/x5pQ0e9ZWtY2wx/XiS1ccYtePx\njrKQHrqYevIDCsbKKVJi7TrAK5Z88+ivI5rx01gt/GiyCkC7DZhjDiyFCirC\nr7GUmhzIzWUuacp8VEDMfZ3LuEZL4I3rzH/9BMZ+fP5Q+QqIpxBG9CrJA/6Z\nqmYSXinSXkt635CQSOOP3g7gKpSrPDVXRTQdqY9E5MFNRs0tRQOTbFM3NyTD\nfNCt\r\n=2PTK\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCGWU7yOO8VsYwZ/bcyxbYACqRp3GaeNRBDw5H1ki0L7AIhAP+5JWDG5hXiMKa3i02nVOH5Ey4juXdlDUt1m8V8esAv" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.456_1570036726767_0.6132644002752521" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.457": { + "name": "types-registry", + "version": "0.1.457", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a62d53e04dcf8e16e1b44f2c5e705c61289df9605e13e962049caef2f3ef945e", + "_id": "types-registry@0.1.457", + "dist": { + "integrity": "sha512-RCGhKm6JpcMo//7GalM42kV/WEsvxcbumxvvbRL1qwyhosREMoBV0Op80/w5dLjU5srLX+H755LNysCE6YrheA==", + "shasum": "6b8093deb48cee7e3ee6c4bd73bf5b52de87e16f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.457.tgz", + "fileCount": 3, + "unpackedSize": 387010, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlRFQCRA9TVsSAnZWagAAszkQAKRQW597OIovIm9VFqTA\ndT/ziqmclGSUFFdDSzFo/ULLWbgV9+/4kXB3ydIemDXUb+SuxvbPUPBn4mRA\n+5S8gMXjh8YcGQKbHp1CXLGChS+F4UlZyO3KncL5OUM+P88ETApX+2g+aDuK\nKVQmr4lYBIRFTu3ggYjJaDzpVaA914w+uRLE6YgYr1ox9E4wous8eDYrOXGN\nRHxjnDox2fHVJkIFjrClo3Pj3JTIqVKbN2Q6J5x66Abi+5WBPQz/HIzA8qKM\nxTaH4vVCpzIO855uDXrYzed940F4Py32/Gi7bU5+a7m/UMi7PghPUxLvvVjn\n7nMU+9XCnfvK8iZB34eqYNv6/bh1wyTsus7tf1y9JfMjQFQWnTdi7TL+jBAD\nGjyCzTL3i5XOuC6lVP2r68grYmmyfrQxdUnlwCFgn9M6PV3ddpYCIoxYvem7\nnmUnP3XgRvJJGpg99e178AF4L5rp4q/Hcbt2WIDL++nDmfxjKbCbp8FRqFNH\n2dmAQjG63Xd/LvpVue1jVACb9GT5oyEfm52y0BjkDC/wXLefRF5evOsO3eNd\njPV/dZJQe2WUkofqm/z5NkO74KdkbkeZ4jNaVHo12C4UYLVoRCXhlL3eu6DB\nrK+B6m4VIDtINX0Ux3PwR8EP3KCvOqSjXWMWCzdSzdB5rFZydg6L7CKf+RUm\ntzNF\r\n=fvDv\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC/tChMO5lnTkECR7XxZi9Ad+snZ+6FIdXIONAkm0P2SwIgLktxrDUiktNAkCsl2kww5ZY6fot1tjndMcxV2bqHf/c=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.457_1570050383898_0.8051154631739075" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.458": { + "name": "types-registry", + "version": "0.1.458", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "28ef0c7d5349b4a2f2313c3ae2a40b33e94ec2cfab1a171d52f308cede998d3a", + "_id": "types-registry@0.1.458", + "dist": { + "integrity": "sha512-nw1S9sGNQRpIEyDpzFntvQgiV1tR7q6467KlVYRsMkdjS95QRb68aZZSvmuoGFKRZVJsGFDn8dINRVg9cDzIOw==", + "shasum": "3d7a66c6310938250203b04a2792bb3ae783ffe6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.458.tgz", + "fileCount": 3, + "unpackedSize": 390424, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlSXiCRA9TVsSAnZWagAAgGEP/RVq9hHaCGYq3+1DDNE0\nCmvQDjC4+0AlEQDAk0iS0E1NGxamimEH+aJY/IYLTNqx249F/zZ4Mn+XLdmM\nE3Tmr/SveMyR7V4gLMFvkgibJ1xgfvHXhQyAxDJO9taPDeCx3+JaMqi+vavG\ndJQH10gUbUYLBHD/vtL/JR7FStbYvjx3CHKvKBYm1Iu6CYtGbFKDQXKInDhN\n9uQI8LNmNmc5XlTL4dDd2HHEH6Qzrd+GE+KQEO1g1tVgX5/0DXiNXsRCggBi\nn9f8Rb/ybzliFIqe5bHB5ywXe6y9+uNuu3q/BkmAiFgn+zyZSL5kpGfk00oI\noYBAGBAWRv3eOIgFnkhhZgiTLRtaVEpFEDjtMyBhtn0hzgqKPVSYdrKsGR9z\nk49X9AwWegHE7G9QpvK7uWOouhIKaflpjCGLd8/nQv/3LuR7daJHJHJMmOXf\n7po2VFYjVnWmE71xsZiETC419C092d5WqKprnGlp+IeRDUvgvwjSgsTrLsWf\n0oQhgkkHPXisRFvna8Ntg38wmysTJxPRwx7JZU4Kc3YbOt8HoxBsmQVsROOY\nV5YYoFP1xwbWblW80cvnBZj2weAUv/3vsr02rmyw+d+YntI6NAIsoj/gImhq\ntgIPSX3mmCAvTHzxpfHVPGEc01PNmlMqFZIV59H25JwEliGnlltaEEWQsycB\ni/l2\r\n=zEJ4\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEEk0NuKFKEhN2mq9drTwY/++j2S/4FOB0qOJj1iTx1mAiBxI6bM4unrdY5fTVQDr3K43TRxLzF6tec7mNLX3yTOFw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.458_1570055650064_0.01388341086717615" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.459": { + "name": "types-registry", + "version": "0.1.459", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f7431d5ae49cc173e4319dce7c448c76381ad8d4f95d44f45442f4da6f77f9c6", + "_id": "types-registry@0.1.459", + "dist": { + "integrity": "sha512-ujQZJVk6QqG99LdBucnR/3fzBAMrlnzKBN685DosnMW7YO0uqj7qYrEzJ+zqxiIUHuozd1Kx5MA38zuZtHrG/Q==", + "shasum": "8c8bc52bd46dc59238f1ce1d32fe4acdb25925c9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.459.tgz", + "fileCount": 3, + "unpackedSize": 390424, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlS6DCRA9TVsSAnZWagAAVw4P/iasAEbZac9sFFp23nUe\nGd+fpKjQEhDIhNmZmoxZESWfZedmsMUV1WmUDUV6okhw01z0oE2KDtVt+N/r\n9VPhDSmKPT+Eva1xTqzUX/3eVqsfDkEWdYJ7tlYYmyu8O5L+i7+/pd5LXEHv\n38QKQT7JQFikeNcsyICu6oa/7BwcgANsQg+7x7aqriEOdcZ924qwhfXoRDqs\n4Zr8HJY6TCGZkGsyls96+XMRIm71gmKlxmjEZHGEvGt7GuuKoZPJ7RGAgeE+\n9BVIB34+qbD9RwddgnAhLdMSfdjXEWrnSGwl+MCvQ34fpAAch/79Zn4E5LXA\nczch8e1C4INWkQYLpVjddwNNW6ygCFHFkgVaAxulSL4mfUEFETC8m6cKcwWd\n+G73uVL2AjZz1kuGvF8abL7NgWnst6I81f76eHsdO8VqHpb/5sreUxTNKdGZ\nunMvwIb2NETkiD4oyx1qmv1GvpL8nTRQLZBvxJgWh3PieAvROkyCKj/y0P99\nORzXjbmUmmIlriurfvbZ4zy5e9UWB97K49xUeIEhSt0XOMI1agjroLNepoic\n0JkBNTtO7D37snE18gZxAOvG9rVj9vhMBnr4l91b2FGf9FTLVrpiG6lwoPDE\naOI/kEEkKrX9oR5HFaQpMFMhJabD237QdB7n2uEBrOJZOc1k0X9hmgVxfe9w\nDZjF\r\n=5BIr\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICehDFYGtKwtCY7T+5tejdrntuj6yqbHqsBYB6lLBJ4EAiBFMsCQPkxU360SlIR8oxE1th0ZZN4b3yxhGICT999gaA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.459_1570057858556_0.1446121033514729" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.460": { + "name": "types-registry", + "version": "0.1.460", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ea5c18411c18e73eb98ceb852c2d9334fd15376a0ec516dae258b532c0d01492", + "_id": "types-registry@0.1.460", + "dist": { + "integrity": "sha512-8/Lk9fSFbM/m8H1kdv1C7lrBeHma0u71ip2tSo0d/al3SV7hKeJKqtUAVyD/CKehrornFGanqepJbsVvtI3P6A==", + "shasum": "a5eb20ab06f1993ab8e99dac7cb96c71195f02a6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.460.tgz", + "fileCount": 3, + "unpackedSize": 390977, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdnmvwCRA9TVsSAnZWagAA2nkP/0vCOJ5LPla6L5Fhf0s0\nqfuC3cRyUEYmjNAioid4rZWASfAKJ42ZxVao9QoMl8BSWIPS1QJjElVSiWRg\n0OjtOUBQ/DtRJwBuBiCp8kfz0bEDttiso7/hitub6klTMLeLPGRIUj6mfdlp\nCWyteTw1tvIDZgStoz/ArURBOGatHsfigozV4zJb1z5M/6lMKnHJkUPpi/+a\nQ5jRhmkz11hIe9DZUqLwmrzvSpDDk0PGeGNx+plocAwRUXA6VyD5BtHolC1B\nXXlvjXL+Ybi7JByL1lYwFhsq2x0OZ9Tlk7S5i1ww+xL97VR09f/yc4AQRDzH\nW3IktIp6SuHIoXLdpaoBiTPY5DRtyDAD/OGVKFPschOUjfIRm9y6OrgPMOD6\nSoE+po+bMw8HUvB4+cZSHaHjOv6T90wh1Vv5NCu4LMoI4ogoJhWerf/tgDvY\n3vUKcGiiQP2RbZjhSOX7/kZksdDlMQYuYl7fMjYEf/94J0PAsAWszP2y2vI6\nNaZl7YB7JvCwKND+F3abkKe1dQjbLBfz3yiiUGIYpSItcZmXNTt0hBoBk+9d\nzKOA/QNy4nXvUWBhxsNafTPL8Ae6jb/jeOh32QqYNYJ1MDwL5YuunIsEa+1g\nlISXMAiZtMeGFMOzXxdCPoyolkwAssC/wQcrTjuw9RNxWajVw/YPH/aIRiWF\n7j65\r\n=GBEL\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGEi/3JjhdpObS5O1kYUb/M/X9itNBNVOXbuhT3Czsw0AiEAshD2ZZCQHRGdUTmr78f0ZL33C1Rig4xPPJYp40i2B80=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.460_1570663407345_0.5061986354278745" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.461": { + "name": "types-registry", + "version": "0.1.461", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c5d1218d08328df2e46b6213d1e25de897bab8454155c51835b264618905408a", + "_id": "types-registry@0.1.461", + "dist": { + "integrity": "sha512-06MCHoFH8rNY79EtAZt0UqDDqpQ303eXgy5D5s6bX/eRHaCLaR4DwHMrd9oadacYKIgWxsYvfePnI4ATgpNECw==", + "shasum": "6f64a9b40e1ee5c2cc482ac3e9530577e22b8676", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.461.tgz", + "fileCount": 3, + "unpackedSize": 392719, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdp6eYCRA9TVsSAnZWagAAJWEP+gMMOnipow30T3dX65Ux\n66KsDu4ErDEv0V4QKN3KqqPTS3ti7kawzuemEfIR3wANDiAf6E/fAdbnuZrZ\nY/V3HN4hxyAnS1nzExpWYSR4J7virQkHPt98gHxkmq1btluK/xkIb53GsGni\n8P0V9GQwZX7sVC0w/bk3ElOsg3ksHS5IlQ/aNpkFiuDieSBbjwnUqd/diqwc\n6pzoWX26tPbGOM/ezThi3b5LHb7bZKHSr5swH/LJHqDFx3myPhteUL6XmQZn\nsZYvKPrhf3GyOMvyOn+fctIzTXY2zfpHFaUR4ynueurL8BPa4PsAyEUvcFFS\nHy+wO4UUcJMNmb183AkxBxQzf7jP2/h7tkeKWFsWSkwk4MMB3v+iBXuJRDin\n/DEd/hwAlCNSZ2aPLQhP2mVZGuzoRphT3/y5PJpdPqmEvvUivohsNbex0LgX\nrkCZ1YIEhWi8Yp4b1bZFGuQrkwxSkjvhBPfu/zEeVIA4GbTAMdYAaHJXfeCr\nLM08hNLXncf8YLc+EhPI2QVVvNSk/OvFMj8+FqYyZQpz6RcY4SggPRTrQr9f\nInEQh4hfwJOTg6iNsOglCLiQlI1wiIGg5VECP1Za6IMw5VBudIjbWeBz1dh1\nknHLEemCnCgGstljutSS/CHjJ/brAUEsWQ8VxrRCs/E7zeRCB9FNBcYZGcfA\nIVBo\r\n=m8gC\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEMPXvcNQsUSLbfo8VWZzNpFNX6JrdZD31kHUcPaKQ6lAiACT0WvS6fXIUiFhYpVEbpcRTjhSO7vE/X+QQf6tSdRoA==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.461_1571268504286_0.12377528009880967" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.462": { + "name": "types-registry", + "version": "0.1.462", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f5aa40e4876b9c6a2ec6d9e27d156a339c3f160d11bb94a45b20d97f2fa4dc8c", + "_id": "types-registry@0.1.462", + "dist": { + "integrity": "sha512-6b9WlvRg8ZwpfwfFMTw6LPIw3As4KnQqGxugrqIdlYbz2gl1F/mJ/ZNNe9WsUr5HDisBxVOqMcf+f+IAC9n8SQ==", + "shasum": "41708e004be5b1901f8a172552d1a46db629c877", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.462.tgz", + "fileCount": 3, + "unpackedSize": 394261, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdsOeGCRA9TVsSAnZWagAAHRIQAIj/coJtn/4FXqH7VITE\nwCwfVucoW/Fx6FhqiyZPaUjlgLh44fnQwcr77Kj2WTFGE6OuwGypXmbQsIZL\nRoyjHT0riIkyanAWP9e/BzkzdTMb9rWN5ZI7viPcpRQ3Ts4HUzenBynB2VNc\na3ptE2e519mIe78Kyvko/lT944fG5+j/27Db4J3/ncTR8TO+X5RgIXKvcxvZ\nqk/it7lo5pLHzQtHGaEifslJJMCoWjJqYnEiW6dc5T0rXkHgx0A6sQIjHP5w\nRvtVpN6LXOWFmxK8ZgVHPvv/n1YJAQ6yzAcKHwGNb4sjnA73NPSRxmhLrt1p\n+zHCRW3JQZSg47w3IOuWYHPUPA9Xqk3QCxQ2WtmOj6cRDH09Mnq+40pjVh6y\nrtiWI9bhW+wWEMiMT22JVVT9B3h6IipUarkt+FecYo6DbSXeAjbq336bc6Yj\nTFlqtJ9tOFKKo+ybW2MvbJ8giVAWksiWnmmlH5MnYHSB+9B+fvScWT8acLIh\nD7PmrwNgpFNBbTfBqnRj8b4UboAuvdp3BuJXOxY4tx6gev97PQJfJ8h7YHK0\nSdzEliJLGd1EZl2JO42MV/SZpVMY8gUrKIei9eKcJAVK/BvDaNQ2kmk1O5TD\nAyXp401KdjGrKhoNAVPAQ0u8MavbUTYbC6DFqrWD0LHV4J/+nPR1PsoMK43C\nTgGh\r\n=ad5J\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBhuQzkXwyKbEyb1yeOxQ8J9cfYBmETxUXnsX7EWIfc1AiEAldII+pwwyTOpkNXpw3SWhMnf0pKdraMvxtdVxS577LM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.462_1571874693854_0.33132035325367104" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.463": { + "name": "types-registry", + "version": "0.1.463", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b8acaa439e37f018dfb5e4caf32abefdaeb5c45fd175b4500d9d9fb5740a7c42", + "_id": "types-registry@0.1.463", + "dist": { + "integrity": "sha512-Kqsyfqu5jgL/iJa0wU9jeVKZ0t7nL6vXLwu3gVjLgfUE9XUpLI+STD/kzv7vWy8U/fUDB4vEz3fHmgSRZvX7PQ==", + "shasum": "4107db4f6143589527433382b6c9042b0a750641", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.463.tgz", + "fileCount": 3, + "unpackedSize": 390825, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJduiLQCRA9TVsSAnZWagAA0YgP/i7CnO4nkDsyGss+oKXQ\nqOVnsow1xALwB156ZEThI26yEjl6ko5OlEm4M4CLb/7ujTVTCWT5fp3G+/V8\neXCQwkU6XVs+nynQ1EUC+yBJhlyyFRKWpmRc7S1Y5wh3SqRGarsVxCR18uaB\nILKVeuvGhJDReoUuiu13BfVf13DPRksMH0aYCihiDBSJOWU2hFWOJe7E5IdG\nd1709mYq0wgs43+9d6rDoR+M7hwOKH7K3xsmV3+6SoZ/gMsNyjUH94gYoivj\nd8PdUEqn36C3hMb1uOQqrqby0ALorVr/C07Hs5gg+Ka7ZjXIqS+z4WwEquMJ\nlKfDZUt/0yc0ydTFLbae7NcersL+HRZ3i47EEhXoZxB89zIDjqfyf3Lzxiqq\nX0N16z1Y351tF9g/atB+Y56wSLOBJotYrX1UdoshwOQbcKXu4hfkb3Dn55Yk\nMzUWvoDCzIQv12jvbjG1qB70oLMb2T/kkGfEP76/J52EPuz7F6cLvDEVKCS2\nLjpjnBRkFHhKrofm+d2Qo9qhfLi31xC6ydb0B9+G3wh9t8rqJvvk5G6+52CC\nWsQ4rFN45qx9J5YgTAegXcU4K20bh3gIUZpZJS3tRZIMfmB4XEMcrT/t8rlX\nSDO/bdpqboquOGS7npkerbV50KHzTkx+aCewIUDUDJyBEWdQOK3z1TJoigfs\nsmdS\r\n=w8J1\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEamaQqdGCZUmXA+naBy3TmpwJGJBHTPWec7s3qMUGniAiEAp56lgzS9YtVakIL/heB/tzSoojyHYL30aLrBCF2dhtM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.463_1572479695218_0.08589249253221243" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.464": { + "name": "types-registry", + "version": "0.1.464", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "687f7d7cc19a98c29883832ded64cc80f9ca6098c3cec057427a1090a02520f1", + "_id": "types-registry@0.1.464", + "dist": { + "integrity": "sha512-pLv8t0JPPNS3aV2El473XAljrpFLx0Qxo+87Pnh46qlkjX8k01lsbXXRG6O6XFQ4qqaN4xN8AVhhqXN8LxBZTw==", + "shasum": "fc5c5c1c75b06f1a4ea96e823b31c81fba12abc3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.464.tgz", + "fileCount": 3, + "unpackedSize": 386616, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdw2FJCRA9TVsSAnZWagAAaGgQAJ3TflX1rBx2VhztcfKW\n5O3N1gP9ORKP5Zf6VNLKk1Rc9ZEl22MnVOACO46Tepnj6FxIGV+nTwM3SD3+\nSOV+FmUV3JEBmIMwyQ3aba9CBaKa4rRsphUKNvARw1ElLeogtNldeOQg+BK1\ne63+Ju2Rj0QuRbB/c9iH7zP8whaLlZDabZH1gduGbJwkRVNEj5mL265E20Xf\nrJX4V+vyOb/Gbz6PmESZu2gj/rrX9UWb1UcwDbsGBfodl6EDUTmyP/eFBylN\nS7gmvwYPZhnBqTTEEUtEgMeAfTRqBWX+ogD02ciSrfB3dZDHtDnnGSDmzvsS\ncDVgJbJLXmfHV1dWfs7L49H0BjubUj8AxDSnq4JtHS9wvN/uVBmKSEafB+F7\nMIqkuULjZHC7ZcQSi5ZdYkicUHuaH+ZpV9LcjcpFCg39k7ZoTJl6vPsV4BZV\npDk3BjIEylk+4S+RMZv+ipbbHaewL2DMDWDz2udRvN9c/W9z2bb+v/SXD6AG\nXk4yrlth2hBAhCvlXGJCqIj19Jh4oTZpEmYPHKIqbmlHy2d6PEhFtRFs1eUQ\npGUPJS1j0faWgUImTDLXYIEBRNUcmRzLcLoq5XX2qm05L8VvANKPcPeOKuha\n2vHOmA6+Mr7UlgIsAAl+b+3TaGzOs0QqLugGhHJdbFytJpTb1m6jwtzi9iR4\nzhPk\r\n=cANh\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA2zI7eBtva6VvbNbyPtsO/7Uoy/FoFdSiYsTvgxHHV5AiEAz1JCNMfbsrR/r0ffq1kaB3LL9Mk/KgzhMV98WZXdjpM=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.464_1573085512547_0.03190781182163005" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.465": { + "name": "types-registry", + "version": "0.1.465", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "faaaa55c502edc139e0ed2b0a7ba6be98a36d17ade4ba3ca3340276e8fd13d64", + "_id": "types-registry@0.1.465", + "dist": { + "integrity": "sha512-huZMcX2ZsVFdw2toI7bKwNzFRpskG5QshowVShiZ+Aes0vj9MJVhBtxJtBov2nfLfcA64QbqIim9UtZ/Dteicg==", + "shasum": "b9737c70dcfab890c421c3ca279aa50925cffb2b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.465.tgz", + "fileCount": 3, + "unpackedSize": 390771, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzJzYCRA9TVsSAnZWagAAFXYQAJLh24PrzfOTw3cudPhK\n2dQzSk7o0SsZYFqEneh8fv8w5XYVF5VUxtiq+eKS7hFo3uNmux9lqMVr32uf\n1m0PENKCQnzILdoh9wSfDeKWxmV20fGreWDWpK/Tq/6AtKHpAceCXlpfPLr8\nMaIwF8QrQFmRsi9XwbwHdKdzC0Ma1gM7SuBgrmzQQUTHc7lvW3zki+G6S2tr\nD0uEJNISFRznRrZREaalT0zXmKv35D/g8IEyo2/4aYGWzClIWOySpeW7gWyU\n5L1rmg9Xt2VSjlbZvPnMWyKfuMLGeq2xFRJyK/QYXmiIc3waM4LJnKKm5LG8\nH39SinsEYCdF1TogrLhD2i0VS9TSLnbUZ4mAFToHsbpxJQOp0yANNSOW8fxI\npoAELAx8SsbZ1zKrsmx8z914wmfcr55nf9apY7Q5x5/Ozeb1hzGTAWgTP1dH\n6I81hikhifHr/48viqHtwCPhFljghekTe4dAZJWEouEevRcgRbVHPbxn5HGG\njuT04fQ2jk/B9KhngSsbGfXXoLePF8XX4cmbsV2zyndToCebKP94FLxylVrN\nVM8u2F5WO/6/OrJqNdsZbyFWrYBOQDx2HN3kFJC5heFa+ESixy3LqCA0QsW7\ngvzvEQMz/V97O2SDFBTx9HNz815YjCqPGwt9AFlBknvXLQT3BRR804aNBDru\n/cGh\r\n=JP17\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGoGq/ko6Jc+bSBjzMMzlwZJNTZQB0376ed9M3ofveElAiAaW2OhfGo8CZDxNVzGvQg248mvtMcq+0x1/h2GQygg7Q==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.465_1573690583730_0.031732097891888245" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.466": { + "name": "types-registry", + "version": "0.1.466", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7ea23e8ec55fb7e915d69c4e37a0c52730510a00ed6d4f04b0b4ff535d245809", + "_id": "types-registry@0.1.466", + "dist": { + "integrity": "sha512-6bCx459thM4MrST9xCLRXnE5MK4nYL5mN9XpHsCxzUdAJOs/atzEyl8bJcMY/y8eMb+r2iCl6vlC45PGzpavNA==", + "shasum": "287aaaaf6250483c24e766b44d70e986278fdad3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.466.tgz", + "fileCount": 3, + "unpackedSize": 399130, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1domCRA9TVsSAnZWagAAoD8P/iXoeO92vbsjACM5FauJ\nSm8erbfP6VM1YGeBWp1OHcDQe8muGJyx6eYMNKc48pLDzlDjQhA4nFDLHrha\nYDs8PGTHiBL5ylh5RHoFQyotZt9Z94FjeU88f8BsKYXokITACuPnMY8VVPIX\nu8dq6b0HYGQJ5AtqzN2NcSEBxXVOJkzr+Sto50Rd0IkGKP93chRnowPWI8df\n1EtYgiYuO5JmNR2XcljoafQOUUd3WC3eLL5fiDpzmsU9DGny6OP7ZPTcc+6y\npWU8/MJ0gIlUeDtjr+Cl3FeHBpvMY+uJARSuFJOkqS6ob90kL6UJDbem/DlA\ntF/Zv0Gs0GXZkFihSK5A14kWRLATORB6ulIvU5le9sFpF4kK8Kiy5mC2EBie\nquiTYVWp/AYkZjWqhEfzGvGSedi7T6JKxhzgjiMGh5D0eSlCjT/l3fKoNOm2\nUlxzbpmndSj4lgvh7UKwU9nggDzwj5pnSGZt5ps+I0hzbS4PnsODPEjM6qyW\n34y9vjGZ/Q40jbwG07h4hpGdrS5MdzfZC6II4QZt9vkDu7HwDvqLmFIm8l+4\n3m1/aEqcDiX5rBwImWKRh94I9NwqPaeJ1mI1PQgbD9HmoGExD/FxX2TKUOv9\naUuNROiI4X0hT68qvuQQQKc0q5ptvPWQ3Jj/E+WmBmtjoM/ukmfFqSyEvhUP\nHJxk\r\n=tKRl\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICSKA8Uk9ThzmT+ZjeOYOj+xTk6W3Incs87UXzjWRYzCAiBUGzy7k/ya+Ir1+BRA7KQ76e+ZXWDIuTHFEA7sEh0evw==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.466_1574296102035_0.8475302658948205" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.467": { + "name": "types-registry", + "version": "0.1.467", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7bb4a47a044694deb3e75a60f3491935b1ced28d68e2dc90561acc0975158a50", + "_id": "types-registry@0.1.467", + "dist": { + "integrity": "sha512-hp2e4GUXtSZ1MuN6o0PJfgcs2y8EG48gGwKv6PoBBCEcOAgyjeVWGWf7SzPTOmEhfWMNcsdz2jlntdWnlFI9tA==", + "shasum": "19800d1f0b932cef8b52360d3bdd1259f0338be7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.467.tgz", + "fileCount": 3, + "unpackedSize": 406110, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3xVjCRA9TVsSAnZWagAAdL8P/22iWvO6UbxaIXVNyrkP\nrTSeCIt7YC3KQOmBGqP6sWkU4fO4G3lwR2A+JjiVoT5BMA79lHjP38HjIiK3\nQUP21IdaGC7UsWI5B1W1AqjraXFMtPtZ0ezJR44wWixKKPpgDZw8rysAZi89\nnTsJBG/FTJ7ipYHPKJ4ACIwtSVVnXrYxNkFdonQ8mlSBhGJaXSXgrJn+3IM0\ny2iwhKs0vDDM/LH4jHh/u0JwRM21XypBWOIhErBrKrywCg+vnZFU908xApHX\nGWnaFf+5+VEmBFvrXrMk/lZeKbjZe6va8qIdZRFQDEH1lmbIQpDirPejwEEY\nax0D3kYfPCGBH1Pq4h1jusyxn6jcLqSmcwGb3dVMlcCxqPIqJq+2OLy772eW\ngDE6FsU66mUDpjhB8T6wEbzgwedyPCOLVfvmX4J/AM75906DDAgSvMcxuUoW\nrB2UHhg1aKcQhdwVX0UOMxo7FFeeZfQGyu7zDfDnqY1oUkb4Rq/GYUcdfbcu\nzZTf9T3QFN/0KwBrVnlXdIDFs057+n9aGwSz+5lCc4h2WHjBS9tQkTTljHQI\nXHefdctZyRslu4Ealk1oYooX0XVkc8lMYkNRl+wEMlwFNpFK1qre6HYHZyAt\n+LwLowgJyATB0mF3VHPm9HgdjPIMKyfNX5EDRN3RuMXxtHDFImyIKBCscImf\nq8EX\r\n=mO4F\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCIDA2G8WOhvQColOshT9dizTsPKXYFIzPW9BfQzxjasgIhAIBpNi40xJFY53zxZLNDDYs1zv7JGEJnpR66LJbI/b4V" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.467_1574901090525_0.946556254462217" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.468": { + "name": "types-registry", + "version": "0.1.468", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6bcf06522f3708b6c053e100827512356bf1dc15590abc00a1828e939e41b8b4", + "_id": "types-registry@0.1.468", + "dist": { + "integrity": "sha512-tE5/MWlAE6W+clMs5n4LAYS/K3XmPAR8ISHsLZDyPjUxR524zgpcRdluoYeRC2RnJ3of7J4ZJX7THZNEHK8aiA==", + "shasum": "78db1e79e99755b48ed9b9ed5be4ddf6add1846a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.468.tgz", + "fileCount": 3, + "unpackedSize": 407509, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd6FL5CRA9TVsSAnZWagAASn8P/jrA1R6vf3rrZRRNHAtm\nzS/4UNc84S3K7qd/k0i4uqk3c2riaR6A54OflevGcVrlvtSNRDk8DDzFkBPh\nv213DGeeDukock+fJq3jQ6LQ/sjTaRtGRUs3wlKHuPV4QOqV6UnzXz3LnxzD\nZNZdnpYhv1QZNVyULBUYxvIvJX93FhgiG4avaeCBHnpEFaEJRjhjuTJeWYOC\nh8PgpzM4g5N1tOI2uVeGoq+H3VsabK3QDiAx5nEAcf7v2tPorI7qjeHjSgCc\n9mSMXlxr73Q+laKElduED2JSUlWHG+cWrM74Pi/lEzQj449XH2OdNqSisFY4\nmE2Xpz9wR3iNomfLDAa3AnNQa9X/j0z9FNYWTaAKWksFKWZiyJaP92D/hbtF\nen5Xk4mZF7lB3OxVAJ6YHkz4/X7ISjGDpk8SRN963Pfdku2DWzmdkaRvDk8F\n1DUJ2MZV2XWrA5e5qx7DcH2fvkAF+NzIWOMsS7iQNGYaV3AkmaiM3XwXNmhL\nod/VA+2DOPBirHk9+rPkAe0/7QfswCnrb0eXyh/2P4Lz9/WQSnpmz/L+Qx1i\n5soVEX5VOen+IJAopGMzJg1YXJ2x18hUH3ahG9XmnQ/vMCwFm+PrM1tW5PBy\noXeicopX63kD7mp6yceBY+nWPqOfH5O63neXxDZ5hjVLUDqKbNQULJ88hI1E\n0shd\r\n=EwKS\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDDHkb5oX3rgnyvfaONimz7A5ATS/oI/ORMBOVc+dZnZQIgdkbMmElgsVUhqWIEB9ZaK4ugIIZ7QI5n/3H5UpncijY=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.468_1575506681168_0.2040777573495356" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.469": { + "name": "types-registry", + "version": "0.1.469", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "baf77a776c31186f73dbb0fdf26ab7831bf7e6595f12e8471e8166576b45e61f", + "_id": "types-registry@0.1.469", + "dist": { + "integrity": "sha512-1W19pBJh0ovCum5zMk/c9Pgu0wx6DBCuFeyGVYfeL3d6UORm+ScTOyv5LNXQ6i6NOi8sZLznQmR7UvDUc3e2Ag==", + "shasum": "8e4a642e0ec3d76b36e71224cec2162febffb0f3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.469.tgz", + "fileCount": 3, + "unpackedSize": 410565, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8ZEnCRA9TVsSAnZWagAApB0P/idco2yvzuX8TrZiqVBo\nGE5QlX5MGk9Mk76PDyzYKP0N1/C3fi8fOs1ff4Mo3/FCVqTR9GlME+Q8F1sX\nl0Gra5lisM7j0TNu2Fy9RRiR6p1SYjJ7iUk5CbNxXlm/O/i9PPS81oCY9rMq\nabr7LnOjDnCLxaqrVMgktXmbVJkDb9CtIx9CC57cnr1wUW7QfN19YXDp6Jlf\nL6S33EnOxlcRqb92lLT2LxPdyUueCnDi61FWTqcA/OrG/Kw9H6sBsgqwrVtY\nreBrYdY+3uNrVyYi7sWooKUw5tFma6puA5Co6GqQaxIRsfY8w0xvvCotXdhq\nanWmaU71TAoHBIIUujiDhX8CmSsn9OmHomFFJGNd1sdaFq2lfoSERbpkCVBD\n3YCdyMUROgTbuBAyG2bVkMqq8xA7uFoHg0d2WnUMGU/WPbmSSa3bRFlcexEY\nhR6Y81BP+S+jLBsirU2zGf6BD5Xc6co3idoYRSveRwfiKSVLSVLqx/9FOWDa\nOt6meYO7vXGMpqcbHtcSxurxLaVxLNGO/fYeoi7u3Z637kzv21Z7KIBCjw2b\n+UrIOKOwwM4mfaHMkY2LFiSBc7d/wENKf3HCtpGJ+QPjy7I7/H/y0qZ4WzFT\nYR00MrPL28ieDJ4XRfUXwarrhiQFwI2HA8LIR1i0yXH3uiuVP7QQvAyKVaYZ\nbLvT\r\n=2k6O\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDJxYCRvVek0bv0r/PM28hIx1ycVaA7TlVPX3G5ZDdWwAIhAJdezA0HAFWssJxMiE9N7/XZEu6uPP176+WdOn9APdC9" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.469_1576112422535_0.47286441976854166" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.470": { + "name": "types-registry", + "version": "0.1.470", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f53729d5f0c0f6463a5a0f09748854aa0a6ff4cf93d83c4824887548ad048be9", + "_id": "types-registry@0.1.470", + "dist": { + "integrity": "sha512-qG5LIrEXB3DtRoJ9LCzUDVSDI2nEVnDxEL2NuRiRtRBNZgerwbQaSDsLQgJNdNqZRbleeyhoKMSO1GFrdKjzmQ==", + "shasum": "51e6ec6ee5c16e00807862eb98cebf040f881a87", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.470.tgz", + "fileCount": 3, + "unpackedSize": 413768, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+tPoCRA9TVsSAnZWagAA4oAQAJ1gJtVVh5QUuZy4WwW5\nRC8PBDIkO8b35BA8mfwkf39VPpshDVheJgZBaLc7NvtCrT+yStmqTtUI4oPq\nBSr4lTPvJfsCC1IZDcgrHhGUbCf2RqOq+lENysUIV0cmEsP0Eb5lB7Y9qhJG\nNatyU8yBbPn82eYmsCvL42G1gICZYJLGB8jHoF3fC6zOXIX3Kcn/QYCMJ+Ug\nvOIYSoL8v60WhtgGn0MPECqNCVuFusIs3r2Mr338ZlTr8rNrccjynsM9eexj\nF0ICVW3FTvxDN1KzmyXn/4fPsLN78au0y8kyjZSWkYcCyqLS0PNNfwVOSEpl\nBIMqzD0Ee+HFjYaejWRndVz4GXqEne3PHq+s1IHRivZSx5kdlx1FteEJsm8p\nyhJSYyMUkEy4AQ1/p9Xu6hichiCahFJXhqGUoBZUWsgDbCIdyiQ1klnKheou\n4D8xAamGnptgo9waoiHB25fcPZzEbeJcKlB5MOQx6yLIy3AlOeEtSFCCJ//L\nDqPtbhYCVYGwk45eJsXPYc6NgzmUylcTZ1cB7jUY6NeftibX7PR8GblR56tp\nn30r5j4UZFBiSK4fs21oUtzw55uP+JGcm+w75qC9zNY9cwrZBBXffnfxvJxS\nMira4i9kXYRn7b9BoCpKmjqO9tyDb4NMoKHO/CzjnssYAwyD1QdymGHxHsUw\nL7vI\r\n=32mN\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGjcjx0fN8fAXZkUKNTw7U0MXiJ0coDELjX0KCb8ISX7AiAcw3/lQVrAyDjctlVijNct6u4YvGN4vi5bE0VkA7vq6w==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.470_1576719335834_0.8762137970161001" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.471": { + "name": "types-registry", + "version": "0.1.471", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d408e854423745ccff8c6fcd6e29955424b4a2a55360e5c5691896f17e4b267c", + "_id": "types-registry@0.1.471", + "dist": { + "integrity": "sha512-4CitLHazQmvG+uMYkGcx7Ee4oARATJfK62Jsxn/9dSpH8dV/J9ADjlY70YaepZmmpuPkoC7a9NRfTVZ3qm82VQ==", + "shasum": "a4ada3e01110f1c2f9eb2ce6a0251fb1607ee288", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.471.tgz", + "fileCount": 3, + "unpackedSize": 419933, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeBBWdCRA9TVsSAnZWagAAywwP/iLHsSJ2iSTPj7SOvK/5\nDWQkxc2TMjaYYXBVzDvArOtkb81UVX1NkfKKG4jFxql74Mre5Ac4WecxC20w\n5r2Jr2fxsWh+QWQrw+hRKQJQTOlByBPlHLxS0/OsSbvJ/R8PQ0t1PEbEXb45\naB/sKma+sGsDzRV6AfWvy1wE/7PPXK5WJNCr3yjWZGk7F6vPm/rdETLNQ1hX\npsQ2Ea4sAdxsUufJILYR7Anj7OCvbmUxvZOJwW2CwfriAj+WXCVp/iOiwY13\nXqKVLc7LGKiRqYTwTFykdW985w4JlJ4mxkn4P3J8YgHF85I/S1nbxho2EUYg\nUSVdRt/3RjQlxsY+6zfmWpaIeqY26uzBTb0+Ozefz1DUSxZ8ry9msOuG0RYD\nX43Zf+JJE66sxhO4fYShKFr9n43QPRrvKASBdkrhtoG5pogSDLlc/gN2Raog\nANsy8pLHQF+Pv5jv43TCx9OVxbA7POn9cYQPBWvg5dEnJUaB7fTd1jj1sllt\nlcY0bLvx0F8+Zw+1RfG0WX4S9uSpkZZ8zpZ8CFsLbUbKyJbTTG2lb+Ut9xxp\n7tHPA9+VoIMT7jSo6oshfa76nYrHIwuS2YfoaDHqtDpTsKzajW6XsZL/dSYm\nOuxBTfnNKMIj5dm7FRdeHWmDaztNKDdWkXE2zLcbqcvybHfNqU7DBDkVXTp2\nRMT9\r\n=o8rr\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDcEjkadAPOuxvtjwTySE+gaPXIaJwxju38DuY3flN4IAiBxgAH0OlbHSSKBYpuVUVCxZLghvVOMYSV5bCkFRcRn4Q==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.471_1577325980395_0.00366778785762345" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.472": { + "name": "types-registry", + "version": "0.1.472", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5cc5841de145e0ff843e20324c674632a04c0fd3b928224c4896651a6994f012", + "_id": "types-registry@0.1.472", + "dist": { + "integrity": "sha512-B9g+Kao76abyqwFi2O3Zsi+x9d1ZxKzmhHr3qNoF/x6LwCMVp4gO8jZWQF5oavXLu6B3/AYUQA/oor8WVxqujw==", + "shasum": "533edcc8673a27b86153b287d744109caa09ddcd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.472.tgz", + "fileCount": 3, + "unpackedSize": 422872, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeDVefCRA9TVsSAnZWagAAFh4P/Ag9xb+Mxy3SmNqsDEFh\nT5AY8TvPz7GFN6j+czHtTMlr7tel6QUUxNfJrHJ2419tr/lhvWdPLxHBxzDD\nJd40LL3tbhog5ZMPNhkkrmCyZmaj30eR3J1jNRPm8n6Uk8Op+Smdrw8CmFCt\n33qQOlAPhhWtcY5w3ZyFnEEl5yl/0zMQvxzhlditkqbc9fPN3RxjUXainUKu\nU62OzN49zRFTMvtB7q3WdVdG1YTva+k52Sp7Fu3JaXu6EkKVpn05EEL/wXVM\nSulZ7U1WGSlddAMEAyMu539rDRjeze62wyonQVt9pQ4gRASnSggAjSoOLoDJ\nA9VE0lOWYWfWmhLwg/WT6hgWParVsLeclZkvlS5K/4EfQ2CxVDWv9GveCE6d\nesJ82Rusg7FHvjzN3EkcVRt+qCX/LPBpbRA2e8HJ19TKDvEuf8FJQ+H003BT\nkQ8npZBC7mHWIeGc20vWS0Q2toO5vVl9kwp61tBzP+Fx50AFEZpMmcyTJ8iW\nlD4uJa5BAlqhn6AGfxk5ToEGRc1Fi6xvse/nnYJoeBS1dS7VtPjh2bcn/4xK\nC6ExRNgTJMuY++eSi6V3zUyifeckUG9EtAE49OcQc6bqLOQEY3WPjRK7efzs\nltaE/f/hjxBCf2FqLlcdBSU/YOoVgx2Cww/0BFyHJlBTZwy/eJ7w8/4s4CiT\nJw3e\r\n=wlLG\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDQHVzMiqgEERJsQEbeGqel39rA38P/QVk60T8uZZO+WAiEAuQny6d8sjEUNLJkOTJMgXTviN+I5f9paSfHbTJbS4qs=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.472_1577932702942_0.39695341438625675" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.473": { + "name": "types-registry", + "version": "0.1.473", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "cc9ff81fb79af09127948ee08b5aa1de8d05d7c3ceba65ad15734a89e8387df6", + "_id": "types-registry@0.1.473", + "dist": { + "integrity": "sha512-+sOoT2eYtdUzPSJCYsvnNYYdcJ7i7eGDiZKIyxX+doaMADfbutVGwf4X5699RfloAcy2EttnD2x+aTqkzyR5PQ==", + "shasum": "c03f510ff6c83b0bf538f4b51a808ef9c71dfd9f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.473.tgz", + "fileCount": 3, + "unpackedSize": 427983, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeFpUxCRA9TVsSAnZWagAAsrAP/ihVSqT76fefEuByO6gS\njkYh1WxI9O/cAZN0MnCQEGCf9lyC5RslCQCUCGUJ61YrEMVaMSCjbjEDEXhy\njohbo/4sUVXLctXPgXNwAo/TG9LnQupqtG+GBJgzMEGajw/lASZFuQwiNZXS\nQkNSfGEg6BQi6qQzJMwyso97mqXV30ekQgFXBSlxqvUd4FmCuwlAZldKQoVI\npXJPN0+A/EdH2N6bBjRJvoY82wfrhDl0QZCIjUYqPGfYI/scA5RPq3AiMJG6\n+Cfr0jkPFJ9t1NUAJRenxyE2ZGWhkYE0X0+Uuec9gxl2WV+M0zr62ZlfgH4x\nTtExgo/fzLHOhvqK6ZHhFgGvNc6Y6iejE9FDozcY7gjvBAZhaAYrB3Lx/PdN\nY7Ecuz/60dHA5pMBHQfAx7tCW5tdd1h+7vWl76XVBFzNl6/NyfQvNnAgjC3o\nuXRaT1LXSjQhJ2waSa0yESqQV6s868ylebmhtJ5swKvgdvZu2BIT6omag984\nRi/EbiW0FjZtH4QdKJpzXYOkVzkG8T/nuJVvDaSAB3lVDDUYyPQs5Ok8tvMg\nJv12ELFFEAMDbOoNF+KEmpms0VGoaQ2DlJPwCZ6n/rpjqv0eV11hxso4fWA7\n0NurQa7skXRoLJ7nkopq+2cfq+wV6kZ6hR/B+0v8ssnNby3WwxRp03ntsRVK\nykxw\r\n=/SEb\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDiZ1v0grOdWog/Cyn/LEkoSuv98bLDVEX6aisLDHdzaAiEA6NjKVfrkW1uhQAvbhCrNiWV++tInLtFzrlt9blol/4U=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.473_1578538289291_0.848631796110977" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.474": { + "name": "types-registry", + "version": "0.1.474", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "48fa4a4edf2038d1adc346e6889e597e87eb48f7c033ec53d6cc23c8631d52bc", + "_id": "types-registry@0.1.474", + "dist": { + "integrity": "sha512-XSt7SQAHi6mXrvg04q3+IH440x4YjbeJi555kxU30r5zJZdT7E0VpVYBDN0GpUfZd2AZt1FIwpHRx7kZT2y3sw==", + "shasum": "e4ffcd049e434cf272b802e78d7a945f2576d3ed", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.474.tgz", + "fileCount": 3, + "unpackedSize": 429783, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeH9NNCRA9TVsSAnZWagAAu5cP/1imTNzP4vUC6QfH6q5Y\nGZ6RC+hEBvnBh9TeGxwDYDuGQKuGIG+O+/AcIaUqWSWlxVth/+lUxwWIjtCf\nbnNqJ0FNIHr7Ljdnp3nhp4pYRPxraPWuaV+HOQcupeRDpzFh1Z0Pbl3+pSc3\nql8VTo1QGCpeDMrJe7vujhCJ5V91bLQm9TO8MshpRVafEhuqMLRK/11rnNIo\nZnyO0pbDrL5vObK4rnPG5+5m1E7jtn3uh6JDPuApOcQZu5m36sLz3X/cbu4x\nK7zEq799IDDrNkr16NRTLgCSFSLXxP+Mf444sBhqGF2NmDxFCI87aVyY2Rma\n96577Yzf0wdLUEbGlkycLA/wB+i8Fiw8cHdXAyZmdbYUOVAEFc7nV2sutjZG\nLhM4+ff5HreQ1VycCAaQniiq2+W5LfSBIJGtHhToKxDKaXJs89vTj0ClKIgO\n7S0pQc7rq7WEzuwH/CWQInWadUVrmFFA8EJBVGkOFPvC7kCF7WE8wkvnwL8S\n5EJdhx//mprykxpFx55rv/8+Hc3kmTAqqpzZ3O7Bev30Xrg6Po8f7qbuJgHK\nToLeLRJtIcaEDM19oDAk1107eRzR3QdU5Fc8m22LC1cseGRUc2iJ9vysLSGg\n1wTEYzP1po26hSnffP2D1+M6npEMYzFWBu5FmyfGrUp41FvlaJ4PIfVezXYe\n/OWX\r\n=pkJ1\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCp5yoDmbGxy3AlVeniZRCbdIjtomxji2k7R87UV2ULwwIgC+aNKwmSI1XCEnB5+LXj9njWGu5ZISspRBBJUY2B/nk=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.474_1579144012788_0.6140577742214808" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.475": { + "name": "types-registry", + "version": "0.1.475", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2e0bc01055a31aa5b1d722d5c08b1e86ee2a3a74780b8b7e108dd348f3415386", + "_id": "types-registry@0.1.475", + "dist": { + "integrity": "sha512-KSBoeGQoQjP2wuPDMDGsf0CF1VSxAM1uHswBQ0nw219BX0o1kScnPjffBPN5w/b6gahmlwFMyD39GYvSMQEDEg==", + "shasum": "1fa6533246f6611e3f321aaa1524b1170123ea8c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.475.tgz", + "fileCount": 3, + "unpackedSize": 434158, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeKRX7CRA9TVsSAnZWagAAvmYQAJ7jc+WTE7/L7tGAtLfB\nmLBWD5s0FTqi2vNIxIjJ5grlP1sIVcoiEoQBE5VRHtRjsZaeG6eEWJSs5kvN\nTmf+QzPXo0/MWFBgeSyLZLWhbTGNDLjk8A6SanIWKLNHoKDWc64PuOA39khJ\n2hIX9dDRX5+cmkC5wMBZpSvaxr7A/zOl4bWZ4M7T8ijewje1RIAliPI9R+eS\nnHJGiYD5k6EVNz0NjP7CSJJ8LHXQJ3dEB1o0xdjSi9fI2vlgz8G3VKOB7QPf\nzf8c1nzeH6CWZNEWWrjyqBn87k+z5TytiaAGe1kUvvQO12IWaACdeRycCy87\nxyhE4ZHZJjWxEt+H268o0rxnksTvsWf5Z41BRn3lyA+2n2rOQZW6VGMFd3vT\nVoiD5RO/XsXaSWLmqxXNRuMME4SRwZkFhnT7WpWUYA7eTwjr5Y4k8RqvgM/Z\nXxpNzS8K5TV/kSG6l4UnHwzDyR02Ow7OgJTydA9gy+nScaUKe5Q5AyllptMQ\nf6eCd5rFOIjJqv5r9FoCIuvtuH9UOtmkzrlfqtjJnLG+5C6gH4mtAkfa+bhe\nA0DoiS5ajxsIm0Yq3gSkJ+jsLtUmh68QrFkaTk5xpvHFt4q16JM0aQn3xGd6\nfGfuitiGY4LdqdcVil/V81XKXxQUJUNo1rJt74viFzPf6atVqwVvhaBLpmqR\ni6Sp\r\n=GRAw\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHA+M3+Vt0MvJmjVJWgARPXsXLzicSgXbAiNFUpijYyiAiBTBy0mHE2Hb/MC8vE5kU9yFq3JLTagO+hvHSUgQXlXSQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.475_1579750906508_0.7222385022437887" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.476": { + "name": "types-registry", + "version": "0.1.476", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b5274309a17b2c3699e7f56c6496d30d857dd0209f4387c76f84917d5d809d05", + "_id": "types-registry@0.1.476", + "dist": { + "integrity": "sha512-ySq3drRhIvrsg89lqTh8JfeC4dV07JDXX/3UIfP9GhmRmxfyPwCSjTPS/WfLxnnxcx/NJnSHMKkKs3KB2KA/3w==", + "shasum": "375d7e025a7e82d9198bcf71b3726ca1817588bc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.476.tgz", + "fileCount": 3, + "unpackedSize": 437762, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeMwYbCRA9TVsSAnZWagAAOIcQAKNcS1azJs6VJslIb8PZ\ntFBALjLUGrv2PSpXWZo78dk5S7N7nse3VnGxilfI4cM7IWBW+0mE2h0hvA9G\nKEaVK8MGaBI762IBaktj1rpEiUPjihLznR9AxhiE/vGpbFm0ST97+do9x01D\n3npksyX8uicR9laO+McnfNFikmWIH8yvp5FumgdjawnrsRCZuYCsk2VnXEsv\n0Sb9IKIAA0xzn1nXmtJykRVtxEg4uXOLhpVdvO8T/x5RfiRF1cX4kKYtNNkS\n7nIXmTzDKrsV9ZE6FEcV1luSH1IbEtC6XC235OihYg6NUg4vl59ZvMUdySib\nITur2EZ9SGVYZbIH6ZUHfYZPY5l/otD/tT6/Wrx78FkOYgS60n9qds8QQNuO\nGD9m0ojwelBUbj9peLVs5KnzmmoarUUlnU7PlO/dHsrlouGTT3IVST4hC0jt\nzZUe+Xy3LFceGOTPrLqYxD+trXTpAFpNnxxJaCG1Y+OGJ3hrByO3TjY4DphZ\nm9U5TxdjK1GDqCFGKHOZNzDRAig6/uS974Lr1EptK9bhyOcqMcrzBQLw7oZf\npFOF73C5k+IZiW/m2ZGIEq/GGWEwGdA8MsQvKs/fdxgr8f4azvYHhEF0X+xu\nkomg6zCizYVX8Ml3jdkUADR4L81dh20owzrp9Y/pg241sTA0z7S7MWj8GTrm\n1yRe\r\n=1kxi\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCbbcEsbfUh5bFXq8pic3172JPmdiXP3+LKNoFdgxn9vwIgdxvn+HHepF+5lWqiP8aDidE9iXVloiqZ8dDguCmeIhI=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.476_1580402202623_0.3964578058440116" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.477": { + "name": "types-registry", + "version": "0.1.477", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3fcb129af1bb357edeafcdbc7c108bcd54f0cd583414f2ffe681eb24f744b36a", + "_id": "types-registry@0.1.477", + "dist": { + "integrity": "sha512-gG1xs2967dUul6NwWT+HySXa4ktw3UfBKGLD7S4tvdw2VXuq2dvJ34sd+36G4jB4LH+jPztYgmJyJ7sjJXuLLg==", + "shasum": "edb1346c5c1abc5feccbc590da919d78edd8f8fc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.477.tgz", + "fileCount": 3, + "unpackedSize": 442202, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJePEEuCRA9TVsSAnZWagAA9y4P/iVswssye3yiO0ydiXvm\nNkzuIAPzFQ2Wz2vDmwurjoHedkAGvCCjKITZOB1t9U4peL9rRuEOFyq/jr1H\nArJ0KnImHqsMDgbrzsyuPPZf2IFhb8N+1SzHwYS1Mt5b3/8hFu020A7A1r+G\nTxfGULxRSLaQjT8LusT04kgDJu84DkzBryiceq39XJtlrW+RAN4Mbiq0Stcx\n9C5wpjrCiqegu+/hJ1zw55gzr1SrN/uV3gDPjDKQswcAY/SFyO/jZAY+VWev\nQkQij6rDPG1rvj2L/ZlUd0NNJXcIbkyNnZUaxtBZX3yTpH3t2+YK41xgLAU1\nbpcoBXl23QuqtYdgUa0t9Ky6kvklrl9XrL2FiOIxQvrLnsb33bDQ4XRmx7vG\nHUWtZOr/Q/Z+Q06o9kuG/rB9ZlXH2gwkEAtoGTRMADm8+MJz4MVxE/HdvoqJ\nIenkpfYtjYgwJ/BoK7yd0DP6JhG3kaf36GRLA/IhXMfLp53WeWlGyB2I2Vw0\nkN1Xe6o7mXMVel/MQlKt0fuMYJASC/uuGS1LUFaAZH/m/Rp052cyRHdb7akK\n/c9Svp56G7F2CpRZWzmTRxE9dFzTFZdLojtCtgDeq9epqhQLyN51kqDwh8v0\nMo/RMJ3ZRjijeWViJpF1xNzF0+R/PkmxvT/Y43o5RtWNt5cKfK/r1SwoEivd\nwyAG\r\n=xSda\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGCBJMbgs6i0D97cfZiRfSvpgx5DolNrnlAQnYH+lJTZAiBSaBay11z00sddXnM5Zh1+4sEZrHzcEBdxYkI9xWz5aQ==" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.477_1581007149901_0.47380562121422454" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.478": { + "name": "types-registry", + "version": "0.1.478", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1154f0ba4d92518ad03162d03af9e53b12a346291da06846f6e8ed379ac67790", + "_id": "types-registry@0.1.478", + "dist": { + "integrity": "sha512-j6epHSvz55IVXWr8JSSWQehQH/35SWtZPadtCwNGUAWVg+67lHfgMtb+cw8m+C+4btrz5Cp0WnPaSvPj59Lb0w==", + "shasum": "d0a174c8ddd5246d2a06805f12e5d24f60ea4d1c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.478.tgz", + "fileCount": 3, + "unpackedSize": 449582, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRX3SCRA9TVsSAnZWagAAAHEP+wTrZOx8z8WP1GeO/wI9\nCMrts1TLaVeg5WbeTtNaX+A+Qa/mTfNam9V+DmC3KVXLBsibL7P6sAlM0Ayz\nZtLMeJANJy5DYN3qIwr5mi9qvtS0OG3Sv41OO+vBH8jQlRgI0ByiFSHFk0lQ\nYRxBpbetfGgWakZOLGY0LB9AngY8J5nyw5AD03cEpERNghOgczs6bElA0PzF\nlZ+LCWBOlJK5uDnzGiXeEzbGnI7EIZiX4UVwa4Pzbbf5mBe4thm7Qif8XMyN\nKije3Xj5+f0FP9t5KTeBBheD294TRcK9UbANaAlXpbyA4cu7pyMv2Eg4DSKe\nLdvyS2wta3LAb4J26FF6CMrxkqMaWE0aDEphMO5t2JfqRq0DBHKD4Tkqzx2j\ng6i4hTB6ahZSeIsa1N+Lou+IVRhgbny83fvperYPoAX2axMPNKTVcGJbLZfx\nWLw2Sj6bgBIctsTk8mT9wQnc0KM14B4HRpL3Z6cs7+wQfG1aUvxMK+vyb54p\nJ/M94lFjKDYl2TqkxtgMobVxN2fUwczsgBZha5D4D791buxepnyJO4/Yov/k\nTl6YLiehjwehWf5fS8Qxx5wbAo8V0BY5dQer20AjZDF4gZQId2RpjZtxHXlX\naPlZ8eUlWBobOsqyrDnImmfzmAEU2ZXWZ1rd3XTye/FNheuEpSwkhKf1B1Io\n9iFJ\r\n=Oteb\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD2ff66hQP8FG3RxJtn4X5giGsKF9YtTKlHtqKfkentJgIhAMzwmHzwADdVkbSOc1GdUw0skrK7S8NAGswudw2quXHf" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.478_1581612497817_0.4051587428136969" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.479": { + "name": "types-registry", + "version": "0.1.479", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e1874a564cc481cfdf24ec40445f078e111868d5edff983fcb54fad5451481b0", + "_id": "types-registry@0.1.479", + "dist": { + "integrity": "sha512-jER2PTEGYYB58z/LS7aX9ybzW9Tm1fbvTVfEWNKIqJB9EDIRaKMKLjHz0wihY/5zCng3inA0BdwZA1SO/Cz8nQ==", + "shasum": "7dba9067c9716aa08d56ead22d1bf1757f1eeed8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.479.tgz", + "fileCount": 3, + "unpackedSize": 453449, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTrtrCRA9TVsSAnZWagAAKE0P/2o+j5xHzJ5uc9CKABfu\najOpZQ6p+MF1U/GrTOR+QyUckR/7b8CRk6EQvfRTKS8VScrmPQSO7Wwf6eiB\nZ0r1ropsvplWezrvj0Ojn2x5M3nr9pP+mmYXlzj80iZ5vuYvIbHyfYxd7kXU\nMCC/XiopQIi5f/2DRFRLywNdFpd+JSYQgS8a/upFWatP8UX++SWq4dYRN/yx\nZKmJ2xa8HQ1uj/Q8GLSlYQlwoyK6V0ukIY6vKvm0Am4MEn+ed0JmW+uRn+HY\n5f9qPZKYAgGh89FJrRZtM3OfzSL3NaNtlimQCwWrIgQMazr8RPKJK9tTUJ86\ngnJNNzSa7P497xJlSdKSUS3XmA/tgw2F/vsCiSAG8csbLw/C/yvdseMdWuVE\nnI8eyh2fTJoaNJmzwFVFDrm/Bl1ECh25aEsXMS0Ay0z5+psS9DxYtGeoj20v\nwZ9F3/EhnqAR318grhGWL+6EIw0JARDmraAumxlNQAjgp3ZXpBbaABMRAH9C\nbQAx7XR/q2/GuStSaXYSA7i8xIemTSY3iEBtXhrhSXaX3KqRlnQ5MDgMXf8C\nxmirX4KGHx8wM8VDmK9AYHczKNgTDUYfEHYhYRmJTTTFYdjsfkbjIt8lqODx\n60ZGTirddg1oEO5QNK3xEE1l771YgqQbVK4WVM7FojC+WLNyDdaWV9MBjIQ/\nZaj+\r\n=T4VN\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBEiph5bSpw4saUS5anbpBFSz6pslI+s04zivh5IvOI3AiEA92+IWCJAoBSQ20+sJ+tihXYGlDjKDOEnanL8cFvLaEo=" + } + ] + }, + "maintainers": [ + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + { + "name": "typescript", + "email": "typescript@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.479_1582218090509_0.9183357197913338" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.480": { + "name": "types-registry", + "version": "0.1.480", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "977fd07aacf16891535aff2face6f5ec8caa1af1b0b47761b5f2170037273dcf", + "_id": "types-registry@0.1.480", + "dist": { + "integrity": "sha512-h6xQxbUD5s7iSoptEUEltIekGfZWb80knmdD0rNWpVpCFgLrHuN/wtD4EvAHPGs8Zkth7isx+YXqdDgouxPDLQ==", + "shasum": "5861d083355cb94b60012560d1d1e4f7ef58ded0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.480.tgz", + "fileCount": 3, + "unpackedSize": 463873, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXWckCRA9TVsSAnZWagAAycEP/jxnXqdFomz0t+XW5ngO\n3X9IolYCIHZQaq8QgfxTaEgWfW6I3k1EbAfLEn9HtaO8oyTS/MqVZIUE21h6\niutilNBoTMcUB6daRWPHtlHWBYAyy2WRjK85WkCWVyDs1uXc29RAqc+X11K+\nmbAFVGmEb5lWv7gRHOTx7UCAzYD5YpIqeqaqn3LyvtxkJeCRIt+STdWlfHcS\n71wPFrnhJ8lS1ff6SHgs5S9aMyS45IRKrpWdPTN5AidXGn28pGuygmt3QSiE\nPr5SqdEhGNhx6XdrqyGri+T0HfTXt1+qcjMhLX4APVRjKwxPB/6OGMIImmt+\n71Ngm00A62/qtBQ3jQRlyPYLU8eSQJB8rdEl0eXDvhE8uZwxUa4M1tHu7JF6\nOh4HY3cUrB/5qHSumVwcqioe6u9X2auZtwGeF+Q6AR5Y1ayS9K/o+h4/FO4q\ntLJbPMnEfbRwJMF1+VST7Sk81XR8GyYMnBQjHSMc6sjiBqwpLcniJfnqRuNO\njaTknT91qASUd6ZPq2IrMDdNViAxkOEF23Xvxuzhk2Z3HDA8g39ZtIAPNz1v\nk7MElP09XLqcvfbxe/eY4yc244QBRHtj+rVOxw6kBGggsW5X68LkIWcq8OSP\nobl4eXluvUxKp8jdgcNV4WzHKSIa87LzfYyWwOLl6SZXq5bCveoJ25HWOP6e\nOnbd\r\n=CbUi\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDGm458w363RHNHzkzrEyjU/M3+0mtjoOi1jNh7KPl/5AIhAMh+vHb+U54X2cYNtQXh/IoLLNaTu1YJNt22s0Dwve9u" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.480_1583179555866_0.3274518358135674" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.481": { + "name": "types-registry", + "version": "0.1.481", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9233d58425553d5e044b242fc6361a53e8c319fca8b6749516a6faf77ce65f16", + "_id": "types-registry@0.1.481", + "dist": { + "integrity": "sha512-Fs5oWXegSSIL5ruYzW3GaLD1+grnE4UksXA5cIKZvZxG5eLPRHt2E8jXtL9by+OYfavPnw70Zzh86AToY4sphQ==", + "shasum": "9a95f709e32ce1b703e6b18d9dd661c081e9779f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.481.tgz", + "fileCount": 3, + "unpackedSize": 466142, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZ+UQCRA9TVsSAnZWagAAr1IP/2Yga23PfHaVGWVj+dii\nPoVbaRYJxXFEVDb8padSGxx1R2fJIPEJGydRh2TB+6lWqFcaTDX+oS370+hI\n4haQbjCL3p1ybC5i8ZqBccJ94Q/oYuUrZ32Zl/TgjUdEhvAeG/p2DjeU1JS4\nPjdAw+BpTDDXotXD4y1WgALCqXQ4juIowDwgbzcRcjuRIw60rchW8WCvdcLi\nyfg3J9cYW4WN0cZn7H6ObLy9RCZ7P8yFfSL+HyCDU6tiEp1Sn0+BqlEzW1Cg\nICTcvpfJPVhGqJFakpa+pLFDXshOg3hP2biGtFiO+/q9ycD8N6oLUVQauNd5\nVwk7q9mhkF4huiju/T8SrTELKFxq7ERI1pBPtV/FOtWCdBX9KVegwHBvbdsI\nLycV7mgKhB9i6EikfsgPXTP0eEa150VINGenaiv1Ay2sksH5Z5yA/WBkLa3P\nEX92ajawpDCcxzvQ4Y/asREFy4sVwXl/Ws2rh96cT5ovc4+HXKMJ5xlut9W+\ncD4OzIwVyWTVhLJ8bmcq4k5r3b5nxn93GrWmI1ZRSFQ1GVVcNMaipXcC4A9+\nW6p4H7DRQ3K86k5oTv6fVL+/0maqX5p2ODCMBETxs045l3cLHhrs37lp/3fV\najLM+K3GPP11vYl5fDANNFMF4q/mEw3U8H88oii0wqbh8t0/TYOXpfP+srym\nPjg5\r\n=rVgd\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAtpvcbDuLUcw6tudKnLrKSanFg9jJ0bwYtAHZVC2pJzAiEA+/zE+uM6cIGwbQmzNrc5LB2BWD2KNMy2MC0XRZezAvA=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.481_1583867151980_0.7415949563998563" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.482": { + "name": "types-registry", + "version": "0.1.482", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "aacbad015c24c5b872c84084b3deb6508b17eefcaf1e8c8c6bc9874ffc575465", + "_id": "types-registry@0.1.482", + "dist": { + "integrity": "sha512-fUgpkDDIaTUn5J6gIP4ulv/lYB9v3gyEPedDmq11JfFI5CE0NZROOBhyinSWOX9FG1ch/mE4N0KEwhbCCLv6jg==", + "shasum": "7ba8d28eb9ed6a7a4eef1314ee6c7287a8423aee", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.482.tgz", + "fileCount": 3, + "unpackedSize": 468965, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecSTRCRA9TVsSAnZWagAABWcQAJAoVTBGZCk9sXquMYlh\nPg+wwx6Uzawz+kUXs4fvZVQiKwaexfmjlvt2rZIcAoZ/kCzvutzMf9IAg80M\n63oMPoJz8AYYIbo9yqqfEbdd+vq0Dr+mc+a8OAxr11rFf3lLgGJSFCJCaAy9\njfFURokGAQ44zuFYBfzew94sg6xXeyAoIcTkmecbse0ZXlKHHdogClglSapp\n9++1PKLsDbdm0nXsp1GefU1mnczMUfKEyrBHtxNIhmlWdzj7ngTg3he1JSex\ntWLa0dRHeInZgxiKjOO7tCwChoh8sTtVTB8y4cV1Vs/q2pv9Byiq/kdoGw+T\nhcQ11CXIiaH+kU5m8hMfrq6+P6CX/MOnhk+goNYjEsPyu2+DIdnmNEyPvtEA\nB9pVLxKn2zWsMwV70zrOH1N13Q9rtQjMsAsHyYzTyBWOPH8C25M9GI3gJw0b\nRs7EHkEZ/m2fSbM0VKpjPc8A72U/h9Qk31L2WLhZwkfZ5UWHVa725PpUFFp5\nWJI/Q8feEWLivHhK9L74RZY++BG/7FKd3ME2anBMVuaW73yP7+1AoviTuh5V\n1E5BN8uvQqPeu5crrquWf0gfSL3xDD7x/7IUB95ZTz3Ra6MKWj/RyhzMzmBf\nrD1kiXo1HXiWtBunOa8dhJb+U1kiSr0r4M2QJ6XPbUzJ8++iGOMilxN3R7em\n4Mug\r\n=koId\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHIJ1dyMrGFu83qOsx4tN9dOa2W8Z+BtWHMKXcEX+ZdKAiBmzeZuSdfU5ejVzjxAl4L1hDYtymHTtbsQPXqFxrYN0Q==" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.482_1584473296548_0.8606604584445985" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.483": { + "name": "types-registry", + "version": "0.1.483", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ac12b15f62171c8eeaf9b4073c944e93e8fb3beaa345ed81038d709a7248d75b", + "_id": "types-registry@0.1.483", + "dist": { + "integrity": "sha512-E1oj9TbwtE1s9jz65PMj6av7KBZZG1oqbjUGt+YPjha5mpmHUfbXtUwi5RjTkTflsDS8RR6iPQNmLbF+9TqdCA==", + "shasum": "6791011ddf0e6b757250d9a5c20a2ec0072e059a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.483.tgz", + "fileCount": 3, + "unpackedSize": 472933, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeel/3CRA9TVsSAnZWagAACCoQAIJ4LybKW4bnmvNiRzln\nPpvpMjKkcY07aEVLUSlW23L33+Fnb/VZZ/YYTYKBf7WXWSAx6UJpVli4N+0U\nF7u4lPHrPbJKhx2dO/o+xSSKQ8gmkwxglzQJVsGkzzaX3DiPzKSlCPDxXnrp\nIPoBT9QwhMv+r5RGvpdzmLOE7jwr3ej4fdSTHZAmegZzeQVRQtQ8Eo6alpyw\nGx12+We8+wyTDLzbhKdeH91a5kz7jq/9MqQbABI7C6zOvsljoQbwzdZL+bsa\no4bpwrfkZQmh4yduWnER2jyrvZ5EWVDEHn56lzq7fj74/LDUuINL2DfejCxQ\nMJddIOahEcObHZljNTd9ZdBZHcwYGfIKfyMhNElSvu3WS5kBBwZMhiCtityo\n25q9OfCtHySEAHB7RADCdXZMZSvnFyBJcOJ7/NWOFoi1unRLy7hQpoRhHcs5\nsbspiXfKTHPuONT/TvxWA88c0IMdyu3FlS9KKmsFWVNttrgBZrB3TIkQX3aw\nIwivlm4PuNoJisr3ZiiTHl975CGz2uDXxicwqTYHE9E7KAkWfenXG6w86Tpn\nR2UBXKNV6voF7o3gdvCOf0nBndL7eWgIWl+Njc4Ce2xCRPkZvLjNvr/PBtYE\nlUfU4qBad0owawq+tAOs4tD8SJd0EtUqQYk8+tR7AuRcsHFaGRhIHI4zzAJa\nRx27\r\n=WjVv\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGuXMJmJBuy4wkQ6BneMMXZiTjpN688aS1rP18JzBb/vAiEAqlQyMigTEpQTtiWj7kfFjqd+SDgb9ew/pEWTA9DqI74=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.483_1585078262813_0.8548909748567146" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.484": { + "name": "types-registry", + "version": "0.1.484", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9a9a5a843c736978ced0b29babc58d6c1910ba20844699a73c37b7edfa52f150", + "_id": "types-registry@0.1.484", + "dist": { + "integrity": "sha512-xQF9iGq1u2hUH8AHpg+lj5jlkJkidikF/jX2UG+4hme1fD9Kb9uC4m/A2bPu0p/uAh/3vprHs7oxJVnlTWTGdw==", + "shasum": "227bce7b089c5485955a1a90b5db660e51f6b6a5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.484.tgz", + "fileCount": 3, + "unpackedSize": 477891, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeg6JpCRA9TVsSAnZWagAAjREP/0nFuh7iZ5rKx5Y3s14x\n6AgSRAPW0yT/hX+px/7t5qV7aBjfr08ia0Z8QQPyuknWjOhGlX8BstXZ0k5d\nexJ77lOQZDTIxbKmI/Wg2IfqbcGdDeA7d5wRt7Y+Og5Aum473m5MoozzJSQa\nZ5rX2dYXwugFOjmXQJZBaEGOAAMrg7ou2x7PWb+LqtZ4jj6Kke9V4PHTwvUP\nj/9lrN9qSkeX/3aiGK7glv/bLKlo7aMCEpXpbEDpSxD7r4djWHVs9iJKYeNL\nn0giAs3XljFCwiIDypPuUcPT8M24MWRQiXtiFGsGJ44BL63pvtyUkCPQbJlr\npLB0gYJO3nxhj4pULD067b72E2U7RnXbmcB+aCEdvWCJvBDTkuFIL/IlL74s\nsayERhcw6yFCsBFwWXZBiBXvmoLMTk70Tf/M16vy82ZdO1ofzDQbK8oTrnZW\n5XtBh7GQ7G2wxn+psg45rQyd5hEXkUw5yFvFasTaaQ5GnffObfozou5vqhhs\nCdYpBxX4wBWYcAPOcG9NULpV+xCBBKoZ92c8H/8/xJ4msXfD6VDAvXyExqh5\neP0cQ8hw0P4X8a3PRqJ58qg1XTRBNyoscWyvdizRZm+6NhS8k5jlxxGpcmZ/\nMBL/0gPXXw6ehw3cnaRUm2FPsdo0Gu5G3Bp5u6zx2Rx7FbJbxzNwNdDYYklw\nOyzs\r\n=Tm/0\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICWeV6DIWFy2nQho7v6OmFR8iKteuOdhDFGV1XHA5jMDAiASqnGGnF+6o7ZIIohpgwNEdDgir5QjYnUqAlLEGp8OhQ==" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.484_1585685097496_0.6514299108276409" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.485": { + "name": "types-registry", + "version": "0.1.485", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3f8d6cace263a202b4cca39d42eb08fba60883f9c69569343d09c2509f506128", + "_id": "types-registry@0.1.485", + "dist": { + "integrity": "sha512-H3mW3YTfoyMP/q2KWDGoBku1XmivVenRCc2EwKmjTC51i7mldJ+qKcAT/8pXAKRsLvvtgunxy2KatUyU4eY0jA==", + "shasum": "816630cf6aaf36147d571d7e3ebd911852a439d6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.485.tgz", + "fileCount": 3, + "unpackedSize": 484450, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejOB8CRA9TVsSAnZWagAAOjkQAJbgwCXvt2U7RsuxPj4U\nlgMm9d+l+M5IplvlupaYyz8Nx4LtHJxhi1DhMJeBKyeSoYDrXOgwmKrLia/w\n5kiQccjHl0qL6RQPyMlfdKcM0SwCnrTjbHV0jDKA8SvuDBQCq9Lb9LygmgnH\n5BtfQKvzZER7q2ZcRdICqMY6as4H/Ut/Y9PyEieRrZteaW3MSFRVh0R5BqWF\nZtTqzQ9MQOsGztBlkQIt/MCmsra3WX939nK3BChRyFGsPqdN7P8O1GCH6ZwT\nmzXGAiSrKKQxkW2yrqQMHk5y1d9Zvgchl5WiomazcVwDh5QdSibGqywO3nt3\nPZMo9o/AfE4XDnBtZowXU7Nr87hW2HPZE1fHeo9LYgeLboSNBEpTa+glWObL\nAAdUZBJlnBmP1Mewy1Sg7t0fsRhO+SZoKJtEBS0RLOWKpMDRm+NPNBeRin2Q\nGD1Ibp2oRmUv663xqAxO9yNfEd3M+Uxcg2dCHCkEhObZj6zM4JeLHc/KU9Gc\nFo8ZbUYytJayxJI7S4OVcAPQ40fwCHOHsPPM3MNmdTIkUEPTUMf4ATXvg5T+\nBUb9XqEtE3CcYq9Bx8hv4dUjSEq511OgP0i3UyCj8o+yQUW2B4E6rHyOzWeB\nVoDydsjaLhnDKfGkMKOVzKlacOgyQMqSo+/o4SkeJGPabrWIIyBhcTtrhzZQ\nfO+w\r\n=+dgJ\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIC+05uBg7C7EvrXy4ROaXq5ISv4X9IzbsDlnkMTx9e8sAiEArW7Js1z+4/Db6k7IDaaJZejLdk0/NFfMGAaigF4AZ8Y=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.485_1586290811604_0.4140547379449844" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.486": { + "name": "types-registry", + "version": "0.1.486", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "cb6e490d86134b12a386e6c76a3ed066cc38938184004e85bf44d517ed2585ff", + "_id": "types-registry@0.1.486", + "dist": { + "integrity": "sha512-fqvtMlqF05aUL8eK0k1etmGuh3ZipLO9iGscMaQPPbZJS5KA4A243JUiVtR9I4zEq23iS/ZSdL+vZp1iw6FpvQ==", + "shasum": "68420ea3f866ae6abcaf9ee134a9ff95eba09e76", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.486.tgz", + "fileCount": 3, + "unpackedSize": 486615, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemLc+CRA9TVsSAnZWagAAW/QP/066dSXvhKI90RswdSpd\nzqTYwCQIUSM4QajieoYrFJ76QAhcTSFtioHYjzWQURe1Ebr+vA/Hx/M6B9Ug\nZlDbfZFJqThd/jIVVaV88P8chdTi7kd3Wm+H9jUJ3jxiIip0fwMU2fkXr6M0\nImv+rXUlw5mfjVGCDVOQjWa9zr77o+x7NMTsk6xRpcemsrUpB/Fc3OSfwUiw\nqGmTEd3njhvqT3inLB/899SKLQnBFHBtIHu4X4xhwDAIcTQ7PHyD6f95qOCy\niFMIHy9dRmqkMyKjWTk3YA+YR656HWBpZbXtcoM2ybzJfcXAbarxVmHOdJQz\noZmGM6GYxPdmyvokY7QwMBFs1eJl3IGVekUpWOVnl/iB8N2Mnge0p4cXEr0u\ni7YFqlDE067FTyZANz3VuOJRVu71rv8YtWELsgyr+DIjmq5gVYDYFg6c7B9k\nOfJ4ilapF07G4kVz20mO2Q3eszLjdxX8YMBA8ivG6kzjg/FBmviMrNGHEaj4\nTPyF1LNYY8ZGlu2XAF3kZgLLUNaXsCJBwrh3tPlzbuguD38VjNCRV7NEJwZC\nKc35/SUu5OF96L0f9To+wFBVFx1PGplBPnerU919DHIRjKmed4dk+w8Tnzlu\nIH5CcEK9Ydp9O4vLYGJda4lutukXlpThbOaVSoRqs42F/d9pPiJxOMWdE6OX\nVC40\r\n=rNGG\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCZzBtMTKmcebwOiV9byKo+pp5poCRoBl+R7fVBczGF2AIhAMjcAhMSKXQjfVXro0v2wVydDowWLeGCMM8ESC2KYgNX" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.486_1587066686053_0.9985376380135198" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.487": { + "name": "types-registry", + "version": "0.1.487", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8318f6ef3a3c429a6b9b9b499fd5c1601e07b1aae6e510cc697c2d8024d51bf1", + "_id": "types-registry@0.1.487", + "dist": { + "integrity": "sha512-u/1EM+efWCwNOoI+zMnZmiY9ErEHKQZ9V+gLl9xuMOi6AdkynuBy9gBB3dZOppvIrexo9ZfQsfRj+aaghKLCfw==", + "shasum": "9d3caad0f753a52ffeeac6aca79e2d9d14baf3e5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.487.tgz", + "fileCount": 3, + "unpackedSize": 486342, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeogS6CRA9TVsSAnZWagAA9tsP/jzSHEmMlNT0QrVnQQWN\nzLrktVyUJJ5aqip7kQ3yCuBWa7guDvy+Yd7ocUACgWtsCvhIxqO16p4yMIwV\n1cIdME6A0PXBOefZOhVd2epnXpXEv2+LQNxx+/5X3MPH2JjLRugfr91EekhB\nIWljjy7iJ7D8sfeA0PYNYOYllwOMMmo4VjOwaKNbPdmNxSWCUicZa9jO3b/B\nL7Q+d7omOosHcBhrEkUPyLD+6CsDyTgAdANl1ZYaKs7IEsI1yLG4IATEk8iJ\n3yOa6XYwgRyBAZ69wj7s/omEg8Sohur13+5VuNw8fCua1YpSdGPHCtuzM+9/\nLZQrIp6oS3nZNBbE9ReaBjGVYWESgt2FcjmWKL79Cpd9mD7UTC911ZnuS6/M\nM9E2oqNIHWL7HE7ZOxpX/zegHyXqfqHYWmuK5gZSi0O1hb+A8dg1XVd9ndBL\nz1gJJmXQPxhCD/X24InmaUYsjGOYsYsrCwDkN+/QeiR0jCytl15YBSeOH78u\nCNGJ0fn1aCFuhhFE2O2BxuNjlDHguCh912sk/BEdUEK3PTo+cGwZwhsEbYei\nZLCGPVnSbp2qUqSCkjvhR5/fYgImU7sEwGuTKM05dkStInzc3wrNK9yChmzx\npa58OFlxWAuTQMQQu12P40qdN7fEpRUwMD6Og/qns4MeSOSJwfGtMXwk57pD\nUNX4\r\n=6KTS\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFhIlYivPNMV2rZTnUjwc3fejacFo8niq2EyhtfzYJAYAiEAo4uOKiBQpPuafmQftT2CdNiNSyD/IHGPi0wHmQBygAs=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.487_1587676345900_0.44346349095750415" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.488": { + "name": "types-registry", + "version": "0.1.488", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7109df8e1f84e764511dad9ed55795a7512dc7567467ba6cc11ac6358effd053", + "_id": "types-registry@0.1.488", + "dist": { + "integrity": "sha512-AKL0mRLR4LWTRFOCulR6cp4DvzkTKVLjI232JhJZtt8RCnBv+HErkEV3zzOR5Pbb9fAmS5LipXNXa18hjddZvQ==", + "shasum": "c1b07f2b3f30fb95ec2c3af027c58914f7d7cda3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.488.tgz", + "fileCount": 3, + "unpackedSize": 489785, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeq0ATCRA9TVsSAnZWagAAbEgP/2qET/MtBjAPv/I7/Gm/\n5yiP4iezk6MJpDZiJftlQ873s/I9TsFK+xweepXF1WbgpEcDbGlO9d4ydM/b\nwa2CYR3fVP5kCGBOnk87IN6zwncxzdictwgSnqcxYFf4tquVuyi/GBNRRAWB\n9cthnBecOJRTCPfV8NBDsldSHGn7GTezdc8sRFbb+LjzL66Rbnz13CAvenko\nPm0zg1yWFDgX1jP3UVAHP2dGt9vBuPXUuRNw6Eb+lhuL6U+M2pWjZvlfNJ10\nTKLAP2Wptr/vZkYqM2//A+oiG466KabaXMunz3pHAx3QJTooyxIRff5bfTGA\nv52K0pkvkh9XC5X40nT/K1vwsZtCKchGc9VXHTMrNCeiOPT6geMHZlV8sCTa\nQYmYLmt26LcvOwQWyErq7Zc4QatC7TdPy7KtLOVI1fguJaEQ1pJ7FJ8YfzRY\ncFTaiBKH48xUKw+nHVBqdWn71a5TzAyfWxigm31+ricuDogSjcaCudnehXNE\nB50v7Yum4uPY2PswS4Ve+Viie9pN/nplFOTjq349GTwdqBI18GCVry7GURFa\nV7cLVmveqdQYrWCVO7KJRZzBy64jh7PqfzWkXsrgTdrpwNnmQRYSil53+PoC\nPYtqr9aeBoeeIP/lXSzzHrQKYUCCH+oGFogTIGD3z+/mdy/DT9TqkIZwxYRA\nDj5B\r\n=sh+i\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDHpPTUMRLTMLBb4EeNKoqrihXbTOPZYeGxIol+rYIKLAIhAO8IXPWIFY3SdYLax4XvxvAX4YL18nC5fHW0cM6Br0sz" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.488_1588281362220_0.6265188215785766" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.489": { + "name": "types-registry", + "version": "0.1.489", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "89aaeed351e4e1213c37f8680a5d2ef5f632a8fd227a091741ec1ff5a13cebee", + "_id": "types-registry@0.1.489", + "dist": { + "integrity": "sha512-f2MD/49wMRCP1Y55SKaDrcMsDN+QS9kcWjAm+8+hnAtFfz3Fj3XuCCJWCX1sd3vf17phgSLvBkQaN1VUQBi2NQ==", + "shasum": "68bf842db1b2f2d4efd4013472109214dd6d468b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.489.tgz", + "fileCount": 3, + "unpackedSize": 492063, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetHtgCRA9TVsSAnZWagAAAXMP/3L0POrk/DVW6QEOhWcK\nSuGPtnXse+/3NGibc+dOV0vbxQtydx3VdHypCnMX/tHJ/GOBumCCAp89yX0h\nKOgRI5GE/q6J0cA+FLQ+i6iTNjmgNzQDh3eDeGVdn1zVAK3apNpzB9Bg8H4g\n79fojZtWT8h/b3weTslpbkY9DQBDzO/CzE30KEM3sW4KZYG0NWMzUIm3oaLS\njIyR06+pnQ+PQlNM6zIi3mg365esRLsxB1ZPa7EyUgr50E4iqHlJVZfABrTg\nrDGIEGHCu/5u+5ZXJcz7NQybJbqacpuqJ7cpacYWYkRjV1bT4ZtKxzTL+xYL\nNZChoXrDV04d1+tH9PSIBR3qLI/+w0oBkLUIIDiLvbrNMEUTijgIwylhK+OM\nhOcWmnSAXjYChi35FERZSpk5bjPYiTT846ZMflmNplbvarQ3dqOZBHlDRW0B\nacKMWngniw9IqQp/x8VPUIFA3fFF9HJS96zU5xB8Ga78UFyKaLSRvV0/ps9J\nYw+DF3tbuLFd/kc/6M4s4uaakkjzZS7X/5VAvj2PoiWNmc4aBEGjNtSBY78S\nuMUaRDbLHhlXRlgkjpsNJI1ch+c3gb80tqxdvQW5M7P6blRQI3TPVsV1i4r9\niKD9DKpiSTqtqJvYHLgbAYUjgzrcpn5pBXfYnD0sEUJDxZFTtQseH9S3eHvg\nFmuF\r\n=zDh2\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDDcFDa9n2h6LdfgLXejkd3YgOmR+tALE7fsmLryPGbcAIhAP+k9fKTBOsJS5J9MAX5yqVi2xNyOVPMhjlDkxJHUcWf" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.489_1588886367874_0.7568915697317617" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.490": { + "name": "types-registry", + "version": "0.1.490", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7bdaad66cfac908fd4e4a14285a3ada3c253ddb3e99fdb5397d1e09b62eb16b8", + "_id": "types-registry@0.1.490", + "dist": { + "integrity": "sha512-FMJB90DaWzQfj2WGbnOxfn3WVHFdGRUiiAKkllvx333avKqvB1otJbqfwkUwwioEABC+J1e9ILcfrFWhMzn5TQ==", + "shasum": "80bc29d22c246014ff248ef2f3b12866f9e8ee33", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.490.tgz", + "fileCount": 3, + "unpackedSize": 496523, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevbaZCRA9TVsSAnZWagAAzTMQAKNDio0JNbjB7yAL8LGS\nfLip7OJrvZowydcm5vhcMR9cI7jCKM2pKnzmsp7OEB/ZK0bm9Q0Wi5zOqz8B\nUz6QzOKzLFlRCYqjy8zk8yo3En59nuKNtRYKpaIN0mEChhRxHcHOCOd3zLno\nYNUN8X0veljPq01ku5i6w+MlBrpHtcQAOOjpn0O0Y8JvrtygYfnKUs4l1pK2\npdmEXxV1xtBz2rOqSNxi2nXLz0oabd7fQ9VoPfWbdsF33vNXbwPor7JPvTYO\naKTdJAmllQutpluKnW3bN4GOsje3Z1lk6L4c97vThna4GtZBTUdfOZW1IcKR\nHVPmqb3w9soqYcGnFhodpjcAM+FYWXnQ53r8FPi3G7M82ZeiruxlHOHNNJsD\n/2AmNPSgLhR4vrkmYygZVZEdQyXfQAvcLLICPis0z+8QcF9fDyGMJEhIiyoS\nk9laRESDehnCdaQC5PxEvANptrCkOIT8bVXfzQVROqn3s/4E0dogSpOVRk3u\nfNJSZrfc87gmq4fKFeovhe89nYK4eXxRrbtO7EqPvFSO2CU6/nLLcf7Qwj2U\nZVExXS68gyPoX8whCoNM3CjnOwWHqTaV2ug/zGoKCGmDdgk8vNJb27Ja6leC\nrml8Jm8uj+FVx+gc3yMwBzHrDLpRWa6QRprKGbGqWtUN9qWbq9fRSVglMjv5\nPNxE\r\n=RReK\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDl3ew849y2779vFl8qBDYF9LSkgfftMx43r+hnSF9X2AiEAwS+5rJr8RcngBNH2nH69d7HqA5eGvEKobLU9AJmOuEo=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.490_1589491352950_0.6698471182234467" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.491": { + "name": "types-registry", + "version": "0.1.491", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ac12cf9d5b94350b6395f35f273f880c5530638bdff8e16d2a9be6ae433220dd", + "_id": "types-registry@0.1.491", + "dist": { + "integrity": "sha512-sPAfVlWZCURikCHmBu6a3qODe6pUiZgBVkc0unUJdTDd3WbvoSU2+bZI6hssPBKLqDD7LdpaqE7oS9Um70mfWg==", + "shasum": "aa287592b3341cd492a98374ea62aaadbb55b7cb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.491.tgz", + "fileCount": 3, + "unpackedSize": 566977, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexveaCRA9TVsSAnZWagAAuT8P/1rCADvf6Go8HKneO2aw\nl+49/AvtXWlMcIDcwdD0sdb2SC0V1RjXGOzm0cQG7sSROfCIk67Ha7gE01Zf\nTzULjGgg8veMfo5zfjnem00YAMbrBM/QxlDhKdAtNcCHSXAfR/QlDcSk7qwy\n79CYX+IZAqG7nLySMqwMKCPedsuRZQHt1UG1Tca0oqEh2L7fuCM02vH6j7mO\ndKgKxtg0uHsQUAFzjs+ExdqRhD/2ImxCNgCGPE2XnubH/ViaJUupmJ6Ing8Z\n6KWclSuOrZfUp4foBgiBVjNtlfMywCyJf6BehtfXMDN3dOxSvqWqsntrD4/W\nYkHnUHEdtYpq3Rekppj8/mCMp+vlOoaV5sI7YMyz5ynEpbV/GaY5DBYEr8I5\nCsCFuhOnPfuH4rszzQ1o21nfCVDfsdvw+gO8PUhwQEN5unOz2J/0V6roc97j\njaFGhQqjh8uHyxfIpn8yOQ+eFL1bfiTxBlbKHbROchVYGidMaqEChBMrC2XF\nebSnW3yN0eT8rC25EMijOX3XVdig3UkbdITzxNSBSvPmesFbIptq409mjTYm\nwc1r/HEtocA8oIVkiN8VmtuZZ3M3cZ2nkgfIzKFgxG81JWrDAXLu04MS+n2F\nICKghrqHvQGNgNmWteLacg//Xl4RmGunZNWAHT4EQsIKOVUTeJ3NqMmkTlxY\nKXyO\r\n=Xvbv\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG5s80k7QA1xR8g6Ed+MmtTK4BbH9PPF3DyEVbBwjRGAAiAJxSs9ZxmdHsdNFRDZQg4xlYpcMCr464f2AkNMlDTTRg==" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.491_1590097818170_0.30979219691870363" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.492": { + "name": "types-registry", + "version": "0.1.492", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5aec14a9d6e9f53285f0085899a79260ce2e21b1622e7a080ed3f07ef62a83ca", + "_id": "types-registry@0.1.492", + "dist": { + "integrity": "sha512-Gs3a1Sm/YZI81GGDRt7QB321FApT3/eXKSgqAcA4XY2K+0ird2KKs963CKe2RzWRHC0cUrh/MowLTaYCh4feyw==", + "shasum": "c48bbf2aa8c5a7f5ea0e0d149bf83e23af5c33aa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.492.tgz", + "fileCount": 3, + "unpackedSize": 569430, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe0DXFCRA9TVsSAnZWagAA+wsP/3LZVSlpnk8U1gR4Q73h\nxQmfOSlBlnHEJLzL8qKAiSKYrkiIxqRRzNmqYiiirdNi3hXk/V0li7RrXHe1\n0YLqvQIXONppMV7njEzoT23xhflxyHzIFGZ5/njBXXsENLKuBo0F//1U1ZGX\nVh6wI6WDMbW79nV5xlijcWiORQE7/vxNdwUnVOwalRTUahTu3RKWyYx6gc9U\nL4cFLS7a1mGdfr8sNKdPmyFNkmG3idBJTxYf/1eU/Sco/JQ43jtW16H1/KMN\niwvyUo3B9wuInRodb0fLvOB4Oc5fT+TqalSVC65lf9P1oJz/O7ydZQ8NLUc+\nuT1Wmx4md7oRGQ5JpaPHKGVX8DVFwQix5plH+De8M06MtiVJvrN+xtZDkaSQ\nLhBrQABG/c2e4EtUnqjryxuq6CvPQGAX6n7stjfQupAJ/LmzWrToAlj0rea+\nxT6C1oYo2a1skOOk/out9AmspItuUrpGJDE7DhAASWPEhZ2L2bIs/kX2kO6n\nqtY3C7MsdMtsYsiqGy4RU/R89dmgWNaOnNrtGRDFr6AMHP7sD6zBWaigaBwR\nsa7WMt4ymcxJnHEiGOqq1YPpnBrNsuTD2lVxEEuM5PkXQYRPKy1cA4AACqJ5\nawDD8HnZul886Mkq066Mdn8Yv9BhN6hUwOjvgIEdqvy+RZcCFn6tB0pGM9JE\nqZRd\r\n=t1mH\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCRO6/hJtkIJie8esjQdN5th21letnqVf7DQYFIDUkDPQIhAInWJXhloIvkO8WlfqWXh2E6tPtky8vg/mYag7tsyEwU" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.492_1590703556714_0.8169493757814783" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.493": { + "name": "types-registry", + "version": "0.1.493", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9f0231c7f09ae3e3832c653e182a2ce8155d0794c1c6db31f882173ba0499f03", + "_id": "types-registry@0.1.493", + "dist": { + "integrity": "sha512-cp5hpzGbDHcv6omU4RSljiO6AAVk+yy/dKHqDF2rU0slQxuAQKS/cPN0besv0YthL6sNbgbh1/8A9xzAF08L0A==", + "shasum": "60cec3893f5b56882281ed4030aa3c9dd247f659", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.493.tgz", + "fileCount": 3, + "unpackedSize": 572458, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2XONCRA9TVsSAnZWagAAU2oQAIbAgjf0XTxh/TLLg6TA\nSzaXiXDcQkdAXfkwg12ecSKlObWBGtJNl7m4BQodO6EM6zv3KaxenNoIwa5F\nx/22kGZjg+84dWRrTTP5WsGCBRn7C9HrWiyWJd41yPJ00VqNCbdglIywhUTu\nZF7lQ0O5qBU1dFd2TEBQTdswuBQjVMVGkAMBIjnv6Vd6pNnd0JdBUqHhhFgB\nAVT37nB6uUhWpMM0XVLLf0T5IqK0O9f9/fXxXN/14nngL7b3EHtJ1w9j4tqm\no7timqMnvyWloAqPkQwugPcQOh1tClrv2QSwufAV1QPWE8Q0q9QHemw1rnw5\npA3BLcozRLt+xOd3q0mwEla7YCy/OjLMKZyKaFseSQpCx3hK/aKDUVX3axM1\nEn1esRTBFOFBWR4gQ8NVF+YExawN1psyHQ3N/2JbHOEulxLMzhG+cRdESEnA\n7k6UFAu8cqcfyBo58Bkg0z/D60EMmav5YLbxkF1Ntxm48nJhQ6SS4CAw7KHP\nTv8Vcf1m5PEkmeaPr+HsXTGnENwiVu7jf38llufrai29XJkiJ/E53DkF6F6r\n4JzYorZ3FLc7liCuK/OaeiqbcDx9Vl79N7lusSJDsLofYah/pJPL07zKVyaI\nC34ZdAUUwIdFbASRdJMXxKKduMWO6f5RJffYtCWG4b8WRwOoqmvY9uWk3/HN\nDzbM\r\n=c2n7\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD/OF62rfWSd5kBrBeWjMwX2weYB67x87aTpzRSCmVzGwIhAL+xmG6GrqzgIrR5/ydGKcjdp/Hl9pidtF2xmDgDTePi" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.493_1591309194471_0.1599726807223918" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.494": { + "name": "types-registry", + "version": "0.1.494", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "cfb081105d2789bfcbf9ee63fd37655907c03be58a2f9b52f7d87b796157fe36", + "_id": "types-registry@0.1.494", + "dist": { + "integrity": "sha512-25mKG3QZwQIfXj0vVo9q9ztca9En5sfGJzOd8XTu9b1Tx+56Ct+j8zrpewMuR3Dtwv2882A2FYPLQ5N0+Cyxvw==", + "shasum": "213d83d897cf71bd7f452ca2785aa012a8de623f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.494.tgz", + "fileCount": 3, + "unpackedSize": 577607, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4q+9CRA9TVsSAnZWagAAr4wP/i54RlG8eFr8QH2Kqr26\nXxFj6nv6AQzTQ269sZ5zfib8uwGpAz91L9vLwqAhCtr9WIbh+5L79cAVPsYR\nKU8WcHGOJQlvbrg0Ym3PVC0E5cMjz7FvUrt1yxP032MykARtbmvwtPgcxn5Z\n7YbGBpT9Hfp2YM8ty7iujjhChKM3FHAs5HvJ+PTrlotdRNw1FqQEyEU7a9Fa\noz00cAheWfNy4iz9a4ftrC5OyC6RKUU7bIn900zRO/n5brxLFM9ZLWvuVsKS\nOvIudrlj+dcfVSRgS9Cx6rKN2oqImTdqJAtUdxpd/UQgA5PXYTPMfg1EQd4M\nVMXAJiyGAds62V+WonC8kyirRa929iQiEdWjCRQdyf0GISzogFz0JYRiiEu/\nDVv5KvowCeBKcJuSBt2P2nvR1ljzvjt0v2Hl95gYN2xg2vnnz8uKZ1KQrFIi\nMv9BtmFqcNVT0M/4KXr3H6h5E+QRhjS74q6eTdeHMrWNfjN59UZQhBYKDUnz\nVbH87U0VKf7kkQAkT+bNGRndT3MIymCs2GXbqYSkp6Xf0YDu3VI71ikb4VAZ\nIGDDOAgN/ciJfez7oTkwSScKoDhRN5kD4vuXw3+s0wHa9FleTNbLLlpL43sM\n9wqiM+TaYxFLIiUbe2r3viZBWmvn4nIIQr4UPdrMRXK1rs/7p8VTnqA/m/sT\nW1zw\r\n=5ZbI\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC9UkRdRPl5GtNaLRwI99yBxNZ+BPYVItQB4PK/0SqY8gIgHz+eVUSLAHI23D5wOP9hLUczL6GNqRKnbMYDn9IG3Dk=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.494_1591914426617_0.38025716337555715" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.495": { + "name": "types-registry", + "version": "0.1.495", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "19f60f7e620b1290bfbd1ff9042b31002eefdf0e5aae58cd008c5daa8763df23", + "_id": "types-registry@0.1.495", + "dist": { + "integrity": "sha512-OCBxhaNU5jqk2CDxv40Gge/1bJ/FGEAvG5rjM/v/Q2Odp5riUxXr/VtjgSZ7juXTi72uSzx+6YdZJKu74uhaww==", + "shasum": "da36e10782fc85f6d78897eaf1bb1452097ec067", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.495.tgz", + "fileCount": 3, + "unpackedSize": 580112, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6+9fCRA9TVsSAnZWagAAXl8P/Rc5a7CpconMJEUVuFds\n2EwRcAvUd0IsGT/DPvmcKjI6vqOfWRexXN8eKWlCshpZQz3RCdIFk1qO/46R\nWAb3ZuHiTJjH123BT246ZlzMg1ntIs0UybNRwImHX9vPSx09demysJMtoq5B\nGrigpykcQdjkC/f1knMA/mDVufJULsM6B8UMCtqngWD3vB08k45WfhTolg0K\n+TFmhrFjBurI+By0eqUUISrvXG89Z3dQKH8Y1igRweof3L2SFVaAuEq404qi\nV/QjMBpUhDrPByz9colaaA7YKisgtWqWPeeUOs7FtZDh6LS/9VlIJr56me5I\ncggNfeDaYOcFDLMwNhon9vsXE/UnCuu6tipKCNC5qdKNpB3N4AU+2c36YPDU\n5UxMNh90my4uyWA67QtwkZw7iIH5NVMoxxPkuyAwNLKGJM675h+EuWZJortk\nDPkxrJPidw0Z9soEUfP7Cm+MG1adXfIy1XBhLvy0/D4EoFpibfW7QAESho8B\nWNhmM5Orsq4As9bQ7wfw3RkhQRVkDuQPM8qItZRgPsge3NynY2xY2obUxQZK\nKhMu+aap9ky7bvUV+0u9W9N5cQmPF2+7fs42OXhEiooXIUKOuAXkuwIpG0O6\nX47aeg3jLzWpjPOmivqVLWRIr3MEULNWPNmGlStv//LWr8Eo2GXNCAKSuswb\n8Gf5\r\n=Yyqd\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEvRLFjAiZSuE93nV/ihelXKDiVEYW9FinoNg70rSEvHAiBb8zqFv9EnEOqH/frw/PN/4/IFCGu1dodJmv1D6xYXYw==" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.495_1592520542485_0.5490273084398654" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.496": { + "name": "types-registry", + "version": "0.1.496", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ceabfb25ee5583aa92526f75859b5626061d702707ca7a2a09668d8aa858f0fa", + "_id": "types-registry@0.1.496", + "dist": { + "integrity": "sha512-/XFvisATlYPL8WF+z4koI25V1qLWxB7iQfH3GChriDJ37db5L16uyXJOIfZqu/HbAOBVJmNzbCod0HfhQnq2zw==", + "shasum": "1a9f5879fe46da144104e1e668624c93560ff66f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.496.tgz", + "fileCount": 3, + "unpackedSize": 584356, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9SySCRA9TVsSAnZWagAAucgP+QGTOkunzAQ7AItMN2aC\nUsduMj4yXReeRAZdrJmdbaERaRQaBIh4Ie27+QPfgAC8qf52MvxgA+a+3zlE\nG7AU5JOOgnhWRRQs4XAmgirpJ8Fv1YSBj38cgXvyL7x0xe2bAGLyE367JgPW\nEboR3zZS3hj5EL2R5eUjEKV9Gfpbnxxk6Q8F5YWGEuKksewKJVWUAwbxpF5R\n+YdMbCAmFv3vRbASZMTfXQ7tL20As1YxivxLA+pWCXO0q2X1kfxZXk7h8gHs\nn7njiB+f5hgNoIqWfonktVbDG5kBC7SKNp1oNELblEi97T9Tq5UKx2zBuqV+\nIIp/9dxR784hKV1UsPqvTwcQ6dCpeBYSTq9K5uxbvmXKY0ydDDpjuoaKQB9l\nQ9qF+hnHGo2Jil9tHPRCxYnIS5rESb8UJCYbuTPf39QD7pZa8cn5vzIT0BBX\nGMhCyZXmU/+0tK/O1iU2osnzLeeLRz2P+a7g8lo6smWNF3412XQAi2AM7Tpu\nJr5nmQgQ+RwpURMN27MggECkX8trPFWLcryqa8qh4kkH94siA+panlY+VFWC\nKKZ4VoVSDLMUladApV2ZJXO2EftkVmuLXtLMnBp6NLK8sFkTfiAuI6u/ZcEY\nvewrX691Uomo0dhHw91b2BE4dL5QiRa3+fthL/TEUK9YxGr9j7Ac4IHa7nSY\n1ysl\r\n=Gohj\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDMWHHizLcmHLeW5dJoeLvysH3OQxMDyGvdYKWiWIJICwIhAPnStYq7uxAcuTI8Q6AMmJAEU5OOcR9uZmoYWMRyifj0" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.496_1593126033698_0.42978739539736277" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.497": { + "name": "types-registry", + "version": "0.1.497", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d920760316816dda8d1138e7aa24908736383fec1f97dbdd918d466f2720bd5f", + "_id": "types-registry@0.1.497", + "dist": { + "integrity": "sha512-5fwwIk26O8Hud5Uy2jGmE1xrxSnuBb70xlsRs+11zCoTHrmF8puCuoCiGit+p7puJDff37pc9teZki3LDJGn9Q==", + "shasum": "0d8aa2c1b474912df33da22d4b6e8289df953f75", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.497.tgz", + "fileCount": 3, + "unpackedSize": 585222, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/mzkCRA9TVsSAnZWagAAhZUP/j7KE0iBUULYvgd/61IG\nRQLls5bRWHepUuLRwDJlIoDY/aTaCSTTtG2a2+ZHL+oTPDDGSixCxVae2o2G\n47MSN6jbbThBLSwkr6X6HooMvCDKq0GhFBfIK4JQC5V7cB2XD67ZX+XRd7w+\noui7QymB8N5jQGHIVSxVeebbEQaRdpx/gQP7wywE0gX4QXuMi3R9qPEOIFMf\nF7w95+PhwdNcxkG0MmQSeuuYd8K6UhiESMsjkypGcVdY9I5SeYXDzGqHc+IL\nqjoVS2zZlwasd11rDIG9bIXobqyeQfS+LgAfSFQgl4g7rl+Xg2DER4eLzFuK\nSA2UAcNOrWmLGNjLqba9Dv1Zc5KnV9Scp0dxKQtp70D4JH2Ht4hA8GumI04H\nOAU+oqFCgTeG+upUj1LoeU/g+eKcfDyzUnBE5oS6BbjdWAghFz0IGkNDfNSL\nVMtLX6ZC+QdD5UAqE0LUo4amPBjoVovus3LaSLh3oWuD4Cy16f9/ywlyJb9O\nWsnXdiBzU0dBfhnbmJmoB6XsGQ8PbgPV7Slu9dq9e5nxwW3zQERH0fjjLxJt\nzmkr/GO9MfndYgXwlI3I/HZss+FZEeM/TaVdqMwaug4DErQh6HxaojhGqQ16\n6WTfjGSkO074XKe6TcEplKOuHK9J3Molh4iA6gE7fl98rT/c/S4EwHCPaCVS\n8CR9\r\n=YRmy\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCuElSpws19mJ4hADg/3VAFPgTkQFsLWnN03tCXNTvorQIgO0q0IaoraoOow0fy9P2vQP7KP77n4OvDj6OhclpWyCU=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.497_1593732323435_0.7856303616237958" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.498": { + "name": "types-registry", + "version": "0.1.498", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b7945b2fe528b40d7560e8e0ee759d7de2540d82f99f0c78a8698f68c2fa3240", + "_id": "types-registry@0.1.498", + "dist": { + "integrity": "sha512-jKPsU3MsgC7lzdELCx18/PUCxX4bNv1YDHDxW405JhrD0r3RRAuTEjy0Qan7Ex/i78jFPWZ0bdIU87B5yrz0xA==", + "shasum": "49fbc8a707746cbae320356cc9c7164779f0f9a5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.498.tgz", + "fileCount": 3, + "unpackedSize": 587478, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfB65GCRA9TVsSAnZWagAA0aIP/27rUywvG91Ae7Bj8JfI\nOiyxJpXn3WsY4QxUsJLI/UI15MQHrdLXbvs8tMQiyyJo3IYt/4QXBYh0VlnH\nf/JTU8+loLfEfM9rmelxgPj1Cb9OdMATHPepGzu/etoaLvCarP9dqdpo3SDR\nZNXVCzUXTGARqDrOQUvzMG3+5EdwB3twmw0iZfOsZtDELWxEQ+9Go2u31pi6\nq1t8gNWv/pcdGU/A3tzIrfkQNogWVI9b8jrZQCw8EixSUoemjh++bDEPavqN\nTQPIghwvOidK3FlkiL/dC7EadAlhDZW2RzqIB0cPLYlQzDj+6/epnTyJRiaV\n2k/feWT39J4bO7F2cUZtp4lpGQULxuPOpc4a4N+3sdoK/T2L75QqDe1PCyWg\nYKkyw4Glk59pHIV9jySwKHviTAiudzSUQX2HYUym9WsnigRmwjfENEkOgtTK\n2yrJdYOIgjoOzA7og8JnmPSwi24iVJlUSNntKr3ZkrytnVjxSdkBs8J5VaJ+\nNINtx00O/Yn0xS/Th+pJSmlRGcmpgDZ49DLJ9WzSksAS4/kb4xfYYcfV67Qe\nUhwfFqS9TTTPoNZMZBfW2yxx+0k2SB07XSpOEiGdI3MKjREmfqpFcg/HJf6Y\n/1K/IfUT8hw+WNTk7mrBNhPlMGsZ02uS1pdxVwkMY0Ha/lmTKTolZnpeRRZe\n9dyO\r\n=Dhv4\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD2vRG5AE9KvcMB9DBA5M9kMMC6frYBy41wlRGEp/3mIgIgIxf9+KEhfeYv2O40zrfG8EwfNmaNHms6kG5NhXlwSSE=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.498_1594338885941_0.9644202766516621" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.499": { + "name": "types-registry", + "version": "0.1.499", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c68ffdcc3de5317332d8ed1f1bd07457939f3ef0c59f92ffed065783e96ffab2", + "_id": "types-registry@0.1.499", + "dist": { + "integrity": "sha512-iCVK9phqJdbg7JnUKfK2iO6xtdvU93JOW4WZ/a47wTVV4vI8Po1zgdwTZd891R4L5PfTD25HKHFQrWa6tjwqXw==", + "shasum": "4dd084fa0d82755c952e3e0e2e00bc157496f831", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.499.tgz", + "fileCount": 3, + "unpackedSize": 589913, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEOm7CRA9TVsSAnZWagAA9KMP/RBWEem2np90S5fnBig9\nenGa/w/YpqbUKaVCv8lWNCzUVCM+Z/Xh16AgavaqX8zNhwrQOughUfOU6sKX\n8UNQfeEaO4r7M4Re8dmapZpJB49WJC0BeQzGcBZTUTs2Wv/LjxnTwYE/Qqj1\nEPJyJ7cl7bWbP0XAAbv8xFEh/hEfgf0DmX6HhOuqCGu6WOjZEWpurt+xW1LW\n/gd4H3uLjmcdl1EsWhWgM4ADb8V3qmK5erfThbAQNHH5WLq1cssUEYDtrN82\nBu6n0HC3CS5RlLnMGTf9j4sv/vBztrHw+WL7uaCjQYL3TM5fCdYcMOAVM5nO\nhQEnpPF9EbyRW56YtfoTrsj+Jj3hfXAzilF4YVu0dDG2PSXUQEWJvpVaubkV\nPf3uPxv8qRk5mWHh4PV9dRHwiWXlFca+BI371XaprNHnWzkWmdNp7uxbwW86\na20Gk0piirv1sufm7fJe3JYHwFopHcvjryqrZ8rwfNjaQ3Lens9WgUIYtrDN\nLdqU2YRc31EaEaUZb+Gg7bv783FHpsTt/OB28lYSJbOi0P4toY/R6/lp7MH6\nPhwqeVNP1WTBzR1rQs55lPSXvGtEAa4w05vksplv29tAhjvSW8lthxsVxsiM\nayKv7QQmb+w3waaMVNCXDgTSnDdcFHc1RRkgckCR9aHSSl9ZNvM0YReO8wFc\n9Cph\r\n=wO63\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICuv0FpgiwOYrUONP6vJaIiuNSbcCaz+MI7QpxqJTjdXAiAsGMvab/24y2c1SWwCbkT/WhTm711TAkFuu5ZoPgmyXg==" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.499_1594943931016_0.9163073798994736" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.500": { + "name": "types-registry", + "version": "0.1.500", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0caba3a2451872471bc0eccf0ee05ede56e0bee210221ab82dd6e3ab2c782169", + "_id": "types-registry@0.1.500", + "dist": { + "integrity": "sha512-cTZD4CYRI+Rxn8YSyW1VAoH/YDUrfFSwD8YHPZCqgA31kmQtkyRvZnKfKPupv6rdqp/yS6cHkf8q5u7hfahtFw==", + "shasum": "b8bb448d2693a811a2bb215a28b2202a81d0b54b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.500.tgz", + "fileCount": 3, + "unpackedSize": 591839, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGiv+CRA9TVsSAnZWagAAfrEP/0AeZSmu80/SbIfWMkwI\nCwNeuirtj6oYdncoNG2ldnwNniKMfdr6UVCtWXaIDrCwDvfg9dkxPcNDwVKX\nmLO6Gi6cG3Fi3YUoYipUUp168avd3ie9FlgAcKc/ZlCVPvqQ8mCEDUpkEI0J\n1+fkMZiWC6dxdPACh+S28mFZGO/aCLft8IFYLc5kY1+axbVLpXJ8UDQcO0nD\nf5gdfquT9ApWUs1x4cvzbkHUYEs2qYPvU0lbKnxBe09VLc/u2m45nWx4NhrQ\n8mR/9r9A53nEGTphegSLm9QEv4PgH1DaaLAvmcbFsoGZYWfghdRAdO1Y1D/i\nbqWsRe+m3vKj/+E8liEYNaHdECG9SQMlXG2qyZXjcdvUtB1ceI29h9KjIIkO\n+S5Jn3yqgEx5HCwyWZJBM3dlb38OKUgtobAc1feNQ51ZpAwApYdzEVekeKTf\nvZ/RrozlvA6pMdiX8Mdf58DWZ2AP7yRBj8PF7E/iatXe+oU2dZuadGgBiQWk\nyY+/pOeIXIi3sF0+h3iiqOYXiUuqXjvGapFxoO4l7dOQBw88JFrPhyn8bptG\nEPER+yC6yA6LkjCVRx33K65dl2+Q0vaGHIqh6aUx0e8o4siBuHBor/f1oQa+\n5fLcp7/8vcaRaryCuWTeIHIYK0uZAmCyOZBdxJ/caqnUBO7V2GZYZdVGjgHO\nX1Lm\r\n=H6OV\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIH7sXCtnJyGAZVf20x7MzU5kHbd5AGIlsy/dtc34UV4DAiBtPNLdAVLuIO9TJuaL92TPJFCeOUvxtLXH+8Zz0f1TdQ==" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.500_1595550717612_0.7255218585320362" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.501": { + "name": "types-registry", + "version": "0.1.501", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4c2de75761658b7e6ada9a245b91b784ed22f8037831884091fa37a0b5ec0265", + "_id": "types-registry@0.1.501", + "dist": { + "integrity": "sha512-3If8vPL5sLlsiP5ka2+7CBWbPZgKbhwpLpg50tvDOLrfcZLndmCCftH4C4RZhysuj8rpgtcLN65cBFQFdTZGEw==", + "shasum": "ea764bd47e102eb911ee4efe9287caeee819d669", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.501.tgz", + "fileCount": 3, + "unpackedSize": 593870, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI2zVCRA9TVsSAnZWagAA3QIP/AjyJaaVOu1B9hM45zKh\nnH0UW7fLuzhF5Hw8uBRRu4/monbO6Ht/AErf63O0g/1KfUm9Uv6DOZqw/3vm\naP1XnJgY5XFPZGcyTCAXOeclEBSmwsPpdhyUsIf6ECm4zbBJwDKs2y+QfttE\nBbJCu+/kNOV96XQddVziI75FaC6MsVTCYmMTMMXET0KOW90HSeGR2HA7QNuf\nwbzjABuVeHh6bgkHVDsjlhc3TTh1WTLOm5rvXblxJktDDa0k3HmVoOgXDTkZ\nNQxjJl4WjS31Q3oo+1andEK/k4EIuVtIWzBjZ+jj6hGb7mxIOC4tL1JFAIs2\nLs+zjTGDloxiE+oCsRo44HNtOvavNUSjb6i3oX5SJEKdV+GIbqHgu2PYAjp+\nQocXYGbFhgZV7UmTFsjRony+hW5ZDB8xzFixfJ/2wJqYG8ACBxlTuoKx1+KM\nyrc4qnsdEFmCuzcPcWLSMft1HxVJ3r6FMUGmIwmtQI8QgoRaW1iYPD3byp1L\nSokAp0ifGrZKmUfrMD4K1ErU1MNA7CYQ9jioXCZ7bRQ9OfXt2h4ErDeoSi32\nmexJ+elLqe17K+dU/NEqFsOcMPZnhLgPgC9YGMXqqvwUxDU/WFk81u/u8uEU\nZOSig6Um5IUDNDu0k7X5wl4+aV88NURM0mJLRyXAJ2jS2hrrCCLtKpyhLWdX\nOdNR\r\n=RFjr\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDWv0Qbbsfz2fxnVXn+QtfmoPA1cbwUCPQm0r6zlo6K8QIhAPE1eyoSU5tDkPtLKuB20Us4VtmAe9GOyBGPPsgzgWLF" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.501_1596157141040_0.8470229845073243" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.502": { + "name": "types-registry", + "version": "0.1.502", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0989a67a3983ce6dd0b8d7663845793f692542a17293012df65c1e55b9fb121a", + "_id": "types-registry@0.1.502", + "dist": { + "integrity": "sha512-TM5/4n1Tb47kIk7Ajk6MNuhKDeo7k3kVF2r/iCu2zoGHKez+DyBG+r6i0TM93Vi/kSKPViY5iMA++DXZ4q5Emg==", + "shasum": "5829d938b7c0e6c86d0657d741463da7d53b2b05", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.502.tgz", + "fileCount": 3, + "unpackedSize": 594931, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLKyGCRA9TVsSAnZWagAAg4MP/Rqx/Lo4vQ3jysZsn5FY\nQboBW8CvfR15FchcmTKQmNL3+OfYynNOf29PdG0XJrkcqFJR5AzoWXkliS0V\nnJCIbaLb6KM2b6A4Jcadwy2cW5U7My5C4+KUTB0MQIjIS2vcVkP+6du2hoMx\nx5LVsZ+2uYdjuocIx2bfRrLU6mns0QnuxaB9KbfBU/Lm4eoGS4eSJ+t93fg/\nkvZOVxgnKVQNxMpI5jh3o/dP6jEkXnLs3XDD9K/qVgy6MuwjbI6330cc3v7C\nVOz+W1hUPkcCtNDk6I6qcLTbvyZm+bJownE9ENCUmHLZhbtcGVlccWNqfqVD\ndGkVQcgLG9Tv9Niph3MjDkrRPygbtus8ADO9BR+w7KIp5Jf3WrEdboq6TemB\nrag/Utw8/oxb82Wuq1HZdgmc02xrndvVI1GVJCNULdRy01CrpWOsfasnNeH0\nsPZhLn0CRk5otb1n4BxS5WAH+Hco/lQA3lwocVfiDEK86lGUULJjPwCXLSOj\nAwkpNRq+TwCIBqWqR2OQXDiPt2jyIHfWkwSxivJyryrjn8kflNALaEOrIjot\nWmS6Eg7KNWabjFBj4e+D5sRjLJ/SDiuiDcUEo3+Pn+OgrZXq1FEgHejRXAQG\nPBAgUcloJabflDiALmUQhQVMLgyKRl102JKtL3K9bj83Ci+9DQQQB+Fd1j9x\nbZhf\r\n=XDDY\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDF+GSKAy1I0c7omd1MTEx6fgc41IlLzBONLsin1uqKEQIhAN/XEFOhIvebGHL6Xx2Ucnc4luipT31rbHADhGJLIFEz" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.502_1596763269646_0.07671692197127733" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.503": { + "name": "types-registry", + "version": "0.1.503", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "cc23152423a214f64df49a257cefbbd6db620f5402ea50ab85cf4f0d61c900ae", + "_id": "types-registry@0.1.503", + "dist": { + "integrity": "sha512-zqioomuT/KsQFEZcSTpxV7NLCS8MNq+SeuHHv5TGmvpKQsBBAQ77r20GgS8abxDBnfzTxp44eBd8yCVUgPEprw==", + "shasum": "c782b39267a2ef31523e3babdf4ff70831268479", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.503.tgz", + "fileCount": 3, + "unpackedSize": 598795, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNeyECRA9TVsSAnZWagAAVZ8QAJAmm4X0BB4mPKDGjL+l\nIjXR+zjKyD5RXdH5PJEUBb2AWcQQNXVJJJ4xLBNMpnXLbl8+3Br6jVJo9PSM\nFuNrk12W9BFJiyx95YhJY5rrq8AQJ+ZIhVEuV783sgthnDUXgGVweCHk1r7M\ngC3anXcF/gu0KN4kTeU+O3X4Ebk4Zs2pQwtT4jAavgJVucnoCVVNaOKS9pdY\nYEBUzCNGOVr7IK/Rloq7OuTjIWl5610AOKrKRVR4nMLBZxwMTF6pqsOTUv6w\n6QDVShtVk1R9wboYV90wBK9kinzPpemLD905ULB18CC3sJipr5acrAtu4Hqd\nmr78vMHe/wYz4GZpNQggv122zQW8NNOY+GM9oV8DL2joZEewPMANDcu8WEDF\ngxgYyfWceSJt90zObEhCE7DbCj+2tfqhZF6zgiYVjnY6VLdSQ/BuqKefltoW\nJkKGOp3sC14SBAQ+YBCx8vrTP6dB76vd1PjKMVHBGL5S4wo9seB3dFpqCNWG\n6WwxxYZuXwF0P6LgarsftyDvSjhNjkclU2sZO/CyIOTW1FhYrmQHi//aQwnl\nTjwHcvcJn/WBk045XN+xS6/LbD2RGR6M6Ia6CFv/EGpf7uU+SKolNgFzIpwO\nD7lor8KU60+uRyJqfFKktsgCb7Z5xlUoYQtzgeeyL9CKHPvcYz8/tnasA2oj\nfBcI\r\n=ORFt\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFohDbKtuT8kBAgc6k1Umx6tzki1ZgbzFW9XfPmQI1PQAiBtlO6Hb5ZNlLLH6GfX9l4gSspvmFVrUHVlMSH7Uvi0zQ==" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.503_1597369475468_0.0829862589391368" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.504": { + "name": "types-registry", + "version": "0.1.504", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ad43f4ce580bdaed6e267c0d352084122975939c36a8b263ec91393f8a871fa8", + "_id": "types-registry@0.1.504", + "dist": { + "integrity": "sha512-W1Lw7O5hDjYJMck9kOfZdkqK0VmN3z7NwgJzLsQQduPAiaeIYBAXukje6yx1xJIb0+ISqha/prRD3aOkwDxH8g==", + "shasum": "29a9733742511dfaeabae75f451781ac67773b2d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.504.tgz", + "fileCount": 3, + "unpackedSize": 602087, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPyewCRA9TVsSAnZWagAAXGoQAJpWzALxMQJG0vpwWi/P\nGFRDAnOO+bEsQmFd/IEOjsCBTPgVGMe8c39E3lzOHd0iwhjdOVF4HN6Uf9aD\nbVULn0jaWW2dwmZXuN2iMKvz5YQ0BKbKOWcodO3Np+K+lmDKiEmATEx/yYMC\nhWmeVuCEsexY8kwT8+O+17CJMX75TR6mXFDe6+3J4PZ+DM2lhfh1wS9pguv2\nsUKP/wfF1eIE/3KT5OTQhsXnd8WQZJG66mf5O9I9YrvkypaIi5Gsr97MIjzI\nI2bFMBl8fPxz8jYUbW0qnWSMFsLDChOGjvPrN6URpv8SQ0DKIpbGJLkzKXs8\n4zAF0BM+M53qpzNmaRySRrac50hUCK/4uXQ+KKViR9WBpvIyzCwwoBev6HHc\nL7trnE2i8mRgnoETKhXEvFVn8hPS771vUGTLkWHu2Rm02quSoLp+wkuLNYIF\nuL3WCphDwj37emt+d5Ee5Nw7gpHS7Au6VW73gddY59Pc/MKj1XjoaxZGjW80\n8iAHI34HhQVb79OmqmV6AcQK20FtgcGeTGp53gJr8MW76ahoENHo2RJAIfua\n9U74iRm5mn0MAxQPYi6jy6EAXGBe+9YrDOSh6ZhKwXBAHA5nl6fdcYwZQTzS\nFiNqSaAttx3fo7n9wbjZEH1TcuEZ35kJYJ9rlwvymKwOBI6W1lL4qqtHG6V1\njmvf\r\n=uTsR\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEqmdSliQkSQUKtk/irOd79wgyBoaSj2XOoF5MYo6o0BAiEA0JwipCwPh+jteOpMKO9wuKAab9M4x7u2XkM5ydO7h7g=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.504_1597974447469_0.07424204302646187" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.505": { + "name": "types-registry", + "version": "0.1.505", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0f75d91ff42d67c39c301dc8b516d8b55f25f3acc314ce03b8f5df44c6a2104a", + "_id": "types-registry@0.1.505", + "dist": { + "integrity": "sha512-p6OTsiIynigVh3fnJmGidyZ+qYHLh1Xk5czudRYjUBZt57+LSRFVx6jnB7K4LapfNX5Va7674iRERP/JhbN1Eg==", + "shasum": "7174ddb0e2eabd7f20738085ebafbdd97e237c31", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.505.tgz", + "fileCount": 3, + "unpackedSize": 607984, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSGjWCRA9TVsSAnZWagAAGBYP/3GjBd/4bHFiZngK2HGU\n654iiUL6DQF7PmpbQ5tHXnPa5oQHP06blziH29lGh9dJ/ao3fx4ByBMgwkX2\nXHhgSE2b5nQc8zUvzLIHr2YuH1OA2nzgsen/hLDIJR10/fgXAGUpRzmPCazf\nJk8tvo04U3DBEsPuPJh7vqNL3jIABjivoJqvoOG/gNxzJi3YI/1mPnseBF5k\nsjzenDWqb9wmskelygxAQTWiugbg58LSR1+idfNqaPB1cUJVKENpYqmGn4z8\neo3Ga2fbAVQc9wirHB1z3YyGX7IxnXzfHhe6M69FMeTbvM/z45on27NpFUB7\nMh7ly19MIWjfAnlVH2kxwHXFyQAVnY72HjfhCtXrB7lHkAu+PBLSGIym71Du\nzcdhfS85c5g7k+MFOpFwNHbyXnHJuBgHT7K00Gdq3t+QNu1rAGX6ZVnSmCm/\nKUjGmAOClDeOxPmxog9Sv57+uUAlZYGUut3xjFPoa6FUnecwPpM9lzn6Wd2c\nzzGRJ+rIs2+k6qxprOOj7KVlKsT/g4NlWZki6LRhYx94rf8OL6d6VevS9I7B\nQCfvDHFukA069Q+z5VnBvnaxkuJdFTJ+GQd81Fy9jO7ldh1dFuCiwiVtc7xw\nVOoYVDZjoAkMcHF82825Xq37r1DXCEe+t+UNHs+veYTiHlOxy3YcWCe6Oslr\nana0\r\n=QGtT\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC4KxjiI29A8+saNJ/iO/PDxoYnwXSMB2m/9FUryOK4nQIgF7WKv5+0dH3xBTwMEqZ4ogEXYL+mzMNNZZY1bvODFJM=" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.505_1598580949986_0.5736522353196023" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.506": { + "name": "types-registry", + "version": "0.1.506", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "638d9e7fa63260701c22d0d51d04497ebfa2760dd2a9025377e5615c3b3c1c0a", + "_id": "types-registry@0.1.506", + "dist": { + "integrity": "sha512-ZbL6mcywM/eOD9SagfdKnlK0qgPCp5QwviW9TRcJVTq6hdcIpZLuS9QqlsWiKDg0S/DncoXRoqabXQWFul1qWQ==", + "shasum": "281b031347876f5176584810c9121c59772b3765", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.506.tgz", + "fileCount": 3, + "unpackedSize": 611614, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUaSfCRA9TVsSAnZWagAAncoP/Rk/bA+RbL0qmDImhTJL\nyi39/yu+dn2hzLuVc1Yj9fHvT1u5PYQDyoChdMNlGQgTTGiufWCZC2IvKgAx\nXLIpycdYphbu7vw5SsWV9BdHtUJjaqS9QZrKcE6w4NtN5oK+OoBu/VN8ALpv\nsxO+hEf56iIiFyAL6zZdL7FrN+JMhCk994Mh7P6uuiK9PWLRhqFLEtUE3RNY\nTh/Choj37s4wCjoj7EP9YXZ70SZQkpInlmVA7OriTS3snHMy5o3EdEcb4hmo\nBL9iYa5WpP4E5oaRUagq22snFZH44G5UhwAvdFD8Ek59S9KlGRzt13GBmXH9\nV3OYCsqhpO9Bx7bhaMbRgM2mSTgfz6iZuaCuYOkF0QalDa+KszKI8xvyhLQv\nUot+obTSPRBGThDfZMPDRWYW15/OJBC2fzqQSNW1ej16P2NkZIPizStsyW7Z\nFfwlmZ0aBEuMfGEBzSguvieMkZoiMaiPXSDH2nfVojzbLarh5S+7f2cnK4HD\nbZhnhCxhPzUNuHi0xGLfmyzT/ZQyB7eD2PLYJvdENTI94n4nyJRtc0n+fANy\nfYUO6+ZwBIum/Iyv9SvKaQkkMLeW1a8F0V2qIqfM5EZhjBxIgbHJoVXgC3j3\nTkFXG2upksjnWzdaQOS+KKRge0zU51lfk6aabsoZPg/Y3Bym3jdrkmz6s6rC\n0nG1\r\n=HHuB\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCdaZVvy8kanf/kV1juzBYZPbpi5vF/sPQoyk5ratb3JAIhAJgzlPL2aljNHDi99J7hG9C1v5CfAM+AKztTEgwVwJdB" + } + ] + }, + "maintainers": [ + { + "email": "andrew@wheream.io", + "name": "andrewbranch" + }, + { + "email": "mineyalc@microsoft.com", + "name": "minestarks" + }, + { + "email": "orta.therox@gmail.com", + "name": "orta" + }, + { + "email": "rbuckton@chronicles.org", + "name": "rbuckton" + }, + { + "email": "ncsander@indiana.edu", + "name": "sanders_n" + }, + { + "email": "shkamat@microsoft.com", + "name": "sheetalkamat" + }, + { + "email": "ts-npm-types@microsoft.com", + "name": "types" + }, + { + "email": "typescript@microsoft.com", + "name": "typescript-bot" + }, + { + "email": "ortam@microsoft.com", + "name": "typescript-deploys" + }, + { + "email": "wwigham@gmail.com", + "name": "weswigham" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.506_1599186078893_0.08286956542309531" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.507": { + "name": "types-registry", + "version": "0.1.507", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "633e69cb46335642b6e3ebdce62d2f8302033e38a2700a005a3cd55eefc6ec57", + "_id": "types-registry@0.1.507", + "dist": { + "integrity": "sha512-BwzmTGGX9fpUU1IWDKaOrptUwS/TTS313QgWkKY2QfVo9b+qGl6G4xTskHF1Al7wpqfDiaWSFvQ1jnQMeBJ38g==", + "shasum": "3ecff4ddf970705eea4cdb42e505edb58e5875bb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.507.tgz", + "fileCount": 3, + "unpackedSize": 616621, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWuKXCRA9TVsSAnZWagAAEI4P/RKm0pMi5HRRgWIGjSkO\ndfysMWENlKMYuRBvhW16UE2wTh6oQAB9txADUmVOEjdJ0k9MqsKRWl/1z0QM\n/5DXku5/OjaO5IaWvomu8OKC4i23d3JA78DUfQxODIgNoyVbnOjx8QLnEZ05\ns2JriPyV9AQ1IakUAzfTXz8IqzvLM/8QYUmZ9rSevZU+msEQDgS1ZSqdYmhT\n7xsXLrspwR1VBOu1woSjWNZi2UWlVD+UfFaXKltlxFTgw/9k2RHy2uOGbpvA\nBZXAnWZo3ac2p2wUYAg+DAlBma2M1q7jDs6gTo1K+w36auJZ4Jgt88toAFuF\nT2ZJDs2O3AHBMdWVBuBJxai0I13wYUyRDQ58tI3A0ywFy4OvGnrMpVsiDtnA\nDWJ3TTPD4JdEnL5C9lCU1xpVYSgZsBAwcf6UXEJSngZonoIHYkxk2MD/M5BW\nra1R0GbA/5zI61t7Kx19quhKq4jD9kiCTauKG57V/MB+Fl3+nvEL5UvzBfOJ\np1ryH/jo4Gd9wcJzZejHauK/Rz96HKi3Da+sJK+3OzmJ6XsLpBSOVz4kwfQZ\nraVARtq5XN4Shu8i3ZEAjvRdXZslzpi3SZ4ivDLq37RLG/jU7pH6GOXTE0Vr\nF78Bg2HVU61wbIdOwMbFJV9qtI6HT5APnu0qQWFuxebpes/ptXkGcdFz1VE4\nyB/a\r\n=fzwl\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDKGgatuVWhF5plZNR2zjQlTBHBR06rhz7vNfnILWuwVAiAyYqxkrgqOO51fM0Pmx/m1/8miaT7yOneX2Kg+4I4PwQ==" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.507_1599791766702_0.45266566604341785" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.508": { + "name": "types-registry", + "version": "0.1.508", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3cfea4b4100b2a109980eb666374f3f4b1f450d4326b3abd1cdbb07a57b15bb2", + "_id": "types-registry@0.1.508", + "dist": { + "integrity": "sha512-y3xhoQdiTDTlrS3VHJYq7eEiwr5Wl6FORj2wGf8UPdVLI6wepU+dr9RxNnItRPi/FC/qijjSVGGM5pY2Wd2dSg==", + "shasum": "a6d52b9b99e915fbee2a951df9b6a82c84448f5b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.508.tgz", + "fileCount": 3, + "unpackedSize": 626444, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZOTyCRA9TVsSAnZWagAAd2wP/0RU9a3xNiXtET/JE6Ej\nfE3qNiU/LEneYWPErcjRkv2f2s3jTk9JPh/aC+PrRkjr2GybJ3e98FfPSpx4\n0dC60hSq9yeSIIBYWB7PHE+SpKzkDzm4XR+aA9sQXVt8zKdFGuNzEYBI5gQK\n5mzMGB9M44SHNXspLNYpjDYHIQJKE1e0zYpwRyzjGc1ViPK8r8nm8yonC4AE\nOqzxOhSZ+/Y2V5ngBV0yjnhpf8pRR/OygbuIGPU2Od9YVMWG0O57A0PnOgsu\nxbwO+T1yqYKX2K3Z+O1gWEupDPUImKfhXsL4KGTJF8k2gepuy4u6tpcVTHYO\nOu6jJWy6+TLjPx3KbFE1kvJaEc00jIIibkNLV6jEdX6K08FbnbhZ1wzj32Ll\njnGJC8YRkgKeCaEzO4M7T3J6hnMAyptS7FiTDMGBoLlCsyr0HCPxv2AF9P/w\nVrgFLYYfHHWn0pVv1PdkE+QF5dlhxggzciI1bQUpEIllyxJ+P/vUQ0h2BgL5\npHfLAA5LE/ALgPBhVyJ+pmDLlcYblHhn7PP/A+hnGTfidQpNfBIP9HJveEQa\n0CiwyD0GPaNqreL120YrXgny/C+IQ6YhVj4X1WtcPYVXsdjKEoFnGNV6ZCMu\nTT44W751CUrBivbgVT7o5VC3cMHXL9cgE89koDeWri01klq94GFEJw4VMiTl\ndo0y\r\n=9mot\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE6U/mjXsCkv25MfjQMEJSqf/ZIdPT4NCCyIUhn1Ok6qAiBl3NzROTqZ+jAVu1Gr5zGeRPhQ3RkttfIJbLj7xez1pg==" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.508_1600447730413_0.2843207931261811" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.509": { + "name": "types-registry", + "version": "0.1.509", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3ab56e26b5be9eca8f6142e34f60ccd60006aed29f77bc92fa295c32ebfcf31d", + "_id": "types-registry@0.1.509", + "dist": { + "integrity": "sha512-w/daaP5ugjHWBwpBUZouYqIbIRLLyNLUgxwmWIjj4Utuscsh+zV8M5V543eeXyTUuOhStSWBlq6Q4h7ErUTUiA==", + "shasum": "9a1775dc39a0de49a9df58f418700b01c83fb0c5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.509.tgz", + "fileCount": 3, + "unpackedSize": 632110, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbjsiCRA9TVsSAnZWagAAuukQAJTQWDw9H8YxsOU+Qul2\n6saFFhBkcaL3AgoXvSBNeU1RGOf5KcVJPn/4QduoceEc5W6y45bYnjKgd+/i\nG6h4PDeBh2l4vme65vb01Pi92a/tXGdn7aBJWrlz2mkfwijRe3HXkGq5hx9/\n1a030dgoRqfCWQ1quwbSUVdjxyD0kRmfZOewv44VmNtIWQpC7f9qSalbEJek\nXJUxS+VyBrB3MadFzfmIpqV4/thBmN4cfT5RbeAoCaB2RbzlGCxvIEv9Hbas\nV5mDMS9hsYV3flYpbQqHgdo8ksV39GCLwDzl2Al0RSOF2xMff1ja/BBF5xN5\n8MBw7JU4mjxPydoZTqyg9QtTgBZqGew1h5/vzBToDDsNHTudbuiqHESxVrER\ncGI0RHJjEZxfoT6ivhwFJ6HLfxIlxGZym/JGLo7G0ulhxGxu+mefuy+5DWM9\n9Tmq8rUAbQ8WTVqra/csO3ZUIRs774jb90YoV3m6+vta8reDvGY8iWANPq2e\nn9PpQD8vmSKpmRyXg6RLvgfgWB3tS/G7YbA68Fdcr4wqUyDmL80EqEVxFn8c\nogEzVTEoHxoLUTfh8RuSOQorimd5RY5pr8Y5NQUI7O7vvGe76Dmdn1gbqp+D\nmkAt0hxntHZirlzvbY3Mf9AVtAJTOIwFXOTbfLLkpoOqG3Wp912fVe6RUpZu\nNsk3\r\n=rSwl\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICkNKmXKZQOtkRDCFQRT5Wyf8V1bKSJCtqtrMzAgPR2lAiEAyYW2euaTzHMIrPjAcrwkRCrWNnkOwbW8ifWmk2ov01k=" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.509_1601059617550_0.66913952107417" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.510": { + "name": "types-registry", + "version": "0.1.510", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "75213eee09467e44df7d32c76966d5ca95915697250e9d49bab46181a21c5373", + "_id": "types-registry@0.1.510", + "dist": { + "integrity": "sha512-7zxKrO8QfV99xT1XrRFPksC5Vnza/Jwbh+QlZdFkj0m4G/gRlNcb1J74CVQsKYm8imMFZGMtJD1CXH+dWYzRyw==", + "shasum": "8891379f7f64ae0d5876d08bd8780d97f2bc6e5d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.510.tgz", + "fileCount": 3, + "unpackedSize": 656461, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd4RoCRA9TVsSAnZWagAA9FwP/jytG5vVA5rU1keDMyoa\nmwgmoZlckl/g9WLEUzOeYniSpR71+6pA8iS0eqLz2DniTHeMNeiKsa9FBqXy\nbhjCiysrS/Ck+QSJ6HmCyxgfkLRPhLDS3m3PHy2VtIJa40NuiF80/2RwXADx\nU7FV9uwZO2op/xQG3YNmBTNKmFEnFMlBW4O2ynxiYgGLchzaHAseU+17QLnb\nxBItRgR3OTvno3FoysSBvK/yyDp/5rc8d6KElLF7ajjvGDhDrzmjOz6pq9gK\nUUGe6ZgcnfAMCu8G0LMVjrB/F4FzabdJmdBZW1CYLdieJ2hSK/GXwmmp+fAV\nGqkMbg0cQolzcj24auwrwYP6ax17g3hEpbQPsg/3WrBzA8EVSRxTUxKsoRyk\nUFwzQCDr43m1rcpwheAvPRmX0MIedDiOtImogWvcP55QQaY6+UMillI1mzoL\nNIJ491xvQx5LAJa9gxXe5BYs+Eyt1r124lkjhucAxAGwwLKI4pIEZjel7H+5\ngyIqo+01LNqzrbkS1+y4uwPBnzZziEL2YOnWAJpffj3Mhixa6vkRlNOKMsAc\nPO+5l5sK2DrR35b11UMk+PhAvfiV9K4JMyFPaj7RD4PovD/pjYD7D1oNOmYd\n/G97QL2Z5V0K2seeRwbiaMi2IZsxyYGXb1JfPKcTR9PIRHHGlThRaR8xLvt+\nda4W\r\n=KD4M\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDVVjJf9vS5EIQebfeMpy7qVGcUE8YKls4bAQhbDQv2sgIhAKM74N+I3a9CygqjT7zxMqmo7CDzqpWZEPkkblUfEKuG" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.510_1601668200099_0.8372232802365014" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.511": { + "name": "types-registry", + "version": "0.1.511", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "18b0a5d2331081a87dc7b24c71716a27df95e7a8f5e0e55a341f219c68ddef6d", + "_id": "types-registry@0.1.511", + "dist": { + "integrity": "sha512-sZCp4DQN7qSl90qLjbv9ogL5aoTxPa0bVJ/g7kU11tRSD2ivTIaSksZlHCIlxE4l0BIwxAkx0jWyGDhFHLtV3A==", + "shasum": "c3fcadd853f007918dacba7309a3d35ae8781623", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.511.tgz", + "fileCount": 3, + "unpackedSize": 659300, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgMCfCRA9TVsSAnZWagAA5YIP/3do4AMxMjk3P4tcKmnU\nqp3NETmIQA/6GMOFrsf8b3wSqkrwB4Wtbd6oJGHSGga8QLuokXwfIvdlr2+q\nhU54LtEXIb7dMSuI7G+DNtOoQG9zGlMDDizWXonoAeWJPTnvhyHEdS6wQ7Mu\nCbcFzt48AcezH0OtRpDeHD/a/tEpGajwnTcjB/sZRBVmP580eY/kcxIRwoLy\nd/yrLa/leDxB9INUplSbIgMWs7+7goJu6AI3FwLoD6rnk/jRGT8SLeYrDgZf\n9hcd4fvIy2oso52KdNgYu8jLtQFoVhe89jLEYEhERcCqmNyOt2Cm+cbE8ThY\neEZOOzZGfP4c/XyLnOYFo5CTzYSTd23NuoNII4uZDG/wnKqXyDL1FZ3bBPms\nsafRaLs9LITI7lKuB1c1YIH7edRrZJHcVahYVLwLb8hAAigiNMs6uBVhm2gK\nlS2JNa5t/rL+bmcYpSZDEjJzSsB7PwIIAOsVo5ghZv6QHr3VyXOQaU0J8kFi\n2ET7pGbFDp1EdRzTCe9YnzumBY+ax4EZ0yKIaY6Oq6TX4ZAmwiLyNxBUgnGj\nUHWH4epfURAENvkHUIYiVPMaphzL2yWmcQrUKy95lryzppOuivhiz1IZHJGB\n0OkMuUDmU87vx7pGDTw8ULM9NJfsJVBEfR3CgPQqgF8/1lgAq9wRuD3EQfoL\nYGDK\r\n=WT4G\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHOy6oX8wUu99EDMW2ZMQaLz5mv7z+wy1x94ttXh2W57AiEA5LsBvgX4rAXBlozlmUFtxEBLRLxt4boTRTq9GNmi568=" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.511_1602273438964_0.8545674725060548" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.512": { + "name": "types-registry", + "version": "0.1.512", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f66a4142f08f184b54d7d0bdc4fd009c79446bb830523fe73a7726a4bb0b7d49", + "_id": "types-registry@0.1.512", + "dist": { + "integrity": "sha512-HSpwnMpf2oiurSBvr3Jsq4xNRBAK2FnX8sNq6CzTY1ouDIik/TeI+0JrE1WBPuUub/eAEHizSPBL5G6DFU31gA==", + "shasum": "dd3161129bb2834cc0c9399cf36ecc16277f4602", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.512.tgz", + "fileCount": 3, + "unpackedSize": 665811, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfifvGCRA9TVsSAnZWagAAz8UP/ieSFMAMdNu9An1tKAc7\nGqwEYhk1XSzTE36BMkTuHCE4uLkcs5iR176QGJxvztZ3G7gQyXvqU42Qa8d3\nXc/iZ2+hkKYX7gKzB0fR9Na4E54/UXZadCd6LpjX5HUtFdRbtATwXl8XWP+L\nidysj61KYYSDc7V4sv2Pbpob7/qb5S56VfBcg6ZXrsqkZxMcy59Xcsc7KOjg\nf16WmFGnQVnWpmmbp/1sYoV1k8NkKoXF+4UuznM0M4S9TX1W4V2a9OjF3LGw\nKJyMqZ+bhFQ9OGwZWmI/54tv79p92d5kDRB3MJ9T886hMEfpWj1xT5ngDHmj\nzewUkXMF1fgfsDAsDMYGXiLCWtR0iuCgJ/XexXYxmKbzpyRGtJn+Egn71Dn+\nQAY+6F0zzhl6xOViNOvfo7/QIAEK0zQVf1h9HwiTK0sWl3uA/B1XLPCDPQ6W\n+uuEQoCaqwzOKGjT5d2bOsuGTAJ6kR/OfDLD5CI3use7QoC1L9L1nnSJ8au2\n96jPcyqhct0VHydmTakW2J0wwGXQAQzfRe7kObjIhPguInjPoYUGvvvbTOaf\nXnHtOvVFQeDxROnO40opBphcoud8yVBpo7lvsoAOavmUwREAufWihy/mC5a7\n0MXXJFftsNJsXGFRE8VeyEf8hv0zTVKVV/RQEGZurCGhTFm/zIVyo6ym/wXJ\nxL5M\r\n=10XX\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFX1iiQeWDey1bHna/px4Qc1+wsD85voG72bO92zaTgoAiEA2M0ZB5UQI1NtOhAYJD+5qx3bMmIzXThzQP+ZIRW3sOQ=" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.512_1602878405695_0.9083173681096002" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.513": { + "name": "types-registry", + "version": "0.1.513", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "aa55be7e3b787d27e6cb2fdb92c86f06cd6a2602c7c5331eab39b34adcf87f8f", + "_id": "types-registry@0.1.513", + "dist": { + "integrity": "sha512-679S+WCl20wr/RPcgKShXv/Ot2098CffUG1lyGdhRwxzHMRfXqMnOtYNS0/iPPfNHbGrUyGuQ3OUUPkYd6qWvw==", + "shasum": "fcb61afb59b1e6931a53cecf3bff53f934c43d78", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.513.tgz", + "fileCount": 3, + "unpackedSize": 670968, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkzbwCRA9TVsSAnZWagAAYV8QAI1LASUrgrUgFH2HBQUe\ncIr1ux8qPe3NXEyNZV+b267XRH5rC7ZbKNyjgxgzB1n/QhQcY1Opeqr6/yBP\nN3gKgXc67o111xxx+QTVlsd/qkJbcoR8JADsPi7pNVrDHgYdX09uq2H6/s/h\njx9Sewfr7SoJ1imYZlCxmH9zkq5tz9BgnrGb5LHmiYpBzP4It6yb5EATD9MZ\nkW8iAcaPVsyAozIi7eiJQNkzaXRTnwTVoKmjyEwowrbb4euSQhbzSTd7Cvew\nwUeAaUbTrX1i8+Vh+5jS/G2UPH0YIZ5jDEJ8X8WCZZgQZW0G1iV4cn41kbrU\n+Y1AW/qm9kee5A3QnqMdExbha4HYdYNn5HEx3XRuKmAyN+oQ/4eYwUhau0Nr\n5ztGKO3QxnQycsFyoZTwgUrc/aK0Fuxcaxo3tvsPjWevH991h7fqTrRwHqft\n4luMxuTlakZPnQbMjKb+6M4la5CS7EmYDs4/CgpNUkmuIaC2woOdRk1gVWnA\n1ND9PhZLN7qJ2DNPQLidGNiByY5rIUmwCQ+nivoPUei/1B1iRImz3cDSmF1s\nBmuOCz75XI6h/sbXv+AHtRsCUcmOCL3TDDFVKNs0VazXnn1nD1UcV65Xgpp4\nmDZrjDIWrvDEufMOPU2CBktWpc1y6mu9pIFffroM+JbR1e79VKnIQ/kL50uZ\nyuD3\r\n=tcl1\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAtD/PrJYQEfommd/7KZdOipvFnjwdawqE7y3Niuk2gTAiEAlAbQfLcOBOEdg0sIPjquf6zGuB+R0F8XHIPiZAa/NOE=" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.513_1603483375677_0.5441478462652223" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.514": { + "name": "types-registry", + "version": "0.1.514", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f90b1e05772efc49697a428829a8e768873b6446b810d5408eb0049d23a63fe7", + "_id": "types-registry@0.1.514", + "dist": { + "integrity": "sha512-+JLSwQ1/OU20az2MZNsYeRThM2av5A9enc5nVzJTDKzl0AJMhoHcT0tKzF2Vu5HkCIHI/R1tD9sm2YhivRLoqQ==", + "shasum": "14ddb507688d1ff08d90feb971e0b3277517dbbf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.514.tgz", + "fileCount": 3, + "unpackedSize": 678385, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnHeaCRA9TVsSAnZWagAAdzsP/2+bqlSHgHrCHkSQzSVY\nb53503Dq4V/ms56p3BdhF5vD2DCKQBKvuIKjgwWwGXEal5MbJQPIg3gWIBGf\n2fnX0Qte5/g36cnP493qWa4bPk61jt9ybYEQ8awBEny8KWvTn1HlO6AyBNDs\n8MAgvQVJLoLJYQdmkrgxX8RGwn7vpV8DU+y2r+WPnVKXMTf/WkxrYDxfMh70\nQ7mSllIWKecTQn5cTc0F3+IGV0jWl4E1rxNHduxtOUT8fTBAPBllXEwsj21W\nnavrW5D8zCsigHD9L8ki5PiO/lSpuaxQeYKqKC8sDnUStWw3LaKBa8cxf8+H\nwlrwQ8sGnyILP+J1NkW0JCuN2hfR0yw5MVrwSS8iH8+/X8fLW1ljMdxJqxw0\nVEnbDDXM99mUF7nknSyZZiLkuq0Me4KkrJZmRk3UpAXQw+zc9lDSt0797zyG\nH0n0NQVgi0VjYBgW8CWCF7OeTMjxOZ/7YelpOVxZuJnDrV2cavkTSzIS2CMi\ni8GUIWLzst8GNxBC1Q3l6aoTROtPk+JxHvzqp+LdY+Lmugd9ob75WRlQUHEY\nHRAupc2GAmrxYa1smjmUM+JdloMny7ljh3SccrtzfUFzl9IBv2um2jUfImc/\n8XRsF+3pVP+KRSmtN7DYFpABs7Cxh1buxmQ6/wogm6beGhZG0LRCuOf9i8IL\n0Hrk\r\n=pgW0\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIA9KuEWL/S/M2MIXWaerbe1h+/T3OTL9Frexxcc7DLWoAiBF3KO+Vf/PlFj7AQm7bL47AeNhvxCoW9TW9mZ6SDfunQ==" + } + ] + }, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.514_1604089753352_0.9028150186802033" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.515": { + "name": "types-registry", + "version": "0.1.515", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "830cad4b59119f692b216ddea19b436b6cc8df913e633834599a1e7c25ef9d8e", + "_id": "types-registry@0.1.515", + "dist": { + "integrity": "sha512-4xJyVSUcEoPioqqUkbU6cL64U1le1apqYxZ+5Ge763kzNafU7xj3t/GesZp4Rc9woUqy+3S9TeGKLO5P2bEaDA==", + "shasum": "0102f3b34172fdce43f9b985cd68afb20bebea96", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.515.tgz", + "fileCount": 3, + "unpackedSize": 680709, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpbPmCRA9TVsSAnZWagAAGlcP+gLkcaI/aRWdfCD3jzm6\nqMVodxmIkp2Oti8cNj/Du8RYIe1Sf0mM3ukW4lcraq+QxR0elLTHpxxkXNoD\nN9h4xSWcB4UlX2Fixgh8W+sNZ5HmwRb5FUONqyogLTErnxqPK/CuAudjKu+v\nGHX5Jnm8CJflU3TBdlbnLgs5fy9PLh1bvWEF0k6OA8SUrrQKpKvVe0pRyhEn\ntI0cbTgvMo1PyYj46hXzWjEp0k7Q9H74ud7WScZYy/l32PvN9nxqW+6wGC6D\nv0QkKYIjwkzbjPwPDehZx87xUmr8j3+J7OEsyAesnPi8Dbz83bTkKSlGFETS\ndwUlepyaAOj/9MLyVOsG7EI0Hg8Dj+sVlwsxaTGcnh+DAIFF9pzM1RNtDwI8\nfXkXz6sRgK+5g0w627QMVCvxDFYr64OYa4Z/X0H7Dc9oR5Y1Shj4j6PBZOtU\n6A0Kf8L3PQi5OmUUieCuiqwvX4LxRCVb2j5ERl+Qs2dBEiyrTSOIzLzvJBxT\nm7EH9eaSSoV3GlgnUEiOV2y6BkhAUuzmW8FGmkzQDCGa/XFd2k2eNvi/BYqS\nhV1vKSqZmh9eony9Lrd4Ka0+ItLS4x+pay2lMJ3fOAWwTyQku3KR2BbQnO7c\n/s97V5j8Pl0OijHW9GgBknjmgYmasql8UPDUnJtLHZSaTa8u7HAhsbXn5KCO\nnDu4\r\n=7PzO\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDs9qvr/uvKt8Zg8rnpEL/SLEQ/RGdKt2FxUV2HJGJchgIgYPt6b0Mlc6/8Qw4W2DZj3xod/3ZLhl/liDzlj1cY8mk=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.515_1604695012217_0.26803664414326445" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.516": { + "name": "types-registry", + "version": "0.1.516", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ab11057dd08f22f603b3ae10b750df18d5f60003a83fe7c704f6e021d07849ac", + "_id": "types-registry@0.1.516", + "dist": { + "integrity": "sha512-BXsk1XEO7sRzoMcl3cX1LvcVnyCNvpCzKwRZhBUtHjLFqUkcbGcJB9C6so/zsgtV1wh6xj8+fGF3Bhk+hX8SfQ==", + "shasum": "246583097e7dd1507b7fbc4914a5bc5838cad16f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.516.tgz", + "fileCount": 3, + "unpackedSize": 684737, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrvIECRA9TVsSAnZWagAAKIwP/0OoHbyJKYQBrFuqMpON\ndjmCG/4EBGBhLCMfnrUfN3+uOTMLwtlf4Ddayu9leWr7cIaMBDhZaX4xT8Eb\nTsAJfTQRbw9Hald2b2+1aNUf87lwj+ldPqSF1ZdtghtCRVyvtKT03dRwtMkF\nXNt2pics6pcT9SfZC+dPA4QDHnjsNrRMSK+w6HKpzK4IT7JdoxButkPNQS4T\n5F1f9NT3n/cnHLg+jKRittTikGR9bkoFBvIle8Pnt5JZI1f7oGnB3BBSsrzz\nKKPvspRg9Id+rQg/1o/WDdHiiFH0P2KrifiOs9SUGZqZciRNSHIWlFnPwctB\nfDz4lLtVEJFZ0tb3cVc/b0nksaLulLuvAlMgJUaM+gr9xGWdM3+Li7XT0a/H\nA1pL29iAMnxplDdzrUdsz/EB1A6Jz2Vf8l2IHhLp7eSnzJTl5iY8dt4c5uim\nVjdpplPVwT5L08NrDpSsFovhbESOD8cwN5beocx1Gfu6IKtMCNNwPGgOKjCC\nUVkf0pAtXPkuMwQy0tFk6wV7KBppyht5/c4wWjAi4XuUqPO9jkk/m6zF609s\nZ+84nFlBJ4D41w3W8EC24EYbB+s08Z/qYRQdB/B9mc8kYAzO6Nj/UNrQPPw0\nORmlbr6IfBNN8vu2+mgG9mAn79K2rVntXNdi1+SvqwD/iJ8MXGwJS7ZQw5Tr\nRvXQ\r\n=HY5Z\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFzTuZAv2AhF+u7z5AOajphqPLe9e3jA76O/0O0ADCAmAiAuiTIMXoOPNury5cnWkSFTVE6599sM9XC84CUNjXPE6A==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.516_1605300739657_0.7828460466987648" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.517": { + "name": "types-registry", + "version": "0.1.517", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c74939c1080f603217ae2a66789dc36a29bf7893c1b12c4d5801fb6933b7158e", + "_id": "types-registry@0.1.517", + "dist": { + "integrity": "sha512-e0tKpcxFeyRLlJ0qsv87EjE2IDLMsyOip9IB0ywDyurs0TrWzGVAgzKw5fbiOdbsfiE6tZZwZ2VYHmh+WBBngQ==", + "shasum": "da768d742a55a78944ff90c60f05b5b128b989cf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.517.tgz", + "fileCount": 3, + "unpackedSize": 703120, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuC1sCRA9TVsSAnZWagAAqAQP/jmNkaZMKiuXlmJqJKUm\n8ewAExjg49uMXwrhmvAQ0K9krLXzngVuL1aC2Qk6HvRFPOEC7NjzYh47YETz\nruzukwigc4mK4y4LwJ1U2kAWgz4q15QZNRIlkxsRJft26wbFva2+WY7DPiin\nkGQAEmOFcErvGVcpapaB44R+IT6dv0+cXuI0Vu5bZujCMAerjPUTn+njaERG\nRwja3XtMyKQwjHHQSvcvkbf7FambgDOijwpzrZfvEIV2ApUWPMbhJZ6zfsoQ\nBXTR5KtOZc9lSfSvVthFbj2OjyQ8y6ggDRUhCbfbbqOuBtiCRMJ0+/Og0ZWF\n2dXO3E3cWpmyXP9aG/HHcwLjDa/Vkj4fIHOOSPzlnfTeSCnak1WYajNdZ7sr\n7f3dYUYjP8Ctlmp7bl4tNYPc/aFKhrDTxmLDlcm7iSJmCZDT9k8r+Bp66SLw\n4mUEbett2HIi2r7vKmCKEk94ZFn+oX6pd3it9DTDCQNy/50jEh0fujoFMkAf\nRUC2E6lIVfcfJ6Ck38TDW92aPPzB/uZkp9jOAitEGgSEbGcb86ldXuk8xQAn\nNjyQ7L+3Hm97uP/fCPqEie4Yc2Ztu49UcRS1LaRdQxuEIywg1OrmW7n2t1wq\nvVHP38IR9pnECpMYWMX2HAIH6UkJnecIYKUVZYjvRY+QOC2k/eKn3ShcqAHS\nQSiB\r\n=N7Cq\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCNQvOdLjxNZDdYhnl4MLRhul0ZrkblK5W1lL9kp8sxqwIgQya8nP1HRLY+AZx7IRexhsu0vg9F+XzLOf1MdvPRMd8=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.517_1605905771500_0.46415337195306705" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.518": { + "name": "types-registry", + "version": "0.1.518", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ca7ba09ac74621f8bd04a53f0d75f41aa0c07fbda6b885feb7317dfeb01aab03", + "_id": "types-registry@0.1.518", + "dist": { + "integrity": "sha512-wlvQMHLVsmFaCqykU214OrsO5i62FhDv9n4Om90yM/ctAFzalvQcWSO1B5ZZkMbtjBEEXjozX/dvRoqjkRwuOA==", + "shasum": "9e88941c8b10cc186ff69530cdaea671c850ab87", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.518.tgz", + "fileCount": 3, + "unpackedSize": 711115, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyRcBCRA9TVsSAnZWagAAULcP/1OSQjw9zHXUn4oxB+kB\nqab9kO+JbECq31julWfIjuvIKlsbKPheWE+sYIAKq3AzgaudVk8Obs4NgHyw\nf+85mPdXDDjETtbUUefP6ysg64nEsfLfDom2T6UxMain1wIswkZo+jBeVXnR\nLxrqlOYeZP+HRXZnXb3GrOhtJ9l+DXE4HkdVgVfSwWr2lrXD930SxqIgia7w\nv+D6eJWJKwMK0suvY8ndWe8i3VPu2/eNBcKFkHORrAa9sEKkGBbP4S1nJU9V\nvLbxOnBS0uTF3cnptw9CTdXmouleq2SFlaNw6VLf6Ad1YHFqjSYSFfTaTDD9\nlpTGD/3vQ88GdPu1kIvc7iYRDhtjG4yhUvxcYYJR1k8HghssfNGrlmYV4fYs\nf88NSuBcnGTbUtFHWtCYMIlP3SI7nNTdR3+a+Vb3Q4IY1Ws9lUUChuQMB+v0\nzhFqZmmy2wxzaE0JBeF8Y16bBX0KYwrxCYjIfitRz+ejavqIBzcOKH22sIW+\nx2Wg6qS03op46Q1MhfZQ6BJjUSbBitBiT9g8J/K7kQymvoscd2SxfroIcZod\n504/X0BiNNuRFapKgwClP+MKgZna7Q8CkUN0c3xm8hd4tTTBkFEVB1sLYiDR\nR5oprM36vd4dQ9iV6p2Nl+699VDjjbP1Jd9iQvDSl6WRMIqfNxpMxD7qDIxZ\nABIW\r\n=9T6h\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDZ4wr80KTg4+k83rUvsfXbSMz/Gt2LY91mNHtCtGGregIhANtlul0yJlHV9U3VgPcDfqJdLx8MkbBXDBWBu5VwE8j4" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.518_1607014144962_0.5777140371680529" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.519": { + "name": "types-registry", + "version": "0.1.519", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "01ca71ea912b9478edff92643566b48206133770fb55cfab64b188b0b7b9f683", + "_id": "types-registry@0.1.519", + "dist": { + "integrity": "sha512-ANtV0YFtlRURSV0VyqDgpH1S/VBd6AHGDC2okEi6loO0QsvzQxIIL6AKgEsd62sz2lu2IWwkVFTBsQA7FOUF+w==", + "shasum": "825ae85bbf681309af70d8746025f91b3b6ef791", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.519.tgz", + "fileCount": 3, + "unpackedSize": 713807, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0lTCCRA9TVsSAnZWagAA8B4P/3ATnmXJVn2mtBInVsU6\nXDkJEaJKHgnrmgSDeIENCuXkX+14jXqEXY4f5ygjPey5SRCBZXtEMbevMIzV\nL+fGaEz22wi6TARLRWF8hAw7J7rgLnWuVvSxoyf8TAIgW2D3St6/9L0c0XiE\nfoFp+qGncLZiU+AUouYyrcIlG22mH3i40i+U5IhK3q5t7vfsH6vuOLc0oVw6\n5Y2FCj5dtktBRT/39isS9PEHxk1xXLi6jDpfgx3oOxerg9FutFrd3cUPnXfE\npm0i0O1nqMk4MgDy0T/umrsyVevVp022WsXVzu+xlwF7GnDoeL83pO0/TYYH\n4SFtvRibuGSYIHmywOHgZF+cyXBJD6gNWa6py+9trdVtmVwevlrTkdU0A1mu\nDw122jSxQVZHxFh2gXWIpmhOzmqX0u7R8iUl19icx1xfNyFxVGMtJQQOBBUx\nA9nHpCyKR5UwsaIwZrLbRZVOhH0BLTe6mr2mTkPxJaNVzfFqw4lUf9I2JMVz\nTiWfqKoTjvW/xtU4NtNJAw2bVAIhijrILzK3HN0mOunySJ1kgq2ed9sANIgc\n2JtZhcv4GC+7ELs3EdFBeXqDwTgwlLepLqq9UD7ZUBUSGr9d639SXbAV51d+\nmvLKhgxoZcASyjnx6CM4Fx2wVfhvIjb4XlpQWRu8wb14D+AFlXKCQtZZkOtg\nEKDV\r\n=5brk\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGo97p1zgIKZOc88K8lHIqMpzaSykJ75eN48/rj0Y3nYAiEAs8VqISlGVgzdYHGftC/OAiudcyhaa3B8NWxASKu5USQ=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.519_1607619778476_0.7267192649019909" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.520": { + "name": "types-registry", + "version": "0.1.520", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2bcf098e50235af34d3fb2c33acf6221b5d92bd36b913d9fb1a0cce008621f2a", + "_id": "types-registry@0.1.520", + "dist": { + "integrity": "sha512-pd5ZuMzXDDSeONpd2bl6hOLDu2soguWBg0lx2wk884usazppglTDrEcahU9DIdQEydx8lq/Xd3TtIoHXK1OpIg==", + "shasum": "2fc119395be7948ac8d40cef8701e9cbb4382d76", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.520.tgz", + "fileCount": 3, + "unpackedSize": 717160, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf25GdCRA9TVsSAnZWagAAD74P/0D/s2/BxUGDDMMxN+BR\n+TvJYQKqKyxsIglL5BWHkeRWOmPVAVhqzVzxHMXEtGKOWI7V/DrGqdjpi0DY\njU3f5XmZHAA76c7cAv2GWt1fM8N5WZ3TY05ZIgpa79tFMZOZK8QU0ma54DdH\nKNs28KfUgZefCXf8zZqOgpR176TDU4G/5PU2bBCdy3bSxYx1OuuVIzltbU2t\nScwAzrYpn7Mlh+Pexi3MdagpXnjNNuY+djtmIRpMZnqw9PDysi+nGZenyOWg\nzPRjZLquU55tRXsS2XFXCzkR+i4m6nRNozhQxWCpnx5scfVPEbR3gvN2icyv\nqg14/kAfy3JpnlhrLs3jodloDhtxHaF8UwvKqaeWJ+giPvve5TdzbpZ0/xUi\n70/FOnswFU3pTDVRt/4oNT4mXQeNYf66i0oH8du8MpvdF2WPSja9Pbkfi28b\nm448eaO1F/FBeekw0PjoQw4mLDHD0BBZ5heAFu8CjlkPHssBValI+3IAU5ow\nVu+MLptNQEivQO3f2AcJEIvmxoE/X7AIxV4YAG7o4L7lLq+NsNsGxNXmAWnT\nMQBVZQNDfnUdNZvYuB9J78reA43UGf7s76uKrN/MtgeeuVOd6v0yxlDCX5M4\nsort9WE7lvUGN2FFw4lazmSKqLn0+gRvAQfaoRXYBkixjPdt1jtpCoGWFajz\nJ068\r\n=2rLc\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDnDaSuz+Wc6QUiF+iMObBk4BRrsiRzaz294Z+tyJcYlgIgE939htJsijQ6FoT000AS4HNqnqRn9MHMg3ogeleQDJY=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.520_1608225180885_0.39533622818518666" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.521": { + "name": "types-registry", + "version": "0.1.521", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ac5736f1fe20057f9d27c821fc68a2e44635684b64bfc4caa98850094512387d", + "_id": "types-registry@0.1.521", + "dist": { + "integrity": "sha512-aJZuJ6YUqZEklPXYy5pFdSPc61tuZs93r3ByhLnHwYJ0D8OTiGxfIEWLpCaKx1n8W64hDcjw+woJyuLaoygsMA==", + "shasum": "1729ded582e0e069cbe8f5df6ba6277b4399b288", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.521.tgz", + "fileCount": 3, + "unpackedSize": 720322, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5NL7CRA9TVsSAnZWagAAKioP/RxAbpSb2ED+c4Xuob7Y\nU0DBsaeF1OZ29u1mzBbrYlD7nRnSM/mG32wK/3SmvungxqrVEcUFaVscyWeZ\nROfs9Djh+qB7Lnt9Z23sPU6BFidw9dlvSaZlrtam3JH96ZpTBvAn4zFOBqZE\n8PBa35FypJkeok8MZvpaN4LrvgClReiNZBcGp93RMIURYDJulKzpmqlAD7oT\nxcv5UDWfNYcWKPg4zqGgbzzuCD4ndIcY/IrtK4NOj9Y0WpDIzr6N3Rkpu86Q\nnzbHf8E86GJSPXW0TBC76412L0ULt1jF0G/sjpQ+SX1vSvWqBgwz1YvLGoG4\nrM3NydifONPoQFKykwpdNXALARp3VGSqEKOU72vRD1BPJXQd7Fhkt/W9MYvP\nBLdWcD/wHNiOgS3S8yM2jmx8S9/5PVF9gI6D8Yxba7Hrfbsl6BN+p8rpO+eM\nmCli1Gr+ATnAofngzHKaohbsjOuOpGGza15QHHE1n581pQOW7MsL9elrhPZI\nsJqoMXkvYjadlCnw41nsgHgUURFPsVT46hVcYWakPgy8WLgkVy9WALf2SIs7\n9m05ntJ92eYUjD/MAikKyp/wutYoEB2lrwps3jgWWzxNDDPuw8rwoVLfRpeG\nMd2A4NREmCMT8g2/k43Rp+HFea5wXawPFroKzwWj6en3HGRzFvV+A2M+MMOv\nqGII\r\n=EyKY\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIA9x7WrlfZu5DGx6LAx9GUB57JPoQEmDUCQsnivn5jeGAiAQZob5/LwSiss32bkcBwph/u6inxS509MY2e0aWb8QPw==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.521_1608831739231_0.9802342411499285" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.522": { + "name": "types-registry", + "version": "0.1.522", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "bd72253f976ec686ebd54fc2e8541f1ec3ecedfe2509238c44ab5c3b6100f46d", + "_id": "types-registry@0.1.522", + "dist": { + "integrity": "sha512-/PUWA0sR4z6OXMVWvebgVcUgeJbPYMFdPNc/wjGh8Ck3o4J+ra835p8xZhc2uKjcZ/SKrYqgtCm4egV5SQQqTQ==", + "shasum": "17d6b1327e9885954c1678d397d20123c707f05f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.522.tgz", + "fileCount": 3, + "unpackedSize": 721247, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7hJdCRA9TVsSAnZWagAAGIcP/3U7ojDn5IClnpBI0rc6\nGdnj5YtTbBYcw/QPIkKUQs8SgKRh3lE1ul2zcwqnPhtGXX1fyI01/lXG7Imt\nnOjevk5aMTtcDsy/IOoBI+6QMunpqaMmCYdMEEKS0twY3o2GPua9r9Xd1Dxy\nKx//AQ0lMp6xREoSsmA3mXOvut4DLYpOMgcZy2SPIHxHQ51lE8/ieXEFXShZ\nK/suGHEhCKUtyNPPGQyGsZm2SzVnSrjcx0afpyAGA/RCQOyhb8jI3DWw1wt1\nDd2YAz/gxlagNCOPess6tVuGTO4BvZz6SINz+1+tq4y6BAXD/s5JNEHdw1A9\n/F/CR6icss0SYF71jcnvDqrmNF8KHDr00FezPqTGixZkhEBiiPmqWwhUwJSw\nEte+Bf0PZGLSJeUaR2o9RgQQiheKgrz5qKdqfh7M3nuI52bCjDcQnP46UddC\nrcOTrfGVAQfPrZcVQTDHfZ3kHyhxIJz9xMCbO1VG85YsoqRqJ+ae+PwnaDnR\naF1E7ddrGfyOV6i1fHnIY1sDoEnhvPR0JDX3sygsHV9zyLTWm4kYdoZJxhdO\nX6eMGXp3sbsu/b3MxP9vC1mscmzkg2DADesdtHf+RyVU+83ianu83tJ3ZnBa\n+r0NykceXdF+/hVQVP+DI/ZD5lctRBngBHfEC70C8U4KsCNkBDleZTv+N8Ii\n+WNp\r\n=C6kI\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICZ5nEi4GqGqM3e3pL2e+y7yZNb1zedQSbL4WH2ak2n7AiEAgB7hE5jWe685AWEvNp+ZjWgACdTjNFvaM7+pi6KgEW4=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.522_1609437789294_0.37509167776493757" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.523": { + "name": "types-registry", + "version": "0.1.523", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2919bd089c691939fc08063e3014db4a1e52a6ad6edfef9119fc038732f1bc04", + "_id": "types-registry@0.1.523", + "dist": { + "integrity": "sha512-Sn4/PqWWqVp7jmWHsmgYOdr/0rHBs+CqPuNG1ZBwqYrf6jAmhSwS/ha6gX5+hhnWhSKFTPQhAcxVUdcUb4FsdA==", + "shasum": "9d2be2da75b2f6b1db51a6c4bc1a5ba72a4a7778", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.523.tgz", + "fileCount": 3, + "unpackedSize": 723004, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf903cCRA9TVsSAnZWagAASwcP/2VQgY9hftSPbuXkjtb3\nNYh2nD7/OUBOrwOk9dzm6JfnHpjlIp8n0fjqmW0tlZkYNCUBiEQvT/N7Tz+7\n4o9/MORXlnNcReybf/2Kbw/9sSZFQcimwPUmdtLJXEr6AQpfwNT/JgxWodCn\nAGbkdtXuWphMdYpwCMgie9B3N7pOs23mQm/T5cLZTdCocsEoqxyzrgtnchSS\nV94Z2lcVFSTHcEjvR4zAOBu18MjrvAbhH3S21jOTE0WJOJUEuw63JDQC3HcN\n86PkZnt6wgn9KfCEdtOsbbZc2Dqe10sRBxEX+nRNegZkVLhvhJC8y1A0bI9N\nC52RqwOnCdfk23GZH+AjQauN0tCWpqhAt/QG7CNLSNIfdOEOAVv++l6z3fMk\n466v/RS0X7jl0YrAlCx+UMLgxMjhF09mbuu94BcaES/t7SPDhxgwkDsWAboL\nObrgnH7ti0pNlc4ZJXjkV6IOcyKV7bfm/NthXAUWAUXRPF8HDpnvcOZwEN84\nHhHR2rY4CJRpBMsln8fRDp2V1Br0tXLIrK9JOuRU2FZjdg6rqeaZ8FwtCevI\n6JFhRELPbRrl+cSwekWfKlTHzQlUbx09uw/hUjAA6oPCcoajDH5BwmVIV2VF\npZn8E8eqsZ4srTLVSAoo2RkTwBS2iYeEMTVs+8uiUoIjM8dRhmZBL6UmCufO\nFkgB\r\n=C6y4\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC4+iVFvzKKwIpWuWmUoeB6yqEBBvjGWtjVQP4xOKtcNwIhAOKiOFPBS+ZPk9mCosXpCbW2wJXjTgkLuzMC4dqJea5H" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.523_1610042844249_0.6093304499850511" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.524": { + "name": "types-registry", + "version": "0.1.524", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3d1f191bdd068298a3f203b964ff9b22162c112158aae8c6ff6dd7c74f23165c", + "_id": "types-registry@0.1.524", + "dist": { + "integrity": "sha512-2bHJLsFunWfH8Gqi+3w1ACg8Dl43u4W+MBg5nYcuMF9Q9DDLcgmTgvgOI+c6Lm1dzxftMzN8sQXIeB1VksE3PA==", + "shasum": "59fef96d2b7fe0de7e261570c70da9f09c8a9b2f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.524.tgz", + "fileCount": 3, + "unpackedSize": 727052, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAIl1CRA9TVsSAnZWagAAseAP/je8oX/nGqhOiHpYRooV\nhgFXgj3H3hv6qLGPvY2TxjvVes8BWD2iHJs19+iB8pvBx7XTpSbEUzVU/V9D\neNtU1Vp4SqWc54jB9+gXNJ4o6qCdDLy2iVxveTtY5dp8REwj2GI2QHgx7/pq\nBoayY5QdPGTdnrKR83Pob/R+5bc40QDT/VHkVv3K1Xc0bI7x6Qr8bf0lsy7i\ncaKy4qRkMl9ozSb4fUExgVOzdoRf6g/rcVBcyBy9g7DIN9TguDjGz1PuWUEp\nEFJNssBYeTfwhzxy2VzqSJjsyke7GrqfvfF3fSQ91+zz/sTbeNVmbbTdOHai\nBZY1n6c3G2X/omkSTlB1MNyjsuIA/NipdILHa67A0gXMr8KVA6Oxt4/qbHSL\nm1V9Ub+TwpVtWBPk4cukOcB/Q/ZV4711HmA0pvHYcaCxi0WQX5YR+LBK/pgm\n9gFzHSirVsj1ZVOPZ2qQ5ZLduFI4RoaGH51+SedxBj1Db7dSp+CxCkIt3Piu\nmcE8yCjhYuHRpXIFotNr2QSI5uAXCHjY0Dpyi9Hb2uymzVbbMywOuXQLXERD\nJAg8MtWmc+YHS9obM8kGKhZX3FdcPFpXsrWhkqROFq0pQeFNu2hU9G0RDT66\nJ76m/BQZP/frNGGatg0e+E9vnxG/b6zK1V8IF5Lpkp/VTgCRHHeOoHhTBq/f\nD/8a\r\n=vaS1\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEvmxIl4iOZ864/4m21DD8YwLHDTLIjkjqf2anRlW+AmAiBcui+Qys/K5nqrkreKmfHN7lqtNF1hHPgzyHhap1mmXg==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.524_1610647924794_0.3862366918498783" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.525": { + "name": "types-registry", + "version": "0.1.525", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ae65c897c06f68cdc54ea622c6861e628ee7f8a93656365e3192074ae997e7a5", + "_id": "types-registry@0.1.525", + "dist": { + "integrity": "sha512-ZyHyfzZ0e6XWpmn9BECxF3g5MKnHtFjcEBBtZ2FD8kgkx6GG0+GdNVVAC5RWpqQYTssBphp+YwAA6ki3F/Vrbw==", + "shasum": "bab4ca95efd6fed8c08fa7eabcb81993316bbc72", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.525.tgz", + "fileCount": 3, + "unpackedSize": 734305, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCcldCRA9TVsSAnZWagAAIYgP/Alyc+xkp9VcofIRxopO\nXKRxeaIpX7kixWEhzLE/gG1IibKT8OUnYQiz02/CbjjG6MfzonTltoJBEqp6\npLja1efSWaF6oH72nWnhZpBqGGKB+SSR0zIxK1b898gRZSox1bENgCGju3i/\noWBBjU8Bx9QKeeM4KLk0iCN8GKqIEnmQczWJbdHUQTLQo3tvRWPIrbpqf183\n0KqBIoTR0a4/YxnuptsqTO1l6W+K1O5+XYf/TdBHAwOkKAe9QNXXL+x3uYBv\nzIkE2CAX+lAEFn8fP4IKtKebB1GvoFOAToG6P0QF0NmNp3U9n5aGJOarkWOs\n63DOpf6+PZfJl/3d8IgtFJVYmqdjEatxCkQx6Rw3+slItYGc/1ZfzoQxlHc+\nFujCpTULggJ7LkmWTEOWAV8odq+37TDxfgH/gUVOn0sT79DvRejlse1iKl/C\n7Kqj+qX6Y7LBYMxxF0/4uT7pfO6m13QomFcs/T1A8L7N5YH0PwT+wxODYve/\ngO4b7blPv5WlgiNrDWypr5paWJrfyFRtOphi25LzTkwy+yLgv+3dpSpHrcbe\nRdXHiXUR286KIdqhA0QQTLggq7M8OwfJOh6DDGX/rY8f6/pyeIqnCLOa8dRe\n8ByRnjac03OPslJ+q/T4eS4JzdcnG0gJ7N+NN9IHFzMvr9JolYJmdq0MaSn6\n5ovl\r\n=QSpJ\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEMNNcEztM8xL4hgPo/El3c8ysnQ8+C+nK87ab/KVv+qAiBJAVYFp0cPV5ALAGZl9uRITqD7nvn2ramQG7l32eDRqg==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.525_1611254108586_0.4952551017789879" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.526": { + "name": "types-registry", + "version": "0.1.526", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "69a956e25cfec560505eac1c4e3f3497cda4becd29a9d19b01f5126e77914bc1", + "_id": "types-registry@0.1.526", + "dist": { + "integrity": "sha512-QXDfIL0gYWzylyWTcRXJesU+CEMlhcf3pXYMQMFxQTAmJO1pr7Z1TVXsmDgNZdwO1/416C6bKjti7NgCDk4elA==", + "shasum": "d907b3b7fae6db9eae060e36b46ff9bc5b4c8198", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.526.tgz", + "fileCount": 3, + "unpackedSize": 737966, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEyCRCRA9TVsSAnZWagAAueAP/jLmr+Mv9Vo86Afg+2l0\nnnu4Z07jB2n/ZmGbzmNwcsjkHulWAzitMo1KguWgX0XT3o3hZ55LsURd1W19\nu66rE7Eibs8afqBOjs+nuEG7T44JgP7pSpT9SbqvTgElgKhlqaICKjNLcf0c\n2qtbCHdpejmPXLorw2I98BXXPpfdfSw2/fbt6/6E5urADli6dBUql2V+lZMO\nTsxBNSAw73fFu3zXWagmdY+1z0Ywpm+5cRuD3rJ8PhpncZHcDJeiqEUQPLfS\n4DkDGpPEKXIQA7eD4D0wHEAtHSRx0Bfw5S6Ep1gP4bB87XeKqYcfmVqgvD6K\n1lw6B4orPx+j7z9Y0vgIqoBwUMoAwMEz1MWLIMcEGkh/A+tXf0fBXPAwRLt4\n5amFiXnw6KXBf7g3Gy98/Smg5M2BZeSib1/21bNB5mB7UGrx+lcNxneBcFBS\nZKb3qUm8/u8ITh4bjynF5uWfcg1D4/se1cpAKNUpNPLK/TDRxz4bR+LWjYQ9\np00b1uuF4R44It6LHpXoGIpvClFYmArwOX5FkZVDNkXSZJSb25aJGIlXJnn0\nou8BtaMC9AuDsKPDg9RXFApfS0HlNMONfDxcHcaNy/9Iq9bPfvG6HKH1jHsQ\nN5zPRSz9kbmXB3mNttFUCPD+HTaKhnId/aKWQXAwUijeowLzeZs5h3anOm/P\nicRm\r\n=q3aM\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDvcanryWnHzLHlmFbAW9A3heeUSw4ea8I0uq5HpW31TAIga4J0Wt7EACiVYdWUnwZ5TtaRKxBgQgW06f+j9DHXscs=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.526_1611866257133_0.8974819913916543" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.527": { + "name": "types-registry", + "version": "0.1.527", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "32106c2291bffd899259a93f127e4e4e0cea6ada7782fa1d908522b9a11f0e1e", + "_id": "types-registry@0.1.527", + "dist": { + "integrity": "sha512-lI1q5e8WMeqnVjIxR0879e46+0RvgXPSwfMuDE81Ef2KVa60Dzs0HZ7Zwz3p5XebXUMOB8LbsfnV5rwVnKLZ+g==", + "shasum": "b7c5e866c9b65e366db0974dfde0f48e6203662a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.527.tgz", + "fileCount": 3, + "unpackedSize": 742143, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHFurCRA9TVsSAnZWagAAH7AP/1E+g8g1m1RN/3HG+Ix9\nZY24XFsKUeUHaw7UMDos3KoS5iQnLVCM3DAB5CWRDyuHXTUCSSxakS7P+vDQ\nBjzc8F1g9vqo3usesZr4VkeC5zVZcvp2kDNPvJwGK+2LIstggTAAZ30/Cglo\nIgn7KUfMkXJhjFQUe6XlApX/1ZOLDikMKgFL7P/jPnMifHhdAG96R0r4x9CB\nZabDRn18ykvGnG2rriUcFy0bkwji48jaDP+ARZK5Q4dCEUokQzFtT77DOCiJ\nV36bNTL4bPxln25grWOR1EcvfHJ9cr1ZYFDTDqutGB1W5e5nWA4nZIMMDRbo\nGy3hdjVpItDCn1hpStguBgloi0vn8hfZpMKIuYMLmBnniwmjm/Kev4OuNhnr\nryZ7dkMLarwXotLRZ5H3Mx+4nkFwMKfIp7mf89DBLRjO/a4czdnxGVxefhLp\nRlydiTRFuX0RzRc5UBEFm+mEGj52zZaDPmUYuDEDYqIy2vtwV5BN8aqcswE/\nF5yQf3pnECttlC+UQVLuuDgMB5gXU/Ks25D7d2QjyCj6RuBWGZ/g1uSSK7kf\nBQ6ryEdVC41PNfObuDDIkjGjinMgRNKXbs7Ez6sujr89dMp8ytg5gG49kNPL\n/KolINr+PO+kBBG1v4kyOHkL0hGGHG5vZIOhtqktFQRUI/MxraJZfJ7TafKZ\nz/jJ\r\n=ZYek\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDhmoB/GSZvgIouAhM4ZhVxNgUsozJafAkYMmaXFm21sgIgAhN/l6AFEClwv7uBKk+S7EGKPInFyHTgiMmyu6fe1rA=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.527_1612471211208_0.9814853012802864" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.528": { + "name": "types-registry", + "version": "0.1.528", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1aa02b19b37b051c8c2f26559d2f01563ebfa185e0b0c114645cdba030866674", + "_id": "types-registry@0.1.528", + "dist": { + "integrity": "sha512-1WzDA/ORVW4SzTjoxn/YDXyuFyg3YVODeyVljPvOC6DvpqPhdnw83tv6EDFTNQ5CfNthW2YMkmKGM8Nc29JshQ==", + "shasum": "59228c43ce533af401ef0cdb8390701925247b24", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.528.tgz", + "fileCount": 3, + "unpackedSize": 744209, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJZyZCRA9TVsSAnZWagAAoWcP+QAoLZNZIRhVMlrDFknk\nlcir0riRrsG6nHH6dKoylgISpO+SJlMYQQ6FmM23UIA6jmnZ0d3kpGQVFd0m\nT0Ay2lirA7JPfbUzVVBBe5v3Wb91Fx/+ISqsT+kAib+1DS4/TYsvi+6/S71/\nThQ04om+raGr7L0rkT1Thpsd4rpABUjRGRaC70zvJE36FnYxqEmy/TSSlIdc\naRuBp1AKbETqj5seGJjbMm272Ivd/xWRw2wJ5aSC+8S4/9Qjp2cDTSTVkyc5\nGRnK1GqLRWyH3C8pqgHYV0zgBqhJxOkRJkrJZsem9Mxy2D/Rrj8CUpARlk2n\naZ7JzxC0UhsZ+RUOYnHbLEAzlw59ORk7l+k5wanYUiEHy1j6Wn7xs+KRuz2x\n6HUT2uAx5VNobZ9WM9fPd2/PrPWsBUESZpxDnNRYe1Tb1bjNGRHzWd27Yb2r\nYZi8nqU2Rp9uNtSAw1HN3TXFefmcPPLy8Yi39DTB0jAonKfRiC9LLblSIwrr\ndDG6/zFTeGZb8kvChzz114lL+dXgJOoIVbykof/8RQtlfWHCXjDzQdvuRXgz\nC/xhOJPgKWGAwZlEjTGAIzfidD+LA5Tls8aGiVFcqDQTqBf2HEFGIe18TwSM\nHf9pNyB8sBbhHhw5r8NtPbouW8mp6MqObhVdQeRzyuJ3j2mvvoBAxpP6Oefl\nUOsO\r\n=cgA+\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFPFUmwTshFqS7OuVmvcnaV0GelPWkn5F5h7+ZVR6E30AiBHoJWc9GPPvAKbodybXvYW0ktpqQBQyCh1aNTF2x+DRQ==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.528_1613077657294_0.7890040428379013" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.529": { + "name": "types-registry", + "version": "0.1.529", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "58498b75a13d89adb302ac265183d1e12631ce20771470c3da03cddae3dc11fb", + "_id": "types-registry@0.1.529", + "dist": { + "integrity": "sha512-EfYhxkYymFy1UdkuVDEenXOG2yox+b8uhelRqVhbMg1YXjlt5UWH9QeDCztiZgrur4kJVKEFCkgmP38BxoirGA==", + "shasum": "53b770117db6d205d016cb0cc44419126d90b9b5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.529.tgz", + "fileCount": 3, + "unpackedSize": 748220, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLtqACRA9TVsSAnZWagAAZjgP/29FJSNT8+SLHvy/f5cZ\nlNMTXJZVqrfXGGZzdAbdVLJeDiwYl3AKzQ8wrkXUW+9kMgoV7op0vLJyqRr9\n4MJ8C0yIC2pMdvOIkA1gfN8o26MZtjrH67IslCqanUUdZuQ4cvuGNnic8klJ\n1QqJDBnr2dhoHqTytijA6ERLpw2IWpt5Q2Z4ZwYZoYbtH4vd3uHFF52WjB1p\nrB+ysuqDgXzdfIYJVSR0h4qz8BqtcsqwYfWnP6TorLBbzggQ2stcKTxXekLf\n/CjmkemIFE8KlLAe93efrooUpDiWvSo/tHTKkwV+AqZMiDk4/jGEVa+5MTLN\nbeJs8puEahtmJ0W1VacQ/oYI2WkBWq1mHDZNmrgMBRSio2feX47mwwzCi82k\nHDDbePVVSOgxYVy+tA1b2JDkRsZ2QdSuZzwNEziBsDzuFPtJDx3FJEt0iqiP\nFuze5Vj3COj8jDXXYNGn/uPlb9dxyIV9yCZ+ysBLH8HqgIZvHNCTAKSTBXl3\nGvtj3hobpfnXCD8rWEMSBwkqYFxsrLLq4Crdp79qYqyXtW582fuBqEGuAG5y\n/W9AINKLL5ekaudsNW7jddl4XBRZHbWVMHGOJq4EOMSjROqmybpdwMvwPX7g\ngwQbIrLRtGJCsKe9rZ1C9la+GSnVCL6DcXW3/xotzqUKfPmgrAejLuxf8/ep\nVzrS\r\n=GUul\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD7BIOVMS1lLSSE+OIfNzYKqBr84pKEe6YKbc+5RxzTgwIgdVoRGQ3Gp3AA6CpFB5xG+rnyYfILkNXjZedvVbqTOP8=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.529_1613683328304_0.05612171943443167" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.530": { + "name": "types-registry", + "version": "0.1.530", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "37b32ca13a5c5f3a82bcbb94f988a88ff51447cf422457fdbee1dee901a76bfb", + "_id": "types-registry@0.1.530", + "dist": { + "integrity": "sha512-ZMdv+lQ7c1zhCxBK/Gx0gJlkFpgikUIDfRV5QFrcLosXqgfxohr3cB2JCLkjfl93FQ31/eRiQZZOw3/mendHyg==", + "shasum": "1faea4826d8332a8ed66b3d5f5daee6bbd1e6884", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.530.tgz", + "fileCount": 3, + "unpackedSize": 750305, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOByrCRA9TVsSAnZWagAAfUYQAIHG99MsgIzseu5BVSZx\nneP0zcJXxYkzFoAN5AlHc5by2nUeAWPbq7psfoYYSHEsfNN9miAfenmYyRtv\nEABF6FuvjrFfrDRr4JLei1I6bkQySQ8ADIQOqDEGpEFpeknX+QuGjK832pXB\nlolNbfh8dcMg4zuVRirfQmsDTVH9rGi7SQYJjkfeYLxUmGzQXogOdDw+bI5n\nVggasFsnn6fhzFa3U+2SdS35NVVPdlTqLmi05ZPQNqEJbrhtmE6id0wNMbeb\neVHN16zksEm15kuiLVQE9VR/PhIqQ/3GXoLqwkglPb3xfeRZdsdVJyBFAK5j\nOxxNG/aXcdV3eq9X+xqsyQEdh8d+wPAoIwKRMzgXr7i1dsuFO6P++QOo7YhJ\ngrs3bwkNQV8eg9kZaVUyzQExtFrZKwwu4iW1dvbcEFYZjeGq8EF6WCGKLgN6\n9hZfFUNdXtKtgIM++k6/GPE3nJPdRq5t9eXmn51lEF8vYTBcDljr9jyvsoLO\npzqIc/lOj3dXpQwY1bytPKz0jt9mwII56dFrA2aFuC60aaPKs32zGkJdVMcg\nf3FNYJ5M36f3vchbNlhDoTppp7fgsiGuo5ag3P4N5IrUsA935CDixtrMkueb\n0SiURM9cUK2InZgVs/vbuHLxr4rl4K6rvQzsNDimvolp4oQijhz1mB61R1bE\nuAZi\r\n=me+L\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDOlWoWkJ/x5/Jb4SBtSON6oDuNUj8K/LDaPQniRS6OfQIgQmH7jJK3C9LwT5f5tlAEDyW4FgSJ4XtQWMFbecnplh0=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.530_1614290090917_0.7401043760095287" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.531": { + "name": "types-registry", + "version": "0.1.531", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3062fa77b4a3e15bd74342031155cac887d6b9f71ab8b06238b851042e032162", + "_id": "types-registry@0.1.531", + "dist": { + "integrity": "sha512-MzTUQoVUZPrfj0RiXKIoGgv9ucM3nSS6Gh3kooshTh2m86wVvTEz9Gen8ulTp+TfcN6r8Smh9r/dwsHDQv3Cmg==", + "shasum": "4352425da179fbbbb97342ad0b6b1622d7ff3d12", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.531.tgz", + "fileCount": 3, + "unpackedSize": 752581, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgQVrCCRA9TVsSAnZWagAAqmYP/1hSYywEWaIfsJVtFgt8\nG9xvb9AlknXJ+mC+26ZPNhZgRIr+dnrcOiPWgR9XWH3K+hbH1MlMEMQWDCsG\nLIvz+oBDTKyqAa9N5wjiuYkdniyDC0ntVNiJkqWLkCTFu7uzBvVcsjFYAbNJ\nSL1BQle8d+ARqXZwYkNlu8auplVGEVTvwpCR6sncrI9GgnkUXfwZAdC6A28K\nyy12PWVly7iJmoMX46RdYRfAkVbHHc4hg7AJvksceJeBpWVgT3yWLsWsTWIE\nUgeYfU7EP1VPWIF5b3MhEcbK1M588DkxmtR5rYRCM8ey//s34oSD2BMmCqjd\n3sAqkKmf27lBQxi41+NF8RXGbDQ2TtjipoYGkJfgy1dIVbMQjt23wSiXMOu3\n03Bo1tryHb+GcDorA1DF7NTRnEBVUyPrlKw94OTiw+f6cPjHKicBx+yp/WHw\nkQd6VKekCOmH9W8pBydaDgwP4H3Y3CVtyrTMrDZv3p6dHBtxfn6innWplfvS\nBRN+uRP/+ntxt4Ss2Usm3fYZFzaPYP0suABoVwn9Ob+ther5JhsSZBe48/aE\nBbQMbdqABUXIMP9pe5AEJVStBMLVpV5q2ZAYKZT4cgliVQTFkAjzusyWvGz9\nJUwlVIhsuDV1oTsThqyJVi62UPnF0/c6cFPLMKpdccsnJG8b6H5eZzL46e27\nM2Fk\r\n=cGs2\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBeZrOF3smJqTOk1fuyKxelHiUN81TDnbzZytcdktLUYAiAG68Qih6dBFEBmtZR0RDqitEt0fR7MNPLOrjRI//WdwA==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.531_1614895809665_0.11317473765063335" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.532": { + "name": "types-registry", + "version": "0.1.532", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ec02587498693afa5020615bd58e4bb9a5f3ebefda31cbaf2e24998fd64819e3", + "_id": "types-registry@0.1.532", + "dist": { + "integrity": "sha512-TudxYES7xaqbX8K7Qv27sMVvY7elajJMyGOYSXDHFk6SOWBwQDNoM3CocoArhjYu83hH9T2lWdSyZEBgjMcGXw==", + "shasum": "33573dbe0019f14a3cf389d4f485f280b0ca7a82", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.532.tgz", + "fileCount": 3, + "unpackedSize": 759537, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSpzJCRA9TVsSAnZWagAAG/AP/irRuNjwJ5Q/HxBx/xvF\ntRlv9r+s9c/edqyBZzTHzBlA/KJYj6ZADveyPLKM0PPgFJy5sSrp6xR/pHJS\nCkRK7MD+td/+AQr6gGD1WZgPEmagsbRHWAfOnlMYFVLhQGsLrmoGoFlCQdlB\nEqISRieH4yXWSXDvzrEFKNwRXHeGG5U55qK3xoqCB76qH4+m4ZitGsm7YrWa\n1LzuHQKUR9oNoreeD+qEpgidbUWmHY0d46AAV2WThOjkmtPy3zgWcbAcN4ak\nxkLK0UDgaWzKOCIiBuDbvVdPg9+Bs4NwWx353h4vnTVxF+E2uDHAYylqvkYz\n0cQ+W3qspBxTaS0thwT8lYcAxzfX0jMAhk3zi3mV8IvkjdkJiMdiKVtgiLbE\nMGxKAbhQjBrDFzbx8vv+ITP/Q9U8FgF+kEIUyf2TCw9p2IrqSdpbpLQc5nPU\nHBiFcCk+QNxjg5GIsglZOyYz3c2y8dk9i3Yjt3c4Wp6lcleJVDfSAVhDlRMd\nw0X7WjBj4moNtdC/7siHOUiZwu300ZQDn6Y7DzsMvc+uOps9gWWwJMhiH25p\nxTPShF7AJcqbIA3Y2EWRRt/5fo5nD81WPN6YjZdXbIG7a1vrV47fUf1pVyV7\nMJ3Fcrqqr6LBXJwSm1mcCKsM/4UjAaBmhevEquu1pOQyxjmydifUl/Av06+V\nVpWf\r\n=D31J\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD7nb+bU6WIjZ6qtwgvVMTRt9MfAAlqBBCyixTq7pInwAIgBZ8DUEFVzhHsDxkBvOzuDb9e8/A4brCiK2MIcqMLYbc=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.532_1615502537332_0.5471165420059354" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.533": { + "name": "types-registry", + "version": "0.1.533", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "12c72f81ca4ad0ffb75b24db0e6cc58222cdfe8a4c6eb0d563f34f92f05b0224", + "_id": "types-registry@0.1.533", + "dist": { + "integrity": "sha512-acEDqbBXWYr6xyHHvxbgyIrPjFCnHwJDKijqQuuKQ6YwWiHF3Wi06wJe8vzZwky9zwUXiXoXGqRdIN3Ji1s+8Q==", + "shasum": "0267072ed1afa3be03e1fc8c24cb742715e0bf36", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.533.tgz", + "fileCount": 3, + "unpackedSize": 763558, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgU+KACRA9TVsSAnZWagAAreIP/AsMoFwhPrBOeKvy8jB+\ntnpHmfiw94o71y4GAYhP6Ev1j+seR+109m++mUx7S9N3PxWX+MXbdfi5N2Qe\nlrK6vqWZ6Q9n97DNZ4myPnUxgR7qeqdNQPjV7963E0YCtw4cE3PNZFENzWvc\nHVss/FMHdB9ViPVGUQdFghVGcMIxfLet3nw7pHmIGCJM9cJVM1uk0/PcEqr/\nl+Vz0TzXelJDlMRjk2xbYWYQk5w0UKacRfrlWghhxOh3+VfEDTL4ycAM1FGr\nJ5kPUgb46MjeIFoe6PWEYXFixOMGl9mL3MZwmdKslxKC8sfjwCe5gZW3wh7h\nVqWYCHZrSoGpZAcCAq7oWoTcMwxa26WWS07fCnUKNtvRCBepOEvYjTtXF53H\ni3D0ij9An7do6E9L2PIiUd6isdyNW5bdxL4BhLWzKw3LFwC4tCcwH7fDpksY\nbFeGhBZQEXF+rSPICu3AWlEmeDoPPkILOEVDMC5Pz81OGHFKJnSt99HT8vkv\nIyWJo3gXLe4OMjCSgSO/MDZa1pxq2TBACizwI51uFLZfcHg0p2pN2wqOc/eV\nTR2K8O5GDDCX9JAtH0SfjzN0ocNhyYkgt+hZyCZBJBFqMAWReRkKgPO8l8cv\nsjhqIGk8ddKSfkd0L2s/zHGrGuA9F0VVCttMgxOI/20OxxtQb2Y8lm6lIy+2\nVjQP\r\n=y1P+\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG/ko6tI60fl7fE387nRA8N9FNWruJSk5Ikq2seu0uu6AiAkoNQdDbUSej8xWmQ40PswosVeNcAyHytqZgD00ZtdJg==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.533_1616110207394_0.9296677156949267" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.534": { + "name": "types-registry", + "version": "0.1.534", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9713f498a95038b67b0029d6772206106dcb7cf42a2980381ae416a3ac02578a", + "_id": "types-registry@0.1.534", + "dist": { + "integrity": "sha512-DnJNvRr4iPcKl+G6g4jFnZGQFfe1I3lDgmhbZ6+iOPuCy8MON+f0CgfWXRAnx+Th3Fgz3D/u7i/3nqw8jrEU1Q==", + "shasum": "4fa20933aab1e17f00a68a76a6bbb8ce27d52c36", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.534.tgz", + "fileCount": 3, + "unpackedSize": 780496, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXR2MCRA9TVsSAnZWagAAlysP/A55d4b4RwuFLT47KnSK\n9vgFbeqof21RBCB00+Vz7fveEPgNCqvjJrg0G3GA/MLWMo1xtIrh/XCLzt05\n3sBOkG+0zU9GmUeBmPcAL4Pn0laZOHKWzjmexVoVjA7dn1bG3QVlA0Q0cOXH\nsv9zSeM2hYG3eED12rgXFn3Muf2dsN7XoUqOnwNuDxaGsWMokhVFxcEV88v5\naX10KgiMKNbwsrzF4bEpgHnxBKRLVyUdYcZZ0qxYmicW10HGtCZq0AVSTq3M\nYFFYc/UV1vRw9P+FtWgA0a7wOjtscq8xQ873EsHiouHIA0/IPC8JLZKi4Me8\nAvK5Gg8WcuGltzZGM10JsAldJqQn+9uYGlOxvCVHci8U3FaAEKqMdzEiAkHn\nS6LtYKrYVwLY+4Am61I5uHKrpOsk/k8H8MSfr5z66axq0N96FOUeEwDKcqFE\nGPHxy081CjoFY32UmX6g11ISe2W11vgZVBufbRkwsarif8iFRsHLGDfqSMI9\nY8xxtDsKQAEk+dOIOPaiMvjZ9cRdm/uVQheX2L5Ik/ZGUsJa6lDMmeQbG1UU\ngyqWWFkhZhctm3U53ZnN1XZ/6Zcx+lQwa9VMgQAWeDI82C7PoZDaW1HGqBOO\njV27dQzUDS4xqdPDYGsjMCm3dur0lUdaqcPuAwrMIBXpGq6wsMoAbfGMV2c1\neth/\r\n=kpwV\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD/HBbM3o8Yp8Qh8zQY8BYl+rphTcrEFVHmdB+CvQZJMgIhAIQucyX8YvzNPgO2QvTnZ+mFGAu8xP7mhX8YTfYqkvAK" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.534_1616715147605_0.9304388788782723" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.535": { + "name": "types-registry", + "version": "0.1.535", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "113ff789973f50e1bc6c5517e411a73f54f9081b7560d2b9380bad30379ee07e", + "_id": "types-registry@0.1.535", + "dist": { + "integrity": "sha512-D85ipIuHsPviEMdWTdRcYFvFPxqB7+HOFGMGbyRJO9OHGABUsKyOEVeB8STVlo+45h2iXrvgQAm7OTdSb59Ydg==", + "shasum": "3e2f1c91eac21d0b90fefe1398125f43048097e4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.535.tgz", + "fileCount": 3, + "unpackedSize": 782731, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZl81CRA9TVsSAnZWagAAlGIP/2ywH1bQz+p/z46fTJZa\nhkzRthbQb6NsAOSV40zqJp5KIF66co76nPCKVlwQF/+J4X+6Xsqei4LnPu24\nyYUXrECwKStcugG+4gDL8+kI+bQoBqicL0jqMiGQ9M5I00+bE7Mpn6xsWi+F\nRUs0/3NNgaUsypueZuljPKhK1RU9YMVfUkRRmzyjrohWGgT6Zh8AJczoeWym\nCBQk27mL4qwlB2jw53JNMSXo9kuvcsrEfbT0H8iibXCH1CX/cAjzl3ur48tQ\nfwvoiJvA7SND+jYi3Bc0x0JPp/sh9e7rH6VDqWoQAEGkPlbWL4wCKTSi5ZuZ\nW4RsXTe7rK5S0g9h2xA+CBlpp3B7sXuHDLDNkXsoV1WCdwLh2YdLOEHkFQYU\n44A5LrtSkC6M7HsvXeLEPYqDJTrr6UoXwwRYBOWHL3+Vs8DhiQvEWltV9aHI\nNjfxsccAr5yN/ShDgPdNtIwlRnk9P7gfM3zDHrnOF/8S9kF9BzqJiAwYs3z4\nGJJUWki+jLfsLgUW7VELrxb+efU758RsKimwCTgNX/ceKi5sesFyjgLaVaSh\n9+CEZdqU5RZXXLDcmC5qM+qlpB317kG+Y+AST7PerJhGm/nzN0N5fysjy5s2\nkdbhzijp/ktu1+TnomNPDbzK3r3m+usjchbYWm7dVs4ZBkWeo76JTZzdmvmw\n8zPC\r\n=0/BM\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCZ3JEOdT+akt0DPxaQeR+u9sIuaqPr5LHVlFvU5Bz2gAIhAJfRHcmsGhJA9zMEBBeTtsMvW04hbd6NCAvmTqz1zHgB" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.535_1617321781465_0.34409950192284144" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.536": { + "name": "types-registry", + "version": "0.1.536", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "cd03686d67d0c71b6d4fce94fbe08fb47a588de512d4b103b52dc9a55e0d50be", + "_id": "types-registry@0.1.536", + "dist": { + "integrity": "sha512-ZoYD9ff71B5KK+Qua4x3AgpLqeOPksgqz7v2zj2A2TmtiR/SDCfyguQ7ymsu0q47QEZeJUjC6L3bfST+jjE+pg==", + "shasum": "602ecaf29a93268bcb7648d2ae7af352667bf085", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.536.tgz", + "fileCount": 3, + "unpackedSize": 786805, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgb6C8CRA9TVsSAnZWagAAutQP/1Vcq6R2Q3IOwJ7P5spe\nteWylf/O9rs2cqZpW8GJ3Oz6VnG6BV/KAiM39AfVctguBMUo7eqsxb2/Slxy\ntiYr/+Ug+QW+ftZ3Q+z9IAv+q32xNHw/8NjfpbPguSrTizwHL3iCjts/t2OA\nU+yUkKKAxyVEKyhQh8QaJtVSUF1iBO8DuJ5GFewHvDySAhbnbyzH+vd9+Ton\nuc6YRoVmxXu2dXK1E7RTyCpUOEU2ZmoMrwthcjHEDTzuycReUkvC2/x2xvb+\naqM6XPiKzI2rO8ZFl8JfQDiEvI213esAQ+8zOUh5Mz2ddlIVTwfIv6WY+J//\noTZBc5xeXiWkyi6ikh8JdltEUP37FrZWJrLY1PoYapdvxOlhfvqGgqQd7sgp\nTCEoVuhmfUYTjrWdece05FeImqmQtuOz9yKiK/xUGvt9p9bkQ7aTwqnpc4xP\nlPc4vMffjHhcidZCrKOlSTsHGO6au1inzilXH5G3hSggw/CS0tJiX4KpNhCS\nc5hglJlhy4bRrtVCOtugKLFYKP9sfBZW49BiffstzDVcl5qYu6VT8+ReG7fi\nE9gDA+dcoxAkXzD8fUrlNhZePZ5IgP91jnyGr46VgmzqrlhRF2UNTP6OXpUf\nzYVUKFV2FnWi1QOB1MvOqUf306vk+tgQl+xb/EnMHJjom/7pzcmakQl7hPKt\nGeyQ\r\n=2GAk\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCtk1S36cy1SHifkbAo1rAe1fQxLis/3khKWHj/2F1uwwIhAO5t5gYVCyrlbn/ApjRzKGuGAVTBvNSuKtdQSohcAjEO" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.536_1617928380205_0.9995610433761735" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.537": { + "name": "types-registry", + "version": "0.1.537", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "65aa6b56384ed20c48b6d2c264e812e7d4c90c04484c03c788aec1a2386183c3", + "_id": "types-registry@0.1.537", + "dist": { + "integrity": "sha512-OSeJgkEWiEMqN/uC8vmh7YbbMItKNq9vLgvUQ52ogNZrM954eK8GsgdCnrh4RmNl0leBVXgRRGpLm1fJGs59aA==", + "shasum": "84117f5e02959463095f9d0ee2777e4e039ade6b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.537.tgz", + "fileCount": 3, + "unpackedSize": 789719, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeOIuCRA9TVsSAnZWagAAwPoP+QHHnb0ikSPgPXXTUv6W\nNB0JQT/J+n1WpShu8DIvftcWZxP4o5y8koNrgdJUW4U0Rb2wUA74v2VK//ix\nfLfquWoCIQYBggOKnVQSKC/GiDD2WPVkZBw7ifkzfPRO+erFiu/M5nvM+ivk\nbEFUkt14X0bmhsc9QP/ifADG5sr/EDU7w8igYHmhcAH1mCxZNsfgslT2ISPo\nVY8BvJd7pRM1iHFOnIQH3iHGGPIGFlwyk4Dl9FPyzs0eEzT19nlqHSjzkfvy\nZjdMLFbdjayrVJuEsI0B1F7loTyM/JHrtrnnAD8X2dxm4fsysNOaB4uoDXrT\nGIBwA5Wifo9kuqNwxed0K10F/fIIq3M7EZ/Bj3Bp9t3v9F6pQHXdrIEcatIh\nFf6SwoaNhbh0jZ9p7XVfmggLl+dlB9dxukiSDVRbm1MXL4agckej3MOL1zu8\ny8rqD0vFkVRgxvgHof9qiyAFRBQhOoVtKZzJygMmoOAXqV9jrXwyF8qmqjKR\nOzBRcsnx2EDwMdFLhoTnqBargWbAZoR1jVgxISPmABi7lx+Y2mvFfVFX8Sls\nRCUPNEFIjG3TSSe8Qnj4mAKKL5AMt79n8Cb+uMrC55jvCRWEUsdDpn0QLwDk\nlLyR5c7So4yyaMb7n7rXk936YoH3w1xWM1EauX4YPKy+qqceOziCWyZtYW7c\nKxmr\r\n=qdLu\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCID9qlPWgmgiNupYmV1aFZMSi9+oWPJcuTU6FXtYnOuhPAiEAybn87U+hlN0jQznB1IZTD71BaZwTadHmFh5oawN5do4=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.537_1618534957871_0.1464913198731872" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.538": { + "name": "types-registry", + "version": "0.1.538", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "144f2b481e1b9b66306f6293729fd1039f90d22d7cfde5e6fa431bfeac89a4ab", + "_id": "types-registry@0.1.538", + "dist": { + "integrity": "sha512-WoDRPNPBJxpm6LbJfOkhkK2ZWMqHsj1FLiU2LWKsGT7gRD8ciMIM1Fty/M/GOXjNA4qej8vRTS4zeR/JtM69mQ==", + "shasum": "9b61b388ce812321b0bf532a27bf72d3b12e5360", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.538.tgz", + "fileCount": 3, + "unpackedSize": 791565, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggiO5CRA9TVsSAnZWagAAZWQP/RVR+7t1kvE1wW4F72xm\nJRQNc10Un5M6Bc5DjooqiFA3hndcVpmB7NiJGTDORuxkNRZRsrdJZoA+K8gI\nQTO6U74Vn6lT+ulxvoN9vqYpUb7w2XvgqRCoprNljytJYyWbgqZLJiOPw80I\nxbwliOp4bfjRBntmD3nKL3gI3nOiPfPUaXIMlWCmT/2qMP0K5unbSpH9YGR3\nIrvzvXnAfdve3zjpoLrx4IdaHCus6/sWtLtwSalTcxzxrxFOsaJPDqymT5V8\nRvhMjVzhIYgR5XHL74Tte1q704tUGmrVuYJxXDcKXR0r+xjyEBdFQTio3Mi2\nJs0cWdiM80LaUiO4wGF0yWEDFpOK+ok8FIPlB5ixhr39Ak0PQFXAlotXH7Rv\n369lRKbrK8c2YlGKjlrXfOFDViyUxvmR0/HtTh0c65i3Upe+FZspcubToztu\n/OH6ejWGHvpwNjcFOvI6Ow1OxRU1DxcJSdyhZNxLNHzIIqxSoI5a0/1JHst+\nB34VLhwU6UEQxQPrN9hDtCxHKwNv63BlxMXN6WywrfjpJpQ/QR5AdOmAmsTf\nn6VD6QaJDz/vTVeBBv57nu/ysk0+Hv3le6NcGk+XpdSNQViKD0bJyEMQh9eY\nXzL+ikRiP/HmBYFGmQSqJS5NtWVSoUbMcksb7rG0lMA4pjkPv+KFoh/0q0SX\nfZgr\r\n=/8lC\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIChCGB8DulMwY7WufDITFAzgY2yUQBMi9vFaii4zoZZxAiAUJz+JgWlFsDDXoDkhtWO2lTx3dmhgkD4KggtmC//uMw==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.538_1619141560857_0.7995635585432952" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.539": { + "name": "types-registry", + "version": "0.1.539", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "211d48c61753e46083218829d40ac5a92e1bac46dba56b9fb790c93e80e7db3f", + "_id": "types-registry@0.1.539", + "dist": { + "integrity": "sha512-2x0ONEg1wRWJuuo1M4FolS0aYmoVElFGWETBbzfLwgHUAPkFi65IHl9YvyCc6b6lzVEUdnt/ZADjuKmh3coztA==", + "shasum": "667d83d83cfb5677c8b9d88912015060f1a8f58d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.539.tgz", + "fileCount": 3, + "unpackedSize": 794588, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi2VUCRA9TVsSAnZWagAAOfgP/iEASiwfVk+os/NwLzJS\nJRzW+rsh1QuCkWUvRAEeNERmESkRAQADIsB5neSJThQsCnHzmdNMH8HrN5sy\nG6j6mfDHYI+C8SG80/M78CWdyuflCD/OZwAPWjEDvR3qamVGAsrh7YZZMuBR\ns/RWUIo3eQXZIdaZtKGyqiBz/+5pPgHQ4CQ9ejbQ+eNKytdFiMZOjTqlhqd+\nvkbw6J+iVs9SU+LL9yCbihwTwuOMZDoZC9jzMqRpknkrVc4H07OvO9/A3s+a\nrLvypAhNJljhpLuWJ4B3iK8oD2TgjMOCNRoC5TR7iF2kNQbkuFhJeu9tMi/5\n0mVVhxTvrC3wnLTpxLHqA/bttH9kmUSMktlD0ZN5z7XrGGZmQrEdOnwF+Hh5\nh9ER9JpQTV4gYn+6PQJ3AWP2GI4CgamgiIIDS2cIyYz0a1woGbASMHUM/VLh\nwKeAoKMoH4M0X7TwqjnNcA/AXgLss7oWvROFjZpraHDrNP5A1+mWQHGpkDIb\n+yfAuZbKBS3Q/i6fNeAmjUEgDrBC1SRWqNsmk9xehR4YPchWRnEU7r3T/Gs9\nDKrg3nAxkug2M6WQuBlxHF2GpxkzGErpeJzacmc1cL3pdqF20IulIc/D8X3C\nIPS0vrxg0VDJs9Zp0oJsZCri0ed6+T8KX5F4g5xEWugvg/aoQJbQnZv8aEoM\nGshu\r\n=h1ne\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEKOKAttFmeDPnLfg5eDNYjrEu9uRIf9nOu5eE9eSWHQAiEA8M6lbtMixhlDOHjODZ7DPkOHPwqe15JHXCioHCdY1xU=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.539_1619748180106_0.3330328814708843" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.540": { + "name": "types-registry", + "version": "0.1.540", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "08221340fd4ea5075e8c671bd78bfd71eea36026d68705f86ca34c01d4a6a884", + "_id": "types-registry@0.1.540", + "dist": { + "integrity": "sha512-2PiHjAdzvkvzhZksjRBrBu7sYQcCHkKgHP0xlXLxgA5UoiAGEM9H2QtOD1HI5vlryASkwu/Fvp/0qUjaXBXLLA==", + "shasum": "0ab3273dc398bedbd695bec839d7a51c77de92f1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.540.tgz", + "fileCount": 3, + "unpackedSize": 798790, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglKbPCRA9TVsSAnZWagAAmSEP+wSAS/+/ddmXLIyIBmpA\nM9IC0Hb+ImHCFpuK4HPdD6uljh5TUsECRDNKYECiyf1YucDCTFTWkPwtFBVV\nPGYwl7/BDpXNVK+ekSM9g/I33/BwI9xJTRpx5q+AWhpf4obEs6CvtqDYWGvv\newiNn8QVmtLlIPQPZHv9LQtaF4nea4OzIfCvIfj0IlQHMpVkOH0iL7tcbmIP\np6+glalukCDUosbGR9RVWzmBoo1YtdKfYuVdztZ2gnrtAxQnIj8NnBbS8MEn\n0MGe/KnKuqPO1QsfnGH6HVRQM/epzlonM3uBP8Ku/ad/K+ndRVJ1YQzAykgI\nx7tc+5m2KGgzazdBTJ5pB02ChJ8KwE5T5xNw/XYZ4RoGErm+30qjsT3hf5na\nKiJV5n6r/MG0YG8ewe1erC0v2C25XkX4SuboaNqS1zUNWIneoRz5biCFBfQ4\nL/RtTr+vYvynKDeqbBx70/hc+xs5NdN/3CVvwXMNAgTQNChsBPrB7X8qttvI\nWPQtpfaKqhXoGaoKE3PAfr8F6dZhu8DrwLus5tTjktiLA6xMUQrOp6jmq+OU\nwb8VJJ7cYTicphu/vA0kgJSsl+j6CcwVOj3gBOF+WsPRg0JZe+HVZb6N18a/\n0IAuLWV5kTDwJW6AE1qEvjKYC2oT3tZ5qk32R2Kdm1wgSXVsufmNGHIRKbXe\n3a79\r\n=FoQp\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDzCmnJA8GYoMgJAXYVnZhF7jv9yrXKSzJiXAjfx37Z5AIhAM4fC2wiuziY+G8Q6YmZhF5zMEUKMebDMmq0ijd8T8+H" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.540_1620354766416_0.01753735979168347" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.541": { + "name": "types-registry", + "version": "0.1.541", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7b7a1aae9b29c76ac73f46d7b2af91020c445807ffc67e257b147db998b1c39b", + "_id": "types-registry@0.1.541", + "dist": { + "integrity": "sha512-fZGvxKaLmEEKIOYPnQaThjFzNCYbWqRGtwFh6bd9NW4R2uSdTC01oHNYs/+mMAANBMzUYEg9uMVyk6p177WoUg==", + "shasum": "49e3a4226bc157db0ddc2c1fce3db60fe91df095", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.541.tgz", + "fileCount": 3, + "unpackedSize": 805616, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnehlCRA9TVsSAnZWagAAQ1oP/A5sA39quSh70yrtibYo\nQQEzer+mJOgKyACzWZZAyl9JdozHVSQo0Ohbt4tfRYT6k/wrE1Jowr9FyIkt\n7BZY1jdlPL3vnNs7X9BpXP2HsRc5dHphJhI0aSC72ss9vATTIVWWN6GUacUy\nxZ/rKZifxjbAmqUnmoUDQuCcLPjhgwShGx+P454c+WtBjBOIYtLz1ARA8YaJ\nx0+fa/TrlgeQ7ZP/QKwzgFWXeexTkSx0sIOBSqcvgK5HA2wI0hYMuI2SImKh\nINpBZp+0xZVs4wI8j5su8IFmPc3M4Me2qCZji82mgp7nbTVvDDLbkKDHBfhD\ncrjpWb0uiqPsqKoppVpUOpM0o2LFKmjEFQYw57KTvagD1zx/EDjhukF5M+Oa\nT2mdQ/KMGoMvZtzUDThgvt67QYN7bugkSizHMUIPnK0WBQnmlMTouDiTbko5\ndtDKv8OWlQw1FkIgKLovmZT6ZOigHTbjNP/opDg7vp4Ob/+ogf9R9h9iC8tz\najUGpLyJnwfQSe6pZM0KOOOnUY9vLLUh+Ud8HY5SecpJN13QpWMK54joxm6B\nJIjq/Nm5NvtgbgrpH75aPpnOXCmDSlx+pBrcRWbl+L2QxmLdCsPyPJ7c/c0Z\nAfbQa5qnF0fbVeI1EeofOWu3CaD7Q+Hb4TgPDzeqNlZTTdyhCzicbJpALBkX\nSV0J\r\n=POrR\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDccNKDNL4SiewsmqX1slgF7Qv8VP/K/EidcVKJohr6JgIgd2VGZFEC/cImNzhM96hNN9JJz0jxHPzI1gogyHb2hlk=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.541_1620961381117_0.1250578970540943" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.542": { + "name": "types-registry", + "version": "0.1.542", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "dae5789fe8a10b9562f5e788ae5f4a40c24c35b1a79c2d10308717046f5f810d", + "_id": "types-registry@0.1.542", + "dist": { + "integrity": "sha512-2XOPAAiARW/f04PDeXC2XJf9CWVQMzrvzCcqXSJa60BYg3QlRLdQE5Jr9i+RZzpphm5nA1oi/snnLzcm0v/ucQ==", + "shasum": "454cf399c87d5f1cb6f86259750f2136f3626b85", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.542.tgz", + "fileCount": 3, + "unpackedSize": 804504, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpyn6CRA9TVsSAnZWagAAYIoP/28A+HXTywxMpyO6xy+i\nCoxKSzrpCvyHl6eCQaxD3MpmX1lrSyBf3a3HjxFaze7LV1ER/BjWHMFAyUIf\nRv/+IUjtlohTd3WFb6iLRnlQ1eMr0zBFR9+sjK1Wt02jnXJiUzA7KGyRG0kU\nzISD+vssnYFFKQGyJGmUlicei1qAVrLYOp13KxWGOhlYs1Z5GdRKzK/AOEE0\niGbdwDaRtLZGR2eItRlYq4STHWmzMR+m9pRjiCZG+hTjGTF3FntGGhZjzi+V\nfnEzaet7b5cjbGpfc9Hh0PCo8BqhDZQedS9HUYAarkfoOM73EgVRxtkYdzEQ\nZms2b4vWwBsewNitNzmbujYxvZVLkeqtOwww8BlJOpXkRu5f33B/Oe9usLDW\nYBCOewweDLzVWdtFGMgmSXgTA/9s80kPrmsOSapDCyqNJk+KbzpJQKbGUw88\nWfF1v5cb9ZEPFi6zNJC44A+2xSInjiujkRelx6Ci25bq12rIR9e7CI/jgh+v\nTNtMReUlaudc5QNEnQS08RU7DMDdmxQlNp2D7QfRDexqvYnOMOCr0pzbnoEt\n6edr0kF3cZlSo6Rm/JKojcvrczXnk3bVC9UDm3UdOLrAfnteX8jHUDbzQY1d\n76b/Ij2uglRMJtjog8C91lzeA8CLn8wh/gQQsrJDLfX/VFenmY/9oFQZE80d\nNXA+\r\n=gRDN\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCRj/M0wEnW/34mzoOJKtQHT48K8IEeL00cLum9TouVqgIgEsQ8ECkCJyQL2jkQv+WSwloNnbPvR1gH9LUzoRyNonQ=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.542_1621567993667_0.6880636062403096" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.543": { + "name": "types-registry", + "version": "0.1.543", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "04893e2d67a09f955806673dec489194ab43cebc6eef506917b56de783977c35", + "_id": "types-registry@0.1.543", + "dist": { + "integrity": "sha512-Kg6X8FAkfQDJJIBGikyIqDOe7Hsuatma28Ihoq5Qn72hpv8pdtRaH+r+3IUpUQMLMvn97tczCNJl1R6+LfT29w==", + "shasum": "d22edf257439db9868e2b7274346bd9d22c33423", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.543.tgz", + "fileCount": 3, + "unpackedSize": 795455, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsGt4CRA9TVsSAnZWagAAN04QAIwf2WLjozRUFuq4Rc67\nypx/mwIiCCRoJrssHjUzWPquCY6SLD1cIB7zR2XeW1t18cVjAf5CVSBSCWo4\nINfLwggGtbb7ZlyOi7Ixl0H/RLhpaI6IWnmVJHV0dh5f85Ie32IsenBeOC9L\n0odGBtPh9abCHCyJ0vysPv/u+21WU+Md0AoPR7ZytLIT6t51esHULZfKvQJ1\nvx4+JiLNr4kR/4sv6qKagiC4VHHf5VVuLGt2JKS0wY92ZDNl/f7dUBJl/uPQ\nmXVMNXbWmlkk/9MR2N2FEkVv1j05a5q4v+REdsk/oP+F9elVc25t9Dzb1EIG\nO5wcrQ8fbRfTjk5LS/jDbG5WDdDX4/DVEW8/YYAQjzEjZ2CIkEtjbSM9a7xi\nb6SZre7RtWQbHiriyyt0+zWGyKxTemtgZItq19SqXqCh/QJJzgyzbP8Ajhcj\n+FsC7Dup/XVwGDXAk1YwFRsE4KeYjb/wJZeCZigKj6lqBBTYB1/cH+VcCShM\nhVZBd01ck28uB30Myirk7tEWJVegymTcb0VavxITFCF6TWSLEcR+wcsFYRMy\ndVyqy5EkYDzIHyWj4Uy0Gb3VcqRviZDWFfE3kKrSFEgyPAbOtgclV/eNGeGV\n2uxBk5CA9h7PVsY+pzEPhM9JUz27WQsOfY5M2WCJAoJwNtj1efCrB7hf+WTk\nSfda\r\n=r3Aw\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCmPUaXoRGKYsFhDK4OpAiis5fOnIJ5pe+2UyFj6Q6bgwIhAPtwOS51YRA3iSHHjfS4G+3Rs5rkudYYJVZGRew+Z57N" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.543_1622174583977_0.609701179260913" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.544": { + "name": "types-registry", + "version": "0.1.544", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6530c99eff99d2b860db4d2063edbf6692afe50c09ecafd484391f7a754b4751", + "_id": "types-registry@0.1.544", + "dist": { + "integrity": "sha512-HGHUZgmtWvru0OyygHniW1QwJTb0X0aJ0GAUSR9bxOAQFgQM0OnVZxH/AIw2FtxjO8D/dhrtziC9zmb0/6+5bw==", + "shasum": "c3f31aac2ed8ffb8814d2cfa0c8c00b7665c39dc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.544.tgz", + "fileCount": 3, + "unpackedSize": 802203, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgua0ICRA9TVsSAnZWagAAe+QP/2sMevQltFlBLnnZlRmE\nkLgj6GlCW3OELAqIJFyV3dZYhg5F5lMg3x8cJS2Ct/J5KFmGEoXX4aFPXOpE\nuucc4I8uf+aRnq3rAGNIt6CYG6KKpPWNPi1KvCELFoHxgPMlaOzvTwcMyowx\n05LIbhiMfi+8QzRrEfjzvNshKZvEyMHm/61tfqjPn2qcLL1MDejB+nnAcO/M\nLdocy0jOj1QPzifhVsxeH55hFCPpU2J3FBskPaqkqnnICcsMdRCwsVkBwpXj\nQGQxs7D5kUvGdwqxw1j1xpk6oK0IYBXpUq3tCVdU11Mz95rTA5krbMn9wbPE\nSfEAh8TjZai5cl9y9qyZ6fiUCJ0VbPYT/w/NNcAZvau4NPwEG9XaJm1YNwWi\nrZ9ZsRPheF3yweYJpPvDigFegAxmsumL7oRFJJOuBkohhZggkMFL7yaIjVvp\n73EokQ9wA/FHbJOr/Ci5ueYUHlD5HaHlH1XY66PaaO1qkau9gsKhAuNWGPZC\nU51fteexDoWjSxllwAPQCcJsQnCO/0/R7JOsJRzBht+lL8S3p/x9BvNdKLSZ\ncPuPgkJG1fMTYCSwWcKdlgthE5qkj5djgtxoj56Agh6BYUqKhoXXUWc0cbpc\njITbexLIeIudJYz9c5va4+zZXa3qIGhpHY3TofZHlMP76TwzUBTlbgUkWZ/o\nWXe1\r\n=MFJz\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDMnn1mslObeDg3mmM2xyVd5gTUhSnDxv/DNKNAvYXz6wIhAL2lwrtK6mlt8MrukJaYxL62Yw5PMXQGDTTZOBL5ZsvH" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.544_1622781191997_0.970687529729038" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.545": { + "name": "types-registry", + "version": "0.1.545", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fc46ede16e23268ac9b33a525d84988474dc54b624d4722428dd2ba243fb62bb", + "_id": "types-registry@0.1.545", + "dist": { + "integrity": "sha512-J0AKs4eZDwdfOXsaNAm5G3G9yCxk0R3u1yK5mv3eY3jSHMfW4kNNci8d6PbrySpBcocbtV4ouHyjqi6KukWJOw==", + "shasum": "afc9e6207decf53c89d1f31532e8221a6a46427a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.545.tgz", + "fileCount": 3, + "unpackedSize": 806112, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwu53CRA9TVsSAnZWagAAvOgP/1WuGEPYsrbFxZLW3SSD\nLRC8HwS6jFYgPMJBUw6Dov8SbWAijZv8X2a2+yEsWPMpq9H1qBLAYZbqElf8\nFtrx83LZKWcMebvmFRhggtujpRL8u3uems3usp2lREOpBZatCtMBKUV4f2S+\n0sT1upxMou1cq9bFPQv/XOJNW2HM4w6W634y5dH2CDGR6tns+ZGt/sO6HIDv\nY5s+SU88DLwYbXAjgsm3TAwTzPZfZgYJ2lttmivb6njOiQBIaNo7Xm0IW4iO\nKJo8nvjr7wVTZS7D1BUO8R8d0yM3TOpvHNzs0Ya0pzaLiszLU8yj+Bniiy4R\nxIeCMgneRqLSqap5+oSpQs76oTMWCyQHyY5JWz+fcA7XXzVIXHzkMLea/nRs\nf8R+kwqUPj2dS6sTw4lA1vqKPrVsh1hCYeiWgN4ozshaWaTWu1puZiq/Gi8X\nj+JXFasHtftaspBHD03kYL1FR8PopubE0+rQbrUY5lMHLMIzNdksoZjGSMhP\ntq14yNhD4vgdSqjIcxaZpZAowo6W0KKC4xZfj+v1SDpbn3FUMxYFtiFjQr69\n3IHB0z6JXu3dFBz2+EwCeXKTbiQQ+M/WO1sw8MuLp3H0VWGy6SpAnkVKqDYa\ncGE7/Ai9yun8WEJQ6Y4O6ijwuye9gAWA3QTN054x4JrxNW7ZJnQxHcG51iFW\n6BF9\r\n=qpFD\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCU+FFKO0ANeCOjqZdsd/ootwSkoPtNhYw1QGjybrl0ygIhAJlE4SG1Vg9ZoRPk+I3Ua7HDRlvwyFowYic0qQLY9BAp" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.545_1623387766972_0.41927250788718773" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.546": { + "name": "types-registry", + "version": "0.1.546", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c1f4139ddd0e4aea9ffc6198ddc1b19f5632cd124243bfab146e7398be78cc99", + "_id": "types-registry@0.1.546", + "dist": { + "integrity": "sha512-YSU8pKS91tiGTli9qFH/SU3wpTVxmRxdLGb5Z7ak1QjfNxRfUnSwjP+yCaU68O+l9cCPNSsPL8yU3+OAQh9ZqQ==", + "shasum": "eb63b38f32b281caad99223f829f471fa58c4a39", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.546.tgz", + "fileCount": 3, + "unpackedSize": 809110, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzC/yCRA9TVsSAnZWagAAcY4P/AhrCUZQ8CAu+PTEmQam\n8sg/zzVL2BQKpThLbMfoMawF8Lwprfg7d0ZaXycTzjUNGyqBbr9W7IMJYv3S\n053NAyiNg+xykk1Daq+mYwyAnpz2LuLQNLJGcD1D7OjmcaY4imziUcwuxo7s\nZqPHnYOVe+Kf+G/L5ONJNb0nFprg5LuY3Rgeoo6wXXgsX93WzMND2RVGh/eI\nc7M9H5j+5tulqjtKtTQ0CBz51FKZTRpFSMeUK3Ui3N2j8sXwnLILe4g7So3Q\nEQwrs7N2V/7aLkFt0FHJu9nh9AkyAhTYKlFoXzxvVkN9oADo51FlyAAeVvFX\n8N1TOQfu/OG2B2tlz8T3eY4U3NAX6mM58fpUz6IS5PBWedaokPKO5tXmSKae\nE2l1z2J1lX0qZE4Si5VFfuPbCSpnX2byhh3LJjqb7bzloqdo7LBHtCjzfxIO\njh25zlIXMb2pdeC7SQGixxwmxwUfNs8MfEjHH8B1lr1dfP4Y1VsR1iB2nEzf\nD24mMxl6gDhZ2BOIDaptpeR+av5KvZ/lwppeEPEvm96/Ex4RvJpT1tpeA3Fn\nt4/eb3rksEBcPJ7018RwTZTUK95cxhy6NeyuD/9reLzQPLc76SlyLaXePOsG\nIDjl7wTJHOMYWYxvLivM9pXI0BBg3CUKkxRgPC4dIR6JVhYmw29k1Hu0w4gv\nxcRE\r\n=tjQ+\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCnhYgVq+2DelDd2pFFIIsTAs2yXVSqnE86CQSc58nHkwIgI+2T+wLri0NZCe/6zWQ0H0iG0VJn6RkHDuk1UwMvDQw=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.546_1623994354307_0.04188404570192428" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.547": { + "name": "types-registry", + "version": "0.1.547", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "63da7c0ec12fdcdee976da7105df7296fa217fdf41bf7e62fc1eb4797eb1e433", + "_id": "types-registry@0.1.547", + "dist": { + "integrity": "sha512-kERVnkvg4rBE/jinRXW6IJHEVU6Mcuk79WrI/1SwSooek73ZLjm+jUXGKnLgoTAd0JnJI3ghNWbs/lknOxLTsw==", + "shasum": "fc813f6e3cd5fcb39040426eed3808a637eaa84c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.547.tgz", + "fileCount": 3, + "unpackedSize": 813614, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1XF8CRA9TVsSAnZWagAA+HAP/iCVQgK/5MNzg7s56ZmH\n0mhc/iXUpc2+otQIS7U8NQFNpr+9R7AKU2wXCCVcFPwCs1G3ecYf2Oh2pzr5\nyLXVd7T9slP9mZEPuKyw28bixB35l36UB37zvE4TE3M7tRYusvryymYj6kPW\ntWXro3ttgNhweP6iLZ+x4NB7uP/8yZsa8KeCdHLA0D0KsGe7NqKvjgUkmSSg\ngpZPdaXx8yBVXjpsEDwYB+U3h4BsRakg5KS6GD4lKGNEolQ/eTuJj79ROh2r\n9+ZBkAo/+5Fj7OKBfbocZy2nnXrubCQOZjrmcCp8trAOX3QPfrOUBjtCgdA+\nA4w3H7ZAACGkhAtC9VQw5YvsO+PPM6VPwA1Yx5npjlBXOV173i/LdzIZZAOJ\nMMydURXG8y8TvFbogVDkT10tDRSmYq9Ya7IbRzjXrdnBjzCNi3hr6XvVl8NQ\nMV9EXaCQDNIWsrVc0CB7IJOOejxjG2kwXyXfHNXWSc6cMI+Z0fVylX7IwmEO\nzXzcDn5+i04JnAq2R55l+0FCyiSLyqiag5Ch5+DLtvozxkmbikwUm/HFOUiL\nJwrDNK4WJ55GJakodY4bTRwkICtaUKQF+MfcvtcmbEKrBm7uXVv9KTWeX6JZ\n4u8z5Nr+4kkGiwWCVlD93gj2AEYm0oF+dtniT9VEIEUVLoBfdy5K84A/mNVk\nxLbk\r\n=zeZu\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCK0EKnIvJINXxEMJLUGYpTXkwANlnrsNh3n/q2dRPzHQIhAM0Y2CfvthiW2Fc/xbKIM6CSQVPNtWu54ZWhwNnz2Bko" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.547_1624600955769_0.002420134998320167" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.548": { + "name": "types-registry", + "version": "0.1.548", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "05dde481c895ac6a67aee828ce1a90238d8746b5200ef301d02d505553251543", + "_id": "types-registry@0.1.548", + "dist": { + "integrity": "sha512-xHedGCQbE/KVUjn/+FkbzYXDEsHVbrz+9m1aL8itn3tWdv9cQQLnlL3/o+9//f9mYn5JHH34pDtOefuNWiHwxA==", + "shasum": "222151210abd74fc3cdfdfb5e2be74818855073e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.548.tgz", + "fileCount": 3, + "unpackedSize": 819122, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3rMlCRA9TVsSAnZWagAArq0P/jNYXAxxDtuJUx8CzcrG\nQEwGVVcp3+GHnOliUlqr10DIIKOy0dnpZGjwR9s7L6PdpyGaj/r5GrIp6j21\n8Lg/lHJHC9qX9rt3QRS2PbGG0/Z4TFuemdpF4TZG4k+kVwO6LTrOA9/h3V3X\nXeH1zcHnshTKAAN3tln0GEmKdlIQKTb38C5+TOrMmXzsp8toyD5Yr/g+0Nxn\n6y46t9207AH11m3kUNZtjuR74r58mxvHrV/Z5caNhe9ZuO6sygtI3+xwbvte\nDcuPUqjZsqZ8e4Hr6h8P6gamAA7b72UXHuTcL0d7EAeXGeBMlM8yC2Zxyjm+\n68rU35G4TGjSYmMNXDRxzTi18sfL9W+W4CcavE5Aq1rsbg+LEuTxMxsxpMf3\nWrwG0VH+Y3aYA3plA8L6hdyye3H01M4D+4st+SF6F/NzpZAYUwvljwscnOwS\nNpMrdcYfUqYgofTR2aYr1JHAgZtQSPOa9Bk9mLY5sRqoqlnPYYXOBtQyZu3J\nFP8henpoKjxz18eQFlyTFS7p1f2LjE9tzRnv5HIPx2A1P7RLYBGVjEEE7doQ\nfXXk+KtM1o2+Cst6fvkWScwayexQfwGNZOP/U3WrE9+zTKarQxJefxOl9QQC\nOlfGLzm0JC8fvzSumKtoX3/TbmvS+9etsfMaIVLtktvs4uMzA2Ez2W57mrGJ\nX+3R\r\n=4Rja\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA14wrMHQjEHpkNFxTmfEbOKpd4p6PLxssQPjzdLE370AiEAtMyQE2ufeBm8oF2LMBjDHfgpzAwHv8uFqjYkMIO5XRE=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.548_1625207589396_0.2994120542199532" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.549": { + "name": "types-registry", + "version": "0.1.549", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b15a71d3490852fd5d6cef4e6e3d69dd95b515a37201d576145fb73aa1f54ee9", + "_id": "types-registry@0.1.549", + "dist": { + "integrity": "sha512-FiRkiDTv1zbxGJrGY8L8piE+8wn4fpmumJPkDpdAXxaF5qRzKWXCqh9P2XXAVUEFUh+tWAsGZ6aj0pET3rRDyw==", + "shasum": "f45fc5059d434d256347b45b3bffa7b4848fd371", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.549.tgz", + "fileCount": 3, + "unpackedSize": 1291849, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5/z0CRA9TVsSAnZWagAAMRIP+wdXa2uWYgXhnSLQ3gLn\n82OVH7qKCI0v5NLb9GCEeccKBBx2bSBdkAKd/OKIZdEFdIBh//3vnOXfYzc9\n5YxFfduJ/sWTF8gNfMiBJhLYtset8Ga20Cz7djRAHTw9FXoJs0eiEIG89izO\nJt2rUii7/HtSKANSdfxCF/l2B3ltOEYty7qJJMHlHxTl9fJrB4MmmXn6PHNl\n9Y9jRnWwcamNPv2MCCBan9r2p/9GPBU+LKHk439087IKkLyzqvTPUil731Lt\nMSZtdVn9kRl2mMCj3XHUT5Qic/zP1Dzf9N5M2ETehAXJ+F3P6YMDVEJXKsHe\ndAfvM82QIQhSx2537Wfk3RRXItl1L5W3txSXAfDUok+dg1zDx3jagGaKVGQd\noaOHpcJOy+vOrv9nCr73nriHE9Out1CUQYCceCZntHGo9J/03lGcFzdlD/ev\n9YdlX6M5chvDQ7QjzOAI4I4D4OqRlqYlvI2CVP0IOt9hWK6OuDuPRZjB2xJi\nqKv8rStx75ucL9h67rEw2j3kbPGuAp0rd5wsqjXiaPOQXtd8DZcWHV5HeDBW\nJqSmrABd+iFY+NayYzA/NA2+2wqmsUOgjBloiM/q/ygUWlc6o5IA32sfh5mK\nYuoW4yKKN8tJkZxeLS754YzyI6KKlsmegOIpqVFBvLN5rFUMWKe2DOdgIGZH\nh0xi\r\n=tY4i\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCeOIK9v1pLhw22sEbFgvIbz0z0pP/8ueQ0O0Vpijj3xgIgHG9ocMBPoVL0MyygVllDNHjCdvx4d3r/tDyAFC9/TL4=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.549_1625816308459_0.20401138221083337" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.550": { + "name": "types-registry", + "version": "0.1.550", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "db24c1eebd181545707fb9a9322b4c3ee06127ffdc0db104d7e61364508bcaa0", + "_id": "types-registry@0.1.550", + "dist": { + "integrity": "sha512-l35n1m2iBbGoW0mVEjg1vP+Bmgp91zvzVLn/13KUbzgVYVY7WNtkrEw2SsG68dbE5X+02maGohohsMU4980o1g==", + "shasum": "45f91150bd00432d52ecd17d1cec0803fb87922c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.550.tgz", + "fileCount": 3, + "unpackedSize": 1294498, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8T00CRA9TVsSAnZWagAADpMP/1QoT2KVIaYyK+QbZMP0\nBofP4a6JSauwFXbStNORCPLfuXK4S5jrHLX0HRNgzCFA34HIWmnHjPsajdQq\nlYomosJ92CxwaW6TbAjdWGaDwGMvwkZeJftCpdnZfe9SKVm+H4Ld0V/eXYQD\nDFsNxhG87ijtSr244xBzEgfkRN0v+HN1/16hqfchIzKBSsSj5mMzjKBAHXc7\nQv2yAHwZNRckyu5VU+cPYYi2n1fOwg9LTuUxycdz0NASKbtktsaAs/dJcjZQ\nNgXTAhSUxsModjHF8uuMAKKcCa0DZMsuHKDR0lyvUPaGyumHSaG6gTiSH5Ne\nqCA7iUt+PCBESkflCaGTGHreVn1D+B/jnA4yVpi7HutLFXAJSpeIBh/HIIjC\ngxsFbpvW4mrOnKF0OOsYDJ/BFRKODh6iQkT/Cb8XZb415iS3Qmmf6ImAm8uq\nTVk/lsqT7aPvDvbI6bdZnUOyfDp6CAeoShCbWABoD26SL+4GbImwyHCevLou\nqWrn4U4Z5YveElx7gC+4tJxX5G3TIHa5Kn84uffZHpf6PdQt5ZPvBmoA5CnT\nNPq6QwXYzeDoibb9RZcbb0KRhTxrUPEXtcueHXZNA19yt2dre0nHg1RkZL5X\nT0hppVRYnftqkLWWbXJcdR2GLLL/KhYuOwzQYAPlnxRRPVs4nzhm59thCHxi\nMUbi\r\n=BjF7\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEv7DFiU3Sx5J4j5KAkWmsolsD3UtDeaRzLDUv5uS4ADAiEA4ScLRlAaOxI+ioI+sD25fjh9+H5VQ+qBBQaG7bmjW1Q=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.550_1626422580751_0.7325313190578944" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.551": { + "name": "types-registry", + "version": "0.1.551", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2840863f6467936fcc6ca716e76afff19bbd6ffaf8d89414ed475dac74aa1b39", + "_id": "types-registry@0.1.551", + "dist": { + "integrity": "sha512-OVx0bliw/l3ZE0IGztGtsRS5GwT9nDKh8EX5L7fdvewhF5sWorkbzkP2K+h0dA8cDa1HY9bwJTZUPut+zxFnPg==", + "shasum": "ebc5b5813958df20748d2d1ccbc760164c5cd032", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.551.tgz", + "fileCount": 3, + "unpackedSize": 1295797, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+n6qCRA9TVsSAnZWagAAmzIQAJBXUCv4hFBKC1xaTT5h\np6u9gRwSfu2vFQj9/0G2a7KRkYIwl65EFd/BXlWFbvz70b3Cxdz6QfvKx4ZU\nAg/KBg1dDQSgGGL8559nUiHRJEpXYh4Ct7NEGioP52ooJ9cRx5BFvxa/ERZe\nnNNI6UeTUsnbk6ege117FkGo4JM0naphfZE1t4kTI10RcOTGSUtJKs4rIrsv\n01zRAEKvtjVmy1H7IPU7LeBtbDT5SLafQPc7k28n4pCBwntq1hB4uVt0eyym\nnm7KtVSRYNj7DpnFh4mTkInLFaSuLwP2VrNCrN1D9VK7oOyL6sskRUGwns4k\nBUF58yTygrwhtYrBMTIEYJNYmtWUY9Qhs2YwlqkvhmXlRvbrbZqys+ywsuWG\nZ+v3X6Mf7Hk8vmvgP027eCKyi5ivs3xbIrQi4E/kjp0vmO1q+CGXvZFfyhxu\n83cTcFX4thUheVsOtwoccWCL7MGS3TFnkemGgPysA7HwahgkI/D9rf/uA22l\nCUC/YVVjJlMszmxJWamPEKtJjU0u98VkFzoPQDqKfI/VZrSrppvrlfASml9k\nXLoKMI2FAhPiMZyOGmzZbKlBf2h0VUeid44xiSshvCOpnZmma0hPmRf6WS1Q\npt67JrrbBO7nhg7g0gQskq6efXjsIUsuJNvLRCX7mVRwXI4lshCn55ZUMnSz\nKV94\r\n=XxDF\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCLdVTw0oq6Ct6F2IQaOx4foBuEE7e75dAEJJ8aFlzi7QIgCVaqQ2ydJ6n2e44/0pWsQaCbUJ7KX5xZN6e+15yH6tQ=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.551_1627029162312_0.9401579367391388" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.552": { + "name": "types-registry", + "version": "0.1.552", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1513bf29e0c3bebe80e4c0f24c92700e5563777f97ac5214d72ebfbf08725c9f", + "_id": "types-registry@0.1.552", + "dist": { + "integrity": "sha512-ixkjub0r9mwudOaZcb0CPnH2I3/rnWHbN4udbFTbJv1ZEpAV6L1m2CBFWcHv3YV47oS240FfKNuGp0JJCeUuYg==", + "shasum": "1ed44931c21e7e369378573916785055a4d2d90e", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.552.tgz", + "fileCount": 3, + "unpackedSize": 1297977, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBGkACRA9TVsSAnZWagAA4+YQAJOXCQ800OkMVna2afRt\nAvAnErjTewFUC9Cddf4oM4MtV4fm3B/4CWm/fL+SeZt3n9WhmMNCy/ftc23N\nFNY7JdI4v60EwxwJZ0mLLoAnOG3n0dBnxfTjLYDYWs7iTux5X5Pnv8nWHG1m\n+L0iKRZQCi3mKGBLWLFiXWyYXjdIShlgyCDzUIAMGMz/Eyx3ZwMSwU/T4W5X\nvmh4+SlFEopC4ib8p251O5Av13rmL/9wvx5iaPF2mwNAh8yvRBgWBTEUef+I\n8qzfqXQl3x/BIHxZdXexSJ63wRVuYbIoHvwRH4RxYYt13+L2yvCtkcSLOFhz\n1hbUA6Ep9TdH0V7BGEz+USu3UX8zKBToPKQRw3Ks+v5vOj/Tf1egqkJBbsrH\nBOtEiLPSCnxxeOZw02s2v4VbpP19EngEeZUobvdYLhkaD7o2+pnHG0LTMs0n\npZltELgrDka7Qg4jiUjZeDMxAX3WFU6mVdD/h7uvgTJWdE3PIswjodjv2gUO\nu5SGOE4O4+X5KsFeij5eb8FAoSypDR7Bm+YgGY2tgV0AeQeT6eO1gvy4WVWD\n3JK9bwyMx2ixkIXCKQjad1UezJrkZ3LD7GdSRCg49Gu5b/GWjboBDX/uAXl5\ndc4sJroBV8n7i5e9hqqDdrZC1zLpPKlSVA0vW/5nIguqtBac0PGPAtaZIqHT\nwQyZ\r\n=vvHS\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICMBrL/0bHnaRxdIq00LvcBa+f5882y1W5IU4FDbL2eEAiBiLKS8UwDAbGEa2QSxC9iHMSaA0g3zdjYh4Rl9BIGe0w==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.552_1627678976281_0.5897202477014851" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.553": { + "name": "types-registry", + "version": "0.1.553", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5570fb9c0819e80c47d0df512e87329de4e5234981c9ddfe5949d14984b365e4", + "_id": "types-registry@0.1.553", + "dist": { + "integrity": "sha512-1/Sngz1smpOPzW5XNe+G3HweLS1mbRcge0m8za9PDmznO1eMjTbuiiMl1/89ldicLKhvYNom+aHo1RZE3AvSwA==", + "shasum": "a1f6cb137b798d4a2f44dddfacc7aca323385b06", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.553.tgz", + "fileCount": 3, + "unpackedSize": 1299131, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDaqSCRA9TVsSAnZWagAAJQIP/35ehEhj94SH1Z6AbstA\nUjqKvqKpdsAMp4Mcs5+dxdADh7LGgWVwiR14Dd22Gx6cqzGSfKMInk2hne2o\nAQ4PCttjt9w2r/qxUI6+wVwPtph2b75tUUphR0LvhrQZHxT9rQJepJGp8Y0m\n8MBvpLS7ibLlnTjPT3NAc3nzBZyF2+hZJMfZlGzX9RKxoE0hoNGTC9nlI4jj\nOWIHPEg+S3pUCuP4qcexeBG5mCK8kNMPpZT7DuqdZWYbZh6IDrN9Q8TbDXjb\nF4O6ssodhGKfuYfjiJiRCKdi1XxhGxL+XD50KE/gTvlH+VlM2YnXUKQQksnd\naoeqgoWvklstpAQMGvzQ0rXhXQ4RmJRT8zZWzGJQyNZbiNlBo9OQwIlLuJZw\nPJmZIORFXXsGkquJSgnefBQkQCuKlrpPadAHNqEP5z7Ah6Lwhmjn5eJ4iTim\nqDnvV/H5ga3v8a7/1jj+SPYDa0lVKEs5JPSdrdIplBT3pSGByftHlHEKmfoX\nJw4nzs9w2f7JTrn6iDonNlmLOVou/6AvqfaZcGrXyY+NHn5AIoJu9i78uEC3\nZnW4sZC4rv0JeZKTMQw0wqUp4ues4VmRtHjp6+zbbtzlkYcSaJ7uuoA5Gxn6\nKsTTtPMiSm9wn+inqxdwlTCa9tTuP1Cs0XFHVtK4sWGTvofGJDcc15SdVI0w\nCdEE\r\n=SkfM\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEsndXGppMXv1Z2V22o/g5vimUn9rjxRUxO+eaok91bIAiEAwwCL36ZVYf20rQrGtXBDxxmj/YOX1ESYKCSYFF4jslc=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.553_1628285586280_0.3531205682710359" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.554": { + "name": "types-registry", + "version": "0.1.554", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "63765e39b3002eb5bdabf7fe2eb42011dd8b7aba503d5ca9ad32c0a3ae2354dc", + "_id": "types-registry@0.1.554", + "dist": { + "integrity": "sha512-7pN084l+AWo+tsabd0IGXgYx1lG9uekn5lGMDgZ4uV2KanAWEkznsJpuSeS/it8aS/uEa52IFWIuwgDXQVCdpQ==", + "shasum": "8c8e2900fdf8b692ab17e599d2e6a3a95f520ea5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.554.tgz", + "fileCount": 3, + "unpackedSize": 1301741, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFuwYCRA9TVsSAnZWagAAHUoP/RUX5c9paHnj8+pRqUXa\n6Pqqx/ng5ByyuZsmd1McOlc/C0N8fJMX+/n76EIQOZvqBKKKzFirMmP2Dvus\nsX5zdTIKC4Ffz0gevE2ZDWZlrlyXHSPBQ2F56OACJ+jKOCuNnYoQfKVS3pc+\nm+60qz02MtjJ8fRkTqHv1fmnvXbtNbYXiAHLGhiZrhKvVCvXayOUHaVD+3iu\n2XcWbbXPI0yAYLdI4G4ZXVnh1kyJ09gA+sso0im/oGIuTpk/v2Z63IJJ17YC\nNhpZKBcK+OzWzgnbW5r+ZC5xDuGuGoR+SUKlwkto/rWOJvOJq9enMaNjA1MZ\nhST0DMxcOWYLwwjWd5/QKMa3Y5GIscEubfHn9Qxhra6lVuIOjRCVMh3Vprfi\nbtSxctSsPk8HLkZ5CYzNbK769Ucas7LJofxV/m5ksGiWQaSaawDn1fOxly6v\nlyPvP5YBr6kanX18yRPyzpw5ol0ri3OIwJ8Q9KEU0HYw+l6jN1YnIKQuQeE0\nzsGPk4CBZKv1SFXPX9NPduaQev2GYlKSmHmv7SrjwFjcQ/wjYbOUYZuNIdZJ\nKDRwwUCoZGrAX+6J1n2+n4kvtJysWEIeDMKgaENLU2NXKUn0lwob62XVI3yo\nXDHLrvRqcA8igZlMPUOgXXWMu7a9N+BG5zl32a9ypSSXngcH4GQEq7vvWxpb\nSlQk\r\n=HkH0\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDLGHGLwMhr5SKQsTm/0eFdFQJSFP+qUs/zbE5tKOU9jQIgDP84KzWZE5r4QPByXFJK0XL7iLmvg7Z47Qgsi0V3ulI=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.554_1628892184400_0.4749455040122823" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.555": { + "name": "types-registry", + "version": "0.1.555", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2cb53b4fe33311860715d23544a167f4a0553d0fb2d76501cdf75c2d9e52b0ec", + "_id": "types-registry@0.1.555", + "dist": { + "integrity": "sha512-WriUC4DG25FB2+R28a0uxH0Ohhofx7zRirrXgHPFUZubsbzS43ut4uRGfMnGewRpSPPskWdMVEl2iFqQ9iW4wQ==", + "shasum": "f1ec729cfd626f7b15a45bba848cb760ee153f15", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.555.tgz", + "fileCount": 3, + "unpackedSize": 1303340, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIC2vCRA9TVsSAnZWagAAAW4P/1Yhqya/sW2yEilkGxHz\nX8x2K3Yuq4oMB+4UG94jfXrHGCjDaPiaXMD2UuVKpsIr8gtCId0UdWFrMg/M\nQTtnTdbscRoN3F5n8G3BQkZv/TdVAsf3KG6qmIChn5YHhQ4vUUxU12PV6p+l\nVTTRkRWmsw/VUpo0P9Od/LQNLq5WbA2MRgJnIzya5UnV4QTUOxn4+ikaXrkC\niNOdWLGI/54XJMyMqqYCGI1dD/o2wl60UYYY+AM674+kU4V8KrkvP89DnnRB\nvCRFu3QaUvkaj1kV9r9KqtBM59au0jKt1X0N6rRDjTgpHtN+xXDpk5N7/l1b\nGqjgNUxyYdpDKtb0/iyQ+Y+qd6jORZTHLMiuCVlDHMBR7100dKDOr6EmEKUt\nU7KVj/z/xbR8bs4NMztfhCIQ5oOVDU93dQ6xji+ptL2eJfqaBmf/sTUR7t+8\nFHWQKQ99ppJ6TtiraE1bHG+qEI6JgheOd6qf42nfN7xQ4dAeLarUnMNymj08\n3FKAI+McM4AEJVMP5uNU4NpR1fc1DTNoVvcnnEGmfx4HOWj2wEFQb2/NkvJ4\niWP3rdb+lyr7fsNxbpWoDTDdq4R/jDRAbSjSkfcIXypHgoDYpaovIgT2tp2W\nt2oGHLRaic2rGNhrhHXAOP01UiESyWbppcLwo+WZLTzJNhp7J4NqwjcUXkgJ\n25co\r\n=OiW4\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGuYm9N08hYqSFG+bQz6bl0c1j20t8Esdzv4wWi/Kb3ZAiEA5fRLaIQtLJd3pxUEZofP7ekeE5I7xDjwq+fmIGxeCnc=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.555_1629498799254_0.34657466625408895" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.556": { + "name": "types-registry", + "version": "0.1.556", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8f26302776fc594a1087786a033a9b0d82be4f260d8d1ceb3ffeed29f227ad88", + "_id": "types-registry@0.1.556", + "dist": { + "integrity": "sha512-itVFzeVrmfA86Ii8k3ouZaiUh2ANlVgrzVqiKdTmzvQ2FWi6Yi+nVpE+5QzldKL1nnT4Nr+9yGGW4AksBCv7hw==", + "shasum": "9b99bec28bb22908d90c0be537ff535c1d2bdf30", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.556.tgz", + "fileCount": 3, + "unpackedSize": 1308639, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKW8RCRA9TVsSAnZWagAAic0P/jajL2L/SUvd0OHb+09c\nxd+YYh7sV48exgvHzZD+w5FsE0hw916iYiONE9N4Es22AWL5pYeLBBWwmdbu\nfn+NTQYyGbB5BhiMsGgtH/DVBzJgqEhN8XFr3HLUSxCQNu/ZojTc3S+oc03h\nNHC6pzPL8B60SX9HYYGCuQsicjRrMjA5pX1Xmvl4B8wHvQGR+Nk7QXVOCl1a\ncIgzUa/p5jY1xHm29AmoMfJ+eVqzVHod9TjgDaM+85B+1/hMYGt+TlFzyuYx\nAa9Vir9krQ17c0x2ipYnej5X21YulSCU1EoodNAnZWImg5n/w6qJEnOGbW3G\nkt/3e3B3Ns3aBE7NI99OM05LIvsFHTCYr34IHPl9cMKLgj3idxUTWxJlWv/x\naY5WDPtyCKDGgB5etNvoUzAs8NiJIeEClRoAXtmmcatLuQnLLlVUGf2Y5fWJ\nVBu8xoWDBUQ5NdBv7iNOQQiI0Fyoz08JfeAtoEHd0FKgkKF2OmFq19h/tOVb\npOAetrGOyASejhHhrZRVbqj4+f1ac6oYE8rgEl8dbqujgwuZsW7NqIFjiVfP\nNTCico860YZ5I6mQgt4y9CtA8Y6dpbqiBkLcG/VKTUNy/4TsfEG3ZddAjKwB\niva6razLUmBCzTyRLCBkLFaAXixJr2ZmjGW5X6AOCzd1RCi0Yr0SGIyERDYN\nblnJ\r\n=k+gE\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCvTY+fxipxyKpn/vRwfyodR8/9MU+YRwqqDQrrNhJFrgIhAJOqj4GTuk0JM8JtJtH/0s5Gv9pzdLRQ7jScrFE2OV4+" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.556_1630105361249_0.48227921315335553" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.557": { + "name": "types-registry", + "version": "0.1.557", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5a55d2dadbdb4584a06fe2fc8ec503f533e2d6de29453e92a682f8272c71ca8d", + "_id": "types-registry@0.1.557", + "dist": { + "integrity": "sha512-bdOVf/60vK6X+4YQ2T8wQ6jqa00lMXhny9ESDI1Uxb9L6Bd78CcujhYLjuk5wtVQLbJyfpi+0qh7MiVy0J7e2A==", + "shasum": "9d9371b78a4cbe89d41e4a7b79ed34d4f15c7766", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.557.tgz", + "fileCount": 3, + "unpackedSize": 1308932, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMrCdCRA9TVsSAnZWagAAhbsP/Ap1GV6FmegQa9iFNI9q\n6Flxl3aZ1LTnarFS2hFvpIqsYv70a7UoFJ1ojhp/koJndjtld1JNEivAsEB8\nNiu2zRpnAIzIFF89wLo7emxD1tAW13xIgc6+WCWEcWbB24/k0CGeniVq80Ct\nodz+SL8DlN29ENQKcNNyxOW/JHwmJ8+3KYgafuFcRObzT5FYsDDxaYxXLXLQ\nuMsJIcMU2H1j1lIpRnViFr8LgU2AopXPl2mIbefWSRHm/QI3YblMwWtuvrBS\ncSkDMxi+p76JTKU2k9ZRPc2CYlNwGdWi1l+K6kumKslot9e0Dx1aMjzacaXn\no+dltAIoUbUu1dO5wnfhAliVk/fKyGBPjVeWwgzVm+n6oEM7H0tsfq/HilAi\nR/iucc2hRR2o2ZmbUrqqCjHWEcQHlJz4W/NcT89O/IsUfpXbAS1+9DlMr433\nvJ67rn61EA+36HPSYMI2hDZIraOZscDUdG8rLq1L/nCq7K2TW/plzKBHI5Ok\nHEmsrny6TRfmNIxo5qVVOgnXr1N1Tv8RL+XUuqAZ47hMIQb7xFiElv4CLf9E\nCUOkGZKzpD8+JQnO8vbge3DV2HQxykMMvvBtIgCXeFfNM7dw/XsrdFJQ94IO\nfgwveQb12ZpfbhR1jSUTp/lApEj47MFWQi0IfVgwuv2Yyi+7K9uBhZsE8OCq\nMNfu\r\n=PLB4\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG18pQsc+h7r1cSLtGdKuLtD7HowmLWzQcGe0RsT66e5AiA2ZSZfW4St/NuZzTZKuj2maope3KMOfyp7bzYipxEJCA==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.557_1630711965212_0.6399035419503489" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.558": { + "name": "types-registry", + "version": "0.1.558", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e4691353b6f4856306f0921428cf222374225c267cec734b8ecfc0f2bace724a", + "_id": "types-registry@0.1.558", + "dist": { + "integrity": "sha512-4eAwY+l6TTbJ93XqaRbMte9WXwSi+YObfZs6DfWmNtsx4fXQdkoC6bUz4ktpGd5XIvT5NTlPCt8DtpDrmocO1Q==", + "shasum": "8cd583e10f36da671d2059208c167bd34189c4cc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.558.tgz", + "fileCount": 3, + "unpackedSize": 1312697, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhO/I3CRA9TVsSAnZWagAAqUIP/1ti/rvuMkcsDGUNeZE+\n2aYyRxTfW1O/Yv61H4NChwmx+uXiomJIagQBYF8YhshH2rz8PpZt/wMY/sJD\ndjiHz00yehoxJWm0kk3VTWTk1vKR/U0gT1rdW1tq6x4/TvHAflr/wY2CrDzB\nRQcX6K1jMJERgfEVQVIDZ3NGgK59fmPTSpuE72BaY/2aD5Iq3jad/b6TFWTK\nThsMSZFOcDZXHowf1rYiMJ1IZ65MT3ikIBkwx/SbPtXJs9QQQgqqAT05FrJD\nwjr/cXFIpla7vva7Sgr0bJo+JP2ExErjoa/8Fp2DiqjkqVGOTAJHzyNeYZ0K\nOMQJZWZIwSTVON2ShdfzUBr3SLOB4JHaV7VTg+DqKETj551od/UmjagaZAEU\niAYxWdPHhunOCKd4IinLLat9ai+qeX14ug3F5dJpY9DnDNJ3Pn3Sn9QfuHNw\n1lUSu5Ckuh2y0Rlv7um0Y6j83IrqpCuHbZZyVFPsoLD3q9x1PHeOjZpH3ig5\n+11Lg63bVTmXUYn19yytytlfuXFg876u62kZc+XcWB+ty044RExYtHSw8CNB\nw3TcQxoh8zXtHn2hQXOIa1QJ1mi+zMTuMmw6y1qiqrO8TWWM0ULg+PO6SV/N\nXe8jcNi+sGyPBpsc8o3SotQe/VLTxbleuMYhEFvUP84OGLcFn/YOq3UE3Znp\nWQSa\r\n=BFIl\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCJds5ZiWpB9vcBgqYGclxOIihi0ouwbCA7XgxmsPdMhwIgCzdOrvi/hl2NIgxlvHyHYnDNfu1yPTPIPq7RaV+MNXY=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.558_1631318583697_0.4942207651189736" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.559": { + "name": "types-registry", + "version": "0.1.559", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ad8de212cd7184bbf4f1da23775333ad05bd62276243d3128efe1315ff7b8e5e", + "_id": "types-registry@0.1.559", + "dist": { + "integrity": "sha512-wwXaawFLyC+eh3xmasL2VHTbxzYVjbaopTqDknXIaw8zhgdI+sOmDIWY+dkuopXsHa9CFweAnjhZhz7UjtQtPQ==", + "shasum": "5657bcead86ea1de4e6c46d319fb04e3c3b805ee", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.559.tgz", + "fileCount": 3, + "unpackedSize": 1317627, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC1KQr98lOcIW7eF3GhCXtfiNrVCXomNUvhwgF5G+4oaAIgcu8Ja4NXIzlWF6aC+HqYtp2X3U71nPaDdFaC0oVkFMM=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.559_1631925164050_0.8353157357072734" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.560": { + "name": "types-registry", + "version": "0.1.560", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a7eb8495a2c1202eedb6eea7e3d017dd35947323a9f22322425b7be82cb9278f", + "_id": "types-registry@0.1.560", + "dist": { + "integrity": "sha512-0Y3RQADuvZni6kXZl1TY1vnfpOmW138snXK6dnJoWNmHy6zkd6RT92Vt2i4HPzqRWVl2YZNBktD0bWBKshAKzA==", + "shasum": "f8ab4b9e690df57e28e0f986bf60edcba6f2410b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.560.tgz", + "fileCount": 3, + "unpackedSize": 1320126, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA/P8IPQbugTmslxqDEDyOmkWL2GEIUmSQh986sy5ojPAiEAhqAWTZaYM2XGYvg033zFx7fcYveQ9cDUAApg3xzVHP4=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.560_1632533747070_0.952128959449726" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.561": { + "name": "types-registry", + "version": "0.1.561", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e6acffe1ac74ccc8d4c84aa42ef55daa81c6ed2231ddf0ba023cf318fd8fee3d", + "_id": "types-registry@0.1.561", + "dist": { + "integrity": "sha512-+yUzMxaozjwsXOEY/SoUZ8RwJwbZopMdEa0GW3L8JPffrVM2Z+Xl6oDGJjYbJWtzPRYDAf5BvyJcEmriHSO2/w==", + "shasum": "cfd9c099dde9f442bb98730ff9d3aaf5ec48ef94", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.561.tgz", + "fileCount": 3, + "unpackedSize": 1322639, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDaxfEvJLRLF4anxMdueAyn/XwgoyEgMhFoewKmD1jgvgIgJh/uf0AM64TIRdGI8gw++oNpw0+68vmOy1Oa/kw91B0=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.561_1633140178735_0.27239538445892997" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.562": { + "name": "types-registry", + "version": "0.1.562", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ded5ec907740229411733f68ffc334cbafd91c3d806c49de2d07dd1f3bdab7c2", + "_id": "types-registry@0.1.562", + "dist": { + "integrity": "sha512-t/k2hc/jM40/lZ+Ac+XCLHywn5znjkWbibUrNy4Gf2TDP9E8/s7WvHGAas1FV/uynx0w8Nj7YYQpTY1j8jJHDg==", + "shasum": "3da7f50cab97775b1c4be793bdaea9366943b614", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.562.tgz", + "fileCount": 3, + "unpackedSize": 1324003, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDQckcwrSUFfV3eIe9UsWCTXvs7Dm29Wrk+TD8/nLzK0gIhANEsHmIULbkDEaambFew63fE4T+tbNzXtEHZY6t3dxDT" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.562_1633746761850_0.7858815331113964" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.563": { + "name": "types-registry", + "version": "0.1.563", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b0eb40c364a90df7f3a69b4bf95ea8c4c5112fe3dbdc59433a3e16b50570872e", + "_id": "types-registry@0.1.563", + "dist": { + "integrity": "sha512-5hvecmyHlfuHzOYon2o5KU3P+hPq/ecLD61mCNxOs9RJ9RjZEn/jG8iJ8N6PA3zTTWsIXFOqK2HqyU6qj+k9kA==", + "shasum": "5fa97f75c5725dcddcb108213300c709a04f2df1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.563.tgz", + "fileCount": 3, + "unpackedSize": 1325773, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDbKLKq5RTERqQrgJS10eceJGqP4yko/qEJYArhC1nWmwIhANXpSXeB/nsGA/0U4WYQUWxQCz6mkth8TV2fzfYLG2JT" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.563_1634353365216_0.945572719818877" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.564": { + "name": "types-registry", + "version": "0.1.564", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d61f98d20821f7cbd03597bbce95d54df3d955d693ea85beb7adca230a209fb2", + "_id": "types-registry@0.1.564", + "dist": { + "integrity": "sha512-5xjRgPQoOxjCuHr9QEDyQDPKH1DLsIB/2yBcK7YMEDvJwL3i2vH+qFdkfASBXjYyAZ2PLXonbHcphkZnuHimjg==", + "shasum": "133ec0897295300d012e9d2fba936aa8c722cb04", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.564.tgz", + "fileCount": 3, + "unpackedSize": 1328799, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCsSsYabH/rdgSOcXbmhnG0/ThxVJumY0cbaABeFBAtzgIhAKvxyVVOrwQUJ/fAqMEV1FxMC4Bqp/9HWuNtZPE1bdzm" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.564_1634959974690_0.11960954657059064" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.565": { + "name": "types-registry", + "version": "0.1.565", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "45b30336b1f17da0c4f6d8b71b6f9f634c759bf3644880aff0019ee928505b8a", + "_id": "types-registry@0.1.565", + "dist": { + "integrity": "sha512-ZveSdz/h+17ml6/SjgcFU4bK1J3U9RZitE5h0aNQsBQbpZowahdDjBjKIl04N5vAFFNhp/AXbqmsCgwu+ZQsjg==", + "shasum": "1c2596da76401c3ba37d2c27bcb514796f8e4fbf", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.565.tgz", + "fileCount": 3, + "unpackedSize": 1330087, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIA3GazIMalAHip1u0fo8xTGhFpMkHD42npW2Jyyvgz2VAiBOzk/tfUCWd4EgCNFuzIY9xI02uCDLKThjdZ29HdFNoA==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.565_1635566578174_0.42516091488127294" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.566": { + "name": "types-registry", + "version": "0.1.566", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e49bbd08dd51839869ef74791dab4f8fb7721684afdf84fac0b4df9e30348cbd", + "_id": "types-registry@0.1.566", + "dist": { + "integrity": "sha512-3JWEeeot7G3+/KFHCKzWODkieJe0x8o9tdEriEC/7sXe+MGk02y9MYEiD6C56NhPQ4CMuQMH1VQZ6yroHKTzEA==", + "shasum": "b0e93219f27ff9a2a72bcfbcbffcbd9338f978c0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.566.tgz", + "fileCount": 3, + "unpackedSize": 1331487, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDTEvReeuZuxPOVE/v6xssdB4bmP0piGEKMiQlny06eNAIgawJYAt+T8mkxN5qIka/gmPfZD7/J0+LzZWVeMCz6eGE=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.566_1636173171532_0.5424217538078426" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.567": { + "name": "types-registry", + "version": "0.1.567", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3950e35f3e64e1c9dd7e1670dc4d351aad127e0fe5dfce8b2aafe98aef8097e3", + "_id": "types-registry@0.1.567", + "dist": { + "integrity": "sha512-h+eVz+m7VyPisbjpYJBXkoomCEDrOoiYSLwEhqoGqX07IMjYrY/NoxX+RWteKek8/PsLOAjWpPatpXZbuUpCKg==", + "shasum": "6f14c954847e62522e0e8eb3032973c29b93b90f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.567.tgz", + "fileCount": 3, + "unpackedSize": 1333246, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHzrm5KIbUdv6mCuXh1Ynj9YlOJWNoS4GVUs3LoiPA37AiEA7KIDQuf1EBBtUKjDu+C6cS3qcakFlD06J4bloxdVGag=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.567_1636779765520_0.026529880467931033" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.568": { + "name": "types-registry", + "version": "0.1.568", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1adfbcde7f93c8d48a2297d9d6d5520016a47881fd8e2de87675a372a0717a0f", + "_id": "types-registry@0.1.568", + "dist": { + "integrity": "sha512-wVdYeTXyuvQvu+gHkwyx770ZM/ckYTEOpjjyEfPggGSITwACyslSSoyybiv/p+b2tklWjCG3VpdVwlebgBLkjg==", + "shasum": "9638eb8eb8517e7b60d89b20e0295ce4214ee872", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.568.tgz", + "fileCount": 3, + "unpackedSize": 1335632, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmIiFCRA9TVsSAnZWagAA5u4QAJrA5vTkvbXlEQtPl+R9\nk0726561qGuGd7jft4jJccF40kwuwxf9J+uKED66Iw9vjCYlPm+aG9Mt6z5R\nkIR7cGyvu5k9/hQVCrWgFJhJ21V/JLON7lEC5sTm0VdOGJSv4u2IJftjSLzN\nfQNUUuHh7KGTgxULTOR1XUC4kVobfwViMCY4E55boSsIPy5QYCodas84YEck\nB+4/y8auw3AbrJsp2CItXEl545SoDQj+nq6jLkmrvsEuDx6NY+ICimOOLEAU\nixJBjtDQrtSpqveUIGPerg15I4pxVZUFCrS5frqqTBqPsMS7lOHS05t9WHXx\nDdykZPiX9bdFZXnIxOhvVW05WxRbf7R6JEPsxdRfdDK7NkTSoW7rPjoFFdag\nCtL6ChCNVxchB+dqY2ibncvinXfhV+hVyaEiJHCACVTt2CdyB1h7boXQxF7Z\nhEr2j2Ck8CGbWl3ycplNZOgc+Yyg6yiMqQ3T18kOvqZ8CzE7iDyVFhPkQsh6\nOqt3eM+VUiEf06jU8JUG6EwM3KablVBFk7iP+znx13G1DAlEJO07f1qPEpTB\nbg1kNtU1LE65gj/Yx/8OYg99kiQK7j+R2QHdR5tHkWDGre3rBpkfmsFnjHJ8\nB9RPSlKg/AOh7ElL8wgC+8KCT923U2i6taHGOlhQ5iIHhaEX1bUOKQi9tbBl\nd7Cm\r\n=xz+C\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFaa3E++InwdfglHlzwM/g3fFw0iY9nWtYkPpxrMONu7AiEAuLf9m9ZAKbAZn2lN0u/TZaq6+dnQwWTLPHru9lRY8H8=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.568_1637386373556_0.5917933120635233" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.569": { + "name": "types-registry", + "version": "0.1.569", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c606c9090447c004ee22a5e02fb0a2c810baa427a6aed2992ad835e045f8ecfc", + "_id": "types-registry@0.1.569", + "dist": { + "integrity": "sha512-q3zMDfpHs+iFAQ4yg7L/WeUyhSdSkdLQDo+T8Q1+JcM5ct/mY3Y3EWrnY9Ktid8TA5hCyVjhLd0pmSvQiqK7mA==", + "shasum": "a77f39589cbda12835a4d2d2024f33ce717a8fd4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.569.tgz", + "fileCount": 3, + "unpackedSize": 1337555, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhocoBCRA9TVsSAnZWagAAJ7sP/0gifKOGwvV4978ebYTW\nhMMphrYcPxZPFd9yWkmfmUOLPam+WraEWYDKuhHZpcOJBBcJd3LBpSsCFRF9\nfXN71V9ZCHwhOAVYgbPKRwRdGvipOWmX54ZaSwf6QMZpULESLVy3Gfm1GwhJ\nA5CyexarMyhqXZYP/IpgFLKfMYq4CkpjGZLkTmugtV/8l73e/oPho44/HehT\nJyBfP/rj2IrRRU3RM2WdkiVIqlWNp3rPK/tEESmwMSeqmAShUF969pLySglV\n5FSGLCzcC4ucI5hxypRLn1z1sve8X2RjoHfF20oKxzjBNQ2phVQxRWv2K6pT\nC3f5b/C8DQiYWlvB8R3Xjprt9aybQcl2+g1WFmMdyZuz8eS0mMgfDa+tn85d\nKia/ZPab+91xNRVdKRC1vnWONXezM/iNdECmuZybYGoN+XrRVAM0/Y4LV/ht\nRrzSG63Dqg50PttlsEpVK91O4RG15bJ5xpsgjEleWGASaV5zA254BxWxMpax\n2dEJz45wBeLfVbp2t/Ij2euKVXpJXvZV1VB+u3OcpzYCoqnrkuUzUJA+rjAW\n7I6Y4MDJbb0thdASTRGuZrgepwACwh74yRUakKVCHbIsDG0xaoXvRjgjYEJp\nEsqmkoaYPhF+g/6ZatDZkuPQ24jCadkOCr1yn0keRae5UvAq8SAnP1el+CJi\nOSDV\r\n=dTf2\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHs5cx7V2LiDs6gCxWqIQz8fyeyJ3QjeAqSDLXdO7gqsAiEA/lR5qrin43/IxDvxXfVDggK5jqcxrquO2TYbT7UCl34=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.569_1637992961528_0.5790455053874939" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.570": { + "name": "types-registry", + "version": "0.1.570", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5f7eb1e0d58020e1d1e5553d6ccea0a34f5f039d425da199e5b1b476b2ff2196", + "_id": "types-registry@0.1.570", + "dist": { + "integrity": "sha512-1j/P+Vq4czEKsvVl1h83jLB2oBiCO/z09Jluu//8XWQBfewubJHuWBS7tNSHEOwiIW6xtP99LgnwtlS7afLn4w==", + "shasum": "492dafef2e719aeb32e93b07755d3c1b640012b1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.570.tgz", + "fileCount": 3, + "unpackedSize": 1340508, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqwt2CRA9TVsSAnZWagAAj8oP/0Tksekky1co7P6xXTDk\ngTr68NNm42eID967cBnSh+VGORyfNuESNvz80FsyIkz+YYkI460FqL37tmTJ\nYwCmgUqYZ4vo2GsVyHpPc7hN5T/65mU7g8iL7rpgVuq5mUvmxWJR6lPdEBcI\nbs7kqQ9y8xGSK57VIri7NgXSbZh4f6JhHu1yPhOnKK1JqKp5cQXtRbenfjcZ\nASke11J4MHCkhZBS45xFqOhms/D5XWIPkWXEXh/yIuf0BiMoXdTwXJjQo2gU\n6CNlVnfJuT5CLelcDftNIghGVfkF6AQ+xgjWWsWPHP1sekKZK6ptyf8nHmMz\nhhllSa9chdfOTHUSHgQ3oanwaN3CjDY39/YJWM+yHaPHuPyJ2w8ft1ZOd60X\nTzl4X4XSgtX5gL3N4iZYV6on5eixdOvVJ27HAbwCnp8MGXXX5TewEs8nGyB/\nhgAfopzzyXaWIotev6iKJe3RELFrCkhEADa2/v8BvdNoVsA+zVIrzbZEb2/n\n7Ss//MJjVgIbvDSxa5bWwh8cT7Jh1OPQAGTUM75WNQowQiamPIInCE1+9/s2\nhcjZWl5iJDPx8tG0JXZ54dfkNqa1Zsdf0PT7Von/DS6YIFSjnBl+LYyMr2wL\nEJxv52wuPBdzN++667rhnK3lWQpmztomFVnqkJlFSZYvGZNbygzk/05x4JEb\nkiLL\r\n=IpKV\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCuuZeza973+drzxPS84YIN/sVWUlY899nkPBDxF5vE8QIgQflm5Ex3s3oEb7Bttgvbc7mjPgjUmjm8x2fw90ro5wY=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.570_1638599541887_0.008971864672454144" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.571": { + "name": "types-registry", + "version": "0.1.571", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "662ef27d52a8691516bda4fe93dd95a39d291ac4ac560234abf43579756f474e", + "_id": "types-registry@0.1.571", + "dist": { + "integrity": "sha512-yieOEwYlqXXg6qUFAxYWDUL7KmeaQokplY758NfBIAhRBE3vwp7xdZH6peaRxNJcGGK5QnLoSSVpj/B+U9V+OQ==", + "shasum": "63d9a7ed65f2223691a38c69fa5c1f22e5212ac5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.571.tgz", + "fileCount": 3, + "unpackedSize": 1342960, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtE0ZCRA9TVsSAnZWagAAHgYP/0lvHxPvf4q+NVen4O39\n+gzQ/G8dzxHcCfOzApoNqY8H8cnrh5ydqFSb/mah0/w5S2tI0cxY28WOxEPe\nFXegAhPsqWte8ILgW3JJ85rA3z16iPDCknvJudfjwP7lI7bR4y/RRIshMjNJ\n7+ha2zSzmO+pgGJnBMbNYgI5xr0ZRKzsIh+e59zRT6jhMgCXOiW5oJlGHrfA\nhCdALh5o21mX60rd1tc7hkUKFuvyDfRB+byK63mg8p8h+tb8xrafA1fbg5qH\n+R5mgUQljvoc35q7Kmr1TGWAFq9UVfhYfPTJVpCF8Zpw3In6wifLj0MJ1Hx+\n1PjBPbMqWACN4RlnWfIU5HNvXO1brqkwDoB9MIIRnzuGNvcDa0qJ5CZRQYbh\nD6yPJv87+uloWFcxr0ALLZAoLv1sMv9RRTszp+yVpMFmyWLmEd0e5Rkm/xRf\nUEfXRgsia0BZF1cryP9980rdcd0536/c6PoziMNGkCLxPEIiTK+jl9xDZMmu\nwWvn2V0krSMMRfv3dLs18xE4fteEEAemi7fjiwZNnK49WmUR08Q44CGQ7Jkr\n4hKb7pm2i5dDUeHF0dpl4z28ZweC1xjl+toNIrSjk5dNYEkECa9k96n8socT\neRyMNqI8s2uKAc2DCKlGGlCzaM7mc3yrrdXwYg/Xo2n69MwfBYNbiBD+0ub5\nOApz\r\n=cU14\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCM6cV1wyoM9sVxTcLR7/mBLywEVajZ2RB285Kwv95LwQIhAJRDl6EYCVaoLrFw7eqtG5bLmD9lipARLGVYSbUyK9oM" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.571_1639206169279_0.5935626863435133" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.572": { + "name": "types-registry", + "version": "0.1.572", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "88f5eb5d43b127914ead8df4a3d23acf3e40ed9410e9d5d9affe70ba061a097a", + "_id": "types-registry@0.1.572", + "dist": { + "integrity": "sha512-S3Ij2W+eA1NEptvniwsZEWUcscLJF3XlWqtEAn0PRy2lvujUQ+Yjn5ChmK+AzMAlDYFsYamxFSGoNYCdIVILBA==", + "shasum": "362cb54332745aedd9701444cbd88fb0e1810333", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.572.tgz", + "fileCount": 3, + "unpackedSize": 1348450, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvY6QCRA9TVsSAnZWagAAv9AP/1AESA2ljF4elGl4pQrQ\nudxsfszOEV4W/97GgWhFv03+Pqvc58UYT+DwrRwCL4fz71llETz2zaQ2sxIP\n+TM6FE4ZbuzcqV+QxTD4lH54RvRD3wp8/+px4LOjmd8cnL50U75bGaiRnG4q\nJFicYa+dPMEcPCfhejcB4ILl0M/IIheDfFQPqcplaFFwtEDC8Y88oU/SJpgR\n8IdqT1/fmdOh8cBxAwApHrlPE+RQdtrZrdTYj0NYZbEdqagT1A9X68fIxWCh\n5B7q9OvkUT7URi1kM6h3pfhBHXbV2WMidGOug4ZhzvlNrNNjveTxC0vHOISy\nbjpOec9hUxxkxsR23KwZBKRDA7Ij9ICRr9pebpKq20aEj/bDft2Ra/7cJrKW\nNyoht3J68nRwpAK8fMa2aQCURSmLNkiezJzuh0zmjnXHb0wJutopR20BPbmB\nIQcTOouoI4nigOvUhx3vV5IIQh4jXgTXfykxR4gilL5PJ7WQhUyocm0KqVFb\nrhAisOE+WSQH/R6pPdYqGWvUi/C11PvKax5UENNXawlAGza0EGWtbMXlm2xq\nHMCh1XjtDhJs0TV+ixULpsN/Gxw4CC3hZDV2tdFQgJZWpmNSi4CKpuAGe1Kc\nJwlT2XIpKVq6g8pSEDpY69ZtahJrvMIvBQ8nDtB+MTSOxc7HBSFHQ44TsSus\nsSsu\r\n=5jeI\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHScrfjUlDvbW6XPKO5TUsSOswuFniHBr4fzOSLDvK3AAiAOhq1xzD5DJ+Dkh0/9qFEFzMwZiUtmKUxIbfYyI4oVtg==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.572_1639812752772_0.8105694962369137" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.573": { + "name": "types-registry", + "version": "0.1.573", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "64d49bea14f273d4902657ebc093e04edd6e043929a1777e35196c0061a2af93", + "_id": "types-registry@0.1.573", + "dist": { + "integrity": "sha512-lnz6dgOMRSf8yp5Y7LMIl9zQwYATFo9V/CozxDJBgRGOAN+Xd7adCHtI2VdeTJ5fEN9jF6nXrDKRE6V+Vf8I5Q==", + "shasum": "c690a51ef14f1480d0ce46cd1b282b11b03d2159", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.573.tgz", + "fileCount": 3, + "unpackedSize": 1375970, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxtA2CRA9TVsSAnZWagAAobIP/RIF9seDC96fexdbuLs0\nccsKTh91TBYWmormpKvimEpUduMXMYqBtWeHtLo1JLW7P1P6nx/+RUaqn4oj\nD2CKuZzGPn3/7s9zlYfwHUrMBnaqJUaD3Vp8EmPoUmz1aF4F3dqQYdaOPbbb\nkPPXWKpmmEggzrm21tmPwobj2mjKjTvrt6cMokBl/OuMVuXizhXE3XjRf8YP\nCd+IPj6x8OOtQBIA4W7jBplc2yOh3cFnr63qMycFhsQylNByCzUrsI0TG9fG\nsJiW4sOiYNwGoaBpgQlB7Gtdhyjl1wgU4aBgLPtE6I4HkfaRiujM6SKhY00S\nMz6OsIBvxKAEJ3Gr+7zoKz/NsT5Y0DCnhe2iwJoW9jZM76JBtccs5jTEoQ/s\nMf+3BVsNPwH8ANGbQ+DWVVYoZBaJ+Q3T5zJRRajXaUnpCQwtuoxw7ScUwTF0\nWAWuF6AlpgRcox6P7pRtV6EefeMoPieDvG24h7GbOFV4dnvRT/Uo7tD8GTV5\nGYESaI8tEFpxZa4CjGBYkz5TJezUe0TcQFnb8gVjEg9RYInxCVTbpYaApbRY\n3fSTHThYurPgdPZ77VHk66abe/TiQ/xW4rRqdRbSJ5/sKRMqgCvUsigD/zmC\nBkCxVZZJ7+7bychJ6QaucixHrrmMunNi1P9F5pi7kOpNMPI9D0w8Sp6lW9w9\nEBfq\r\n=29tu\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCWdHb3Q01xkN6s0MbsT/ThTGuq15YnZM1qorphmMgtAAIhANxEeT4tmrWrkcUUlKKLpw0D7C6k2oKHHQpjP04ykj1K" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.573_1640419382360_0.6657677661131056" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.574": { + "name": "types-registry", + "version": "0.1.574", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "de6ef6625dfd2fcac8b9eb70e1238121bfe8f2546c7589ef7251ad668055411d", + "_id": "types-registry@0.1.574", + "dist": { + "integrity": "sha512-HUTcYlem/9iZlSL1V48ur5TUZvgWQ1FWVmPh63U3ltt6WLfRrcI3eHTRMGMx6M2Ma3ZxaF/ym1HY7hCRilO2tA==", + "shasum": "545990623cfdf5959fe02c1b357f765580d78dab", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.574.tgz", + "fileCount": 3, + "unpackedSize": 1376828, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0BG/CRA9TVsSAnZWagAATqUP/1+74blYGZkey3uJ2kX3\nuYj4XjRA3y9junGlppXFurVzhfc5QbLhylhxXJkKJbFjZM62TTODWR/i2SgA\n5F8e3o8FcrK8yw53htR5NEwCSb+5TyujCD0FZvc6CmUc5b8mcE+XV9f0/U/T\ncFuqaodozocCvI9xbkVekvQlm19wcDnMOiFedQ91o6w6n+HG10w215E0GfFt\nKSBgjJjM763eJAyLsC08S9HvX/2Zc8daeqHiXgoeWg9c0CSW8pRDETNx5wZp\nP1vjSnshOJxCwYz6rnFc5fhwb6FCugYmucuKEFA/tLj3MPaIICFhW0K5EEGq\nmi8IumyeW3dvLdEDu9q4w53yCjh99B3NiRTijXRbrLiW1OPTgR3csqpYqXEf\n43d4acAze/IT+G++1yd4z8O0/Oo0+EpuAe7ucKx8291u9LeZW5wXw+9vgACy\n6Akbg3J+9ezUIvhRgzM3q6gM2RMxWx5nvYRh7FwfEU1cOApyftV36AbAMIax\nIAIwh8hlCEHDqQKglzvg4rXMzHvPiz3QB6El4TjQBppC2uCbhUJOv+yIkylz\nQo4BaFVXUbTFFzr1smUmdn7lD3mTjjNfbnLWM/S7LWNh2ElBde7HI5my4LcB\n+Y1LtIbezAUQf5rBtB+Ls73eGqkM33SezEDTu7VI+27UDIC/ZNuC2cOHjaG6\nNKNU\r\n=porM\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIBJ2jANa0rPj/uLKT6vXh0KNA20LWWlqfXbYsmoneW5RAiEA8A3wRLtKWaxLfuS6tfa0k9TdGSmzTYZsPpgANt+gwmc=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.574_1641025983103_0.3264814443932007" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.575": { + "name": "types-registry", + "version": "0.1.575", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "abba850bb48616123f1f28011847724dbc03c8df30ad241493dd23fc560208b5", + "_id": "types-registry@0.1.575", + "dist": { + "integrity": "sha512-EPLlvAw/nDrGkW8UhdUthzQ/amsWWnvD5wi0mucriMUhpeSoyNdurqjq7N/+yxwOnVsvhzFc3IW1KETAI8+Fvg==", + "shasum": "a2608e9cbdda231274668a2ba68c356f7e97e091", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.575.tgz", + "fileCount": 3, + "unpackedSize": 1378948, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2VNDCRA9TVsSAnZWagAAUmEP/i5cEV9itCut+B8YOmfV\nZxVB0TQlXRE+tP5y0hqGZdiSWIenc4Zm107IfsXn8fRlLeKjljpCQo1YQB78\n5GkMiGloXb8s4e0dpKS4a02uCC59n7KRXPno7aLkEL4at0EVGDZc0kkeHeeK\nqlcMX42niefBhL/yFYqUO6avuLye8sWPsUBlOcmRvcvWMeA3h6amlP/aE/sG\nRqs4/nMWTqFA8QwJqQe/hbI07wlRzAJg/6Kfyl9p0pXYKn0xpOQ6dTikjd8m\nal084TTvYanPH/SgUN6ngeRX8sOcGgYTyF6u3pWZspENreuvcyaSjLWe2diV\nUMubUDDyshpkVqUMofbHtv32co9xNLlx6yi7oYfC2PXNsvfVbDKHwH8b1rdC\nhhMh+CpNBEP5LAnF+H9/YvDDgitxtAoBgbg6EBBtkc2jXQsG0ZILkD6wzog+\n8CMm3L+lWmlCTxxCUBjcWhOD4gRmE3JmCiIdG7pqYE/ptiIN8Iy+c4aCAVOd\n/vRpY/0fwsyXgjy2Yy68nqBXYbzfcAaIxv57iqCLW13K+sP7bkda4tNfmnKI\nXHn86JOL/eX+W76d3bvNioY+ERmXLuTWkndjCdqD3dA9spJyDA3ABX4NjzeG\nSIOO3To51W52upFt8BfQIrXXNfwOPgn6TQyXjd9Uz0xsN8O7HPdTs1SwLRFb\nyK7F\r\n=SG7S\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICUI6lUS6a5POlikwJsxk374R7SGkbSI87r+j81c1tCbAiEAwooifiKaatGVXOwG7OcKyTvjpFWAJUSPftPs0p3ZkH8=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.575_1641632579689_0.9529156859661483" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.576": { + "name": "types-registry", + "version": "0.1.576", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5eaffde600ba7128546aeeee9bbf82c526628fd00042ace1fcce8c0891c38193", + "_id": "types-registry@0.1.576", + "dist": { + "integrity": "sha512-sJSUOKiDv6dJFeIvmhSYgVhhJOwRPCGywtvy4Oi21Lp7KGRMCnTzEjRYGB4CzaEFwnlqtMQViqBYV60R89P5MA==", + "shasum": "e272d70c2fe5250f598cb8139720c2fe4b0eb9a4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.576.tgz", + "fileCount": 3, + "unpackedSize": 1380070, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4pTHCRA9TVsSAnZWagAAxg8QAIDhvHNUDSXN7Wk6d1Rc\nD0z3qW+1r/DDyI2lCiuu0HjmwFHpInYpv1cAorQXNRzwMBqGx6omNTtMYyUS\n8TxcBJq3s4IQeYlxAcwI5WbFfNDRnbajbOpcSdvKEc8D8jFg0amzFKZXxW3N\nvLV/eDHkP6KpyAQq3iIV+tuqXmNGf2NpEH42TKlLlAnLYrqCMLH9pjKo5V0J\nKpM5EdcG0IBfPGdpOaPdZhvYhFp34L8i1XVUQPIu4lr6EYNqg4ipCqV3RJsA\nKUoqdb5lbDiQpJXxPXSGV1PV0+DBwzQfYpueRr+t+vLNtAb7Weu20YSrmUdD\nfBlVAClcN26ndf7BeemkEfLEGaXQKn/dz/XdY1DwcAqMee2gimE1cd4SMUL5\n4uWswY6odZvUmisPZAASWbeDKWVrKPIl7vMe8HGPzPb9ZNGl83rVqKl9W7uz\nhoFfedOwU1dDh4SfSkNXMk80eNWy5VOP9sxrgMcJsBBdr+tM1gCR9VP2GkT/\naMeVfFiWn/ZEKCunwaIfztyBzuRYgBdEvM/Rww1saCKfSgqcFPgULWVqdfXs\nu9qQd2HN2FGUxEoQrqpYGbIxjjAqFqprBYNeqBJqLBYzbH4mGZcHne6g8orh\nXS6cw/lcqfKlf7tm8uD1D6Sodg4AkOvjDj0apLb8V/VaA8L8FRR/jAYE2LGf\naOMt\r\n=haSU\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDFIad98XZibUWizxDigF+e7DPFrwm3UFXxu0TSayho/AiEAgj1Eo9nrDTFGKvNULoqWoRf6h9y8xxZeOiFvzGybmBo=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "ortam@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.576_1642239174836_0.9122084904930825" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.577": { + "name": "types-registry", + "version": "0.1.577", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "177c43c498ce8297aeb307fc8b6f4cf1387f09b3c853093420bc16be38dfda51", + "_id": "types-registry@0.1.577", + "dist": { + "integrity": "sha512-vU3aYnA+FUeQnC7GX6LbXLM5aHOxmN02XLONWs7MJ2Nzkh2FUCCmEBrCtJHQx+bQ8/Zvs8a4jehn7m6Vfn1KAg==", + "shasum": "a66eb38d90a1e8ca4d8afaf0579d1e8e244d1214", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.577.tgz", + "fileCount": 3, + "unpackedSize": 1385267, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh691xCRA9TVsSAnZWagAAeGYP/iz9srKKaGdb1VxZFpbr\nwPxmbUr6IknDruofR3WX3+AWpDoILDBDfVIoO6UFb+hE1CLzyBGRb3d1gv5Q\nC/nQxY4SLNXu8qOSFQRDvP39qYh7hbiCOBjbAFvr83symSguiVCXYubJqOSv\nUUrU5qZkE0wgDPHRTpgruqzR+CsfZhiPYTHTSJuZfJtjaJusrc6hlIR9feKD\nxToGUfVfijqX2SNNUoqpPSsrLgAiAW6M4aCdYslyIdfAn6YX1QKT9gDolB/5\nHCQu6VvhjBq+r/jJxrYeErgavrVCZ3ee7kcAfcBq/beEMgCJ5FstvMJ9fZix\nRvdAfaaoLlVVuA4Hx1himyGzVXur6JIkByFY43eyeo44iQ6zuOquBiR4LMTs\nKpdXmFBOzdoCMK2zTYTVnQ6QKYRr1wdA+S1yxNUqDCExvVHlKkHhoIxMByHx\nXLX3FJckSQFdPFeL2X3POij+4AYeSzDTk0ibjm4YYawV3UgDWie6XqgQO11R\nqUFm0xlIKvbzLCqZMxEc1uxlBWxfr7Kzlkp0yeAJ5mgWdOA/1cduy2fQK840\nwO+oYPRQNEarGBoJzo6OrP9l7eD4Eqc50PkxH8xk4pTS26ErmKu7aWcdO5Be\nY4BoHVfg2XSembo24vIRWQD01PsNjFSEis0DePcV6ghCXE82pSO6uvZgVMc5\nNalL\r\n=VsAB\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDG0hBbl/kDHZ1efz2qOmPYQJ2bwQE4GSdaJqgDmw9SswIhAKYDRDVrLZKH8PYYokX/S/G4yHvhZZZnBVhxg3Kga+qt" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.577_1642847601273_0.671410798302339" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.578": { + "name": "types-registry", + "version": "0.1.578", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "812e0f68a716211d1e77497c41c88068e6f0a07b7872e6bf060ffa0c53a9f1b4", + "_id": "types-registry@0.1.578", + "dist": { + "integrity": "sha512-roQudLL1gZlOIXVaf0NbZ9sB75yXp+eDFPLXxCx28Wxb4BEsrWvckfOc1Tr7bbrR3+DrDPDD/zxL2WK0mZ2ELg==", + "shasum": "7bb9c33c01b35d9062e8b08997a039bad180c4f1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.578.tgz", + "fileCount": 3, + "unpackedSize": 1386352, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9SYLCRA9TVsSAnZWagAAdhwP/A1OkMprhYOC/8zzNzNq\n9q39XTnXvsuRA0B/btHAr48YAZ8c7zVnRdpgZijDVVSI4KPGvozA3w8+EtUy\nji26xx3KPfkkDxocYxYBoAGugrvmW3z1CvCvXq3XSDXrm1KxK1E6Oe15ntqT\naVtg0cWMX6J7FMpf7+6qnNZ5/ztF9DLzgjjNRwNRdXCn3nT4utGFtF9t75+q\ncY52TEnCcBQ+gVU5LaMzS+B2S8YFnmWA5RPl37gl2NfnB4BS1fNpjv1ST/Xr\npz4SAvcE9Vov1wwP56LiC+yULeRZ0a9uXZi6BnyVzfHGIVuuuhzpSL8GM+pL\nTgHYvg3Tk1Dn2tA1oYGQ9fQCPAXZcC3u+EGUNtR9/PNNcgIG/xrxs721asoC\nQezo4CG9o7DMEbK8A/AKQzMdUUkHbz19OuVPUANGWwsGnPcO9DmtlezZ/xm9\nsdG+bPNTPOs1glJq/vF4Wc7BqDZW2TqPSY7OkY3jITSEjLAsPmleld779I+B\nAShJmiyjao3PFt1NlG+46BgrYS2GtcPL7N/DWidHWAj89OwZwDOE37TV1QZv\nRa1W4PhX5woeMuguD4DxH5yNrJ/z+93PE3xKH12lVQrNaRrpbqKYSPNxmcKh\n28Y24n2ldnhoDRHi5xJwp5mzCytpYh8lEFPB+AiGAyNZ0HsAD5j3Ndri/9HL\n5a+l\r\n=8qDv\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC6TgLHeFLXnnceEhO27RQfyzZ3zouExlc8fLxRjLrqNwIhAP1S+EBZ2x44G2n6YYrXE1vHZOtxLq4smJNuE5GsyNCS" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.578_1643456011260_0.7130145741446281" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.579": { + "name": "types-registry", + "version": "0.1.579", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ece4713ac1c6e8cef0d5850536955a0d5c4feae21c905e68a08be75b9cd58b9a", + "_id": "types-registry@0.1.579", + "dist": { + "integrity": "sha512-WDwOzB8U+fgb1hgoHdtRhqiFNVuPMqCRAP0T2AK7+feAyBz3J4fndIlOYsVN9+5ooqhYpiGihayqVty5Noz2gA==", + "shasum": "bea48db49b4e9050102006e04a7863665bcdaf16", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.579.tgz", + "fileCount": 3, + "unpackedSize": 1387583, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/mdoCRA9TVsSAnZWagAAsnQP/2X9sjEsC33tTbhPmQh7\nyY8wZmDS6iRIjGf5CzAN3iVdooGbmQ4oJNyFP3WDTRRMLShGHTlqeKyVJPID\nARSAtv6YkM3oZo5XcvzpJf2R0jvNO/unCq9Q9Jp/5Lmwh4HqLG3FLS5eOC4w\n1TaApJs/BsMBAdsbzTgdrAsJIXT5TRTtGGmNMHzZSqUxXlT6cqq+0X6Llc5n\nvQLpP+4v4ApS7aaYIrbydSnvoalzWeb1jxvW7LPNho+QlEDuvMu6hOTnQNSi\n7krCJt2d3xz7ZtF4lX+Qu/c2T9oP+K3vqActT/agDpYuFh3MjpDbXQ2BjM1X\n1el1w1Qrpx58zd0aF77EPZAD4yFttOTIjXIqY2HZvZ1q5AC/TMRWqMtSy28C\nu26lmxn/om1/X9XMFvUW3R236+GzWIg7RDN+GuU6+NN1FsL6sUuyoyLUxsUA\nzZJrsZs6LNC3lPFAoLIryauOrZslueUtCgx50keHWTaDCedhevMSQhiQXY/L\nyEwOeUtETpd/k1doLfeU9bMDQM3WUuU5gbqlIP6G680IRNk4m75V7tVaI/ha\nPDyylrSnsXwQzMtnCRWmk5h/vNDfCJ5fg7X8dA3wUOuFrvGkBPBaSFkdbnON\nrgl2HtfywB8KPDqqJm+ZzrOyOLUeiCywsX5kd6/49XIPkM5PS0Z2tce6EES6\nOs5o\r\n=snD7\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDmyctaQ+ONY3N60VFVSFvlY6PZxGOWvIKU/bwp1NoAGQIhAOAidZsiKqnwf63z676by0LTWkftXDWkzXzLsOA35Mf7" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.579_1644062567939_0.05348232433579314" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.580": { + "name": "types-registry", + "version": "0.1.580", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "dbd1e4e77036bf04828b569c99a829ce30dfd3735f39e049bbca572c3c77deab", + "_id": "types-registry@0.1.580", + "dist": { + "integrity": "sha512-xUwYbGUCnyCi5ihRc5X4t0QCEkYc+svhedDhmGkqs84SMnnuEZUMOLGrhg8ZxT7Ur+e3Hy+b/cHr46uogAe2IA==", + "shasum": "51c223ae15ddbc0e23c078230a3ac7f40e6128e9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.580.tgz", + "fileCount": 3, + "unpackedSize": 1388169, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiB6j5CRA9TVsSAnZWagAA1EwP/2ADcBo1iDUMwRbrirPW\n3crMOM89tKpFxRiWwCyXviPYBn7RbWROZVchVeoJiSPwTQedNm4FN91c6tAW\ndQa+3Phea6syNaKHk+rPVThDUzdmikkH9EPaHlUK8nKJf6Ol4F69GIM0tsWm\n1qy+/a+BfkbNkv94dKvw/Cqj7MdfYAp7JVqrpkZNL0BbH3zC12ZTE5dcrkS+\nPJdcdVfYexjtbHgIke8dg7MgBGwpsuFBTc5huqqkzZF1PuDz/0TK9c82dZSI\n97BJQ6oqPDVgAeT5x3qLgC2qRhveXFJ4X4ynFTR43bUlclwZiNUUBpEkhMq1\nA8P6TfnR8af9Q7+uJN9WatOiCBuD92He0ZVqWAR1x/e2dyYgdndrCoK9Lx3V\nEQ6L8HREWSRoBGv/5EO2QnD3gSyJe54HEJrtoR9J7R1ZN646ZYxC9WnGjrd2\nUpdNONi52s4FYYWiMd24FVaU3RSs31KjSS4Zw3XZ9zT53KemT2RdDNkEWciY\nNeidFdxMvcybHZLHVxvqWz7ZcmJVcCnpGTSVVolAYRuVfbJraonuHP8EgiyX\ncoM+ymis23E2M8igm7NsYmY1W2qVAOpFkyJu+QaEs8KCy+eSaGQduxfqPDp2\nWKuPJ1RGV0rFOWZUHC+OUFrQoKOEGTvhu47b+qYhpqkK2tteJoVsAxj1dW6r\nFBp5\r\n=FQAw\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFt5jn2OK4/rGXanlPF8/NyNepyzwRUKoqGY5oyEJyeAAiBuaHHwINBb1K9SkANLG9JEdRrQ1qBo73Q+94C4cFwaFA==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "orta", + "email": "orta.therox@gmail.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.580_1644669177171_0.1397190099289347" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.581": { + "name": "types-registry", + "version": "0.1.581", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ef1128b147098bf30242d16609f8c4b7b19cb8f4fa63809b627dd6c3e7c3b7b0", + "_id": "types-registry@0.1.581", + "dist": { + "integrity": "sha512-kMr8IjAoAhZqrLWFd/RV2bRUFamYwUqJKqw53oGaHHi/lUTcxbj9d7ZYxb87Jl11jMCaRnxViuPCuBVOIvz/rA==", + "shasum": "d1a4c2df17614bff0583c1e50d771a119c5d8ce6", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.581.tgz", + "fileCount": 3, + "unpackedSize": 1390691, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFSU6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrglw/5ABLLQEhQl6tYkjg9eXq3USkF7vGQQVYL7XkRzGndGhwlNL/q\r\n8HJboYVqd4jsmodxQu1gqrN8F2GtXX01jb3C9NeocN0CCFIYQbWAMzWty+qi\r\nZUskKWD0cnlqEhOfvnsUhKTTKXDv/RDYNQohRaP/+jnUjvqfZQPFwqhm2wR+\r\nZCa0HKgxeyidt+6MkVUgQaEL4vWKMvwm5yePCcArTJSiPixX2n28eDEY3bkI\r\nT9W0BNOsrPzzVdC0yqRzb91npPeGccYoQV1+luVk4ituC75HtG1OVOtIz478\r\nzhW/damzIquH+zDUHhV3IfOAzEnjS4HhZCIOTA/4BLnqlipeI3gExPR4v49e\r\nOtEuFu4SiW/qniIXelBx9Yo/+jDkYaoHCELyv8jcjynS0M5hRT+FxGjniKFD\r\nvuYSeaWM7aR8+kj12eTICM4SAdLVIq8yQrUQfYI2VL/m48QPqfILGJh7B++u\r\nPcJORyulVbfKca4w45jm6UJg339aeHXMCRGQcoOJHT/S3JuqxorrikQgrJom\r\nIB2hiWJgdgooCkI1YodFQT1beeK/HVqoZX3e0cXLIVhwmE5MzphqJ4c1u6d8\r\nEOJI3erM/MiR2y3PJxsdvkZ+yLY0p0gsaSJA03wFO150zPaA2XsKo5d24v4h\r\nL8UZZ9AwNjGFXNfeWXSjyP+FB13CQxsXWo0=\r\n=TgI1\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDuzBaprzrPHn+IpDYWp6BWJO4VMRFL13FlTzFTnWGZrwIhAL5wtnd97awuJCqo25Rh6nlMiwVPU46ytPM6tS/flvuS" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.581_1645552954349_0.0023605011548468724" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.582": { + "name": "types-registry", + "version": "0.1.582", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2609dbfff2369f93b97bdd693b2dc08bd73d26c16d1471f08f849321f3ad4c54", + "_id": "types-registry@0.1.582", + "dist": { + "integrity": "sha512-ZcFuEPwEuifbe1P2/ER/3wpJ0QogEnszp2JhcfsbAtOSi0r1fKy82RnVT2nnRX2VUe5wk3NB2D8LHYkcKI4MMw==", + "shasum": "598817621ea70579aec8e2c943fd07f3583619b8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.582.tgz", + "fileCount": 3, + "unpackedSize": 1392269, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHmaeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpiXw/8Ds8XV/12NkSALabO6JNCB7+0LerLZ6DMhxTrTbDfsZEzDAMU\r\n1loSOyyceWCntzz23wtA8urHiXy88LT3qc+ETUxGqIoqXgIUh3AxSndi2kxf\r\nEhI1KBSCoufLk93lW47966KnmQnfEjqI5pM+gkvjSWk6fQBCC3O4SSvqKbzS\r\nNVGgl6ooXvwlggimqyjJz34Vg4SFqBVbCX/2l7cOk6yf0M20As4dLihutIIM\r\nAzI1n9HeM4Zfxe9Y6bkMh/DwYxm7BJDZs6pm9GcugJOMat11nRBNv9tiF97o\r\nE61rQns4BkbQPjF5mmM7/Khxt0Rj5GdUMjrYggM0J+/PV7sU/myJ1Xc7VOsf\r\n6m6rVYR/eQGGutCA/A0tZw/LbLhOFMe5ZaqKT7lIOLVphB6m9mbV3Ga6Swlc\r\ndOoFGByp8SDv45mSUPwQZPcuzgfwp2iGkAUeMQ5qC91qPoVQpdPereP1jAne\r\nStKa1m085hICTWeGds7a8YjEfFQisdRUx7NmStG/w1m4YUiK7rCXYOURBwkJ\r\nqkBvIXR3X4lwa87bDZ+ACKlKX30u4/Uswx6Y2Kx4XdE1PUky1Q5MwW6CJbSY\r\n+XAfgGd+obOG+V8Ls4xXcohXRkMg6KsLyfiic8PwrqWvn36fHbkzGIwryHQk\r\nv1ZRNuKZKsV8BzneizoukVachYRmIJr5BlI=\r\n=yl2X\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDYFxXmepmW0CrxQoXCZo0+BOw3to8bE+9oiY3a/lHmZwIhAP25W8Imyw5GaBSr4XVDtB9TMYunsSS3qsuKGN2B5aX8" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.582_1646159518026_0.44288099287136284" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.583": { + "name": "types-registry", + "version": "0.1.583", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "46ce17b42c76d163be7b6172a6f86e4897751d42bf57aa9bfd361ce43c4f20f4", + "_id": "types-registry@0.1.583", + "dist": { + "integrity": "sha512-73kmLv9447u3M9kGqO/GF0wX7IRINvEfNnHI/7ndCoPqAMP4Q9lzWUp21a3mkbRrvVq9qF0hcDytTrbDnc/t2g==", + "shasum": "309f2a12a054a3f6475e35c2adb905d1f1d81476", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.583.tgz", + "fileCount": 3, + "unpackedSize": 1393705, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJ6g0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrRdg//SxzdWVFcwdjVBGGRH89GpB3r/JzoFFT/un36ExB09F0G9ur3\r\nPRUBW3cfmQ0ur5V+g7n94ik14BVuCVOg3DrQIT2JKmfWqqj5BWd2nDJEdyH+\r\nWZG6J8es8kw9J4KF6WyxOp1kVYCnVD6as2n9logXRUkbV+eMdNYjeafDovL1\r\neA2F7UEj1Spj0C1IAIHWPk3R0MttTLYah4ctKs054vgMgJ9cATrz6bkAFe5/\r\ncT0lNvf1IUYe3bCtWHgxlJ+TEB+CnfjJAYrHEuNfBDlwUxz2UkZRlhhumok4\r\nbkGAEOea15IRAIlJLyoygbfvTalhYALvarjwjhfrJiFdCa6bzSsHC9CkGfEI\r\nK5gzkINk0j0eAzfsk0JeufxeJUIbnxdlP54QC3XE5NBuASHdyfW9Q/7qJ9p/\r\na94XVRS2HS1EGOOlr5CO3htT4bdmKpnN5xSLCZLGyVtjCzOlJ73Y8mkacVUZ\r\nSZ2kb/IwIXUFfSUOEluWCaX+XNjWgHT7WgsH7LgshUIx5oXQAcSsfwn4kJXU\r\nDpNpVuDib3DMws+gdmHFAf+CwbUa2bt4H2FaK3Dg6OA1Kl6iCSE3URPFlRmV\r\nW+bEFfMeHtWdJ+o7cUppdeNx+CKFOJnFWIK+ApAY0WiJvFmJSMkD9jJHG92V\r\nlHCldsYz+VhKhlfLfBsvXYG62NFCWNv10jw=\r\n=5Gjy\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIG+hhWxAJq/9q/u6Cn2Z/1097uTEdDzLM39ytopVDq8sAiEAwUqIhVXoi6QTVouICMxwC0SZmOKslcAPyumAwhHJdhQ=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.583_1646766132277_0.048819712169487994" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.584": { + "name": "types-registry", + "version": "0.1.584", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "63966471b1a69f860236e5617d310379ea55c8b11514d377b197261a75d0bd09", + "_id": "types-registry@0.1.584", + "dist": { + "integrity": "sha512-eIeIJABHBvtZFf7LVCiNDS2Uejmhs5iMq0RFG7u2rfn/eHnqKAlNrmU84dSL82KLOyR8Vk6qg3PV+Z0sCaNHUQ==", + "shasum": "814008e651dc004e19292ed15e2b863e8edd82ce", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.584.tgz", + "fileCount": 3, + "unpackedSize": 1396143, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMOnPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqcZxAAg64m34CLE0CQgEiI+PlEVupavkSEgGcsAcnOQtRH2BitKJZx\r\nG5LYhxfosIfdfYs+0xZPed0ARVL03qroaFgwDC4kSj/Pa3Zx8aonGxwizRe9\r\nocqzb6UqQIBlZEC9sKlA9ej50ukAJoh/wGrqfk1Onwgbhk6Mz83VOe3bwue2\r\nJlNp+ShywsB91qx27ktG3tAdgtOwyA40glgc5/PDAoY9C0Wce+YQW9fnvRhL\r\n/W7v92o7QjL7vEkQf3SFh7JHan1Y/LTjqVLbp3Dy/pwoWDgJ/8PPzegYKlTW\r\nQEL2wJ+kE6ghI6FRZ27IJ03l+UW8XpyAr8zN0Ub08Jz4Xj0XHhiIeNIeo5JX\r\n3SWat1/1UQh5OWxmGUDL18+KESTpkpB0EowfFzK7+xENU5ojyLgmuInDykGm\r\ngnygh03MIsk3uZcnR7B3OtJtKhItgBnH53RUOztABubKkZW8Xz1qIuL8VP0p\r\n1SL9FnsVAVvuEhvjjcUNatQOoQb6WI/7JlrLlSVGu4rlZtz6BSTynABburKh\r\nstt6wwRpGSEP4imahdIuNwNZve2lEuEoH/3N7KhVl0fCXCd/mPqm626Gkamv\r\nE8Y/L5wUyLwmGn4fmI89QBfrfOMwJW52WR+qJchjTTzv/u8fUssBpfV/26zk\r\nkxZxBn5yRGz0BbENhoLbMYciIHN3mi32pDQ=\r\n=SecE\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDWl+c+ctkn4wueXTD8pz21CD9LmyPBTtlByCRau/NNOQIhAN4F7gypEPq7gumArp9+WWl65u9HDdLtJreD3fiU8pDd" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.584_1647372750954_0.776003336136331" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.585": { + "name": "types-registry", + "version": "0.1.585", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a16b6ceb510357584518203a2a324011b427a99c20996882d369986502756185", + "_id": "types-registry@0.1.585", + "dist": { + "integrity": "sha512-ea8RAQakbAvQh/LBOmpeFN4EycBYNASX4V/GUQ86/r9iACUOO+4pWeoOz3kxjEsotlFa+ki7dtmnPpdDNrdzjQ==", + "shasum": "ee1aa08e944f7d218333863d66372bb405edd596", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.585.tgz", + "fileCount": 3, + "unpackedSize": 1398354, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiOis5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo52RAAnPcvYySmQwqh2BbqSmjtSYNWohOvZc5HPXwtAg8Az9wY2ddd\r\nty9eWO6y6fwZfn0subXg36ImAbK4Ag3cTc7Dslo5V9S/9/EaWaOuMkJ7AbiP\r\nkUzfR9dI2LM3nGAtfSWFMoSm6pQegrlThb9XC1gUa/qMsB7mIbrplCphfNl3\r\n7cU345YLa1IBPenLYeCSZ/5+MQY3UYziur2xTNEPOp4A2D9JWUsgBlDYbfxh\r\nyDz/ESjxrmhlfpXDTtdRHxunsSq9+UMO4Zh2IrOONcy5BSJLz8BAslf7v7Go\r\neumCY1vUOHLShGgNdpEY3pEjeZlupa/qHijTqxdhV4odgBHjGUcAF0XJmBWa\r\nVE89oOSKv1bX9gmBrr+fH/lm6idredbPbaApUoZj8PVsprvqAWOGU6TxDBcq\r\nfDOIr0JnNg3b+0bMF8TwoHLMWPU6A9PiWVM4kzw3XP6h41EaW2k8H7GYMnu/\r\nNPtdOwxf70t1C+ZAQeJjSOLwilpDFc91R14REcaoMpdqru++OQSMAN9dZMHQ\r\nsRJo5ppBAYG+EI3cPuUNPgdcqhqI5vcSMjr3hlLGRtS8MRtjMRisP8dqnO2i\r\n6K6Sr0QNqC5esdJl5d6JaEhMEgLQiEgYcBLihyGpCrs8CzVbJNg9nnOiy9f/\r\nfowPZJw5AKZnXVCZpuZ8+jMCeK5DixVKRzo=\r\n=R+J/\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAQw7zLfHbXSpANi1Ho8ph9bSGHE3HNf0WoYsWj86wrVAiAkiBcl/HxLdMFJ5DW+1ij8MHjGgxsC+QAM5FzSAF87cA==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.585_1647979321398_0.0953006667256493" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.586": { + "name": "types-registry", + "version": "0.1.586", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "24eae6570030d0e74ed642ef4d811ffff2b667515ccb0506e8fdf9225b15eae7", + "_id": "types-registry@0.1.586", + "dist": { + "integrity": "sha512-iO9SS+9jntTgtXSvRk922Qaw5l4dTdEA0LGKTO5OqnUUbyI1xNhxVZzILXibdSA41NaSXkGZXZlAeDYW2a3jsQ==", + "shasum": "7f548bc9682b5854581b39f913a569c71988c864", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.586.tgz", + "fileCount": 3, + "unpackedSize": 1400246, + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ3PfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoGTQ//b3LCuee7xhkWF9MQCKwG0oyEWum88Yt4hRVn/PXuM1wYhZGk\r\n+4NGgEjV19+++e2QVpI3JUNoeB7+KItbsg1JzCpEQiNmGfL7UQo1yxP6xab7\r\nOPh85Tw0e1T2HwqLHfEiBt32JHOLewA9n4gnLUhXoHXJBEu21aIcaEaOHHvB\r\nWPsMZw/nUNSlDuk1Yh+cBVsI/29/euZmMK11x481AwtatTlNwJu4hsIL3DvD\r\nhTWSuW13uhSyfXZqzvo87fSdzmeGEePww0nGQy01cpSrRrGAQR4rSVCH+n+2\r\nzkPI5gTLVP/qDSO1J1En0lwBMYWA5pcdzs4YNINw/kfmuwo+H4CaTHqoeycJ\r\nPMkVnS1TunSVuPXFu6jGPp0cmbPygkXXkmM880G+xrjk3GE/nrtbdZA/drc9\r\nYZ9A5s1Qxl4Bb0/eCcqPMHPf2TXa3RSqh5VazLFYnTc7LjyxHT7+FdeacyhA\r\nSSsgliDr0XnJrQDM3mo6wI5J23xphcXBQyEJLM5z6v7fAR6NKjRV1KjzGDRP\r\nZxesqHelsDBK9KOmPOdDOgAZ5rZs+g4CC4u+a7rzCNR3pXJrdhqEgluBvLIW\r\nADpAJym5wl7qarCK+TDQh/rquYIzQVnPDDW+CK5Z7UXO1f8BZ9Gg/NG265jL\r\nbXhkY7it9WOrjxfVxryGzp+gErWUT43rP9c=\r\n=iVHI\r\n-----END PGP SIGNATURE-----\r\n", + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCqvF2d7NjqRCfJ3oUSWMLledA8DIIknngQ9fVY0m1b8AIgK+UlpkVFHZpCmxMYWsKfsKI/jkHsEa9RSfIL47ypWLg=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.586_1648587742800_0.9005693394204219" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.587": { + "name": "types-registry", + "version": "0.1.587", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e16f2e59099aa99d0e5c6580f864f3f5c14c15677cd34d1b5d4ebd0a3c85b635", + "_id": "types-registry@0.1.587", + "dist": { + "integrity": "sha512-7hFa2o7yY3MGHFG04mXdSQ/wtyb49OcTOoZn1c6SfNYuRaAx9JHsivAbOsR4IzpEIOWmE1kWPEurP316wPF3cA==", + "shasum": "0a630bac6e42d39c7fd9bf16161d8664b373ddd3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.587.tgz", + "fileCount": 3, + "unpackedSize": 1401469, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHUlyCTpr328/zofD5AWuze7pvujTEepVVaxUEA7Pev3AiEArWS/dpw4hoL/mrj0lzWqxD1CfdFsicjJYjLxzGJ3En4=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTLxfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmolCxAAlTV1Rj8gBsANEmvOWcy1lsTj6NLz0v7vpa4PHBHfvrNUNAhk\r\njmd6GKaL876s+GlAiZgnmD4BjXaOcsRsp/hmFG23k+X4dIxOXIK6Dl+wLKLN\r\ns2sNnpt5NxJIWKXS9TGiSrEPxfCqYDilIvNopGld2O6S9H+ofXGZdUeDP6ec\r\naPJhfIvIGszWHiBYvuNp30fjxm2619CsT9Og+W8qdd48JjAMfgCOed4zr6/1\r\nEOSk0WTe1MB9S726UZHF45aYPp+qbnZoiNmXrl99RFX6escgehXkr7gw1s53\r\n511DW3vycx830l6jG7tAKJyAZGjhI42V8svj7dWcX87sR8yjAlPjwcMTBOjU\r\nXBRuisROyKyZJTlg5NHdXL8upz8tN1C9TVoNmWDuURlZY/lYe11Uk/J0zqwo\r\n5p1F7NrBz30CaelZpnbsZqU63uly1HsamSkdF4OV/trqFYZZyKHVdAwN7OLf\r\nVPIlTOWgB2RqLX5AFHBv7nyoHx4iT5aDTILkalmUfBsjL1wFyShIlh7+9+6D\r\nw8yqNlq6nyEMBTf6oeq0LGNSf3nd6Ls+bbcRvkcWUJorYVqksNuhk19XKd6h\r\nwsDaiN9JCQJIgH6kRImN4Hs+ccaNxV9hfsdWf6hm2+caNCSiHmUaJcDJg5Uc\r\nNQCpjXhaJ0LMLRq9Pc68w6YBJ456vJUNKws=\r\n=HAfs\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.587_1649196127751_0.005071011457581598" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.588": { + "name": "types-registry", + "version": "0.1.588", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e11193c09d31ab1b534d0dc4e287f63759b6fe8d131d234b432557d9688f0f4e", + "_id": "types-registry@0.1.588", + "dist": { + "integrity": "sha512-9QDkgS2gZZJ+o1jhJGQHshUgl6RUiK3hmrFTdhx8aXmx1d4gf71XY825J3Kl3A59W3uC4TufziRiDoEyfXHwKQ==", + "shasum": "05ea39a087ea1a1d0bb9ba7a6b4e5a762dbb3414", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.588.tgz", + "fileCount": 3, + "unpackedSize": 1403146, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICY+QBGWP7QXY1jYZqKUhakYCn2GZehepqJngRz8FGKoAiEA714qPgBLxlrxCNnnkaIkB3UC6pMggTN8Ik4lJl79zxY=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVf3UACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmokig//X6hrNB7UbweDBJaSTAcmvzXZ0ypZ+4fHUbf5N9qTcWoSfLXo\r\nGs8HJEPQuQTh3A4FmRKQ5KYinFPJS3N5IHCTKqD0QGfWw8u0kvHut5OT7Vgo\r\nh7Do7MfdqmcNONpTHeYQn1WwpOSpVFcUOM1blfxh+k2TQ1mqK2zSM7qYykij\r\nhyuvB8GFVIzFF478ZMJlD8/3pnG3wlb5A1V6QWrIPrUop9QaAvfVB/GgL95j\r\n2RgJ8iwhOg1ZXTF1+uX3Oxzdx7m5SSOxj8toYlCNGBVcgcMGFm35EKsgZ4td\r\nBQCRKDYJGSHrdQNGCfl+ZRSnMddyhKT5nSiUdZgqnORCk9QKYvTnfrORn5rS\r\n9BgJTFk8JEt2t6eAOnYOniCoxENX5J7Cs5hKJdY9yQaHKwvFNAm/7YeliRVU\r\nyOimR2oDE0qBNXTNw6XqS/egKSuHB66mF8hGQS54P0DjdeCj/WPO/JawZLBv\r\nL75Z8/Zthux8N4eyWYBByref5z+uW02/wJ2a3VYhMEq9oD/hAnizDBoimct1\r\nyffI6uNe8OCS5jXPAtq1ZSGXVcti5wjRm4Rz/O5RDHWUZpCHAlHfg93DVkCE\r\n5Ejq8L2yGrFjUqwcH51g+ERYeW/hGDSPxPZyLHvAjMMvMvgbOdRjt5oV/i+V\r\n+4diMwovMVUxJ08A1lPPhvjAtLihZ3gRTBU=\r\n=ALLO\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.588_1649802708616_0.6994575018467215" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.589": { + "name": "types-registry", + "version": "0.1.589", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e447a43e78fafd5304be1b8c1af3bbbba2334990f1f5d4b871a2037849159da5", + "_id": "types-registry@0.1.589", + "dist": { + "integrity": "sha512-M4Rl6vVNgqlifmDPJqIeiEyRPRRk5IrfBZxNDgleMC4WaUXavtSPCZAM3zPLfNklSh6zlUCvL9oip+fT+pOyxw==", + "shasum": "4c14e5a0d98bcd460fbf8e7c9b0c321369277c4c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.589.tgz", + "fileCount": 3, + "unpackedSize": 1457512, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDR3jfZp7aXQ2g/Dor0boIcGkX4IXG6Nm0FvDnVUvHkYwIhAIlvGb/CcPve57dPU6nmFc7rgrIsBg/1WGka+RvI16Zc" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXz9hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLzBAAoPrsr7k/rIFQihwyZJL3xALFspyRBKTGglgRO5uia5Y6oHHZ\r\nSCRVgKmP1ap0jsyR0YG/8f7dgwpzkzg1AnJzEIh+rXOzOKTMS6eJR/s0MWm+\r\nt/UHferUaEJ1wb/YWrpPpJbtywSqgLdd/jzQbrdbpPX4fMVrKnPC5c+m+pu1\r\nw4H/gITe+z9gdAPmkKM3CVL6uc2B+exe7KbXckClPauDczRbOqX82kyqKDDm\r\nmkl8ctH6lCb0SMNZemLBcVg1tP6YIMP8BgQW76QpQOsX5FzDOQaI3TOI4ZLC\r\n2OqwfT1hm+DD1ZJ7SBKN9cZQddgJYrreEoY3NxKBdy75MY+c631gtVG0k8/g\r\nVUijZzBagjUaLRguj1iU0ypuRe0qiYpMNb9DOLMSRVftcrkMhuO1GKAM/9ID\r\nTtkb+IUip4m9sgYikenPYE2b93TNUs8d4LEVzOpTzm+gF260zeVkOiELrmiZ\r\nMOSZB1vZtj+6xM4dWLy4vdluRDS0IvJ3g7kIvz8be/Rrvd9YMouyHApmsQp/\r\nXIknSht0vRqBBVjE5T2sxwpnB06rc5XS/IK/wqR4b4Q8r9SOYrZq2fo8u28X\r\nPum7Mf/sU84ZxBcq27BkaEPEzQiQYpG0UVAPNTIulSj3UiDW4eF0SYyJn03q\r\nRHKmPqkJRPqgCYfaQ6ehfjM481s4l8tiD6Q=\r\n=Uw1S\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.589_1650409312989_0.2272723717472802" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.590": { + "name": "types-registry", + "version": "0.1.590", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a2b07feb664b3f64a818eeb507abffe569672fe082b2693964e14998831ed38a", + "_id": "types-registry@0.1.590", + "dist": { + "integrity": "sha512-15CVQCk6lMfolrGLepxOBwkxl/LwtnTusbpMFUUspejz3dkUHsQi5eUIiWitp2P9pcGNrpOqX4hy5KgaGpu1bA==", + "shasum": "ff719e3d18ae6d5799d18838499ee7bcb2aebf1c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.590.tgz", + "fileCount": 3, + "unpackedSize": 1461712, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDLpxOjUVtTfwKv9lr5Khwdj//hPHGfXhqmFchdT+iaNAIhAMFnXj+8luBo3+fJmogzNGBQMvQukjoUQ7OiNaqZl+5z" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaIDuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkMQ/+JkjTE9rs6HNevCkn0lcb+U3XQeJLgsqK/fmfd1vi+9q9k/Qi\r\nbrj3sPhs0uu9ddrEXHNSg3ommdaYBzm5suEqrGS62yk3dg2LqGi9zDekc4L4\r\nuqyvJS7u3Tjj4LaqVFSymGPtLGsOSRwWlfUmE3N0+JHXqWTRtn0r+yrjmKL8\r\n0rRxT5NDrpPxp2LcnPdeMdjbOlvDZgfvqfN9TNyv3Bg05qb44kJ7ckv4Q4cf\r\nbZxFAQY7L3If/M8XMth6QTg9muXZULeLkrLEn3UyZYQU7icBzfKJNIX7MM4W\r\n9hIlsqn4LvYwvSMOkt8kWTlBtdpyBFxcC5ixNRB1Dd6S4wm+fuSiwMl+2aHx\r\nb1Peow5ndxchMGj1KzLMbK1rbuia9RhoxszrPPoNlbAL3XqdZlVId0PuW8sE\r\nq4xeD5qcokRwpWozOxApmXkET5hvWz8UCGib8pkZbiUTvFpuc053uxcvcrgB\r\n6zeLF6j8fW6oK+Vs9nuyGZnl3bNPYb0/sg7xUyTnTr0C1S/HgpZeG2Z+/vLI\r\nj4AbsdFLylcJavAXcbTuuUy0TGX+N/pt51VG6JgNBrJZiqWziG+iIMjozNF3\r\n1o7ObXeO3q7++Pq6hi5LFntDbd35Zl9qV2xkeerjkV674fFYVwXA/WRkD73a\r\n7DsiQ8BsUxLjSRNgw0fdcId6PLaez8g/G3M=\r\n=DU6f\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.590_1651015918283_0.7039589193752689" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.591": { + "name": "types-registry", + "version": "0.1.591", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "bcf666aaf6166290492269e8e444693cc5531fa440f0357a171640f7f7a97696", + "_id": "types-registry@0.1.591", + "dist": { + "integrity": "sha512-7PHremameV3sy9F4Qti+6q15e8Q6qA/wDc4MMCsbwZGzYPoQPp5PSsY/eSq9mnwcYXa1qk84u9bU7eCVJtngKQ==", + "shasum": "0327bb20cda8eaaa040b2f8a3064671a63c5d4e4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.591.tgz", + "fileCount": 3, + "unpackedSize": 1462349, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC2cZu39k9ZP8pwXrjaRE3qiB4lsIgalT6XWdis/LjphgIgdXf2/vpktpo37WvSdICYOlToEEVOgA6kzJ81ipY2zqw=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiccKXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLDA//YtMTEKPjXWJp6LoJfY3xjK+uRDSb5c7wRcGDsO3mEXVbgIaz\r\ntzNjXsR4cE3dqDmYg4kfYjIrzRR468G5I+T8abEHdddz+cdQmxOl+DJ3ogKn\r\nuo4Fv7CxFfTvQrosH367vUBlqqLuhgMJ37tpgTlAHyri+rJhrXiACsnIZP4g\r\n49A5ApJG7d18X0+M7Jv0bDZiPhRxk8UkmzRkOqDHtQF4MJ1jPxG27ZDG5z+T\r\n2om7R45USRe0blHyTG2OvBiccjxXEAgB+xijpeskEWlpZK1u39pyS81PJxqa\r\nEVdHMXSlf5XvDuOu1V89SAefktuUyTvj3M3yl6ss7JUtKiJ6NWovKpouEHLS\r\ngunvmit8oM+nLMpnfaG74XUDID0Gi1mdIGV3sFCHEA/tE0gHyQBkmV0ufcgW\r\n0dHrej36dLhBR5tBGy2BpLP1xIwW9jq3OdxePxuSfQZUzoXHDOfp6SDOGb04\r\neT3LrgOHHwZUISYZj8fLJb3G8jupNSNVN/HQULNBlwdgxCQM2z+JRiMWPzlM\r\nUqYA5XUzN4bgu1K2Zr2p25eIK44Yq2uiLqAQvMKHUrIryjwAIyrIundMUE/3\r\nLcsAEmZO9WlY92M5RTxDfAJLCSmBXjZRwx/9mfNNzyYRiFcjxFbJN0m+WzZU\r\nS+wvQp6KhDcOpvtohayGCEsOgwNAKUSeQ+o=\r\n=6NnE\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.591_1651622551370_0.3126014203278584" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.592": { + "name": "types-registry", + "version": "0.1.592", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8c5a1184ea4f7d0460c3753f5c0b3c130f6e6273e211ad7171cf8c667214f7f5", + "_id": "types-registry@0.1.592", + "dist": { + "integrity": "sha512-AnwNUs17ojv0W93pOnxrGOUD9GYUS+mHbNejG02cA/dmODosYy3gEreWv/cAfN+Dh6fn4chWguoG+hvu9GscGA==", + "shasum": "45a11e54aa0df311c72cb8d946e325028aaa8389", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.592.tgz", + "fileCount": 3, + "unpackedSize": 1463293, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD3xlGwWBBUHF6ihJsFcI9iqmbByd1DNiExkayzSl0regIgW8mfc4r64u85OXzBWUrGdrjdU4fO1tj6bm7F5deHWL8=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiewP5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFUg/+JCLPsiIVwKypiQl+wfClDJCizr9FvdOAw0wFbCm+tNz09NXD\r\nHlZCdul/tw+dFPgBi9pAkY830Q5ctFKrBHZEPd6Kf5KgraYv+d+WtXZwTIfa\r\nR8IO6pQf252SPJauyCMKMYSPgBnP50etoAbit0vUGVXIPVCnBZuhZ2mIAiJz\r\n2krNQMvNtNymIU723fXjqrBU9oaGEP9bK6IdVsFl1QZc64XLYCu8ecTs01sp\r\nYlGHlCnakFnQmcNA/553OHnV+fnGj1xdkpfTZbQLrfn41iTjdh0Ts8v2/7yv\r\nsWhDSau6dHlDPyKXEjrlmwliGZYTss4713o1sn7iZULO0YFjels4ublvnTlj\r\nYATUzsURhytA8ztrWtUVH6polYO2JuLsEdfJXwa8PBOfo04T5QRz/pvkx/pC\r\naZR5kL8Q19mcPIrPnX/dsuigbtrD6fiLL00+2nfwyB23a5sWN6NMcxKYt/mX\r\niEv9pHIGKyUJ8aPJN4hlWZJpUABjJPH4QoM6/w+hIsYY3FjiFGRKgxCj4ngU\r\nGMAQ+CWIf+kxgknTfzoXlZo4UV/ugevlinZdypBbvJZP9h16Vpcenfyv7pw3\r\n1MUKxpgsxcBhNo1U/bbnbwrcyQ9dsB4ca/Qp+cA6zOWlI9OtdQ/H3NNrOII3\r\nbuOtVcIu4b4Ev8o3EHP3BHcezrQ8cEwgBcA=\r\n=BEOr\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.592_1652229112825_0.08229483256886438" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.593": { + "name": "types-registry", + "version": "0.1.593", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "02a9569d481fc54a6ed1ea255d80a5e8a21513e65799bd94d633f437ad4dc74b", + "_id": "types-registry@0.1.593", + "dist": { + "integrity": "sha512-oGYgDZsL/NhwZ7DTd+qMR8jpCL8kbO1q/9PDMBW7DXI7QI5N0/socenBj8+tTMJ2c38ZVzyUZaYif3AYR2oC9Q==", + "shasum": "64c7c6d600bdea6ae44870554e29c3b6dd47d262", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.593.tgz", + "fileCount": 3, + "unpackedSize": 1465199, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDqSlfZ17vDVRVtohs7wDiHxGRIeasXMcv9YzzpKAxoXwIgbA2JrwodIswqvKY+9j4l5P82otrakvfITbAEq8gSHWQ=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihEWaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq6oxAAgjPOMCsOCCFcWAlOUvV9QTYgbc8UDiiDlrfYEVGtdy0O7gTA\r\nKYyMFcmSFXg2yvVRRe2jZKM7UfrgVXFKS17jgDEmTGYmnS0LRjyrYgAgjaks\r\nI5KJ6wZmppOSv7MJOwDuqO4ycgPa077YugBWpHzbulXjiNl3CWlOk8SlKV7z\r\nE/1nAL7wpmYcOG10dVaURaIqQxk82P58gfGe42S6QQbu+MGxIou1X0HyCGEY\r\nZzdxKoXUrmDAnVLCdZ3lyogC1e8fOd255NBPxJhEZk9PawcrjrCxMZ59GeHg\r\nRAio32GU+ep7kitJrYUGKO9A5mUUT5FgkCJYxpVOgEHdd8/WBSZHHEkUlbDY\r\ntebCUnOb/nJvKBdDQT7aS+TtMObQkkb6ZNclEUISuLXCsEyC3eDn5KBi4ftb\r\ni6sfhz4Jx1ocoNO++pci1ANayvHxUM9kwGxHz0U4DVKLEgeNfdX5Nv5SV4Aw\r\nC8timpaeib7uT65Rxn4PYCR0Th9KuLijvXYFaEhG5D0xOQ3nQpaHlyjO7MGL\r\nZ/pv/7UKvogFVXnPY/JQ9yc9J8YnUuOk154UDHpPFX19B8VjZ2f6h4tEZSbY\r\nyvl2/CBhud6CYrNweSLnuXpsipQF/mAcosHRnuBgjNN5tIjjsccZmK1Vk/o5\r\nEacEbz1RMGOwidboKnRzvpF/E4cgbk++1oA=\r\n=ENNZ\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.593_1652835738335_0.9647483903734009" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.594": { + "name": "types-registry", + "version": "0.1.594", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2d15aa770b3225fdf621725d64551dc85b329802ed193a049da90678b3ccc0b6", + "_id": "types-registry@0.1.594", + "dist": { + "integrity": "sha512-TmnFX3WdDWrC1UXj0Mq8J4dBkoyAnFqswWQSXYNT6tXVVJD8rB44A6GIeFWeAa0K3JHepwb0gOEYXkXlSM1XVw==", + "shasum": "ee5d6a148af8f83d9380ea2f8b6ed198649fbdf1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.594.tgz", + "fileCount": 3, + "unpackedSize": 1469669, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDP8w7J+IqecVUN6yg/lHDFzA8kzo6fJOyiD3wM2OFdXQIhAOy+7kZFCOxC1F45xpFWWRcuDPPa7vWKlTQfyikUamFY" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJik3XCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0/g/9F78xqAanU0tJkHhkZ4UsdvAGAsK2oPVGi3xjMI91PKpb6L18\r\noQgh+bl7CIFKNnmqk/b3naqohx1WivsmmsH9qCV/eIjQzoqpT/ghxo3JBvxV\r\nJIlueLVk3gduH7juVSYq7VhQnnPjIBVr9Phx8PFOqHWTEA/YztR17pMC68Vu\r\n/TmC0M4o4/lVP+Erl+HM+iJ1jvh8c1BoRjgk3XHk+kYq62E8dNJZaZdl23ol\r\n8T4GSp8Z5g17/IfsSLefUFoYU2lIDMrq0n5FgajYt+1RynltsaaGrh4cqo5X\r\nxeEbqTpXriJ2jfV6NDryv43XRAUlsDJwRCDVrqIAZ3hZXDNtpE3jPrWlk6GN\r\ngKjH61OnWWm+1ZOzBgypDmPyKFAfmMP5yepTNOpo6eAkSwjrPJW9U6YvM9JV\r\nn7NGFwRANAnZ2By76FnSRJvLL0fzUCDt76so+O1xl6gRCPAaMIBfUpprgsJT\r\njqZg0fxl/K4mqhR//8kj4zsMIrgj+Da4E8SntPzQw3Zafw3SKtafjSE9MvA4\r\nYcFbEeaDztQsrVzItEWATpimt1/LLwPsStTVCqqiNC5ZKnW8Y8I0s/pz7Cf9\r\nyJFr3N5iUWywcNhPhb52AkbWwQC0Z3nvI3hSjv9xiXz47h/pZLKZrObeBf35\r\nW/CYnKNWJL+7b1fAGm4KqfXENJ+h89FQTI0=\r\n=L4tY\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.594_1653831105920_0.16487756569532253" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.595": { + "name": "types-registry", + "version": "0.1.595", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/types-publisher.git" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3609f324c3d4b0296a89efc3e82058d0bcabdd0fcb2416c880d9abec24684fef", + "_id": "types-registry@0.1.595", + "dist": { + "integrity": "sha512-mJCqEdJ1qwU2Ao9lj9sd/6Ip/6BxqsNyHcbNdXepAvPp9cgTYiNAfv8LiD4oOZla7Gq5kkaVsd0dRogx/0GcqA==", + "shasum": "37daeb58bdf54c6db55e85cf329fba0d38cd0625", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.595.tgz", + "fileCount": 3, + "unpackedSize": 1471663, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIB5IwxZzsH2iw3INxwLeA4YQSVINMJafV1vgoBiZ2nciAiBnBRsVI4Vhz/Hitm0xOqoUA2RvsO55ISJ6GxIChRr8Eg==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinLdKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoubBAAlDxG69Q7g/h0xBpOpFQrRcq+ZSGWLrb5SEmhDT+xkJnI0F3K\r\nyKYj5uEEDLFRm4e7aF/Xk5hp5lkDIT+9yn83eoYMcATbjb+fTQQvTCkbKO8V\r\nuFrx59Bz56d6ppUeAGos8zRrzadMl4+N22aukjd1sZHQL+F+GPMH8PAhEGyS\r\nrbKNU8mUoVLWx3sKRO0IwDfwE9cS/D7Rq4imKW5g04cAfI3sUUcEaEmfQxTm\r\nE/TeAaADAKwR9Ri9SUdGmTes6Xz/U1k79WEkVMQMTTDS6UO/OKGgIJsjDtY6\r\nzb/vQSNGKW+lCPzPYdmgidJVv2BJ1M2KIDye/ELpwEuDlf4ghhW6iZ4mUsld\r\nzkjn6DAlo29jq7B/Lrb9GaMPcrHB7QdEfEvIlHjFaPbGY8LizI518GkBjfNZ\r\nYsFwvfwmzT1yK/ratuQGAzjYEm6XqSi+jTpHrLQNvXBjejY7if/iPfl8hvG0\r\nmcsV9IgHfaGvHlFpKJcJHoMRhVF/uHBKP1X54yIxu36gKhHV1Uo0PgKtWU/P\r\nr2stv61l+WcAR2j/59v7AVtoQVRoVzmKoV5sN4vHAmxUcEifPD3dIkwzZiQl\r\nNXTgVES9eTl+AOq55QR0+loYu6VIl3XjI/F4acfObtq7N8C3d7R89yNzRHyy\r\nU5VCbVkwu3qceDlLx8K8ErUzPgJv6+EpFHw=\r\n=kZsG\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.595_1654437706678_0.5452552875040941" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.596": { + "name": "types-registry", + "version": "0.1.596", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e2a0e6d714d166ac82edb74656f7dfb5c3e42e94c12d59f862cf9b578755812d", + "_id": "types-registry@0.1.596", + "dist": { + "integrity": "sha512-sq0ncUdWNQMyEjGTOgzyimiDwIHprmSMSJkUNBqGPWS4PQlFZoJMuxjYi2M9Fngx3nq+znvv/PLF5MJyaOG6iQ==", + "shasum": "b60cab1a8a169a1d5eba59ce9e5ac09b91eb20aa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.596.tgz", + "fileCount": 4, + "unpackedSize": 1475482, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCIUaq6eewp7X/xkm5pDAz7JtJujrdSSeW+KmiLht1dxgIhAOj7TF9JVxQr2zDZE/wsVHLP2oSefeivtEr9qylpvTK6" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJirVw7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqaYw//eBqh4GUxOHTZouzXcOuTJD/rOtKL6sBtmT0PnSbToHT42xYD\r\nfo8zwZ4fFOIWC4YGtIVFvmgp6rskRa6RQat1HJBJBbrIPhiaMyTgXbp+V9ZU\r\nbmn2KoimP8WAt7Dh0yuvLMd/BRV+U+vRvj8Cm3+dJRILI/y6hLF+Xb39nlRV\r\n0Zo4msZDO3E4og9+2fZ5Ue4ti4fKo5JFyrpGUC4DOMTvBX2ybQxMo3MYS9iy\r\nbl+HWDnKR8Ek6NexlxE/1R+hSv2OuT7zUDYnUbAVVlqBdL44xQQnJpHvyw5g\r\nkMJKS5mtkwgTnsMFfxxUdbhCbY1TGt1FhMtK+wbgg6nwq+TDSPRpPNBzv0f7\r\n2zFHUq4oJiJcy3vaYHjjedHCXSpCx5qLOx8Cz2EMfSPx1pokS/9VinHTyY8o\r\ntQt8FQXEIXMJeEBYzlYyZ9INuGzkubgfaZuk8VYSoWmZ/eod3lhRHzxLmaPa\r\nwyTAy19AcAKRVkiIOJcCN3f/T/GfddQtebi/PaSifFBE/Hdk9owX9SqphtCD\r\n4xS94/Xw34Lz0ZP1e/gK0WC/SFTqW1/hdpvqBJV1igyLdBZj3FqnEvmUsalE\r\nxXbDQ02n+y+jOmnRexTHNsP8YtNc0fW1mC2l3ItjkJ7peLo2tn+6RNI55goY\r\nr8dBj3CmllqGiKd7jJFjdvjYP4cFx9M55cc=\r\n=3dPL\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.596_1655528507197_0.7426563385607694" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.597": { + "name": "types-registry", + "version": "0.1.597", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "39ae654918b8366ce832c08bba7ea3f7705118f334d4f395d2550c24ec2f4af9", + "_id": "types-registry@0.1.597", + "dist": { + "integrity": "sha512-OZSkQmnCroma5/jIE936TgOJdwVxiH+an8yDz25prkOuoI0pdtg0ac0+v/WOsCWAK16dtnF5ShPYqJnEVDDHUw==", + "shasum": "8742d998572bfb11eab2abc4d2fce3733f3bc660", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.597.tgz", + "fileCount": 4, + "unpackedSize": 1474989, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQC08N4tIA8FFuqimHBdO6j67JJGth3p1fYEiipexAb2twIgOhaLvYEaBakllssx+lEDkZPVG5Ecj8noQRkWuYkxmBk=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitfDWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmriMBAAgdPhFFQNMkuY9sCYoLeMkQq7IHMDUMMWNJMU/NYJjk+txZYB\r\n7l9oVL9pErs2R2YviIhUBaOhyWR6O+f1z+wK//rO5c5kDlxsa1YD3OeMtBul\r\nn5Krg1+rY9HtPHnVRGF75R6QjLRCeCtfjySoOYa9mrhHTHPxqFYARk0c+BY4\r\nOjWpjnPirYLgOHLi3wsKQrWeNV/bFfVOoeWyqySFN/Hnz+SyIvxxm6o18tgv\r\n+s0C92dL/ovpLORu0APE0gxuIkM5d8AgKl+Lp1jNAx+ue3yJXQAYyTW7NpWb\r\nLlnYc2LTOpvzZV+T0MzTyFv0kxE84PODiAMKfq/ggo19RbntMwhVhOmDNny4\r\ngiept2N+ow4k6o7D4uO6yZkCiwCZomqGcPPMpubclOhbDN3FgJLFJ0Vsqq2W\r\npTFdK2Fly+B7Tvaifc/MlHzDChCtgk8pJjRaQ7Ra9cF9YI1zg4Vb9VaP6rtT\r\nr4Bj7L1pmg8nmWD0vaayqBmOqoaLnM2tTAmuNM7wXT54xXl5JLrAdfJ76f0I\r\n1p8/o6dTeMI2SX6jsNaHYzWGfDftyF6+5DGNT0V5R/7td7QjDDHhRNLzwflJ\r\nIUglwOKrJTcykn9KGxcFRKWPa1MI32S/ZdDhxuDooPEVvl3mZHcH4+nRSCEe\r\nkrnFZHwCKXtE107+kyeTiev6P288bf1LloA=\r\n=Bq8A\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.597_1656090837745_0.23711370502281426" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.598": { + "name": "types-registry", + "version": "0.1.598", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "15fa6606115d99fb9ceb2aa9790ce1daf5a19e8d7d11cb21240ebde8a2760e3f", + "_id": "types-registry@0.1.598", + "dist": { + "integrity": "sha512-yiVKJEOFLJBF87qqc8KvQEvBnGIoH/5usCYozuY85qHx+TVoDssJbVfoUV0Z+1ppiKYEOaQIWVJIW4IH6zDvmw==", + "shasum": "0a38bf7af9448a383b1e40954f63f55b6a616a8f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.598.tgz", + "fileCount": 4, + "unpackedSize": 1475363, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDtj+9LEsE7xU26O25/KqEK4r2u1Wk6qmmoOsrlKc9avAIhALQMKOpKPCD4d0JYXAeD06Zi+/nhv4jNOXgG6hbme1ZP" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJit6QUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp93RAAmGeOS9U0tgpgp1uQ7hnoh0edWC4Y8v383B1B7sO743AG+o39\r\naR2NGuiLf/xqHP2K322dPjLZtsIcIZk+sHDkcTeteRal6Z8lWE1Ze4gvpDmS\r\nUoYY631gmMFjjQ3JtecKuTJ8C/6MxFfK4rQBT0OEGRj6eLVV1FQVT7Tc8otw\r\nfieC8lyMi9V3L24+waKxRfRtjujZFkNeT6xZTevpDo5jog3EtTBrV/VPg5be\r\nt6TUDrRucOvcIcGifhoeUQMQiQY+YNvEPk75caPVw/SZHU93Xb9ykB8tjYGn\r\nSOYwlzQQgVOUjIn/KyVjAYga40NydSpdglxeYCtmTqv9wi+5T1IXWPYWFJDF\r\nU2PAoxBK6KqRFU1Y/XX3Trx+Yllbf68jRo5/wxradrVzKEOUcMrUqQsmeY4a\r\n5A1AGiJj4ruWVpxW9UgISgT4FOcXTvrnFuiQ89i+TurPMVb+/T6C6yJbzNxb\r\ndF7SHqe0sU6rFNFF06/3tKaB1eWdGepdjnRsD1q8FVSHG+kqMnzUQY8LgDOd\r\nRPv3d4F8K8h81Z1LZ1xsc9cN+ff5TEoUDa9aZaJoHhC96Ctx15rWtuoN3s/A\r\nWDgQk/RkEcqnD88vMqQ5gg1GBfRoDxtoGCz0ZmLpKklP3Ea2/aIl/7INwG2G\r\nqIiRZpXo5oFPXc+29cQSy6EktIK20PcBllE=\r\n=sM8u\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.598_1656202259833_0.9092082586763843" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.599": { + "name": "types-registry", + "version": "0.1.599", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4c3e8e9d6c2f76f99350dfe1836caa0746b6a86e2bc1757a8d82a5d2b40b8ae0", + "_id": "types-registry@0.1.599", + "dist": { + "integrity": "sha512-UVKIGYmLDNsLLxPd3xqPDeMfUV9sqSWInibMTpSPiRvaC6vZLfjNmkSw8YUPlSh1Cz61wEN3oJY2J7lq+xMTDQ==", + "shasum": "c50ae548b8806b1fcb0dd6e077569ab8fb132a3f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.599.tgz", + "fileCount": 4, + "unpackedSize": 1477854, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHzxM92UGvj1p/LaM69Eiy6qe/bynsiGf7p/h6zziM0iAiA2acKdF/ZmdDl8s2ZWdvRe6N8tcRvgH1ijq00OfAfEIA==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiwN8XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpdXRAAhGh5W8KDr00obf4CPWiVex5Ps92hR7GBvJswLjw9p+XYQIgw\r\n3kjxfFxzX2S4V0iF205dzQ+8NkOwtlLeMFUvdnOCYbIdmCHiZSFIIpJ5RgS7\r\n/fwtxgadMcNaZRSepD+bVN+M5wW4mrgRRC+rJfrzvDpxDh9JFax8fqdkqYBc\r\nR44xhFhNsY3Apw5+Bbf215tJ0IQnv9zTfuUpBRezKLkl6+ctQ//fMu6U6qxF\r\nvVTGfgos1xnP/44ZBjFBs7Oqb4DsxM9dqg1UlRFsPvM1zfzaybL1pFY/tLEI\r\n/U89rUzqslVzG4/7DoycRI0vvDG9F5/TXrZ6NH4c/Y5w3o6a0URwg9nuTvlI\r\nHfw5EMwaPg1oankTo3X4aSOmUxkLAn1x9dYgHIkYX42NTAmTGYRJdD2fd8In\r\nGlwh9yPgCgv0JiXLXmQosOx9f/gColNBM0ufO82xhVWvUOM4uAt2jcmSNypt\r\nXRgSK1k3h3Zse6xxm1TU1v1B2OTpKovZOXQ3J2+xBHrn8Sx5os4WjLjpP7hh\r\nFHSvs0ZhWTp+7g+JTSZlJRh51VdX6IB/YDg4J+IL4qfHa+yWog93CmMNpmDk\r\n9f/YSise6XlnIKc3+Cp5+ROjlk/6mmjLFnnZg5Emi8VOZx6J0ZsSeQBtURpp\r\nqvAr8OiwO6z0FPsWcsVse/j515vKZIMkOjA=\r\n=CwsQ\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.599_1656807191128_0.178823775447555" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.600": { + "name": "types-registry", + "version": "0.1.600", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6a8f611c1790cc34785d0b07dc434080c796fc34e9002e17145e84c3431e6d2a", + "_id": "types-registry@0.1.600", + "dist": { + "integrity": "sha512-OQla79KcPmXvHjntQW9L0VFzNESetu3ap20s9hfQzPuJEK2YbA8s6PA44Hb6qzZxFUbt6dJvuvmSO089fxD0aA==", + "shasum": "dd3b61b4bda3f42eb125ca74158b3747d97858e9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.600.tgz", + "fileCount": 4, + "unpackedSize": 1480619, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCMbXsY/E91RIrgCmVC0r2BdQ9vb79q2rSJMSZeFKCO0QIgSra9fZix3R6YZzbalG9gZc7KidwW7cpNt0Ukf97w9uY=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiyhpEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtdQ/9FvdYs0ibTa7vcpdSlxXkzNhEGAgvLELrQ6L+PFbEFeRx918z\r\n/FPyEkaSCg1jrp7DuP+fIRFdYxPkBFGVaIQCmI4Ir/3f0F9xUmOW2O2qfzE1\r\n5zUGU94WzBsi2Lx0ValDOmy0o6r/dy0h2JnuZnRfFGZUZC18vdr2fuER+bP5\r\nGidYVwKuT88oYE3FM2cfwQaxtA+C95Unx5qwxHT7aBM09/dWbJ+QnKH5XR+w\r\nSoAWnUc653V+96q9HBBFDUv0VFzTwtEwZ4M9LSdZVrqRGUXhhKpBohJzXiaE\r\nE5/MEPWbNnUOLtk7Z30gsCqdX50f7I8RYqjTpee0rQg2Nc1gLqqjSkcbeTY0\r\nCn0ZYaNZ+2tZpfnkG2MaxzGuYlZN9tm7FAtfcm83HMctdhH9tkivu2klbnGr\r\nRDMqScIHPNJpKfNQ5koSbJemtiJN8zVF36gE0gEYvoJAwaMP4AtuWSRxorXu\r\ncCvz43hz35uXyeQqwNQbji9sdEBoD2pORcKDeCx3eA1H/HWOet2vfCBKWPd7\r\nRNmlxabGdaD68jRpWOdaN3WexJz9QkTZpYcKJmZn9vk1nCCpiSZbD2CVXuWy\r\nljVCv0y1KSIRMCdK6oBj5yW0zyY7la2SuF6s6b4Dv0rSCHt+b/BUZYKfb7g7\r\nykvz8opaXqhmhI2FaqH9hVSAYYEhNJwJx3A=\r\n=Rn45\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.600_1657412164684_0.7824206043632991" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.601": { + "name": "types-registry", + "version": "0.1.601", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e31fbfa69ff8454df01770878334bf68b7dfeeeb2bd25c098ca842e1a33c029b", + "_id": "types-registry@0.1.601", + "dist": { + "integrity": "sha512-3s8bO82X8DyQANkFEiw1Ibpf8Zo1TAobu1lzepMB0tiWCX29dNV5C42eA6ZtBUsA628hhnYIs/ZoUWgrduj/Pw==", + "shasum": "45960dfc91c3a4438bccf5b67dac86cce5171f06", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.601.tgz", + "fileCount": 4, + "unpackedSize": 1483793, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDWTM3eVaaKs8Jb0D9Ua76y/AsjB0QiDPWXNrGkJ4J6pgIgBta3QrJog/LE1ReUfQKnXYidYo2GAkdFOO2qk8PZLBw=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi01QEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoKoQ/+OVLx7sgSG+3DUa7jAzNXWnj9phKzxDSmel1f7kX/CMAA8si/\r\nb4GeP90izTZ0mmNLd+p90dqN7OdmeZm0PiJqGVzFK8ynm+VEKkPJh90DDCI0\r\n/G763widXXHudteavbaHZXBPns1lcj8LDmzOJ7MGZ8zr2J6rKmGYEgNBoBgU\r\n7wV/9VieqzXO8wAHG/I/BT3TCVVWBaq8DMmhiTSe29sOZhHNTUAm7fSWrMl3\r\nexFiBsApmKepo1wG3etbx7cs4aLvYAvlYmEIw7I2wADX2zGOz6fKnW43wZZH\r\nZ7WsfVNjzpbPb0hAQd74J39WY0r0/6fZI4TJkPrekeiirxioxmMpdXtlxsHa\r\nkscZkWqWuq3Wc501kiw7GaMrtoZ1jEe96Y/eaLuOrM/HKeld6kfZTSn0Brlx\r\n9hgHCXnfl2FtbMt8y3zGHo2WYo8mnOyco7QEdkO8pr5qbde5u1aPjapc4zhj\r\nPT0lfmm5bmS+pJ8EBerEkc9OdJRDWwSGQAFnzfFAuem1+NV0++hWoxkQX4A/\r\nvdSN02WDjsNoqLDIU1PqFhoJLjo9JnJcUWQUwPsH8yxZHS29tdsGKEhikufu\r\n7TifgRlvyNXVJKQiJGe9yBKt8TCnifDEMgyCjZrj8Zbzoc1NyQmU/EwUswbd\r\nHthJPVc/EcuQBCdAsEct72qsM2bvd/zK+Kc=\r\n=Iel5\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.601_1658016772398_0.7166451363488178" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.602": { + "name": "types-registry", + "version": "0.1.602", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0d457c525c4a78b0810c02310ae7d8b8e8435c709c1fc7f1b17f13e34d220e5c", + "_id": "types-registry@0.1.602", + "dist": { + "integrity": "sha512-STlMRX1g5pWAjwjQhBVoDhyZFCnTsINpMWYacVSLDTl87AQr8+SHaIb6pSFLnCfuvlJ1l3KzFMHBhyN1D2mpTQ==", + "shasum": "785903c9b638d3266df9e1d6485a39beeb39a348", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.602.tgz", + "fileCount": 4, + "unpackedSize": 1485783, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFox86Q5gXP1SggzTa/Yd7jNU4Ti9dyKREncczFY55jKAiAZ26LPx65RJK72MIz9lx8nDZ8Drq+LxL5kGEbJTd9ceA==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3I7CACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2ZA/9HLWt62/+GMP7/MChPTlSIgYE6q+/gAIzmmMCdg8CMZM0YzeH\r\nErCW+0uivIbL8gJxgjKX6+7ZmeAty42NydEhaWnjwWmiikrsboAPRdGWtC1s\r\nt4ls2UpE3/f6UABJWz3QtYS8+mtzR5Tn2HKVtTfyh+b7bk1GaPwYF/u6YV5M\r\nIMNseb1LBh5WRt0RK5V98zFa5B4vf63Dn8Q71LnnSJkrDO1bASQ+vzm1pEgW\r\n5h+lcbyNu/LHkKUu+G3MSY6KzIf0v1O5NlRhG6xXsPR4HOO4yEiDrGwm0VP1\r\nxeYRo1SI5h+U1eTqpGRwAM9GAsvIBHEsxoaEMc3n3OqWutq89p7f6QtYz0TJ\r\nFZlGZpMTZRwpayuOqCFdj9asYJqEbN8LedOka2yRgpNFVE8XZI6pg5HLGn6U\r\ngtqc4lQB768PQdA+qHllzbPOUoJwtNge8DIVW6o9mXAhgUC9/5vWgGlKdUBV\r\nKTFM80RLpp5EJM1u8iYOSXhUvKQXjsggHB57LlssFFQcPqExsGBSX43BlwlT\r\nlZ2kk643GeURc+Fv9+m9pC1+kePFpwM9kPDFjb9yD18XL9JffowztzMuTi+6\r\n+Z5Phun1Pe+QIEhoRaKlGsI2kBA2WT4lWYFgLTnqwDprTINTSfbOAfrkUhCy\r\n/LawP57TlVFNI325DOpuVqyxgc4jnhahF+w=\r\n=vpIb\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.602_1658621634634_0.08293358457466482" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.603": { + "name": "types-registry", + "version": "0.1.603", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "73a44da592bded2e9a41df15f3ff4896eb338cc923ebd2b3865da5b89698d64d", + "_id": "types-registry@0.1.603", + "dist": { + "integrity": "sha512-ksQ3oT7OT2GB4V4N8LNlwGIXtNoqTH7DUVJcewAUPbdr/cBOKVkYx7CR6pBuheAOkxu1l9gxhaGKV7NIcrmLIg==", + "shasum": "d263f98975f7b698d13987f611602c7d5fc6f5fc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.603.tgz", + "fileCount": 4, + "unpackedSize": 1487513, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICNpVFh2zfBJul2OVVqbljkB3POgt/3fLeiPPTWwjYRjAiBi7qA/dVTOhJ3/LilDrhWUt2ILUmwVE+IqBHh0IIP7sA==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi5cmwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeTRAAmpVQ5MXaCoHGgQpvGDu1Maqcca1Jdu+TGPVE69j7rCtSigBD\r\nZtL6P79nO+dK3y2rDP/UkxSVSLhmLPbpc8g33ojOqr2IrmcVdxLpWvbRFbxH\r\nl2N9ojZ2zP1qmjr4OoZtGtA2q0q++RUee8J6MfBmDEXTplgWaR3LaWFolmg9\r\nuTEDd2kypdodnqV+LX5F8s7u6sJdupJ8Ryna4v0IvKAzAyFMJLe0tTPxYQi+\r\n+bPvYJRN2q7aDXKUPMpW+1rtBa+Z02HAORZq1nepTFWy9GknMhxspjWKLy68\r\nYy21lKmVw29JKVpxOdH7QTHEEDYxOGOWcHPul8GG+mOipMuxofsjxrou1Hff\r\n91sh6iMI5GsO1H4ZkbKV9fg++cPQVl9pvhepwcspXpXs5Ps1tQLYESNZh/P/\r\nGTH2OIJvXxfZLXRGN1m8TvfEn/qhsU4LiyOuOqUqjtPHPOxZu+dd0wYrxLxv\r\naQ4l1rvfcB0MVNHIpw06W0+RceLtc4OTAjykel3U38gdZNunF6vHFMrhiKRO\r\nAmHHP1RLUGUxl3xt0dnvO8TUe2RGcuNUZ1W5hfbMv9TG9IXH0Mm4izKC9bwA\r\nJIbvBL2IqDaSU3HYyJIIW65ERrkdeh2OL1UVQ949aD5nOc5E2iriykfLEKyL\r\nIfR/viN4AhKp7JWUN7gXwyzDWnVEJyJWF4o=\r\n=rQme\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.603_1659226544357_0.23110693650412184" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.604": { + "name": "types-registry", + "version": "0.1.604", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ecfbb19a163730c7dd0c586b8e4dbd200ce548ce1704124e65394589f8ae531b", + "_id": "types-registry@0.1.604", + "dist": { + "integrity": "sha512-1yaVDdrvc2VqEKqKNoMxVdCqYLhnX61UlEZsG/UFTftAO1/MAawPKF+kgGpiHacp7ZPlqgwvQ//2c0/JIKyf3g==", + "shasum": "e3bfa99c86eec5488a45c704ae3da8e6c050ac17", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.604.tgz", + "fileCount": 4, + "unpackedSize": 1488483, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC0S5TNGabFf+K02LiFimNUmZAOmPjqsuehWgg9wGqNCAIhAPYruhLPP6j93LID9dTUyT9g6VbUzT87H9FnuLAl4sRs" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi7wRTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrFng/+KQn4oSp7L8c+Tbmgjbajgp3tGXhXcZd6cz9oU8is1iVnfiq6\r\nWYXDXxm9UtjdoTTXQZFdNC2U5MxUCzPVpSZNCDUmZ9eM0bY/URAxmP/D3FvS\r\n1AdBB+gtP4WIiQfNWvkx5LiIGaoUlNHml3sFiCBMdkMWtBZG71vSb5JdoOJl\r\ncXX6OWfAtewP0i54PZjn61h/Py0CAM0Kq3GoG0YUB6tHZK26kQt0ZKNHqM16\r\n9FZTZ+MUVWWX213GP+BZcBSw5LW8Nh1k0kgGC+g+Qac9+pKJQBBpShi3W1My\r\nshlKz8U3RdEr3KPVxDzN6If4V/He5mFuh3tQ12sMI6eBcmvwUCWrrwMcubde\r\nNbv0aKp0aHUdcJ6v4l3i6BY3w7YrICF559B2r6BmoHFao/FuP/oQBfvJ53k2\r\nt98qmpKMbRI7G9seOXTOXCeQzxHEbsInyCSxZqHoCzeENYcIOs8htjFugD3B\r\n+yhUpH7J63uHbHBqOgOw/Xn549vbIq0HD+PlHfRhuDiJ5eUU3LakuETa1tXL\r\nI2yINP+s4SFLaVomopJ73rqkPdKRC/s4awHSqlxDpepFSW9t4wpBwq8ZsbJx\r\nUvlDMjgn6i1TJSy2zMtO1gI4k/+4Dq2aiaw15fXfuyAdtQR5KMLv3+zJ6Ia0\r\nTx7X9HQ6AMeFTD55lgsnUL8PRM2puW9OoCM=\r\n=VvsZ\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.604_1659831379568_0.8330896394815306" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.605": { + "name": "types-registry", + "version": "0.1.605", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a7524c2fc2a30336f9f2ee6872a281baced81a893fb3b41e5b45d87b0a4a50e0", + "_id": "types-registry@0.1.605", + "dist": { + "integrity": "sha512-ZsEowfA+766FE00Q2hn/GrIeS12+Usl+s6Bv5Rb9hqeFmbUzN1Hy7Roeno9yadW4jeBISYHIeNYYrEAE0izAcg==", + "shasum": "6bb2d20b516430db2213821de5749e82c3b8daa9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.605.tgz", + "fileCount": 4, + "unpackedSize": 1489581, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCL8S8MiyK/ZOiNsVATD7vCjLoqBScCf+9CNPG5wFukkwIgPZfG2priKdZSK2X6Da18eFRqQOzwwpRZHA7YOqgePY0=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi+D33ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpAQw//dl+B1hOKNEvdI/8DJeJjMZgJJUB4K8zUJVv5RLf6Kr9JyYQ8\r\nORzp9kmn53tjTSYPwuwIDsWp13K5slFi1JIJNL46q+aS2hT2nu3p+PwQllr8\r\n5Bq18cWoODSiQKbxs0MMVqOq63/ondTv6yIGJYjZLVCmvrOSe4f+G4Vs2NiH\r\ninWCouDPgm+rACw+j0Y5iya6TDnS2Vlb4e2srRqyFAvHnnzNuapnH80lMEKy\r\nOZP2UjAn1JiAtPiyXbvdDhY0RpyWbypd0skQODogK1J0aC8WKTuSD1NMKcvw\r\nhb0WIo6cxTRWuVKj2zT4qNDukcT+G7aePb29itmIFGs4LaONKPo/IwUku/NX\r\nAjDAbymiruQHqSkdKSIGQjtG1LxzTulaIbBtVsex7XLHx/01JC+yUyhYVvsQ\r\n6dgAA7gvGixrxbiiIJphQIQkBDBH9u246DvQHrOJ4hg2Tb9Q6tsa/FO7wUCS\r\nnZUPp7OBIFxvZz2q4/5VV+ypfKVjJhvw6Y0tjsZ63WI4dTYp+2LIWxnvHxbU\r\nYaul8sLB1SgPxJvZxKDlYnnCxO/Dsx76cxHJSzXDiC/Q74ZpLQAp/UwuflEO\r\nSANctnStzs5BGYdiS2TeU40NNntNbD9t0tDO+JqfnrmrAaPsJ7wXFUP8uUsN\r\nFtoPIbXd273cCNYWulgFHJDwIQoHD7+8FFA=\r\n=w3Aj\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.605_1660435959113_0.9020995827107401" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.606": { + "name": "types-registry", + "version": "0.1.606", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e2bf34ac306f776722b79d1f66835ffe463089bfb695397ef9eeaaaec83ca5e6", + "_id": "types-registry@0.1.606", + "dist": { + "integrity": "sha512-INI0PTChOJ1zeEEFjwn/8K6bppp/yXVAWEB5I8X1cP+l1IiMuD5poNhZdDx6rv3Mc/y3ps3I2PRMrKA6W/CBPA==", + "shasum": "d6f0c26699114f7fd6520d4e6640dbd2914c0736", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.606.tgz", + "fileCount": 4, + "unpackedSize": 1490619, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDqmO59MztlqIEdjXKUdzLPYybuPzd8eypC/5h08aNAoQIhAP3waHQ4dJ9sOWWLb+PmWeScesdTNkrpgSAdF61SuV0L" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjAXlbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAaA/8CVlTUSDriJ8G/wuT2rBD2KULkMFW7gpog/xhUFuW3N6OULKl\r\ninxfJrjAjad9pDKYv/qnQ9jyAbpX5r0daBlu0TgdrYFdZeRMantBzTUBekEd\r\nyHBcsy0tYcal6cFy/C4vI8mLfJV+IKemb1B5PgV7NkP+jvXjv9qWFcHq04TP\r\n2jEdoAdriw1pEe4/yV7jpmuNZUOccPeBnh4lpfOpB/zfSg74k5Vh4xxMrs/r\r\nEofzBRv42ZbkWgSLUZGC47+dtfobgp3xiKWFC8Xd2Gpf1hw27fNzPo1nm/C1\r\n1HesZKUNnnCP8k/8sLC4zqDnGF6T5GE2VZkQvRWCB1BS3vwcndIJxWWtvYiR\r\nNZq3WV5vSx5UPkZ/zu6UgUSbWpX++qArGHI0YISDEoBrMLsQetj9e136xeg7\r\n9wLXZ/LchdFpEcPsZASbi3/cJM3GCKmS9ShadkoLWAYhbtOIl5pn6g3bEVpP\r\n7FiA82Gu6yBVaAAHBItO/3RJqrdE5MdrS1ckhx1+FBpadsTJNBqItnTO898Y\r\nEYpaNl0hL47ePjOmBeruQHyTnleH37dU+AZc9O8PD4Y42ob+tj3wBQQt5bPy\r\nks4q+OPKW+oPp52vhhXbg8q7IuPX9amAiLlb6qkxWuhUjfkTeQQojQenbGL0\r\n6rDFQgT3/o1H4TifUH+bXjJj7Yu5aiX5nDA=\r\n=gfLR\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.606_1661040987201_0.8358301443095366" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.607": { + "name": "types-registry", + "version": "0.1.607", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "7a872dad77e944e9a17c4af73045087795776caba8f4562bb4fa7c67c0b2ec7a", + "_id": "types-registry@0.1.607", + "dist": { + "integrity": "sha512-zs1N1S+NQJv47mTJtjf2dHkMoOODgYWPmSPs6VfaQs7Xmuiw7SH0adUIg2BKcs6l2Gh3gaGvWXVMlkhLKELgwQ==", + "shasum": "65ed677fa5472e5ca694b22dc9791154c5472b8a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.607.tgz", + "fileCount": 4, + "unpackedSize": 1493474, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIElZv494V220qx1lkleFf/PpIKesWvSftBusYs7gQUe6AiEAv6WKM9bjTwNKT+q6ZxGgb7tM1K/hmtxkwJTo+gKIBhI=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCrQmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqnzQ//cfeZL4RxK6tOg1onmMaxObNiIsZXCRI8+mU/04u6ApPRRnU9\r\n/ZKcWAztpovDm1w0itHkXQQbJ3HWPNMCexTQ4eJq2hnaxcQI1kb13b+H/kRo\r\nMd9MTPrqzrzky1M0xx+nheuz88gyk8Ka2i9r6/VmfnXanVtTXrXlF0pEeFdn\r\nhUu2b0oFgE3leyw7AmIjW0Kfn3c+lkM3jm+lgXAwg9abjnefJzF5MA3voyxD\r\n2Fl/OauE5S1fudKIpFejQaeasO0RyOVTxoGKdzNpuHa47e7JoWfP00ZVPF+7\r\naF59oKY27CUoUd0oyFVIy8bQwxvozCwaY6eaiZAmZqFcRayaZ6Q3iR573RbQ\r\ndeMS9Kuu2VCql8jkLs6V39rydjelQE6jEg4JqmSLlJNaTOuj+1bIzB1qgLjK\r\n9Mrl/GulrcGg0Uzo8ZsqlYayu14dhAOPTXFwIB7KffkVqQhY+HSCaBTEOi4v\r\nnh0Bj/85sMDL7g6A4kXVjMAbPD38NgxfUn1+YThyQ8xK1d4HjN00iMfeVwIj\r\nrTkJ+CI86a+nXL8yuLsPWGdZEGOEzFUaJPOodaAlryU5+kUHWvB2h3jofHl0\r\nU0DuJOB2FhscsmRv1faKDkHlpvtpLfwHebutiKpfdb94lIfhFUAVCResh2/e\r\nzp46xKV8oEghhYq+QUmbwnfLBPeTiIbIY5c=\r\n=NDDV\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.607_1661645861811_0.3899152443090632" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.608": { + "name": "types-registry", + "version": "0.1.608", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "bfde026ea9f5ee451f6f3a16485e1bede2b504644692b5412dd435fdbddc081b", + "_id": "types-registry@0.1.608", + "dist": { + "integrity": "sha512-ihUsyRlbkIdmPh24cTuYTpI6sa+9BYx0f7WpdQFxmSJbh5VetH8HC4CNk/lHvKmS/Hkb+I+5x2MFcG9Tfrkc1A==", + "shasum": "589c6de7d3e321afada9a81c6142dda33ebbe709", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.608.tgz", + "fileCount": 4, + "unpackedSize": 1496258, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDARn4VI6mvZxYvIIlx36rV8g2Yg+uyvbzfH81YyWGS7AIhANFQj1K5l3w8lCTDvlW7yrvP/7ZlnWieIyECNaZkzSO4" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjE+2rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmolqhAAgyvUuR9389xFem9aMIjyHwVoevFOnps20nLZA71bUv5OvN8C\r\nMeNG7x+aRCFmlGWQv+EUyjL4iCcohIUvYPVv7f6L5advxS6ZSl3D+OOJpI/B\r\nTIZQDoFOw9EcG2sRTjS806vtkESNw9PZbZp1heymomWLZ6mZVUx7fD+S4pjU\r\ns5+dbpQeowqcDzmDESLS+tYeGkc84Grx009JM4YKzRRQ/qgsv/d/lUbn+r9S\r\n1p2XJGme3pUJK9cKLB+kkJIsr5R2yMfvEFnYkIUI/6vrk2ZoyAOLKh2UMNiu\r\nwxFoy7+hltNyOCROEgh/38B1++T+qY08DWV778/AESbJmeGRTPsQq5aaCJQa\r\n0w+Nd2coN8Ic6x225LmhqvuyIFtndJRzLAtGhoRl98tehdDcCLIckf179Kql\r\nlbqGJct6flsqbtdx+bhZZ3/EFbMU2GAt6L7xMvH1ssR0j5DkmXCmxZVwBNUd\r\ngq+lVhq4M7H7rK2C/sA6AgNE/kM0BX/8egZgxbVkz7gCtfFllas1xv0NmkXC\r\nsHJW0YsJI3Qhc4s4hQ8Wnxc26IiAOWa8K68j0/C8Br4TcLWj4mc8hrcGoP+5\r\n0WisP9BpQPQv3RFxfi6zY8yES4xUiclpGYk0Mswhd/raAbIxrHUC6W2TAi8z\r\nPYZnBp+Xb5qlefqo3kCa6psZotaTNzEZzIU=\r\n=5GbQ\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.608_1662250411526_0.3591392576844974" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.609": { + "name": "types-registry", + "version": "0.1.609", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "870a75e38fd87a5c97097391b03ccc6058f514165e32b26ec8fba3ef09e5ece8", + "_id": "types-registry@0.1.609", + "dist": { + "integrity": "sha512-K1Nn0FspjarARVer7ZgUytEZ9K682h9gcoSMWAFoRqZJcT5EsScayME5HTobm4yz5awdPAbG2Bs9penHvcxmAw==", + "shasum": "9e35f519786fe6ddbf50eb8b4f261d8f12a3c839", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.609.tgz", + "fileCount": 4, + "unpackedSize": 1496772, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFuUtr+2r5bJX3lbesA2KyH18Loh+cP5HQVXhVyHL5+MAiEA/MwKu9m+1PexyvKseilIYCbmJ1WyKTlqMz9YFtHj7nc=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjHShzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr5AQ//ZrbLCcVoSWC5PNY5EyNOJBBkLJkJFl3uQJ3ZdPlOC2HA5k4m\r\nUvxT+9ii153jYJTq++4J5BJNvHE6S7yfr//AL87Sr4bf4pnlL2ZYLvNuNnaX\r\nGeiJcbgKwy7zQLVWCY/wVTUuzBJmsmJ9znhpGOwFLWpHsGogiA4SlmAjOHPl\r\nfR0crUqc3i+cQiPJmnie5KLRc1CqbSAgvnlf2iGldv3pcmbcmvhwWyffDImk\r\nlrlZ0uAjovcsJOYMhhuCVwUriVzNARpM/c9hSwyhq0pASYY/k3PXej3FJZGU\r\nGQxFZw6xAKT/ssVcl9Y3SgFD6bhBTDV4XbPXFPhthrYo4gHWPxU8js8SurOZ\r\numvfFRkV0ypgWJonqjSmfhU8w/w4a+k3eA5SmDe2mgsmczXlcM7UfOFhI/S9\r\n/JSxHgYf6N3TKZqvI5ORYDCp6mEyqKflcXEHQ2k/ueNa8u1GN4AE5WxqF6o2\r\nvmrRqTpFvt96fP3e8oCeqSw3h8OEerw0DVeIi9YNCZikFL1yyjNMaFirw2Dx\r\nRIhtWi815emqEr0q0XbuDtlwBAiewhbdaioI5htVmYEGUaWcJZ7LoZU24zID\r\norPEka8N4m7jj4umNzmZlElTFc+n6xDFY7t368I6br8ZzGX4kt3CFMi0+HyW\r\nfMQaAq1Qe6A23+0ZkuuO8x75jthYvtudLOM=\r\n=Mxre\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.609_1662855282941_0.9629344200317584" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.610": { + "name": "types-registry", + "version": "0.1.610", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f5fafde16658c81d6268195f2486a37cf7cc8bd97c4f2f699c7080ad2a835617", + "_id": "types-registry@0.1.610", + "dist": { + "integrity": "sha512-ZSR+qBBKCsknwNqAnh4pBvmhu+TjtoXVUg/NEetdRvP68KKkn7ww57Frcbo2GM2lG5O12cw4IPu9Zogpgq5Yqw==", + "shasum": "5a0e36ab2a8bde0bc02aea9f39f9fb20422b1727", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.610.tgz", + "fileCount": 4, + "unpackedSize": 1547527, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDa7I8aTVfKhsJPfo/jb4sUazx8t508eYzOaOzg5BvB1QIhAPVoSzh2JDUJDgTgL9UaG8JCEn7a7uJfiKZBmOMz/Yc1" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjJmMXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoseQ/8DAJRa2InKDIO/N5nys9CDUZjm59FNHSGV6G++lwsAPeZtSGX\r\nbdRH6IvLrD3UV1EVETA6GTluTkwtZx6RiySNIU7S+WX3mU0bT8Ez7xlPRoN8\r\nzvQYQf5NJnV00KMAn2a1ZB6UucNwUE6WAlli9R9N6fus+C7O65jPjFSB50yS\r\nHaHmLoL5KhV7rQqvB7d9dZpXSnPXc2YJznv2X3bqb9w3qdJbcTqtD5LQk2wy\r\n1nMfI/Smerk1ZRUKFkA9kN5OnQK7vA4+Q3ARSiRZcjXKDzmZZQx0T7Wx1uMu\r\nUebpTBPYkCl/gSvVfG+mIWIvYC+1cLCOjO0cWcBQLBTV7cVq3jy9qgEU+5Hv\r\n/7IvHMtfIgpCO+8jcZvNi/G1wAOC0VyQXNyw4qV3EcmmFNS1aExknH0y3IZz\r\nShGgov1ojmOaLdWiFVyIB0WHyQU/fI1ZbrsPkTMLkiGv4gqMQJG1g/iuGYXS\r\nQ2oqNOJL4hENQGGP1z1+aAvdY23limajhxX0ABOG25Lws4bR3HnxEa94Fojb\r\n1rHGtPQLdkWNu9gz3Bfr3YroZwUv2TtOu6P4MqYYJH0zkgtxbl0oy8TKt41t\r\nQLUqTORkfbU+ACBiq1RtVOQyL7p9o8sp10GX4WxlQv6H3jtn0Teu94kfKOGe\r\nizarDRwGihykPIS3ax23JQ+UMvCNGA7UxZA=\r\n=BhOm\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.610_1663460119243_0.26682829729791036" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.611": { + "name": "types-registry", + "version": "0.1.611", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3396095d9756cc27131a7348cef881c6e06fb42e33de688eb6e757995a3c47f5", + "_id": "types-registry@0.1.611", + "dist": { + "integrity": "sha512-ogXSpfbJ5GY9PIRLjdtGBWgoCJAUx1Do4trokrnoaDsP4guT7VzDUHC4b1jGL6xLDR72kCRcbbK5JHiDsetmTA==", + "shasum": "dcaab6cd610407431106302e886e6833fcdaf436", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.611.tgz", + "fileCount": 4, + "unpackedSize": 1549507, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCID+JoMr4cw+Y022gnlVVGiUtzn6JKwFEF9+LOZwl/2g3AiEAxlzHdZU7ixC6/jjjz7H1J1kKireAJailWRiTqW4IwJ0=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjL54LACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqO2A/8DvBE4iuqMnt0f8VsR39d7RALbuLf62NCMBXDd9iFrVJSVzjG\r\nIBi0VXZCJiQP6kNO/aA5K0OwtUF4Bv212X5IvERAwN6bGT36QSPxzf1gTqyE\r\n910tC4C1Xq6LP+liuNDOhUcMskdPgvQzD66+Ev6Ssl8CVrQKn1BXInROyeWh\r\n9DkMnja5UOu6UEj75ezkUUUENKhLlIPf2KkANQB0u3vJd4Ofs6p6X3SeoWkN\r\n2Kh/HYqt7Tr/cleLgNZz335WR69rSn81SQ8bXaTgCt8vdKGimAx4qpHgboE4\r\nuGMGrr7yPewtfgG7US9jXdPhTQCqLUQZDD5eGQ3o45Vzr2nD3VsiDt530Cz0\r\nsa9N/oqmaacZJ5gS6/H//aClulRgE1jd5IYUMESg5MeBCSUrNWSr20mNG5WL\r\nYBv0MCl1GmqthNl0I765S8mbgdGePN9e4fhCDIhKpDJ7sdBGdVsjaebNcU9W\r\n0y5EJAzjMGxVbeVhnYceYW85crY42VpQ+N6scdueLIYHBR0sRm1zXHA2MNGa\r\nX/rHl78KXVvT14Y3VlnWmPsHY4iG+2+O4iXVCQXICTxlLJX/0hyob601ZEr3\r\nyRRmQVbJQaNrHEn8+VtMSm054fpC0Jb+vi/0Bt35XRFXe/dmddZXspStXlmj\r\nk/bSWuFBEUaf0Tt2C0IvgCiVg5c6K5DweHI=\r\n=QWAX\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.611_1664065035533_0.4620255943358589" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.612": { + "name": "types-registry", + "version": "0.1.612", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c38d11c12a94f71fb5fdc5651fa04c7204dd27a4563cdf70f9d01962deb330e6", + "_id": "types-registry@0.1.612", + "dist": { + "integrity": "sha512-6zR/5TwrVhWzTB5QvahknIugYS8FTMwb60JKkzFpEaZviRE7D71tllpPoSsGoLk6ERM8uTqxr2GCuctruvydZw==", + "shasum": "47a19108d8e75cddd55ae18971835aeb4395e11a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.612.tgz", + "fileCount": 4, + "unpackedSize": 1551185, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDgJEEmzGzsRSiEl+QUTN6F196sGzFg9g+0yyTe1yYm7AIhANdVaBBwNKuLGjMqMVwHRyhIQfBgLhPPJBwZj4FmYusr" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjONleACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpyFw/+PQGbqyLfQeZQLH+H1Pzu9rwXJx9iwMurVDZtnG+JS6ZfpwVB\r\n+AImjw6he9NEuhrMpPLSDJoI1WG4ksr67al0Dblq5ZaRudASrTAXB/RVgnS9\r\nv0W9pZOljsZ+k6Ob1bjj071SeTG/fJ2+2OddAV0OKW/u8cbpxkAFv50UYxvW\r\n2eIdO9Jg16DvblqSWtbrDKIdvn1xHdGEbQBY8c4bBK9xsJX56EBFFYx/LE/n\r\nCRhK28zn1Eol/yjnoYpHwfJo0vwqcecBsFhtTGtqVkIfjkogVG9QCnGUYcf2\r\naGgV9lfkYwBXY/0qYWJsk58N40+qxGjzB9bfgWeg9CEKYm+TSdmvjmU/u4oU\r\nfUAiAwd7FsozOlwMrKnTgXFcF+wQAZtTTwmP61ckl2CoKV9v8k48QgD63pvL\r\n/qjHc2ibixFC4qCcegjoFJjPQ9qGOE9ltiZLQX6T0SgzVcWbNzTvyVtVjUJx\r\nd4CZ49UD1sldww5wTmflW/UpkTt45ssnENXi7VWIGOxzx2ZpJVNdKWqxBF2z\r\nuImqC/zdvhfcCVA9a2UgsSnifN0H9QZImbS5RNtOirsHaRdvlbuMeztjBMdI\r\n3KMkYU/niryDDrC3zdo4AqNH1AgsrRJqIFfuWe8GjqcARAlIm78EVrq4HsOD\r\nNHp7+9Jf0eocEjSH2sxfYOJwsyZXjI+9xz4=\r\n=V8ht\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.612_1664670046264_0.8972142507601106" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.613": { + "name": "types-registry", + "version": "0.1.613", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ae26874a1295c9efdccbd9ed09fcecedb706049d5927500e657b31abf3a3a7b5", + "_id": "types-registry@0.1.613", + "dist": { + "integrity": "sha512-idZs0o/tkZ0nfQCKNd8gGogGB83r+Fs6YY2FuoY4UviAmDUi7T8mET1zCeVItbd/ywfMeFJY98S/+F3IBDDXSg==", + "shasum": "8f82ee79d7e5efbba88e0b4dc839b886c60a1aa0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.613.tgz", + "fileCount": 4, + "unpackedSize": 1553614, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC1y+dHTc2Ej4e6Ohn5elHIDLIpBCPY6ZiB//ZLju02ZQIhAPV0zwdzxaCob1Fkrlz5ISwIVW1eLBCsLx+PG5Ljdsw3" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjQhMoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrDjA/6Az+kVSryuEICXaoYYsFY8Ode9gdF2wcTPMmlnH/avrnKYrRT\r\nmkQIj1op+FNCyTVPLfgZfhuMh1V9+Pkwc7YBvSvHrCelxr84tGKypQ+jbkz2\r\n6hDNdWJgIvwtvMTV0WW0uwRd7BTgAh5sxNblp8a1KpOyxdnvyRsdFTEhJkYb\r\n4Grq4ZI7Jzu4Z9GDqp87uKSQGQnsME/Ynfyxzp10wWer+gmM8spqlVmiACyx\r\n51kI/8z1KSi7b/IiauVvVtVHlGf12U8IFTtCuu5ganxoMOB6ddE75j0R7rFi\r\n/aRQH/AseYK4C3c0VhnZQH3gaMed/XfVgJFAoDwj2CBjpXuTf9DxVT1q6Ig0\r\nSzgEUq2vrbTJZmaUi6okyG8KBzICeaY6xTyZvQX0CyW8rPC45zpl+QZ9wG0d\r\nVcRNZ7OaYMgxIerOe9yz9Bwr8KVu/hOKPAqIPDLCGTQvfTWtwvuzFhnZVlUA\r\n/T7gBpmzxkqUM7oH8UBx/ntDfSbUg6jTPW7wAEEfQUzmy75vjEuEL5Ps6DZY\r\nAV2Bcfb5YIsIZqJnml+IN8KP2nQaAJ1XSGorPD7KxLM+FUC91IrSEkJ4fv4F\r\n5KJOPLkTV8AOirznFpLMbVnS9JUY7YB5aoNMhzTJffAtLBosdHX9FFPFxamm\r\nWJ6I3E2SIeNTlW+o5D86XQAWWcqUQuIkYXU=\r\n=mhND\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.613_1665274664093_0.9237098501401775" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.614": { + "name": "types-registry", + "version": "0.1.614", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f452ec75b49ae782505ffe4549163ca4cdd644517f35234cd632e356cd49e3a2", + "_id": "types-registry@0.1.614", + "dist": { + "integrity": "sha512-FvpNTP2+m6KQtwBtqUAbEhmi8iaogTKn6UTJwa62Od+Qh7SAKgIDxKb7Gn3OtA0by596B56j6Bk5ghl1mgBB/A==", + "shasum": "f24071fb7e0e8ff9124df0e112a94ed07dec10fa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.614.tgz", + "fileCount": 4, + "unpackedSize": 1555407, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEMCIA41kd0RKUx+u86W1C2CdkSThfk/2ZiUCMntk0cZk5HUAh90J0GtLvNMnufxcjM1EE/ZKXhsZQrnPmUmFi/iwz6r" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjS02JACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqa0RAAoScG0Il+4qrSHnBOY2O/3wruPCOqGP0vltYyjokiyRAU/gKM\r\nQQCP5/89qJ32MDTbuaqaQIAO6x7LkoKqyGW2aeOBIsaB+RkQV6ErDEEVzqet\r\nhpqQKcLyws3FIX0S9wuBdGU4DueJYzDQOAtHDt7HtQFqdcbQsZSwyj/jhG2S\r\nbErqjjRSGHd/Km1/osvjmg5Lw/nN02S2rB6sHhMNp/nYqkJ5a2auS6VY8ufh\r\nw2d0MEKskxKLK3gIsAHI8InQRq5/5vQuVll4ojkjsKOs+jHqJndM5YEWxdGj\r\nqxr8w903G2NJGKKOXmcibsscbq7TI1q67zwUahDt+KPw7u086NOFFdd4QtSh\r\n26ROQYSqirkoJofP6F0bAq/RllzeaW7IEg9v5X3usi+u4geUyOUtQ54NHSHj\r\nyYXZP9OslFiCLoi7WVekd3gCIo+BLAq/COx9NoHLbwWoJn3RXvOSwcGJF7ts\r\nXA0c/0uwDvEsNg8c6xCHOjwk7kIpR9oN4kmj9rCNsxLCp+jOCZg9rUbnArZ5\r\naEO1hfAwqaouDO/rED+h8enkG9hyLwMtYrzN5CkR6Y4wJEUPq+SMObFwwXL3\r\nAu/6jTsBe/tZ3ZMWYOql5Sc+dJSDIdeens2CVreCeSB/iKQOYso+aMC0zb2i\r\n8+3k7RqlO+hst/Pycm6EwlqZ8+cfcmrwrOU=\r\n=TIr7\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.614_1665879433050_0.498221292680594" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.615": { + "name": "types-registry", + "version": "0.1.615", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2b452c23b106c234d5264ed2dfbe305e7636034fe017e4d5e1b920d03268c731", + "_id": "types-registry@0.1.615", + "dist": { + "integrity": "sha512-6b2egEvA4NmmXnOYMJKsvfZ/6iWgO4Kl/boukDLVhkRFVel2LJxBZHhQnQay1hxNOa74ax0caJPupXI5cD+QEA==", + "shasum": "51810edcf08c6acf09bad208637386f7ccad159a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.615.tgz", + "fileCount": 4, + "unpackedSize": 1553961, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCXeGa4oKg3DtRY1m7Ro/BsN3F7rMGx7uoHE8X2c9IDVgIhAM9PVCCNhm/V4Ysz6k1+mlts5GngOzwf/M4QWThTr9Rd" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjVIh6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2gA/+NWno1cwDFQJ3W0b5G26RwnYsGxn8Vh+tCfvn9lvHpoG2geai\r\nc1E7C2sIaRQy5q5f8karye7N7Jcpou4CgdljFsRGgqpYeRLictOUxEfr8tNX\r\nJpEQZEr3nKCWtT1kUa4wTQBr9ABPInoDZt4VGSfuXgZiFmSUlNdN8KNzcHjj\r\nsjvrheHG9GlpqkZ2vLO6965pl4QDmuX6z4LhDkLY/aN2A8AjZPXfTPTAKNgL\r\nzTqHKrn9miVl7joJC6oTURaq9XlmiUsh4B5X4ZfKC9oYa1toRyx+ORGGf4bH\r\ngIaEGvHjAoCHoAYN5YUcgcl64JEpFW6ziwuat7KcWBISxqtKEE91vI0/m9vm\r\nL8f6C7syxma+ytmj7EsfTkF6R0LWCc5NeZDtMa9fUx+cTAbOCFi9CiI/+N/n\r\n3HCHUNyKFElRDISB0h9GUjbJcIyD0PwlSpM4VJUswX9IxeFlY2jfLJZsE1eR\r\n7YsrsQ5f+AwYU/PSyOzNzUJxgyguzGpcZSZ6dmdNytDqIwqv8xWBCEQl3H25\r\n/0U5/e96vsi14KnMBU7mBNkn9JA6973xuurbvtMeKaahtqvrIcIPE3bI/+4D\r\nH9sCZby0Fee3AAUB6tuQnQyLoN0scaMrPfPejncxwTGCEE4f7R6CDkipZp0W\r\nkA8MslNTmRnHvq36rpN5U817Wxv7JlcSVOI=\r\n=G0C7\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.615_1666484346173_0.14560204989449366" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.616": { + "name": "types-registry", + "version": "0.1.616", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "472e3929a4be2761d010987cb06a9a614262170b01846d6918531b3ef4562c99", + "_id": "types-registry@0.1.616", + "dist": { + "integrity": "sha512-Rae6vPvwmcmczZ1dBJPNSKe04jOnkX509jncwGYwXM7+V6722Q/2gdYenAJA16tmUW/Pd+ZLbhAZBcNw8+uBBA==", + "shasum": "9c45fe85036d137be32cbee5cc0d28389effa85a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.616.tgz", + "fileCount": 4, + "unpackedSize": 1549718, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIAm3AFpTgSbVFxChxlMmnCWiY4ZOObpremS5XWUB5V9IAiEA2plt8HiDK64ycWjjSpakDyhwY7F7uPkUu7z0EFZLnzE=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXcHQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrzPw/8CYyRLwkd75YkXyIcNCIpEWYHvac9KfPuBw8SLCZP1vJqybkK\r\nPljTI2GbW5dIu47xsGzs178+2JrHWjNGF+w37SoofA7wD9dqHERSYFFxKG53\r\nQghekKvw1vOfEK/5h4Od83rlvWJ3BKo5jmxKC/b5Cvbaw7JuJJMhkFP9ijGY\r\niQprr2/m3FkMHzQZRMQaHueF65aWhTujqbAL/GkPvcnHePraqx7CzQTGTGQS\r\nukmOxadXpLidmykMV5WgY5XqFyfKx5MtSa8MhRiAz1PkjwQ1DJ/J6NmHONNy\r\na6XhTMHx8YiPT5u+mkDOnq92yQmH0G646NckGK5pFvG8AOHI0FohUxIkrLzw\r\n6pedWW0WvR2BXLcMAPA0PhDwp8L9QvGQOkQ6rYqp+C/CYIOEFA8lqA61auAs\r\nbvLHTqZyXd+GJcXW1wDdW5aiXnnoDVFF6Wo/P6PnZLVWXIDm+Wk+Ifo8+nxz\r\njupbiEGRMnExcJuITfMppKfuehtgrqaTNBUUtieDINTfyDdfy+MZPzmBNb4P\r\nRbl4rm/KqRNVWioWJeAysxUINFcrf73edy/G+KXOaDmeqTqUucHN1MgWmJcl\r\nK8vyveAae7aAStOe94hEJXfk9fghpF1x7tdWB2yrxJjlBhI7jlHhQCRwOSMw\r\nSMbOP0K07EYnv1zpi28CiOjv6JpDOwvW76c=\r\n=LxG3\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.616_1667088847780_0.5725696881870741" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.617": { + "name": "types-registry", + "version": "0.1.617", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5bfe2479799092ff6c053a174ab687a0648a53809d6fa481b6f410760039f37d", + "_id": "types-registry@0.1.617", + "dist": { + "integrity": "sha512-kA/keUOAdZHmo9ILjrHkQt8S9hUQPKD+vOCbsYstodWjAhPjVHA+VaIXZVMbU6/KIxcvHVK1mEKaGuXsllfyAg==", + "shasum": "3ed51040a64ec9c18ffd791118b1dbcad039c3fc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.617.tgz", + "fileCount": 4, + "unpackedSize": 1552252, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFRtWFoITC9brYXnCUTXEF2Nuw867N7eO3ycF00uPRK6AiEAm5gMwekXmiyrASCuldmo0RdYLoMy0We0gHeMboZtMBM=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjZvyRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2lA//bnfKjcuzgqZZT10DWGwbTNeSIqGogi9As9nWAwfH/OFforfx\r\nV2nK8Gw/GnhqUpC6yp9c0F3TkDmDVA8Mte7xC1cM5IjQLg3oVBl3/umK6mdI\r\nZbKXTcdZtESAvm+f2hCLLPfdP51tSXxw41Gr5C4A0tKidIdu8B+cjqy4wmWD\r\nxthVZzGB/AQ44TUshLYSZDYlgfRQ6ufjaW3aTQKabuSA/vPKywsJuRYMZq1U\r\nwotzyMzlL7cMpfhhMoHjVTv1fyTlEIMTBtKDQocQAgdWKU3DhfscRj6/wyFi\r\nynRUl6MwWGrJczjpmSH2bbLqotLqr2T5HmfnDoLmsf+x6e0eXwGHgRdVg/+J\r\nYgUzTbWxUPQKgmqT+dsviU9bxyMewMNWP9AiE2f/p1nVLfmPyNKLbu3SRgIN\r\n/ZFVurQdbZzrzQshoXc4srTFT8pr+7feER+GSwqbpZN9eU20KnOqv9BkUOdl\r\ndkEKk06h9ojq6DFlDixUI0xoNTSx/muwsYoMkhEBlT9TlmcgSDLeo0brpadb\r\nAu3WDf/h7FNlg6YTk0UXBUDsx3RKc793dcFj+EwjI2vFBqVhvY93p4qcXKA8\r\nuTwVTBSX7Vm+2dlBOyWrAI/iW6QJt13Ad9Z6LBUdXo144ojRfnE1FcsflCw2\r\n8v/OAGGbuenVTMOLLc8shDRxCJ2zBfZj6Zs=\r\n=f+sU\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.617_1667693712786_0.7663860584103492" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.618": { + "name": "types-registry", + "version": "0.1.618", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d70123992e1229bf679c10e209479b9e2c5fa526c62eca0d9279cf9336b7f3bc", + "_id": "types-registry@0.1.618", + "dist": { + "integrity": "sha512-rQtZ10AtfBLzAod3akJO8ZoEMqzcf5GtOBFZFWoempevbfJx8P058qSk1EKeLggbdcUP/xrLvq4mjR61DCz5Yw==", + "shasum": "48b9051d08eba932742f9a11e7d23aabfdfacc07", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.618.tgz", + "fileCount": 4, + "unpackedSize": 1555483, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIByHcLIHtpM9XzO9p/J31XqPWR5nbEyo1FM7N7Ks2jZRAiEAi88HXlyKAwGp8jh0RptVL+7qNROEvABb8Z5Amym2Zzw=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcDaqACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqLQw/+N2NuTdBiL6l25HwtMNdo9f389u46EZqgfvOUOgyK39sNJdAj\r\ni1qtrW62s/QrZhmWlxh0s5fNuEAlKG2NNUXIcsBcI129v6+D0KAHLoFQ0OYi\r\nAO8mkdXP+2b4cMTbv/SRKSoLB0NfpMXgPOoEAf5I1q/qikHL9IOlG0YnvB5f\r\nPtgzEJ8HBMGDU7HmHuqthALTK+lKEV57Nu2x6Ky9qIYFGLdlUIp/ee1jsorB\r\n+aplwVJelrr2vt/SGZWyE3FYJirh1ecKcHG0MyyzX8YmrCEje7scYe5mQQil\r\nvB2jK1WRw4giU80hvDlGYgoJHGuPbVnAjpLSYHzTt7w3U28TlUjPJf5uPEZt\r\nsqDCmAUhrHwotMo/96MvOSYcZ0vtYxntI6PAdYYdy5dmKxjUY4N51c56lE2j\r\ny/uqEga6Rtr5D1oUwAm2JzD+cx6iSWKKoo0nifCR9styVudQiv29SgL7dBFD\r\nl592Bclh1eiJh++N1WpcFjN08IezAR0561ueTHmVKTYVkv0WtKYWjD0SBDp2\r\nIxJzSf9W8snZy6smVwdSxme9W8qebFcMOms8ZqcOsh6xSAzfzN93+bzLVkS6\r\nzyjoQM3Jo+ohPGj6/CcE20kvtgJxdVsRvv0Lnq7kBLSSF7IU/NfevjzqClzV\r\nDArfx45/qstSoNiEN6LD+Tmetc1Ae4Bvkh4=\r\n=7XlP\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.618_1668298409785_0.46667200124311603" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.619": { + "name": "types-registry", + "version": "0.1.619", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5ff9a7d1a2fd7a0463eac659972d36ee0611ff6a25a4d5485254fc2e5a095780", + "_id": "types-registry@0.1.619", + "dist": { + "integrity": "sha512-gYudf2/94KILe5zTJXwkGZX0CH/PnScohDvpAZm5AUJiTDUjs6fcMDUHHEabwf9lrJJ25DTwPvXMMC2dV5YTTA==", + "shasum": "1d8d93e42001b5694aa6859ecb501288bc2ad3aa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.619.tgz", + "fileCount": 4, + "unpackedSize": 1556913, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICgslWTXzVdfhTARnXU8go1Ce3+oW7svEBMDuBOW6WylAiAHUGttqJEfLpTywDATKnbWWrNPctr48m44eVVwjuXzgA==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjeXFYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmos4w/9GJcfjt8KxYaCEEbwduU89v6F3J30l4DkLN/RTXUeJ3vlNZz5\r\nIdwG59WWK2Oz1vjYybZuv2W6s39PrUlTDy9n4P9QVAB01f9VPwhiq5VDG8nh\r\nHi6+LvexjkyAJ6dpx1fpKZbW8oDTVrCwaY6YuBmiL52UAYCqrFdgKgpgvotL\r\n5GxFWTV2iL5TK2zXdeExD86FkVAa4YnA8QgSeJNWeBxdhsC9YU7+cvaHcIlS\r\nfVSOGtTFNFrj+osNJZtpMIw9a+Pe02sqO6UXh/OEmI6Nxqsw2W1H2dPiqDjs\r\nJLN6Wy05SvhkpuMVr6Z5wQGWUfuCXlfTPGtMV9rX/C2WrEne+Ky+jPufVqAB\r\ns4ywXWalGO5uEJGByePQYPe6A8Z6Sh3lVKCCO5WFhW43ZIw+aB1H6RfWqgN7\r\n2O1rErzEjEblbch2eSGOe/lQ5MLZQaqs76RSEOhhZ7Ch1OzKONwJ3CEfshWr\r\n1syCNkrJP3W0Fc6d8Mef5rn9w/nAz0Nx6ZA3kBkTU8gEuHpFUii3jaZ+KPkH\r\nA4h8QsWklFOvLLR7h8xrBt8iuMmegc5HFpthYH7YqrdN6A5XFWxYdbfRj6zO\r\nQCpXhubWbkX4RdnbwBioCcGFxJAkOw8SGC4FIxc4UuFnAWKNbJSUePGrlccD\r\nUFZjk76ooUhGFx/khsYyKMpuk2k/m0re49s=\r\n=jLUf\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.619_1668903256693_0.04437298085376873" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.620": { + "name": "types-registry", + "version": "0.1.620", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0a109344aa1a881093083b9d3ab10529c2f8ccb29fe742301407824b9b6d55bb", + "_id": "types-registry@0.1.620", + "dist": { + "integrity": "sha512-TEIt1SuaoL4PsRb6xKW9ESgZRYG/jiM0/6wewXW/dfpSGkMr7GvD0EdefbJfsU2u3Os8i027f7iYj6JzGlmJ6Q==", + "shasum": "b5076e92452a530f545407fe3ce7d02f8c0d65b2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.620.tgz", + "fileCount": 4, + "unpackedSize": 1557363, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCIiPg3xtpNeaBD2O6H/6tOhXOVpO2ysaz2cSJ5rvKbQQIhANq2d7VwWvOOBXQ9DU8OxwIkOgco7WvV2MefUxajq7n9" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjgqxNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNXg/+JkztitUTFho32Xm6zLUrd5sS4JuIxH4+G9BKO8QgJuK/PjjM\r\nywSMSdJIq+jO1SyuoB1APS1Py46cY2BVgC600jsPRa9aNVvUKlrDL7IYQ9GR\r\njT3/IwJUR/EWyJSRvH0Wf3pfS2jc1JK4jZlO7akVBgzJ4Y7go5vcYmMKcYVv\r\n0ltoNnfd/AKvZo06YMbME897T47qHaWLxZo6P2mhr7oyVuwPnsOgppyCDH1v\r\nIfKD8yjZ5pSyr1cyy3EDFdmLhqPmb2f/aADll+V77wc2RvQWClXxWDrhWNxQ\r\nOFBZKys59WWScWCtdiZ23hSU5al6tOe5ULwqktDOOYeWmTsR+E5ZV/oWNaDF\r\nQwuVvFZuBBts7JB4+J7KVhwRewozTfYZM3miHx7+i26hCOvnuLNMreEHpVf5\r\nptciHi8AmlgUMCPZ5hhoqCYRGNY6JVxjLDQ4jdZ46t/B2w4sqBNanRngNYTb\r\nFZdoNhle7HIEF1dn/45WczefFpx9Bp8AHz2g+NibeUff5TNB8c8VX2Lvy/fy\r\nBat1m/k0JFArUEu+c30M8NZA6ITY5ev6GPXTnQVyCK+6hF3pjnD4Jjh/NnA6\r\nls08Jocj42RGmE1pNSIdj1DEMELX1/fQ4FL0La3VLZ7HJckvVRyB6Q6d+YwF\r\n7lPoBwQs62b0knTc+xpwBfALxobHDEd8sRU=\r\n=AepJ\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.620_1669508172967_0.38160959618855794" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.621": { + "name": "types-registry", + "version": "0.1.621", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a6d69ca4f785c1a41f99e782fd3320cf687b0ab89c0ba9d8f9a18f09077292ac", + "_id": "types-registry@0.1.621", + "dist": { + "integrity": "sha512-9/4idxcXkvB7zm4CgJQoLzrWPS9updmxBXslb22qq6lAb5r1nnFvebu0IIXs+RO5XQ8YVur9UGzTzNe4qjEtuQ==", + "shasum": "92fc10c68b55429a3716b75829f5151e809117b7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.621.tgz", + "fileCount": 4, + "unpackedSize": 1558182, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD6D14dveKMRIpVor/nQ5vsxveBX3JhUfznO6gUKUoN5AIhAJf3oFF2qXaqnk015TbTtEcoUXfSeAvaQzISToxUrDbf" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJji+bDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpc1Q//QdccE8r0kn1xi6dHsD9HXhbwVWr8XlDJTXqHWGoWrovYGxSj\r\nUJzLhJp5U3W+Wrm8WoxVtdrE+GAw1rIeVrZXsJIbZgHoKt7ucv85p8dYGmzr\r\ng+5SEy3BLXPkMQTezQgvcniNR5fPqWvVJ8qwhLJZF9nBKGRzCMCplj/m2tDr\r\nIQRTTn3ZvdQptEjPs+N5wVhpV3g3lUpvW4Cxqb5mhW9ceGkGv/zXqJ2tpEBg\r\nak2iTCWNmVURU4zmOrdye3favNMDu7rxo+QWJAhGKdbRp9kp4qBu8eDcipH6\r\n2d7ha0kz4si61OGMLpv3Gd99HWXkCFYt0mAisBeWS2Lj6dxqMuD4euBdFHoI\r\nmQW3LiJomQzkH4sV0HCUH2Oi8KWkTmZ97MaXa6N+Fgm/Oy13YbdfB2F0VF0U\r\nAbMTBHdDmrVhOPxA+9UZBpKtgDwz9aLaetA5YSSYgXHc6uDEIDoRZRp22ZiZ\r\nsA1hZfFiiRKA1zV5EHPJsnbKD6mKOO6CELYvrMKB1NOhINAN8y0lLE1o2XMg\r\ncNNnhQNWxbVYitXjbOrYcgpSmRu7GBec1FBvVThp/GgHeFiHePzjt6UDJNGd\r\nM2C7vH5/yiGnAInx6fHes8gSjLnp3fZ5hBql+RJs2b4P4c0vp4M7ohBnVDK5\r\nLlCcsSSYiSwlbjb5riLKrmz5937y3Mn/hD0=\r\n=qe3p\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.621_1670112963489_0.5915497067070103" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.622": { + "name": "types-registry", + "version": "0.1.622", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a4a10825068c779faa0a710f120698103d3660f2f53e1567592cebbd3c0dbca5", + "_id": "types-registry@0.1.622", + "dist": { + "integrity": "sha512-d/sU1piD/OJ00p5H6WP/ABpz02+1ix48bGvQW1LdpI/Ks+ro7MjOhosp4rEK6nEVtvhPTOvIyhp6kFVpZas5iQ==", + "shasum": "56a04232daa5fe68e4d4b088f0c6c239d3e0b72f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.622.tgz", + "fileCount": 4, + "unpackedSize": 1561203, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIAVoLwRV7nf20ArCunNYwfYI+6NKhtCi8ffILGproReVAiA3SGCX/MCXdmOI+Ravat7YIF9MztbMYVDcRMd41/4OFQ==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjlSEGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZPA/+JWnv3a/exGZCbXEL6l9ouHzxx04gCHhRRGM5qft/ueVb/5ja\r\nuNKntRI8LCt95thEa7J0ndFtn5yDULVR8AKgUfXc9OGUBj+vJdTzsNYfUaqG\r\n/SLsHKxUjeXB8efp5GN4Pi3+tWi45gTAB8uN9C6HojQlIimqS9nwOSr3UbTG\r\n0XIrF1HHQoEITWOZxTiMy6eZ9NPz2Q2ObzFUt0Br38tMNfMcfHt9eVFnD1qH\r\nhLSAO419tUWr2hma8k3btGmpgpMCmIniTWzCBr2Usk6LJhT1k4VIUoOApju1\r\nUkyW9rktKRstetHceuUiipXQ2PAAvOnxDw0kkC6SlBfQuoDAHr8is2EPVxEa\r\n3sN8OSybon68s9OxWPDxymc0U4rn9/fjtjxFGQlxSotj2SnGKxDErGP4FZtB\r\nYJEVT6DgBqfAvmF5Qk/P8G1tvYwwp4pRP9GvFl2DFzMP1piLOaUSE4ZhVku9\r\nkBCp9fU+YXJztdvOPCZm4uPaSpRZZfh80sx3m/AUE5LF5niOaN05QU1kFuxE\r\nsDtGjQgapEd8nJ6yJtMLBr0IyW9pvktDNQm9+Zi1ti1V1H94SyyajMCOGN9E\r\nWoRKodadNmPd9BYwgrXN0TO5rYqbdce92bO9MPdjQbmVutf/fYWg/lZTvMGJ\r\noCM63IXvCWHErNrWV9UQziOIvFCbd/fc2Pc=\r\n=y/Iy\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.622_1670717702444_0.1796127875791147" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.623": { + "name": "types-registry", + "version": "0.1.623", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8dd76c0f8b565d3fadb9a73b82693cda385f27575d5cc0d4aaeb083edc86e34c", + "_id": "types-registry@0.1.623", + "dist": { + "integrity": "sha512-xs6ysBBlK39ExuYMvkmyrTGmsJUtTiE/swLg8o3ZhJF41lCF7vDBAZ+bn2nCR+12iV5Xge6MGu+v9q7nHvi1IQ==", + "shasum": "85ceab609d29b0013c8a225ad32f3acbaa836307", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.623.tgz", + "fileCount": 4, + "unpackedSize": 1562482, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCpNJBFie7q/jxhp4iOA634Gqv8a9/P6WQOc4m1useKjQIgeb7Qc1DBtotZA5DtBgH/XGYt2tufXmIehXznX8htz0I=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnlvPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq+yw/8CU2s/GktiNh3yZM+pfkrHMvZEuYsZWC9w5/Vamr6KbPx7m0W\r\nETLsSOtVmbh0h5wYU+xJ7odZSjAEe4plJfd4O2q5ILl0jw0RPUY/NUFbeZdl\r\n/rGBZgCjv9ahIi7doXFMA74hPP3rf29uQ9Bitrg2riVs6AE3JxJZFYtCZOGv\r\ntVu7687l/ZBI6X8bkxQqePn7gCfbxqQ92XoVh6w6FtYl03J7c/23972E7rQW\r\nnU93j3+s0xMYhhdLOhIIhkbumMzDgNi97IrqxegueSF3BXO39cxdG+IdRJaz\r\nVK8lB0NbgDh9RSq9TcI1my5zqkatkgwvOu3GNM7dlz4ocCPRn3/GxbqJz+5G\r\nzqUh8Z0KNlvoM6d4IIQZeKIimpfRAqEsusrNbe4WayO8t7BFYI78C103//nf\r\nItr4gjIvfMsrkbs65AREsRZY3clxW6jqk5y0nYRXnmMDsB+p1zyhTnb/WLKY\r\nO4GhYaXhFc196HeQgim7xGJMAmN0u4R3l2lj+kx74uhyVQ4v3ieEMxnG6Gtu\r\n5ez987bHRqeFFLm6u30QX1QQF0d3ps4WU/9dXqTK3gsjpV2Miq2/PVinVAJu\r\n+EZfWfbqf6sbcI5jBvVFLU+MytvJ6bQHxRRimoadOTRyImbfQgpVXa+iPN1o\r\nbx9X9rQ1kgK7IZoG9yFIBaAk1IZ1HSYQugg=\r\n=Wjma\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.623_1671322575352_0.17423139371269625" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.624": { + "name": "types-registry", + "version": "0.1.624", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a559a52a2635e774760cbbebb5cd10504d2d9ee7a040c28cd118f250fc345add", + "_id": "types-registry@0.1.624", + "dist": { + "integrity": "sha512-qOpo9hh3Raa5RTkAe041bhYLYRNU3vbL8oa/JMdRqb01HnCnPdynJI/EjsBAvIjPEOZkv/KCNrcszROhlEgGeg==", + "shasum": "f5df0d23181606199389aea4418b577a5139fde4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.624.tgz", + "fileCount": 4, + "unpackedSize": 1564214, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIH3SnICTGwI7k4AdRC+vM92kZoO2RHS4suwREY+8qDpmAiEAuutJ3SHfsOn9Ms/gZyhOQyiwV8FyR7EBdKGvo8+T7G4=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjp5WaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+sRAAhDeNR/F5IhVQMi9EvKDbeSL1U50Au/A2sexNGAxgvt4abfdR\r\nEsCXtcIghtk7/kMB0egLia0Ds86RqIRjGejJkmzIHKrIDxo07ZIG2+ceHGpP\r\nQLTbwFqaayV5rPiGsuVZKdKc84uGCvDUXxEVVURbIeXRfVKUVoLL1LFfwbzC\r\nuvTuHWcRv5oocaGcgszw2lxdNu09bGvGrkb4iFR/FC+7iJqVUlQDz+YAezNW\r\njdha+eClCStvuIjLxHSTdIr1z8HmXgC3l+lAzIsSf6StP4L8GjlbsFvEgDSm\r\nxKybPhi/GyUVsrboBEF8Rc5v2aXfgzOCB+0T9j/CQQRP5u2EqECKZV45BRyu\r\n1IZW0xxij/sjnEfvLP4zowaoY4u63kLSzf0TuP1SkCllRMCO72Qz1K3dhykx\r\nAAv2irb7fIKB1eEvxS0ALp5MpWAqi0K2frKqJNMfK71lVQ0j9IXhStMhnvrn\r\n7G9r49MN4cn5ZKWRPk0gaTPlbz4g4A7SAJCwng+aVMN48h9UGLFBzFKVYc6V\r\nJKfNmjlLru10hspJRESsgP0Dtq31aZa9rik8WUXG+93KDYCp398Ns5UNexsm\r\n4Sr/sP2JD+uly4EikIm59WnhUdFMBckuLrVTfEm6dPjcOGOxlI41PtTVAAiY\r\n/kM5cefcdiVNGHxAeIx4BIHuY/EMc334FCM=\r\n=c60C\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.624_1671927194472_0.745968530131299" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.625": { + "name": "types-registry", + "version": "0.1.625", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a3d4c20e3d9f11cd4f08cbbb450d799f0047578c965e85dac248e002f60bd759", + "_id": "types-registry@0.1.625", + "dist": { + "integrity": "sha512-cW4QCd+EYj+Fx7j7q/DdFpXR+jIN/JcpZFHLtXMjbtVuaq/q32HBB3X3dLUoH9LIvzzv2DUiPSLxczijXrfK0A==", + "shasum": "23451fa238ba34729f9ee5045c7d36776781a083", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.625.tgz", + "fileCount": 4, + "unpackedSize": 1576628, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIA0NOMiS2k3T8mdUqr+cPQLsIqbuiLNH5x+jCCm6xltjAiEA+5PEjLI6WyQ30orayx3iXdSu2siyTKZXjVXgD0pxpNk=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjsNDMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPwQ/+KYKtuqowrDGpZg3vatJU42OlwPOXKcIAqrDuMXTcNL3tDF/U\r\nRABIHb8zzgplNX61+FiaKqYj6+utye6QDwOVMZ5GavnOwDkLSaUMg5FpxDRu\r\nklRx/bftYCjiCC/dqNtgBV+wGz3NJerQOYOIOo4T7hZAQKDeUj2YLgu9C28N\r\nICplYjfZAWFmVrUVGuIBU8FE2CbLMfCC/pwrvfuVknYUns6ti9sJ1EwqxA/e\r\nPVmTan7Pm8B7IBfczrep321ueuXqdOB2A02q1+yo0jeXPjqrhp1xUn9LIu62\r\nsEWP7LN7XAYiAbl/AxP4OlMVJ0SndOZav+azaRXHfue1NN0nHHkkBoBREHQE\r\nrRR3Q1Rgnzx+e3+xFNcPzkZLL5nGUqXW0WcjWFw23yNkawFUVvq8ZoxvpUxI\r\n5oGFJ6f8Sx5JOSWz9UWVj+dhPVkqeV7m0uA62qTN9htjBDT9LFhiI70I830u\r\n7rQ2gTlDroNBOvHk9stzfpaNA215r1pjGI8q+6EJOl6TjO3rPYS45aBjtbcT\r\nPIVc8PNCgF9+CwxgQiENbM8bhBB6DlOqBFm5fcn9sQKTklbGzyT2KpQld4cv\r\n8thzD2ZVKJbrihssjQbO+D6wxgbn13L+EF40qHIenfLJ4cOrU9WaCH0+MT7Y\r\nR4BYcvwZ/YgB7lxwFZJ2tvNXZxgD9bn5XOk=\r\n=kCYP\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.625_1672532171994_0.7622021514754229" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.626": { + "name": "types-registry", + "version": "0.1.626", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "520adc4564787d6df25bf475235e91ce6c0c00bddd08b51384eddce82a8e2de2", + "_id": "types-registry@0.1.626", + "dist": { + "integrity": "sha512-DTaFLpXrkSWCAdEmHx+MGDcGF8eXp4MMAKFsPUVhIWKU1JPWvhOZHClf90hdLUwMl1IFlKioBpbcmfdEko5UCQ==", + "shasum": "1c15e6f39bb3616667dfc46c50b5789e7196bd00", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.626.tgz", + "fileCount": 4, + "unpackedSize": 1575232, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDTQKUZd29pUYA9BHguTuJeyMwxGwgytibnS/D26XZaiAiAGKocvOuacoTLvetWaY3PoTEJ6cTKYx/LeYb6zStus+w==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjugrzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqrLw//SpDE03Fk0730HvPBpNmoEfKrwTK02ZkcOcMn643C4gAu3wR1\r\nLCokBP0cWAeDKxOzLViXVHUCGjRr1gwh2LbS4OhSlC56etVG6CYSkQ+6Sn7b\r\nQoQk1Vecmb4v89RJ1lpPttq01krDmfKa8L1iFDTh+9MIcHQuOOMFJ+aeBQep\r\nxP6SPqZKIQND+gchFM14IALV8Sb8ZHSQdHlUsbme9esvigGa1dVZ4iRy8p09\r\n9W7B33zRtw9rcrhwP2qaTbYongB+TXutz/dELdd3RuMlsOhvOsL9+XpTn+V6\r\nDHpLHt6FYdZhoYYwmVUM64sOeNnGQw1f6838oXXtD5yRKB9OaEt4bdwMTeim\r\nDlQ5fRFngmGNqGkbgk8p7h+zopktGX5xpwyLiABPuv4xGx2vDkb7B0l958Wg\r\nlvgJxB2gC1JCupyDCdgZSEWquGRMR3liM4Gi2BNqbdYvgaBOKW4rRm8WsSTJ\r\n79EnkJYHw30xpUt+PxzF7wWxdydDJ1hM2IJHNwmjmg2/2FKu+QXeKPgcbpfG\r\ngFqWkdyF309cMJPK3nBEFG4ezOdc82CRRGHMPpMNNwnnFjL8rhwgPlC4+0VT\r\nAYTzBz6Rn0MDlfVw+mLm9P8ujVcFz5Gk4mm0Rrkm2Z7mLCWm2z55qLf/oouu\r\nx2Y9TbPHKFSqZXPgJYL9ACKDFa0YE0PK5fI=\r\n=ki+V\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.626_1673136883265_0.5152132784574097" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.627": { + "name": "types-registry", + "version": "0.1.627", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "cc228968d85de20ad2ab6a1f16e1c3b5b2899546bce165bd8ea79c0468e4ea55", + "_id": "types-registry@0.1.627", + "dist": { + "integrity": "sha512-jYGMKg9qG8oUVG0eeFZ6pX1bckL16gfPz5xok+vxuS9TTw9yu8/CCCWSmz6eeNnvNfSD0pk8OMAIvmwrVjAi0g==", + "shasum": "fb1ac7681d865d0dc5f0a2ae5696a4a6b8aa7e05", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.627.tgz", + "fileCount": 4, + "unpackedSize": 1576582, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD/ZSsgCLS6t6p0Z0cj6Cp9y9wQQ75j31RQtNjJlfcOIQIhAM4wS2lFYru1abPf9vi7qhOiCVAmUTIEoVFeqJwCUbIA" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjw0WtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp4Zg//Y51YqFy1wEvfLVTyBEuLGIyqa08ygDaKrmwMe0Xa8B+bRuRZ\r\nTj56ju5yaezs+tqd0Dhllp+KReIgq3HhxFfrqrJVFLYIZ8ZqowTGTS34W6V1\r\n5BFrzOcM158cP/BXSFK8m3yaAa2aeGyMv9skEhFNfTHlavs677DN8l3vU8fh\r\nyffmlMXzF8K3yIBGH6goQqjO3V6f+KxqfUq6+ccThiMvTvjgYUmkgc0DlRex\r\n84HxANMDy6xg0nsiWQ/taRuxIBcV0tJMZ4nUPOpLtcks3FopWtu3Cn+c4Xw6\r\nP54YH6jjwv+NSATegW67Gyh0oDASiw3eb2C1RNlsSU4Ic+adWvniKdzpauX0\r\nRLFo/09QZh96kpRB3Fpo9WrQNn34eNT6w0c/uUrUgKS1Xd9n6Ecu5CyFFNMf\r\nwgsC/ZIZfsqJtCmpXHeSAR95i+T+5mDt+w4+QbnYkJuqC24yV4l1yrJ2K4xx\r\nek0Tasw1RxQDz7gIHc6u6tQavzt6swHZqBjKOEH//p9cRaHbVzQ0kkHkBy//\r\nysOmGBYrbk0e6Zl7TXFrtQCyRg0sU+T3ye9L5xrWZF5h6cpeH0biH4WraGL7\r\nh4adeybP66Xx99QTvIJH1/SLGPnaDBnOxN62U/bo96R1E40wbeh7XPz1mhIO\r\nmrGS53tL2ZMjMQQ78akPdOn5fFuKKkEmGkk=\r\n=CeYI\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.627_1673741741618_0.4255843687908927" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.628": { + "name": "types-registry", + "version": "0.1.628", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a27c390a3c112745acce144c4a9c1c609b3111bad2a9442927ade97963721023", + "_id": "types-registry@0.1.628", + "dist": { + "integrity": "sha512-NMWVupPmfQRnmeU8KVIePbYvn/1MEOoDeDzBC+uuKTG4z8b6F9ehOdUK5A8Uy00Ui8yrLr/YsDheKE5X/bSWpQ==", + "shasum": "6e415ed3c61da3f5c58f84b8c4e5ca6259d6f4bb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.628.tgz", + "fileCount": 4, + "unpackedSize": 1578345, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCICIpdWGH9QukukXMThrUcERdGQX8h1+uRn+Og/p5vKYuAiAtfy1zLV9952qaSfTbfUgJrENDa4fSxeCxjOvUivVtDA==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjzH9XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorIg/7BwMxpfYQtE7CZfkYMCt2+t13gXFHuezrQmxQbRmmpRS8SYjw\r\nWK7sSTV/kxNFuEDGPfChhxeeu7vG4qWOpjvZaf8SryU6xRtiqyh9Exg7b8bL\r\nkz2kXlAhWoxodVz/hg/bK6gkNY1C4zbZMogNV0y8gVpYW0P0Bm6uuDboSmy0\r\n0SQ7N0BSbwXWrxV4EjP7oa1UitiQ0y+0nWewSVptwIsyKy3X1bnnR9B4A3nd\r\n+k77bmeITh2ou6fjzhsIsqODmE0Iepp9/sP+5Sv9XM412HPOSaNfyyvsQaHW\r\nqof7ZYndurVki2Lnr5zZ1TSzimgABJ3RkCytV1CcPHZCd4zZvbAlLXXaWs3h\r\nBKBqRQFP08IFYuT6n/m3rtxU9l0lKzgzu8NA1mFIKNUObBLojd7Nl+fh9syf\r\ngp/2hjnu8pYWUGPUjQEb8F+YVGPaCZXsdKzAdeMQ7vfy+p0L/FP36TJmMVOb\r\nO2z6foNs5POUPMWMkEOjrFjs5c4JT3yBHFC6Vl/pmnLTwKzid/beCrRenJsn\r\nN1oeVxBKnaoptiqot7q8+1rfK0q8pTV9yccJ3aH8io28QUlKqjSc83iEPu9f\r\nXqpDTwckor4Er2Yv9oY+c4axEPXYZEnLNR5lh9DDK15QNQYOPIaYbUDM5Zsi\r\nq5D7XOZ4zJsgljXV+zqMXKY6HsdMdi456ac=\r\n=n08C\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.628_1674346327777_0.7787119921519601" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.629": { + "name": "types-registry", + "version": "0.1.629", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "990606d4c46b725f382843e620f082d84d60ef3271bb6703325f8c309ce11bf2", + "_id": "types-registry@0.1.629", + "dist": { + "integrity": "sha512-EZL7s1fzw3r6y+kEIsQeNBZ70nifVRUOecxfql9qDybjJFEjygF56h3PeCc7F4nz3rGCAI3Kky2znBbE3QohyQ==", + "shasum": "d49938b8b96fc2b50ed9a471c1a83628b8f7e84a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.629.tgz", + "fileCount": 4, + "unpackedSize": 1581249, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCJclDhgisxIFhC6A19wpGF6xJu+YAYeENei0h9bf4MIQIge4mlIN2UFhPJp6ZpsZ2SdPH4I/rheO5xK7Vvqbuw1C0=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj1bq4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/RhAAjUi0U3s1StZ+mDofLLnbOPwMvo9dwrSvWx4Bhka3v5MUSqlc\r\nRL5ij7OoOq3lXZr91n6hFTe4AayD0Z2I1xWN6TSTGiXlfDfo76sBQ71RO9mx\r\n/YYcN4sM3e0Rng8Gga2DHBzktUs7zC1gJ1Wd7fK2gZ9akyyrkCgm4zV8jzT3\r\nxEbSTv8um1FZTp/7ZpYtCkEINY7C5GsYl1eprSfR5NH+hSZ8C4ZSvDF+eiji\r\nO+BYj1f44aoXN+v0+E7C37G9LTWwTMvqlRsmXlRJFES4Q45JybBdL4krfXBl\r\nJf1gEF3JD+Yvnm4FX57uDsqLkJNNj01HDqvbPPCl69hzTSwY6plpJ2diaSqO\r\n2tJAkb/fqt5fxNj7GvS2/GSc8U1TTQ0cvOizDp5NOGPduWck68NwnzCSoqqd\r\noGM4veIduNclwZXhbcN9yKIXNOKpKMpv6PI/YIlcHeirudvxLmh9m3pt4JoM\r\nYlIj2o4POj+TvK8rhwnY4Yh/OElR0x4d8oapF+z1qOtGU9+xEDFtw5npniRt\r\nijXN7YuDCY9AEtvKFC1d0KPZ0BEFAKlBlLajew879RA7oQP/hEdVSiRLhjup\r\nL4d3rGdOKrRmd0Mx1/y02FjgGIQDyOtSYcs03BdRpnh8LBg0dLhmbm7fCstk\r\nGn5Um81TAUupGRncLyK0wpZgZu83g9NwAm0=\r\n=Dq+m\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.629_1674951352198_0.026464716442336167" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.630": { + "name": "types-registry", + "version": "0.1.630", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "6bbbf70aec4932d599aca1d9b08e41a22883b52148f35a2f6a78ba24ea0dd76d", + "_id": "types-registry@0.1.630", + "dist": { + "integrity": "sha512-XCXLCjPtSsQR2ZpY/IbXr4Psyaq1c7vXXQtTtXkRwThAkUcc+MZ8FAh5XmrsK9NGtWqwMlM1DLVg1GG7nd4eyw==", + "shasum": "7c61e583a946749e4f2b7db86fdadf30214eee2a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.630.tgz", + "fileCount": 4, + "unpackedSize": 1582843, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFAWToc087MuWIqnwaHYfMj8PMkzmXZx7r84HbBFJ/bkAiAFI40UYO8V2dnQLlRT1IeTXNPCAuRr9+mZTVKpoN9Dxw==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3vR2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmohkw//cikQIXNrBw3ovsxiF4Ai9on9PFJFUxzfnuXrecFI5EfrZYAd\r\nD77RCvNvvuMkSpdg+f+R6mmnR+edpkJwIL8L6Bg3HfWa9/bN9gjc+b84ETgg\r\nLSNVq/yifnO7kQSsveDWDDqH8nDae7SwOl1+iD7dCd6SE2j/9JzVMcohLE9N\r\nmTUjTlCqm3UV+amMl/NZm262N021mtYe75A7/IyWCT+HrdPdVvyt1YopdHYZ\r\nlbcVjxK3smI3FG7Fv1Qaji8k+eL80W+G1od+bMvfCkRBEX+GfX1xO0bB1spB\r\nRQFo4mhzOm+tF3xPPlZU8uTYYh40eMZNe9CNZGhC8FBOQnrLbqzZYJzZFjkK\r\nqUbyK8ixvaHcZpjpob+4FRMPIgRwZS/2KDCiYKofvx/FfG9i8ctCq0VD3va9\r\nVg4Q51FOMKwPcAIb72UBVstiChq9uOUxIMXMkh3W87gtIiPJLU9B8og1bVMY\r\nymXGSghF4LCp0SXbokCOA81XDLLfJMkLgYqT9GRlOFtvrV1KY1e9De7JBSAW\r\nX9BLxXrXS17U0LwFUXHH1eHzOyYvkotndOIX1+4KnZf4byJIfGkspFgX43hS\r\nyevz1xlU6tF9mtcQHlMGWQeSSJtPJWhsCGDQruAY7QeEW6LpHgm7hK0hRuBo\r\nLQxTs9x5V1nnfwkvW42pwJEZkCzbhoHFhCI=\r\n=5dwp\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.630_1675555958003_0.44368879149922735" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.631": { + "name": "types-registry", + "version": "0.1.631", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a1e151c3c33a418e8b81d4b9c8cbeeb8cbc9c1fc575db7a2932a83f9d862e430", + "_id": "types-registry@0.1.631", + "dist": { + "integrity": "sha512-ngD25rzFR5ST85Mw3IkU3hJmYC8QqU9Zy/FDm/hxxRRrsz7QRoqffPKlU8sHBYydRcIaM8C1PlKJGPXew4SMJA==", + "shasum": "3979d1cb96ac186c9ed38c8b64fc107d4d78c6a2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.631.tgz", + "fileCount": 4, + "unpackedSize": 1584090, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCTafPD3p0c98yRLuWBbgxk/iYACMpd+VDiQ1tPj6GJPAIgSW6WG+ud+94JNbTAT4+AHjKrtgWtvD2easkbDR1puvI=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj6C8PACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRzA/8DFsjWEEKJ5L1yMLibw5WMQbiUcEoUgilWRSD7F8ov6/tWvvQ\r\nr6bBof8J8rRvfmCJc+5hCup4QU9kXYUBvKSqcOXedJ0JehJZokEDKMiBfqWL\r\nUCOnUhCEJ7yv5+KVvPtF9unKFtP/0bySRm9/IrzXJGNWm+WZJo3WrcInWLht\r\nI2sSPifUXMihvcqX4jA4KiCZwrssPtIZhAQ7RtUwIUCTADMIitHyC9N+lhwH\r\nG3lSv52/sZ+IGRUUX5K13ry/HeU6rPkwK5hO+vNyjOLHPIc1WrJYCcnFs6Rd\r\n8w1Q6+DbKynSUgUWK2KN60dGaGqHyy8GP6br8I8ohZ0au0dmHeoSDOWX5dGy\r\nnSntVyI/tG9L5q4koSTeFjKotJlwE8aS9JRilWeLW9bQFL07GSN6LNw/jmLv\r\nInkNMtLKfRiEkNVmEUPkM3iK0rD6OHK66PMSoue2y6xnIE46Hniq62s7jQu8\r\ndNzYPgdp/JmKOlhkSVTXM7aZJae4qc7ZF6R2IavIRBRAMPvu2CaEOTM1t0id\r\nIPRGptQpsDeEtR/cbM4y7eddhy0wAE/9o6Peh59d2fb388QQDTp70/IBqnRP\r\nga4pc5RlBvJTFF6ElhMBqzvgEQbZK0Uol3TsAdCAAVyiNyYWfXQJqMIMZC7e\r\n7xmtkZaf9968DMr3qbI4PYM6b67F9AEsxgA=\r\n=5PVf\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.631_1676160782907_0.3060231274846543" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.632": { + "name": "types-registry", + "version": "0.1.632", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "54c861f7f7a809419f7fe85b6fe09ea4cfa2c4018ac32eed9f193949e7953953", + "_id": "types-registry@0.1.632", + "dist": { + "integrity": "sha512-AaFF7BOAzyCeCZQmPdl0HN3TVIw8WdMooMm86LsC+Sz3sFsxK/nUctDGFy0U9AlZMiZtIKiLU9w25IoF4n7dLw==", + "shasum": "39240c76b1652c318c7d38cfba9c77faaff29764", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.632.tgz", + "fileCount": 4, + "unpackedSize": 1600355, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC9x+pknhKX/4Sxab57ASVglknx8+eYpje7qbFPHQUTuAIhAJgoMeqBJNzQDOSeMiJNt0ZUfPyaG8RAnND5UhkLj81B" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj8WoQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+vRAAjjahYQVKHegsYA+LUXVS+zbe+L6N3EmONYf1Xeoz/vov20LQ\r\n/jMySmGwCNWYpfg+P2pCd00eJqJx+oNY9Gp/PINn9FT5HLVVS+E4NWw3M6uI\r\nqx2FFczbKvYDrF2PauHbdTqpPR2WfsnbwDoceOaOeadUPnAF/Vt76GUyw+o3\r\ney3yQfkSxbT7ADi/MZJ8EcwKBbsCmtrx1drUJfk/7ZJ3nhY82j23MxyJxeCE\r\nHQPrBTlcA1m4TLs1B3q0q2xgLAzOeKLkUPInVwjNWxmhU3kurzECktE5swxe\r\nEx3nygJ8mmk2HRV/2NnGSqh1yPERe1ckrsjcXaQ+8wlnAdIJyIO2ffW3JEIi\r\n/CC2fdAJrKP3v8ZZOMSwRVq7p7zkWWiz7kEZfSdeaM0Zt4X7E2vk/9NZODfm\r\nSD7jjk6Gegm35xc8X6YMtiuPDS2zNXlhPdkmwMoMqRnxkD8X5gWdFiaSxAfW\r\n66l4ADKTuVAC00BzqfrLrVDgEQ+mSIPcjkqAoUlonrAt1pjh2qu3weMMxZqN\r\nM7JN8LDXpE7pp4l1CgXBhXf6iObpvk4SBnGgX0VjkIyItNzM2RSzqLuv1iie\r\nNBJ0mVVdD0IG6TccCe5eN4sZqdKJm7qWPAKMPsXBsu6sylqWJESgUcA5gMZX\r\n7OsdwxECxfrx1STjPl3SE6fmcWKyYNIQSzM=\r\n=EFC+\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.632_1676765711974_0.5441412846674689" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.633": { + "name": "types-registry", + "version": "0.1.633", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ab31a6867a4f5cb1f32399ed74fc34d28e019ac6d056253889dc52a2285f504c", + "_id": "types-registry@0.1.633", + "dist": { + "integrity": "sha512-9wJ35Z4MwyE5B9IqS0rPDTotLlXLk+qQRReFahw3v+iVB8HGR8V5/6YYNG2mpIz00nhauJKI3QESVKVVBJrHvA==", + "shasum": "91fd858ba204806d4ae7fc6f63ed28dbce5a3107", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.633.tgz", + "fileCount": 4, + "unpackedSize": 1601926, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIH1BbLKCjjy/Li9BDoVxdkl5yWYhvufZXuYfM/aTw323AiAIv1dhj9vpcqiXzOnLaC8tbPI3AUhQYoFu6MX5tLyz2Q==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+qPhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+Qg/+KVX+biJIMfO0QeSF+yFlFbYlKoRW6CbYgTW2NGjAmMA4wY/t\r\nowYYi2SkZXZ6rSSXiP13w36Vomwc+HgnhYafbvd4nOzxoFFm55BTe+mJ2+tq\r\n7RyoMZj855ItCX0YIxFQbRX1PE1ia03PnMnRg+YTBow6ExSmm9+Kikc0p+9W\r\nZJkcdNHO2UTc5V4VCjJ0lW5BtnPYLWQ/pwvIMr5jR00lC1AUIWPDDuZwFzDD\r\ngZpsbkW9QkNiZKkLrpclsvwDHZM6glflC5TjWTqbOJ7JyRqXWzI8J74XH67x\r\ngBgFkfi1Nr5Nv5dPSP7BpDcq9BH8h3ofE26ZjicXQbMDrWPp1WuQYqHp3bcN\r\nqm6HdlsJ6HR8MVpn17Z659t2FE8D12oX/w4GgXmaWKCiceYR5P+fhBqRaRvr\r\niaqIij4+lNfG+Vs2Zjd7SAP8Z73XkEA6f5Dc2BxnZBK7cInECe4zRBA6aTIs\r\ntg+QPbMSjY7OXobGTsCAHOeR4/O3p7PqVJ170v37c6rfzjUZ/uk6ciCsB/RB\r\nrsasU6epdxMpNQsOLl2SAXp3+9vH2YdIh3wf5zwFcLlLvZ5eCR5lp5Eh6KYH\r\nhgD5+f7lEzfhiJcViisNdLB7zTcIlSuc8oO46TVlqrVEB0llOnCoeNVG47x/\r\nTrOJhfGcHiZlOaMmwZ04QF4NYQHtNtiufKk=\r\n=tRwb\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.633_1677370336753_0.5717939296706984" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.634": { + "name": "types-registry", + "version": "0.1.634", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "247b64768177a5d1bb5caddc9ce00feccbc7911cd9aac50510b2e73e76b0171e", + "_id": "types-registry@0.1.634", + "dist": { + "integrity": "sha512-gg6ZQXRUJ7xhnwHGyWkvZMIHckD5TVk30VWfO/7szIqJ1xBWHews2YhwaEXBhcYebugfCE+o+JU/VTPJMdwymw==", + "shasum": "fce2192f6f21a30274f74f1c59c9cbe570d11295", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.634.tgz", + "fileCount": 4, + "unpackedSize": 1600778, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIBiJgComT2/4F5GhWDFDsqYho3khucXNZGSiQWUBEXbMAiBaQBk7i8ZpchFy/HeYBF1piWhVL1KviqCM1OOlBfeX/w==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkA98SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrpHw/9HKqc1LM+ycyksW8U1JK40bGgJf6rbgdqY21omfh7YTk902gU\r\nYPJf/xSSy/fB9rVfxyGSYGXtyxiyXDSWc730I4bP1R8v97C6LDlyPWQYwoYe\r\nHPt43/ed7aDn9DBHT9V/F9chdtPTDCt+hWhDLSA8kg0QrxsZaQE2Ao3M+tRV\r\nyEcFSTF51A8Y3OYM6biQ/fehAgnM1+h1nlaOSrbL+rbms+KDOym1ZPwYKpMw\r\nrzEh6FdKvragLrlYLvh0h5UT9WMMyV819vyVgorHNevVEMD9fvB2XD3N570C\r\neYGCoc+7DH+xv4PbVhTrj09HjzGwmUEj+40mMtS24k4NT/nd9Qp/pGcvUcxI\r\n/BZSusN8clInFm/OiMPAbEJSMR/84VZib1k4U7S3Y0f22Bprr5J2RxS6c2YF\r\nAESSqw4NimkVDTOc5PY2DBpLkzorI8llWfCi/ZvABFc6jtApF3Cej0XzlZFX\r\nP/8Vsu8B71ZonxpRFBJxwTOCi6LxTx935VXSrOibK4yTfVpWveBL50SvaS6p\r\nF9m0b3+T+JWhIdE4iXF/9oJGn3fHugtODxvddsyzO3CyW+JXt+IW2WpXpLJi\r\nnSxESi6mUKW5FOGAalTanlce7bhbk/RQNW7DJgSwHm2OM1Aqy2Siez4K3QTJ\r\nrXet5UcHmOy+o7tQAyxzL0+Iovp5emw/HL8=\r\n=HMhh\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.634_1677975313842_0.6907828651619883" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.635": { + "name": "types-registry", + "version": "0.1.635", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9258878b8a6f059abf0f41799e12dc7f4f573667f4043b9cc00f04de4bf1c3d0", + "_id": "types-registry@0.1.635", + "dist": { + "integrity": "sha512-pdqjMnmWwWa2THS13txJr51bnzJD70IPczulkyW+yB0xecCuudwRyb3/654pmSXn2SULkkuHEpJL8fsK7rASqQ==", + "shasum": "c8df00496f4785a39692512b996169f28e2f2364", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.635.tgz", + "fileCount": 4, + "unpackedSize": 1602378, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDk7fJp9yKuv3EQXDIlVlwqbvK55QOWLWYqDdvjukKimAiEA2HDlfgN+r07byGiD72zHbhboK+kDaupLNlgHxzpW4+Q=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkDRnOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmos0g//b+DTcDlmhwdmsKP4MKConAAE/rU97dXQ5tfrTq++5dICEjKh\r\n1rgp+waL1fTHbJDlAbLsIA3oqz6cx57t1STHmtOatsjFtbSX5Cozl/dvqA9w\r\nlOWoDzk6IL4QSTv5v6nGuBSCyYYHUWvNz6ZC73qysto8lIAR1PlTy20YfbG/\r\noBALVG4Pfnkjx4ggElxdIc7iyLonoG6kZCDP/FpFOCG2wey3+VWFL7gCtu3j\r\niqrv3M+TsvzgFV4gJhdDlOoM1LHeth4UodxGeAvzUkCiWrsYyAGSRhRs+qgS\r\n5UIrQdv2uFCcqtZNy2+YtZryfqE9dOA5z46al/7xibmVg5uIv5US67YG/FUA\r\nMzvqhthDaVWYSBlTdFGHmzA7fwroBCEzFe0IvlKFdvEoBEW6jAnHOCBeW9pC\r\nNW2ncAd5qTJ/7HA2FG2ZsA0Y+G0WQADaySolcV1b4MpyO8LhOLLrokyEHeFV\r\nGozJG95UxXENK96Icb8UVM6m7znxAe90flzFupirScze6D+y4L4yOUKjh1QL\r\nyzp7cBv5SxPw5oqg23i+C3IjPNc4qwVF26yYhfem6VNi0fyG+jZUzV7IpJxd\r\nH4TQcZJ2caKpiE6HBCt8HafBxhCcuh+RmpdEOoMO43uDnyMudosuusM5kGO8\r\n0AxCibBTGRs9fDKfxWrOuwO1NVx7xWp7tEA=\r\n=Su1g\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.635_1678580174059_0.6723786891819414" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.636": { + "name": "types-registry", + "version": "0.1.636", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "23aa41e9ca7f1998c18abaa17c8747a59403e42654daf748aa4c7a612cd9919c", + "_id": "types-registry@0.1.636", + "dist": { + "integrity": "sha512-y42FN+eAjWARw7DNcigjjsMmh70lFLk5Ghb4AzZv4MymSuvqLMUjbz/iGz/xh6wSbSEKWkhxa57MHHJtxZ/Wnw==", + "shasum": "0b7e49d4b28aa219131a75ec3aa8b9cb74ab46ff", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.636.tgz", + "fileCount": 4, + "unpackedSize": 1545657, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIH+48b1BCjvTcg/GTVWHg1ebVlZazOZwdOJtB1xLYgndAiEA/rEPrGCGbEeBzwQmaWnT64D9DWH8i33RFob236YKYo0=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkFlQJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfjQ//VLTvpJGi5YziwOhO+tArF0PJiJP/wKR9RxXW+0qUmYGzwKZt\r\nyH/8PJQ5XZacbotKrdWXoxdHMcT8Uws5pyUMlGzGDoDrz+iSL3kz42craPQL\r\nopXslIp+oL72fxJXTeDIhoLjMK3xStnDo/ydA0DPjCq6LbhvgiTtkhSEKliE\r\nCcqqPHNO004o4jPV1sz0GmtuMABmaTN1dbKhho6RLD1xgz5d0VZb5HaLZBOx\r\nFG16UXaiSUjb7fzdAFacCv7bpN1MsXJ9H6Rs94qDsmJouFIcyrwI8O6Ypg/u\r\ncDDH1P5sSxM3IPGP6zgqWg6jTkbRb9qc7yheApB4g7y+f0UMYQeBg3ePu6VV\r\nuYfmyPEyvDquVLUPRV9/63FR9BjOL8qd8bnMCUk5LSU2RHicXKmxbhObSJfp\r\nPe848vZZKpCgufzZM+p2wdzM/PoIMlzLfIWmFzrit1LAUmQF0Y9HQJ4ODfas\r\nir8r7q79oV11q788wwpdqK1WLInZ7pkd1KWzdaFwzLRgheXHkaIjrblIF2QV\r\nwW+nxIIn30ZZiKZclqgTIu9qJBhI8h7I/9+6/gpm207QgLdMwl5J4QsZXqs8\r\nsRiwNoK9Km2/yag6DFIT5E9PlfE1ZGyWGakmXu9s5P+HtKgJq/waPuJf+mS4\r\nIednFibLnfhO+9oXafA4C5+wgNp1gCJnxrg=\r\n=ERgv\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.636_1679184904888_0.7017564059067116" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.637": { + "name": "types-registry", + "version": "0.1.637", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "1b1df45949968349292dac2d864869d68476923720615cf6936f89b7e5b650ee", + "_id": "types-registry@0.1.637", + "dist": { + "integrity": "sha512-FvzTGHqyowUB2YC6/FgWF9LipiDDF9JD3TE2++a6pN/7m4O0EhLodKzafKWt1CiY1jYvWNe7hr6m+SZ2i1i3Bg==", + "shasum": "38378f4a2b6648538cea0bb94e8ff21e8a70fdaa", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.637.tgz", + "fileCount": 4, + "unpackedSize": 1551150, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHn1f1urEtapRHdIFbOg6B4q9lpobaMVn3kfcEX6thB2AiBTvvlNjret6KDz+N53AbQgzrWeC1NL3h1n/I7+52Z2vA==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkH45XACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpYSQ//TL0EZGvEbbDQjuIBONHbXNUri+tC2DCVUA5/uCjk+p6lf4jB\r\nAsH4p68WBTksB1ybXyi/o2j+PWFRht49Dsr1LPo/64vymxbGpco997N958aw\r\nfZPlSc73cq78hJINyL1+wafV0kgO38iNOM7ekcV7LDJbCbBh+upO5krLkvpG\r\nzXQqa0U8WaCAojljWYpM8OWnp8uUTLcZVBW0SGi130CXbP/ibC+8L/SHWOjn\r\nRkDOlJYriY7FVFU29lsITUPhoui2/GR6FuZQDbNVDKgKwIAgn3kS1ZTAIA3B\r\nVx7k7ve5a9siOE2ZQE9loCOeraHWTg1NdHX14aKS/ZDdjXR3cN10Y60xtLBP\r\nZOR6uQSem9E9so2xqcLdu4on8cKacQ7TOXJLF2elsbBomk0JbjJzZB5Bjl64\r\nPIl4hNDg2+3kD2ZOBN000qDkwC6Whh7sLJpyivDUi0KubJpu2ruaMiP2pIaW\r\nlWb70VUwrTwyhQDu7vn3s2d9bBrL3kLaJpMFKXbo+H0AQLOspnrVzTeOkJle\r\nBJkuQCjYZ7/Gm1TWxikRg165QlIgHAmcvvmOMlUTbj5+kmMWEbJIGwCzS+jz\r\nTrkTIBsw4CYDpkYY3ct8qx0cmn+nCgWIq+GWRjOHu/LhaX+snJ9tFVSSdrWp\r\neeJBb5fCtysjr4+Xgqq6dKYhqbYZq5TbPcI=\r\n=w99z\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.637_1679789655626_0.7076890469269927" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.638": { + "name": "types-registry", + "version": "0.1.638", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e27d564d14d44c99fee6a6619ef7cbed4f9046bfbc228ad2ea00492a91bc28a1", + "_id": "types-registry@0.1.638", + "dist": { + "integrity": "sha512-cHWMX6inuhJCnlXXno0VYCDwCSzrelqw6e/AbGAyF0W/rPM50+7Yk6WDcTKbodOh0IechNfr6qcKoioOzSFAUA==", + "shasum": "ae6365773ad38b544acd64a80f3bfef1b209467d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.638.tgz", + "fileCount": 4, + "unpackedSize": 1553808, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCwKp7Y/YnuVCSfV6gVM7LwBCKuwEJ+yixjU32koHhZfwIhANtsvDExvCN+20romOCap0wOsssLEfCRKL2j/9pfZGQl" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkKMhEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqxgA//T8wqgkaugM/s24poBGFriDyPh9IJl3JyLle4/Vi2ayL6egzV\r\ngqm92iQaV8kQC1iInjoRSXVNjk9e8w7GLW9LC57Vw11aGr9rYXguA3fwV0Jo\r\nCDb3fT+hOLBEhMkuMaVUBEt/hOz8TuTopSuqf/ebHvUMuoV+N1sXoaYvwsXj\r\nfqqWAw/EhavRMbTknp1IM16qi/N6f2TTTAry6Yx902JGvp+OJEVAdAI2zClw\r\ndaRwqJmlzWd3kyDCfGUwvJoilhg4A8v/A8nil7QhO6DWrW4+YYnZ2H5avq5e\r\no3RPcxVzi6EmyDC8oZiOBja95UfYRpCOFJLVq9Qjy1jJ9hhgTxrFY+y+8QVT\r\nhzXH4OWFp6Q7+0gSb42JAI26feJFqdX4eTGCjwXyz5D/bn7ZoKosCEjD20uD\r\nN7rMzjphYZmXtQT9RYXR8eLJmsu8pEM3Hk3mQzjH5l/11TLGCE7O8BMAGzVL\r\nK36uvypg0trje4uUc+llxTn3UR8m+bmioAXDsEdKTmPVu9pZHWEMRNFSEuqo\r\njM0Zyow4Rxpw9nAC/G/AgpQABifU8EY7Ekfy+2NzoFuIhwy8Vl1Zjm6tVWZU\r\nYfnovuHNdPHWRaniIDlKin2ZAyXZwOI9kct88ba0IFrITcFHZhze/wml0SH1\r\nvn1h8F2CUa2tBq/o63Mm/ld3sX5MNYkS/DQ=\r\n=0Ile\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.638_1680394308225_0.5315098045791373" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.639": { + "name": "types-registry", + "version": "0.1.639", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "509eb5188770ffa3f49da02f95262c57890ef1aeebbf987757ddca5f90a84aa1", + "_id": "types-registry@0.1.639", + "dist": { + "integrity": "sha512-RxtDRPeMN5SAev+N1T9bWyzLiNML6JHivI0HuEgejXr6em8viBoTq6OZWW7eMAlxHlErByo9R/nK4OSTNeS8tQ==", + "shasum": "04ebb06fa9e10111299d38e37ce7195c762af6a4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.639.tgz", + "fileCount": 4, + "unpackedSize": 1554800, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICnUjqN4sQBx5L8HtGiHfdZFjsVkpCIgy7wIClqeUvNbAiEAgwo9cSYKUmbFGc9V0knMVh2J0SUX6NjS1CiqvKIt8KE=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkMgOdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmolzg/8DZpcB3pU6mueShpGUJ9I8Ymn1feYVFtxkgQFFZey20roVPSc\r\nGbUWxyVXjY4uD/3EVo7hwTK4SOD9neZeFac2kWvyEVOx1zsiV956+XKu9ioQ\r\nMdkvUnE11nEa4pUpsWXQ4ylqvRk5+mKrmVTVOEMSy0bB6R6lMyJ9O46ugqTx\r\nEd6LFuHi7i8NFTqvV2q5ibTw5EeyO+aUASHIPhrQidaqtZxpTLFLM8jN4BBn\r\nLoCj9Csx1PQ+X/S1vsO7AQYUXUuPmJvQp/DbufFTdgHHD66yGuMCMKJfiVnm\r\njdellqKTkk0n3zjSUpqUeRGoiIbhe60GQbF8kgbW7tCw2rW2s3Uz6TcPKc5Z\r\nQNNJKocv3z5CXGhMUQHribDEDX6LRmttFvzEcEAtqJAON0gvmTXrhHMiqnGV\r\nkR+GCbt+mIit+k7Zuo2BBUZSX012kBdansf3QPrgUTxMWLXIqeBwqvYkpkJs\r\n12cBrgguoMU6UvSdk3KyZaz6LXzjQi6DVD7wDbVeQu4BqfzXohJjRzPTKRqT\r\nXtom84uSGu+6kTcMWlRe+XXVknAy/9SncrWZNJ5PCRyNluz/VRVCkjRSSM/g\r\n4+qqzckfcNPA7CiMpecWaD7EyGACDKtcMMisgaqLLGCurzVJRuKEBAq8kNco\r\nDShp5HKpPyg6i+yyJsG9SevGlmf6p03aMIA=\r\n=2gPm\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.639_1680999324914_0.5505135361323856" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.640": { + "name": "types-registry", + "version": "0.1.640", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a37d2f15d216519805a779f8142c10fe397c11159cc24220d3d183abcc605429", + "_id": "types-registry@0.1.640", + "dist": { + "integrity": "sha512-B2VcmJdW/SdvMzIpmkBXD5/awogX28tgNr94PWafUgb4nFZyvpngCp97hfkz2RUy39byxcQL5T3TzTsBR2yoEA==", + "shasum": "cd11765875f69c444d2625b5ea1c1fe0abb34c2b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.640.tgz", + "fileCount": 4, + "unpackedSize": 1556670, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGqXrNlq//v+TKTAwIqJcLekILMT71EDD19V5k+L9p1KAiAHRpN4O6JdUft4iGU3vi8cLEg/t8KuESGWsuq+7o2GtQ==" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOz1GACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqTwxAAhvqfl0YtFI41rL2Di1XXgFvyvZwMzO0xz2riNQH/R7jjVlpl\r\n9VhPPTu0yNoUUx+gRXDxw3mT+1F2/1BOwfAxJHB4vBax/VOo5iwMtpiHnBuK\r\nZA57msZp5zgfW2NRZ2qoVbf2E622qQBn84Lc2dprz5NmhMYJiEaKe9Oy0J4Q\r\nLXhgnmkber1BBreLuV960Xq8Dkk0HcpEnuxslDo8U1GIunUkvT2tisSoj0ci\r\nffeNpf/kJz47Xth4pHG7KjRxcbnB1fBZA0+7p1ochmzr0cekyGem5S9mK4IA\r\nTRbk0v80Gd6VHAyHMk/z/mroFUfi/TvOeu2ecFiwMk39fTkDOxCkMNgOSlUw\r\n7d6V8NpGDJ2Hj7vj3hfcmWZOR8/SbDfcsmST+NhKsFDtgWVxJTrNPx4eYc/j\r\ngLUzetqs8jP4CEQExl5CrajYECt4FIV+kLb/rfJog5iE0I9kkw51kZysPnkE\r\nWIpNfXYDg28/0hlz9+8Cc5OE/sNjWa1tHl7GwyUUwTxE/ypR/7MVFP/bZgFB\r\nlHbF8oW2K7oemyNdLRt5mdFRjZ4Mcxe2gjvd6jtJUbNoMGwLm2l8i75EFMP1\r\nOK/TrO+/sujF+6857a56cF7dwVOlW+GLXl/gYJHCZGMV9xlxh50ZhrP086rx\r\nP21Etcm9h6WJCgYdfKX3hWVKx1fH4Zi0fQc=\r\n=0WWB\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.640_1681603909921_0.7715123268329311" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.641": { + "name": "types-registry", + "version": "0.1.641", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "dc659ef8097f894d54157bb267f551dc52db77ab57ae014475b2e297dce7adab", + "_id": "types-registry@0.1.641", + "dist": { + "integrity": "sha512-pqRNjtZlD+7MtTvvUfgfsFEhqQ2utw6GY7fJbW/2ivAuG5zAYjnWIskUirlhQl48CoDBDewZ6TjVB8z80hQeVA==", + "shasum": "7bca8c8d55370db1e39acf0088829a07332d1384", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.641.tgz", + "fileCount": 4, + "unpackedSize": 1562528, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDnt2UODfLm+1+gw/OTLUUdF6m6FUuMykmrpLcOl5ulIgIhAPhILbIr/eg6MOlXSLyqOn2rzK/uYfqAffUMW/eWKbQR" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkRHeyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrXMA/+LDxt4D9+0KFZEvvBynjc2oXL1Id/BqEu/a7r+RMpz6QaTsLi\r\nNzu+RjFvv1Bh34hEBjiyHvhk0K7FoQivtxzAuELwKXxRwF34cVRHfIupWbgA\r\nzNxyopbIyosI91/e1k6/mddshVVL6g9tD6Zd92vPWJQWaUWjCMBtX/zIeeGY\r\nCwFY5iwABF8TTglZRRJ8uYq8caQ73bxB2WwpVkhBWkngYviqcVCMZxTpG/9U\r\nb1PyPhfmoXODiBFzJ3Pk87yeCiGNVz62R3sYDEoXD4bgRcwCME71bmmD0183\r\nJD0pTh5oNPPU1BV9tZOBg+WkX4fcBMUm2cGg+ELgsDU6v6gJ1EFVM6QD/zN0\r\nDzpIhRw+pGXfLhI6U0BjifPp6HD9JiyYGvMaZe1ybPKxn9ynQRXWBDvE/eXV\r\nEVI9E2NfmHc81oRxCg6tvBTpNAyfqcFfRmN/Waml0owz6avGHoqszNUCtbIC\r\niWUZdx3OlkPMR3VO2IbXA0eNHNCJ35azA5ReunBj/s+4eE1E0cAR9BI4JPN5\r\n1PkZWP59wEiWWZ67tGI1n9vUr7CQsM7Nol3Bg/ikOCxjVFDebEGiTvPM3Dhr\r\nxHxY8nTfLvdV69X5CWRQA7g7Bq/BQ/1Kp6mcAHke2oIbRW79KpT/w2M9eoE7\r\nzdpF2FRAE2iETEKTJIcQ79Za/NhtFZGPolw=\r\n=kEDj\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.641_1682208689978_0.9159436020526057" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.642": { + "name": "types-registry", + "version": "0.1.642", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "33ebcccb4f5b6a48a62762724aa5de08b535fc39d0d41b24f8f2734fb935c53c", + "_id": "types-registry@0.1.642", + "dist": { + "integrity": "sha512-ETbrzQY5bcblu7YZPjVp9iHNZAYKzm2THYnKiM1k1bo5zvyR6LqE1cZWSt4VcuTjCfsCsiW3M2dyEQdpXpG4AQ==", + "shasum": "1db98357fb135f331ff6ff8319287ac159d30fa2", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.642.tgz", + "fileCount": 4, + "unpackedSize": 1567408, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDVG0PKk8n33js4X17hfKLElwvgvJKi0eT3fGurIHPK9AiEAt1rrgnkqNy4haL8JqkawMGcjaslOfqrbRwq5ivSdVG8=" + } + ], + "npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTbLvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpi7A//X22nPwUymo4Nms+2faUJaqNFLcI+uTqS3G0eT2J4TRzPUcQr\r\n2T7Xh18Xk9g7h63Gk05yEaudD1LwXfDN/qyFPPoQDI4EO0NI8HRtR/jTyYhL\r\nYZ7qoea7IhHfQTxcTeewDQ3J5D1R/12Oqvbm7XZe+hT4yJVmThseq6TrfHt3\r\nH8psW9qj0bZRhd6VBVPrx+R4cMsDAVBSm1YaawU2zFXZ07uAgXr7UR2y+Mb2\r\nz0VJNnQnx+7fxUE2UNp/UBD8s7IFrD5rhp6xYGKcOIsgfkyiSSUELa9JxUKe\r\nHY+6ujBM8McPTHoMpoMTMJ1ZCO/rZTR+DYMHH0fMPn3Nx5mNQmicQs/z/+vV\r\n+E1mV7dNQtiQTUONqVsH0BJgsEgexBS/kt0EKuCJwQDzRVObwXa2csnh5+1a\r\np99v6b9VUnfhAno5fli4/AUVaQIwZy7vXzXKAfswZGQiSqhGd3GeX6DF+cfc\r\nxaWrhK5HORfsnw+N+BjrbyK9yhpX2xf27Oeia0G0jSUpumQO8W9CBQhrjBEr\r\nkGH4dgZm0Ly6oeDC5jRD8HdgEK+9YMsv4mbNY1nRSD0ustoCBvhdGKA617NV\r\naFaDwkRVBmsyMlY6YCgT+UWZlAMYsHy/sUYd4ccESixu84y/lj8qDbwvSqZ8\r\nmn1Nw/oeILgbdHpclNlutv1jXTeZipJZR6w=\r\n=nbxc\r\n-----END PGP SIGNATURE-----\r\n" + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.642_1682813678818_0.7973711981157057" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.643": { + "name": "types-registry", + "version": "0.1.643", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "55f8a46777d6eea3c8a2af879952831f8c517bba56271d67b4cb5d7d09f1fce1", + "_id": "types-registry@0.1.643", + "dist": { + "integrity": "sha512-3BXRlq6rU7GxmdrpDSHE27ECCoFz8nBXT38aEQkyTlYX90m0W0K038NwgYdbsVgslyQXZcytN/LRNzS5szMPdw==", + "shasum": "144d107cc855315206e0e3a588ece729a8e8b710", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.643.tgz", + "fileCount": 4, + "unpackedSize": 1568795, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG/MHbDV7d1t8u2Qt4pbGJjnNsh5Z4tp0WWsvw8vTPzFAiB5KLsBAv7FuI+AxuZCbsCScLIu/w65GIHT0p1nV+5w+g==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.643_1683418496627_0.19211255309295483" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.644": { + "name": "types-registry", + "version": "0.1.644", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d9b8bec266535da7582b35a9dfc2b22c7e46989ac2b8b64facb4e43169611264", + "_id": "types-registry@0.1.644", + "dist": { + "integrity": "sha512-c22VCZ0OmZdKRYxamXI/Am8KbD0pTE9BNSijMxGxomNFziC027bqUSwWYzzye7uKKzSQgtN4hptLDnvVCTuaUA==", + "shasum": "c3ba1bae3ccd0064369ea8249362fe8f3bb6e1dc", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.644.tgz", + "fileCount": 4, + "unpackedSize": 1584613, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIGVfhS+NmQ2+EowJxsifQSWiccwPPpoRF/qW/qGaYQHoAiAz3+E+YPk6V1vYMVfbMGkvpWrdF9hi0/BSIyjNcSyG6g==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.644_1684023172024_0.6967754001043844" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.645": { + "name": "types-registry", + "version": "0.1.645", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "9c355dfac42d80c3dee5f82f214587aaacbc0f3a71adf747f8c3cbe645d20cba", + "_id": "types-registry@0.1.645", + "dist": { + "integrity": "sha512-FDmEteNmUApyGZshaiclLcOJ8g+GxnQZsPo57nV4k2VvJTWDzAbBO5XVVxb6qUg+cHmsM8TBSL6KOGWD+0nZjA==", + "shasum": "bab596775b4ce7855b5c914b5f218acfb096ff30", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.645.tgz", + "fileCount": 4, + "unpackedSize": 1585407, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEnVweOd0H+Obmi6KOJuT4GVBDLjd48AKw+atjrjgZghAiB4NmUB+WHF3UZuQ44wU7NE6ykLxcn89IRlv1jJEO6xSw==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.645_1684628106310_0.4815683912808806" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.646": { + "name": "types-registry", + "version": "0.1.646", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c88797b53b1e84b6da1149916441eca4437d4d263793408d492e7c841198b75c", + "_id": "types-registry@0.1.646", + "dist": { + "integrity": "sha512-P4rlCt2MastvdbKVO1xEhenqxQRv6xFQKvyDczSV1HyPSy2478CRZcqGhbdQc1xrvDO+3SedMcX2Sr2CdPiS0A==", + "shasum": "b51056dfcc9db7d0a3ff6f32b8f6ef0789de5d58", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.646.tgz", + "fileCount": 4, + "unpackedSize": 1599821, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCUiC7dOHmqMubIi7/IJjGoDH/T1oSKmS9ippIPA3r6nQIhAILS+DSkbjUYvvtQaAmW0a8asD/UunSO17fbNAsNgf1M" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.646_1685232986450_0.22972801882617278" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.647": { + "name": "types-registry", + "version": "0.1.647", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fbdd6d8176fe2cf537ffc5006f4416a6e0f2cc1d0c0cefa362d1d592c914a743", + "_id": "types-registry@0.1.647", + "dist": { + "integrity": "sha512-AFiKtmXa3AaC1dhnwnQFPF11D8YCTm130WQhq6uuBCsoDK8sNhVjoCkaoU116Z3aCSeI4dllRs9spa5RcBz02w==", + "shasum": "d3d8e05750321a99c67ce7a7a97c44d0d3dd61df", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.647.tgz", + "fileCount": 4, + "unpackedSize": 1597797, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQC8wHDcX4a5mt6YSBIYZUTyiEKZeuHECbPLe7By/k0VQgIhAJpDkuHWOke0zu9F+DUqS9zM4GtcQMnVd+PFRSmpdgfV" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.647_1685837580091_0.19416040245561095" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.648": { + "name": "types-registry", + "version": "0.1.648", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5da033ad533abfd6ea8339cf67537793f23e14944201ce7c362b0bf0b9111350", + "_id": "types-registry@0.1.648", + "dist": { + "integrity": "sha512-joy0WUfn9VRbCPJXukG4m3KjzbRDtOhLL/GzsIDTp1AixtDfl7b6GFG0U8KRVM7imeMreeg4qeViZP27PoP2hQ==", + "shasum": "2a37682209511fe761d109b962e67486968f372c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.648.tgz", + "fileCount": 4, + "unpackedSize": 1599523, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIFAEY+GqVCJqyZt9rJySFj8py9WZiZdwlA9mM48IDV48AiBHHRyXSiBEChCaq/OnaR2oAzMpD7Mxc5xvBOf4XVfC6w==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.648_1686442324947_0.11329865979082987" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.649": { + "name": "types-registry", + "version": "0.1.649", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a76ad6352f089142498f0cf42bd2bdefd3bd8e158e925ed128b532a0375761cb", + "_id": "types-registry@0.1.649", + "dist": { + "integrity": "sha512-UkXViIDCo+V6by+/d1PFDDxbGnyFD91GqqyusIQ3zYpshuxsU7Ibi/mDMQG1pBq2stiKC0Abkc7UjR2zB9ipWA==", + "shasum": "32c591cabc165cec71df0b52244e4ee6fa07eca9", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.649.tgz", + "fileCount": 4, + "unpackedSize": 1601278, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIE9hZ1KRa5/rpA+10bLlJK7veJsul6v639Z3TpG5nKXLAiBymz1w+bnfsPtvU6ORB8Vx2o7A48QhLdweaG6o+02aqA==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.649_1687047152480_0.3624619267203619" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.650": { + "name": "types-registry", + "version": "0.1.650", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "a405a69606854fde2bb76a75896b4df376731f411bd625bf87815ad27fd3314b", + "_id": "types-registry@0.1.650", + "dist": { + "integrity": "sha512-WwsoxJMbS3SD5A5KDuiYBCAWkZ8l2Mai1PMaPVW7UowB1GdrsIbCXDJSVXguBLNUsbBsfCAtyVXAp5J2Sf7wig==", + "shasum": "c6836c815b13745b8c1cba57f3577c680e3e9bcb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.650.tgz", + "fileCount": 4, + "unpackedSize": 1600768, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDj7AXRXvZptU8z3UNHaFVvn+m9WjuUkNcN1gkT3Hh33QIhANufmQEybGqoKGPPe77cuodiysn53uK+J92RSej+L32P" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.650_1687652247478_0.6550178084866254" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.651": { + "name": "types-registry", + "version": "0.1.651", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5cb1b6cc0fea7339aff2ba7a54200cb84372946a05dfe4d95e455c603ba5433a", + "_id": "types-registry@0.1.651", + "dist": { + "integrity": "sha512-1iaEMFZHktQpRcbKpDdJ3JjNZdxYvVJ+xgTE4kAy2k+DljyxVX/Qm/rBkJ1rvrn8cBREbiJf5p2KKapVSskjzg==", + "shasum": "57d1b39836034030c57d9c91fcf528ec48aadf6f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.651.tgz", + "fileCount": 4, + "unpackedSize": 1601361, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIEMiNcsv9YpkiphXieio4gm5V7mXb/E5MVn0pC0AX5WFAiBAbNyjsvMFvKw7Vl3SlwYwNUsSZlsOl826fNUOUtrxow==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.651_1688256911552_0.8022810203627264" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.652": { + "name": "types-registry", + "version": "0.1.652", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b2b95ea59c2747e7816c9476107107cc275514dd5a9895c9b8e1c95c8c4ed1db", + "_id": "types-registry@0.1.652", + "dist": { + "integrity": "sha512-KNUJ+SjKEVAdknMXADOK2V/EmvzcCkmA5NBE0C8K2fjcHvYzrFdi7at3uICrCWHhE8Bi+BRB64UXeII8btS10A==", + "shasum": "bc278241d8e6e40c49850df0d2a2de5cfd186cf1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.652.tgz", + "fileCount": 4, + "unpackedSize": 1604461, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIG8UvxYygtkWmzCIW2UzVAv7mlx05HDwx9mSrP74u3xeAiEAi7IP1UjJOpk6nP7uCRolKhARCQF0m3UuMPdvKi73ew0=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.652_1689466607818_0.4684302813168404" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.653": { + "name": "types-registry", + "version": "0.1.653", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "c9916e43df80f2d49c3a0754fb8acd4e82ae51c19ee68eaaf14d23e1c30f27b5", + "_id": "types-registry@0.1.653", + "dist": { + "integrity": "sha512-F9X3b0PHC+rORMH8wMrBuhik2+PdFetrksORAeEfRnrVxGK56q768jTkkcP9VMrEHBF42s6ziJOUW4JXo8cfAQ==", + "shasum": "e8203a01aa9d815c6b5de6e79bc35193166cf0da", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.653.tgz", + "fileCount": 4, + "unpackedSize": 1604517, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEZo0ZlbgzVKS2SAqFZe+HGIcbdCts2VlV5gAgigEZXnAiEAhuJoOKSc7WO/5TC/F8oMsD2MRHTndBG18u+EG/VkNxQ=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.653_1690071361267_0.9028196686836409" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.654": { + "name": "types-registry", + "version": "0.1.654", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "8f55bbd9171b553759af148df4c2d0ef5b3bcd51297b0c5d2c835bbc89c322e4", + "_id": "types-registry@0.1.654", + "dist": { + "integrity": "sha512-VPUPAQ6EjJ+CUwY2uBrlg+jurIBh88q0b6k380U8jYyX0fmiMKYZ2qmiKsa91Wrr9La0F7lF/k2+YwU7xoP1Yg==", + "shasum": "ecc68e19fed0253f5aeabfe66734c1f2b0b33429", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.654.tgz", + "fileCount": 4, + "unpackedSize": 1606086, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCAXUhY/RCB7LH6lVix6ILIISyIOtZHdbDQv2ezn9PHywIgQ69f5vauQVBVgsz2dtxIQ6AaRQ3lqNDKabo93O/El98=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.654_1690676103407_0.15696856901004086" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.655": { + "name": "types-registry", + "version": "0.1.655", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "dc7192fb9cd28cde51d04a6ef070a6c1905ad394c769444e3f9c761bc193679f", + "_id": "types-registry@0.1.655", + "dist": { + "integrity": "sha512-j0uhGO+4Sn+9ILj9o0H+/vwi2NOIJRvT55Cx+gSGYy2FhjN221LPP1o05Y3pVPvDjCge4bngaYQCstYBUQCCew==", + "shasum": "555e6136a53c736e2ddca9fd097f4c052ab6c80d", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.655.tgz", + "fileCount": 4, + "unpackedSize": 1607696, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIDl6YQRhpvf6E4DmUPfv7NJWYlaVaFiA4eyTm/IS3az/AiEAtopb2HcD+fy08WUg54V0Y3Aj3pZROSao4k40h+VP3Xs=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "ncsander@indiana.edu" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.655_1691280922894_0.3852002310042628" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.656": { + "name": "types-registry", + "version": "0.1.656", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3e8494ced91a62d1d25b87db30a53c49a05962f1b7b3d29b3bfb93329e6378ff", + "_id": "types-registry@0.1.656", + "dist": { + "integrity": "sha512-2BjD7j40cgeZX0hed/AHID444qdbs7k00lh4DFrTkQVlKi4HNNEpTKFfBCbrV2dwYMu4vn9/arombWBmaVQueg==", + "shasum": "5d026b6dde40e98deba167f4dfbb8f72d9a290ff", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.656.tgz", + "fileCount": 4, + "unpackedSize": 1608821, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD220k2HLtmJ9L8/YvvnYgTobjylARqZ/8R3u0ZVkas5QIhALskDOjXHCSA5/DZ+LgXvfR81gdiX6kDpTiocC65qw4c" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.656_1691885721465_0.5945364193073681" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.657": { + "name": "types-registry", + "version": "0.1.657", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "bc26fa2be394e107e423ddb7a68c7af4bad67789d124890dea1d7791c4b8dadc", + "_id": "types-registry@0.1.657", + "dist": { + "integrity": "sha512-qCcXVafBHIFPj5wDKCuWwTgocXxkHgshdQjrC2DhplG+u8e9rnpyfNaoNjNuGt6nMUbPvGBfAOCEOosxer4hgA==", + "shasum": "7b8452bf56d206a2ebb29d3944ce35b7d8eb56ae", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.657.tgz", + "fileCount": 4, + "unpackedSize": 1608385, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG/1sVYA0SkxWsf8v6hX8CJT0q3ifn1n7olpuhM9OFBKAiBq8yPVHGSBdK1NIbkGcCr3sgV97yrPedoBq07qI1XXDQ==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.657_1692490483003_0.7230389527372934" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.658": { + "name": "types-registry", + "version": "0.1.658", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ef55c6895414c50cf3355497aacdb562aa62e5834ee1e2f539e4c0e75af8a812", + "_id": "types-registry@0.1.658", + "dist": { + "integrity": "sha512-BizewDy1MZ7dONMTE43yw5NmQsiJIF1XjivaIAKa74eQgxpIZXgzMX9GawuGbz8RoVO5u4CtYUSXBhjrAKLf4g==", + "shasum": "c21b22fb262d7be4fd1affbfb6dd88ca276c94e7", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.658.tgz", + "fileCount": 4, + "unpackedSize": 1621225, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQD3GGjryz8CcmGna9/yuWfD9uewpvIPasidRDiiBXbqmwIhAMfLJvlF1ZVUtKGyraFQKVD8BOYCF0mFr3v+kqgoazLM" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.658_1693095277803_0.4171799712855335" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.659": { + "name": "types-registry", + "version": "0.1.659", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d660a52c703fa985dfd185575ec4bfbb61a188ac7360982b7906935d69112077", + "_id": "types-registry@0.1.659", + "dist": { + "integrity": "sha512-aMKdZHVGhALzJBrNdLyVyhsYx3Ioeo25Anr6bHyxQkFMiRQQY+C8XxyNWJI0xbLZ2P4Yh3DMVkAM95DUkIBA0w==", + "shasum": "351a1a59353d280000a64426619156d281c8493c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.659.tgz", + "fileCount": 4, + "unpackedSize": 1676372, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIH0+7iq/QN+sdTgEifMiUxx2MZ9nBdpFWuu69EOTWJzdAiEAl2+vA+RzhvIEAZp7cP77fepka9p+7XKKhnmYG/76EPw=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.659_1693700064629_0.772195191145745" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.660": { + "name": "types-registry", + "version": "0.1.660", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e22d500b701ccf83d4868c4db6ad0831395e741253a119001ff783b4eb09358c", + "_id": "types-registry@0.1.660", + "dist": { + "integrity": "sha512-Ec8rwuwBKGY3htbew6z70KeT6V0D1H/dCF20qayFpqj97hXBfYGyWg1h4cO1aAS2Ii+uUS1dxv8fUbNnyKReZQ==", + "shasum": "dcac68eeb2bc99cff2fe818b5b06be2a5984dbdd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.660.tgz", + "fileCount": 4, + "unpackedSize": 1733507, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCnfyEJaS1q1HIdq5fUomkD04/YqGtJthngdjFz4tfwhwIgZVJwYTQN7VDCq+jcq6uq6z3iOf3bdL2mdzx0kaJpJGc=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.660_1694304918120_0.6749558513455238" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.661": { + "name": "types-registry", + "version": "0.1.661", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5824c31045619b55e8743e10fc7fd1e35120c903e28d02430bf237765d28cbc7", + "_id": "types-registry@0.1.661", + "dist": { + "integrity": "sha512-UzXv3Cb8v+Zw/eI+0M2p/gKsRh8G8pwFI/Dbyf6ZWZMllGLAb96Q1Gb/WoQkDOQUT11c9tVVuL0lO1x5NIxsiw==", + "shasum": "0ccee9350394bd5c01bc27de011ae9076bb33b3c", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.661.tgz", + "fileCount": 4, + "unpackedSize": 1895502, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHopGLuGQDSzbeXZoV7Xg0Z/iq3pHG6vfuHtY163hpgYAiBBwGAIGBRtrorAoE5TDLcjiiMZ964AvdrAgAwHSyTkVg==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.661_1694910846322_0.6651968506085582" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.662": { + "name": "types-registry", + "version": "0.1.662", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "ca0f7125e2e1d50cf2d368ac03502026d885fe5066cc4c18d89c58a70f6d6cc0", + "_id": "types-registry@0.1.662", + "dist": { + "integrity": "sha512-vTVVk85QhvORVuH4shNIBZNFjaijSVANgv0q+f5CkK6uX0MmdpdSGNY2xgPKUZBhrTM3qzArHg//FM1tVMrltA==", + "shasum": "99c63b2f8f05cb46118fed70b8a30d649fdf7ff4", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.662.tgz", + "fileCount": 4, + "unpackedSize": 2065910, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDqFNnw1oSLgBL1BOdrlhvFSvBQ31gtJ9pSrIkEy3lItgIgE8YrX2hKr+xoLlu+6K5KSv8p+ini23jCrsyTZN3ToOo=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.662_1695515048733_0.26760220711088323" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.663": { + "name": "types-registry", + "version": "0.1.663", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "44dc10e8a7d32f6ebd200e5bc3d1a6d2e06b616cc51fc76dcb8be0c8b8a1c57d", + "_id": "types-registry@0.1.663", + "dist": { + "integrity": "sha512-Lt9MM5ToagnmecLAMAJXTj6d/WBT3miRnQ9lGSmR9if4XVqd6WnO1OgMI+CCsDLYjTmOBlTcysZSCXVTNo6T/Q==", + "shasum": "a3f9d2d971bccf1ba6a7b40656f6f66e7c0cb9cd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.663.tgz", + "fileCount": 4, + "unpackedSize": 2403504, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIFAtsEtPRX5If2ogYwKrUfnB6+2vnO9hLrLG9bwIbEaSAiEAqKUlO//cJ6PMEmQ+Tu4wfC/EjJE5ySwqXSfZyvVRBqM=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.663_1696119803398_0.48172113801990357" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.664": { + "name": "types-registry", + "version": "0.1.664", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "182d8325903dac698c63300da141b27091bf8efd9dc173ed618cf624428907b5", + "_id": "types-registry@0.1.664", + "dist": { + "integrity": "sha512-YyuB/AbLi20YDI3QPU7q/3jgYcbRtisOduYSSwn9N6/M1UFTs+2DpMM5pJzfFDYD7u16pBK9O4GxwDSIKC9/rQ==", + "shasum": "8305d3bccff59764030253ee5c1849be3efc3eea", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.664.tgz", + "fileCount": 4, + "unpackedSize": 2402686, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDvAOXcaDm6GRAWuR1dALhWA6Ia8yQhcKB9j5LmXe2PIQIhAKFY8EYTd++ner40ZPSIG8znOOR36IGm6XLqlDMJUPaR" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.664_1696724713915_0.35947690452429804" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.665": { + "name": "types-registry", + "version": "0.1.665", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e5988ab9b0b5e30874be541ab3d245a25bedecacc2a11ba7a0de9bfeb4059049", + "_id": "types-registry@0.1.665", + "dist": { + "integrity": "sha512-+wpbd+gNRNaHeYdJESWL0dh0SbjitfegVUCpLavYUJ0NEc149r3+NYZz2Wv2ttB+80ZJXjLpLXKBNB/E87wyyA==", + "shasum": "5fc359893f553437de8bf4689081a6ab25fb04c8", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.665.tgz", + "fileCount": 4, + "unpackedSize": 2426640, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDi9KnhGqVcxGA4fFBrC+QFb75Q8kfVrNJPfN4K0efu1wIgUl62KQ3HmPcSQcofpSC0LfbduJk7qaGpmAN7SQNsuOA=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.665_1697329506139_0.9320810316841412" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.666": { + "name": "types-registry", + "version": "0.1.666", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "22e84057cac0614a520e6fac00c964996aacf5b4e3284c0a791b2899b68e3a08", + "_id": "types-registry@0.1.666", + "dist": { + "integrity": "sha512-40LMGsCS/0zVwlCcq9RTOPCK2/pxYYHkwnzVFSGH4wObUzuhf99t22TV02NwNzA+kL60ughZT3asvfUmtgVyPA==", + "shasum": "77ee934e34b5bad64551816c7469ff390aee31e0", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.666.tgz", + "fileCount": 4, + "unpackedSize": 2819850, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDyTw5BvNqQn+AY27E38izXbNlsCAVqkcHx4T7UmoV1igIhANLVIQf9I8yST1CiAVpHfG9u2cQ16bzpMlNHLy5Nqz+o" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.666_1697934319387_0.3112134291357267" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.667": { + "name": "types-registry", + "version": "0.1.667", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f74bf6118a4a04e0a4fd2b2217f7281565d708bc427f756ae15ddab513a29a40", + "_id": "types-registry@0.1.667", + "dist": { + "integrity": "sha512-lFqdV6cavQ3nS2UzRw2HNxhG2qbVmTkQhZppxKoY4iRp+2R5k8CSbxNq32bcOD24HA3j2d5MdvwRrLc9x/u6Ew==", + "shasum": "1fcbd593b10a35ed35c9665730b5c51be8f44a57", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.667.tgz", + "fileCount": 4, + "unpackedSize": 2818992, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCPQfH8+QujYTEHDJ0j1AQF0wo7s06Kqt6LXv87pE56uwIhAKoGyj17OeGy25vwzgmV7xvG5kAbh65p/xSeK/Ipz/og" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.667_1698273214318_0.37826473577337016" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.668": { + "name": "types-registry", + "version": "0.1.668", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "d721559e47826f025a7e1774ac4501d51c249941aaac50d4d48f61ed5f6b6f6d", + "_id": "types-registry@0.1.668", + "dist": { + "integrity": "sha512-3vw7/TPEKbtsNws/0BLkDdj0Q9KCBjcH7RqK93Ferll2ymXqnbxtMjfauoKnlKa3zzQIBup+C/KQtBVdtazQrw==", + "shasum": "804d7f804a3ed01968be4eafd2e23eda98d6d5f1", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.668.tgz", + "fileCount": 4, + "unpackedSize": 2867837, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIGAXwdpBA3Vwv0bCFYXC/kt6Nj9mxu8aSYlRkNkT8WzQAiEAwKAUa+7UZ6dVILvf1me6sJXrcR6GeRX25emN3y073uw=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.668_1698339351157_0.9466358865168198" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.669": { + "name": "types-registry", + "version": "0.1.669", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "390bb83231dfa7cb624c84aacc6381a7c64368c258d200f7a34bed14fa5cc846", + "_id": "types-registry@0.1.669", + "dist": { + "integrity": "sha512-4WUKdllExuW7O31xehiLqG/orxdKMHyZSLQAqj4EZevvxNZBhIJ7D9ggkr4daT+rLXdDdAsh3dDrq7AypcifkQ==", + "shasum": "f0ae77325634c55c964b6395760f655a2b620b01", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.669.tgz", + "fileCount": 4, + "unpackedSize": 2867837, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIDb0f3JCOmWHPNiExDH+bkc2h3FAw+HFmR5per2saQIGAiAfWSRvQyNycsApZeuoZ7JTXiBMfJPm2Nrzgpdrp+klpw==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.669_1698538980766_0.03027294729498209" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.670": { + "name": "types-registry", + "version": "0.1.670", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "183595c9a2fb12db96599da452180f4148e25a9943ab92c581c46d34a2b3b2f5", + "_id": "types-registry@0.1.670", + "dist": { + "integrity": "sha512-oWv0FeKlUc3vzvDxlCx+XrPDwzZa5dyJd6EwWqOcfaRfrgJkFC2zO68P3NtNM3OQjCXKw+ceYX30Bc6Etcas8A==", + "shasum": "fb1460b3fdc64a5baa41f5af276591e94f04c85b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.670.tgz", + "fileCount": 4, + "unpackedSize": 2867578, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDz+ftUiJcK0/nzL3cjHaD7ym6cCK0+rhcoB0NgeYMdygIhAOkHV39jPqEu2DrcdWw83QJtJvHbq+BZXFnJgu0zIWhE" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.670_1699748593915_0.3256416427304134" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.671": { + "name": "types-registry", + "version": "0.1.671", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "54550fd9be96e9adcd00462a954ab5f8113af5e4ed60eda74b160ac2c1d054cf", + "_id": "types-registry@0.1.671", + "dist": { + "integrity": "sha512-JAFn7z/xXbs8geyZSpmt3nLVO60DvzzRiUJzbCVZEjBYe/sMMFYkKccU8oFVf/27habo2KlpH8ZAxAcYD9QyEQ==", + "shasum": "6ff2bb888836eec94dda7b1a592f81a94efbed2b", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.671.tgz", + "fileCount": 4, + "unpackedSize": 2867697, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQDaWV5HSt7KwW4BNQpVh7pYxG4K9PptKHDf411glvyNVQIgIZyWFazBJTWfyPYdt1yVektfvzDihMAKwgqSe08R0v0=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.671_1700353182296_0.16084416158568304" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.672": { + "name": "types-registry", + "version": "0.1.672", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "13bd21b31c65398cb4fe1d5fdb97f1a9f0dc8c80623471d04348cde6aec12b31", + "_id": "types-registry@0.1.672", + "dist": { + "integrity": "sha512-eVqFoL+u4kJeS1zAg4Mn+ZznWT4gUNW9TjsdHjom5msz2Is5MhhcfkCTfMyvDXC/pH663+kDtLWujsO1JVMwwQ==", + "shasum": "e00c44a28a8037a12ab4a9dd2aec3d2f4f5e6dbb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.672.tgz", + "fileCount": 4, + "unpackedSize": 2867669, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIHVCVmR1jbIuHtk1Id4gMGkvN/BQSMV4BHsOMkSITifjAiEA2Gje984EBg5PHloSr9VgZeH6c0ULcM3JfwE1yh4uqzA=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.672_1700958067284_0.7114380543443934" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.673": { + "name": "types-registry", + "version": "0.1.673", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "5fd4d93797f0622e8fbefcb34dd873ccc638404b8fd7845a8faade70f67758b0", + "_id": "types-registry@0.1.673", + "dist": { + "integrity": "sha512-4rSIfxfrp3t/hYnCB79+R4xW6Xyq+oQJbRqBnPh+eSIg2w8jkQCrl4tM6VhxCAs+PuYuOWo6U1fWFGlLc/40zw==", + "shasum": "8cd7bc1345e8151e7ceccd997353b4d981b8159f", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.673.tgz", + "fileCount": 4, + "unpackedSize": 2868686, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHVKHpU3N4Hxh2WJQQsDUQxi8D/BKbNGUohWwO9jCEMuAiBtPA+tDHiyjzC4A358p7U1dPYuiFtw6QAHlg4qJYpCZw==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.673_1701562909634_0.0779932225952431" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.674": { + "name": "types-registry", + "version": "0.1.674", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "0774a3b7c351df13d7d4d0f30dd2f228163293f1a0eba6e1c28af7aac58cad8f", + "_id": "types-registry@0.1.674", + "dist": { + "integrity": "sha512-Jz3WFc7M4W265OERqiSjaVdXEyJEQnAKSih+ABlo78iL+UVSST1AETg4G3Nf7BVjFEgxVHFKwlUtOOvzX2/C8g==", + "shasum": "3b2c2889035c324ae5ca57d81a87bc03336b632a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.674.tgz", + "fileCount": 4, + "unpackedSize": 2871616, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDT4jSuAnpok1PeTUX0NgIR1ZSDkm1DEcnBXwzSP9oZ8AIhAMNOtdQ4kLDHcNa/5uIdu1JZyqvIQJlkjmCxH6VX7oHV" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.674_1702167704690_0.5622310537076576" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.675": { + "name": "types-registry", + "version": "0.1.675", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "3e18f082961d056ecdaf1918219186156f1cd6054966f8f813d05c8f5fda38d9", + "_id": "types-registry@0.1.675", + "dist": { + "integrity": "sha512-VfAcOzfm6KWCWXSnlA3PjSEwbZoz3WukbjQDmkjuMgphSkQHanLougVWH5Tz4JLXQ3DpIbes+0SRnXf6MM4eqQ==", + "shasum": "e5797fbbe100071c5d9603f26cfe7414dc6c1ff3", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.675.tgz", + "fileCount": 4, + "unpackedSize": 2872532, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQDjF2CRYO8TVt0z0IoO6CFRvaPzNJnIR6IKEuJ3V7SWMgIhAJYpXP7iDsxUg7kM+LhgPM4M/q6kZpXdypUrmMQQGg+s" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.675_1702772427603_0.19101945782551755" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.676": { + "name": "types-registry", + "version": "0.1.676", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "fcfe6f8d2d163920037027cb5e7c80410500c7f2e5747c1897ccd53f975a3337", + "_id": "types-registry@0.1.676", + "dist": { + "integrity": "sha512-Yn8nOQsT1bxHG1/gUAk4RrGPUkQWsLfsfiY65KdfDfenXVgeskSUkoUZzAEHyh5P4ICmCHzUGUtAfqbBuqg5JA==", + "shasum": "aefc1170b2d55316ac69114ca72ccd87deb57144", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.676.tgz", + "fileCount": 4, + "unpackedSize": 2873001, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIErRDBA2KW6c1Xfr7SL/A9/LrAnGjBCUhDqCPMXwwbArAiEAizsWSH7OxswdWXNIGkYBuIwKWPKfexLpgkPcP67e2mE=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.676_1703377531046_0.48661059769696524" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.677": { + "name": "types-registry", + "version": "0.1.677", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "4dad696e694f3a0ca1a217ec03b5757a0fd3b912885ca378877487bd1e2d7350", + "_id": "types-registry@0.1.677", + "dist": { + "integrity": "sha512-i7PXe/06LN7WwNJh3zxjcoK0EjR9am71ELc8ACKlN2dGYbaPrv7WaIqsY80mljXddXf4EzOuLvzBDAA9SfKW5A==", + "shasum": "64e0037aafcc18aac89529b07767f183ea566977", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.677.tgz", + "fileCount": 4, + "unpackedSize": 2873742, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIEYujRMXB0r90YDEHGlxFQz5Z+HnWWneWtDIfh3ZUwNXAiEArM5r3LV3Q37MAlXoDLO4vo0HeYIGKXmsUHRD3cEmaUE=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.677_1703982111761_0.42907855101521064" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.678": { + "name": "types-registry", + "version": "0.1.678", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "b28f8eb94e55741f2f0b1a9a355783bcf0c868d9b018890845feed791964479b", + "_id": "types-registry@0.1.678", + "dist": { + "integrity": "sha512-NRoGkYiuTkDsl5NoizaGSQNNYP2ldmBkXA2ZqycNFXNp4zOUrd363QbWDvNy8mdgn7AyJTn8PghmB0QBhntCYw==", + "shasum": "78529a5a63bf3b0f4590b37048aad006b6fb7989", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.678.tgz", + "fileCount": 4, + "unpackedSize": 2874399, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEYCIQCqYlOi8SzfH3TE1go7MbtxBfZ4X6LfO7sCgUwCi8G25AIhAMC7lOcrdDXpR+ry+ux27fcI8GnSYVnFBqx8zivNxM7e" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.678_1704586810542_0.6971875856715677" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.679": { + "name": "types-registry", + "version": "0.1.679", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "e3a80a3cf31948bef7bea75e08c8509684dd627e68ae6b66e0e8df105b72a2ca", + "_id": "types-registry@0.1.679", + "dist": { + "integrity": "sha512-XQ5kE50Pi7aiyJ45lJ2j2ZhF+1SP0luJ/8vDHnnB4fNKcoGd+VxylnfSW/NAXN2NvO5qUyGbPt/UdsDEyvzVkw==", + "shasum": "4a6e0bc84eb0524ede0ce9fc8112ef0e166389a5", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.679.tgz", + "fileCount": 4, + "unpackedSize": 2874209, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQCwHHDbaEerEixEVezU0WJmaCaIdW4hOkmLTy9D3al30wIgK4A5vu3TQ1LUNPIyKwm8hll/tkObnBSMPUMHfxbGOPo=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.679_1705191615002_0.22152327455473886" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.680": { + "name": "types-registry", + "version": "0.1.680", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "184edfccc24199c7f65b0cc886bb23e7e1923d38421c788ce80d859cbff8b213", + "_id": "types-registry@0.1.680", + "dist": { + "integrity": "sha512-8tNKp07GwbdHfSYAAPaBIW3nBtalQct55QSSrt4xT5Oh7OAbZGXmRhj9phmD1XXtre5vjp676zJwD0EqyaCUxQ==", + "shasum": "ca8ed41cdba36f5d3b47383a1c0f489f922a4aeb", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.680.tgz", + "fileCount": 4, + "unpackedSize": 2875216, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCIQD94M0xIT91DY4EOQqp/P0+aWGNzfUqUh2MKO+byOh8iQIgH5QtiYqElBIVe0B+bhF39JILcrpDUaTWIkENYk8KkI4=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.680_1705796407701_0.3281097018526784" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.681": { + "name": "types-registry", + "version": "0.1.681", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "30397884eecfbd35de0b0901457155dc592da200ea2e28aa43c51b9e067cbbcb", + "_id": "types-registry@0.1.681", + "dist": { + "integrity": "sha512-bdoqazMMaAbM+7WWofYFTIu6vAawJYbEFeTifqxZLZaB+cPDeWdYtMiIb7ebUsGRMkaCuXS+llj3uHSHYRp7Ng==", + "shasum": "1cc3bd195d58e288b5ae81ab028d248764cbeb1a", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.681.tgz", + "fileCount": 4, + "unpackedSize": 2875871, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEUCICvwg5ph3BRsVQXNddwpDS6SPaj3SMQmUTXywpyz0EfdAiEA2AJ2f6t4jkDxyEOFKKTt4N+hV0YmcRB3H8a+kfXfZuU=" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.681_1706401147717_0.487952826414805" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.682": { + "name": "types-registry", + "version": "0.1.682", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "f20ef752f6fc4f5d245c4086aa82adefa7ffdce40e3a0a7b321bcf865c33c3bb", + "_id": "types-registry@0.1.682", + "dist": { + "integrity": "sha512-D01VRFJ0OZzCa55z+FLFgdLYPVvPOpIBlm9v3uST942q0AdQn24eWLlV/mm2AL4YUwiA0VwyMJvZfrpPrRH7iw==", + "shasum": "1141b72fa59bc0e7fc4cb85db3f0ed38d1dee373", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.682.tgz", + "fileCount": 4, + "unpackedSize": 2880147, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIH/DQKtfc7uWzhaZSJbocuvW4JURqWK/T1ykK8jWkStCAiA8xGADydrC7+9tX/8OOv8jBJ1JszbxM4vd9cfdJsNAzQ==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.682_1707006084183_0.918909019740082" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.683": { + "name": "types-registry", + "version": "0.1.683", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "2ffb8c89765a4d5b3d82118a168311a85e8b46360e9b73f0a39dbf697c57183a", + "_id": "types-registry@0.1.683", + "dist": { + "integrity": "sha512-XcbiXpnMOE7z1iomyKg7jH8XLHSVUsIiJIrZZDJqALOsspsqpmTd7UAkurgELZRuhA4lCTe2SdfhQbIYgBTpFw==", + "shasum": "2235b3c5f80bfd771bc3b026ba2b1a40f9fd15ea", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.683.tgz", + "fileCount": 4, + "unpackedSize": 2880750, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIG6Ozq9Q5/+EQ2dXDWAPRRACT8QZ1PXl2/ORYgznwfgjAiBHCAw5Eh7Nmq+L3hYu8o4XyaKsLi77YQdmwkpkafNksg==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.683_1707610964051_0.8825862768620945" + }, + "_hasShrinkwrap": false, + "contributors": [] + }, + "0.1.684": { + "name": "types-registry", + "version": "0.1.684", + "description": "A registry of TypeScript declaration file packages published within the @types scope.", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/DefinitelyTyped-tools.git", + "directory": "packages/publisher" + }, + "keywords": [ + "TypeScript", + "declaration", + "files", + "types", + "packages" + ], + "author": "Microsoft Corp.", + "license": "MIT", + "typesPublisherContentHash": "778261fdb6ff01765ce2e700a234232d9f1fe2a19a84fe4b80c7e61206575cc6", + "_id": "types-registry@0.1.684", + "dist": { + "integrity": "sha512-B6v+g9M+7IJSc1w2THOmTuRKvd/ACxZTGXM18E8MzpHWx1mGUvGGT+RXsSnxNpyqtbjWLeXj8uyyu/MxVOS3xw==", + "shasum": "e75966f99e232b8bd09d8fae02fa247ce0f099cd", + "tarball": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.684.tgz", + "fileCount": 4, + "unpackedSize": 2881088, + "signatures": [ + { + "keyid": "SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA", + "sig": "MEQCIHl0n0ugZkynyaDaNDzBveKwqkBCc05FUtRDlmd2CXbQAiBG59c0667COJ4J3hNB2jBt3HiWUDSfE1M1/5TxUP0B3w==" + } + ] + }, + "_npmUser": { + "name": "types", + "email": "ts-npm-types@microsoft.com" + }, + "directories": {}, + "maintainers": [ + { + "name": "typescript-bot", + "email": "typescript@microsoft.com" + }, + { + "name": "weswigham", + "email": "wwigham@gmail.com" + }, + { + "name": "sanders_n", + "email": "nathan@shively-sanders.com" + }, + { + "name": "andrewbranch", + "email": "andrew@wheream.io" + }, + { + "name": "minestarks", + "email": "mineyalc@microsoft.com" + }, + { + "name": "rbuckton", + "email": "rbuckton@chronicles.org" + }, + { + "name": "sheetalkamat", + "email": "shkamat@microsoft.com" + }, + { + "name": "typescript-deploys", + "email": "typescript-design@microsoft.com" + }, + { + "name": "types", + "email": "ts-npm-types@microsoft.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/types-registry_0.1.684_1708215624862_0.9844067240700722" + }, + "_hasShrinkwrap": false, + "contributors": [] + } + }, + "time": { + "modified": "2024-02-18T00:21:28.679Z", + "created": "2016-11-03T00:58:58.960Z", + "0.1.0": "2016-11-03T00:58:58.960Z", + "0.1.1": "2016-11-03T17:47:54.885Z", + "0.1.2": "2016-11-03T18:13:14.070Z", + "0.1.3": "2016-11-10T13:50:36.875Z", + "0.1.4": "2016-11-14T19:37:54.817Z", + "0.1.5": "2016-11-14T21:10:06.615Z", + "0.1.6": "2016-11-15T14:56:19.129Z", + "0.1.7": "2016-11-15T19:09:01.554Z", + "0.1.8": "2016-11-15T20:15:41.490Z", + "0.1.9": "2016-11-15T21:05:16.227Z", + "0.1.10": "2016-11-16T02:03:11.834Z", + "0.1.11": "2016-11-16T16:20:17.938Z", + "0.1.12": "2016-11-16T19:26:17.297Z", + "0.1.13": "2016-11-17T19:01:46.105Z", + "0.1.14": "2016-11-17T21:47:09.438Z", + "0.1.15": "2016-11-17T22:08:53.442Z", + "0.1.16": "2016-11-18T17:50:43.197Z", + "0.1.17": "2016-11-18T21:37:40.571Z", + "0.1.18": "2016-11-21T14:48:23.165Z", + "0.1.19": "2016-11-21T14:56:22.843Z", + "0.1.20": "2016-11-21T16:49:48.286Z", + "0.1.21": "2016-11-21T18:00:44.493Z", + "0.1.22": "2016-11-22T02:26:35.951Z", + "0.1.23": "2016-11-22T21:01:42.382Z", + "0.1.24": "2016-11-22T21:10:58.449Z", + "0.1.25": "2016-11-22T21:29:29.613Z", + "0.1.26": "2016-11-22T22:00:27.815Z", + "0.1.27": "2016-11-22T23:39:04.675Z", + "0.1.28": "2016-11-23T18:29:54.280Z", + "0.1.29": "2016-11-23T20:53:36.321Z", + "0.1.30": "2016-11-23T20:56:17.477Z", + "0.1.31": "2016-11-28T18:04:58.445Z", + "0.1.32": "2016-11-28T18:30:19.100Z", + "0.1.33": "2016-11-29T19:02:46.979Z", + "0.1.34": "2016-11-29T22:12:13.827Z", + "0.1.35": "2016-11-29T22:40:52.078Z", + "0.1.36": "2016-11-29T23:32:29.371Z", + "0.1.37": "2016-11-29T23:35:55.143Z", + "0.1.38": "2016-11-29T23:38:49.376Z", + "0.1.39": "2016-11-29T23:42:27.432Z", + "0.1.40": "2016-11-29T23:59:29.479Z", + "0.1.41": "2016-11-30T00:23:33.208Z", + "0.1.42": "2016-11-30T01:27:31.456Z", + "0.1.43": "2016-11-30T19:09:11.113Z", + "0.1.44": "2016-11-30T22:03:30.328Z", + "0.1.45": "2016-12-01T00:00:26.764Z", + "0.1.46": "2016-12-01T00:25:10.167Z", + "0.1.47": "2016-12-01T01:19:00.270Z", + "0.1.48": "2016-12-05T21:36:16.361Z", + "0.1.49": "2016-12-05T22:51:38.413Z", + "0.1.50": "2016-12-06T15:14:23.794Z", + "0.1.51": "2016-12-07T02:05:25.442Z", + "0.1.52": "2016-12-07T19:31:40.949Z", + "0.1.53": "2016-12-07T22:09:22.658Z", + "0.1.54": "2016-12-07T22:43:19.065Z", + "0.1.55": "2016-12-08T04:33:51.919Z", + "0.1.56": "2016-12-08T14:46:39.257Z", + "0.1.57": "2016-12-08T14:52:04.987Z", + "0.1.58": "2016-12-08T14:55:12.598Z", + "0.1.59": "2016-12-08T16:19:56.465Z", + "0.1.60": "2016-12-08T22:15:55.323Z", + "0.1.61": "2016-12-08T22:19:00.369Z", + "0.1.62": "2016-12-08T23:31:52.351Z", + "0.1.63": "2016-12-09T17:11:12.175Z", + "0.1.64": "2016-12-11T17:33:00.070Z", + "0.1.65": "2016-12-12T22:51:40.969Z", + "0.1.66": "2016-12-15T16:53:22.051Z", + "0.1.67": "2016-12-15T19:04:17.532Z", + "0.1.68": "2016-12-15T20:32:59.150Z", + "0.1.69": "2016-12-16T16:25:51.714Z", + "0.1.70": "2016-12-17T03:10:29.734Z", + "0.1.71": "2016-12-19T14:59:54.552Z", + "0.1.72": "2016-12-19T15:13:56.540Z", + "0.1.73": "2016-12-19T22:36:49.162Z", + "0.1.74": "2016-12-20T12:11:48.260Z", + "0.1.75": "2016-12-20T14:10:06.028Z", + "0.1.76": "2016-12-20T14:21:25.570Z", + "0.1.77": "2016-12-20T19:38:47.042Z", + "0.1.78": "2016-12-23T14:16:46.522Z", + "0.1.79": "2016-12-24T21:15:59.248Z", + "0.1.80": "2016-12-25T15:02:37.346Z", + "0.1.81": "2016-12-27T05:53:16.989Z", + "0.1.82": "2016-12-27T21:18:02.209Z", + "0.1.83": "2016-12-28T01:22:30.088Z", + "0.1.84": "2016-12-28T03:36:20.200Z", + "0.1.85": "2016-12-28T14:08:49.640Z", + "0.1.86": "2016-12-29T23:14:14.514Z", + "0.1.87": "2016-12-30T00:42:10.095Z", + "0.1.88": "2016-12-30T17:45:24.908Z", + "0.1.89": "2016-12-31T22:38:12.974Z", + "0.1.90": "2017-01-02T06:04:42.607Z", + "0.1.91": "2017-01-02T06:37:25.616Z", + "0.1.92": "2017-01-02T18:09:47.866Z", + "0.1.93": "2017-01-02T23:11:00.034Z", + "0.1.94": "2017-01-03T01:09:15.733Z", + "0.1.95": "2017-01-03T14:35:25.951Z", + "0.1.96": "2017-01-03T14:48:37.881Z", + "0.1.97": "2017-01-03T15:01:28.547Z", + "0.1.98": "2017-01-03T21:09:35.408Z", + "0.1.99": "2017-01-03T21:13:08.544Z", + "0.1.100": "2017-01-04T14:36:54.701Z", + "0.1.101": "2017-01-04T20:11:29.837Z", + "0.1.102": "2017-01-04T22:36:54.874Z", + "0.1.103": "2017-01-05T00:23:16.933Z", + "0.1.104": "2017-01-05T03:16:23.832Z", + "0.1.105": "2017-01-05T16:38:53.301Z", + "0.1.106": "2017-01-05T17:29:38.990Z", + "0.1.107": "2017-01-05T19:15:35.826Z", + "0.1.108": "2017-01-05T20:41:17.358Z", + "0.1.109": "2017-01-05T22:49:20.131Z", + "0.1.110": "2017-01-06T14:25:56.770Z", + "0.1.111": "2017-01-06T14:30:28.524Z", + "0.1.112": "2017-01-06T16:36:29.023Z", + "0.1.113": "2017-01-06T16:57:33.301Z", + "0.1.114": "2017-01-06T18:26:08.972Z", + "0.1.115": "2017-01-07T01:28:56.781Z", + "0.1.116": "2017-01-07T01:33:28.164Z", + "0.1.117": "2017-01-07T20:09:14.298Z", + "0.1.118": "2017-01-09T01:31:34.277Z", + "0.1.119": "2017-01-09T01:48:16.472Z", + "0.1.120": "2017-01-09T15:22:17.097Z", + "0.1.121": "2017-01-09T17:03:15.239Z", + "0.1.122": "2017-01-10T19:55:43.004Z", + "0.1.123": "2017-01-10T20:20:21.650Z", + "0.1.124": "2017-01-10T20:29:33.541Z", + "0.1.125": "2017-01-12T16:54:51.687Z", + "0.1.126": "2017-01-13T15:27:36.723Z", + "0.1.127": "2017-01-13T19:56:41.888Z", + "0.1.128": "2017-01-13T21:22:43.438Z", + "0.1.129": "2017-01-14T16:12:05.581Z", + "0.1.130": "2017-01-17T20:11:40.464Z", + "0.1.131": "2017-01-17T20:15:10.128Z", + "0.1.132": "2017-01-17T21:10:32.827Z", + "0.1.133": "2017-01-17T21:29:48.582Z", + "0.1.134": "2017-01-17T21:40:38.900Z", + "0.1.135": "2017-01-17T22:01:00.034Z", + "0.1.136": "2017-01-17T22:04:24.487Z", + "0.1.137": "2017-01-17T23:42:18.380Z", + "0.1.138": "2017-01-18T00:28:46.068Z", + "0.1.139": "2017-01-18T01:38:10.745Z", + "0.1.140": "2017-01-18T04:11:34.180Z", + "0.1.141": "2017-01-18T18:02:22.202Z", + "0.1.142": "2017-01-18T18:08:09.210Z", + "0.1.143": "2017-01-27T00:04:05.178Z", + "0.1.144": "2017-01-27T00:08:54.521Z", + "0.1.145": "2017-01-28T00:33:09.361Z", + "0.1.146": "2017-01-28T00:36:47.946Z", + "0.1.147": "2017-01-29T05:15:11.553Z", + "0.1.148": "2017-01-29T05:19:46.901Z", + "0.1.149": "2017-01-29T05:36:36.944Z", + "0.1.150": "2017-01-30T18:32:48.954Z", + "0.1.151": "2017-02-07T20:54:37.543Z", + "0.1.152": "2017-02-07T21:15:01.127Z", + "0.1.153": "2017-02-07T22:45:25.085Z", + "0.1.154": "2017-02-08T21:31:33.517Z", + "0.1.155": "2017-02-09T19:37:42.338Z", + "0.1.156": "2017-02-09T21:50:51.785Z", + "0.1.157": "2017-02-09T22:02:18.037Z", + "0.1.158": "2017-02-09T22:06:10.666Z", + "0.1.159": "2017-02-09T22:46:32.446Z", + "0.1.160": "2017-02-09T22:51:47.293Z", + "0.1.161": "2017-02-09T23:37:57.002Z", + "0.1.162": "2017-02-10T00:36:25.575Z", + "0.1.163": "2017-02-10T00:44:33.893Z", + "0.1.164": "2017-02-10T00:48:22.051Z", + "0.1.165": "2017-02-10T21:24:46.014Z", + "0.1.166": "2017-02-10T22:09:59.349Z", + "0.1.167": "2017-02-10T22:25:01.171Z", + "0.1.168": "2017-02-10T23:11:21.707Z", + "0.1.169": "2017-02-11T00:32:13.642Z", + "0.1.170": "2017-02-14T21:36:38.339Z", + "0.1.171": "2017-02-15T17:41:10.909Z", + "0.1.172": "2017-02-16T01:35:13.675Z", + "0.1.173": "2017-02-17T19:05:52.924Z", + "0.1.174": "2017-02-17T19:11:21.698Z", + "0.1.175": "2017-02-20T07:58:15.491Z", + "0.1.176": "2017-02-20T08:06:21.306Z", + "0.1.177": "2017-02-20T22:03:39.510Z", + "0.1.178": "2017-02-27T14:46:15.266Z", + "0.1.179": "2017-03-06T22:34:59.448Z", + "0.1.180": "2017-03-06T22:54:50.209Z", + "0.1.181": "2017-03-07T01:00:37.943Z", + "0.1.182": "2017-03-07T20:38:04.110Z", + "0.1.183": "2017-03-08T01:29:13.990Z", + "0.1.184": "2017-03-08T04:42:56.522Z", + "0.1.185": "2017-03-08T08:30:32.682Z", + "0.1.186": "2017-03-08T08:43:36.463Z", + "0.1.187": "2017-03-08T20:02:44.550Z", + "0.1.188": "2017-03-09T00:28:01.702Z", + "0.1.189": "2017-03-09T19:23:44.435Z", + "0.1.190": "2017-03-09T22:14:51.405Z", + "0.1.191": "2017-03-10T05:41:30.371Z", + "0.1.192": "2017-03-10T06:08:24.046Z", + "0.1.193": "2017-03-10T06:12:52.802Z", + "0.1.194": "2017-03-10T06:19:07.656Z", + "0.1.195": "2017-03-10T06:30:31.385Z", + "0.1.196": "2017-03-10T06:42:59.364Z", + "0.1.197": "2017-03-10T06:48:29.920Z", + "0.1.198": "2017-03-10T06:58:57.497Z", + "0.1.199": "2017-03-10T07:10:29.605Z", + "0.1.200": "2017-03-10T07:29:38.947Z", + "0.1.201": "2017-03-11T00:23:42.274Z", + "0.1.202": "2017-03-11T00:32:26.303Z", + "0.1.203": "2017-03-11T01:17:52.037Z", + "0.1.204": "2017-03-11T01:36:55.105Z", + "0.1.205": "2017-03-14T02:04:01.183Z", + "0.1.206": "2017-03-14T17:15:42.987Z", + "0.1.207": "2017-03-16T14:39:45.855Z", + "0.1.208": "2017-03-17T18:02:37.557Z", + "0.1.209": "2017-03-20T18:26:14.872Z", + "0.1.210": "2017-03-20T21:34:59.071Z", + "0.1.211": "2017-03-20T22:05:08.760Z", + "0.1.212": "2017-03-20T22:29:18.637Z", + "0.1.213": "2017-03-20T22:40:59.754Z", + "0.1.214": "2017-03-21T19:52:49.041Z", + "0.1.215": "2017-03-21T20:06:06.491Z", + "0.1.216": "2017-03-21T20:19:58.585Z", + "0.1.217": "2017-03-21T21:08:47.101Z", + "0.1.218": "2017-03-22T00:34:12.463Z", + "0.1.219": "2017-03-22T20:52:22.385Z", + "0.1.220": "2017-03-22T22:58:25.091Z", + "0.1.221": "2017-03-24T16:02:31.065Z", + "0.1.222": "2017-03-24T16:37:31.126Z", + "0.1.223": "2017-03-27T16:20:42.141Z", + "0.1.224": "2017-03-27T17:37:52.121Z", + "0.1.225": "2017-03-27T20:44:48.559Z", + "0.1.226": "2017-03-27T22:05:00.005Z", + "0.1.227": "2017-03-28T16:58:40.441Z", + "0.1.228": "2017-03-28T17:04:31.259Z", + "0.1.229": "2017-03-28T20:24:10.297Z", + "0.1.230": "2017-03-28T21:46:34.708Z", + "0.1.231": "2017-03-28T21:57:54.376Z", + "0.1.232": "2017-03-28T22:30:18.299Z", + "0.1.233": "2017-03-29T18:33:12.627Z", + "0.1.234": "2017-03-30T15:43:59.431Z", + "0.1.235": "2017-03-30T22:43:50.560Z", + "0.1.236": "2017-03-31T16:56:15.698Z", + "0.1.237": "2017-04-10T15:10:49.984Z", + "0.1.238": "2017-04-11T21:07:57.255Z", + "0.1.239": "2017-04-13T22:46:47.837Z", + "0.1.240": "2017-04-26T21:40:19.737Z", + "0.1.241": "2017-04-26T22:00:15.929Z", + "0.1.242": "2017-04-27T15:00:25.517Z", + "0.1.243": "2017-04-27T17:10:20.585Z", + "0.1.244": "2017-04-27T19:01:08.498Z", + "0.1.245": "2017-05-01T14:50:50.535Z", + "0.1.246": "2017-05-01T14:55:05.319Z", + "0.1.247": "2017-05-01T19:38:33.810Z", + "0.1.248": "2017-05-01T19:42:33.787Z", + "0.1.249": "2017-05-01T22:23:49.334Z", + "0.1.250": "2017-05-01T23:03:20.998Z", + "0.1.251": "2017-05-01T23:27:39.796Z", + "0.1.252": "2017-05-02T00:12:13.597Z", + "0.1.253": "2017-05-02T17:32:35.928Z", + "0.1.254": "2017-05-03T17:32:40.728Z", + "0.1.255": "2017-05-03T17:56:30.084Z", + "0.1.256": "2017-05-03T18:04:39.821Z", + "0.1.257": "2017-05-03T18:13:36.513Z", + "0.1.258": "2017-05-03T18:17:44.966Z", + "0.1.259": "2017-05-03T18:39:34.049Z", + "0.1.260": "2017-05-03T19:57:02.973Z", + "0.1.261": "2017-05-04T17:06:10.390Z", + "0.1.262": "2017-05-04T19:17:01.350Z", + "0.1.263": "2017-05-05T00:20:23.385Z", + "0.1.264": "2017-05-05T00:37:06.470Z", + "0.1.265": "2017-05-05T01:19:28.615Z", + "0.1.266": "2017-05-05T04:06:49.371Z", + "0.1.267": "2017-05-05T16:03:37.273Z", + "0.1.268": "2017-05-05T23:29:22.014Z", + "0.1.269": "2017-05-15T22:22:21.341Z", + "0.1.270": "2017-05-15T22:26:40.119Z", + "0.1.271": "2017-05-16T20:46:04.790Z", + "0.1.272": "2017-05-18T21:47:04.718Z", + "0.1.273": "2017-05-18T23:29:14.778Z", + "0.1.274": "2017-05-18T23:36:46.357Z", + "0.1.275": "2017-05-18T23:48:12.100Z", + "0.1.276": "2017-05-19T00:07:31.845Z", + "0.1.277": "2017-05-19T20:04:30.945Z", + "0.1.278": "2017-05-19T20:51:50.581Z", + "0.1.279": "2017-05-19T21:16:29.286Z", + "0.1.280": "2017-05-19T23:43:18.789Z", + "0.1.281": "2017-05-22T17:20:55.655Z", + "0.1.282": "2017-05-22T20:42:14.581Z", + "0.1.283": "2017-05-22T20:53:55.415Z", + "0.1.284": "2017-05-22T21:58:49.559Z", + "0.1.285": "2017-05-27T01:16:46.250Z", + "0.1.286": "2017-05-31T23:31:02.915Z", + "0.1.287": "2017-06-01T03:05:22.248Z", + "0.1.288": "2017-06-01T03:19:09.643Z", + "0.1.289": "2017-06-01T05:01:13.937Z", + "0.1.290": "2017-06-01T05:19:20.387Z", + "0.1.291": "2017-06-01T05:23:26.536Z", + "0.1.292": "2017-06-01T05:34:38.206Z", + "0.1.293": "2017-06-01T05:39:51.767Z", + "0.1.294": "2017-06-01T05:46:19.351Z", + "0.1.295": "2017-06-01T05:51:28.315Z", + "0.1.296": "2017-06-01T06:00:50.735Z", + "0.1.297": "2017-06-02T14:23:47.324Z", + "0.1.298": "2017-09-21T21:19:29.431Z", + "0.1.299": "2017-09-22T18:00:11.644Z", + "0.1.300": "2017-09-25T15:42:49.299Z", + "0.1.301": "2017-09-26T18:21:39.122Z", + "0.1.302": "2017-10-05T15:49:36.945Z", + "0.1.303": "2017-10-05T17:35:36.806Z", + "0.1.304": "2017-10-05T20:05:34.672Z", + "0.1.305": "2017-10-17T15:31:07.845Z", + "0.1.306": "2017-10-19T19:02:25.362Z", + "0.1.307": "2017-10-20T14:38:04.764Z", + "0.1.308": "2017-11-14T17:27:24.247Z", + "0.1.309": "2017-11-14T17:45:04.721Z", + "0.1.310": "2017-12-08T23:23:58.835Z", + "0.1.311": "2017-12-13T19:27:51.154Z", + "0.1.312": "2017-12-13T22:46:24.267Z", + "0.1.313": "2017-12-14T17:25:23.078Z", + "0.1.314": "2017-12-14T20:48:40.580Z", + "0.1.315": "2017-12-15T23:09:24.086Z", + "0.1.316": "2017-12-28T02:31:10.108Z", + "0.1.317": "2018-01-02T22:40:05.666Z", + "0.1.318": "2018-01-03T21:06:31.099Z", + "0.1.319": "2018-01-05T17:26:02.790Z", + "0.1.320": "2018-01-05T17:53:48.413Z", + "0.1.321": "2018-01-05T19:21:16.405Z", + "0.1.322": "2018-01-05T19:35:46.637Z", + "0.1.323": "2018-01-05T23:52:24.039Z", + "0.1.324": "2018-01-07T07:35:36.185Z", + "0.1.325": "2018-01-07T08:23:26.468Z", + "0.1.326": "2018-01-07T22:19:28.355Z", + "0.1.327": "2018-01-08T18:31:21.502Z", + "0.1.328": "2018-01-08T18:54:32.357Z", + "0.1.329": "2018-01-08T22:39:41.193Z", + "0.1.330": "2018-01-08T23:40:51.214Z", + "0.1.331": "2018-01-19T00:04:23.718Z", + "0.1.332": "2018-01-23T20:13:37.861Z", + "0.1.333": "2018-02-01T19:01:00.643Z", + "0.1.334": "2018-02-08T20:41:50.764Z", + "0.1.335": "2018-02-09T23:29:59.048Z", + "0.1.336": "2018-02-12T22:02:29.891Z", + "0.1.337": "2018-02-17T18:32:01.804Z", + "0.1.338": "2018-02-20T18:32:18.786Z", + "0.1.339": "2018-02-27T23:05:55.195Z", + "0.1.340": "2018-02-28T20:08:37.956Z", + "0.1.341": "2018-03-01T09:29:49.442Z", + "0.1.342": "2018-03-01T17:29:39.834Z", + "0.1.343": "2018-03-01T18:51:43.029Z", + "0.1.344": "2018-03-01T19:36:06.250Z", + "0.1.345": "2018-03-01T22:56:04.711Z", + "0.1.346": "2018-03-01T23:19:11.848Z", + "0.1.347": "2018-03-01T23:34:12.552Z", + "0.1.348": "2018-03-01T23:45:34.232Z", + "0.1.349": "2018-03-02T10:57:13.192Z", + "0.1.350": "2018-03-02T16:46:15.973Z", + "0.1.351": "2018-03-02T17:41:46.379Z", + "0.1.352": "2018-03-02T17:55:05.424Z", + "0.1.353": "2018-03-02T19:49:31.468Z", + "0.1.354": "2018-03-02T21:25:37.540Z", + "0.1.355": "2018-03-02T21:40:46.252Z", + "0.1.356": "2018-03-03T00:43:11.670Z", + "0.1.357": "2018-03-03T00:58:37.008Z", + "0.1.358": "2018-03-03T01:06:14.033Z", + "0.1.359": "2018-03-03T01:12:08.896Z", + "0.1.360": "2018-03-03T01:17:39.908Z", + "0.1.361": "2018-03-03T06:11:21.125Z", + "0.1.362": "2018-03-03T18:51:22.650Z", + "0.1.363": "2018-03-05T23:01:24.508Z", + "0.1.364": "2018-03-06T00:40:56.923Z", + "0.1.365": "2018-03-06T02:26:07.504Z", + "0.1.366": "2018-03-06T02:33:39.336Z", + "0.1.367": "2018-03-06T08:33:07.011Z", + "0.1.368": "2018-03-06T16:11:51.241Z", + "0.1.369": "2018-03-06T20:33:14.763Z", + "0.1.370": "2018-03-09T00:24:51.854Z", + "0.1.371": "2018-03-09T00:42:44.080Z", + "0.1.372": "2018-03-09T00:54:24.343Z", + "0.1.373": "2018-03-09T01:03:44.953Z", + "0.1.374": "2018-03-09T01:10:30.331Z", + "0.1.375": "2018-03-09T01:15:57.398Z", + "0.1.376": "2018-03-09T01:21:39.576Z", + "0.1.377": "2018-03-09T01:27:28.752Z", + "0.1.378": "2018-03-09T01:33:34.022Z", + "0.1.379": "2018-03-09T01:39:07.582Z", + "0.1.380": "2018-03-09T01:44:36.334Z", + "0.1.381": "2018-03-09T01:50:08.332Z", + "0.1.382": "2018-03-09T01:55:45.389Z", + "0.1.383": "2018-03-09T02:01:44.179Z", + "0.1.384": "2018-03-09T02:07:32.525Z", + "0.1.385": "2018-03-09T02:13:24.400Z", + "0.1.386": "2018-03-23T23:02:41.110Z", + "0.1.387": "2018-05-01T16:12:36.162Z", + "0.1.388": "2018-05-31T22:14:55.666Z", + "0.1.389": "2018-06-01T23:39:14.024Z", + "0.1.390": "2018-06-09T00:49:09.335Z", + "0.1.391": "2018-06-16T16:11:21.252Z", + "0.1.392": "2018-07-10T03:48:41.724Z", + "0.1.393": "2018-08-29T17:12:13.059Z", + "0.1.394": "2018-11-03T00:29:34.862Z", + "0.1.395": "2018-11-03T00:43:16.832Z", + "0.1.396": "2018-11-03T16:00:43.942Z", + "0.1.397": "2018-11-03T20:06:04.333Z", + "0.1.398": "2018-11-04T07:37:12.593Z", + "0.1.399": "2018-11-05T05:19:23.465Z", + "0.1.400": "2018-11-05T06:16:42.010Z", + "0.1.401": "2018-11-05T06:21:55.049Z", + "0.1.402": "2018-11-05T06:33:43.954Z", + "0.1.403": "2018-11-05T06:41:39.375Z", + "0.1.404": "2018-11-05T06:49:10.957Z", + "0.1.405": "2018-11-05T07:01:56.264Z", + "0.1.406": "2018-11-05T07:26:06.227Z", + "0.1.407": "2018-11-05T07:34:05.261Z", + "0.1.408": "2018-11-13T00:24:40.707Z", + "0.1.409": "2018-11-13T22:49:17.725Z", + "0.1.410": "2018-11-15T00:29:44.365Z", + "0.1.411": "2018-11-22T09:30:50.443Z", + "0.1.412": "2018-11-29T23:49:58.670Z", + "0.1.413": "2018-12-07T18:09:35.294Z", + "0.1.414": "2018-12-11T17:41:22.793Z", + "0.1.415": "2018-12-18T18:12:15.978Z", + "0.1.416": "2018-12-27T00:47:02.082Z", + "0.1.417": "2019-01-03T17:16:21.553Z", + "0.1.418": "2019-01-14T17:29:52.397Z", + "0.1.419": "2019-01-22T17:31:24.906Z", + "0.1.420": "2019-01-29T18:10:56.480Z", + "0.1.421": "2019-02-05T18:34:42.716Z", + "0.1.422": "2019-02-12T19:18:33.461Z", + "0.1.423": "2019-02-19T19:20:31.266Z", + "0.1.424": "2019-02-26T19:28:45.543Z", + "0.1.425": "2019-03-06T17:19:07.169Z", + "0.1.426": "2019-03-14T00:34:06.083Z", + "0.1.427": "2019-03-21T01:06:00.147Z", + "0.1.428": "2019-03-28T01:39:28.091Z", + "0.1.429": "2019-04-04T01:49:44.380Z", + "0.1.430": "2019-04-11T02:00:36.671Z", + "0.1.431": "2019-04-18T02:15:28.585Z", + "0.1.432": "2019-04-25T02:25:24.116Z", + "0.1.433": "2019-05-02T21:28:48.910Z", + "0.1.434": "2019-05-09T21:50:25.762Z", + "0.1.435": "2019-05-16T21:57:55.096Z", + "0.1.436": "2019-05-23T22:09:29.158Z", + "0.1.437": "2019-05-30T22:23:14.649Z", + "0.1.438": "2019-06-06T22:30:34.534Z", + "0.1.439": "2019-06-13T23:03:44.013Z", + "0.1.440": "2019-06-20T23:20:01.700Z", + "0.1.441": "2019-06-27T23:35:45.966Z", + "0.1.442": "2019-07-05T07:52:31.593Z", + "0.1.443": "2019-07-12T08:09:42.152Z", + "0.1.444": "2019-07-19T08:13:21.879Z", + "0.1.445": "2019-07-26T08:23:19.982Z", + "0.1.446": "2019-08-02T08:27:21.078Z", + "0.1.447": "2019-08-09T08:29:17.808Z", + "0.1.448": "2019-08-16T08:40:37.121Z", + "0.1.449": "2019-08-23T09:09:13.489Z", + "0.1.450": "2019-08-30T09:11:57.683Z", + "0.1.451": "2019-09-06T09:27:28.273Z", + "0.1.452": "2019-09-13T09:45:09.501Z", + "0.1.453": "2019-09-20T10:09:19.289Z", + "0.1.454": "2019-09-27T10:31:57.935Z", + "0.1.455": "2019-10-02T16:36:35.570Z", + "0.1.456": "2019-10-02T17:18:46.890Z", + "0.1.457": "2019-10-02T21:06:24.082Z", + "0.1.458": "2019-10-02T22:34:10.230Z", + "0.1.459": "2019-10-02T23:10:58.776Z", + "0.1.460": "2019-10-09T23:23:27.512Z", + "0.1.461": "2019-10-16T23:28:24.397Z", + "0.1.462": "2019-10-23T23:51:34.001Z", + "0.1.463": "2019-10-30T23:54:55.727Z", + "0.1.464": "2019-11-07T00:11:52.734Z", + "0.1.465": "2019-11-14T00:16:23.888Z", + "0.1.466": "2019-11-21T00:28:22.171Z", + "0.1.467": "2019-11-28T00:31:30.665Z", + "0.1.468": "2019-12-05T00:44:41.334Z", + "0.1.469": "2019-12-12T01:00:22.660Z", + "0.1.470": "2019-12-19T01:35:35.999Z", + "0.1.471": "2019-12-26T02:06:20.598Z", + "0.1.472": "2020-01-02T02:38:23.108Z", + "0.1.473": "2020-01-09T02:51:29.452Z", + "0.1.474": "2020-01-16T03:06:52.923Z", + "0.1.475": "2020-01-23T03:41:46.676Z", + "0.1.476": "2020-01-30T16:36:42.868Z", + "0.1.477": "2020-02-06T16:39:10.004Z", + "0.1.478": "2020-02-13T16:48:17.990Z", + "0.1.479": "2020-02-20T17:01:30.741Z", + "0.1.480": "2020-03-02T20:05:56.252Z", + "0.1.481": "2020-03-10T19:05:52.148Z", + "0.1.482": "2020-03-17T19:28:16.709Z", + "0.1.483": "2020-03-24T19:31:02.936Z", + "0.1.484": "2020-03-31T20:04:57.630Z", + "0.1.485": "2020-04-07T20:20:11.706Z", + "0.1.486": "2020-04-16T19:51:26.299Z", + "0.1.487": "2020-04-23T21:12:26.215Z", + "0.1.488": "2020-04-30T21:16:02.637Z", + "0.1.489": "2020-05-07T21:19:28.182Z", + "0.1.490": "2020-05-14T21:22:33.114Z", + "0.1.491": "2020-05-21T21:50:18.461Z", + "0.1.492": "2020-05-28T22:05:57.028Z", + "0.1.493": "2020-06-04T22:19:54.817Z", + "0.1.494": "2020-06-11T22:27:06.760Z", + "0.1.495": "2020-06-18T22:49:02.594Z", + "0.1.496": "2020-06-25T23:00:33.903Z", + "0.1.497": "2020-07-02T23:25:23.669Z", + "0.1.498": "2020-07-09T23:54:46.143Z", + "0.1.499": "2020-07-16T23:58:51.297Z", + "0.1.500": "2020-07-24T00:31:57.864Z", + "0.1.501": "2020-07-31T00:59:01.266Z", + "0.1.502": "2020-08-07T01:21:09.814Z", + "0.1.503": "2020-08-14T01:44:35.831Z", + "0.1.504": "2020-08-21T01:47:27.632Z", + "0.1.505": "2020-08-28T02:15:50.147Z", + "0.1.506": "2020-09-04T02:21:19.014Z", + "0.1.507": "2020-09-11T02:36:06.886Z", + "0.1.508": "2020-09-18T16:48:50.583Z", + "0.1.509": "2020-09-25T18:46:57.728Z", + "0.1.510": "2020-10-02T19:50:00.415Z", + "0.1.511": "2020-10-09T19:57:19.150Z", + "0.1.512": "2020-10-16T20:00:05.863Z", + "0.1.513": "2020-10-23T20:02:55.826Z", + "0.1.514": "2020-10-30T20:29:13.501Z", + "0.1.515": "2020-11-06T20:36:52.399Z", + "0.1.516": "2020-11-13T20:52:19.877Z", + "0.1.517": "2020-11-20T20:56:11.662Z", + "0.1.518": "2020-12-03T16:49:05.130Z", + "0.1.519": "2020-12-10T17:02:58.676Z", + "0.1.520": "2020-12-17T17:13:01.078Z", + "0.1.521": "2020-12-24T17:42:19.371Z", + "0.1.522": "2020-12-31T18:03:09.518Z", + "0.1.523": "2021-01-07T18:07:24.349Z", + "0.1.524": "2021-01-14T18:12:04.961Z", + "0.1.525": "2021-01-21T18:35:08.751Z", + "0.1.526": "2021-01-28T20:37:37.309Z", + "0.1.527": "2021-02-04T20:40:11.413Z", + "0.1.528": "2021-02-11T21:07:37.447Z", + "0.1.529": "2021-02-18T21:22:08.488Z", + "0.1.530": "2021-02-25T21:54:51.101Z", + "0.1.531": "2021-03-04T22:10:09.808Z", + "0.1.532": "2021-03-11T22:42:17.578Z", + "0.1.533": "2021-03-18T23:30:07.891Z", + "0.1.534": "2021-03-25T23:32:27.790Z", + "0.1.535": "2021-04-02T00:03:01.651Z", + "0.1.536": "2021-04-09T00:33:00.338Z", + "0.1.537": "2021-04-16T01:02:37.998Z", + "0.1.538": "2021-04-23T01:32:41.148Z", + "0.1.539": "2021-04-30T02:03:00.250Z", + "0.1.540": "2021-05-07T02:32:46.614Z", + "0.1.541": "2021-05-14T03:03:01.300Z", + "0.1.542": "2021-05-21T03:33:13.864Z", + "0.1.543": "2021-05-28T04:03:04.352Z", + "0.1.544": "2021-06-04T04:33:12.142Z", + "0.1.545": "2021-06-11T05:02:47.272Z", + "0.1.546": "2021-06-18T05:32:34.510Z", + "0.1.547": "2021-06-25T06:02:35.995Z", + "0.1.548": "2021-07-02T06:33:09.581Z", + "0.1.549": "2021-07-09T07:38:28.700Z", + "0.1.550": "2021-07-16T08:03:00.964Z", + "0.1.551": "2021-07-23T08:32:42.540Z", + "0.1.552": "2021-07-30T21:02:56.541Z", + "0.1.553": "2021-08-06T21:33:06.698Z", + "0.1.554": "2021-08-13T22:03:04.591Z", + "0.1.555": "2021-08-20T22:33:19.377Z", + "0.1.556": "2021-08-27T23:02:41.405Z", + "0.1.557": "2021-09-03T23:32:45.384Z", + "0.1.558": "2021-09-11T00:03:03.902Z", + "0.1.559": "2021-09-18T00:32:44.499Z", + "0.1.560": "2021-09-25T01:35:47.265Z", + "0.1.561": "2021-10-02T02:02:58.981Z", + "0.1.562": "2021-10-09T02:32:42.553Z", + "0.1.563": "2021-10-16T03:02:45.406Z", + "0.1.564": "2021-10-23T03:32:54.882Z", + "0.1.565": "2021-10-30T04:02:58.347Z", + "0.1.566": "2021-11-06T04:32:51.725Z", + "0.1.567": "2021-11-13T05:02:45.832Z", + "0.1.568": "2021-11-20T05:32:53.747Z", + "0.1.569": "2021-11-27T06:02:41.747Z", + "0.1.570": "2021-12-04T06:32:22.105Z", + "0.1.571": "2021-12-11T07:02:49.502Z", + "0.1.572": "2021-12-18T07:32:32.945Z", + "0.1.573": "2021-12-25T08:03:02.578Z", + "0.1.574": "2022-01-01T08:33:03.295Z", + "0.1.575": "2022-01-08T09:02:59.914Z", + "0.1.576": "2022-01-15T09:32:55.145Z", + "0.1.577": "2022-01-22T10:33:21.496Z", + "0.1.578": "2022-01-29T11:33:31.660Z", + "0.1.579": "2022-02-05T12:02:48.176Z", + "0.1.580": "2022-02-12T12:32:57.425Z", + "0.1.581": "2022-02-22T18:02:34.578Z", + "0.1.582": "2022-03-01T18:31:58.234Z", + "0.1.583": "2022-03-08T19:02:12.479Z", + "0.1.584": "2022-03-15T19:32:31.171Z", + "0.1.585": "2022-03-22T20:02:01.674Z", + "0.1.586": "2022-03-29T21:02:23.065Z", + "0.1.587": "2022-04-05T22:02:07.977Z", + "0.1.588": "2022-04-12T22:31:48.844Z", + "0.1.589": "2022-04-19T23:01:53.215Z", + "0.1.590": "2022-04-26T23:31:58.465Z", + "0.1.591": "2022-05-04T00:02:31.522Z", + "0.1.592": "2022-05-11T00:31:53.029Z", + "0.1.593": "2022-05-18T01:02:18.593Z", + "0.1.594": "2022-05-29T13:31:46.102Z", + "0.1.595": "2022-06-05T14:01:46.911Z", + "0.1.596": "2022-06-18T05:01:47.408Z", + "0.1.597": "2022-06-24T17:13:57.974Z", + "0.1.598": "2022-06-26T00:11:00.083Z", + "0.1.599": "2022-07-03T00:13:11.416Z", + "0.1.600": "2022-07-10T00:16:04.902Z", + "0.1.601": "2022-07-17T00:12:52.674Z", + "0.1.602": "2022-07-24T00:13:54.864Z", + "0.1.603": "2022-07-31T00:15:44.534Z", + "0.1.604": "2022-08-07T00:16:19.852Z", + "0.1.605": "2022-08-14T00:12:39.352Z", + "0.1.606": "2022-08-21T00:16:27.454Z", + "0.1.607": "2022-08-28T00:17:42.074Z", + "0.1.608": "2022-09-04T00:13:31.794Z", + "0.1.609": "2022-09-11T00:14:43.146Z", + "0.1.610": "2022-09-18T00:15:19.486Z", + "0.1.611": "2022-09-25T00:17:15.825Z", + "0.1.612": "2022-10-02T00:20:46.499Z", + "0.1.613": "2022-10-09T00:17:44.393Z", + "0.1.614": "2022-10-16T00:17:13.287Z", + "0.1.615": "2022-10-23T00:19:06.402Z", + "0.1.616": "2022-10-30T00:14:08.006Z", + "0.1.617": "2022-11-06T00:15:13.021Z", + "0.1.618": "2022-11-13T00:13:30.037Z", + "0.1.619": "2022-11-20T00:14:16.907Z", + "0.1.620": "2022-11-27T00:16:13.239Z", + "0.1.621": "2022-12-04T00:16:03.731Z", + "0.1.622": "2022-12-11T00:15:02.741Z", + "0.1.623": "2022-12-18T00:16:15.579Z", + "0.1.624": "2022-12-25T00:13:14.695Z", + "0.1.625": "2023-01-01T00:16:12.295Z", + "0.1.626": "2023-01-08T00:14:43.494Z", + "0.1.627": "2023-01-15T00:15:41.840Z", + "0.1.628": "2023-01-22T00:12:07.953Z", + "0.1.629": "2023-01-29T00:15:52.435Z", + "0.1.630": "2023-02-05T00:12:38.222Z", + "0.1.631": "2023-02-12T00:13:03.117Z", + "0.1.632": "2023-02-19T00:15:12.199Z", + "0.1.633": "2023-02-26T00:12:16.971Z", + "0.1.634": "2023-03-05T00:15:14.051Z", + "0.1.635": "2023-03-12T00:16:14.296Z", + "0.1.636": "2023-03-19T00:15:05.107Z", + "0.1.637": "2023-03-26T00:14:15.846Z", + "0.1.638": "2023-04-02T00:11:48.448Z", + "0.1.639": "2023-04-09T00:15:25.206Z", + "0.1.640": "2023-04-16T00:11:50.128Z", + "0.1.641": "2023-04-23T00:11:30.199Z", + "0.1.642": "2023-04-30T00:14:39.077Z", + "0.1.643": "2023-05-07T00:14:56.851Z", + "0.1.644": "2023-05-14T00:12:52.295Z", + "0.1.645": "2023-05-21T00:15:06.507Z", + "0.1.646": "2023-05-28T00:16:26.610Z", + "0.1.647": "2023-06-04T00:13:00.761Z", + "0.1.648": "2023-06-11T00:12:05.220Z", + "0.1.649": "2023-06-18T00:12:32.857Z", + "0.1.650": "2023-06-25T00:17:27.713Z", + "0.1.651": "2023-07-02T00:15:11.811Z", + "0.1.652": "2023-07-16T00:16:48.098Z", + "0.1.653": "2023-07-23T00:16:01.494Z", + "0.1.654": "2023-07-30T00:15:03.654Z", + "0.1.655": "2023-08-06T00:15:23.193Z", + "0.1.656": "2023-08-13T00:15:21.683Z", + "0.1.657": "2023-08-20T00:14:43.310Z", + "0.1.658": "2023-08-27T00:14:38.079Z", + "0.1.659": "2023-09-03T00:14:24.848Z", + "0.1.660": "2023-09-10T00:15:18.397Z", + "0.1.661": "2023-09-17T00:34:06.549Z", + "0.1.662": "2023-09-24T00:24:09.141Z", + "0.1.663": "2023-10-01T00:23:23.676Z", + "0.1.664": "2023-10-08T00:25:14.135Z", + "0.1.665": "2023-10-15T00:25:06.429Z", + "0.1.666": "2023-10-22T00:25:19.668Z", + "0.1.667": "2023-10-25T22:33:34.653Z", + "0.1.668": "2023-10-26T16:55:51.358Z", + "0.1.669": "2023-10-29T00:23:00.987Z", + "0.1.670": "2023-11-12T00:23:14.238Z", + "0.1.671": "2023-11-19T00:19:42.572Z", + "0.1.672": "2023-11-26T00:21:07.545Z", + "0.1.673": "2023-12-03T00:21:49.837Z", + "0.1.674": "2023-12-10T00:21:44.967Z", + "0.1.675": "2023-12-17T00:20:27.844Z", + "0.1.676": "2023-12-24T00:25:31.326Z", + "0.1.677": "2023-12-31T00:21:52.004Z", + "0.1.678": "2024-01-07T00:20:10.773Z", + "0.1.679": "2024-01-14T00:20:15.312Z", + "0.1.680": "2024-01-21T00:20:07.888Z", + "0.1.681": "2024-01-28T00:19:07.946Z", + "0.1.682": "2024-02-04T00:21:24.363Z", + "0.1.683": "2024-02-11T00:22:44.313Z", + "0.1.684": "2024-02-18T00:20:25.179Z" + }, + "users": {}, + "dist-tags": { + "latest": "0.1.684", + "next": "0.1.684" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"08ae15cd700052e91f1358357f99efb3\"", + "fetched": 1713229025377 + } + }, + "_distfiles": { + "types-registry-0.1.0.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.0.tgz", + "sha": "fba0a8ecbe1c10a47cdfe91039afc0d95b7f4438", + "registry": "npmjs" + }, + "types-registry-0.1.1.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.1.tgz", + "sha": "ce6ba33f8a0997b7144c61bff71ed28c8a64814b", + "registry": "npmjs" + }, + "types-registry-0.1.2.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.2.tgz", + "sha": "db5544089ce4b1b5492c8d19e7732f2cf642c36a", + "registry": "npmjs" + }, + "types-registry-0.1.3.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.3.tgz", + "sha": "4166b57140f012fcdedbb58344034bc002740254", + "registry": "npmjs" + }, + "types-registry-0.1.4.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.4.tgz", + "sha": "d87906d7c5d30c38102d839e293f8f5cdc43d33d", + "registry": "npmjs" + }, + "types-registry-0.1.5.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.5.tgz", + "sha": "8c7916c6b8877e5d2ba58f45637e07b5a2c132cd", + "registry": "npmjs" + }, + "types-registry-0.1.6.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.6.tgz", + "sha": "241fc385abc50179daed8099ae3044b2d705fdef", + "registry": "npmjs" + }, + "types-registry-0.1.7.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.7.tgz", + "sha": "17e2bac6daeac6d529f1962719aca6699bedada6", + "registry": "npmjs" + }, + "types-registry-0.1.8.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.8.tgz", + "sha": "bd7b2e54136cf1a3108d6ff00d2b7a9229788eb3", + "registry": "npmjs" + }, + "types-registry-0.1.9.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.9.tgz", + "sha": "7666248ee70d2ed130354a020cb2aed2810bd9e2", + "registry": "npmjs" + }, + "types-registry-0.1.10.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.10.tgz", + "sha": "5421c8c6b0c62d438d12d6dac9f2fb6e8f89984f", + "registry": "npmjs" + }, + "types-registry-0.1.11.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.11.tgz", + "sha": "83fabed71a80ecb0aa3cbf4ffe191b30fc39f9db", + "registry": "npmjs" + }, + "types-registry-0.1.12.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.12.tgz", + "sha": "db3567527e7f004957f80ccefb7d3d0070573841", + "registry": "npmjs" + }, + "types-registry-0.1.13.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.13.tgz", + "sha": "a8b0ac710bde6b7422523b4b676eba06f0a18955", + "registry": "npmjs" + }, + "types-registry-0.1.14.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.14.tgz", + "sha": "22f45b9149019769b8233202c7c692866309855d", + "registry": "npmjs" + }, + "types-registry-0.1.15.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.15.tgz", + "sha": "34802ce62d86b3fdbacba22bd60abe167749ffd9", + "registry": "npmjs" + }, + "types-registry-0.1.16.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.16.tgz", + "sha": "3c94bda32101c92ca539d011e1972b81a9aa8e5b", + "registry": "npmjs" + }, + "types-registry-0.1.17.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.17.tgz", + "sha": "3a449b961ba4ba783d008317b802ba951aa05dc3", + "registry": "npmjs" + }, + "types-registry-0.1.18.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.18.tgz", + "sha": "b85d986236b4472676a72723c3d0bba9f953e95f", + "registry": "npmjs" + }, + "types-registry-0.1.19.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.19.tgz", + "sha": "f33f47cdca4e3c28fb7f86ed880333835d7b0f6a", + "registry": "npmjs" + }, + "types-registry-0.1.20.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.20.tgz", + "sha": "08472cdc3890403270ead70d9a40fb6b41944e85", + "registry": "npmjs" + }, + "types-registry-0.1.21.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.21.tgz", + "sha": "6e6ad2430d8edc2aef0fe6c4b1d09ceefb7786ed", + "registry": "npmjs" + }, + "types-registry-0.1.22.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.22.tgz", + "sha": "4cadf3316ad2556c25fce258a6e4fad64745f48e", + "registry": "npmjs" + }, + "types-registry-0.1.23.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.23.tgz", + "sha": "a041e493fe09f600f8f3e931b3725b98f548e8d6", + "registry": "npmjs" + }, + "types-registry-0.1.24.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.24.tgz", + "sha": "90fc8bcf3b432dec8c69d8e2af8360354a6d126f", + "registry": "npmjs" + }, + "types-registry-0.1.25.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.25.tgz", + "sha": "825b737c68cefda5bf6536038d02248c202057ea", + "registry": "npmjs" + }, + "types-registry-0.1.26.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.26.tgz", + "sha": "31b828a92044ca3bcd7c6f821f2ed7f760069812", + "registry": "npmjs" + }, + "types-registry-0.1.27.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.27.tgz", + "sha": "017dc94500ed0934857dc3da44e580040aa115d1", + "registry": "npmjs" + }, + "types-registry-0.1.28.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.28.tgz", + "sha": "53f78cbaa23e3ef96befe66442d587ea0c716232", + "registry": "npmjs" + }, + "types-registry-0.1.29.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.29.tgz", + "sha": "9f5d1d59c6ad78237f142dc3b2312e260a3835ba", + "registry": "npmjs" + }, + "types-registry-0.1.30.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.30.tgz", + "sha": "c4eef61ab65dc232e0b40d3657ef0d66be9cd099", + "registry": "npmjs" + }, + "types-registry-0.1.31.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.31.tgz", + "sha": "f23b445c30d684f02671047caa483885beb6cae6", + "registry": "npmjs" + }, + "types-registry-0.1.32.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.32.tgz", + "sha": "cdfbda792de77bfc3117bc3ec9fe5ac4fa2bfa94", + "registry": "npmjs" + }, + "types-registry-0.1.33.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.33.tgz", + "sha": "ec9dfcc883e03c21bec5714e19ef5d6727484a00", + "registry": "npmjs" + }, + "types-registry-0.1.34.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.34.tgz", + "sha": "38794fe7cd09c9a679a4c19ccef95b8f2ff77cdb", + "registry": "npmjs" + }, + "types-registry-0.1.35.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.35.tgz", + "sha": "85871eb26c98e4201478114e34cd2164bee7a252", + "registry": "npmjs" + }, + "types-registry-0.1.36.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.36.tgz", + "sha": "ff353cde95613e8a487fbbb30cc6844e8461b35d", + "registry": "npmjs" + }, + "types-registry-0.1.37.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.37.tgz", + "sha": "56e3b9a3a8d15a00d1c4656895698342c8bc9f85", + "registry": "npmjs" + }, + "types-registry-0.1.38.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.38.tgz", + "sha": "8276f0ae566f0839b89695ab62a9ed9eac48bc65", + "registry": "npmjs" + }, + "types-registry-0.1.39.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.39.tgz", + "sha": "c31e017ec91bdec8b07a49b1e2867b8ac466eff0", + "registry": "npmjs" + }, + "types-registry-0.1.40.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.40.tgz", + "sha": "3f4886803e20b6887bde99879df322fdf4ebdd5e", + "registry": "npmjs" + }, + "types-registry-0.1.41.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.41.tgz", + "sha": "68f7a9cb47aa6bbf0bc1c6199e0ad6432204d78a", + "registry": "npmjs" + }, + "types-registry-0.1.42.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.42.tgz", + "sha": "778c98f7d6b026281192cbc23ca648be74d9a56b", + "registry": "npmjs" + }, + "types-registry-0.1.43.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.43.tgz", + "sha": "8f78356c7f3e01bfa4b2af33114f6e3fbaa54d94", + "registry": "npmjs" + }, + "types-registry-0.1.44.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.44.tgz", + "sha": "5022e8c1d43bbb6d0545413736eba79d6ba801e6", + "registry": "npmjs" + }, + "types-registry-0.1.45.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.45.tgz", + "sha": "ed63b06f40220f34af345ad5f9b47723fc7d1123", + "registry": "npmjs" + }, + "types-registry-0.1.46.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.46.tgz", + "sha": "939d2a4571be04dae541714bd0d7d6255e137db7", + "registry": "npmjs" + }, + "types-registry-0.1.47.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.47.tgz", + "sha": "e384f19c3ec0803c26cd64130a3548c5fdaccfc5", + "registry": "npmjs" + }, + "types-registry-0.1.48.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.48.tgz", + "sha": "d25cee6a7dff30b01eff448871e449311cfc4bdd", + "registry": "npmjs" + }, + "types-registry-0.1.49.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.49.tgz", + "sha": "3c0dfe0d071675a74c4cb88df8e7ab6d3c79459c", + "registry": "npmjs" + }, + "types-registry-0.1.50.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.50.tgz", + "sha": "6b744caa1e55530f7e98f2e6eebeeef2848fdb00", + "registry": "npmjs" + }, + "types-registry-0.1.51.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.51.tgz", + "sha": "a689bf6f063a80d83bdcd7b3fbe503ddaf67efea", + "registry": "npmjs" + }, + "types-registry-0.1.52.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.52.tgz", + "sha": "028fc5965fb5c41ae03c6c56887997f7145cfff3", + "registry": "npmjs" + }, + "types-registry-0.1.53.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.53.tgz", + "sha": "49862fdfb2fb194685636a311c3d5e2874e6bb25", + "registry": "npmjs" + }, + "types-registry-0.1.54.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.54.tgz", + "sha": "cd4dde27bc1318cbb549708694d000917a597f1d", + "registry": "npmjs" + }, + "types-registry-0.1.55.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.55.tgz", + "sha": "fbde51410f3c03e64bc1ce62d34f157cac6c30a9", + "registry": "npmjs" + }, + "types-registry-0.1.56.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.56.tgz", + "sha": "8d99dd4c16301e262a0cb29b4059adc04c2504c5", + "registry": "npmjs" + }, + "types-registry-0.1.57.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.57.tgz", + "sha": "b103a96b3d04c1e1066eb65da304aa671795588f", + "registry": "npmjs" + }, + "types-registry-0.1.58.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.58.tgz", + "sha": "7747a721d1ce777a8045d35c89c98962f6d188a2", + "registry": "npmjs" + }, + "types-registry-0.1.59.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.59.tgz", + "sha": "df5c1f892967589d1facb57b9bd7d4ffe6b7a63f", + "registry": "npmjs" + }, + "types-registry-0.1.60.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.60.tgz", + "sha": "07c4dabd1977b06ad852731a33a2fbb4839aba90", + "registry": "npmjs" + }, + "types-registry-0.1.61.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.61.tgz", + "sha": "882510534fa6f83d090e32e379885e07b17201cd", + "registry": "npmjs" + }, + "types-registry-0.1.62.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.62.tgz", + "sha": "1152d5acec32d2d157a359e3f6343fa18062b475", + "registry": "npmjs" + }, + "types-registry-0.1.63.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.63.tgz", + "sha": "7d2346bca057b26ef15dcd2a9bf79d0ea722fd9d", + "registry": "npmjs" + }, + "types-registry-0.1.64.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.64.tgz", + "sha": "7e4a47d6dee4ea6066e0b2bb616392195d6ec578", + "registry": "npmjs" + }, + "types-registry-0.1.65.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.65.tgz", + "sha": "2ff68a2efdca57c0e9d95d05ca5bbf96d4c74d4f", + "registry": "npmjs" + }, + "types-registry-0.1.66.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.66.tgz", + "sha": "b1abd809723e8ea30bfec3320e80411b583065f0", + "registry": "npmjs" + }, + "types-registry-0.1.67.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.67.tgz", + "sha": "559c2ab178a5e21a1dd7829d477d6df21143c206", + "registry": "npmjs" + }, + "types-registry-0.1.68.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.68.tgz", + "sha": "ff8596219c688465a94f83efa32e2105a5871170", + "registry": "npmjs" + }, + "types-registry-0.1.69.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.69.tgz", + "sha": "4b672e2073ffe75af5ae9348bcb2a69f1fdc361d", + "registry": "npmjs" + }, + "types-registry-0.1.70.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.70.tgz", + "sha": "717885a9f192d33c5a86886a6d9846bfeb14a3c2", + "registry": "npmjs" + }, + "types-registry-0.1.71.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.71.tgz", + "sha": "d49db1a9b7ada82e9375ffefeb6f1ed546f1c1db", + "registry": "npmjs" + }, + "types-registry-0.1.72.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.72.tgz", + "sha": "36af228dfc9155c4663042ca1bd95cbfb242dec5", + "registry": "npmjs" + }, + "types-registry-0.1.73.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.73.tgz", + "sha": "3f7296da3cb4dd773147f6e5e899e20c70a7f6e6", + "registry": "npmjs" + }, + "types-registry-0.1.74.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.74.tgz", + "sha": "e2f361f94c57d35a2215185944d528ef806608a2", + "registry": "npmjs" + }, + "types-registry-0.1.75.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.75.tgz", + "sha": "4e7b746ca6712baca10c6775b5efe40e271dd58c", + "registry": "npmjs" + }, + "types-registry-0.1.76.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.76.tgz", + "sha": "51795fa12331a01fd544955abe802ba6b0d20864", + "registry": "npmjs" + }, + "types-registry-0.1.77.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.77.tgz", + "sha": "4604038ae24254459ea88ee4f1bcaac1b44d3bfb", + "registry": "npmjs" + }, + "types-registry-0.1.78.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.78.tgz", + "sha": "45cd32534e4429b52d0a0ab8d9ec8f98270d27c6", + "registry": "npmjs" + }, + "types-registry-0.1.79.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.79.tgz", + "sha": "3c81fe6126818032a820af3ea33942813a58f42d", + "registry": "npmjs" + }, + "types-registry-0.1.80.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.80.tgz", + "sha": "ccce73a0570042b447403107514058f9919659b0", + "registry": "npmjs" + }, + "types-registry-0.1.81.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.81.tgz", + "sha": "a9399c514aae052ca1d356c231a8fb135410c37a", + "registry": "npmjs" + }, + "types-registry-0.1.82.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.82.tgz", + "sha": "6c6418ca25dfa7470ab958ae0bbd88b255501ed3", + "registry": "npmjs" + }, + "types-registry-0.1.83.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.83.tgz", + "sha": "e3dd0ec47e127a15a1e6ea17d38b8acd3c3d40a1", + "registry": "npmjs" + }, + "types-registry-0.1.84.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.84.tgz", + "sha": "33c491a90c3cf7da2f5a7a0acfa6e8d9af083bca", + "registry": "npmjs" + }, + "types-registry-0.1.85.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.85.tgz", + "sha": "f3e4ea5677a402e42a7274a1893b989d78585179", + "registry": "npmjs" + }, + "types-registry-0.1.86.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.86.tgz", + "sha": "01c9a18d2a9beec15ad97b882ba4ce3f1a58330d", + "registry": "npmjs" + }, + "types-registry-0.1.87.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.87.tgz", + "sha": "cab69b15f661237cb089c4a8a7cb902cc9ffe9bf", + "registry": "npmjs" + }, + "types-registry-0.1.88.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.88.tgz", + "sha": "a2fe62b00a715a7dd7b81e64b9dfab3a9122bc7c", + "registry": "npmjs" + }, + "types-registry-0.1.89.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.89.tgz", + "sha": "072774a499602706cc517e594d2f17614ebd2fce", + "registry": "npmjs" + }, + "types-registry-0.1.90.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.90.tgz", + "sha": "d7b6f76452e4b2c26e0e47a414322a7de105edab", + "registry": "npmjs" + }, + "types-registry-0.1.91.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.91.tgz", + "sha": "7fdb47fd198d73b5993d359b5cf83742d50078be", + "registry": "npmjs" + }, + "types-registry-0.1.92.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.92.tgz", + "sha": "d8f38a54455aaef0781a1766b28ca150e6771382", + "registry": "npmjs" + }, + "types-registry-0.1.93.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.93.tgz", + "sha": "8ead6659a0a28eba88f44e5b2df8b348a2821151", + "registry": "npmjs" + }, + "types-registry-0.1.94.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.94.tgz", + "sha": "5620a83a458c9a2cb2e2333390e80fd4238c5c5c", + "registry": "npmjs" + }, + "types-registry-0.1.95.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.95.tgz", + "sha": "b8fbfdfb9b56124baf644cd8991258a20021f7d4", + "registry": "npmjs" + }, + "types-registry-0.1.96.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.96.tgz", + "sha": "269dbf9bdf6ec82db506a3aec66321452ec602a8", + "registry": "npmjs" + }, + "types-registry-0.1.97.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.97.tgz", + "sha": "0f9b8773190c6d70da1ac885a2b71860edf4149b", + "registry": "npmjs" + }, + "types-registry-0.1.98.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.98.tgz", + "sha": "66a5ce42f22c7a150cad80faa0bdfd23604ccb6d", + "registry": "npmjs" + }, + "types-registry-0.1.99.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.99.tgz", + "sha": "f8abf464eeb68ef28f04039066cb64354cdda211", + "registry": "npmjs" + }, + "types-registry-0.1.100.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.100.tgz", + "sha": "c121ae2afabafe0065345a06bcfce1365d61c12f", + "registry": "npmjs" + }, + "types-registry-0.1.101.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.101.tgz", + "sha": "a59b8d0d154d73893137c2ea892275a970323548", + "registry": "npmjs" + }, + "types-registry-0.1.102.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.102.tgz", + "sha": "01853b6207f2308093d0ef5ea07367d73c83afdd", + "registry": "npmjs" + }, + "types-registry-0.1.103.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.103.tgz", + "sha": "e77541f4cbadb8610ba2fc762e4df0520e93e96c", + "registry": "npmjs" + }, + "types-registry-0.1.104.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.104.tgz", + "sha": "0c3e1451533585c7556bfebb7ddf655681edac3f", + "registry": "npmjs" + }, + "types-registry-0.1.105.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.105.tgz", + "sha": "cd935213854473a01f51a02ec779f27bd0a866fb", + "registry": "npmjs" + }, + "types-registry-0.1.106.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.106.tgz", + "sha": "5a4011f7c3c39659d24efece07b0edeea05f8e53", + "registry": "npmjs" + }, + "types-registry-0.1.107.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.107.tgz", + "sha": "fa621f852106b5e701193bf521bef51fe1b226b8", + "registry": "npmjs" + }, + "types-registry-0.1.108.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.108.tgz", + "sha": "1261157df981ac918b78acc89587afc9745c1984", + "registry": "npmjs" + }, + "types-registry-0.1.109.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.109.tgz", + "sha": "c75775b35e71d7d174ce831489e580fada4f5445", + "registry": "npmjs" + }, + "types-registry-0.1.110.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.110.tgz", + "sha": "de38f8b1b83d1c69473826b3fa773ff3465ec280", + "registry": "npmjs" + }, + "types-registry-0.1.111.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.111.tgz", + "sha": "cfca8a9139a34e79201df1ff022fec69852d5ebb", + "registry": "npmjs" + }, + "types-registry-0.1.112.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.112.tgz", + "sha": "215026ac8bca2dc266bc5e977490308eb064c3f5", + "registry": "npmjs" + }, + "types-registry-0.1.113.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.113.tgz", + "sha": "c52754150956276f33a82f557eb4fb26027c049f", + "registry": "npmjs" + }, + "types-registry-0.1.114.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.114.tgz", + "sha": "ca7da8c35ebc558133bac9a2d8d6a744f976d4dc", + "registry": "npmjs" + }, + "types-registry-0.1.115.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.115.tgz", + "sha": "212e33f9e98140b84725736527911fbd7a3e01b5", + "registry": "npmjs" + }, + "types-registry-0.1.116.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.116.tgz", + "sha": "bceda1ed65cfd97892b517becff0cd79292d6154", + "registry": "npmjs" + }, + "types-registry-0.1.117.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.117.tgz", + "sha": "587b78c372be19c6a3639a8ec5b94c05d29bd8ec", + "registry": "npmjs" + }, + "types-registry-0.1.118.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.118.tgz", + "sha": "8ae058d988807b3a7f3b7b4c062fbefdd3e2a1db", + "registry": "npmjs" + }, + "types-registry-0.1.119.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.119.tgz", + "sha": "13d18978bb25809920db9692c2bc9e49c375c4a3", + "registry": "npmjs" + }, + "types-registry-0.1.120.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.120.tgz", + "sha": "4b93344c3b93be244a451a3b64003abab10e1b72", + "registry": "npmjs" + }, + "types-registry-0.1.121.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.121.tgz", + "sha": "40334d786eefbe022b735c3f3a65970ef8bcf15b", + "registry": "npmjs" + }, + "types-registry-0.1.122.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.122.tgz", + "sha": "ba0ec646b4099e9a7bfa36cf2f0c0e4f935c695c", + "registry": "npmjs" + }, + "types-registry-0.1.123.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.123.tgz", + "sha": "16edf444ea6db5401261beee4ece5ccf59059192", + "registry": "npmjs" + }, + "types-registry-0.1.124.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.124.tgz", + "sha": "90e038c3a00248fd7dbc0c5345c9d71b32843990", + "registry": "npmjs" + }, + "types-registry-0.1.125.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.125.tgz", + "sha": "9d92d9113bdc2a22cec34d52c9467f699d4c1007", + "registry": "npmjs" + }, + "types-registry-0.1.126.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.126.tgz", + "sha": "a2e85fc8cd62d67e2453e239c2a61f58deae5519", + "registry": "npmjs" + }, + "types-registry-0.1.127.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.127.tgz", + "sha": "1cb49572f94e092bae3ab7cb89c6b360b909bc6d", + "registry": "npmjs" + }, + "types-registry-0.1.128.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.128.tgz", + "sha": "2b3bb079e668f6f6233b9c69bbf86a2931e15161", + "registry": "npmjs" + }, + "types-registry-0.1.129.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.129.tgz", + "sha": "407921e5e74e41b03957db663cc77c686f4c8459", + "registry": "npmjs" + }, + "types-registry-0.1.130.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.130.tgz", + "sha": "22ab87cfdfd9e21cbae6581d1dcc6e135fca5cf5", + "registry": "npmjs" + }, + "types-registry-0.1.131.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.131.tgz", + "sha": "79a1890fdcae7b9f1ced13950a67ab4cf2dd779a", + "registry": "npmjs" + }, + "types-registry-0.1.132.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.132.tgz", + "sha": "07b30a3f045fc49272080e9c8cc80f9cdf1e5f54", + "registry": "npmjs" + }, + "types-registry-0.1.133.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.133.tgz", + "sha": "a87bbea6c558708d8fb59fcc51b7ad36ab4b12c3", + "registry": "npmjs" + }, + "types-registry-0.1.134.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.134.tgz", + "sha": "64675ff3dbfbdde385c9a3465de9360d24051a31", + "registry": "npmjs" + }, + "types-registry-0.1.135.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.135.tgz", + "sha": "67eb209317a648db385e2a4217d7556dd06db7ae", + "registry": "npmjs" + }, + "types-registry-0.1.136.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.136.tgz", + "sha": "bba9ab11e20085c6cadb68a659294070494bc0bf", + "registry": "npmjs" + }, + "types-registry-0.1.137.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.137.tgz", + "sha": "3b00960c288699c87e25bf97557a2b3d59ad0f50", + "registry": "npmjs" + }, + "types-registry-0.1.138.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.138.tgz", + "sha": "65c6b1e276bffaf79096ae680d976b0cb34de7e9", + "registry": "npmjs" + }, + "types-registry-0.1.139.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.139.tgz", + "sha": "e4e16da8f65f583d351f222fbf4d302e16b0b5fa", + "registry": "npmjs" + }, + "types-registry-0.1.140.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.140.tgz", + "sha": "de2dfb31cec0ab463f4e47f8b628dd6189403097", + "registry": "npmjs" + }, + "types-registry-0.1.141.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.141.tgz", + "sha": "2b62e1b4f751dcc46f0024d56cdd2464bc2b0f48", + "registry": "npmjs" + }, + "types-registry-0.1.142.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.142.tgz", + "sha": "d574be3f718bb866749562c1f699905295c1dec3", + "registry": "npmjs" + }, + "types-registry-0.1.143.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.143.tgz", + "sha": "31fe2084d692d8416bd6244c8200782f169b4648", + "registry": "npmjs" + }, + "types-registry-0.1.144.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.144.tgz", + "sha": "8c6ffbbed34ee923baed53346fa384ad1a3f43e7", + "registry": "npmjs" + }, + "types-registry-0.1.145.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.145.tgz", + "sha": "a18e305db2d2e1d261683e17a70bd3affe2a774b", + "registry": "npmjs" + }, + "types-registry-0.1.146.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.146.tgz", + "sha": "43c98228c792596c5fa6a8b4387a0e24551d6710", + "registry": "npmjs" + }, + "types-registry-0.1.147.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.147.tgz", + "sha": "e5d7973020bc996b9b14377703efc052d430f5ab", + "registry": "npmjs" + }, + "types-registry-0.1.148.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.148.tgz", + "sha": "e3363cc59bfdf1ec687aed1977037724cd7b86f9", + "registry": "npmjs" + }, + "types-registry-0.1.149.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.149.tgz", + "sha": "7d66f7dfe77c755152405ce82014b3bcc7ba5a4f", + "registry": "npmjs" + }, + "types-registry-0.1.150.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.150.tgz", + "sha": "e3722ae9334b9099775288611b3c7ef21d189d78", + "registry": "npmjs" + }, + "types-registry-0.1.151.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.151.tgz", + "sha": "cf87ff4570463490fd984cfe8812e0f4447623aa", + "registry": "npmjs" + }, + "types-registry-0.1.152.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.152.tgz", + "sha": "de5898f41891e8f06637492ba049712fb0fc9833", + "registry": "npmjs" + }, + "types-registry-0.1.153.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.153.tgz", + "sha": "a0866f38fcd9c58a71a5344d2911e229bbef62f9", + "registry": "npmjs" + }, + "types-registry-0.1.154.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.154.tgz", + "sha": "f742a3b3e2410282f52983fd68aadada9de1f771", + "registry": "npmjs" + }, + "types-registry-0.1.155.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.155.tgz", + "sha": "e447647fd54ecdc472a9036982afa97f838685d9", + "registry": "npmjs" + }, + "types-registry-0.1.156.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.156.tgz", + "sha": "5a0c54eccdc977976ecad3753e019ec9ca9284d9", + "registry": "npmjs" + }, + "types-registry-0.1.157.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.157.tgz", + "sha": "378debe00e66684cd4e9627ccff8014e82599fbc", + "registry": "npmjs" + }, + "types-registry-0.1.158.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.158.tgz", + "sha": "4a87b01b0cb2adc9f56dc79d31b74fe205ea39dd", + "registry": "npmjs" + }, + "types-registry-0.1.159.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.159.tgz", + "sha": "1c5f210d91e0fb6dbf01b6f4c7615051bda98fcf", + "registry": "npmjs" + }, + "types-registry-0.1.160.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.160.tgz", + "sha": "f0c428d539e67bf593aa876cc7d06fbde4781a03", + "registry": "npmjs" + }, + "types-registry-0.1.161.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.161.tgz", + "sha": "498a5edd228c1196892ad133b4a6249390794860", + "registry": "npmjs" + }, + "types-registry-0.1.162.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.162.tgz", + "sha": "3c0d67f357a18e5daf77e1a89d00634a3a82b8e9", + "registry": "npmjs" + }, + "types-registry-0.1.163.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.163.tgz", + "sha": "6f6259a6408b6158dc99e7c74e7898a9b28ff0f5", + "registry": "npmjs" + }, + "types-registry-0.1.164.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.164.tgz", + "sha": "b29cb76ccaca9998d15cc92b5228da0f65d96d6b", + "registry": "npmjs" + }, + "types-registry-0.1.165.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.165.tgz", + "sha": "53c6cd9bf56d9b29a5382360a1121a58f25b8edd", + "registry": "npmjs" + }, + "types-registry-0.1.166.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.166.tgz", + "sha": "4af7ab3d859027023f26ff7550a548f53d750bda", + "registry": "npmjs" + }, + "types-registry-0.1.167.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.167.tgz", + "sha": "f53c76a2468cdabc6b0838bc8a4a10e1310c6ff8", + "registry": "npmjs" + }, + "types-registry-0.1.168.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.168.tgz", + "sha": "209abca7047ae40862cbd1f83ae60e6ad9b616e7", + "registry": "npmjs" + }, + "types-registry-0.1.169.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.169.tgz", + "sha": "9eb49f679585c423746f3b138df969ff5dcd9d55", + "registry": "npmjs" + }, + "types-registry-0.1.170.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.170.tgz", + "sha": "e13b6bc138cae2c264df1f73d390f3052d68cfde", + "registry": "npmjs" + }, + "types-registry-0.1.171.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.171.tgz", + "sha": "4092ec0b60e27ccdfa47ca1d729912e936367c53", + "registry": "npmjs" + }, + "types-registry-0.1.172.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.172.tgz", + "sha": "85403fa89e2a2b4ed904a254310df20ffe213a68", + "registry": "npmjs" + }, + "types-registry-0.1.173.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.173.tgz", + "sha": "515e387db380d9a4e95050f597a34744af68a8b1", + "registry": "npmjs" + }, + "types-registry-0.1.174.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.174.tgz", + "sha": "40437ee3a3f88fd00d3e124ca3f3215d7fd343ea", + "registry": "npmjs" + }, + "types-registry-0.1.175.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.175.tgz", + "sha": "71815d4f7c6b155575f8e658843826c9980fd7b7", + "registry": "npmjs" + }, + "types-registry-0.1.176.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.176.tgz", + "sha": "6432455e5aa592d8416d363168b0f285deec08d3", + "registry": "npmjs" + }, + "types-registry-0.1.177.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.177.tgz", + "sha": "a15525704306516a0734f7ccc52dcd47bdcde1fd", + "registry": "npmjs" + }, + "types-registry-0.1.178.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.178.tgz", + "sha": "1ff5d1d010166b66c85bc54a3ab2926c2b9b1281", + "registry": "npmjs" + }, + "types-registry-0.1.179.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.179.tgz", + "sha": "229f689bf74a33c558f743bc0626bfa378141255", + "registry": "npmjs" + }, + "types-registry-0.1.180.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.180.tgz", + "sha": "89497027d7d6c4f3762c78824af75958aaeb4a49", + "registry": "npmjs" + }, + "types-registry-0.1.181.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.181.tgz", + "sha": "08ad26ef8bc3f01f561b06b08e543f7c319a8d34", + "registry": "npmjs" + }, + "types-registry-0.1.182.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.182.tgz", + "sha": "528d43cf83094e47a5be6c86dba0465f5440f13d", + "registry": "npmjs" + }, + "types-registry-0.1.183.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.183.tgz", + "sha": "3b611231f011ec9dd5109f492a3539f2bc9960b3", + "registry": "npmjs" + }, + "types-registry-0.1.184.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.184.tgz", + "sha": "e64abfea6f5f9e08cfb15c95563c0068c837af30", + "registry": "npmjs" + }, + "types-registry-0.1.185.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.185.tgz", + "sha": "df535de4a5500ecf090361c8b72b45585bef472b", + "registry": "npmjs" + }, + "types-registry-0.1.186.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.186.tgz", + "sha": "e208b9618300d32be117689719e3f96fe6481461", + "registry": "npmjs" + }, + "types-registry-0.1.187.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.187.tgz", + "sha": "767cbc327891047912ec2d593f8f85fd3f3ac5d0", + "registry": "npmjs" + }, + "types-registry-0.1.188.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.188.tgz", + "sha": "9653dc682fd2b27e2dddd240f989579a7fbdf064", + "registry": "npmjs" + }, + "types-registry-0.1.189.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.189.tgz", + "sha": "454a30c7faa8d4d179a9d19312f8578673673467", + "registry": "npmjs" + }, + "types-registry-0.1.190.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.190.tgz", + "sha": "f999a44ab198263c94a398d82619976efda8feff", + "registry": "npmjs" + }, + "types-registry-0.1.191.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.191.tgz", + "sha": "57186963e62f74b24047e6e5319c6996df84bdd6", + "registry": "npmjs" + }, + "types-registry-0.1.192.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.192.tgz", + "sha": "55a462aa19b31f8344a3849bf756b5321ee07fb6", + "registry": "npmjs" + }, + "types-registry-0.1.193.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.193.tgz", + "sha": "ccd483a8e44936ab61b193313b6c4a6dd64dae31", + "registry": "npmjs" + }, + "types-registry-0.1.194.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.194.tgz", + "sha": "87777da61fcf9a55335e5f653dc84c5667b3a1e3", + "registry": "npmjs" + }, + "types-registry-0.1.195.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.195.tgz", + "sha": "03115744a0fe722806f0c143221f1222df51c871", + "registry": "npmjs" + }, + "types-registry-0.1.196.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.196.tgz", + "sha": "c946af6b10c50c8b54cab678506285c2349f5798", + "registry": "npmjs" + }, + "types-registry-0.1.197.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.197.tgz", + "sha": "983accf13ff81799128e9d85a0711ba6dda67ee9", + "registry": "npmjs" + }, + "types-registry-0.1.198.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.198.tgz", + "sha": "c9d0ff7d329af23018781d0ccfee5253a9b974d3", + "registry": "npmjs" + }, + "types-registry-0.1.199.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.199.tgz", + "sha": "305aae690264260539a48c4e39c260e2cc791f11", + "registry": "npmjs" + }, + "types-registry-0.1.200.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.200.tgz", + "sha": "52d097c4bfe52020dfc424a0b243f456ccbd1919", + "registry": "npmjs" + }, + "types-registry-0.1.201.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.201.tgz", + "sha": "c2e08a86d129f66f88421a8602770a7a1168f672", + "registry": "npmjs" + }, + "types-registry-0.1.202.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.202.tgz", + "sha": "15ee68ae662d1ac52efddd01605b2fba6379dd9c", + "registry": "npmjs" + }, + "types-registry-0.1.203.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.203.tgz", + "sha": "d3237fbe7ed6f682c2be52efa1b78070dea21fcb", + "registry": "npmjs" + }, + "types-registry-0.1.204.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.204.tgz", + "sha": "2232fc5de3f5ae4bea52d0b0ee3c6b9ffbdca0a6", + "registry": "npmjs" + }, + "types-registry-0.1.205.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.205.tgz", + "sha": "fceb2855da5c31332876c218db60aa7be987f7f0", + "registry": "npmjs" + }, + "types-registry-0.1.206.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.206.tgz", + "sha": "41eb7b63a763bf66d9f3ff5a2a4fd436b35701ba", + "registry": "npmjs" + }, + "types-registry-0.1.207.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.207.tgz", + "sha": "d1fcfe4637b2b5095b66faa5aef98907fe7169bd", + "registry": "npmjs" + }, + "types-registry-0.1.208.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.208.tgz", + "sha": "285aca47c1b25421552d8d74b5fcc4a453952fe1", + "registry": "npmjs" + }, + "types-registry-0.1.209.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.209.tgz", + "sha": "b168b5a19af0b2f4d053781f8d8b226d338a3570", + "registry": "npmjs" + }, + "types-registry-0.1.210.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.210.tgz", + "sha": "48fb736015d685dea8cf57a894387ad145dce1d9", + "registry": "npmjs" + }, + "types-registry-0.1.211.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.211.tgz", + "sha": "d99f3dda6c3daabe7af1d987f1b4b3a36fc5809f", + "registry": "npmjs" + }, + "types-registry-0.1.212.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.212.tgz", + "sha": "1e5c46945e5af5d7380dfe67f76926f37ce29361", + "registry": "npmjs" + }, + "types-registry-0.1.213.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.213.tgz", + "sha": "894988f5231c322d7b42f6c60ba825be85241a7c", + "registry": "npmjs" + }, + "types-registry-0.1.214.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.214.tgz", + "sha": "8f259126972401923db6252519dd314d9cf40899", + "registry": "npmjs" + }, + "types-registry-0.1.215.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.215.tgz", + "sha": "3fde30ac0e8785adcf6eeaba34f823232268b341", + "registry": "npmjs" + }, + "types-registry-0.1.216.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.216.tgz", + "sha": "549454de71fb98e57319c9d00e038db19747e75a", + "registry": "npmjs" + }, + "types-registry-0.1.217.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.217.tgz", + "sha": "6253d0799dda59fef90163a9c8ea3e0233dbb5a6", + "registry": "npmjs" + }, + "types-registry-0.1.218.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.218.tgz", + "sha": "9cee2c1db8c70b8fb0697c0c87aa7e50438ade01", + "registry": "npmjs" + }, + "types-registry-0.1.219.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.219.tgz", + "sha": "52ab1bbc63f921a0aaf5fe9c197729ff52c9edd0", + "registry": "npmjs" + }, + "types-registry-0.1.220.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.220.tgz", + "sha": "46dacfce8378751c228e337f6e626e0d32affc68", + "registry": "npmjs" + }, + "types-registry-0.1.221.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.221.tgz", + "sha": "14246b49169fb1f4f5fb9ba6512a596189f9c87a", + "registry": "npmjs" + }, + "types-registry-0.1.222.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.222.tgz", + "sha": "107fc2ab7bf264ff48ae2a353872bbb52ba10cce", + "registry": "npmjs" + }, + "types-registry-0.1.223.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.223.tgz", + "sha": "b0c6816c89daac9b1eee89ff9614ab50142e76e9", + "registry": "npmjs" + }, + "types-registry-0.1.224.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.224.tgz", + "sha": "03c0fe731eac6e9d5f0881ba9ffb8af63284813f", + "registry": "npmjs" + }, + "types-registry-0.1.225.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.225.tgz", + "sha": "e53cc6c9172644728b450592c4b0710b6447dae3", + "registry": "npmjs" + }, + "types-registry-0.1.226.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.226.tgz", + "sha": "c6e1e88b3caca9adc5e9f2eefa7ace76c6b39b97", + "registry": "npmjs" + }, + "types-registry-0.1.227.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.227.tgz", + "sha": "a14be31756a94a16e33d55b148bc7f8ea9dc8d18", + "registry": "npmjs" + }, + "types-registry-0.1.228.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.228.tgz", + "sha": "797adb60132e29e91fbd336f4c6d9ef53046737a", + "registry": "npmjs" + }, + "types-registry-0.1.229.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.229.tgz", + "sha": "05c192e2124de6632b165c3285bc02b18b64a7b7", + "registry": "npmjs" + }, + "types-registry-0.1.230.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.230.tgz", + "sha": "03138755af1d5700abe20ed7e0211d980fb8bc7f", + "registry": "npmjs" + }, + "types-registry-0.1.231.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.231.tgz", + "sha": "3a16752e8464b388c7c288ec541a3b9b1038530a", + "registry": "npmjs" + }, + "types-registry-0.1.232.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.232.tgz", + "sha": "31093cf70e8a11429783fa6b6a6091f4982a4ea9", + "registry": "npmjs" + }, + "types-registry-0.1.233.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.233.tgz", + "sha": "788a087d2305d02ece91e8d7b6e7513d362ecf1d", + "registry": "npmjs" + }, + "types-registry-0.1.234.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.234.tgz", + "sha": "ee093840eb135709cf2f58375407347103fb7680", + "registry": "npmjs" + }, + "types-registry-0.1.235.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.235.tgz", + "sha": "d71a8a912af0b413ee105dd1389b62fcf95f19a8", + "registry": "npmjs" + }, + "types-registry-0.1.236.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.236.tgz", + "sha": "7932770eebecf04e82a2fb288a8ae4ec06d5f364", + "registry": "npmjs" + }, + "types-registry-0.1.237.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.237.tgz", + "sha": "bc8f27af039ece128cfecbcbfdff02f245fca316", + "registry": "npmjs" + }, + "types-registry-0.1.238.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.238.tgz", + "sha": "6aad731532fc15187880f603216eb54e026f7dbc", + "registry": "npmjs" + }, + "types-registry-0.1.239.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.239.tgz", + "sha": "d4bbe83b08045ce5bf8b9db18558e4d361433709", + "registry": "npmjs" + }, + "types-registry-0.1.240.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.240.tgz", + "sha": "b1c1f96bec6f3eb5a62c1c65a4d8949e049c9b98", + "registry": "npmjs" + }, + "types-registry-0.1.241.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.241.tgz", + "sha": "273864b530291742daa791c841fb60c414eaf351", + "registry": "npmjs" + }, + "types-registry-0.1.242.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.242.tgz", + "sha": "68159fcf39ad1c3e5235290e0caa254704c30271", + "registry": "npmjs" + }, + "types-registry-0.1.243.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.243.tgz", + "sha": "35c47f291fc055bc48ebf7fea5c60506363360d5", + "registry": "npmjs" + }, + "types-registry-0.1.244.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.244.tgz", + "sha": "3d0e5f0a3b1694e05ce1c93aa7232b5d9dc9ad05", + "registry": "npmjs" + }, + "types-registry-0.1.245.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.245.tgz", + "sha": "7aa830d943fc301db4161c2b5d46b08fbd6a61c3", + "registry": "npmjs" + }, + "types-registry-0.1.246.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.246.tgz", + "sha": "e83b26b441c8ea9931568cd8bf2649cdec131371", + "registry": "npmjs" + }, + "types-registry-0.1.247.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.247.tgz", + "sha": "5fe00e6995438ae116cd61cfe0a6cc8f16a259c8", + "registry": "npmjs" + }, + "types-registry-0.1.248.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.248.tgz", + "sha": "78ce26182a8dcb5d450b6cbf8eac0bcfaa2b51c6", + "registry": "npmjs" + }, + "types-registry-0.1.249.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.249.tgz", + "sha": "5b38d3216ccdc853185964985eb8fd7ce6fb1413", + "registry": "npmjs" + }, + "types-registry-0.1.250.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.250.tgz", + "sha": "1bc9013007312523734f10c67c2eb82c6fd052e5", + "registry": "npmjs" + }, + "types-registry-0.1.251.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.251.tgz", + "sha": "ffb74268878bea0009f43cc0a45f18bd73211167", + "registry": "npmjs" + }, + "types-registry-0.1.252.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.252.tgz", + "sha": "adafa2695208aac610e53caec8948944fcf1291d", + "registry": "npmjs" + }, + "types-registry-0.1.253.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.253.tgz", + "sha": "5b4629c174d29863163270f63742bd37aa7c3b1e", + "registry": "npmjs" + }, + "types-registry-0.1.254.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.254.tgz", + "sha": "8891f7b887994aa932bee92f55a4d3d68b6d62ac", + "registry": "npmjs" + }, + "types-registry-0.1.255.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.255.tgz", + "sha": "89bdd0b1a32ba91417f8a66c50cc9c8410327ab6", + "registry": "npmjs" + }, + "types-registry-0.1.256.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.256.tgz", + "sha": "b8dfcf1faa8ec46408d6a4bcbe50f831a860fe8f", + "registry": "npmjs" + }, + "types-registry-0.1.257.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.257.tgz", + "sha": "ac6a8049c8c5c41a152d8f5a9d74c71cacb8e629", + "registry": "npmjs" + }, + "types-registry-0.1.258.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.258.tgz", + "sha": "9786257310b2f6890e72944eff80cf5206469128", + "registry": "npmjs" + }, + "types-registry-0.1.259.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.259.tgz", + "sha": "a81be860d1316c43cb5dc50dfbcb36d2504990e9", + "registry": "npmjs" + }, + "types-registry-0.1.260.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.260.tgz", + "sha": "1e7201c33237d5420277b1f7544678cca82e22bb", + "registry": "npmjs" + }, + "types-registry-0.1.261.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.261.tgz", + "sha": "576f2fca1e08a881cb2b1a72e31a50c5c7ec05b9", + "registry": "npmjs" + }, + "types-registry-0.1.262.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.262.tgz", + "sha": "461d884a3cec9aae59a993c109b8f59dad25eefd", + "registry": "npmjs" + }, + "types-registry-0.1.263.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.263.tgz", + "sha": "a64696b532871d3d9b2241455262a5b1ec329c62", + "registry": "npmjs" + }, + "types-registry-0.1.264.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.264.tgz", + "sha": "2c665410c693103a5cb00abb1fa2368d15337b7c", + "registry": "npmjs" + }, + "types-registry-0.1.265.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.265.tgz", + "sha": "e5643ae348869f00acfbf4cf75816162738a56bf", + "registry": "npmjs" + }, + "types-registry-0.1.266.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.266.tgz", + "sha": "a13f9d56ef528a379f462fb7373cff1ff465f64e", + "registry": "npmjs" + }, + "types-registry-0.1.267.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.267.tgz", + "sha": "50c495f89fce05c22e03dbd6bb564ade83cea2f3", + "registry": "npmjs" + }, + "types-registry-0.1.268.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.268.tgz", + "sha": "9cc199c5ce4f40152379cc2aa4ac08aa85496781", + "registry": "npmjs" + }, + "types-registry-0.1.269.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.269.tgz", + "sha": "c9caf8fdcf124fe6396af48a9ab0cda1df70e6c3", + "registry": "npmjs" + }, + "types-registry-0.1.270.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.270.tgz", + "sha": "0d121f44d3c09843a33dbb7b4cadf02a10d4893d", + "registry": "npmjs" + }, + "types-registry-0.1.271.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.271.tgz", + "sha": "83b914f8cda1a39d2cb268641eaee92797602db1", + "registry": "npmjs" + }, + "types-registry-0.1.272.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.272.tgz", + "sha": "40c45740f4c732111db7879a81c67bcaf310a36b", + "registry": "npmjs" + }, + "types-registry-0.1.273.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.273.tgz", + "sha": "2ce83b2948e1f7e617ae3ee138f6b5b5a8d9cc44", + "registry": "npmjs" + }, + "types-registry-0.1.274.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.274.tgz", + "sha": "ba6e553c51365443303afa558f9a4f625534a45f", + "registry": "npmjs" + }, + "types-registry-0.1.275.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.275.tgz", + "sha": "97e5f794f71d531ca1349248db593ad08d3c9586", + "registry": "npmjs" + }, + "types-registry-0.1.276.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.276.tgz", + "sha": "4927d71b02eb71f91841a7c2185ebe32d81a0370", + "registry": "npmjs" + }, + "types-registry-0.1.277.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.277.tgz", + "sha": "d099562add2ea2888513eba4144c187e89825272", + "registry": "npmjs" + }, + "types-registry-0.1.278.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.278.tgz", + "sha": "0e5d7cec35996f746e50a54a3a52465b762589de", + "registry": "npmjs" + }, + "types-registry-0.1.279.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.279.tgz", + "sha": "462d9f0ec0bbd70bc1b0f7cf19282368edccc9d3", + "registry": "npmjs" + }, + "types-registry-0.1.280.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.280.tgz", + "sha": "be7c0ceec26ca6c9adbeee6a65baad74901b9bd0", + "registry": "npmjs" + }, + "types-registry-0.1.281.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.281.tgz", + "sha": "3572c2051291fc56f9f533cdbc4b511b9903a90e", + "registry": "npmjs" + }, + "types-registry-0.1.282.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.282.tgz", + "sha": "6efe30ad0dad25cfda9cbed8a548e9a84589a501", + "registry": "npmjs" + }, + "types-registry-0.1.283.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.283.tgz", + "sha": "d91fa421765ca8f3406b33a66e998bb385f77f05", + "registry": "npmjs" + }, + "types-registry-0.1.284.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.284.tgz", + "sha": "a70f68ab06d6598c0914c7827521463e78beb9ae", + "registry": "npmjs" + }, + "types-registry-0.1.285.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.285.tgz", + "sha": "5b8a164d903693e1062e6b13afcaf818453b81de", + "registry": "npmjs" + }, + "types-registry-0.1.286.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.286.tgz", + "sha": "f9920260a205004ccf787e22e82a27ec38e580ab", + "registry": "npmjs" + }, + "types-registry-0.1.287.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.287.tgz", + "sha": "f9bdbb20f4ff47b229470f041b22f9977ec0ff9a", + "registry": "npmjs" + }, + "types-registry-0.1.288.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.288.tgz", + "sha": "55e2fefb3e23f062d49f16eae7c73458a2bb4b6f", + "registry": "npmjs" + }, + "types-registry-0.1.289.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.289.tgz", + "sha": "e6d460d630869f45a19087b521c82fda39820a1a", + "registry": "npmjs" + }, + "types-registry-0.1.290.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.290.tgz", + "sha": "bd0eb02438f5ce202c845b69b6f691bf8607de42", + "registry": "npmjs" + }, + "types-registry-0.1.291.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.291.tgz", + "sha": "2294eac015eca1f68f63b42f755a428fbe542c95", + "registry": "npmjs" + }, + "types-registry-0.1.292.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.292.tgz", + "sha": "25f8ded167d5ae06c68c616f805dc5028c8457d1", + "registry": "npmjs" + }, + "types-registry-0.1.293.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.293.tgz", + "sha": "67973938869b2122e6ad85f03050dd2b536a4999", + "registry": "npmjs" + }, + "types-registry-0.1.294.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.294.tgz", + "sha": "d0e0ba7b3ce7e7a888b0c2722f8f95f15386073a", + "registry": "npmjs" + }, + "types-registry-0.1.295.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.295.tgz", + "sha": "1a142603bfacaca502785e32d3d9022552473425", + "registry": "npmjs" + }, + "types-registry-0.1.296.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.296.tgz", + "sha": "18b66e30cb5eced688f286beb97a23316e7169e6", + "registry": "npmjs" + }, + "types-registry-0.1.297.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.297.tgz", + "sha": "0924223f7cc05e13f3e8cf743a4cbda78a553519", + "registry": "npmjs" + }, + "types-registry-0.1.298.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.298.tgz", + "sha": "37c8a605d1f824915a8871e16d931cabdeb17bed", + "registry": "npmjs" + }, + "types-registry-0.1.299.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.299.tgz", + "sha": "a4c6e36da0f3dc3a223f4c09ec1e8f7967c07014", + "registry": "npmjs" + }, + "types-registry-0.1.300.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.300.tgz", + "sha": "908c8f162852467cabc8c13f910b1d02a4ad3f66", + "registry": "npmjs" + }, + "types-registry-0.1.301.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.301.tgz", + "sha": "35df336cec0d958e62814b03daccfcc0c21b4fb8", + "registry": "npmjs" + }, + "types-registry-0.1.302.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.302.tgz", + "sha": "f9872f1e119e8099e95592e45d87a68fb3455285", + "registry": "npmjs" + }, + "types-registry-0.1.303.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.303.tgz", + "sha": "3a1d65e80064c38b5cf07a2c972fc52132cc3bdf", + "registry": "npmjs" + }, + "types-registry-0.1.304.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.304.tgz", + "sha": "52b5aad6eb55a4b1fb5d33c167aa2070b343e7fe", + "registry": "npmjs" + }, + "types-registry-0.1.305.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.305.tgz", + "sha": "0ae2dd83911e403a4959c4cd5a3d8938b9837ff9", + "registry": "npmjs" + }, + "types-registry-0.1.306.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.306.tgz", + "sha": "9312d6d99ee568a3ab1943c2304dc9648ecaf3aa", + "registry": "npmjs" + }, + "types-registry-0.1.307.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.307.tgz", + "sha": "995f9267a5d9432a984216bb740ca8e09cc4950b", + "registry": "npmjs" + }, + "types-registry-0.1.308.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.308.tgz", + "sha": "ffe8badd7eaf4dbeff6571235422fed569a54c79", + "registry": "npmjs" + }, + "types-registry-0.1.309.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.309.tgz", + "sha": "35a3b06da4565340482f8fb81e605696910efe05", + "registry": "npmjs" + }, + "types-registry-0.1.310.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.310.tgz", + "sha": "3f93ffd18f001cec87861be575e9d85091fea7fc", + "registry": "npmjs" + }, + "types-registry-0.1.311.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.311.tgz", + "sha": "78bfba6119a865267ce2a0a383b8247eaf3da70f", + "registry": "npmjs" + }, + "types-registry-0.1.312.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.312.tgz", + "sha": "8c6b99789bf9b889d811cc4e24cfc1c1a972cef1", + "registry": "npmjs" + }, + "types-registry-0.1.313.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.313.tgz", + "sha": "b3af5ccd80d5d8e647625e878abd743fd839b314", + "registry": "npmjs" + }, + "types-registry-0.1.314.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.314.tgz", + "sha": "4acb48834a63911469951acebdf78b04eb3e9ee0", + "registry": "npmjs" + }, + "types-registry-0.1.315.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.315.tgz", + "sha": "fc6c7569f1fcad2cb2ec9bca2549fbf8ce56dcdc", + "registry": "npmjs" + }, + "types-registry-0.1.316.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.316.tgz", + "sha": "037ae04af560ee2740a4013d946931d826daa8c3", + "registry": "npmjs" + }, + "types-registry-0.1.317.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.317.tgz", + "sha": "2489ed10116c3fb5fa14fab0fdadda6af4e117e6", + "registry": "npmjs" + }, + "types-registry-0.1.318.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.318.tgz", + "sha": "b75c8b102b244348de21bf9b53279c5b6ee70999", + "registry": "npmjs" + }, + "types-registry-0.1.319.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.319.tgz", + "sha": "c525be5eff69349b667cd17e60f86246a7f5318d", + "registry": "npmjs" + }, + "types-registry-0.1.320.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.320.tgz", + "sha": "b7a39c357048512b87b49e31abeba27b4812b628", + "registry": "npmjs" + }, + "types-registry-0.1.321.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.321.tgz", + "sha": "29fcf1fbc74667bdef4414cf73bfa5e3cbf2cade", + "registry": "npmjs" + }, + "types-registry-0.1.322.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.322.tgz", + "sha": "cec9ccb00b3f4b509c656369eb93f446ada2b739", + "registry": "npmjs" + }, + "types-registry-0.1.323.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.323.tgz", + "sha": "847959a039229cb28819ad833999384249044d0e", + "registry": "npmjs" + }, + "types-registry-0.1.324.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.324.tgz", + "sha": "1ec98b1430ff3b6d94f999c1bec20d5bec9fabe4", + "registry": "npmjs" + }, + "types-registry-0.1.325.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.325.tgz", + "sha": "128ea50165e893b136eac38eb1ab417fce6d10da", + "registry": "npmjs" + }, + "types-registry-0.1.326.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.326.tgz", + "sha": "d4f151050326b1738e347a8ae241f0b7c6b8fec5", + "registry": "npmjs" + }, + "types-registry-0.1.327.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.327.tgz", + "sha": "b6b68e3149c47db20167c0940b75784ad0f2f771", + "registry": "npmjs" + }, + "types-registry-0.1.328.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.328.tgz", + "sha": "00eeef1ec25ee55c824bc8d140369cb67ad36e9a", + "registry": "npmjs" + }, + "types-registry-0.1.329.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.329.tgz", + "sha": "29a70f90c9e3cdd38df32b21dab664ddb4bb4fd8", + "registry": "npmjs" + }, + "types-registry-0.1.330.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.330.tgz", + "sha": "ca5224515426c4497eee8c6299203f7948732dab", + "registry": "npmjs" + }, + "types-registry-0.1.331.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.331.tgz", + "sha": "01614ec8ee222d91a27be789d9e75c7c205025e5", + "registry": "npmjs" + }, + "types-registry-0.1.332.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.332.tgz", + "sha": "c01759c1f0c8a27124167ca7b3b475d5e7f134ba", + "registry": "npmjs" + }, + "types-registry-0.1.333.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.333.tgz", + "sha": "63c353064bfbdbf2218a023f6d6cfe4ea66ba983", + "registry": "npmjs" + }, + "types-registry-0.1.334.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.334.tgz", + "sha": "cafc8476a29c4b770b583b3ddc93d8ac957b2d00", + "registry": "npmjs" + }, + "types-registry-0.1.335.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.335.tgz", + "sha": "fd28eeaac6baa827d039959c8921a8f1d3557027", + "registry": "npmjs" + }, + "types-registry-0.1.336.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.336.tgz", + "sha": "59cbebf8e81fc633e39ec58663fdfbbd3cf33899", + "registry": "npmjs" + }, + "types-registry-0.1.337.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.337.tgz", + "sha": "b703f34c31a5ac9164daeca6d035a0c859114771", + "registry": "npmjs" + }, + "types-registry-0.1.338.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.338.tgz", + "sha": "f8213f1e607e312e93201a1172d06136e81845e3", + "registry": "npmjs" + }, + "types-registry-0.1.339.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.339.tgz", + "sha": "3f9a9bfdcfe6e3a1c68aeadc6f9e04634f937bce", + "registry": "npmjs" + }, + "types-registry-0.1.340.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.340.tgz", + "sha": "d0a29b5f0eefcbb4e8e00224029cc0e60932ea62", + "registry": "npmjs" + }, + "types-registry-0.1.341.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.341.tgz", + "sha": "5aad1d6f5e7eba82c0652a2613825749981c9269", + "registry": "npmjs" + }, + "types-registry-0.1.342.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.342.tgz", + "sha": "6b7990fe8b149008212b491c3098f20512e17474", + "registry": "npmjs" + }, + "types-registry-0.1.343.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.343.tgz", + "sha": "e520b4f678c6ef9c06a31624f9be732a10d43331", + "registry": "npmjs" + }, + "types-registry-0.1.344.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.344.tgz", + "sha": "0dccb48a68e16935ea236719f239b5591140c8a7", + "registry": "npmjs" + }, + "types-registry-0.1.345.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.345.tgz", + "sha": "edae8ba5a94412a66603b44832ea5b6f2e31efb7", + "registry": "npmjs" + }, + "types-registry-0.1.346.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.346.tgz", + "sha": "15918285ea592f807a049fae1e4602c8cbabad93", + "registry": "npmjs" + }, + "types-registry-0.1.347.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.347.tgz", + "sha": "588ee8bb7336d8c389a49aafb538e6b1d81bceb2", + "registry": "npmjs" + }, + "types-registry-0.1.348.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.348.tgz", + "sha": "fec7eef29a4cd2068951a6a476685a5f2d2b5e93", + "registry": "npmjs" + }, + "types-registry-0.1.349.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.349.tgz", + "sha": "c539ac1290a075c425180efa378eff458dc67766", + "registry": "npmjs" + }, + "types-registry-0.1.350.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.350.tgz", + "sha": "64ca391100af20bde77c9c39f7d7902c1934f84f", + "registry": "npmjs" + }, + "types-registry-0.1.351.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.351.tgz", + "sha": "97dab1d94d17710b3e7718b1b48c100df7290c7b", + "registry": "npmjs" + }, + "types-registry-0.1.352.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.352.tgz", + "sha": "b85d7429548b4ac69163828895a267e11b280a0f", + "registry": "npmjs" + }, + "types-registry-0.1.353.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.353.tgz", + "sha": "ee6ef955140f45a5a51545af70dd6b8cf5704e12", + "registry": "npmjs" + }, + "types-registry-0.1.354.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.354.tgz", + "sha": "5ab37d548e6d7cbece02c7b81d82d168cbfcec5e", + "registry": "npmjs" + }, + "types-registry-0.1.355.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.355.tgz", + "sha": "7cc7d67d038f908d0403989f7ec3a9a50700d6d5", + "registry": "npmjs" + }, + "types-registry-0.1.356.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.356.tgz", + "sha": "4687314e1c01b48f4bae45989857caf0a29ab30d", + "registry": "npmjs" + }, + "types-registry-0.1.357.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.357.tgz", + "sha": "210111116f2d05957a50a5ea09d3c5401ced7035", + "registry": "npmjs" + }, + "types-registry-0.1.358.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.358.tgz", + "sha": "4c28bcccd8e72c3691a63646dad0ed8bea7707fe", + "registry": "npmjs" + }, + "types-registry-0.1.359.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.359.tgz", + "sha": "74f0b6caf365cd2d9a8e8275339b193485318102", + "registry": "npmjs" + }, + "types-registry-0.1.360.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.360.tgz", + "sha": "faef28d28a614065de57f146d6d543a591567a87", + "registry": "npmjs" + }, + "types-registry-0.1.361.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.361.tgz", + "sha": "0e2b3634de85630eb945ba39442e7d1945cb6966", + "registry": "npmjs" + }, + "types-registry-0.1.362.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.362.tgz", + "sha": "3a3bed06eeb492b69acca161c8352756ce236b11", + "registry": "npmjs" + }, + "types-registry-0.1.363.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.363.tgz", + "sha": "e88ee69fdaa83912b2fce4b4e4f4f3c410e2699e", + "registry": "npmjs" + }, + "types-registry-0.1.364.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.364.tgz", + "sha": "199d07bfb15a16926d7e4217b7280a900c5c6183", + "registry": "npmjs" + }, + "types-registry-0.1.365.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.365.tgz", + "sha": "2d14e4e601defd4f3f538552c0f04a7f0a8679ff", + "registry": "npmjs" + }, + "types-registry-0.1.366.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.366.tgz", + "sha": "d6a45b0d550bce3e48daf10bb0ac7cf9618ade45", + "registry": "npmjs" + }, + "types-registry-0.1.367.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.367.tgz", + "sha": "7beffdecb5f3f271c58e953c6e2ac9018ea14110", + "registry": "npmjs" + }, + "types-registry-0.1.368.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.368.tgz", + "sha": "ae9f86ba826f2cdf24bf0f90f2549998ba6163c4", + "registry": "npmjs" + }, + "types-registry-0.1.369.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.369.tgz", + "sha": "36c41e0826056262bb6889080f6562e32cbf1215", + "registry": "npmjs" + }, + "types-registry-0.1.370.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.370.tgz", + "sha": "b00fca9cbd35e9bea469d34ed8016f0b2b3b28e3", + "registry": "npmjs" + }, + "types-registry-0.1.371.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.371.tgz", + "sha": "980a0e8d2694d46ce39755409ecacc67a570123d", + "registry": "npmjs" + }, + "types-registry-0.1.372.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.372.tgz", + "sha": "46fee99468f786b37552ad68eacb5a56c540a0dc", + "registry": "npmjs" + }, + "types-registry-0.1.373.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.373.tgz", + "sha": "fa075b55b32e2468a55fca62decfdcdbd2c09264", + "registry": "npmjs" + }, + "types-registry-0.1.374.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.374.tgz", + "sha": "ef8467211e589dd47cb124ef0bdff28ecbe32482", + "registry": "npmjs" + }, + "types-registry-0.1.375.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.375.tgz", + "sha": "1428e560b1bd28890aa95ff479e15572a4f34f07", + "registry": "npmjs" + }, + "types-registry-0.1.376.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.376.tgz", + "sha": "08386d064448358c80f417b02f1dabf765d5e494", + "registry": "npmjs" + }, + "types-registry-0.1.377.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.377.tgz", + "sha": "5b85a3b0698ca3c7de0b0c04eb2e03efdeeda755", + "registry": "npmjs" + }, + "types-registry-0.1.378.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.378.tgz", + "sha": "cae503dce9b0bd7a2d077d05ed3ab793beb2e076", + "registry": "npmjs" + }, + "types-registry-0.1.379.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.379.tgz", + "sha": "7b4a5f376450fdea30c8b90a9fa4ffebc84da371", + "registry": "npmjs" + }, + "types-registry-0.1.380.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.380.tgz", + "sha": "28eef1f184db815f45342f426193ff62c98507bf", + "registry": "npmjs" + }, + "types-registry-0.1.381.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.381.tgz", + "sha": "1a48ba8990e7eff2b478c66d0a73165551bd6255", + "registry": "npmjs" + }, + "types-registry-0.1.382.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.382.tgz", + "sha": "a0151ceeea15a778a3d967cc2f6216460b49a968", + "registry": "npmjs" + }, + "types-registry-0.1.383.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.383.tgz", + "sha": "ce9f9c2ea3675d3dfc7fbf07a275c233b7483b6d", + "registry": "npmjs" + }, + "types-registry-0.1.384.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.384.tgz", + "sha": "5d825cbaa4c2b33c2b058fec9ee1391688958e94", + "registry": "npmjs" + }, + "types-registry-0.1.385.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.385.tgz", + "sha": "80965dd5712482431fc73e39336bf1be6366d904", + "registry": "npmjs" + }, + "types-registry-0.1.386.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.386.tgz", + "sha": "0ee86c0edac1a0db22fe1f0396654cdc900a68ae", + "registry": "npmjs" + }, + "types-registry-0.1.387.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.387.tgz", + "sha": "5acdbb0dc80136187600feb0ee914747a4959fbd", + "registry": "npmjs" + }, + "types-registry-0.1.388.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.388.tgz", + "sha": "1aa9da8fcb380ac8bc23c2b6d8a737de0fbd69ed", + "registry": "npmjs" + }, + "types-registry-0.1.389.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.389.tgz", + "sha": "ad4d3bc6d6781d011336805ee8d52e779a759011", + "registry": "npmjs" + }, + "types-registry-0.1.390.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.390.tgz", + "sha": "056248bf4f333ab0b5fd71a4072037a8b53ae73c", + "registry": "npmjs" + }, + "types-registry-0.1.391.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.391.tgz", + "sha": "9a49f9cf308f484e4f5ff7ac2419c4de862c286c", + "registry": "npmjs" + }, + "types-registry-0.1.392.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.392.tgz", + "sha": "ecad0b373be988b07f65e92b34c9abe9fff2ac83", + "registry": "npmjs" + }, + "types-registry-0.1.393.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.393.tgz", + "sha": "4d1828640373f4a0aa94d3efdec720bba9c04639", + "registry": "npmjs" + }, + "types-registry-0.1.394.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.394.tgz", + "sha": "8e93af6aa430802af279eae632b18184c1acc0d0", + "registry": "npmjs" + }, + "types-registry-0.1.395.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.395.tgz", + "sha": "93e71f28c3d36b32ed43dc70eb39b4ce3d5e3162", + "registry": "npmjs" + }, + "types-registry-0.1.396.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.396.tgz", + "sha": "ac641ab372ba5970c40ab9e75c6d90f25e9a77fe", + "registry": "npmjs" + }, + "types-registry-0.1.397.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.397.tgz", + "sha": "ba45f52e7eb34e43742b59900cf67a232e82c93a", + "registry": "npmjs" + }, + "types-registry-0.1.398.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.398.tgz", + "sha": "47547de7c6f47e7f12de6b77bdb09d122e7abdc3", + "registry": "npmjs" + }, + "types-registry-0.1.399.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.399.tgz", + "sha": "726000609fe82d229b2cf46591ec83cf2341c547", + "registry": "npmjs" + }, + "types-registry-0.1.400.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.400.tgz", + "sha": "02ad94e79f6a056e446774ccc624798d97876c10", + "registry": "npmjs" + }, + "types-registry-0.1.401.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.401.tgz", + "sha": "b36a202f50db4ed5c7176202475ddafe224e6798", + "registry": "npmjs" + }, + "types-registry-0.1.402.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.402.tgz", + "sha": "1a80c79eb9e93c89ca0f69ee1acf245068ef96e5", + "registry": "npmjs" + }, + "types-registry-0.1.403.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.403.tgz", + "sha": "b4a21d43d5d3fbacb4d14bd182321cace0f4e8ca", + "registry": "npmjs" + }, + "types-registry-0.1.404.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.404.tgz", + "sha": "cc66605989a5636dbcd64ce3d247cebb8bb424e7", + "registry": "npmjs" + }, + "types-registry-0.1.405.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.405.tgz", + "sha": "5d0d49ee82bdc7498de81e27ac43c63dea0fc8d4", + "registry": "npmjs" + }, + "types-registry-0.1.406.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.406.tgz", + "sha": "2aff1e214076d1633173fa5cc21226103167da48", + "registry": "npmjs" + }, + "types-registry-0.1.407.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.407.tgz", + "sha": "dc3ea15e499c6c66e138bf7ed272541babdf503f", + "registry": "npmjs" + }, + "types-registry-0.1.408.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.408.tgz", + "sha": "b39ac88b3325da2f1922ee3c0c2cbb7cc55fcfce", + "registry": "npmjs" + }, + "types-registry-0.1.409.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.409.tgz", + "sha": "01933ff79b1c0eb6a0730a75832b55dccab49c50", + "registry": "npmjs" + }, + "types-registry-0.1.410.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.410.tgz", + "sha": "01654c3c961827ea62ba3e194ba60a36782c977e", + "registry": "npmjs" + }, + "types-registry-0.1.411.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.411.tgz", + "sha": "be96e0cfee1694b22b487e7035f41c2872504e24", + "registry": "npmjs" + }, + "types-registry-0.1.412.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.412.tgz", + "sha": "3e821a202e5db7563bb86baec5f8b1a1ef50b435", + "registry": "npmjs" + }, + "types-registry-0.1.413.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.413.tgz", + "sha": "fefc36c7cbf8c42fc16c7b0793ef1c066769fa21", + "registry": "npmjs" + }, + "types-registry-0.1.414.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.414.tgz", + "sha": "ed4dd861cc2635e942b0d279d2c41e30c18e4963", + "registry": "npmjs" + }, + "types-registry-0.1.415.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.415.tgz", + "sha": "381abe31503028c2e949105df8339fe8460d6509", + "registry": "npmjs" + }, + "types-registry-0.1.416.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.416.tgz", + "sha": "f1f9ed429da29f36cdb3bfb540ec43a26b3f7e80", + "registry": "npmjs" + }, + "types-registry-0.1.417.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.417.tgz", + "sha": "8cdf78ca3f7f527a64954f95e3eec160fde705bd", + "registry": "npmjs" + }, + "types-registry-0.1.418.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.418.tgz", + "sha": "69d1626de21bcaf2e3b50e4fd1e64523ba356f89", + "registry": "npmjs" + }, + "types-registry-0.1.419.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.419.tgz", + "sha": "91edf6fb4a57a68f285ed9c589be175f20674aa0", + "registry": "npmjs" + }, + "types-registry-0.1.420.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.420.tgz", + "sha": "07f81c1d57baa342dc6e582ef58318d5eca30abd", + "registry": "npmjs" + }, + "types-registry-0.1.421.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.421.tgz", + "sha": "dd48e59697adf8869890b45c55b60a9985d59aa4", + "registry": "npmjs" + }, + "types-registry-0.1.422.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.422.tgz", + "sha": "41ebcdeba0919ea4b0c79a4f295197b7626a749d", + "registry": "npmjs" + }, + "types-registry-0.1.423.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.423.tgz", + "sha": "a36c9559433b3f89e3778c209b2d6e625b1b5985", + "registry": "npmjs" + }, + "types-registry-0.1.424.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.424.tgz", + "sha": "99c90ce89dd05cd057c132a15f7a4be66bd38188", + "registry": "npmjs" + }, + "types-registry-0.1.425.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.425.tgz", + "sha": "fc2d3c9f462fe2a2e4cdb51fdb4aeba2b67a5827", + "registry": "npmjs" + }, + "types-registry-0.1.426.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.426.tgz", + "sha": "76447d1a0c7a1a4a791b73ed67d48c08f6d50808", + "registry": "npmjs" + }, + "types-registry-0.1.427.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.427.tgz", + "sha": "f80855366c3dd23d07aa5ad79dd89a9511c518ed", + "registry": "npmjs" + }, + "types-registry-0.1.428.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.428.tgz", + "sha": "720c9cce52c8cc0bdd38b96baef07cdfff5f8c12", + "registry": "npmjs" + }, + "types-registry-0.1.429.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.429.tgz", + "sha": "1de67ae799c5951dfaacdb0ce4a45d1f558286cc", + "registry": "npmjs" + }, + "types-registry-0.1.430.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.430.tgz", + "sha": "be2635d87d1a41908d3856fcafc9fc9a07b466d6", + "registry": "npmjs" + }, + "types-registry-0.1.431.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.431.tgz", + "sha": "a6420322c893a0570ad54ed3fdaa7b26a211a5b6", + "registry": "npmjs" + }, + "types-registry-0.1.432.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.432.tgz", + "sha": "c37d5f70f6147d86002909d327d18348dd5d2596", + "registry": "npmjs" + }, + "types-registry-0.1.433.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.433.tgz", + "sha": "513b625c053c2f57bf7fe502e2717fc7b6c972cd", + "registry": "npmjs" + }, + "types-registry-0.1.434.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.434.tgz", + "sha": "19f20b07774c062c2c6d341fc9d665009c1ecf2e", + "registry": "npmjs" + }, + "types-registry-0.1.435.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.435.tgz", + "sha": "331bf8b86ff5c5a2538688ebbe74e26a15258fc1", + "registry": "npmjs" + }, + "types-registry-0.1.436.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.436.tgz", + "sha": "2b7d6b02deacf80c8603ef2d76be4810929c7b42", + "registry": "npmjs" + }, + "types-registry-0.1.437.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.437.tgz", + "sha": "f900d8e5cb06f08cfd2728e28aee472b30904f21", + "registry": "npmjs" + }, + "types-registry-0.1.438.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.438.tgz", + "sha": "e90e83e827d3b79f7caa825bd73a3f037bdce2d2", + "registry": "npmjs" + }, + "types-registry-0.1.439.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.439.tgz", + "sha": "87cb41043aa06852f6e79a384dfe9468fe232280", + "registry": "npmjs" + }, + "types-registry-0.1.440.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.440.tgz", + "sha": "70069ee83a181145817d78821aac935c74290344", + "registry": "npmjs" + }, + "types-registry-0.1.441.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.441.tgz", + "sha": "4ffeaa2c6316065dd8a6d8637f151d2b08e143f2", + "registry": "npmjs" + }, + "types-registry-0.1.442.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.442.tgz", + "sha": "af91452030b185e7ab3ffbd1058d0d7b4625df58", + "registry": "npmjs" + }, + "types-registry-0.1.443.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.443.tgz", + "sha": "98b5a9ddad3aef286db3511f7f7eb71803afd43c", + "registry": "npmjs" + }, + "types-registry-0.1.444.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.444.tgz", + "sha": "a0cc1e7b27846b2465cba074b0da15dd0e070eec", + "registry": "npmjs" + }, + "types-registry-0.1.445.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.445.tgz", + "sha": "776e06377ceca99c6653036248e7a6cd2e529aa2", + "registry": "npmjs" + }, + "types-registry-0.1.446.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.446.tgz", + "sha": "1465d01dd57a855a2c3c496da97185aa9694c91a", + "registry": "npmjs" + }, + "types-registry-0.1.447.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.447.tgz", + "sha": "f8991f62059641786fc53bba69cf337c368eb2cc", + "registry": "npmjs" + }, + "types-registry-0.1.448.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.448.tgz", + "sha": "f8e9d0f0fb18e3c5666003cffbbdccea64eaee7f", + "registry": "npmjs" + }, + "types-registry-0.1.449.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.449.tgz", + "sha": "4d4ef9b19673bbf2b09fdbfdef1ae3f21ab7a853", + "registry": "npmjs" + }, + "types-registry-0.1.450.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.450.tgz", + "sha": "ac50b208e3e76f21ecf919644c96d7db3586e443", + "registry": "npmjs" + }, + "types-registry-0.1.451.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.451.tgz", + "sha": "0d67dc116b2a2ae53d016c0dafefa7e53209573e", + "registry": "npmjs" + }, + "types-registry-0.1.452.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.452.tgz", + "sha": "17490f26ba70886b8227b25668b1e38de852a8eb", + "registry": "npmjs" + }, + "types-registry-0.1.453.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.453.tgz", + "sha": "6033b66cccf11d5365891ec2f38f3ad9148a75d4", + "registry": "npmjs" + }, + "types-registry-0.1.454.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.454.tgz", + "sha": "b2d52acbf0acca0deb917458cb94d5bd8540dc4d", + "registry": "npmjs" + }, + "types-registry-0.1.455.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.455.tgz", + "sha": "b4ed6408263caf0e54d0da5372ddaecb7874ea09", + "registry": "npmjs" + }, + "types-registry-0.1.456.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.456.tgz", + "sha": "dc9e93cba79be9cd00f8b7cf3fef177e4f161c3e", + "registry": "npmjs" + }, + "types-registry-0.1.457.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.457.tgz", + "sha": "6b8093deb48cee7e3ee6c4bd73bf5b52de87e16f", + "registry": "npmjs" + }, + "types-registry-0.1.458.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.458.tgz", + "sha": "3d7a66c6310938250203b04a2792bb3ae783ffe6", + "registry": "npmjs" + }, + "types-registry-0.1.459.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.459.tgz", + "sha": "8c8bc52bd46dc59238f1ce1d32fe4acdb25925c9", + "registry": "npmjs" + }, + "types-registry-0.1.460.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.460.tgz", + "sha": "a5eb20ab06f1993ab8e99dac7cb96c71195f02a6", + "registry": "npmjs" + }, + "types-registry-0.1.461.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.461.tgz", + "sha": "6f64a9b40e1ee5c2cc482ac3e9530577e22b8676", + "registry": "npmjs" + }, + "types-registry-0.1.462.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.462.tgz", + "sha": "41708e004be5b1901f8a172552d1a46db629c877", + "registry": "npmjs" + }, + "types-registry-0.1.463.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.463.tgz", + "sha": "4107db4f6143589527433382b6c9042b0a750641", + "registry": "npmjs" + }, + "types-registry-0.1.464.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.464.tgz", + "sha": "fc5c5c1c75b06f1a4ea96e823b31c81fba12abc3", + "registry": "npmjs" + }, + "types-registry-0.1.465.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.465.tgz", + "sha": "b9737c70dcfab890c421c3ca279aa50925cffb2b", + "registry": "npmjs" + }, + "types-registry-0.1.466.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.466.tgz", + "sha": "287aaaaf6250483c24e766b44d70e986278fdad3", + "registry": "npmjs" + }, + "types-registry-0.1.467.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.467.tgz", + "sha": "19800d1f0b932cef8b52360d3bdd1259f0338be7", + "registry": "npmjs" + }, + "types-registry-0.1.468.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.468.tgz", + "sha": "78db1e79e99755b48ed9b9ed5be4ddf6add1846a", + "registry": "npmjs" + }, + "types-registry-0.1.469.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.469.tgz", + "sha": "8e4a642e0ec3d76b36e71224cec2162febffb0f3", + "registry": "npmjs" + }, + "types-registry-0.1.470.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.470.tgz", + "sha": "51e6ec6ee5c16e00807862eb98cebf040f881a87", + "registry": "npmjs" + }, + "types-registry-0.1.471.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.471.tgz", + "sha": "a4ada3e01110f1c2f9eb2ce6a0251fb1607ee288", + "registry": "npmjs" + }, + "types-registry-0.1.472.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.472.tgz", + "sha": "533edcc8673a27b86153b287d744109caa09ddcd", + "registry": "npmjs" + }, + "types-registry-0.1.473.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.473.tgz", + "sha": "c03f510ff6c83b0bf538f4b51a808ef9c71dfd9f", + "registry": "npmjs" + }, + "types-registry-0.1.474.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.474.tgz", + "sha": "e4ffcd049e434cf272b802e78d7a945f2576d3ed", + "registry": "npmjs" + }, + "types-registry-0.1.475.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.475.tgz", + "sha": "1fa6533246f6611e3f321aaa1524b1170123ea8c", + "registry": "npmjs" + }, + "types-registry-0.1.476.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.476.tgz", + "sha": "375d7e025a7e82d9198bcf71b3726ca1817588bc", + "registry": "npmjs" + }, + "types-registry-0.1.477.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.477.tgz", + "sha": "edb1346c5c1abc5feccbc590da919d78edd8f8fc", + "registry": "npmjs" + }, + "types-registry-0.1.478.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.478.tgz", + "sha": "d0a174c8ddd5246d2a06805f12e5d24f60ea4d1c", + "registry": "npmjs" + }, + "types-registry-0.1.479.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.479.tgz", + "sha": "7dba9067c9716aa08d56ead22d1bf1757f1eeed8", + "registry": "npmjs" + }, + "types-registry-0.1.480.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.480.tgz", + "sha": "5861d083355cb94b60012560d1d1e4f7ef58ded0", + "registry": "npmjs" + }, + "types-registry-0.1.481.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.481.tgz", + "sha": "9a95f709e32ce1b703e6b18d9dd661c081e9779f", + "registry": "npmjs" + }, + "types-registry-0.1.482.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.482.tgz", + "sha": "7ba8d28eb9ed6a7a4eef1314ee6c7287a8423aee", + "registry": "npmjs" + }, + "types-registry-0.1.483.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.483.tgz", + "sha": "6791011ddf0e6b757250d9a5c20a2ec0072e059a", + "registry": "npmjs" + }, + "types-registry-0.1.484.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.484.tgz", + "sha": "227bce7b089c5485955a1a90b5db660e51f6b6a5", + "registry": "npmjs" + }, + "types-registry-0.1.485.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.485.tgz", + "sha": "816630cf6aaf36147d571d7e3ebd911852a439d6", + "registry": "npmjs" + }, + "types-registry-0.1.486.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.486.tgz", + "sha": "68420ea3f866ae6abcaf9ee134a9ff95eba09e76", + "registry": "npmjs" + }, + "types-registry-0.1.487.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.487.tgz", + "sha": "9d3caad0f753a52ffeeac6aca79e2d9d14baf3e5", + "registry": "npmjs" + }, + "types-registry-0.1.488.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.488.tgz", + "sha": "c1b07f2b3f30fb95ec2c3af027c58914f7d7cda3", + "registry": "npmjs" + }, + "types-registry-0.1.489.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.489.tgz", + "sha": "68bf842db1b2f2d4efd4013472109214dd6d468b", + "registry": "npmjs" + }, + "types-registry-0.1.490.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.490.tgz", + "sha": "80bc29d22c246014ff248ef2f3b12866f9e8ee33", + "registry": "npmjs" + }, + "types-registry-0.1.491.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.491.tgz", + "sha": "aa287592b3341cd492a98374ea62aaadbb55b7cb", + "registry": "npmjs" + }, + "types-registry-0.1.492.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.492.tgz", + "sha": "c48bbf2aa8c5a7f5ea0e0d149bf83e23af5c33aa", + "registry": "npmjs" + }, + "types-registry-0.1.493.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.493.tgz", + "sha": "60cec3893f5b56882281ed4030aa3c9dd247f659", + "registry": "npmjs" + }, + "types-registry-0.1.494.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.494.tgz", + "sha": "213d83d897cf71bd7f452ca2785aa012a8de623f", + "registry": "npmjs" + }, + "types-registry-0.1.495.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.495.tgz", + "sha": "da36e10782fc85f6d78897eaf1bb1452097ec067", + "registry": "npmjs" + }, + "types-registry-0.1.496.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.496.tgz", + "sha": "1a9f5879fe46da144104e1e668624c93560ff66f", + "registry": "npmjs" + }, + "types-registry-0.1.497.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.497.tgz", + "sha": "0d8aa2c1b474912df33da22d4b6e8289df953f75", + "registry": "npmjs" + }, + "types-registry-0.1.498.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.498.tgz", + "sha": "49fbc8a707746cbae320356cc9c7164779f0f9a5", + "registry": "npmjs" + }, + "types-registry-0.1.499.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.499.tgz", + "sha": "4dd084fa0d82755c952e3e0e2e00bc157496f831", + "registry": "npmjs" + }, + "types-registry-0.1.500.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.500.tgz", + "sha": "b8bb448d2693a811a2bb215a28b2202a81d0b54b", + "registry": "npmjs" + }, + "types-registry-0.1.501.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.501.tgz", + "sha": "ea764bd47e102eb911ee4efe9287caeee819d669", + "registry": "npmjs" + }, + "types-registry-0.1.502.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.502.tgz", + "sha": "5829d938b7c0e6c86d0657d741463da7d53b2b05", + "registry": "npmjs" + }, + "types-registry-0.1.503.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.503.tgz", + "sha": "c782b39267a2ef31523e3babdf4ff70831268479", + "registry": "npmjs" + }, + "types-registry-0.1.504.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.504.tgz", + "sha": "29a9733742511dfaeabae75f451781ac67773b2d", + "registry": "npmjs" + }, + "types-registry-0.1.505.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.505.tgz", + "sha": "7174ddb0e2eabd7f20738085ebafbdd97e237c31", + "registry": "npmjs" + }, + "types-registry-0.1.506.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.506.tgz", + "sha": "281b031347876f5176584810c9121c59772b3765", + "registry": "npmjs" + }, + "types-registry-0.1.507.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.507.tgz", + "sha": "3ecff4ddf970705eea4cdb42e505edb58e5875bb", + "registry": "npmjs" + }, + "types-registry-0.1.508.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.508.tgz", + "sha": "a6d52b9b99e915fbee2a951df9b6a82c84448f5b", + "registry": "npmjs" + }, + "types-registry-0.1.509.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.509.tgz", + "sha": "9a1775dc39a0de49a9df58f418700b01c83fb0c5", + "registry": "npmjs" + }, + "types-registry-0.1.510.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.510.tgz", + "sha": "8891379f7f64ae0d5876d08bd8780d97f2bc6e5d", + "registry": "npmjs" + }, + "types-registry-0.1.511.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.511.tgz", + "sha": "c3fcadd853f007918dacba7309a3d35ae8781623", + "registry": "npmjs" + }, + "types-registry-0.1.512.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.512.tgz", + "sha": "dd3161129bb2834cc0c9399cf36ecc16277f4602", + "registry": "npmjs" + }, + "types-registry-0.1.513.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.513.tgz", + "sha": "fcb61afb59b1e6931a53cecf3bff53f934c43d78", + "registry": "npmjs" + }, + "types-registry-0.1.514.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.514.tgz", + "sha": "14ddb507688d1ff08d90feb971e0b3277517dbbf", + "registry": "npmjs" + }, + "types-registry-0.1.515.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.515.tgz", + "sha": "0102f3b34172fdce43f9b985cd68afb20bebea96", + "registry": "npmjs" + }, + "types-registry-0.1.516.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.516.tgz", + "sha": "246583097e7dd1507b7fbc4914a5bc5838cad16f", + "registry": "npmjs" + }, + "types-registry-0.1.517.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.517.tgz", + "sha": "da768d742a55a78944ff90c60f05b5b128b989cf", + "registry": "npmjs" + }, + "types-registry-0.1.518.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.518.tgz", + "sha": "9e88941c8b10cc186ff69530cdaea671c850ab87", + "registry": "npmjs" + }, + "types-registry-0.1.519.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.519.tgz", + "sha": "825ae85bbf681309af70d8746025f91b3b6ef791", + "registry": "npmjs" + }, + "types-registry-0.1.520.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.520.tgz", + "sha": "2fc119395be7948ac8d40cef8701e9cbb4382d76", + "registry": "npmjs" + }, + "types-registry-0.1.521.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.521.tgz", + "sha": "1729ded582e0e069cbe8f5df6ba6277b4399b288", + "registry": "npmjs" + }, + "types-registry-0.1.522.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.522.tgz", + "sha": "17d6b1327e9885954c1678d397d20123c707f05f", + "registry": "npmjs" + }, + "types-registry-0.1.523.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.523.tgz", + "sha": "9d2be2da75b2f6b1db51a6c4bc1a5ba72a4a7778", + "registry": "npmjs" + }, + "types-registry-0.1.524.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.524.tgz", + "sha": "59fef96d2b7fe0de7e261570c70da9f09c8a9b2f", + "registry": "npmjs" + }, + "types-registry-0.1.525.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.525.tgz", + "sha": "bab4ca95efd6fed8c08fa7eabcb81993316bbc72", + "registry": "npmjs" + }, + "types-registry-0.1.526.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.526.tgz", + "sha": "d907b3b7fae6db9eae060e36b46ff9bc5b4c8198", + "registry": "npmjs" + }, + "types-registry-0.1.527.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.527.tgz", + "sha": "b7c5e866c9b65e366db0974dfde0f48e6203662a", + "registry": "npmjs" + }, + "types-registry-0.1.528.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.528.tgz", + "sha": "59228c43ce533af401ef0cdb8390701925247b24", + "registry": "npmjs" + }, + "types-registry-0.1.529.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.529.tgz", + "sha": "53b770117db6d205d016cb0cc44419126d90b9b5", + "registry": "npmjs" + }, + "types-registry-0.1.530.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.530.tgz", + "sha": "1faea4826d8332a8ed66b3d5f5daee6bbd1e6884", + "registry": "npmjs" + }, + "types-registry-0.1.531.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.531.tgz", + "sha": "4352425da179fbbbb97342ad0b6b1622d7ff3d12", + "registry": "npmjs" + }, + "types-registry-0.1.532.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.532.tgz", + "sha": "33573dbe0019f14a3cf389d4f485f280b0ca7a82", + "registry": "npmjs" + }, + "types-registry-0.1.533.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.533.tgz", + "sha": "0267072ed1afa3be03e1fc8c24cb742715e0bf36", + "registry": "npmjs" + }, + "types-registry-0.1.534.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.534.tgz", + "sha": "4fa20933aab1e17f00a68a76a6bbb8ce27d52c36", + "registry": "npmjs" + }, + "types-registry-0.1.535.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.535.tgz", + "sha": "3e2f1c91eac21d0b90fefe1398125f43048097e4", + "registry": "npmjs" + }, + "types-registry-0.1.536.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.536.tgz", + "sha": "602ecaf29a93268bcb7648d2ae7af352667bf085", + "registry": "npmjs" + }, + "types-registry-0.1.537.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.537.tgz", + "sha": "84117f5e02959463095f9d0ee2777e4e039ade6b", + "registry": "npmjs" + }, + "types-registry-0.1.538.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.538.tgz", + "sha": "9b61b388ce812321b0bf532a27bf72d3b12e5360", + "registry": "npmjs" + }, + "types-registry-0.1.539.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.539.tgz", + "sha": "667d83d83cfb5677c8b9d88912015060f1a8f58d", + "registry": "npmjs" + }, + "types-registry-0.1.540.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.540.tgz", + "sha": "0ab3273dc398bedbd695bec839d7a51c77de92f1", + "registry": "npmjs" + }, + "types-registry-0.1.541.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.541.tgz", + "sha": "49e3a4226bc157db0ddc2c1fce3db60fe91df095", + "registry": "npmjs" + }, + "types-registry-0.1.542.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.542.tgz", + "sha": "454cf399c87d5f1cb6f86259750f2136f3626b85", + "registry": "npmjs" + }, + "types-registry-0.1.543.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.543.tgz", + "sha": "d22edf257439db9868e2b7274346bd9d22c33423", + "registry": "npmjs" + }, + "types-registry-0.1.544.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.544.tgz", + "sha": "c3f31aac2ed8ffb8814d2cfa0c8c00b7665c39dc", + "registry": "npmjs" + }, + "types-registry-0.1.545.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.545.tgz", + "sha": "afc9e6207decf53c89d1f31532e8221a6a46427a", + "registry": "npmjs" + }, + "types-registry-0.1.546.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.546.tgz", + "sha": "eb63b38f32b281caad99223f829f471fa58c4a39", + "registry": "npmjs" + }, + "types-registry-0.1.547.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.547.tgz", + "sha": "fc813f6e3cd5fcb39040426eed3808a637eaa84c", + "registry": "npmjs" + }, + "types-registry-0.1.548.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.548.tgz", + "sha": "222151210abd74fc3cdfdfb5e2be74818855073e", + "registry": "npmjs" + }, + "types-registry-0.1.549.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.549.tgz", + "sha": "f45fc5059d434d256347b45b3bffa7b4848fd371", + "registry": "npmjs" + }, + "types-registry-0.1.550.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.550.tgz", + "sha": "45f91150bd00432d52ecd17d1cec0803fb87922c", + "registry": "npmjs" + }, + "types-registry-0.1.551.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.551.tgz", + "sha": "ebc5b5813958df20748d2d1ccbc760164c5cd032", + "registry": "npmjs" + }, + "types-registry-0.1.552.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.552.tgz", + "sha": "1ed44931c21e7e369378573916785055a4d2d90e", + "registry": "npmjs" + }, + "types-registry-0.1.553.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.553.tgz", + "sha": "a1f6cb137b798d4a2f44dddfacc7aca323385b06", + "registry": "npmjs" + }, + "types-registry-0.1.554.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.554.tgz", + "sha": "8c8e2900fdf8b692ab17e599d2e6a3a95f520ea5", + "registry": "npmjs" + }, + "types-registry-0.1.555.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.555.tgz", + "sha": "f1ec729cfd626f7b15a45bba848cb760ee153f15", + "registry": "npmjs" + }, + "types-registry-0.1.556.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.556.tgz", + "sha": "9b99bec28bb22908d90c0be537ff535c1d2bdf30", + "registry": "npmjs" + }, + "types-registry-0.1.557.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.557.tgz", + "sha": "9d9371b78a4cbe89d41e4a7b79ed34d4f15c7766", + "registry": "npmjs" + }, + "types-registry-0.1.558.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.558.tgz", + "sha": "8cd583e10f36da671d2059208c167bd34189c4cc", + "registry": "npmjs" + }, + "types-registry-0.1.559.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.559.tgz", + "sha": "5657bcead86ea1de4e6c46d319fb04e3c3b805ee", + "registry": "npmjs" + }, + "types-registry-0.1.560.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.560.tgz", + "sha": "f8ab4b9e690df57e28e0f986bf60edcba6f2410b", + "registry": "npmjs" + }, + "types-registry-0.1.561.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.561.tgz", + "sha": "cfd9c099dde9f442bb98730ff9d3aaf5ec48ef94", + "registry": "npmjs" + }, + "types-registry-0.1.562.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.562.tgz", + "sha": "3da7f50cab97775b1c4be793bdaea9366943b614", + "registry": "npmjs" + }, + "types-registry-0.1.563.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.563.tgz", + "sha": "5fa97f75c5725dcddcb108213300c709a04f2df1", + "registry": "npmjs" + }, + "types-registry-0.1.564.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.564.tgz", + "sha": "133ec0897295300d012e9d2fba936aa8c722cb04", + "registry": "npmjs" + }, + "types-registry-0.1.565.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.565.tgz", + "sha": "1c2596da76401c3ba37d2c27bcb514796f8e4fbf", + "registry": "npmjs" + }, + "types-registry-0.1.566.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.566.tgz", + "sha": "b0e93219f27ff9a2a72bcfbcbffcbd9338f978c0", + "registry": "npmjs" + }, + "types-registry-0.1.567.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.567.tgz", + "sha": "6f14c954847e62522e0e8eb3032973c29b93b90f", + "registry": "npmjs" + }, + "types-registry-0.1.568.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.568.tgz", + "sha": "9638eb8eb8517e7b60d89b20e0295ce4214ee872", + "registry": "npmjs" + }, + "types-registry-0.1.569.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.569.tgz", + "sha": "a77f39589cbda12835a4d2d2024f33ce717a8fd4", + "registry": "npmjs" + }, + "types-registry-0.1.570.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.570.tgz", + "sha": "492dafef2e719aeb32e93b07755d3c1b640012b1", + "registry": "npmjs" + }, + "types-registry-0.1.571.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.571.tgz", + "sha": "63d9a7ed65f2223691a38c69fa5c1f22e5212ac5", + "registry": "npmjs" + }, + "types-registry-0.1.572.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.572.tgz", + "sha": "362cb54332745aedd9701444cbd88fb0e1810333", + "registry": "npmjs" + }, + "types-registry-0.1.573.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.573.tgz", + "sha": "c690a51ef14f1480d0ce46cd1b282b11b03d2159", + "registry": "npmjs" + }, + "types-registry-0.1.574.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.574.tgz", + "sha": "545990623cfdf5959fe02c1b357f765580d78dab", + "registry": "npmjs" + }, + "types-registry-0.1.575.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.575.tgz", + "sha": "a2608e9cbdda231274668a2ba68c356f7e97e091", + "registry": "npmjs" + }, + "types-registry-0.1.576.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.576.tgz", + "sha": "e272d70c2fe5250f598cb8139720c2fe4b0eb9a4", + "registry": "npmjs" + }, + "types-registry-0.1.577.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.577.tgz", + "sha": "a66eb38d90a1e8ca4d8afaf0579d1e8e244d1214", + "registry": "npmjs" + }, + "types-registry-0.1.578.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.578.tgz", + "sha": "7bb9c33c01b35d9062e8b08997a039bad180c4f1", + "registry": "npmjs" + }, + "types-registry-0.1.579.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.579.tgz", + "sha": "bea48db49b4e9050102006e04a7863665bcdaf16", + "registry": "npmjs" + }, + "types-registry-0.1.580.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.580.tgz", + "sha": "51c223ae15ddbc0e23c078230a3ac7f40e6128e9", + "registry": "npmjs" + }, + "types-registry-0.1.581.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.581.tgz", + "sha": "d1a4c2df17614bff0583c1e50d771a119c5d8ce6", + "registry": "npmjs" + }, + "types-registry-0.1.582.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.582.tgz", + "sha": "598817621ea70579aec8e2c943fd07f3583619b8", + "registry": "npmjs" + }, + "types-registry-0.1.583.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.583.tgz", + "sha": "309f2a12a054a3f6475e35c2adb905d1f1d81476", + "registry": "npmjs" + }, + "types-registry-0.1.584.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.584.tgz", + "sha": "814008e651dc004e19292ed15e2b863e8edd82ce", + "registry": "npmjs" + }, + "types-registry-0.1.585.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.585.tgz", + "sha": "ee1aa08e944f7d218333863d66372bb405edd596", + "registry": "npmjs" + }, + "types-registry-0.1.586.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.586.tgz", + "sha": "7f548bc9682b5854581b39f913a569c71988c864", + "registry": "npmjs" + }, + "types-registry-0.1.587.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.587.tgz", + "sha": "0a630bac6e42d39c7fd9bf16161d8664b373ddd3", + "registry": "npmjs" + }, + "types-registry-0.1.588.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.588.tgz", + "sha": "05ea39a087ea1a1d0bb9ba7a6b4e5a762dbb3414", + "registry": "npmjs" + }, + "types-registry-0.1.589.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.589.tgz", + "sha": "4c14e5a0d98bcd460fbf8e7c9b0c321369277c4c", + "registry": "npmjs" + }, + "types-registry-0.1.590.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.590.tgz", + "sha": "ff719e3d18ae6d5799d18838499ee7bcb2aebf1c", + "registry": "npmjs" + }, + "types-registry-0.1.591.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.591.tgz", + "sha": "0327bb20cda8eaaa040b2f8a3064671a63c5d4e4", + "registry": "npmjs" + }, + "types-registry-0.1.592.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.592.tgz", + "sha": "45a11e54aa0df311c72cb8d946e325028aaa8389", + "registry": "npmjs" + }, + "types-registry-0.1.593.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.593.tgz", + "sha": "64c7c6d600bdea6ae44870554e29c3b6dd47d262", + "registry": "npmjs" + }, + "types-registry-0.1.594.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.594.tgz", + "sha": "ee5d6a148af8f83d9380ea2f8b6ed198649fbdf1", + "registry": "npmjs" + }, + "types-registry-0.1.595.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.595.tgz", + "sha": "37daeb58bdf54c6db55e85cf329fba0d38cd0625", + "registry": "npmjs" + }, + "types-registry-0.1.596.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.596.tgz", + "sha": "b60cab1a8a169a1d5eba59ce9e5ac09b91eb20aa", + "registry": "npmjs" + }, + "types-registry-0.1.597.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.597.tgz", + "sha": "8742d998572bfb11eab2abc4d2fce3733f3bc660", + "registry": "npmjs" + }, + "types-registry-0.1.598.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.598.tgz", + "sha": "0a38bf7af9448a383b1e40954f63f55b6a616a8f", + "registry": "npmjs" + }, + "types-registry-0.1.599.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.599.tgz", + "sha": "c50ae548b8806b1fcb0dd6e077569ab8fb132a3f", + "registry": "npmjs" + }, + "types-registry-0.1.600.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.600.tgz", + "sha": "dd3b61b4bda3f42eb125ca74158b3747d97858e9", + "registry": "npmjs" + }, + "types-registry-0.1.601.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.601.tgz", + "sha": "45960dfc91c3a4438bccf5b67dac86cce5171f06", + "registry": "npmjs" + }, + "types-registry-0.1.602.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.602.tgz", + "sha": "785903c9b638d3266df9e1d6485a39beeb39a348", + "registry": "npmjs" + }, + "types-registry-0.1.603.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.603.tgz", + "sha": "d263f98975f7b698d13987f611602c7d5fc6f5fc", + "registry": "npmjs" + }, + "types-registry-0.1.604.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.604.tgz", + "sha": "e3bfa99c86eec5488a45c704ae3da8e6c050ac17", + "registry": "npmjs" + }, + "types-registry-0.1.605.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.605.tgz", + "sha": "6bb2d20b516430db2213821de5749e82c3b8daa9", + "registry": "npmjs" + }, + "types-registry-0.1.606.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.606.tgz", + "sha": "d6f0c26699114f7fd6520d4e6640dbd2914c0736", + "registry": "npmjs" + }, + "types-registry-0.1.607.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.607.tgz", + "sha": "65ed677fa5472e5ca694b22dc9791154c5472b8a", + "registry": "npmjs" + }, + "types-registry-0.1.608.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.608.tgz", + "sha": "589c6de7d3e321afada9a81c6142dda33ebbe709", + "registry": "npmjs" + }, + "types-registry-0.1.609.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.609.tgz", + "sha": "9e35f519786fe6ddbf50eb8b4f261d8f12a3c839", + "registry": "npmjs" + }, + "types-registry-0.1.610.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.610.tgz", + "sha": "5a0e36ab2a8bde0bc02aea9f39f9fb20422b1727", + "registry": "npmjs" + }, + "types-registry-0.1.611.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.611.tgz", + "sha": "dcaab6cd610407431106302e886e6833fcdaf436", + "registry": "npmjs" + }, + "types-registry-0.1.612.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.612.tgz", + "sha": "47a19108d8e75cddd55ae18971835aeb4395e11a", + "registry": "npmjs" + }, + "types-registry-0.1.613.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.613.tgz", + "sha": "8f82ee79d7e5efbba88e0b4dc839b886c60a1aa0", + "registry": "npmjs" + }, + "types-registry-0.1.614.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.614.tgz", + "sha": "f24071fb7e0e8ff9124df0e112a94ed07dec10fa", + "registry": "npmjs" + }, + "types-registry-0.1.615.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.615.tgz", + "sha": "51810edcf08c6acf09bad208637386f7ccad159a", + "registry": "npmjs" + }, + "types-registry-0.1.616.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.616.tgz", + "sha": "9c45fe85036d137be32cbee5cc0d28389effa85a", + "registry": "npmjs" + }, + "types-registry-0.1.617.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.617.tgz", + "sha": "3ed51040a64ec9c18ffd791118b1dbcad039c3fc", + "registry": "npmjs" + }, + "types-registry-0.1.618.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.618.tgz", + "sha": "48b9051d08eba932742f9a11e7d23aabfdfacc07", + "registry": "npmjs" + }, + "types-registry-0.1.619.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.619.tgz", + "sha": "1d8d93e42001b5694aa6859ecb501288bc2ad3aa", + "registry": "npmjs" + }, + "types-registry-0.1.620.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.620.tgz", + "sha": "b5076e92452a530f545407fe3ce7d02f8c0d65b2", + "registry": "npmjs" + }, + "types-registry-0.1.621.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.621.tgz", + "sha": "92fc10c68b55429a3716b75829f5151e809117b7", + "registry": "npmjs" + }, + "types-registry-0.1.622.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.622.tgz", + "sha": "56a04232daa5fe68e4d4b088f0c6c239d3e0b72f", + "registry": "npmjs" + }, + "types-registry-0.1.623.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.623.tgz", + "sha": "85ceab609d29b0013c8a225ad32f3acbaa836307", + "registry": "npmjs" + }, + "types-registry-0.1.624.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.624.tgz", + "sha": "f5df0d23181606199389aea4418b577a5139fde4", + "registry": "npmjs" + }, + "types-registry-0.1.625.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.625.tgz", + "sha": "23451fa238ba34729f9ee5045c7d36776781a083", + "registry": "npmjs" + }, + "types-registry-0.1.626.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.626.tgz", + "sha": "1c15e6f39bb3616667dfc46c50b5789e7196bd00", + "registry": "npmjs" + }, + "types-registry-0.1.627.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.627.tgz", + "sha": "fb1ac7681d865d0dc5f0a2ae5696a4a6b8aa7e05", + "registry": "npmjs" + }, + "types-registry-0.1.628.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.628.tgz", + "sha": "6e415ed3c61da3f5c58f84b8c4e5ca6259d6f4bb", + "registry": "npmjs" + }, + "types-registry-0.1.629.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.629.tgz", + "sha": "d49938b8b96fc2b50ed9a471c1a83628b8f7e84a", + "registry": "npmjs" + }, + "types-registry-0.1.630.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.630.tgz", + "sha": "7c61e583a946749e4f2b7db86fdadf30214eee2a", + "registry": "npmjs" + }, + "types-registry-0.1.631.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.631.tgz", + "sha": "3979d1cb96ac186c9ed38c8b64fc107d4d78c6a2", + "registry": "npmjs" + }, + "types-registry-0.1.632.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.632.tgz", + "sha": "39240c76b1652c318c7d38cfba9c77faaff29764", + "registry": "npmjs" + }, + "types-registry-0.1.633.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.633.tgz", + "sha": "91fd858ba204806d4ae7fc6f63ed28dbce5a3107", + "registry": "npmjs" + }, + "types-registry-0.1.634.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.634.tgz", + "sha": "fce2192f6f21a30274f74f1c59c9cbe570d11295", + "registry": "npmjs" + }, + "types-registry-0.1.635.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.635.tgz", + "sha": "c8df00496f4785a39692512b996169f28e2f2364", + "registry": "npmjs" + }, + "types-registry-0.1.636.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.636.tgz", + "sha": "0b7e49d4b28aa219131a75ec3aa8b9cb74ab46ff", + "registry": "npmjs" + }, + "types-registry-0.1.637.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.637.tgz", + "sha": "38378f4a2b6648538cea0bb94e8ff21e8a70fdaa", + "registry": "npmjs" + }, + "types-registry-0.1.638.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.638.tgz", + "sha": "ae6365773ad38b544acd64a80f3bfef1b209467d", + "registry": "npmjs" + }, + "types-registry-0.1.639.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.639.tgz", + "sha": "04ebb06fa9e10111299d38e37ce7195c762af6a4", + "registry": "npmjs" + }, + "types-registry-0.1.640.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.640.tgz", + "sha": "cd11765875f69c444d2625b5ea1c1fe0abb34c2b", + "registry": "npmjs" + }, + "types-registry-0.1.641.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.641.tgz", + "sha": "7bca8c8d55370db1e39acf0088829a07332d1384", + "registry": "npmjs" + }, + "types-registry-0.1.642.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.642.tgz", + "sha": "1db98357fb135f331ff6ff8319287ac159d30fa2", + "registry": "npmjs" + }, + "types-registry-0.1.643.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.643.tgz", + "sha": "144d107cc855315206e0e3a588ece729a8e8b710", + "registry": "npmjs" + }, + "types-registry-0.1.644.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.644.tgz", + "sha": "c3ba1bae3ccd0064369ea8249362fe8f3bb6e1dc", + "registry": "npmjs" + }, + "types-registry-0.1.645.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.645.tgz", + "sha": "bab596775b4ce7855b5c914b5f218acfb096ff30", + "registry": "npmjs" + }, + "types-registry-0.1.646.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.646.tgz", + "sha": "b51056dfcc9db7d0a3ff6f32b8f6ef0789de5d58", + "registry": "npmjs" + }, + "types-registry-0.1.647.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.647.tgz", + "sha": "d3d8e05750321a99c67ce7a7a97c44d0d3dd61df", + "registry": "npmjs" + }, + "types-registry-0.1.648.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.648.tgz", + "sha": "2a37682209511fe761d109b962e67486968f372c", + "registry": "npmjs" + }, + "types-registry-0.1.649.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.649.tgz", + "sha": "32c591cabc165cec71df0b52244e4ee6fa07eca9", + "registry": "npmjs" + }, + "types-registry-0.1.650.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.650.tgz", + "sha": "c6836c815b13745b8c1cba57f3577c680e3e9bcb", + "registry": "npmjs" + }, + "types-registry-0.1.651.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.651.tgz", + "sha": "57d1b39836034030c57d9c91fcf528ec48aadf6f", + "registry": "npmjs" + }, + "types-registry-0.1.652.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.652.tgz", + "sha": "bc278241d8e6e40c49850df0d2a2de5cfd186cf1", + "registry": "npmjs" + }, + "types-registry-0.1.653.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.653.tgz", + "sha": "e8203a01aa9d815c6b5de6e79bc35193166cf0da", + "registry": "npmjs" + }, + "types-registry-0.1.654.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.654.tgz", + "sha": "ecc68e19fed0253f5aeabfe66734c1f2b0b33429", + "registry": "npmjs" + }, + "types-registry-0.1.655.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.655.tgz", + "sha": "555e6136a53c736e2ddca9fd097f4c052ab6c80d", + "registry": "npmjs" + }, + "types-registry-0.1.656.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.656.tgz", + "sha": "5d026b6dde40e98deba167f4dfbb8f72d9a290ff", + "registry": "npmjs" + }, + "types-registry-0.1.657.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.657.tgz", + "sha": "7b8452bf56d206a2ebb29d3944ce35b7d8eb56ae", + "registry": "npmjs" + }, + "types-registry-0.1.658.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.658.tgz", + "sha": "c21b22fb262d7be4fd1affbfb6dd88ca276c94e7", + "registry": "npmjs" + }, + "types-registry-0.1.659.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.659.tgz", + "sha": "351a1a59353d280000a64426619156d281c8493c", + "registry": "npmjs" + }, + "types-registry-0.1.660.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.660.tgz", + "sha": "dcac68eeb2bc99cff2fe818b5b06be2a5984dbdd", + "registry": "npmjs" + }, + "types-registry-0.1.661.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.661.tgz", + "sha": "0ccee9350394bd5c01bc27de011ae9076bb33b3c", + "registry": "npmjs" + }, + "types-registry-0.1.662.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.662.tgz", + "sha": "99c63b2f8f05cb46118fed70b8a30d649fdf7ff4", + "registry": "npmjs" + }, + "types-registry-0.1.663.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.663.tgz", + "sha": "a3f9d2d971bccf1ba6a7b40656f6f66e7c0cb9cd", + "registry": "npmjs" + }, + "types-registry-0.1.664.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.664.tgz", + "sha": "8305d3bccff59764030253ee5c1849be3efc3eea", + "registry": "npmjs" + }, + "types-registry-0.1.665.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.665.tgz", + "sha": "5fc359893f553437de8bf4689081a6ab25fb04c8", + "registry": "npmjs" + }, + "types-registry-0.1.666.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.666.tgz", + "sha": "77ee934e34b5bad64551816c7469ff390aee31e0", + "registry": "npmjs" + }, + "types-registry-0.1.667.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.667.tgz", + "sha": "1fcbd593b10a35ed35c9665730b5c51be8f44a57", + "registry": "npmjs" + }, + "types-registry-0.1.668.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.668.tgz", + "sha": "804d7f804a3ed01968be4eafd2e23eda98d6d5f1", + "registry": "npmjs" + }, + "types-registry-0.1.669.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.669.tgz", + "sha": "f0ae77325634c55c964b6395760f655a2b620b01", + "registry": "npmjs" + }, + "types-registry-0.1.670.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.670.tgz", + "sha": "fb1460b3fdc64a5baa41f5af276591e94f04c85b", + "registry": "npmjs" + }, + "types-registry-0.1.671.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.671.tgz", + "sha": "6ff2bb888836eec94dda7b1a592f81a94efbed2b", + "registry": "npmjs" + }, + "types-registry-0.1.672.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.672.tgz", + "sha": "e00c44a28a8037a12ab4a9dd2aec3d2f4f5e6dbb", + "registry": "npmjs" + }, + "types-registry-0.1.673.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.673.tgz", + "sha": "8cd7bc1345e8151e7ceccd997353b4d981b8159f", + "registry": "npmjs" + }, + "types-registry-0.1.674.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.674.tgz", + "sha": "3b2c2889035c324ae5ca57d81a87bc03336b632a", + "registry": "npmjs" + }, + "types-registry-0.1.675.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.675.tgz", + "sha": "e5797fbbe100071c5d9603f26cfe7414dc6c1ff3", + "registry": "npmjs" + }, + "types-registry-0.1.676.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.676.tgz", + "sha": "aefc1170b2d55316ac69114ca72ccd87deb57144", + "registry": "npmjs" + }, + "types-registry-0.1.677.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.677.tgz", + "sha": "64e0037aafcc18aac89529b07767f183ea566977", + "registry": "npmjs" + }, + "types-registry-0.1.678.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.678.tgz", + "sha": "78529a5a63bf3b0f4590b37048aad006b6fb7989", + "registry": "npmjs" + }, + "types-registry-0.1.679.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.679.tgz", + "sha": "4a6e0bc84eb0524ede0ce9fc8112ef0e166389a5", + "registry": "npmjs" + }, + "types-registry-0.1.680.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.680.tgz", + "sha": "ca8ed41cdba36f5d3b47383a1c0f489f922a4aeb", + "registry": "npmjs" + }, + "types-registry-0.1.681.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.681.tgz", + "sha": "1cc3bd195d58e288b5ae81ab028d248764cbeb1a", + "registry": "npmjs" + }, + "types-registry-0.1.682.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.682.tgz", + "sha": "1141b72fa59bc0e7fc4cb85db3f0ed38d1dee373", + "registry": "npmjs" + }, + "types-registry-0.1.683.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.683.tgz", + "sha": "2235b3c5f80bfd771bc3b026ba2b1a40f9fd15ea", + "registry": "npmjs" + }, + "types-registry-0.1.684.tgz": { + "url": "https://registry.npmjs.org/types-registry/-/types-registry-0.1.684.tgz", + "sha": "e75966f99e232b8bd09d8fae02fa247ce0f099cd", + "registry": "npmjs" + } + }, + "_attachments": {}, + "_rev": "1-cf07acfa28170e8b", + "_id": "types-registry", + "readme": "[object Object]" +} \ No newline at end of file diff --git a/tools/scripts/publish.mjs b/tools/scripts/publish.mjs new file mode 100644 index 000000000..a41a782a2 --- /dev/null +++ b/tools/scripts/publish.mjs @@ -0,0 +1,44 @@ +/** + * This is a minimal script to publish your package to "npm". + * This is meant to be used as-is or customize as you see fit. + * + * This script is executed on "dist/path/to/library" as "cwd" by default. + * + * You might need to authenticate with NPM before running this script. + */ + +import { execSync } from "child_process"; +import { readFileSync, writeFileSync } from "fs"; + +import devkit from "@nx/devkit"; +const { readCachedProjectGraph } = devkit; + +function invariant(condition, message) { + if (!condition) { + console.error(message); + process.exit(1); + } +} + +// Executing publish script: node path/to/publish.mjs {name} --version {version} --tag {tag} +// Default "tag" to "next" so we won't publish the "latest" tag by accident. +const [, , name] = process.argv; + +const graph = readCachedProjectGraph(); +const project = graph.nodes[name]; + +invariant( + project, + `Could not find project "${name}" in the workspace. Is the project.json configured correctly?` +); + +const outputPath = project.data?.targets?.build?.options?.outputPath; +invariant( + outputPath, + `Could not find "build.options.outputPath" of project "${name}". Is project.json configured correctly?` +); + +process.chdir(outputPath); + +// Execute "npm publish" to publish +execSync(`npm publish --access public`); diff --git a/tools/tsconfig.tools.json b/tools/tsconfig.tools.json new file mode 100644 index 000000000..99428e147 --- /dev/null +++ b/tools/tsconfig.tools.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "../dist/out-tsc/tools", + "rootDir": ".", + "module": "commonjs", + "target": "es5", + "types": ["node"], + "importHelpers": false + }, + "include": ["**/*.ts"] +} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 000000000..de0baadae --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,23 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "rootDir": ".", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "importHelpers": true, + "target": "es2015", + "module": "esnext", + "lib": ["es2020", "dom"], + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "baseUrl": ".", + "paths": { + "@2amtech/crudx": ["packages/crudx/src/index.ts"], + "@packages/crudx-swagger": ["packages/crudx-swagger/src/index.ts"] + } + }, + "exclude": ["node_modules", "tmp"] +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..89bbf4848 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,9364 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@2amtech/crudx@./packages/crudx": + version "1.0.0" + resolved "file:packages/crudx" + dependencies: + "@nestjs/common" "^10.1.3" + "@nestjs/typeorm" "^10.0.0" + "@types/qs" "^6.9.7" + "@zmotivat0r/o0" "^1.0.2" + class-transformer "^0.5.1" + class-validator "^0.14.0" + deepmerge "^4.3.1" + lodash "^4.17.21" + rxjs "^7.8.0" + tslib "^2.3.0" + typeorm "^0.3.17" + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@adobe/css-tools@^4.0.1": + version "4.2.0" + resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz" + integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@angular-devkit/core@16.0.1": + version "16.0.1" + resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.1.tgz" + integrity sha512-2uz98IqkKJlgnHbWQ7VeL4pb+snGAZXIama2KXi+k9GsRntdcw+udX8rL3G9SdUGUF+m6+147Y1oRBMHsO/v4w== + dependencies: + ajv "8.12.0" + ajv-formats "2.1.1" + jsonc-parser "3.2.0" + rxjs "7.8.1" + source-map "0.7.4" + +"@angular-devkit/core@16.1.0": + version "16.1.0" + resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.0.tgz" + integrity sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q== + dependencies: + ajv "8.12.0" + ajv-formats "2.1.1" + jsonc-parser "3.2.0" + rxjs "7.8.1" + source-map "0.7.4" + +"@angular-devkit/schematics@16.0.1": + version "16.0.1" + resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.0.1.tgz" + integrity sha512-A9D0LTYmiqiBa90GKcSuWb7hUouGIbm/AHbJbjL85WLLRbQA2PwKl7P5Mpd6nS/ZC0kfG4VQY3VOaDvb3qpI9g== + dependencies: + "@angular-devkit/core" "16.0.1" + jsonc-parser "3.2.0" + magic-string "0.30.0" + ora "5.4.1" + rxjs "7.8.1" + +"@angular-devkit/schematics@16.1.0": + version "16.1.0" + resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.0.tgz" + integrity sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A== + dependencies: + "@angular-devkit/core" "16.1.0" + jsonc-parser "3.2.0" + magic-string "0.30.0" + ora "5.4.1" + rxjs "7.8.1" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + +"@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.5": + version "7.24.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.22.9", "@babel/core@^7.23.9", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== + dependencies: + "@babel/types" "^7.24.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz" + integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.22.9", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.6", "@babel/helper-create-class-features-plugin@^7.22.9": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz" + integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz" + integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.2": + version "0.4.2" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz" + integrity sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz" + integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz" + integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-wrap-function" "^7.22.9" + +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6", "@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-string-parser@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.22.5", "@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== + +"@babel/helper-validator-option@^7.22.5", "@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.9": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz" + integrity sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q== + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + +"@babel/highlight@^7.24.2": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz" + integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz" + integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.5" + +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-decorators@^7.22.7": + version "7.22.7" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.7.tgz" + integrity sha512-omXqPF7Onq4Bb7wHxXjM3jSMSJvUUbvDvmmds7KI5n9Cq6Ln5I05I1W2nRlRof1rGdiUxJrxwe285WF96XlBXQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/plugin-syntax-decorators" "^7.22.5" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.5.tgz" + integrity sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz" + integrity sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz" + integrity sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.3.3", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz" + integrity sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.22.7": + version "7.22.7" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz" + integrity sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz" + integrity sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" + +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz" + integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz" + integrity sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz" + integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz" + integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz" + integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dotall-regex@^7.22.5", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz" + integrity sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz" + integrity sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-dynamic-import@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz" + integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz" + integrity sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-export-namespace-from@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz" + integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz" + integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-json-strings@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz" + integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-logical-assignment-operators@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz" + integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-amd@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz" + integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz" + integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz" + integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz" + integrity sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz" + integrity sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz" + integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz" + integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz" + integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== + dependencies: + "@babel/compat-data" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.5" + +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-optional-catch-binding@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz" + integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.22.5", "@babel/plugin-transform-optional-chaining@^7.22.6": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz" + integrity sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz" + integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz" + integrity sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz" + integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz" + integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz" + integrity sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-runtime@^7.22.9": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz" + integrity sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ== + dependencies: + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.4" + babel-plugin-polyfill-corejs3 "^0.8.2" + babel-plugin-polyfill-regenerator "^0.5.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz" + integrity sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz" + integrity sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typescript@^7.22.5": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz" + integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-typescript" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz" + integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz" + integrity sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz" + integrity sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz" + integrity sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-env@^7.22.9": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz" + integrity sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.5" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.5" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.22.7" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.22.5" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.5" + "@babel/plugin-transform-classes" "^7.22.6" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.22.5" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.5" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.5" + "@babel/plugin-transform-for-of" "^7.22.5" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.5" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.5" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-modules-systemjs" "^7.22.5" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.5" + "@babel/plugin-transform-numeric-separator" "^7.22.5" + "@babel/plugin-transform-object-rest-spread" "^7.22.5" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.6" + "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.5" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.5" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.5" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.4" + babel-plugin-polyfill-corejs3 "^0.8.2" + babel-plugin-polyfill-regenerator "^0.5.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@^0.1.5": + version "0.1.6" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz" + integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-typescript@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz" + integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.22.5" + "@babel/plugin-transform-typescript" "^7.22.5" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.6", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.22.6" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz" + integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.24.0", "@babel/template@^7.3.3": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.16.0", "@babel/traverse@^7.24.5": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== + dependencies: + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.24.5" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== + dependencies: + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.6.2" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz" + integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== + +"@eslint/eslintrc@^1.2.3": + version "1.4.1" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@faker-js/faker@^8.4.1": + version "8.4.1" + resolved "https://registry.npmjs.org/@faker-js/faker/-/faker-8.4.1.tgz" + integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== + dependencies: + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" + +"@jest/reporters@^29.4.1", "@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.4.1", "@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== + dependencies: + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== + dependencies: + "@jest/test-result" "^29.7.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + slash "^3.0.0" + +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.0.0", "@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@lukeed/csprng@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz" + integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== + +"@nestjs/common@^10.0.0", "@nestjs/common@^10.1.3", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^9.0.0 || ^10.0.0": + version "10.1.3" + resolved "https://registry.npmjs.org/@nestjs/common/-/common-10.1.3.tgz" + integrity sha512-xSyXBwgcmiFwQqek1Urw/AL3pRPq9bp/tpgfTxmnJg3gP6XNUbx1fDr0de50irXgZYzFKfVFo9ptC3b2du5YKA== + dependencies: + iterare "1.2.1" + tslib "2.6.1" + uid "2.0.2" + +"@nestjs/config@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@nestjs/config/-/config-3.0.0.tgz" + integrity sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw== + dependencies: + dotenv "16.1.4" + dotenv-expand "10.0.0" + lodash "4.17.21" + uuid "9.0.0" + +"@nestjs/core@^10.0.0", "@nestjs/core@^10.0.2", "@nestjs/core@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/core@^9.0.0 || ^10.0.0": + version "10.1.3" + resolved "https://registry.npmjs.org/@nestjs/core/-/core-10.1.3.tgz" + integrity sha512-VzK54TuacC3Vmq3b5xTyMVTlDNJeKbjpKfV9fNqm4TbIBm8ZPo3FC0osJAbAK4XwbVvv2Flq1yA3CutasupVjw== + dependencies: + "@nuxtjs/opencollective" "0.3.2" + fast-safe-stringify "2.1.1" + iterare "1.2.1" + path-to-regexp "3.2.0" + tslib "2.6.1" + uid "2.0.2" + +"@nestjs/jwt@^10.2.0": + version "10.2.0" + resolved "https://registry.npmjs.org/@nestjs/jwt/-/jwt-10.2.0.tgz" + integrity sha512-x8cG90SURkEiLOehNaN2aRlotxT0KZESUliOPKKnjWiyJOcWurkF3w345WOX0P4MgFzUjGoZ1Sy0aZnxeihT0g== + dependencies: + "@types/jsonwebtoken" "9.0.5" + jsonwebtoken "9.0.2" + +"@nestjs/mapped-types@2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.2.tgz" + integrity sha512-V0izw6tWs6fTp9+KiiPUbGHWALy563Frn8X6Bm87ANLRuE46iuBMD5acKBDP5lKL/75QFvrzSJT7HkCbB0jTpg== + +"@nestjs/platform-express@^10.0.0", "@nestjs/platform-express@^10.0.2": + version "10.1.3" + resolved "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.1.3.tgz" + integrity sha512-RSf7ooCrxiWJlWl3CLfpaYmAf3U0tRsN7pJakujWdvzVJU2EzVZTLcy1MtnSg/HBm9/Rvg98VI5QI6oOhOpt+A== + dependencies: + body-parser "1.20.2" + cors "2.8.5" + express "4.18.2" + multer "1.4.4-lts.1" + tslib "2.6.1" + +"@nestjs/schematics@^10.0.1": + version "10.0.1" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.1.tgz" + integrity sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg== + dependencies: + "@angular-devkit/core" "16.1.0" + "@angular-devkit/schematics" "16.1.0" + comment-json "4.2.3" + jsonc-parser "3.2.0" + pluralize "8.0.0" + +"@nestjs/schematics@^9.1.0": + version "9.2.0" + resolved "https://registry.npmjs.org/@nestjs/schematics/-/schematics-9.2.0.tgz" + integrity sha512-wHpNJDPzM6XtZUOB3gW0J6mkFCSJilzCM3XrHI1o0C8vZmFE1snbmkIXNyoi1eV0Nxh1BMymcgz5vIMJgQtTqw== + dependencies: + "@angular-devkit/core" "16.0.1" + "@angular-devkit/schematics" "16.0.1" + jsonc-parser "3.2.0" + pluralize "8.0.0" + +"@nestjs/swagger@^7.1.6": + version "7.1.6" + resolved "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.1.6.tgz" + integrity sha512-YK5MSIuI2s76tg5W+fZSEVAmnlRe3ZVbb7/AYKi1Cs7exuzNjMgWIsnYxY2VCXhWaiT/ykeTFS9wcBdI54LeFA== + dependencies: + "@nestjs/mapped-types" "2.0.2" + js-yaml "4.1.0" + lodash "4.17.21" + path-to-regexp "3.2.0" + swagger-ui-dist "5.1.0" + +"@nestjs/testing@^10.0.2": + version "10.3.8" + resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-10.3.8.tgz" + integrity sha512-hpX9das2TdFTKQ4/2ojhjI6YgXtCfXRKui3A4Qaj54VVzc5+mtK502Jj18Vzji98o9MVS6skmYu+S/UvW3U6Fw== + dependencies: + tslib "2.6.2" + +"@nestjs/typeorm@^10.0.0": + version "10.0.0" + resolved "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-10.0.0.tgz" + integrity sha512-WQU4HCDTz4UavsFzvGUKDHqi0MO5K47yFoPXdmh+Z/hCNO7SHCMmV9jLiLukM8n5nKUqJ3jDqiljkWBcZPdCtA== + dependencies: + uuid "9.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nrwl/devkit@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.6.0.tgz" + integrity sha512-xZEN6wfA1uJwv+FVRQFOHsCcpvGvIYGx2zutbzungDodWkfzlJ3tzIGqYjIpPCBVT83erM6Gscnka2W46AuKfA== + dependencies: + "@nx/devkit" "16.6.0" + +"@nrwl/eslint-plugin-nx@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-16.6.0.tgz" + integrity sha512-kNT8Q6buTX9kIYgiZZRFcr2bxSgIQR3tpbBlzXhKFeQE31w53fVWbdX3oPbn+VPgza84beVCEUbyOHexA4X82Q== + dependencies: + "@nx/eslint-plugin" "16.6.0" + +"@nrwl/jest@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/jest/-/jest-16.6.0.tgz" + integrity sha512-WN1kmH3tDGFS1IeMG27wwvERXPYLDXtJHRwXzBd8kbb2JMEAO9C501N06/leS7V0jzmtpwfs2iqmIuoOuw6jxg== + dependencies: + "@nx/jest" "16.6.0" + +"@nrwl/js@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/js/-/js-16.6.0.tgz" + integrity sha512-fMqMuqF/rwi1diirkNQ0ZgRnPwMoutE92xnLUZcqbyD/P4kTsrxleOAGvxpzpMpdvUU0Cw+cpVwHf6nw7o8JCA== + dependencies: + "@nx/js" "16.6.0" + +"@nrwl/linter@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/linter/-/linter-16.6.0.tgz" + integrity sha512-E/6E8EVrOECqwevVYBUH/YF2+K2pE0GcNs6233BnGpflyxhxNYaH18vM0y0q8BGbeZEKkqEiiMTryg50+GiBzw== + dependencies: + "@nx/linter" "16.6.0" + +"@nrwl/nest@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/nest/-/nest-16.6.0.tgz" + integrity sha512-bLeo1wbKWKn7qNM1wuFL+1VGYKORTlJc0eH9QmQ0A4G2n5r9Pz+Ssjqcs3TnypptjT82WLl8y/+622nVH+jqEw== + dependencies: + "@nx/nest" "16.6.0" + +"@nrwl/node@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/node/-/node-16.6.0.tgz" + integrity sha512-4wJ6xHxGqsvzY8klq5gwW5BJmvK80CiI5/o37ocF9+8UbD5eYfxaWZQM4091Wwf6tX8M4YluAzLn4DPkHgZLnQ== + dependencies: + "@nx/node" "16.6.0" + +"@nrwl/tao@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/tao/-/tao-16.6.0.tgz" + integrity sha512-NQkDhmzlR1wMuYzzpl4XrKTYgyIzELdJ+dVrNKf4+p4z5WwKGucgRBj60xMQ3kdV25IX95/fmMDB8qVp/pNQ0Q== + dependencies: + nx "16.6.0" + tslib "^2.3.0" + +"@nrwl/webpack@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/webpack/-/webpack-16.6.0.tgz" + integrity sha512-ZzmQS5Xz0mkCV/8Q87iy0jQE2Z36PjkEM0K/tRCPHi3vgOhvzJWn6Ecs1jAfxCHGQwbc9v0yauQWetiUOsCeTw== + dependencies: + "@nx/webpack" "16.6.0" + +"@nrwl/workspace@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nrwl/workspace/-/workspace-16.6.0.tgz" + integrity sha512-Bt2o1tU1ZYQKNtnBbyg62T1ELEdlNwxb5C6MPENnlDB/kkmiLXvPFTzMV2lgDZvMLP6eLazq98P2TQ8jCbY4lA== + dependencies: + "@nx/workspace" "16.6.0" + +"@nuxtjs/opencollective@0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" + integrity sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA== + dependencies: + chalk "^4.1.0" + consola "^2.15.0" + node-fetch "^2.6.1" + +"@nx/devkit@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/devkit/-/devkit-16.6.0.tgz" + integrity sha512-rhJ0y+MSPHDuoZPxsOYdj/n5ks+gK74TIMgTb8eZgPT/uR86a4oxf62wUQXgECedR5HzLE2HunbnoLhhJXmpJw== + dependencies: + "@nrwl/devkit" "16.6.0" + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.5.3" + tmp "~0.2.1" + tslib "^2.3.0" + +"@nx/eslint-plugin@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-16.6.0.tgz" + integrity sha512-fTqGTjAiFGZsYrs5OgwtL7bJ5qaNS6mW2/d/jZiN1oiSLBaJUyceKZWs0y5dvOMlJOo0/UG4hbBoMJGBBBWx+g== + dependencies: + "@nrwl/eslint-plugin-nx" "16.6.0" + "@nx/devkit" "16.6.0" + "@nx/js" "16.6.0" + "@typescript-eslint/type-utils" "^5.60.1" + "@typescript-eslint/utils" "^5.60.1" + chalk "^4.1.0" + confusing-browser-globals "^1.0.9" + jsonc-eslint-parser "^2.1.0" + semver "7.5.3" + tslib "^2.3.0" + +"@nx/jest@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/jest/-/jest-16.6.0.tgz" + integrity sha512-vELYDr4f3irgokfh6/lgY0o6PsSqG6Kn2ytt3eGcy1tHaHcx8TsU7ubZbEtSE6J2/T6W/l6+X3kyWSWEsXeXXw== + dependencies: + "@jest/reporters" "^29.4.1" + "@jest/test-result" "^29.4.1" + "@nrwl/jest" "16.6.0" + "@nx/devkit" "16.6.0" + "@nx/js" "16.6.0" + "@phenomnomnominal/tsquery" "~5.0.1" + chalk "^4.1.0" + dotenv "~10.0.0" + identity-obj-proxy "3.0.0" + jest-config "^29.4.1" + jest-resolve "^29.4.1" + jest-util "^29.4.1" + resolve.exports "1.1.0" + tslib "^2.3.0" + +"@nx/js@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/js/-/js-16.6.0.tgz" + integrity sha512-9ZTw5cMR1XWfn8SXe4xp2ETAat+SCNcOBqEf/Ih5b3MjodlOVLRQNiYlGSpuCr1keok25DJZxKIbRgoJCLG6JA== + dependencies: + "@babel/core" "^7.22.9" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-decorators" "^7.22.7" + "@babel/plugin-transform-runtime" "^7.22.9" + "@babel/preset-env" "^7.22.9" + "@babel/preset-typescript" "^7.22.5" + "@babel/runtime" "^7.22.6" + "@nrwl/js" "16.6.0" + "@nx/devkit" "16.6.0" + "@nx/workspace" "16.6.0" + "@phenomnomnominal/tsquery" "~5.0.1" + babel-plugin-const-enum "^1.0.1" + babel-plugin-macros "^2.8.0" + babel-plugin-transform-typescript-metadata "^0.3.1" + chalk "^4.1.0" + detect-port "^1.5.1" + fast-glob "3.2.7" + fs-extra "^11.1.0" + ignore "^5.0.4" + js-tokens "^4.0.0" + minimatch "3.0.5" + semver "7.5.3" + source-map-support "0.5.19" + ts-node "10.9.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + +"@nx/linter@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/linter/-/linter-16.6.0.tgz" + integrity sha512-U0GOjvAm0BnA1AhqVshDrpA0lRDSggPYz4o3I9cCUd6ET41dwXrubZstWZ9tbPMXFlht1+Yk4CfM+XQEWW8JWQ== + dependencies: + "@nrwl/linter" "16.6.0" + "@nx/devkit" "16.6.0" + "@nx/js" "16.6.0" + "@phenomnomnominal/tsquery" "~5.0.1" + tmp "~0.2.1" + tslib "^2.3.0" + +"@nx/nest@^16.6.0", "@nx/nest@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/nest/-/nest-16.6.0.tgz" + integrity sha512-deEJluORpsLpKjTaIq6/SPWvsd/3DCox5i0ltjvWuy7G2VKoynUXFSBODa/9eFcjQ3wy2cpwBpPpXqusKoaIDQ== + dependencies: + "@nestjs/schematics" "^9.1.0" + "@nrwl/nest" "16.6.0" + "@nx/devkit" "16.6.0" + "@nx/js" "16.6.0" + "@nx/linter" "16.6.0" + "@nx/node" "16.6.0" + "@phenomnomnominal/tsquery" "~5.0.1" + enquirer "~2.3.6" + semver "7.5.3" + tslib "^2.3.0" + +"@nx/node@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/node/-/node-16.6.0.tgz" + integrity sha512-/3uVr4Hgr8cKPxs6wINmcqbV9pmhdfL0FCWf7mMNGn0RoeOFUvcIzu22OZdsimZwLZeXjGB+WL8cZO0etDolJg== + dependencies: + "@nrwl/node" "16.6.0" + "@nx/devkit" "16.6.0" + "@nx/jest" "16.6.0" + "@nx/js" "16.6.0" + "@nx/linter" "16.6.0" + "@nx/workspace" "16.6.0" + tslib "^2.3.0" + +"@nx/nx-linux-x64-gnu@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.6.0.tgz" + integrity sha512-qQIpSVN8Ij4oOJ5v+U+YztWJ3YQkeCIevr4RdCE9rDilfq9RmBD94L4VDm7NRzYBuQL8uQxqWzGqb7ZW4mfHpw== + +"@nx/nx-linux-x64-musl@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.6.0.tgz" + integrity sha512-EYOHe11lfVfEfZqSAIa1c39mx2Obr4mqd36dBZx+0UKhjrcmWiOdsIVYMQSb3n0TqB33BprjI4p9ZcFSDuoNbA== + +"@nx/webpack@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/webpack/-/webpack-16.6.0.tgz" + integrity sha512-gingwolFJ2q2f6WvgE+OlIYlVulewSOReiw0hhvvr6U9vxT0F3ctOqKrD3SVdawOf6yiXFHngBrTjvAb7O55+Q== + dependencies: + "@babel/core" "^7.22.9" + "@nrwl/webpack" "16.6.0" + "@nx/devkit" "16.6.0" + "@nx/js" "16.6.0" + autoprefixer "^10.4.9" + babel-loader "^9.1.2" + browserslist "^4.21.4" + chalk "^4.1.0" + chokidar "^3.5.1" + copy-webpack-plugin "^10.2.4" + css-loader "^6.4.0" + css-minimizer-webpack-plugin "^5.0.0" + dotenv "~10.0.0" + fork-ts-checker-webpack-plugin "7.2.13" + ignore "^5.0.4" + less "4.1.3" + less-loader "11.1.0" + license-webpack-plugin "^4.0.2" + loader-utils "^2.0.3" + mini-css-extract-plugin "~2.4.7" + parse5 "4.0.0" + postcss "^8.4.14" + postcss-import "~14.1.0" + postcss-loader "^6.1.1" + rxjs "^7.8.0" + sass "^1.42.1" + sass-loader "^12.2.0" + source-map-loader "^3.0.0" + style-loader "^3.3.0" + stylus "^0.59.0" + stylus-loader "^7.1.0" + terser-webpack-plugin "^5.3.3" + ts-loader "^9.3.1" + tsconfig-paths-webpack-plugin "4.0.0" + tslib "^2.3.0" + webpack "^5.80.0" + webpack-dev-server "^4.9.3" + webpack-node-externals "^3.0.0" + webpack-subresource-integrity "^5.1.0" + +"@nx/workspace@16.6.0": + version "16.6.0" + resolved "https://registry.npmjs.org/@nx/workspace/-/workspace-16.6.0.tgz" + integrity sha512-rh+qTQ/Ahszezx+aLjZfpej314w2mrwz2eJAn6LQmlsSnOLHsVIoVRDAGyqT2OF+29K2r5BQ0jRiB3zyYrb5MQ== + dependencies: + "@nrwl/workspace" "16.6.0" + "@nx/devkit" "16.6.0" + chalk "^4.1.0" + ignore "^5.0.4" + nx "16.6.0" + rxjs "^7.8.0" + tslib "^2.3.0" + yargs-parser "21.1.1" + +"@parcel/watcher@2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz" + integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== + dependencies: + node-addon-api "^3.2.1" + node-gyp-build "^4.3.0" + +"@phenomnomnominal/tsquery@~5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz" + integrity sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA== + dependencies: + esquery "^1.4.0" + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sqltools/formatter@^1.2.5": + version "1.2.5" + resolved "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz" + integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.5" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + dependencies: + "@babel/types" "^7.20.7" + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.0" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz" + integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/cookiejar@^2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz" + integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== + +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.44.2" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz" + integrity sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.1" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.35" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.17" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + +"@types/http-proxy@^1.17.8": + version "1.17.11" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz" + integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.5.11": + version "29.5.12" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz" + integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.12" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz" + integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/jsonwebtoken@9.0.5": + version "9.0.5" + resolved "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.5.tgz" + integrity sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA== + dependencies: + "@types/node" "*" + +"@types/lodash@^4.14.175", "@types/lodash@^4.17.4": + version "4.17.4" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz" + integrity sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ== + +"@types/methods@^1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz" + integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== + +"@types/mime@*", "@types/mime@^1": + version "1.3.2" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/node@*", "@types/node@18.7.1": + version "18.7.1" + resolved "https://registry.npmjs.org/@types/node/-/node-18.7.1.tgz" + integrity sha512-GKX1Qnqxo4S+Z/+Z8KKPLpH282LD7jLHWJcVryOflnsnH+BtSDfieR6ObwBMwpnNws0bUK8GI7z0unQf9bARNQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/pluralize@^0.0.30": + version "0.0.30" + resolved "https://registry.npmjs.org/@types/pluralize/-/pluralize-0.0.30.tgz" + integrity sha512-kVww6xZrW/db5BR9OqiT71J9huRdQ+z/r+LbDuT7/EK50mCmj5FoaIARnVv0rvjUS/YpDox0cDU9lpQT011VBA== + +"@types/qs@*", "@types/qs@^6.9.7": + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/semver@^7.3.12": + version "7.5.0" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz" + integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + +"@types/send@*": + version "0.17.1" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.2" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz" + integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/superagent@^8.1.0": + version "8.1.7" + resolved "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.7.tgz" + integrity sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww== + dependencies: + "@types/cookiejar" "^2.1.5" + "@types/methods" "^1.1.4" + "@types/node" "*" + +"@types/supertest@^6.0.2": + version "6.0.2" + resolved "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.2.tgz" + integrity sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg== + dependencies: + "@types/methods" "^1.1.4" + "@types/superagent" "^8.1.0" + +"@types/uuid@^9.0.8": + version "9.0.8" + resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== + +"@types/validator@^13.7.10": + version "13.9.0" + resolved "https://registry.npmjs.org/@types/validator/-/validator-13.9.0.tgz" + integrity sha512-NclP0IbzHj/4tJZKFqKh8E7kZdgss+MCUYV9G+TLltFfDA4lFgE4PKPpDIyS2FlcdANIfSx273emkupvChigbw== + +"@types/ws@^8.5.5": + version "8.5.5" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz" + integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.60.1": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.60.1": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@^5.60.1", "@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@^5.60.1", "@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@verdaccio/commons-api@10.2.0": + version "10.2.0" + resolved "https://registry.npmjs.org/@verdaccio/commons-api/-/commons-api-10.2.0.tgz" + integrity sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ== + dependencies: + http-errors "2.0.0" + http-status-codes "2.2.0" + +"@verdaccio/config@6.0.0-6-next.74": + version "6.0.0-6-next.74" + resolved "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.74.tgz" + integrity sha512-qpP3Hc6OCdUjJw17SQaEBPfTY/YFAGpWuiUizX5D9P46Xf/pEL99oViqA77xJPI0VZIlVue4kxcAO/zJ2oxNwA== + dependencies: + "@verdaccio/core" "6.0.0-6-next.74" + "@verdaccio/utils" "6.0.0-6-next.42" + debug "4.3.4" + js-yaml "4.1.0" + lodash "4.17.21" + minimatch "3.1.2" + yup "0.32.11" + +"@verdaccio/core@6.0.0-6-next.74": + version "6.0.0-6-next.74" + resolved "https://registry.npmjs.org/@verdaccio/core/-/core-6.0.0-6-next.74.tgz" + integrity sha512-aXryZX2GyvWLvEn2pnxarTY6nOedrh9W7uGsXaW7uYOD7dq8lOQ4NH8Hhl/nw+Sswp3mE5JNl2P3nIoGyhOYiQ== + dependencies: + ajv "8.12.0" + core-js "3.30.2" + http-errors "2.0.0" + http-status-codes "2.2.0" + process-warning "1.0.0" + semver "7.5.4" + +"@verdaccio/file-locking@10.3.1": + version "10.3.1" + resolved "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-10.3.1.tgz" + integrity sha512-oqYLfv3Yg3mAgw9qhASBpjD50osj2AX4IwbkUtyuhhKGyoFU9eZdrbeW6tpnqUnj6yBMtAPm2eGD4BwQuX400g== + dependencies: + lockfile "1.0.4" + +"@verdaccio/file-locking@11.0.0-6-next.7": + version "11.0.0-6-next.7" + resolved "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-11.0.0-6-next.7.tgz" + integrity sha512-S0GNoe2oBOgB7fKJN2vZqnl5qDEvdnTfKAfa47InXweJROeul6kjlE2/NlbNbK3zZID01VR1HFrFehMQO0Jyfw== + dependencies: + lockfile "1.0.4" + +"@verdaccio/local-storage@10.3.3": + version "10.3.3" + resolved "https://registry.npmjs.org/@verdaccio/local-storage/-/local-storage-10.3.3.tgz" + integrity sha512-/n0FH+1hxVg80YhYBfJuW7F2AuvLY2fra8/DTCilWDll9Y5yZDxwntZfcKHJLerCA4atrbJtvaqpWkoV3Q9x8w== + dependencies: + "@verdaccio/commons-api" "10.2.0" + "@verdaccio/file-locking" "10.3.1" + "@verdaccio/streams" "10.2.1" + async "3.2.4" + debug "4.3.4" + lodash "4.17.21" + lowdb "1.0.0" + mkdirp "1.0.4" + +"@verdaccio/logger-7@6.0.0-6-next.19": + version "6.0.0-6-next.19" + resolved "https://registry.npmjs.org/@verdaccio/logger-7/-/logger-7-6.0.0-6-next.19.tgz" + integrity sha512-DQwmPPRWvrT4TMur4g4+c5dNr7WnoT6sXYpw0Yh6NgZpH2D6FMcaxpH1me0rklpfnnXZmV3/zs2MvLJaWmRl4w== + dependencies: + "@verdaccio/logger-commons" "6.0.0-6-next.42" + pino "7.11.0" + +"@verdaccio/logger-commons@6.0.0-6-next.42": + version "6.0.0-6-next.42" + resolved "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-6.0.0-6-next.42.tgz" + integrity sha512-ydp12CVXdYhkXPxJevGW38Qf9HJdOF/KWcDmCWo7pi9atfiMkUWoOuEC1nr+7Dx+S5dA7kDfTqFLdadAuyO93A== + dependencies: + "@verdaccio/core" "6.0.0-6-next.74" + "@verdaccio/logger-prettify" "6.0.0-6-next.10" + colorette "2.0.20" + debug "4.3.4" + +"@verdaccio/logger-prettify@6.0.0-6-next.10": + version "6.0.0-6-next.10" + resolved "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-6.0.0-6-next.10.tgz" + integrity sha512-G9woGojHXoRg3W4fE2ZlNy2c25f5faqLWHxVdnDFbgbH6dieG+GzlyNwiOcrRC4LEkh7dWcgwuNMx1NZFojqhg== + dependencies: + colorette "2.0.20" + dayjs "1.11.7" + lodash "4.17.21" + pino-abstract-transport "1.0.0" + sonic-boom "3.3.0" + +"@verdaccio/middleware@6.0.0-6-next.53": + version "6.0.0-6-next.53" + resolved "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-6.0.0-6-next.53.tgz" + integrity sha512-shzf8+ww161TGOQA+Ee+JsWLgji07kkxLJr+YQSj3d9glbq4OE64sw51cV3BwpBbIALWziLTmIbYLaZgaRkZYg== + dependencies: + "@verdaccio/config" "6.0.0-6-next.74" + "@verdaccio/core" "6.0.0-6-next.74" + "@verdaccio/url" "11.0.0-6-next.40" + "@verdaccio/utils" "6.0.0-6-next.42" + debug "4.3.4" + express "4.18.2" + express-rate-limit "5.5.1" + lodash "4.17.21" + lru-cache "7.18.3" + mime "2.6.0" + +"@verdaccio/search@6.0.0-6-next.2": + version "6.0.0-6-next.2" + resolved "https://registry.npmjs.org/@verdaccio/search/-/search-6.0.0-6-next.2.tgz" + integrity sha512-5Hkcxoj7crPn6Zth59I54af6KO5Ho7bzvCHCDbEwcmjewKcQJB4Kst4cEtpN/xA1ao0hqOSruEObl7/mqCq8hg== + +"@verdaccio/signature@6.0.0-6-next.2": + version "6.0.0-6-next.2" + resolved "https://registry.npmjs.org/@verdaccio/signature/-/signature-6.0.0-6-next.2.tgz" + integrity sha512-aFvMbxxHzJCpPmqSgVuQYvYN2RP11CoSEcTXikkyb1zF4Uf3cOy53zUZ1Y7iOKCRYTgWrmet9KP7+24e44GHxg== + dependencies: + debug "4.3.4" + jsonwebtoken "9.0.0" + lodash "4.17.21" + +"@verdaccio/streams@10.2.1": + version "10.2.1" + resolved "https://registry.npmjs.org/@verdaccio/streams/-/streams-10.2.1.tgz" + integrity sha512-OojIG/f7UYKxC4dYX8x5ax8QhRx1b8OYUAMz82rUottCuzrssX/4nn5QE7Ank0DUSX3C9l/HPthc4d9uKRJqJQ== + +"@verdaccio/tarball@11.0.0-6-next.43": + version "11.0.0-6-next.43" + resolved "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-11.0.0-6-next.43.tgz" + integrity sha512-/cojl1+EWLhfu5FJh/dLBtwwC+vI6dR0xldJvE7BHJ5P79DnBUbzAqtwoWwsOR2FkGkWoReXZjPR4QVrUivhLA== + dependencies: + "@verdaccio/core" "6.0.0-6-next.74" + "@verdaccio/url" "11.0.0-6-next.40" + "@verdaccio/utils" "6.0.0-6-next.42" + debug "4.3.4" + lodash "4.17.21" + +"@verdaccio/ui-theme@6.0.0-6-next.74": + version "6.0.0-6-next.74" + resolved "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.74.tgz" + integrity sha512-IoAl4bbLF9SFJsQvyEbJeubRs0O2WusOOgry6vsfp1w48+oarcnGkdOU/WZuIdlFhmPdhOJpYL0cFDUBRDvdOA== + +"@verdaccio/url@11.0.0-6-next.40": + version "11.0.0-6-next.40" + resolved "https://registry.npmjs.org/@verdaccio/url/-/url-11.0.0-6-next.40.tgz" + integrity sha512-TGP+96QEgvQMIx+0WsFmxpeV/YJlX+os85zrBipioZDUm/JmNK6i9wCfYjA5Uncn+NGRsI6bUJhi05Ymoh10cA== + dependencies: + "@verdaccio/core" "6.0.0-6-next.74" + debug "4.3.4" + lodash "4.17.21" + validator "13.9.0" + +"@verdaccio/utils@6.0.0-6-next.42": + version "6.0.0-6-next.42" + resolved "https://registry.npmjs.org/@verdaccio/utils/-/utils-6.0.0-6-next.42.tgz" + integrity sha512-ckf1N0rlnWd07aQQx+K9/fvO1LtSVGAAls22Isdfb+dfBjUYalIha/EDIEr3mq7QTqm0zA6mLhP7m4Bv35FH6g== + dependencies: + "@verdaccio/core" "6.0.0-6-next.74" + lodash "4.17.21" + minimatch "3.1.2" + semver "7.5.4" + +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz" + integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz" + integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz" + integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz" + integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz" + integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz" + integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz" + integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz" + integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A== + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@3.0.0-rc.46": + version "3.0.0-rc.46" + resolved "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz" + integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + +"@zmotivat0r/o0@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@zmotivat0r/o0/-/o0-1.0.2.tgz" + integrity sha512-wQ/sHqJEtYb+QtgxtWlBpGASFZ2avpoRWbvpginEuy7howZHTZTy3zYMRMaBKok4bZwIGU5bjmzE59+m1IWqKQ== + +abab@^2.0.5: + version "2.0.6" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.10.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +address@^1.0.1: + version "1.2.2" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv-formats@^2.1.1, ajv-formats@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^6.12.5, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0, ajv@8.12.0: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +apache-md5@1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.8.tgz" + integrity sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA== + +app-root-path@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz" + integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== + +append-field@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz" + integrity sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-union@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz" + integrity sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw== + +array.prototype.findlastindex@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz" + integrity sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz" + integrity sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@^1.0.0, assert-plus@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +async@^3.2.3, async@3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +autoprefixer@^10.4.9: + version "10.4.14" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + dependencies: + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +axios@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz" + integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +babel-jest@^29.0.0, babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== + dependencies: + "@jest/transform" "^29.7.0" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^9.1.2: + version "9.1.3" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz" + integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== + dependencies: + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" + +babel-plugin-const-enum@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz" + integrity sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-typescript" "^7.3.3" + "@babel/traverse" "^7.16.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-polyfill-corejs2@^0.4.4: + version "0.4.5" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz" + integrity sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.8.2: + version "0.8.3" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz" + integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + core-js-compat "^3.31.0" + +babel-plugin-polyfill-regenerator@^0.5.1: + version "0.5.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz" + integrity sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.4.2" + +babel-plugin-transform-typescript-metadata@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz" + integrity sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bcryptjs@2.4.3: + version "2.4.3" + resolved "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz" + integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.0.3, bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.1.1" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz" + integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== + dependencies: + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.22.2, "browserslist@>= 4.21.0": + version "4.23.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +busboy@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001587: + version "1.0.30001620" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz" + integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chokidar@^3.5.1, chokidar@^3.5.2, chokidar@^3.5.3, "chokidar@>=3.0.0 <4.0.0": + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cjs-module-lexer@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz" + integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== + +class-transformer@*, "class-transformer@^0.4.0 || ^0.5.0", class-transformer@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz" + integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw== + +class-validator@*, "class-validator@^0.13.0 || ^0.14.0", class-validator@^0.14.0: + version "0.14.0" + resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.14.0.tgz" + integrity sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A== + dependencies: + "@types/validator" "^13.7.10" + libphonenumber-js "^1.10.14" + validator "^13.7.0" + +cli-cursor@^3.1.0, cli-cursor@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-highlight@^2.1.11: + version "2.1.11" + resolved "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz" + integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== + dependencies: + chalk "^4.0.0" + highlight.js "^10.7.1" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^6.0.0" + yargs "^16.0.0" + +cli-spinners@^2.5.0, cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +clipanion@3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/clipanion/-/clipanion-3.2.1.tgz" + integrity sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA== + dependencies: + typanion "^3.8.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10, colorette@2.0.20: + version "2.0.20" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +comment-json@4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz" + integrity sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.3" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +component-emitter@^1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4, compression@1.7.4: + version "1.7.4" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.9: + version "1.0.11" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +consola@^2.15.0: + version "2.15.3" + resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.6.0: + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookiejar@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +cookies@0.8.0: + version "0.8.0" + resolved "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz" + integrity sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-webpack-plugin@^10.2.4: + version "10.2.4" + resolved "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz" + integrity sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg== + dependencies: + fast-glob "^3.2.7" + glob-parent "^6.0.1" + globby "^12.0.2" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +core-js-compat@^3.31.0: + version "3.32.0" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz" + integrity sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw== + dependencies: + browserslist "^4.21.9" + +core-js@3.30.2: + version "3.30.2" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz" + integrity sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg== + +core-util-is@^1.0.3, core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +cors@2.8.5: + version "2.8.5" + resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-loader@^6.4.0: + version "6.8.1" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz" + integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.21" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.3" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.8" + +css-minimizer-webpack-plugin@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz" + integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + cssnano "^6.0.1" + jest-worker "^29.4.3" + postcss "^8.4.24" + schema-utils "^4.0.1" + serialize-javascript "^6.0.1" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^2.2.1: + version "2.3.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz" + integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^4.0.0" + postcss-calc "^9.0.0" + postcss-colormin "^6.0.0" + postcss-convert-values "^6.0.0" + postcss-discard-comments "^6.0.0" + postcss-discard-duplicates "^6.0.0" + postcss-discard-empty "^6.0.0" + postcss-discard-overridden "^6.0.0" + postcss-merge-longhand "^6.0.0" + postcss-merge-rules "^6.0.1" + postcss-minify-font-values "^6.0.0" + postcss-minify-gradients "^6.0.0" + postcss-minify-params "^6.0.0" + postcss-minify-selectors "^6.0.0" + postcss-normalize-charset "^6.0.0" + postcss-normalize-display-values "^6.0.0" + postcss-normalize-positions "^6.0.0" + postcss-normalize-repeat-style "^6.0.0" + postcss-normalize-string "^6.0.0" + postcss-normalize-timing-functions "^6.0.0" + postcss-normalize-unicode "^6.0.0" + postcss-normalize-url "^6.0.0" + postcss-normalize-whitespace "^6.0.0" + postcss-ordered-values "^6.0.0" + postcss-reduce-initial "^6.0.0" + postcss-reduce-transforms "^6.0.0" + postcss-svgo "^6.0.0" + postcss-unique-selectors "^6.0.0" + +cssnano-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz" + integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== + +cssnano@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz" + integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== + dependencies: + cssnano-preset-default "^6.0.1" + lilconfig "^2.1.0" + +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +date-fns@^2.29.3: + version "2.30.0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz" + integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw== + dependencies: + "@babel/runtime" "^7.21.0" + +dayjs@1.11.7: + version "1.11.7" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== + +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4, debug@4.3.4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +dedent@^1.0.0: + version "1.5.3" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2, deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +denque@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz" + integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +depd@~2.0.0, depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + +dezalgo@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== + dependencies: + asap "^2.0.0" + wrappy "1" + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + +dns-packet@^5.2.2: + version "5.6.0" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz" + integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + +dotenv-expand@10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz" + integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== + +dotenv@^16.0.3, dotenv@16.1.4: + version "16.1.4" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz" + integrity sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw== + +dotenv@~10.0.0: + version "10.0.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" + integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ecdsa-sig-formatter@1.0.11: + version "1.0.11" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.7: + version "3.1.9" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.668: + version "1.4.775" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.775.tgz" + integrity sha512-JpOfl1aNAiZ88wFzjPczTLwYIoPIsij8S9/XQH9lqMpiJOf23kxea68B8wje4f68t4rOIq4Bh+vP4I65njiJBw== + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.7.0: + version "5.15.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@~2.3.6: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +envinfo@7.10.0: + version "7.10.0" + resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz" + integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: + version "1.22.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz" + integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.1" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.1" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.0" + safe-array-concat "^1.0.0" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.10" + +es-module-lexer@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz" + integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1, escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^8.1.0, eslint-config-prettier@8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz" + integrity sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw== + +eslint-import-resolver-node@^0.3.7: + version "0.3.8" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.8.tgz" + integrity sha512-tEe+Pok22qIGaK3KoMP+N96GVDS66B/zreoVVmiavLvRUEmGRtvb4B8wO9jwnb8d2lvHtrkhZ7UD73dWBVnf/Q== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" + integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.28.0: + version "2.28.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz" + integrity sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q== + dependencies: + array-includes "^3.1.6" + array.prototype.findlastindex "^1.2.2" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.8.0" + has "^1.0.3" + is-core-module "^2.12.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.6" + object.groupby "^1.0.0" + object.values "^1.1.6" + resolve "^1.22.3" + semver "^6.3.1" + tsconfig-paths "^3.14.2" + +eslint-scope@^5.1.1, eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: + version "3.4.2" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz" + integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw== + +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.0.0, eslint@>=5, eslint@>=7.0.0, eslint@~8.15.0: + version "8.15.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz" + integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== + dependencies: + "@eslint/eslintrc" "^1.2.3" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.6.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^9.0.0, espree@^9.3.2, espree@^9.4.0: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0, events@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +express-rate-limit@5.5.1: + version "5.5.1" + resolved "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz" + integrity sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg== + +express@^4.17.3, express@4.18.2: + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@^1.2.0, extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.12: + version "3.3.1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-glob@^3.2.7, fast-glob@3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-glob@^3.2.9: + version "3.3.1" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-redact@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz" + integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== + +fast-safe-stringify@^2.1.1, fast-safe-stringify@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +figures@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== + dependencies: + common-path-prefix "^3.0.0" + pkg-dir "^7.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.0.0, follow-redirects@^1.15.0: + version "1.15.2" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +fork-ts-checker-webpack-plugin@7.2.13: + version "7.2.13" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz" + integrity sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg== + dependencies: + "@babel/code-frame" "^7.16.7" + chalk "^4.1.2" + chokidar "^3.5.3" + cosmiconfig "^7.0.1" + deepmerge "^4.2.2" + fs-extra "^10.0.0" + memfs "^3.4.1" + minimatch "^3.0.4" + node-abort-controller "^3.0.1" + schema-utils "^3.1.1" + semver "^7.3.5" + tapable "^2.2.1" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +formidable@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz" + integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== + dependencies: + dezalgo "^1.0.4" + hexoid "^1.0.0" + once "^1.4.0" + qs "^6.11.0" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^11.1.0: + version "11.1.1" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz" + integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz" + integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +generate-function@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz" + integrity sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ== + dependencies: + is-property "^1.0.2" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" + integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.1.4, glob@7.1.4: + version "7.1.4" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globals@^13.6.0: + version "13.20.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globby@^12.0.2: + version "12.2.0" + resolved "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz" + integrity sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA== + dependencies: + array-union "^3.0.1" + dir-glob "^3.0.1" + fast-glob "^3.2.7" + ignore "^5.1.9" + merge2 "^1.4.1" + slash "^4.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +handlebars@4.7.7: + version "4.7.7" + resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hexoid@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz" + integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== + +highlight.js@^10.7.1: + version "10.7.3" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.4.0" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz" + integrity sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-status-codes@2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz" + integrity sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng== + +https-proxy-agent@5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.0.4, ignore@^5.1.9, ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +immutable@^4.0.0: + version "4.3.2" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz" + integrity sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA== + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +ipaddr.js@^2.0.1: + version "2.1.0" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz" + integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.12.1, is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-promise@^2.1.0: + version "2.2.2" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-property@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + integrity sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4: + version "5.2.1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz" + integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.6" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterare@1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz" + integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== + +jake@^10.8.5: + version "10.8.7" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz" + integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== + dependencies: + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== + dependencies: + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + create-jest "^29.7.0" + exit "^0.1.2" + import-local "^3.0.2" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.4.1, jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.7.0" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.4.1, jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.7.0" + jest-util "^29.7.0" + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.7.0" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" + +jest-resolve@*, jest-resolve@^29.4.1, jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-pnp-resolver "^1.2.2" + jest-util "^29.7.0" + jest-validate "^29.7.0" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.7.0" + graceful-fs "^4.2.9" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + natural-compare "^1.4.0" + pretty-format "^29.7.0" + semver "^7.5.3" + +jest-util@^29.0.0, jest-util@^29.4.1, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.7.0" + +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== + dependencies: + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.7.0" + string-length "^4.0.1" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.4.3, jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== + dependencies: + "@types/node" "*" + jest-util "^29.7.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.0.0, jest@^29.4.1: + version "29.7.0" + resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== + dependencies: + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.7.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.10.0: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0, js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-eslint-parser@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.3.0.tgz" + integrity sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ== + dependencies: + acorn "^8.5.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + semver "^7.3.5" + +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +JSONStream@1.3.5: + version "1.3.5" + resolved "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +jsonwebtoken@9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz" + integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw== + dependencies: + jws "^3.2.2" + lodash "^4.17.21" + ms "^2.1.1" + semver "^7.3.8" + +jsonwebtoken@9.0.1: + version "9.0.1" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz" + integrity sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg== + dependencies: + jws "^3.2.2" + lodash "^4.17.21" + ms "^2.1.1" + semver "^7.3.8" + +jsonwebtoken@9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz" + integrity sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ== + dependencies: + jws "^3.2.2" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + semver "^7.5.4" + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +jwa@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz" + integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz" + integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== + dependencies: + jwa "^1.4.1" + safe-buffer "^5.0.1" + +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +launch-editor@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz" + integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.7.3" + +less-loader@11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz" + integrity sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug== + dependencies: + klona "^2.0.4" + +"less@^3.5.0 || ^4.0.0", less@4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/less/-/less-4.1.3.tgz" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +libphonenumber-js@^1.10.14: + version "1.10.39" + resolved "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.10.39.tgz" + integrity sha512-iPMM/NbSNIrdwbr94rAOos6krB7snhfzEptmk/DJUtTPs+P9gOhZ1YXVPcRgjpp3jJByclfm/Igvz45spfJK7g== + +license-webpack-plugin@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz" + integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== + dependencies: + webpack-sources "^3.0.0" + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +lines-and-columns@~2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz" + integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lockfile@1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz" + integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz" + integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz" + integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz" + integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== + +lodash.memoize@^4.1.2, lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz" + integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.21, lodash@4, lodash@4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +long@^5.2.1: + version "5.2.3" + resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +lowdb@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz" + integrity sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ== + dependencies: + graceful-fs "^4.1.3" + is-promise "^2.1.0" + lodash "4" + pify "^3.0.0" + steno "^0.4.1" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +lru-cache@^8.0.0: + version "8.0.5" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz" + integrity sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA== + +lru-cache@7.18.3: + version "7.18.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +magic-string@0.30.0: + version "0.30.0" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz" + integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@^1.1.1, make-error@1.x: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.1, memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.6.0.tgz" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@^1.1.2, methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^1.4.1, mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@~2.4.7: + version "2.4.7" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz" + integrity sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.0.4, "minimatch@2 || 3", minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.4, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^2.1.3: + version "2.1.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz" + integrity sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A== + +mkdirp@1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multer@1.4.4-lts.1: + version "1.4.4-lts.1" + resolved "https://registry.npmjs.org/multer/-/multer-1.4.4-lts.1.tgz" + integrity sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg== + dependencies: + append-field "^1.0.0" + busboy "^1.0.0" + concat-stream "^1.5.2" + mkdirp "^0.5.4" + object-assign "^4.1.1" + type-is "^1.6.4" + xtend "^4.0.0" + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mv@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz" + integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + +"mysql2@^2.2.5 || ^3.0.1": + version "3.6.0" + resolved "https://registry.npmjs.org/mysql2/-/mysql2-3.6.0.tgz" + integrity sha512-EWUGAhv6SphezurlfI2Fpt0uJEWLmirrtQR7SkbTHFC+4/mJBrPiSzHESHKAWKG7ALVD6xaG/NBjjd1DGJGQQQ== + dependencies: + denque "^2.1.0" + generate-function "^2.3.1" + iconv-lite "^0.6.3" + long "^5.2.1" + lru-cache "^8.0.0" + named-placeholders "^1.1.3" + seq-queue "^0.0.5" + sqlstring "^2.3.2" + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +named-placeholders@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz" + integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w== + dependencies: + lru-cache "^7.14.1" + +nanoclone@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz" + integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + +needle@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz" + integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ== + dependencies: + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.0, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-abort-controller@^3.0.1: + version "3.1.1" + resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-addon-api@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-fetch@^2.6.1, node-fetch@cjs: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-machine-id@1.1.12: + version "1.1.12" + resolved "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz" + integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +"nx@>= 15 <= 17", nx@16.6.0: + version "16.6.0" + resolved "https://registry.npmjs.org/nx/-/nx-16.6.0.tgz" + integrity sha512-4UaS9nRakpZs45VOossA7hzSQY2dsr035EoPRGOc81yoMFW6Sqn1Rgq4hiLbHZOY8MnWNsLMkgolNMz1jC8YUQ== + dependencies: + "@nrwl/tao" "16.6.0" + "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "3.0.0-rc.46" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^11.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" + minimatch "3.0.5" + node-machine-id "1.1.12" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.5.3" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nx/nx-darwin-arm64" "16.6.0" + "@nx/nx-darwin-x64" "16.6.0" + "@nx/nx-freebsd-x64" "16.6.0" + "@nx/nx-linux-arm-gnueabihf" "16.6.0" + "@nx/nx-linux-arm64-gnu" "16.6.0" + "@nx/nx-linux-arm64-musl" "16.6.0" + "@nx/nx-linux-x64-gnu" "16.6.0" + "@nx/nx-linux-x64-musl" "16.6.0" + "@nx/nx-win32-arm64-msvc" "16.6.0" + "@nx/nx-win32-x64-msvc" "16.6.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.groupby@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz" + integrity sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.21.2" + get-intrinsic "^1.2.1" + +object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-exit-leak-free@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz" + integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.9.1: + version "0.9.3" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +ora@5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-to-regexp@3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" + integrity sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pino-abstract-transport@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz" + integrity sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA== + dependencies: + readable-stream "^4.0.0" + split2 "^4.0.0" + +pino-abstract-transport@v0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz" + integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== + dependencies: + duplexify "^4.1.2" + split2 "^4.0.0" + +pino-std-serializers@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz" + integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== + +pino@7.11.0: + version "7.11.0" + resolved "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz" + integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== + dependencies: + atomic-sleep "^1.0.0" + fast-redact "^3.0.0" + on-exit-leak-free "^0.2.0" + pino-abstract-transport v0.5.0 + pino-std-serializers "^4.0.0" + process-warning "^1.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.1.0" + safe-stable-stringify "^2.1.0" + sonic-boom "^2.2.1" + thread-stream "^0.15.1" + +pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" + +pkginfo@0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz" + integrity sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ== + +pluralize@^8.0.0, pluralize@8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +postcss-calc@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz" + integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== + dependencies: + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + +postcss-colormin@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz" + integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz" + integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz" + integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== + +postcss-discard-duplicates@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz" + integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== + +postcss-discard-empty@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz" + integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== + +postcss-discard-overridden@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz" + integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== + +postcss-import@~14.1.0: + version "14.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-loader@^6.1.1: + version "6.2.1" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-merge-longhand@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz" + integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^6.0.0" + +postcss-merge-rules@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz" + integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^4.0.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz" + integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz" + integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== + dependencies: + colord "^2.9.1" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz" + integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz" + integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-normalize-charset@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz" + integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== + +postcss-normalize-display-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz" + integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz" + integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz" + integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz" + integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz" + integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz" + integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz" + integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz" + integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz" + integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== + dependencies: + cssnano-utils "^4.0.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz" + integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz" + integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: + version "6.0.13" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz" + integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^3.0.2" + +postcss-unique-selectors@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz" + integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +"postcss@^7.0.0 || ^8.0.1", postcss@^8.0.0, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.4.14, postcss@^8.4.21, postcss@^8.4.24: + version "8.4.27" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz" + integrity sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier@2.8.8: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process-warning@^1.0.0, process-warning@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz" + integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +property-expr@^2.0.4: + version "2.0.5" + resolved "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== + +qs@^6.11.0, qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^2.0.1, readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.1.1: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^3.4.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^4.0.0: + version "4.4.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz" + integrity sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + +readable-stream@2.3.7: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +real-require@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz" + integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== + +reflect-metadata@^0.1.12, reflect-metadata@^0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexp.prototype.flags@^1.5.0: + version "1.5.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +request@^2.79.0, request@2.88.2: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + +resolve.exports@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@^1.1.7, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.3, resolve@^1.22.4: + version "1.22.4" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz" + integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== + dependencies: + glob "^6.0.1" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.1.0, rxjs@^7.2.0, rxjs@^7.8.0, rxjs@7.8.1: + version "7.8.1" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.1.1, safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +safe-stable-stringify@^2.1.0: + version "2.4.3" + resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@^12.2.0: + version "12.6.0" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sass@^1.3.0, sass@^1.42.1: + version "1.64.2" + resolved "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz" + integrity sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +schema-utils@^3.1.1: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.0.1: + version "4.2.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + dependencies: + node-forge "^1" + +semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@7.5.3: + version "7.5.3" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz" + integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.4: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@7.5.4: + version "7.5.4" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +seq-queue@^0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz" + integrity sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q== + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.11: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +sonic-boom@^2.2.1: + version "2.8.0" + resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz" + integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== + dependencies: + atomic-sleep "^1.0.0" + +sonic-boom@3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz" + integrity sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g== + dependencies: + atomic-sleep "^1.0.0" + +source-map-js@^1.0.1, source-map-js@^1.0.2, "source-map-js@>=0.6.2 <2.0.0": + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@0.5.19: + version "0.5.19" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3, source-map@0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sqlstring@^2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz" + integrity sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg== + +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz" + integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +steno@^0.4.1: + version "0.4.4" + resolved "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz" + integrity sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w== + dependencies: + graceful-fs "^4.1.3" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +string_decoder@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strong-log-transformer@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + +style-loader@^3.3.0: + version "3.3.3" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" + integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== + +stylehacks@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz" + integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +stylus-loader@^7.1.0: + version "7.1.3" + resolved "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz" + integrity sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw== + dependencies: + fast-glob "^3.2.12" + normalize-path "^3.0.0" + +stylus@^0.59.0, stylus@>=0.52.4: + version "0.59.0" + resolved "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz" + integrity sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg== + dependencies: + "@adobe/css-tools" "^4.0.1" + debug "^4.3.2" + glob "^7.1.6" + sax "~1.2.4" + source-map "^0.7.3" + +superagent@^8.1.2: + version "8.1.2" + resolved "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz" + integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.4" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^2.1.2" + methods "^1.1.2" + mime "2.6.0" + qs "^6.11.0" + semver "^7.3.8" + +supertest@^6.3.4: + version "6.3.4" + resolved "https://registry.npmjs.org/supertest/-/supertest-6.3.4.tgz" + integrity sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw== + dependencies: + methods "^1.1.2" + superagent "^8.1.2" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" + integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.2.1" + csso "^5.0.5" + picocolors "^1.0.0" + +swagger-ui-dist@5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.1.0.tgz" + integrity sha512-c1KmAjuVODxw+vwkNLALQZrgdlBAuBbr2xSPfYrJgseEi7gFKcTvShysPmyuDI4kcUa1+5rFpjWvXdusKY74mg== + +tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +terser-webpack-plugin@^5.3.3, terser-webpack-plugin@^5.3.7: + version "5.3.9" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz" + integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" + +terser@^5.16.8: + version "5.19.2" + resolved "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz" + integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +thread-stream@^0.15.1: + version "0.15.2" + resolved "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz" + integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== + dependencies: + real-require "^0.1.0" + +through@^2.3.4, "through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tmp@~0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-jest@^29.1.0: + version "29.1.1" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" + integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "^7.5.3" + yargs-parser "^21.0.1" + +ts-loader@^9.3.1: + version "9.4.4" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz" + integrity sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + +ts-node@^10.7.0, ts-node@^10.9.1, ts-node@>=9.0.0, ts-node@10.9.1: + version "10.9.1" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths-webpack-plugin@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz" + integrity sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.7.0" + tsconfig-paths "^4.0.0" + +tsconfig-paths@^3.14.2: + version "3.14.2" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsconfig-paths@^4.0.0, tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.2, tslib@2.6.2: + version "2.6.2" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +typanion@^3.8.0: + version "3.13.0" + resolved "https://registry.npmjs.org/typanion/-/typanion-3.13.0.tgz" + integrity sha512-AkZMjMIW8MGeQwBxu1bixzu/2Zk7rH6ILrI/9zBoW0sAiVaWwHjXSnmPBomfY2t7tSG6m5bIE+OYYyyuGnFVHA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@^1.6.4, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typed-assert@^1.0.8: + version "1.0.9" + resolved "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz" + integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typeorm@^0.3.0, typeorm@^0.3.17: + version "0.3.17" + resolved "https://registry.npmjs.org/typeorm/-/typeorm-0.3.17.tgz" + integrity sha512-UDjUEwIQalO9tWw9O2A4GU+sT3oyoUXheHJy4ft+RFdnRdQctdQ34L9SqE2p7LdwzafHx1maxT+bqXON+Qnmig== + dependencies: + "@sqltools/formatter" "^1.2.5" + app-root-path "^3.1.0" + buffer "^6.0.3" + chalk "^4.1.2" + cli-highlight "^2.1.11" + date-fns "^2.29.3" + debug "^4.3.4" + dotenv "^16.0.3" + glob "^8.1.0" + mkdirp "^2.1.3" + reflect-metadata "^0.1.13" + sha.js "^2.4.11" + tslib "^2.5.0" + uuid "^9.0.0" + yargs "^17.6.2" + +typescript@*, "typescript@^3 || ^4 || ^5", typescript@>=2.7, "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.3 <6", typescript@>=4.3.5, typescript@>=4.8.2, typescript@>3.6.0, typescript@~5.1.3: + version "5.1.6" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz" + integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== + +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +uid@2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz" + integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== + dependencies: + "@lukeed/csprng" "^1.0.0" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unix-crypt-td-js@1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz" + integrity sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw== + +unpipe@~1.0.0, unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.13: + version "1.0.16" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.0, uuid@9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-compile-cache@^2.0.3, v8-compile-cache@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +validator@^13.7.0, validator@13.9.0: + version "13.9.0" + resolved "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz" + integrity sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verdaccio-audit@11.0.0-6-next.37: + version "11.0.0-6-next.37" + resolved "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-11.0.0-6-next.37.tgz" + integrity sha512-hzQq90HmKwy327PueS58V720MRDycSCmo7DNgOy+h8dvITG6XAQ6bSsiTgQScjmwImdp3tkl3bqu9kXh33bPxA== + dependencies: + "@verdaccio/config" "6.0.0-6-next.74" + "@verdaccio/core" "6.0.0-6-next.74" + express "4.18.2" + https-proxy-agent "5.0.1" + node-fetch cjs + +verdaccio-htpasswd@11.0.0-6-next.44: + version "11.0.0-6-next.44" + resolved "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-11.0.0-6-next.44.tgz" + integrity sha512-ZKCpZ5KhcHXjAlYkCI6CM6O8KO/Pr/x5C89zqjRR7OMaPyOAu0psIJjvhTycn1efZub4pT6Tlj7rCRlmvIbR0w== + dependencies: + "@verdaccio/core" "6.0.0-6-next.74" + "@verdaccio/file-locking" "11.0.0-6-next.7" + apache-md5 "1.1.8" + bcryptjs "2.4.3" + core-js "3.30.2" + debug "4.3.4" + http-errors "2.0.0" + unix-crypt-td-js "1.1.4" + +verdaccio@^5.0.4: + version "5.26.1" + resolved "https://registry.npmjs.org/verdaccio/-/verdaccio-5.26.1.tgz" + integrity sha512-rpP1O6w3UomhEXQHr0EGMxpTPUsBgkR8VoK2eNS3aFC8xFgaeoeHF/GABd4bSyKMa22JyHjqeEFH46U9plMX+A== + dependencies: + "@verdaccio/config" "6.0.0-6-next.74" + "@verdaccio/core" "6.0.0-6-next.74" + "@verdaccio/local-storage" "10.3.3" + "@verdaccio/logger-7" "6.0.0-6-next.19" + "@verdaccio/middleware" "6.0.0-6-next.53" + "@verdaccio/search" "6.0.0-6-next.2" + "@verdaccio/signature" "6.0.0-6-next.2" + "@verdaccio/streams" "10.2.1" + "@verdaccio/tarball" "11.0.0-6-next.43" + "@verdaccio/ui-theme" "6.0.0-6-next.74" + "@verdaccio/url" "11.0.0-6-next.40" + "@verdaccio/utils" "6.0.0-6-next.42" + async "3.2.4" + clipanion "3.2.1" + compression "1.7.4" + cookies "0.8.0" + cors "2.8.5" + debug "^4.3.4" + envinfo "7.10.0" + express "4.18.2" + express-rate-limit "5.5.1" + fast-safe-stringify "2.1.1" + handlebars "4.7.7" + js-yaml "4.1.0" + JSONStream "1.3.5" + jsonwebtoken "9.0.1" + kleur "4.1.5" + lodash "4.17.21" + lru-cache "7.18.3" + mime "3.0.0" + mkdirp "1.0.4" + mv "2.1.1" + pkginfo "0.4.1" + request "2.88.2" + semver "7.5.4" + validator "13.9.0" + verdaccio-audit "11.0.0-6-next.37" + verdaccio-htpasswd "11.0.0-6-next.44" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.9.3: + version "4.15.1" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" + integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" + +webpack-node-externals@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz" + integrity sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ== + +webpack-sources@^3.0.0, webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-subresource-integrity@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz" + integrity sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== + dependencies: + typed-assert "^1.0.8" + +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.11.0, webpack@^5.12.0, webpack@^5.80.0, webpack@>=5: + version "5.88.2" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz" + integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.7" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.10, which-typed-array@^1.1.11: + version "1.1.11" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz" + integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^8.13.0: + version "8.13.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.1, yargs-parser@^21.1.1, yargs-parser@21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^16.0.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^17.6.2: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + +yup@0.32.11: + version "0.32.11" + resolved "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz" + integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/lodash" "^4.14.175" + lodash "^4.17.21" + lodash-es "^4.17.21" + nanoclone "^0.2.1" + property-expr "^2.0.4" + toposort "^2.0.2"