atls / nestjs Goto Github PK
View Code? Open in Web Editor NEWNestJS Custom Workshop
License: BSD 3-Clause "New" or "Revised" License
NestJS Custom Workshop
License: BSD 3-Clause "New" or "Revised" License
server-scripts падает при запуске
yarn run server-scripts start
Команда успешно выполняется
Обновление зависимостей в модуле typesense-typeorm
Обновить и зафиксировать версии пакета @atls/nestjs-typesense-typeorm
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
implement check & push workflows
Обновление зависимостей в репозитории grpc-playground
После обновления зависимостей (минорных или мажорных версий) следующие шаги должны пройти без ошибок:
Обновление зависимостей в модуле external-renderer
Обновить и зафиксировать версии пакета @atls/nestjs-external-renderer
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
возникла необходимость в покрытии кода тестами
При использовании nestjs/[email protected] и @nestjs/[email protected] интерцептор выбрасывает ошибку
identity-service_1 | TypeError: Cannot convert undefined or null to object
identity-service_1 | at Function.values (<anonymous>)
identity-service_1 | at mapErrors (/workspace/node_modules/@atlantis-lab/nestjs-map-errors-interceptor/dist/MapValidationErrorsInterceptor.js:25:80)
identity-service_1 | at Array.reduce (<anonymous>)
identity-service_1 | at CatchSubscriber.selector (/workspace/node_modules/@atlantis-lab/nestjs-map-errors-interceptor/dist/MapValidationErrorsInterceptor.js:32:51)
identity-service_1 | at CatchSubscriber.error (/workspace/node_modules/rxjs/src/internal/operators/catchError.ts:130:23)
identity-service_1 | at MergeMapSubscriber.SimpleOuterSubscriber.notifyError (/workspace/node_modules/rxjs/src/internal/innerSubscribe.ts:70:22)
identity-service_1 | at SimpleInnerSubscriber._error (/workspace/node_modules/rxjs/src/internal/innerSubscribe.ts:34:17)
identity-service_1 | at SimpleInnerSubscriber.Subscriber.error (/workspace/node_modules/rxjs/src/internal/Subscriber.ts:113:12)
identity-service_1 | at SwitchMapSubscriber.Subscriber._error (/workspace/node_modules/rxjs/src/internal/Subscriber.ts:143:22)
identity-service_1 | at SwitchMapSubscriber.Subscriber.error (/workspace/node_modules/rxjs/src/internal/Subscriber.ts:113:12)
identity-service_1 | at /workspace/node_modules/rxjs/src/internal/util/subscribeToPromise.ts:12:30
Появилось необходимость в тестировании из-за частого обновления зависимостей
Обновление зависимостей в модуле kratos
Обновить и зафиксировать версии пакета @atls/nestjs-kratos
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
Обновление зависимостей в модуле keto
Обновить и зафиксировать версии пакета @atls/nestjs-keto
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
Обновление зависимостей в модуле typesense
Обновить и зафиксировать версии пакета @atls/nestjs-typesense
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
Обновление зависимостей в модуле logger
Обновить и зафиксировать версии пакета @atls/nestjs-logger
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
Обновление зависимостей в репозитории grpc-errors
После обновления зависимостей (минорных или мажорных версий) следующие шаги должны пройти без ошибок:
Необходимо добавить адаптер и гард для использования keto-grpc-client
@ory/keto-grpc-client
Тесты проходят, пакет предоставляет гард, есть кастомизация УРЛа запросов
No response
No response
Обновление зависимостей в модуле dataloader
Обновить и зафиксировать версии пакета @atls/nestjs-dataloader
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
Шаги для воспроизведения бага:
Моудль инициализируется без ошибок
[Nest] 9690 - 10/17/2021, 2:36:58 PM LOG [InstanceLoader] TypeOrmModule dependencies initialized +53ms
[Nest] 9690 - 10/17/2021, 2:36:58 PM ERROR [ExceptionHandler] Nest can't resolve dependencies of the TypeOrmListenersBuilder (TypesenseMetadataRegistry, EntityToDocumentMapper, ?). Please make sure that the argument Connection at index [2] is available in the TypesenseTypeOrmModule context.
Potential solutions:
- If Connection is a provider, is it part of the current TypesenseTypeOrmModule?
- If Connection is exported from a separate @Module, is that module imported within TypesenseTypeOrmModule?
@Module({
imports: [ /* the Module containing Connection */ ]
})
Error: Nest can't resolve dependencies of the TypeOrmListenersBuilder (TypesenseMetadataRegistry, EntityToDocumentMapper, ?). Please make sure that the argument Connection at index [2] is available in the TypesenseTypeOrmModule context.
Potential solutions:
- If Connection is a provider, is it part of the current TypesenseTypeOrmModule?
- If Connection is exported from a separate @Module, is that module imported within TypesenseTypeOrmModule?
@Module({
imports: [ /* the Module containing Connection */ ]
})
at Injector.lookupComponentInParentModules (/home/dozer/workspace/typesense-demo/.yarn/unplugged/@nestjs-core-virtual-d5967d0c39/node_modules/@nestjs/core/injector/injector.js:201:19)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
at Injector.resolveComponentInstance (/home/dozer/workspace/typesense-demo/.yarn/unplugged/@nestjs-core-virtual-d5967d0c39/node_modules/@nestjs/core/injector/injector.js:156:33)
at resolveParam (/home/dozer/workspace/typesense-demo/.yarn/unplugged/@nestjs-core-virtual-d5967d0c39/node_modules/@nestjs/core/injector/injector.js:108:38)
at async Promise.all (index 2)
at Injector.resolveConstructorParams (/home/dozer/workspace/typesense-demo/.yarn/unplugged/@nestjs-core-virtual-d5967d0c39/node_modules/@nestjs/core/injector/injector.js:123:27)
at Injector.loadInstance (/home/dozer/workspace/typesense-demo/.yarn/unplugged/@nestjs-core-virtual-d5967d0c39/node_modules/@nestjs/core/injector/injector.js:52:9)
at Injector.loadProvider (/home/dozer/workspace/typesense-demo/.yarn/unplugged/@nestjs-core-virtual-d5967d0c39/node_modules/@nestjs/core/injector/injector.js:74:9)
at async Promise.all (index 4)
at InstanceLoader.createInstancesOfProviders (/home/dozer/workspace/typesense-demo/.yarn/unplugged/@nestjs-core-virtual-d5967d0c39/node_modules/@nestjs/core/injector/instance-loader.js:44:9)
server-scripts падает при запуске
yarn run actl server-scripts start
Команда успешно выполняется
логи
yarn run v1.22.10
$ yarn workspace @identity/service dev
$ actl server-scripts start
[@octokit/rest] `const Octokit = require("@octokit/rest")` is deprecated. Use `const { Octokit } = require("@octokit/rest")` instead
[@octokit/rest] `const Octokit = require("@octokit/rest")` is deprecated. Use `const { Octokit } = require("@octokit/rest")` instead
[@octokit/rest] `const Octokit = require("@octokit/rest")` is deprecated. Use `const { Octokit } = require("@octokit/rest")` instead
Unknown Syntax Error: Extraneous positional argument ("server-scripts").
$ /usr/local/bin/node /Users/tuogeniy/Documents/atlantis-lab/challenge/backend/identity/service/node_modules/.bin/actl
Появилось необходимость в тестировании из-за частого обновления зависимостей
Обновление зависимостей в репозитории grpc-http-proxy
После обновления зависимостей (минорных или мажорных версий) следующие шаги должны пройти без ошибок:
Обновление зависимостей в репозитории grpc-reflection
Необходимо обновить все зависимости пакета. @nestjs/... выше мажорной 8 версии не ставить.
yarn check
без ошибокyarn test unit
без ошибокbuild или
prepack`: опционально по наличию командыyarn
логи пофикшены предупреждения зависимостейИнтерактивный апгрейд через yarn
:
Обновление зависимостей в модуле signed-url
Обновить и зафиксировать версии пакета @atlantis-lab/nestjs-signed-url
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
.yarn/__virtual__/grpc-reflection-js-virtual-bc1509ab8f/0/cache/grpc-reflection-js-npm-0.1.2-a7cf71e831-cff6360336.zip/node_modules/grpc-reflection-js/build/src/reflection_grpc_pb.d.ts:18:126
Type error: Namespace '"/workspaces/nestjs/.yarn/__virtual__/grpc-reflection-js-virtual-bc1509ab8f/0/cache/grpc-reflection-js-npm-0.1.2-a7cf71e831-cff6360336.zip/node_modules/grpc-reflection-js/build/src/reflection_pb"' has no exported member 'ServerReflectionResponse'.
16 | declare function deserialize_grpc_reflection_v1alpha_ServerReflectionRequest(buffer_arg: any): import("./reflection_pb.js").ServerReflectionRequest;
17 | declare function serialize_grpc_reflection_v1alpha_ServerReflectionResponse(arg: any): Buffer;
> 18 | declare function deserialize_grpc_reflection_v1alpha_ServerReflectionResponse(buffer_arg: any): import("./reflection_pb.js").ServerReflectionResponse;
| ^
19 | export {};
20 |
grpc-reflection-js
начиная с 0.1.2(latest)Обновление зависимостей в репозитории grpc-identity
Необходимо обновить все зависимости пакета. @nestjs/...
выше мажорной 8 версии не ставить.
yarn check
без ошибокyarn test unit
без ошибокbuild
или prepack
: опционально по наличию командыyarn
логи пофикшены предупреждения зависимостейИнтерактивный апгрейд через yarn
:
Шаги для воспроизведения бага:
yarn run v1.22.5
$ mctl test
ts-jest[versions] (WARN) Version 24.9.0 of jest installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=26.0.0 <27.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
ts-jest[config] (WARN) The option `tsConfig` is deprecated and will be removed in ts-jest 27, use `tsconfig` instead
ts-jest[versions] (WARN) Version 24.9.0 of jest installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=26.0.0 <27.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
ts-jest[config] (WARN) The option `tsConfig` is deprecated and will be removed in ts-jest 27, use `tsconfig` instead
ts-jest[versions] (WARN) Version 24.9.0 of jest installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=26.0.0 <27.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
ts-jest[config] (WARN) The option `tsConfig` is deprecated and will be removed in ts-jest 27, use `tsconfig` instead
ts-jest[versions] (WARN) Version 24.9.0 of jest installed has not been tested with ts-jest. If you're experiencing issues, consider using a supported version (>=26.0.0 <27.0.0-0). Please do not report issues in ts-jest if you are using unsupported versions.
ts-jest[config] (WARN) The option `tsConfig` is deprecated and will be removed in ts-jest 27, use `tsconfig` instead
FAIL packages/nestjs-tinkoff/__tests__/request-verifier-guard.test.ts
● Test suite failed to run
TypeError: Class constructor Tinkoff cannot be invoked without 'new'
8 | export class TinkoffService extends Tinkoff {
9 | public constructor(@Inject(TINKOFF_API_OPTIONS) options: TinkoffPublicOptions) {
> 10 | super(options)
| ^
11 | }
12 | }
13 |
at new TinkoffService (packages/nestjs-tinkoff/src/services/tinkoff.service.ts:10:5)
at Object.<anonymous> (packages/nestjs-tinkoff/__tests__/request-verifier-guard.test.ts:3:21)
PASS packages/nestjs-map-errors-interceptor/__tests__/interceptor.test.ts
PASS packages/server-scripts/__tests__/create-webpack-config.test.ts
PASS packages/nestjs-signed-url/__tests__/generate-url.test.ts
Test Suites: 1 failed, 3 passed, 4 total
Tests: 6 passed, 6 total
Snapshots: 0 total
Time: 1.567s, estimated 2s
Ran all test suites.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Обновление зависимостей в модуле gateway
Обновить и зафиксировать версии пакета @atls/nestjs-gateway
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
@atlantis-lab/[email protected]
Запуск тестов пакета заканчивается ошибкой.
Шаги для воспроизведения бага:
FAIL packages/nestjs-tinkoff/__tests__/request-verifier-guard.test.ts
● Test suite failed to run
packages/nestjs-tinkoff/__tests__/request-verifier-guard.test.ts:3:30 - error TS2554: Expected 1 arguments, but got 0.
3 const requestVerifierGuard = new RequestVerifierGuard()
~~~~~~~~~~~~~~~~~~~~~~~~~~
packages/nestjs-tinkoff/src/guards/request-verifier.guard.ts:7:22
7 public constructor(private readonly tinkoff: TinkoffService) {}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
An argument for 'tinkoff' was not provided.
Успешное прохождение тестов.
необходимость в покрытии тестами
Шаги для воспроизведения бага:
2. Выполнить команду yarn test
3. Видим ошибку "Option 'whitelist' is not supported. Did you mean 'allowlist" - так как в webpack-node-externals whitelist и blacklist были обновлени на allowlist и blocklist
Тесты Server Scripts Webpack прошли успешно
Если использовать rabbitmq транспорт приложение падает при запуске
@Module({
imports: [
BusModule.forRoot({
transport: Transport.RabbitMQ,
configuration: {
queueName: process.env.QUEUE_NAME,
connectionString: process.env.BUS_URL,
},
}),
],
providers: [],
controllers: [],
})
export class ServiceModule {}
Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.
Starting the development server...
[Nest] 7344 - 03/30/2021, 5:20:38 PM [NestFactory] Starting Nest application...
[Nest] 7344 - 03/30/2021, 5:20:38 PM [InstanceLoader] BusModule dependencies initialized +108ms
[Nest] 7344 - 03/30/2021, 5:20:38 PM [InstanceLoader] LoggerModule dependencies initialized +1ms
[Nest] 7344 - 03/30/2021, 5:20:38 PM [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 7344 - 03/30/2021, 5:20:38 PM [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 7344 - 03/30/2021, 5:20:38 PM [ExceptionHandler] Nest can't resolve dependencies of the BusRabbitMQModule (Symbol(@atlantis-lab/nestjs-bus/application-container), ?, Logger, ApplicationBootstrap, ExplorerService). Please make sure that the argument Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) at index [1] is available in the BusRabbitMQModule context.
Potential solutions:
- If Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) is a provider, is it part of the current BusRabbitMQModule?
- If Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) is exported from a separate @Module, is that module imported within BusRabbitMQModule?
@Module({
imports: [ /* the Module containing Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) */ ]
})
+2ms
Error: Nest can't resolve dependencies of the BusRabbitMQModule (Symbol(@atlantis-lab/nestjs-bus/application-container), ?, Logger, ApplicationBootstrap, ExplorerService). Please make sure that the argument Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) at index [1] is available in the BusRabbitMQModule context.
Potential solutions:
- If Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) is a provider, is it part of the current BusRabbitMQModule?
- If Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) is exported from a separate @Module, is that module imported within BusRabbitMQModule?
@Module({
imports: [ /* the Module containing Symbol(@atlantis-lab/nestjs-bus/bus-rabbitmq-configuration) */ ]
})
at Injector.lookupComponentInParentModules (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/injector.js:188:19)
at Injector.resolveComponentInstance (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/injector.js:144:33)
at resolveParam (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/injector.js:98:38)
at async Promise.all (index 1)
at Injector.resolveConstructorParams (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/injector.js:113:27)
at Injector.loadInstance (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/injector.js:46:9)
at Injector.loadProvider (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/injector.js:68:9)
at async Promise.all (index 0)
at InstanceLoader.createInstancesOfProviders (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/instance-loader.js:43:9)
at /Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/instance-loader.js:28:13
at async Promise.all (index 3)
at InstanceLoader.createInstances (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/instance-loader.js:27:9)
at InstanceLoader.createInstancesOfDependencies (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/injector/instance-loader.js:17:9)
at /Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/nest-factory.js:90:17
at Function.asyncRun (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/errors/exceptions-zone.js:18:13)
at NestFactoryStatic.initialize (/Users/tuogeniy/Documents/atlantis-lab/challenge/node_modules/@nestjs/core/nest-factory.js:88:13)
```
Обновление зависимостей в модуле typeorm-seeding
Обновить и зафиксировать версии пакета @atls/nestjs-typeorm-seeding
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
Покрытие тестами и исправление билда
Cписок библиотек которые можно и нужно покрыть тестами:
необходимость покрыть код тестами
nestjs-map-errors-interceptor
необходимость в покрытии кода тестами
Обновление зависимостей в модуле hydra
Обновить и зафиксировать версии пакета @atls/nestjs-hydra
до максимально возможных таким образом, чтобы ничего не ломалось, а именно проходили команды критерия готовности.
Зависимости typescript
, typeorm
обновлять не нужно.
Если ломаются тесты и это связанно с переходом NestJs
с версии 8
на 10
, и проблема не на поверхности (не фиксится заменой в тесте, например, метода .asyncListen
на .listen
), то пакеты, начинающиеся с @nestjs/...
обновлять не выше мажорной 8
.
Проходят без ошибок команды:
yarn install
yarn check
yarn test unit
Если в пакете есть скрипты build
и prepack
, то они тоже должны проходить без ошибок.
https://classic.yarnpkg.com/lang/en/docs/cli/workspace/
yarn workspace <workspace> add <[email protected]> <keys>
Можете посмотреть закрытые PR и issue по теме обновления зависимостей
Шаги для воспроизведения бага:
После обновления пакета 9f834cf проект перестал проходить проверку типов
yarn run typecheck
Проект проходит проверку без ошибок
Необходимо изменить отображение объекта ошибки, возращенного методом MapErrorsInterceptor#intercept в случаях перехвата ошибок валидации, вызванных декоратором поля @ValidateNetsed({ each: true })
.
MapToErrorsInterceptor отвечает за отображение ошибок, возникающих при запуске хендлеров контроллера, в частности, ошибок валидации запросов клиента. Для этого MapToErrorsInterceptor перехватывает ошибки класса ValidationError из пакета class-validator
и отображает в ожидаемый клиентом формат.
Поле запроса клиента может является массивом объектов, каждый из которых необходимо свалириовать. Текущая реализация метода intercept в этом случае вернет объект, который вызывает ошибки сериализации.
Для больших подробностей расмотрим следующий пример:
import { IsString, validateOrReject } from 'class-vaidator'
import { from } from 'rxjs'
class NestedBar {
@IsString()
bar: any
}
class Foo {
@ValidateNested({ each: true })
nestedBars: Array<NestedBar>
}
const nestedBar1 = new NestedBar()
nestedBar1.bar = 1
const nestedBar2 = new NestedBar()
nestedBar2.bar = 'string'
const nestedBars = [nestedBar1, nestedBar2]
const foo = new Foo()
foo.nestedBars = nestedBars
const interceptor = new MapToErrorsInterceptor()
const handler = {
handle = () => from(validateOrReject(foo))
}
// print ValidatioError to be intercepted by MapToErrorsInterceptor
interceptor.intercept({}, handler).pipe(console.log)
/*
[
{
property: "nestedBar",
target: {
nestedBar: [
{ bar: 1 },
{ bar: "str" },
{ bar: null }
]
},
value: [
{ bar: 1 },
{ bar: "str" },
{ bar: null }
],
children: [
{
property: "0",
target: [
{ bar: 1 },
{ bar: "str" },
{ bar: null }
],
value: { bar: 1 }
children: [
{
property: "bar",
target: { bar: 1 },
value: 1
children: [],
constraints: {
isString: "each value in bar must be a string"
},
}
],
},
{
property: "2",
target: [
{ bar: 1 },
{ bar: "str" },
{ bar: null }
],
value: { bar: null },
children: [
{
property: "bar",
target: { bar: null },
value: null,
children: [],
constraints: {
isString: "each value in bar must be a string"
},
}
],
}
],
}
]
*/
Поля выходного объекта require('class-validator').validate
, которые содержат ошибки валидации для невалидых объектов входного массива, будут отображены в объекты с динамическим ключом - индексом проверяемого элемента в массиве. Такая форма несериализуема для передачи протоколами со статической типизацией полей. Необходимо добавить поддержку отображения ValidationError для таких случаев.
Пример выходного объекта для отправки на клиент:
{
errors: {
nestedBar: [
{ bar: 'each value in bar must be a string' },
{},
{ bar: 'each value in bar must be a string' }
]
}
}
Пример текущей реализации выходного объекта для отправки на клиент:
{
errors: {
nestedBar: {
'0': { bar: 'each value in bar must be a string' },
'2': { bar: 'each value in bar must be a string' }
}
}
}
возникла необходимость в покрытии кода тестами
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.