@ask-ell/back-end 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/package.json +2 -2
  3. package/src/http/index.d.ts +2 -0
  4. package/src/http/index.d.ts.map +1 -0
  5. package/src/http/index.js +4 -0
  6. package/src/http/types.d.ts +5 -0
  7. package/src/http/types.d.ts.map +1 -0
  8. package/src/http/types.js +2 -0
  9. package/src/{index.ts → index.d.ts} +1 -0
  10. package/src/index.d.ts.map +1 -0
  11. package/src/index.js +10 -0
  12. package/src/keyv.store.adapter.factory.d.ts +11 -0
  13. package/src/keyv.store.adapter.factory.d.ts.map +1 -0
  14. package/src/keyv.store.adapter.factory.js +44 -0
  15. package/src/nest/add-ons/add-on.interface.d.ts +5 -0
  16. package/src/nest/add-ons/add-on.interface.d.ts.map +1 -0
  17. package/src/nest/add-ons/add-on.interface.js +2 -0
  18. package/src/nest/add-ons/add-on.wrapper.d.ts +11 -0
  19. package/src/nest/add-ons/add-on.wrapper.d.ts.map +1 -0
  20. package/src/nest/add-ons/add-on.wrapper.js +29 -0
  21. package/src/nest/add-ons/implementations/security/security.add-on.d.ts +6 -0
  22. package/src/nest/add-ons/implementations/security/security.add-on.d.ts.map +1 -0
  23. package/src/nest/add-ons/implementations/security/security.add-on.js +16 -0
  24. package/src/nest/add-ons/implementations/sentry/sentry.add-on.d.ts +8 -0
  25. package/src/nest/add-ons/implementations/sentry/sentry.add-on.d.ts.map +1 -0
  26. package/src/nest/add-ons/implementations/sentry/{sentry.add-on.interface.ts → sentry.add-on.interface.d.ts} +3 -5
  27. package/src/nest/add-ons/implementations/sentry/sentry.add-on.interface.d.ts.map +1 -0
  28. package/src/nest/add-ons/implementations/sentry/sentry.add-on.interface.js +2 -0
  29. package/src/nest/add-ons/implementations/sentry/sentry.add-on.js +19 -0
  30. package/src/nest/add-ons/implementations/sentry/sentry.add-on.state.interface.d.ts +6 -0
  31. package/src/nest/add-ons/implementations/sentry/sentry.add-on.state.interface.d.ts.map +1 -0
  32. package/src/nest/add-ons/implementations/sentry/sentry.add-on.state.interface.js +2 -0
  33. package/src/nest/add-ons/implementations/swagger/swagger.add-on.d.ts +10 -0
  34. package/src/nest/add-ons/implementations/swagger/swagger.add-on.d.ts.map +1 -0
  35. package/src/nest/add-ons/implementations/swagger/{swagger.add-on.interface.ts → swagger.add-on.interface.d.ts} +3 -5
  36. package/src/nest/add-ons/implementations/swagger/swagger.add-on.interface.d.ts.map +1 -0
  37. package/src/nest/add-ons/implementations/swagger/swagger.add-on.interface.js +2 -0
  38. package/src/nest/add-ons/implementations/swagger/swagger.add-on.js +32 -0
  39. package/src/nest/add-ons/implementations/swagger/swagger.add-on.state.interface.d.ts +7 -0
  40. package/src/nest/add-ons/implementations/swagger/swagger.add-on.state.interface.d.ts.map +1 -0
  41. package/src/nest/add-ons/implementations/swagger/swagger.add-on.state.interface.js +2 -0
  42. package/src/nest/add-ons/implementations/swagger/{types.ts → types.d.ts} +1 -0
  43. package/src/nest/add-ons/implementations/swagger/types.d.ts.map +1 -0
  44. package/src/nest/add-ons/implementations/swagger/types.js +2 -0
  45. package/src/nest/add-ons/{index.ts → index.d.ts} +1 -0
  46. package/src/nest/add-ons/index.d.ts.map +1 -0
  47. package/src/nest/add-ons/index.js +9 -0
  48. package/src/nest/add-ons/{types.ts → types.d.ts} +3 -3
  49. package/src/nest/add-ons/types.d.ts.map +1 -0
  50. package/src/nest/add-ons/types.js +2 -0
  51. package/src/nest/application.base.d.ts +5 -0
  52. package/src/nest/application.base.d.ts.map +1 -0
  53. package/src/nest/application.base.js +34 -0
  54. package/src/nest/application.factory.d.ts +9 -0
  55. package/src/nest/application.factory.d.ts.map +1 -0
  56. package/src/nest/application.factory.js +15 -0
  57. package/src/nest/filters/http.exception.filter.d.ts +5 -0
  58. package/src/nest/filters/http.exception.filter.d.ts.map +1 -0
  59. package/src/nest/filters/http.exception.filter.js +32 -0
  60. package/src/nest/filters/{index.ts → index.d.ts} +1 -0
  61. package/src/nest/filters/index.d.ts.map +1 -0
  62. package/src/nest/filters/index.js +4 -0
  63. package/src/nest/{index.ts → index.d.ts} +1 -0
  64. package/src/nest/index.d.ts.map +1 -0
  65. package/src/nest/index.js +9 -0
  66. package/src/nest/interceptors/error.interceptor.d.ts +11 -0
  67. package/src/nest/interceptors/error.interceptor.d.ts.map +1 -0
  68. package/src/nest/interceptors/error.interceptor.js +17 -0
  69. package/src/nest/interceptors/{index.ts → index.d.ts} +1 -0
  70. package/src/nest/interceptors/index.d.ts.map +1 -0
  71. package/src/nest/interceptors/index.js +5 -0
  72. package/src/nest/interceptors/response.format.interceptor.d.ts +7 -0
  73. package/src/nest/interceptors/response.format.interceptor.d.ts.map +1 -0
  74. package/src/nest/interceptors/response.format.interceptor.js +30 -0
  75. package/src/nest/modules/health/health.module.d.ts +5 -0
  76. package/src/nest/modules/health/health.module.d.ts.map +1 -0
  77. package/src/nest/modules/health/health.module.js +32 -0
  78. package/src/nest/modules/health/index.d.ts +2 -0
  79. package/src/nest/modules/health/index.d.ts.map +1 -0
  80. package/src/nest/modules/health/index.js +4 -0
  81. package/src/nest/modules/health/middlewares/{index.ts → index.d.ts} +1 -0
  82. package/src/nest/modules/health/middlewares/index.d.ts.map +1 -0
  83. package/src/nest/modules/health/middlewares/index.js +4 -0
  84. package/src/nest/modules/health/middlewares/ping.middleware.d.ts +6 -0
  85. package/src/nest/modules/health/middlewares/ping.middleware.d.ts.map +1 -0
  86. package/src/nest/modules/health/middlewares/ping.middleware.js +26 -0
  87. package/src/nest/modules/{index.ts → index.d.ts} +1 -0
  88. package/src/nest/modules/index.d.ts.map +1 -0
  89. package/src/nest/modules/index.js +5 -0
  90. package/src/nest/modules/requirement/{index.ts → index.d.ts} +1 -0
  91. package/src/nest/modules/requirement/index.d.ts.map +1 -0
  92. package/src/nest/modules/requirement/index.js +4 -0
  93. package/src/nest/modules/requirement/requirement.module.d.ts +3 -0
  94. package/src/nest/modules/requirement/requirement.module.d.ts.map +1 -0
  95. package/src/nest/modules/requirement/requirement.module.js +72 -0
  96. package/src/scripts/{index.ts → index.d.ts} +1 -0
  97. package/src/scripts/index.d.ts.map +1 -0
  98. package/src/scripts/index.js +5 -0
  99. package/src/scripts/move-keyv-data.program.d.ts +6 -0
  100. package/src/scripts/move-keyv-data.program.d.ts.map +1 -0
  101. package/src/scripts/move-keyv-data.program.js +65 -0
  102. package/src/scripts/update-dependencies-versions.program.d.ts +32 -0
  103. package/src/scripts/update-dependencies-versions.program.d.ts.map +1 -0
  104. package/src/scripts/update-dependencies-versions.program.js +112 -0
  105. package/src/secrets/docker.secret.getter.d.ts +3 -0
  106. package/src/secrets/docker.secret.getter.d.ts.map +1 -0
  107. package/src/secrets/docker.secret.getter.js +6 -0
  108. package/src/secrets/file.secret.getter.d.ts +5 -0
  109. package/src/secrets/file.secret.getter.d.ts.map +1 -0
  110. package/src/secrets/file.secret.getter.js +20 -0
  111. package/src/secrets/{index.ts → index.d.ts} +1 -0
  112. package/src/secrets/index.d.ts.map +1 -0
  113. package/src/secrets/index.js +5 -0
  114. package/src/secrets/local.secret.getter.d.ts +3 -0
  115. package/src/secrets/local.secret.getter.d.ts.map +1 -0
  116. package/src/secrets/local.secret.getter.js +6 -0
  117. package/src/secrets/{types.ts → types.d.ts} +1 -0
  118. package/src/secrets/types.d.ts.map +1 -0
  119. package/src/secrets/types.js +2 -0
  120. package/src/tmp.d.ts +4 -0
  121. package/src/tmp.d.ts.map +1 -0
  122. package/src/tmp.js +16 -0
  123. package/.spec.swcrc +0 -22
  124. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  125. package/eslint.config.mjs +0 -22
  126. package/jest.config.ts +0 -20
  127. package/project.json +0 -26
  128. package/src/http/index.ts +0 -1
  129. package/src/http/types.ts +0 -4
  130. package/src/keyv.store.adapter.factory.ts +0 -43
  131. package/src/nest/add-ons/add-on.interface.ts +0 -5
  132. package/src/nest/add-ons/add-on.wrapper.ts +0 -31
  133. package/src/nest/add-ons/implementations/security/security.add-on.ts +0 -17
  134. package/src/nest/add-ons/implementations/sentry/sentry.add-on.state.interface.ts +0 -5
  135. package/src/nest/add-ons/implementations/sentry/sentry.add-on.ts +0 -24
  136. package/src/nest/add-ons/implementations/swagger/swagger.add-on.state.interface.ts +0 -7
  137. package/src/nest/add-ons/implementations/swagger/swagger.add-on.ts +0 -59
  138. package/src/nest/application.base.ts +0 -18
  139. package/src/nest/application.factory.ts +0 -23
  140. package/src/nest/filters/http.exception.filter.ts +0 -23
  141. package/src/nest/interceptors/error.interceptor.ts +0 -25
  142. package/src/nest/interceptors/response.format.interceptor.ts +0 -29
  143. package/src/nest/modules/health/health.module.ts +0 -20
  144. package/src/nest/modules/health/index.ts +0 -1
  145. package/src/nest/modules/health/middlewares/ping.middleware.ts +0 -9
  146. package/src/nest/modules/requirement/requirement.module.ts +0 -56
  147. package/src/scripts/move-keyv-data.program.ts +0 -88
  148. package/src/scripts/update-dependencies-versions.program.ts +0 -201
  149. package/src/secrets/docker.secret.getter.ts +0 -9
  150. package/src/secrets/file.secret.getter.ts +0 -27
  151. package/src/secrets/local.secret.getter.ts +0 -9
  152. package/src/tmp.ts +0 -15
  153. package/tsconfig.json +0 -16
  154. package/tsconfig.lib.json +0 -18
  155. package/tsconfig.spec.json +0 -23
