@ask-ell/back-end 0.0.12 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.spec.swcrc +22 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/eslint.config.mjs +22 -0
- package/jest.config.ts +21 -0
- package/package.json +16 -17
- package/project.json +29 -0
- package/src/add-ons/add-on.interface.ts +5 -0
- package/src/add-ons/add-on.wrapper.ts +36 -0
- package/src/add-ons/implementations/security/security.add-on.ts +18 -0
- package/src/add-ons/implementations/sentry/{sentry.add-on.interface.d.ts → sentry.add-on.interface.ts} +5 -3
- package/src/add-ons/implementations/sentry/sentry.add-on.state.interface.ts +5 -0
- package/src/add-ons/implementations/sentry/sentry.add-on.ts +25 -0
- package/src/add-ons/implementations/swagger/{swagger.add-on.interface.d.ts → swagger.add-on.interface.ts} +4 -3
- package/src/add-ons/implementations/swagger/swagger.add-on.state.interface.ts +6 -0
- package/src/add-ons/implementations/swagger/swagger.add-on.ts +43 -0
- package/src/add-ons/implementations/swagger/types.ts +1 -0
- package/src/add-ons/index.ts +1 -0
- package/src/add-ons/{types.d.ts → types.ts} +2 -2
- package/src/application.base.ts +15 -0
- package/src/{index.d.ts → index.ts} +3 -1
- package/src/keyv.store.adapter.factory.ts +37 -0
- package/src/requirement.module.ts +57 -0
- package/src/scripts/index.ts +2 -0
- package/src/scripts/{move-keyv-data.script.js → move-keyv-data.script.ts} +32 -22
- package/src/scripts/update-dependencies-versions.script.ts +167 -0
- package/src/secrets/docker.secret.getter.ts +8 -0
- package/src/secrets/file.secret.getter.ts +24 -0
- package/src/secrets/index.ts +2 -0
- package/src/secrets/local.secret.getter.ts +8 -0
- package/src/secrets/types.ts +1 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/tmp.ts +16 -0
- package/tsconfig.json +16 -0
- package/tsconfig.lib.json +18 -0
- package/tsconfig.spec.json +23 -0
- package/src/add-ons/add-on.interface.d.ts +0 -5
- package/src/add-ons/add-on.interface.d.ts.map +0 -1
- package/src/add-ons/add-on.interface.js +0 -2
- package/src/add-ons/add-on.wrapper.d.ts +0 -11
- package/src/add-ons/add-on.wrapper.d.ts.map +0 -1
- package/src/add-ons/add-on.wrapper.js +0 -31
- package/src/add-ons/implementations/security/security.add-on.d.ts +0 -6
- package/src/add-ons/implementations/security/security.add-on.d.ts.map +0 -1
- package/src/add-ons/implementations/security/security.add-on.js +0 -17
- package/src/add-ons/implementations/sentry/sentry.add-on.d.ts +0 -8
- package/src/add-ons/implementations/sentry/sentry.add-on.d.ts.map +0 -1
- package/src/add-ons/implementations/sentry/sentry.add-on.interface.d.ts.map +0 -1
- package/src/add-ons/implementations/sentry/sentry.add-on.interface.js +0 -2
- package/src/add-ons/implementations/sentry/sentry.add-on.js +0 -19
- package/src/add-ons/implementations/sentry/sentry.add-on.state.interface.d.ts +0 -6
- package/src/add-ons/implementations/sentry/sentry.add-on.state.interface.d.ts.map +0 -1
- package/src/add-ons/implementations/sentry/sentry.add-on.state.interface.js +0 -2
- package/src/add-ons/implementations/swagger/swagger.add-on.d.ts +0 -9
- package/src/add-ons/implementations/swagger/swagger.add-on.d.ts.map +0 -1
- package/src/add-ons/implementations/swagger/swagger.add-on.interface.d.ts.map +0 -1
- package/src/add-ons/implementations/swagger/swagger.add-on.interface.js +0 -2
- package/src/add-ons/implementations/swagger/swagger.add-on.js +0 -26
- package/src/add-ons/implementations/swagger/swagger.add-on.state.interface.d.ts +0 -6
- package/src/add-ons/implementations/swagger/swagger.add-on.state.interface.d.ts.map +0 -1
- package/src/add-ons/implementations/swagger/swagger.add-on.state.interface.js +0 -2
- package/src/add-ons/implementations/swagger/types.d.ts +0 -2
- package/src/add-ons/implementations/swagger/types.d.ts.map +0 -1
- package/src/add-ons/implementations/swagger/types.js +0 -2
- package/src/add-ons/index.d.ts +0 -2
- package/src/add-ons/index.d.ts.map +0 -1
- package/src/add-ons/index.js +0 -4
- package/src/add-ons/types.d.ts.map +0 -1
- package/src/add-ons/types.js +0 -2
- package/src/application.base.d.ts +0 -5
- package/src/application.base.d.ts.map +0 -1
- package/src/application.base.js +0 -16
- package/src/index.d.ts.map +0 -1
- package/src/index.js +0 -7
- package/src/keyv.store.adapter.factory.d.ts +0 -12
- package/src/keyv.store.adapter.factory.d.ts.map +0 -1
- package/src/keyv.store.adapter.factory.js +0 -44
- package/src/requirement.module.d.ts +0 -3
- package/src/requirement.module.d.ts.map +0 -1
- package/src/requirement.module.js +0 -71
- package/src/scripts/index.d.ts +0 -2
- package/src/scripts/index.d.ts.map +0 -1
- package/src/scripts/index.js +0 -4
- package/src/scripts/move-keyv-data.script.d.ts +0 -6
- package/src/scripts/move-keyv-data.script.d.ts.map +0 -1
- package/src/utils/index.d.ts +0 -2
- package/src/utils/index.d.ts.map +0 -1
- package/src/utils/index.js +0 -4
- package/src/utils/tmp.d.ts +0 -4
- package/src/utils/tmp.d.ts.map +0 -1
- package/src/utils/tmp.js +0 -16
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { MaybeUndefined, StringDictionnary, UnknownEnvironmentVariableError } from "@ask-ell/core";
|
|
2
|
+
import { NestLogger } from "@ask-ell/nest";
|
|
3
|
+
import { ExecuteOptions, Script } from "@ask-ell/node";
|
|
4
|
+
import { spawnSync } from 'node:child_process';
|
|
5
|
+
import { writeFileSync } from "node:fs";
|
|
6
|
+
import { mkdir } from 'node:fs/promises';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
const PROJECT_ROOT_PATH: MaybeUndefined<string> = process.env['PWD'];
|
|
11
|
+
|
|
12
|
+
function makeSureThatProjectRootPathIsDefined(projectRootPath: MaybeUndefined<string>): asserts projectRootPath is string {
|
|
13
|
+
if (!projectRootPath) {
|
|
14
|
+
throw new UnknownEnvironmentVariableError('PWD');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
makeSureThatProjectRootPathIsDefined(PROJECT_ROOT_PATH);
|
|
19
|
+
|
|
20
|
+
const NX_GRAPH_FILE_PATH: string = join(PROJECT_ROOT_PATH, 'tmp/graph.json');
|
|
21
|
+
|
|
22
|
+
type PackageContent = {
|
|
23
|
+
version: string;
|
|
24
|
+
dependencies: StringDictionnary;
|
|
25
|
+
devDependencies: StringDictionnary;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const ROOT_PACKAGE_FILE_PATH: string = join(PROJECT_ROOT_PATH, `package.json`);
|
|
29
|
+
const ROOT_PACKAGE_CONTENT: PackageContent = require(ROOT_PACKAGE_FILE_PATH);
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
function getOrganisationPackageFile(packageId: string): PackageContent {
|
|
33
|
+
makeSureThatProjectRootPathIsDefined(PROJECT_ROOT_PATH);
|
|
34
|
+
const packageFilePath = join(PROJECT_ROOT_PATH, `packages/${packageId}/package.json`);
|
|
35
|
+
return require(packageFilePath);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
type UpdateDependenciesVersionsScriptParams = {
|
|
39
|
+
organisationPackagePrefix: string;
|
|
40
|
+
blackListedPackages: string[];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
type WorkspaceDependenciesMapElement = { id: string; dependencies: string[]; source: PackageContent };
|
|
44
|
+
|
|
45
|
+
type WorkspaceDependenciesMap = {
|
|
46
|
+
[id: string]: WorkspaceDependenciesMapElement;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export class UpdateDependenciesVersionsScript extends Script {
|
|
50
|
+
private organisationPackagePrefix: string;
|
|
51
|
+
private blackListedPackages: string[];
|
|
52
|
+
private workspaceDependenciesMap: WorkspaceDependenciesMap = this.getWorkspaceDependenciesMap();
|
|
53
|
+
|
|
54
|
+
constructor({
|
|
55
|
+
organisationPackagePrefix,
|
|
56
|
+
blackListedPackages
|
|
57
|
+
}: UpdateDependenciesVersionsScriptParams) {
|
|
58
|
+
super({
|
|
59
|
+
logger: NestLogger.fromClass(UpdateDependenciesVersionsScript),
|
|
60
|
+
arguments: [
|
|
61
|
+
{
|
|
62
|
+
name: 'targetedPackage',
|
|
63
|
+
description: "Target package"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
});
|
|
67
|
+
this.organisationPackagePrefix = organisationPackagePrefix;
|
|
68
|
+
this.blackListedPackages = blackListedPackages;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
async execute({
|
|
72
|
+
logger,
|
|
73
|
+
arguments: {
|
|
74
|
+
targetedPackage
|
|
75
|
+
}
|
|
76
|
+
}: ExecuteOptions): Promise<void> {
|
|
77
|
+
const workspaceDependenciesMapElements: WorkspaceDependenciesMapElement[] = Object
|
|
78
|
+
.values(this.workspaceDependenciesMap)
|
|
79
|
+
.filter(({ id }: WorkspaceDependenciesMapElement): boolean => this.isTargetedPackage(targetedPackage)(id));
|
|
80
|
+
|
|
81
|
+
for (const { id, dependencies, source } of workspaceDependenciesMapElements) {
|
|
82
|
+
logger.log(`package.json file updating for project "${id}"...`);
|
|
83
|
+
|
|
84
|
+
if (!PROJECT_ROOT_PATH) {
|
|
85
|
+
throw new UnknownEnvironmentVariableError('PWD');
|
|
86
|
+
}
|
|
87
|
+
const packagePath: string = join(PROJECT_ROOT_PATH, `dist/packages/${id}`);
|
|
88
|
+
|
|
89
|
+
await mkdir(packagePath, { recursive: true });
|
|
90
|
+
const packageFilePath: string = join(PROJECT_ROOT_PATH, 'package.json');
|
|
91
|
+
|
|
92
|
+
const packageFileContent: PackageContent = { ...source };
|
|
93
|
+
|
|
94
|
+
if (dependencies.length && !packageFileContent.dependencies) {
|
|
95
|
+
packageFileContent.dependencies = {};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
dependencies.forEach((dependency: string): void => {
|
|
99
|
+
const versionTag = this.isAOrganisationPackage(dependency)
|
|
100
|
+
? `^${this.workspaceDependenciesMap[dependency.replace(this.organisationPackagePrefix, '')].source.version}`
|
|
101
|
+
: ROOT_PACKAGE_CONTENT.devDependencies[dependency];
|
|
102
|
+
packageFileContent.dependencies[dependency] = versionTag;
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
writeFileSync(
|
|
106
|
+
packageFilePath,
|
|
107
|
+
JSON.stringify(packageFileContent, null, 2) + '\n'
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
console.log(`package.json file updated for project "${id}"`);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
console.log('Package files updated.')
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
getWorkspaceDependenciesMap(): WorkspaceDependenciesMap {
|
|
117
|
+
const workspaceDependenciesMap: WorkspaceDependenciesMap = {};
|
|
118
|
+
|
|
119
|
+
const nxGraphResult = spawnSync('npx', ['nx', 'graph', '--file', NX_GRAPH_FILE_PATH], { stdio: 'inherit' });
|
|
120
|
+
if (nxGraphResult.status !== 0) {
|
|
121
|
+
throw new Error(`"nx graph" failed with status ${nxGraphResult.status}`);
|
|
122
|
+
}
|
|
123
|
+
const nxGraph = require(NX_GRAPH_FILE_PATH);
|
|
124
|
+
|
|
125
|
+
const packageIds = Object.entries(nxGraph.graph.dependencies).map(([packageId]) => packageId);
|
|
126
|
+
|
|
127
|
+
for (const packageId of packageIds.filter(this.isNotBlackListed)) {
|
|
128
|
+
console.log(`Scanning dependencies for package ${packageId}...`)
|
|
129
|
+
const packageFileContent = getOrganisationPackageFile(packageId);
|
|
130
|
+
const dependencies = packageFileContent.dependencies ? Object.entries(packageFileContent.dependencies).map(([dependency]) => dependency) : [];
|
|
131
|
+
|
|
132
|
+
workspaceDependenciesMap[packageId] = {
|
|
133
|
+
id: packageId,
|
|
134
|
+
dependencies: [],
|
|
135
|
+
source: packageFileContent
|
|
136
|
+
}
|
|
137
|
+
if (packageFileContent.dependencies) {
|
|
138
|
+
for (const dependency of dependencies) {
|
|
139
|
+
workspaceDependenciesMap[packageId].dependencies.push(dependency);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
console.log('Dependencies scan done.');
|
|
145
|
+
|
|
146
|
+
return workspaceDependenciesMap;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
private isTargetedPackage = (targetPackageId: MaybeUndefined<string>) => (packageId: string) => {
|
|
150
|
+
if (targetPackageId) {
|
|
151
|
+
return packageId === targetPackageId;
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
private isAOrganisationPackage(packageName: string): boolean {
|
|
157
|
+
return packageName.includes(this.organisationPackagePrefix);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
private isBlackListed(packageId: string): boolean {
|
|
161
|
+
return this.blackListedPackages.includes(packageId);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
private isNotBlackListed(packageId: string): boolean {
|
|
165
|
+
return !this.isBlackListed(packageId);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FileSecretGetter, fileSecretGetter } from "./file.secret.getter";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
const DOCKER_SECRETS_DIRECTORY = '/run/secrets';
|
|
5
|
+
|
|
6
|
+
export const dockerSecretGetter: FileSecretGetter = fileSecretGetter
|
|
7
|
+
(DOCKER_SECRETS_DIRECTORY)
|
|
8
|
+
('Application is not running inside Docker container. Docker secrets will be unavailable.')
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
+
|
|
8
|
+
export type FileSecretGetter = (logger: ILogger) => SecretGetter;
|
|
9
|
+
|
|
10
|
+
export const fileSecretGetter = (rootDirectoryPath: string) => (warningMessage: string): FileSecretGetter => (logger: ILogger): SecretGetter => (): object => {
|
|
11
|
+
const isDirectoryExists: boolean = existsSync(rootDirectoryPath);
|
|
12
|
+
if(!isDirectoryExists){
|
|
13
|
+
logger.warn(warningMessage);
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return readdirSync(rootDirectoryPath, { withFileTypes: true })
|
|
18
|
+
.filter((entry: Dirent<string>): boolean => entry.isFile())
|
|
19
|
+
.reduce((secrets: Record<string, string>, entry): object => {
|
|
20
|
+
const filePath: string = join(rootDirectoryPath, entry.name);
|
|
21
|
+
secrets[entry.name] = readFileSync(filePath, 'utf-8').trim();
|
|
22
|
+
return secrets;
|
|
23
|
+
}, {});
|
|
24
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { fileSecretGetter, FileSecretGetter } from "./file.secret.getter";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
const LOCAL_SECRETS_DIRECTORY = '.secrets';
|
|
5
|
+
|
|
6
|
+
export const localSecretGetter: FileSecretGetter = fileSecretGetter
|
|
7
|
+
(LOCAL_SECRETS_DIRECTORY)
|
|
8
|
+
('Secrets directory not exists on this project. Local secrets will be unavailable.');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type SecretGetter = () => object;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './tmp';
|
package/src/utils/tmp.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ILogger } from "@ask-ell/core";
|
|
2
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export const TMP_FOLDER_PATH: string = join(process.cwd(), 'tmp');
|
|
7
|
+
|
|
8
|
+
export const createTmpFolder = (logger: ILogger): void => {
|
|
9
|
+
const isTmpFolderExists: boolean = existsSync(TMP_FOLDER_PATH);
|
|
10
|
+
if(isTmpFolderExists){
|
|
11
|
+
logger.info(`"${TMP_FOLDER_PATH}" folder already exists.`);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
mkdirSync(TMP_FOLDER_PATH);
|
|
15
|
+
logger.info(`"${TMP_FOLDER_PATH}" folder created.`);
|
|
16
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-on.interface.d.ts","sourceRoot":"","sources":["../../../../../packages/back-end/src/add-ons/add-on.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,WAAW,MAAM,CAAC,CAAC;IACjB,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACrD"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { INestApplication } from "@nestjs/common";
|
|
2
|
-
import { IAddOn } from "./add-on.interface";
|
|
3
|
-
import { AddOnWrapperParams } from "./types";
|
|
4
|
-
export declare class AddOnWrapper<T> implements IAddOn<T> {
|
|
5
|
-
private params;
|
|
6
|
-
private implementations;
|
|
7
|
-
constructor(params: AddOnWrapperParams);
|
|
8
|
-
apply(application: INestApplication<T>): void;
|
|
9
|
-
private appendImplementations;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=add-on.wrapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-on.wrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/back-end/src/add-ons/add-on.wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAK7C,qBAAa,YAAY,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAMzC,OAAO,CAAC,MAAM;IALlB,OAAO,CAAC,eAAe,CAErB;gBAGU,MAAM,EAAE,kBAAkB;IAKtC,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;IAM7C,OAAO,CAAC,qBAAqB;CAShC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AddOnWrapper = void 0;
|
|
4
|
-
const security_add_on_1 = require("./implementations/security/security.add-on");
|
|
5
|
-
const swagger_add_on_1 = require("./implementations/swagger/swagger.add-on");
|
|
6
|
-
const sentry_add_on_1 = require("./implementations/sentry/sentry.add-on");
|
|
7
|
-
class AddOnWrapper {
|
|
8
|
-
params;
|
|
9
|
-
implementations = [
|
|
10
|
-
new security_add_on_1.SecurityAddOn()
|
|
11
|
-
];
|
|
12
|
-
constructor(params) {
|
|
13
|
-
this.params = params;
|
|
14
|
-
this.appendImplementations();
|
|
15
|
-
}
|
|
16
|
-
apply(application) {
|
|
17
|
-
this.implementations.forEach((addOn) => {
|
|
18
|
-
addOn.apply(application);
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
appendImplementations() {
|
|
22
|
-
const { sentry, swagger } = this.params;
|
|
23
|
-
if (swagger) {
|
|
24
|
-
this.implementations.push(new swagger_add_on_1.SwaggerAddon(swagger));
|
|
25
|
-
}
|
|
26
|
-
if (sentry) {
|
|
27
|
-
this.implementations.push(new sentry_add_on_1.SentryAddon(sentry));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.AddOnWrapper = AddOnWrapper;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"security.add-on.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/security/security.add-on.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAkB,MAAM,gBAAgB,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,qBAAa,aAAa,CAAC,CAAC,CAAE,YAAW,MAAM,CAAC,CAAC,CAAC;IAChD,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;CAU9C"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SecurityAddOn = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const common_1 = require("@nestjs/common");
|
|
6
|
-
const helmet_1 = tslib_1.__importDefault(require("helmet"));
|
|
7
|
-
class SecurityAddOn {
|
|
8
|
-
apply(application) {
|
|
9
|
-
application.enableCors();
|
|
10
|
-
application.use((0, helmet_1.default)());
|
|
11
|
-
application.useGlobalPipes(new common_1.ValidationPipe({
|
|
12
|
-
transform: true,
|
|
13
|
-
whitelist: false
|
|
14
|
-
}));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.SecurityAddOn = SecurityAddOn;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Entity, type IResult } from "@ask-ell/core";
|
|
2
|
-
import { ISentryAddOnState } from "./sentry.add-on.state.interface";
|
|
3
|
-
import { ISentryAddOn } from "./sentry.add-on.interface";
|
|
4
|
-
export declare class SentryAddon<T> extends Entity<ISentryAddOnState> implements ISentryAddOn<T> {
|
|
5
|
-
checkStateValidity(_newState: ISentryAddOnState): IResult<void>;
|
|
6
|
-
apply(): void;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=sentry.add-on.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.add-on.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/sentry/sentry.add-on.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAM,MAAM,eAAe,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,qBAAa,WAAW,CAAC,CAAC,CACxB,SAAQ,MAAM,CAAC,iBAAiB,CAChC,YAAW,YAAY,CAAC,CAAC,CAAC;IAE1B,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,KAAK,IAAI,IAAI;CASd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.add-on.interface.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/sentry/sentry.add-on.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,MAAM,WAAW,YAAY,CAAC,CAAC,CAC7B,SAAQ,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAAI"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SentryAddon = void 0;
|
|
4
|
-
const core_1 = require("@ask-ell/core");
|
|
5
|
-
const nest_1 = require("@ask-ell/nest");
|
|
6
|
-
class SentryAddon extends core_1.Entity {
|
|
7
|
-
checkStateValidity(_newState) {
|
|
8
|
-
return (0, core_1.ok)();
|
|
9
|
-
}
|
|
10
|
-
apply() {
|
|
11
|
-
const { host, projectId, publicKey } = this.getSnapshot();
|
|
12
|
-
new nest_1.NestSentryConfiguration({
|
|
13
|
-
publicKey,
|
|
14
|
-
host,
|
|
15
|
-
projectId
|
|
16
|
-
}).init();
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.SentryAddon = SentryAddon;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.add-on.state.interface.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/sentry/sentry.add-on.state.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Entity, type IResult } from "@ask-ell/core";
|
|
2
|
-
import { type INestApplication } from "@nestjs/common";
|
|
3
|
-
import { ISwaggerAddOnState } from "./swagger.add-on.state.interface";
|
|
4
|
-
import { ISwaggerAddOn } from "./swagger.add-on.interface";
|
|
5
|
-
export declare class SwaggerAddon<T> extends Entity<ISwaggerAddOnState> implements ISwaggerAddOn<T> {
|
|
6
|
-
checkStateValidity(_newState: ISwaggerAddOnState): IResult<void>;
|
|
7
|
-
apply(application: INestApplication<T>): void;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=swagger.add-on.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swagger.add-on.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/swagger/swagger.add-on.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAM,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,qBAAa,YAAY,CAAC,CAAC,CACzB,SAAQ,MAAM,CAAC,kBAAkB,CACjC,YAAW,aAAa,CAAC,CAAC,CAAC;IAE3B,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,KAAK,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI;CAqB9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swagger.add-on.interface.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/swagger/swagger.add-on.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,WAAW,aAAa,CAAC,CAAC,CAC9B,SAAQ,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CAAI"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SwaggerAddon = void 0;
|
|
4
|
-
const core_1 = require("@ask-ell/core");
|
|
5
|
-
const swagger_1 = require("@nestjs/swagger");
|
|
6
|
-
class SwaggerAddon extends core_1.Entity {
|
|
7
|
-
checkStateValidity(_newState) {
|
|
8
|
-
return (0, core_1.ok)();
|
|
9
|
-
}
|
|
10
|
-
apply(application) {
|
|
11
|
-
const { title, auths } = this.getSnapshot();
|
|
12
|
-
const documentBuilder = new swagger_1.DocumentBuilder().setTitle(title);
|
|
13
|
-
auths?.forEach((auth) => {
|
|
14
|
-
if (auth === 'bearer') {
|
|
15
|
-
documentBuilder.addBearerAuth();
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
const documentBuild = documentBuilder.build();
|
|
19
|
-
const documentFactory = () => swagger_1.SwaggerModule.createDocument(application, documentBuild);
|
|
20
|
-
swagger_1.SwaggerModule.setup("/swagger", application, documentFactory, {
|
|
21
|
-
customSiteTitle: title,
|
|
22
|
-
jsonDocumentUrl: "/swagger/json",
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.SwaggerAddon = SwaggerAddon;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swagger.add-on.state.interface.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/swagger/swagger.add-on.state.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../packages/back-end/src/add-ons/implementations/swagger/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC"}
|
package/src/add-ons/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/back-end/src/add-ons/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
package/src/add-ons/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../packages/back-end/src/add-ons/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AAE9F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,iBAAiB,CAAC;CAC7B,CAAC,CAAC"}
|
package/src/add-ons/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"application.base.d.ts","sourceRoot":"","sources":["../../../../packages/back-end/src/application.base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIzD,qBAAa,eAAe;IACxB,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,aAAa;CAS7D"}
|
package/src/application.base.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApplicationBase = void 0;
|
|
4
|
-
const requirement_module_1 = require("./requirement.module");
|
|
5
|
-
class ApplicationBase {
|
|
6
|
-
static withProviders(providers) {
|
|
7
|
-
const providersAndExports = [...providers];
|
|
8
|
-
return {
|
|
9
|
-
module: this,
|
|
10
|
-
imports: [requirement_module_1.RequirementModule],
|
|
11
|
-
providers: providersAndExports,
|
|
12
|
-
exports: [...providersAndExports]
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.ApplicationBase = ApplicationBase;
|
package/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/back-end/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC"}
|
package/src/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
tslib_1.__exportStar(require("./add-ons"), exports);
|
|
5
|
-
tslib_1.__exportStar(require("./scripts"), exports);
|
|
6
|
-
tslib_1.__exportStar(require("./keyv.store.adapter.factory"), exports);
|
|
7
|
-
tslib_1.__exportStar(require("./application.base"), exports);
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { KeyvStoreAdapter } from "keyv";
|
|
2
|
-
import { MaybeUndefined } from "@ask-ell/core";
|
|
3
|
-
type CreateKeyvStoreAdapterOptions = {
|
|
4
|
-
postgresUri: MaybeUndefined<string>;
|
|
5
|
-
};
|
|
6
|
-
export declare class KeyvStoreAdapterFactory {
|
|
7
|
-
private logger;
|
|
8
|
-
create(options: CreateKeyvStoreAdapterOptions): KeyvStoreAdapter;
|
|
9
|
-
private getKeyvStoreAdapter;
|
|
10
|
-
}
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=keyv.store.adapter.factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyv.store.adapter.factory.d.ts","sourceRoot":"","sources":["../../../../packages/back-end/src/keyv.store.adapter.factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAGxC,OAAO,EAAW,cAAc,EAAE,MAAM,eAAe,CAAC;AAOxD,KAAK,6BAA6B,GAAG;IACjC,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CACvC,CAAA;AAED,qBACa,uBAAuB;IAChC,OAAO,CAAC,MAAM,CAA0D;IAExE,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,gBAAgB;IAMhE,OAAO,CAAC,mBAAmB;CAW9B"}
|