@@ -1,201 +0,0 @@
1
- import {
2
- MaybeUndefined,
3
- StringDictionnary,
4
- UnknownEnvironmentVariableError,
5
- } from '@ask-ell/core';
6
- import { NestLogger } from '@ask-ell/nest';
7
- import { ProgramExecutionOptions, Program } from '@ask-ell/node';
8
- import { spawnSync } from 'node:child_process';
9
- import { writeFileSync } from 'node:fs';
10
- import { mkdir } from 'node:fs/promises';
11
- import { join } from 'node:path';
12
-
13
- const PROJECT_ROOT_PATH: MaybeUndefined<string> = process.env['PWD'];
14
-
15
- function makeSureThatProjectRootPathIsDefined(
16
- projectRootPath: MaybeUndefined<string>
17
- ): asserts projectRootPath is string {
18
- if (!projectRootPath) {
19
- throw new UnknownEnvironmentVariableError('PWD');
20
- }
21
- }
22
-
23
- makeSureThatProjectRootPathIsDefined(PROJECT_ROOT_PATH);
24
-
25
- const NX_GRAPH_FILE_PATH: string = join(PROJECT_ROOT_PATH, 'tmp/graph.json');
26
-
27
- export type PackageContent = {
28
- version: string;
29
- dependencies: StringDictionnary;
30
- devDependencies: StringDictionnary;
31
- };
32
-
33
- const ROOT_PACKAGE_FILE_PATH: string = join(PROJECT_ROOT_PATH, `package.json`);
34
- const ROOT_PACKAGE_CONTENT: PackageContent = require(ROOT_PACKAGE_FILE_PATH);
35
-
36
- function getOrganisationPackageFile(packageId: string): PackageContent {
37
- makeSureThatProjectRootPathIsDefined(PROJECT_ROOT_PATH);
38
- const packageFilePath = join(
39
- PROJECT_ROOT_PATH,
40
- `packages/${packageId}/package.json`
41
- );
42
- return require(packageFilePath);
43
- }
44
-
45
- export type UpdateDependenciesVersionsProgramParams = {
46
- organisationPackagePrefix: string;
47
- blackListedPackages: string[];
48
- };
49
-
50
- export type WorkspaceDependenciesMapElement = {
51
- id: string;
52
- dependencies: string[];
53
- source: PackageContent;
54
- };
55
-
56
- export type WorkspaceDependenciesMap = {
57
- [id: string]: WorkspaceDependenciesMapElement;
58
- };
59
-
60
- export class UpdateDependenciesVersionsProgram extends Program {
61
- private organisationPackagePrefix: string;
62
- private blackListedPackages: string[];
63
- private workspaceDependenciesMap: WorkspaceDependenciesMap =
64
- this.getWorkspaceDependenciesMap();
65
-
66
- constructor({
67
- organisationPackagePrefix,
68
- blackListedPackages,
69
- }: UpdateDependenciesVersionsProgramParams) {
70
- super({
71
- logger: NestLogger.fromClass(UpdateDependenciesVersionsProgram),
72
- arguments: [
73
- {
74
- name: 'targetedPackage',
75
- description: 'Target package',
76
- },
77
- ],
78
- });
79
- this.organisationPackagePrefix = organisationPackagePrefix;
80
- this.blackListedPackages = blackListedPackages;
81
- }
82
-
83
- async execute({
84
- logger,
85
- arguments: { targetedPackage },
86
- }: ProgramExecutionOptions): Promise<void> {
87
- const workspaceDependenciesMapElements: WorkspaceDependenciesMapElement[] =
88
- Object.values(this.workspaceDependenciesMap).filter(
89
- ({ id }: WorkspaceDependenciesMapElement): boolean =>
90
- this.isTargetedPackage(targetedPackage)(id)
91
- );
92
-
93
- for (const {
94
- id,
95
- dependencies,
96
- source,
97
- } of workspaceDependenciesMapElements) {
98
- logger.log(`package.json file updating for project "${id}"...`);
99
-
100
- if (!PROJECT_ROOT_PATH) {
101
- throw new UnknownEnvironmentVariableError('PWD');
102
- }
103
- const packagePath: string = join(
104
- PROJECT_ROOT_PATH,
105
- `dist/packages/${id}`
106
- );
107
-
108
- await mkdir(packagePath, { recursive: true });
109
- const packageFilePath: string = join(PROJECT_ROOT_PATH, 'package.json');
110
-
111
- const packageFileContent: PackageContent = { ...source };
112
-
113
- if (dependencies.length && !packageFileContent.dependencies) {
114
- packageFileContent.dependencies = {};
115
- }
116
-
117
- dependencies.forEach((dependency: string): void => {
118
- const versionTag = this.isAOrganisationPackage(dependency)
119
- ? `^${
120
- this.workspaceDependenciesMap[
121
- dependency.replace(this.organisationPackagePrefix, '')
122
- ].source.version
123
- }`
124
- : ROOT_PACKAGE_CONTENT.devDependencies[dependency];
125
- packageFileContent.dependencies[dependency] = versionTag;
126
- });
127
-
128
- writeFileSync(
129
- packageFilePath,
130
- JSON.stringify(packageFileContent, null, 2) + '\n'
131
- );
132
-
133
- console.log(`package.json file updated for project "${id}"`);
134
- }
135
-
136
- console.log('Package files updated.');
137
- }
138
-
139
- getWorkspaceDependenciesMap(): WorkspaceDependenciesMap {
140
- const workspaceDependenciesMap: WorkspaceDependenciesMap = {};
141
-
142
- const nxGraphResult = spawnSync(
143
- 'npx',
144
- ['nx', 'graph', '--file', NX_GRAPH_FILE_PATH],
145
- { stdio: 'inherit' }
146
- );
147
- if (nxGraphResult.status !== 0) {
148
- throw new Error(`"nx graph" failed with status ${nxGraphResult.status}`);
149
- }
150
- const nxGraph = require(NX_GRAPH_FILE_PATH);
151
-
152
- const packageIds = Object.entries(nxGraph.graph.dependencies).map(
153
- ([packageId]) => packageId
154
- );
155
-
156
- for (const packageId of packageIds.filter(this.isNotBlackListed)) {
157
- console.log(`Scanning dependencies for package ${packageId}...`);
158
- const packageFileContent = getOrganisationPackageFile(packageId);
159
- const dependencies = packageFileContent.dependencies
160
- ? Object.entries(packageFileContent.dependencies).map(
161
- ([dependency]) => dependency
162
- )
163
- : [];
164
-
165
- workspaceDependenciesMap[packageId] = {
166
- id: packageId,
167
- dependencies: [],
168
- source: packageFileContent,
169
- };
170
- if (packageFileContent.dependencies) {
171
- for (const dependency of dependencies) {
172
- workspaceDependenciesMap[packageId].dependencies.push(dependency);
173
- }
174
- }
175
- }
176
-
177
- console.log('Dependencies scan done.');
178
-
179
- return workspaceDependenciesMap;
180
- }
181
-
182
- private isTargetedPackage =
183
- (targetPackageId: MaybeUndefined<string>) => (packageId: string) => {
184
- if (targetPackageId) {
185
- return packageId === targetPackageId;
186
- }
187
- return true;
188
- };
189
-
190
- private isAOrganisationPackage(packageName: string): boolean {
191
- return packageName.includes(this.organisationPackagePrefix);
192
- }
193
-
194
- private isBlackListed(packageId: string): boolean {
195
- return this.blackListedPackages.includes(packageId);
196
- }
197
-
198
- private isNotBlackListed(packageId: string): boolean {
199
- return !this.isBlackListed(packageId);
200
- }
201
- }
@@ -1,9 +0,0 @@
1
- import { FileSecretGetter, fileSecretGetter } from './file.secret.getter';
2
-
3
- const DOCKER_SECRETS_DIRECTORY = '/run/secrets';
4
-
5
- export const dockerSecretGetter: FileSecretGetter = fileSecretGetter(
6
- DOCKER_SECRETS_DIRECTORY
7
- )(
8
- 'Application is not running inside Docker container. Docker secrets will be unavailable.'
9
- );
@@ -1,27 +0,0 @@
1
- import { Dirent, existsSync, readdirSync, readFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { ILogger } from '@ask-ell/core';
4
-
5
- import { SecretGetter } from './types';
6
-
7
- export type FileSecretGetter = (logger: ILogger) => SecretGetter;
8
-
9
- export const fileSecretGetter =
10
- (rootDirectoryPath: string) =>
11
- (warningMessage: string): FileSecretGetter =>
12
- (logger: ILogger): SecretGetter =>
13
- (): object => {
14
- const isDirectoryExists: boolean = existsSync(rootDirectoryPath);
15
- if (!isDirectoryExists) {
16
- logger.warn(warningMessage);
17
- return {};
18
- }
19
-
20
- return readdirSync(rootDirectoryPath, { withFileTypes: true })
21
- .filter((entry: Dirent<string>): boolean => entry.isFile())
22
- .reduce((secrets: Record<string, string>, entry): object => {
23
- const filePath: string = join(rootDirectoryPath, entry.name);
24
- secrets[entry.name] = readFileSync(filePath, 'utf-8').trim();
25
- return secrets;
26
- }, {});
27
- };
@@ -1,9 +0,0 @@
1
- import { fileSecretGetter, FileSecretGetter } from './file.secret.getter';
2
-
3
- const LOCAL_SECRETS_DIRECTORY = '.secrets';
4
-
5
- export const localSecretGetter: FileSecretGetter = fileSecretGetter(
6
- LOCAL_SECRETS_DIRECTORY
7
- )(
8
- 'Secrets directory not exists on this project. Local secrets will be unavailable.'
9
- );
package/src/tmp.ts DELETED
@@ -1,15 +0,0 @@
1
- import { ILogger } from '@ask-ell/core';
2
- import { existsSync, mkdirSync } from 'node:fs';
3
- import { join } from 'node:path';
4
-
5
- export const TMP_FOLDER_PATH: string = join(process.cwd(), 'tmp');
6
-
7
- export const createTmpFolder = (logger: ILogger): void => {
8
- const isTmpFolderExists: boolean = existsSync(TMP_FOLDER_PATH);
9
- if (isTmpFolderExists) {
10
- logger.info(`"${TMP_FOLDER_PATH}" folder already exists.`);
11
- return;
12
- }
13
- mkdirSync(TMP_FOLDER_PATH);
14
- logger.info(`"${TMP_FOLDER_PATH}" folder created.`);
15
- };
package/tsconfig.json DELETED
@@ -1,16 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "files": [],
4
- "include": [],
5
- "references": [
6
- {
7
- "path": "./tsconfig.lib.json"
8
- },
9
- {
10
- "path": "./tsconfig.spec.json"
11
- }
12
- ],
13
- "compilerOptions": {
14
- "ignoreDeprecations": "6.0"
15
- }
16
- }
package/tsconfig.lib.json DELETED
@@ -1,18 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "baseUrl": ".",
5
- "rootDir": "src",
6
- "outDir": "dist",
7
- "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo",
8
- "emitDeclarationOnly": false,
9
- "module": "nodenext",
10
- "moduleResolution": "nodenext",
11
- "forceConsistentCasingInFileNames": true,
12
- "types": ["node"],
13
- "ignoreDeprecations": "6.0"
14
- },
15
- "include": ["src/**/*.ts"],
16
- "references": [],
17
- "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"]
18
- }
@@ -1,23 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "./out-tsc/jest",
5
- "types": ["jest", "node"],
6
- "module": "nodenext",
7
- "moduleResolution": "nodenext",
8
- "forceConsistentCasingInFileNames": true,
9
- "ignoreDeprecations": "6.0",
10
- "rootDir": "."
11
- },
12
- "include": [
13
- "jest.config.ts",
14
- "src/**/*.test.ts",
15
- "src/**/*.spec.ts",
16
- "src/**/*.d.ts"
17
- ],
18
- "references": [
19
- {
20
- "path": "./tsconfig.lib.json"
21
- }
22
- ]
23
- }