@lenne.tech/cli 0.0.82 → 0.0.85
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/build/commands/angular/create.js +86 -45
- package/build/commands/deployment/create.js +91 -9
- package/build/commands/git/get.js +8 -2
- package/build/commands/server/create.js +2 -1
- package/build/commands/server/module.js +16 -4
- package/build/commands/server/object.js +163 -0
- package/build/extensions/server.js +55 -14
- package/build/extensions/tools.js +137 -0
- package/build/templates/deployment/.gitlab-ci.yml.ejs +6 -12
- package/build/templates/deployment/Dockerfile.app.ejs +2 -2
- package/build/templates/deployment/docker-compose.develop.yml.ejs +1 -1
- package/build/templates/deployment/docker-compose.prod.yml.ejs +1 -1
- package/build/templates/deployment/docker-compose.test.yml.ejs +1 -1
- package/build/templates/monorepro/README.md.ejs +100 -0
- package/build/templates/nest-server-module/inputs/template.input.ts.ejs +2 -2
- package/build/templates/nest-server-module/template.model.ts.ejs +14 -2
- package/build/templates/nest-server-module/template.module.ts.ejs +7 -2
- package/build/templates/nest-server-module/template.service.ts.ejs +8 -3
- package/build/templates/nest-server-object/template-create.input.ts.ejs +18 -0
- package/build/templates/nest-server-object/template.input.ts.ejs +16 -0
- package/build/templates/nest-server-object/template.object.ts.ejs +57 -0
- package/package.json +1 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const path_1 = require("path");
|
|
13
|
+
/**
|
|
14
|
+
* Create a new server module
|
|
15
|
+
*/
|
|
16
|
+
const NewCommand = {
|
|
17
|
+
name: 'object',
|
|
18
|
+
alias: ['o'],
|
|
19
|
+
description: 'Creates a new server object (with inputs)',
|
|
20
|
+
hidden: false,
|
|
21
|
+
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
// Retrieve the tools we need
|
|
23
|
+
const { filesystem, helper, parameters, print: { error, info, spin, success }, prompt: { ask, confirm }, server, strings: { kebabCase, pascalCase, camelCase }, system, template, } = toolbox;
|
|
24
|
+
// Start timer
|
|
25
|
+
const timer = system.startTimer();
|
|
26
|
+
// Info
|
|
27
|
+
info('Create a new server object (with inputs)');
|
|
28
|
+
// Get name
|
|
29
|
+
const name = yield helper.getInput(parameters.first, {
|
|
30
|
+
name: 'object name',
|
|
31
|
+
});
|
|
32
|
+
if (!name) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
// Set up initial props (to pass into templates)
|
|
36
|
+
const nameCamel = camelCase(name);
|
|
37
|
+
const nameKebab = kebabCase(name);
|
|
38
|
+
const namePascal = pascalCase(name);
|
|
39
|
+
// Check if directory
|
|
40
|
+
const cwd = filesystem.cwd();
|
|
41
|
+
const path = cwd.substr(0, cwd.lastIndexOf('src'));
|
|
42
|
+
if (!filesystem.exists((0, path_1.join)(path, 'src'))) {
|
|
43
|
+
info(``);
|
|
44
|
+
error(`No src directory in "${path}".`);
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const objectDir = (0, path_1.join)(path, 'src', 'server', 'common', 'objects', nameKebab);
|
|
48
|
+
if (filesystem.exists(objectDir)) {
|
|
49
|
+
info(``);
|
|
50
|
+
error(`Module directory "${objectDir}" already exists.`);
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
// Set props
|
|
54
|
+
const props = {};
|
|
55
|
+
const setProps = true;
|
|
56
|
+
let refsSet = false;
|
|
57
|
+
while (setProps) {
|
|
58
|
+
const name = (yield ask({
|
|
59
|
+
type: 'input',
|
|
60
|
+
name: 'input',
|
|
61
|
+
message: `Enter property name (e.g. myProperty) to create new property or leave empty (ENTER)`,
|
|
62
|
+
})).input;
|
|
63
|
+
if (!name.trim()) {
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
let type = (yield ask([
|
|
67
|
+
{
|
|
68
|
+
type: 'select',
|
|
69
|
+
name: 'input',
|
|
70
|
+
message: 'Choose property type',
|
|
71
|
+
choices: ['boolean', 'string', 'number', 'ObjectId / Reference', 'Date', 'enum', 'Use own'],
|
|
72
|
+
},
|
|
73
|
+
])).input;
|
|
74
|
+
if (type === 'ObjectId / Reference') {
|
|
75
|
+
type = 'ObjectId';
|
|
76
|
+
}
|
|
77
|
+
if (type === 'Use own')
|
|
78
|
+
type = (yield ask({
|
|
79
|
+
type: 'input',
|
|
80
|
+
name: 'input',
|
|
81
|
+
message: `Enter property type (e.g. MyClass or MyClass[])`,
|
|
82
|
+
})).input;
|
|
83
|
+
let reference;
|
|
84
|
+
let enumRef;
|
|
85
|
+
if (type === 'ObjectId') {
|
|
86
|
+
reference = (yield ask({
|
|
87
|
+
type: 'input',
|
|
88
|
+
name: 'input',
|
|
89
|
+
initial: pascalCase(name),
|
|
90
|
+
message: `Enter reference for ObjectId`,
|
|
91
|
+
})).input;
|
|
92
|
+
if (reference) {
|
|
93
|
+
refsSet = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (type === 'enum') {
|
|
97
|
+
enumRef = (yield ask({
|
|
98
|
+
type: 'input',
|
|
99
|
+
name: 'input',
|
|
100
|
+
initial: pascalCase(name) + 'Enum',
|
|
101
|
+
message: `Enter enum type`,
|
|
102
|
+
})).input;
|
|
103
|
+
if (enumRef) {
|
|
104
|
+
refsSet = true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const arrayEnding = type.endsWith('[]');
|
|
108
|
+
type = type.replace('[]', '');
|
|
109
|
+
const isArray = arrayEnding || (yield confirm(`Array?`));
|
|
110
|
+
const nullable = yield confirm(`Nullable?`, true);
|
|
111
|
+
props[name] = { name, nullable, isArray, type, reference, enumRef };
|
|
112
|
+
}
|
|
113
|
+
const generateSpinner = spin('Generate files');
|
|
114
|
+
const inputTemplate = server.propsForInput(props, { modelName: name, nullable: true });
|
|
115
|
+
const createTemplate = server.propsForInput(props, { modelName: name, nullable: false, create: true });
|
|
116
|
+
const objectTemplate = server.propsForModel(props, { modelName: name });
|
|
117
|
+
// nest-server-module/inputs/xxx.input.ts
|
|
118
|
+
yield template.generate({
|
|
119
|
+
template: 'nest-server-object/template.input.ts.ejs',
|
|
120
|
+
target: (0, path_1.join)(objectDir, nameKebab + '.input.ts'),
|
|
121
|
+
props: { nameCamel, nameKebab, namePascal, props: inputTemplate.props, imports: inputTemplate.imports },
|
|
122
|
+
});
|
|
123
|
+
// nest-server-object/inputs/xxx-create.input.ts
|
|
124
|
+
yield template.generate({
|
|
125
|
+
template: 'nest-server-object/template-create.input.ts.ejs',
|
|
126
|
+
target: (0, path_1.join)(objectDir, nameKebab + '-create.input.ts'),
|
|
127
|
+
props: { nameCamel, nameKebab, namePascal, props: createTemplate.props, imports: createTemplate.imports },
|
|
128
|
+
});
|
|
129
|
+
// nest-server-module/xxx.model.ts
|
|
130
|
+
yield template.generate({
|
|
131
|
+
template: 'nest-server-object/template.object.ts.ejs',
|
|
132
|
+
target: (0, path_1.join)(objectDir, nameKebab + '.object.ts'),
|
|
133
|
+
props: {
|
|
134
|
+
nameCamel,
|
|
135
|
+
nameKebab,
|
|
136
|
+
namePascal,
|
|
137
|
+
props: objectTemplate.props,
|
|
138
|
+
imports: objectTemplate.imports,
|
|
139
|
+
mappings: objectTemplate.mappings,
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
const prettier = (0, path_1.join)(path, 'node_modules', '.bin', 'prettier');
|
|
143
|
+
if (filesystem.exists(prettier)) {
|
|
144
|
+
yield system.run(prettier + ' ' + (0, path_1.join)(objectDir, '**', '*.ts'));
|
|
145
|
+
}
|
|
146
|
+
generateSpinner.succeed('Files generated');
|
|
147
|
+
// We're done, so show what to do next
|
|
148
|
+
info(``);
|
|
149
|
+
success(`Generated ${namePascal}Object in ${helper.msToMinutesAndSeconds(timer())}m.`);
|
|
150
|
+
info(``);
|
|
151
|
+
// We're done, so show what to do next
|
|
152
|
+
if (refsSet) {
|
|
153
|
+
success(`HINT: References have been added, so it is necessary to add the corresponding imports!`);
|
|
154
|
+
}
|
|
155
|
+
if (!toolbox.parameters.options.fromGluegunMenu) {
|
|
156
|
+
process.exit();
|
|
157
|
+
}
|
|
158
|
+
// For tests
|
|
159
|
+
return `new object ${name}`;
|
|
160
|
+
}),
|
|
161
|
+
};
|
|
162
|
+
exports.default = NewCommand;
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9vYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSwrQkFBNEI7QUFJNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsMkNBQTJDO0lBQ3hELE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFDeEIsTUFBTSxFQUNOLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEVBQzdDLE1BQU0sRUFDTixRQUFRLEdBQ1QsR0FBRyxPQUFPLENBQUM7UUFFWixjQUFjO1FBQ2QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLE9BQU87UUFDUCxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUVqRCxXQUFXO1FBQ1gsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDbkQsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87U0FDUjtRQUVELGdEQUFnRDtRQUNoRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsU0FB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
|
|
@@ -18,40 +18,62 @@ class Server {
|
|
|
18
18
|
};
|
|
19
19
|
// Specific types for properties in input fields
|
|
20
20
|
this.inputFieldTypes = {
|
|
21
|
+
Boolean: 'Boolean',
|
|
22
|
+
Date: 'number',
|
|
21
23
|
File: 'GraphQLUpload',
|
|
22
24
|
FileInfo: 'GraphQLUpload',
|
|
23
25
|
Id: 'String',
|
|
24
26
|
ID: 'String',
|
|
27
|
+
Number: 'Number',
|
|
25
28
|
ObjectId: 'String',
|
|
29
|
+
String: 'String',
|
|
26
30
|
Upload: 'GraphQLUpload',
|
|
27
31
|
};
|
|
28
32
|
// Specific types for properties in input classes
|
|
29
33
|
this.inputClassTypes = {
|
|
34
|
+
Boolean: 'boolean',
|
|
35
|
+
Date: 'Date',
|
|
30
36
|
File: 'FileUpload',
|
|
31
37
|
FileInfo: 'FileUpload',
|
|
32
38
|
Id: 'string',
|
|
33
39
|
ID: 'string',
|
|
40
|
+
Number: 'number',
|
|
34
41
|
ObjectId: 'string',
|
|
42
|
+
String: 'string',
|
|
35
43
|
Upload: 'FileUpload',
|
|
36
44
|
};
|
|
37
45
|
// Specific types for properties in model fields
|
|
38
46
|
this.modelFieldTypes = {
|
|
47
|
+
Boolean: 'Boolean',
|
|
48
|
+
Date: 'Number',
|
|
39
49
|
File: 'CoreFileInfo',
|
|
40
50
|
FileInfo: 'CoreFileInfo',
|
|
41
51
|
ID: 'String',
|
|
42
52
|
Id: 'String',
|
|
53
|
+
Number: 'Number',
|
|
43
54
|
ObjectId: 'String',
|
|
55
|
+
String: 'String',
|
|
44
56
|
Upload: 'CoreFileInfo',
|
|
45
57
|
};
|
|
46
58
|
// Specific types for properties in model class
|
|
47
59
|
this.modelClassTypes = {
|
|
60
|
+
Boolean: 'boolean',
|
|
61
|
+
Date: 'Date',
|
|
48
62
|
File: 'CoreFileInfo',
|
|
49
63
|
FileInfo: 'CoreFileInfo',
|
|
50
64
|
ID: 'string',
|
|
51
65
|
Id: 'string',
|
|
66
|
+
Number: 'number',
|
|
52
67
|
ObjectId: 'string',
|
|
68
|
+
String: 'string',
|
|
53
69
|
Upload: 'CoreFileInfo',
|
|
54
70
|
};
|
|
71
|
+
// Additional string for ID properties
|
|
72
|
+
this.propertySuffixTypes = {
|
|
73
|
+
Id: 'Id',
|
|
74
|
+
ID: 'Id',
|
|
75
|
+
ObjectId: 'Id',
|
|
76
|
+
};
|
|
55
77
|
// Standard types: primitives and default JavaScript classes
|
|
56
78
|
this.standardTypes = ['boolean', 'string', 'number', 'Date'];
|
|
57
79
|
this.camelCase = toolbox.strings.camelCase;
|
|
@@ -62,7 +84,7 @@ class Server {
|
|
|
62
84
|
* Create template string for properties in model
|
|
63
85
|
*/
|
|
64
86
|
propsForModel(props, options) {
|
|
65
|
-
var _a;
|
|
87
|
+
var _a, _b;
|
|
66
88
|
// Preparations
|
|
67
89
|
const config = Object.assign({ useDefault: true }, options);
|
|
68
90
|
const { modelName, useDefault } = config;
|
|
@@ -105,12 +127,15 @@ class Server {
|
|
|
105
127
|
for (const [name, item] of Object.entries(props)) {
|
|
106
128
|
const propName = this.camelCase(name);
|
|
107
129
|
const reference = ((_a = item.reference) === null || _a === void 0 ? void 0 : _a.trim()) ? this.pascalCase(item.reference.trim()) : '';
|
|
108
|
-
const
|
|
130
|
+
const enumRef = ((_b = item.enumRef) === null || _b === void 0 ? void 0 : _b.trim()) ? this.pascalCase(item.enumRef.trim()) : '';
|
|
131
|
+
const modelFieldType = enumRef
|
|
132
|
+
? 'String'
|
|
133
|
+
: this.modelFieldTypes[this.pascalCase(item.type)] || this.pascalCase(item.type);
|
|
109
134
|
const isArray = item.isArray;
|
|
110
135
|
const modelClassType = this.modelClassTypes[this.pascalCase(item.type)] ||
|
|
111
136
|
(this.standardTypes.includes(item.type) ? item.type : this.pascalCase(item.type));
|
|
112
137
|
const type = this.standardTypes.includes(item.type) ? item.type : this.pascalCase(item.type);
|
|
113
|
-
if (!this.standardTypes.includes(type) && type !== 'ObjectId') {
|
|
138
|
+
if (!this.standardTypes.includes(type) && type !== 'ObjectId' && type !== 'Enum') {
|
|
114
139
|
mappings[propName] = type;
|
|
115
140
|
}
|
|
116
141
|
if (reference) {
|
|
@@ -121,17 +146,21 @@ class Server {
|
|
|
121
146
|
}
|
|
122
147
|
result += `
|
|
123
148
|
/**
|
|
124
|
-
* ${propName + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
|
|
149
|
+
* ${this.pascalCase(propName) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
|
|
125
150
|
*/
|
|
126
151
|
@Restricted(RoleEnum.S_EVERYONE)
|
|
127
152
|
@Field(() => ${(isArray ? '[' : '') + (reference ? reference : modelFieldType) + (isArray ? ']' : '')}, {
|
|
128
|
-
description: '${propName + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
|
|
153
|
+
description: '${this.pascalCase(propName) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
|
|
129
154
|
nullable: ${item.nullable},
|
|
130
155
|
})
|
|
131
156
|
@Prop(${reference
|
|
132
157
|
? (isArray ? '[' : '') + `{ type: Schema.Types.ObjectId, ref: '${reference}' }` + (isArray ? ']' : '')
|
|
133
|
-
:
|
|
134
|
-
|
|
158
|
+
: enumRef
|
|
159
|
+
? (isArray ? '[' : '') + `{ type: String, enum: ${enumRef} }` + (isArray ? ']' : '')
|
|
160
|
+
: ''})
|
|
161
|
+
${propName}: ${(enumRef || modelClassType) +
|
|
162
|
+
(isArray ? '[]' : '') +
|
|
163
|
+
(reference ? ' | ' + reference + (isArray ? '[]' : '') : '')} = undefined;
|
|
135
164
|
`;
|
|
136
165
|
}
|
|
137
166
|
// Process imports
|
|
@@ -157,7 +186,7 @@ class Server {
|
|
|
157
186
|
propsForInput(props, options) {
|
|
158
187
|
// Preparations
|
|
159
188
|
const config = Object.assign({ useDefault: true }, options);
|
|
160
|
-
const { modelName, nullable, useDefault } = config;
|
|
189
|
+
const { modelName, nullable, create, useDefault } = config;
|
|
161
190
|
let result = '';
|
|
162
191
|
// Check parameters
|
|
163
192
|
if (!props || !(typeof props !== 'object') || !Object.keys(props).length) {
|
|
@@ -190,9 +219,21 @@ class Server {
|
|
|
190
219
|
// Process configuration
|
|
191
220
|
const imports = {};
|
|
192
221
|
for (const [name, item] of Object.entries(props)) {
|
|
193
|
-
|
|
222
|
+
let inputFieldType = this.inputFieldTypes[this.pascalCase(item.type)] ||
|
|
223
|
+
(item.enumRef
|
|
224
|
+
? this.pascalCase(item.enumRef)
|
|
225
|
+
: this.pascalCase(item.type) + (create ? 'CreateInput' : 'Input'));
|
|
226
|
+
inputFieldType = this.modelFieldTypes[item.type]
|
|
227
|
+
? this.pascalCase(this.modelFieldTypes[item.type])
|
|
228
|
+
: inputFieldType;
|
|
194
229
|
const inputClassType = this.inputClassTypes[this.pascalCase(item.type)] ||
|
|
195
|
-
(this.standardTypes.includes(item.type)
|
|
230
|
+
(this.standardTypes.includes(item.type)
|
|
231
|
+
? item.type
|
|
232
|
+
: item.enumRef
|
|
233
|
+
? this.pascalCase(item.enumRef)
|
|
234
|
+
: this.pascalCase(item.type) + (create ? 'CreateInput' : 'Input'));
|
|
235
|
+
const propertySuffix = this.propertySuffixTypes[this.pascalCase(item.type)] || '';
|
|
236
|
+
const overrideFlag = create ? 'override ' : '';
|
|
196
237
|
if (this.imports[inputFieldType]) {
|
|
197
238
|
imports[inputFieldType] = this.imports[inputFieldType];
|
|
198
239
|
}
|
|
@@ -201,14 +242,14 @@ class Server {
|
|
|
201
242
|
}
|
|
202
243
|
result += `
|
|
203
244
|
/**
|
|
204
|
-
* ${this.pascalCase(name) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
|
|
245
|
+
* ${this.pascalCase(name) + propertySuffix + (modelName ? ' of ' + this.pascalCase(modelName) : '')}
|
|
205
246
|
*/
|
|
206
247
|
@Restricted(RoleEnum.S_EVERYONE)
|
|
207
248
|
@Field(() => ${(item.isArray ? '[' : '') + inputFieldType + (item.isArray ? ']' : '')}, {
|
|
208
|
-
description: '${this.pascalCase(name) + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
|
|
249
|
+
description: '${this.pascalCase(name) + propertySuffix + (modelName ? ' of ' + this.pascalCase(modelName) : '')}',
|
|
209
250
|
nullable: ${nullable || item.nullable},
|
|
210
251
|
})${nullable || item.nullable ? '\n @IsOptional()' : ''}
|
|
211
|
-
${this.camelCase(name)}: ${inputClassType + (item.isArray ? '[]' : '')} = undefined;
|
|
252
|
+
${overrideFlag + this.camelCase(name)}${nullable || item.nullable ? '?' : ''}: ${inputClassType + (item.isArray ? '[]' : '')} = undefined;
|
|
212
253
|
`;
|
|
213
254
|
}
|
|
214
255
|
// Process imports
|
|
@@ -231,4 +272,4 @@ exports.Server = Server;
|
|
|
231
272
|
exports.default = (toolbox) => {
|
|
232
273
|
toolbox.server = new Server(toolbox);
|
|
233
274
|
};
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBd0RqQjs7T0FFRztJQUNILFlBQXNCLE9BQStCO1FBQS9CLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBckRyRCx1Q0FBdUM7UUFDdkMsWUFBTyxHQUEyQjtZQUNoQyxZQUFZLEVBQUUseURBQXlEO1lBQ3ZFLGFBQWEsRUFBRSxtRUFBbUU7WUFDbEYsVUFBVSxFQUFFLHFFQUFxRTtTQUNsRixDQUFDO1FBRUYsZ0RBQWdEO1FBQ2hELG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxlQUFlO1lBQ3JCLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLEVBQUUsRUFBRSxRQUFRO1lBQ1osRUFBRSxFQUFFLFFBQVE7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsZUFBZTtTQUN4QixDQUFDO1FBRUYsaURBQWlEO1FBQ2pELG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxZQUFZO1lBQ2xCLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLEVBQUUsRUFBRSxRQUFRO1lBQ1osRUFBRSxFQUFFLFFBQVE7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsWUFBWTtTQUNyQixDQUFDO1FBRUYsZ0RBQWdEO1FBQ2hELG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLEVBQUUsRUFBRSxRQUFRO1lBQ1osRUFBRSxFQUFFLFFBQVE7WUFDWixRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsY0FBYztTQUN2QixDQUFDO1FBRUYsK0NBQStDO1FBQy9DLG9CQUFlLEdBQTJCO1lBQ3hDLElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLEVBQUUsRUFBRSxRQUFR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
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBK0VqQjs7T0FFRztJQUNILFlBQXNCLE9BQStCO1FBQS9CLFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBNUVyRCx1Q0FBdUM7UUFDdkMsWUFBTyxHQUEyQjtZQUNoQyxZQUFZLEVBQUUseURBQXlEO1lBQ3ZFLGFBQWEsRUFBRSxtRUFBbUU7WUFDbEYsVUFBVSxFQUFFLHFFQUFxRTtTQUNsRixDQUFDO1FBRUYsZ0RBQWdEO1FBQ2hELG9CQUFlLEdBQTJCO1lBQ3hDLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxRQUFRO1lBQ2QsSUFBSSxFQUFFLGVBQWU7WUFDckIsUUFBUSxFQUFFLGVBQWU7WUFDekIsRUFBRSxFQUFFLFFBQVE7WUFDWixFQUFFLEVBQUUsUUFBUTtZQUNaLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxlQUFlO1NBQ3hCLENBQUM7UUFFRixpREFBaUQ7UUFDakQsb0JBQWUsR0FBMkI7WUFDeEMsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsWUFBWTtZQUNsQixRQUFRLEVBQUUsWUFBWTtZQUN0QixFQUFFLEVBQUUsUUFBUTtZQUNaLEVBQUUsRUFBRSxRQUFRO1lBQ1osTUFBTSxFQUFFLFFBQVE7WUFDaEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsTUFBTSxFQUFFLFlBQVk7U0FDckIsQ0FBQztRQUVGLGdEQUFnRDtRQUNoRCxvQkFBZSxHQUEyQjtZQUN4QyxPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJLEVBQUUsUUFBUTtZQUNkLElBQUksRUFBRSxjQUFj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
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Tools = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const singleComment = Symbol('singleComment');
|
|
6
|
+
const multiComment = Symbol('multiComment');
|
|
7
|
+
const stripWithoutWhitespace = () => '';
|
|
8
|
+
const stripWithWhitespace = (string, start, end) => string.slice(start, end).replace(/\S/g, ' ');
|
|
9
|
+
const isEscaped = (jsonString, quotePosition) => {
|
|
10
|
+
let index = quotePosition - 1;
|
|
11
|
+
let backslashCount = 0;
|
|
12
|
+
while (jsonString[index] === '\\') {
|
|
13
|
+
index -= 1;
|
|
14
|
+
backslashCount += 1;
|
|
15
|
+
}
|
|
16
|
+
return Boolean(backslashCount % 2);
|
|
17
|
+
};
|
|
18
|
+
class Tools {
|
|
19
|
+
/**
|
|
20
|
+
* Constructor for integration of toolbox
|
|
21
|
+
*/
|
|
22
|
+
constructor(toolbox) {
|
|
23
|
+
this.toolbox = toolbox;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Strip and save JSON file
|
|
27
|
+
*/
|
|
28
|
+
stripAndSaveJsonFile(path) {
|
|
29
|
+
const content = this.stripJsonComments((0, fs_1.readFileSync)(path, 'utf8'));
|
|
30
|
+
(0, fs_1.writeFileSync)(path, content);
|
|
31
|
+
return content;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Strip JSON comments from a string
|
|
35
|
+
* Inspired by https://github.com/sindresorhus/strip-json-comments/blob/main/index.js
|
|
36
|
+
*/
|
|
37
|
+
stripJsonComments(jsonString, { whitespace = true, trailingCommas = false } = {}) {
|
|
38
|
+
if (typeof jsonString !== 'string') {
|
|
39
|
+
throw new TypeError(`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof jsonString}\``);
|
|
40
|
+
}
|
|
41
|
+
const strip = whitespace ? stripWithWhitespace : stripWithoutWhitespace;
|
|
42
|
+
let isInsideString = false;
|
|
43
|
+
let isInsideComment = false;
|
|
44
|
+
let offset = 0;
|
|
45
|
+
let buffer = '';
|
|
46
|
+
let result = '';
|
|
47
|
+
let commaIndex = -1;
|
|
48
|
+
for (let index = 0; index < jsonString.length; index++) {
|
|
49
|
+
const currentCharacter = jsonString[index];
|
|
50
|
+
const nextCharacter = jsonString[index + 1];
|
|
51
|
+
if (!isInsideComment && currentCharacter === '"') {
|
|
52
|
+
// Enter or exit string
|
|
53
|
+
const escaped = isEscaped(jsonString, index);
|
|
54
|
+
if (!escaped) {
|
|
55
|
+
isInsideString = !isInsideString;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (isInsideString) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
if (!isInsideComment && currentCharacter + nextCharacter === '//') {
|
|
62
|
+
// Enter single-line comment
|
|
63
|
+
buffer += jsonString.slice(offset, index);
|
|
64
|
+
offset = index;
|
|
65
|
+
isInsideComment = singleComment;
|
|
66
|
+
index++;
|
|
67
|
+
}
|
|
68
|
+
else if (isInsideComment === singleComment && currentCharacter + nextCharacter === '\r\n') {
|
|
69
|
+
// Exit single-line comment via \r\n
|
|
70
|
+
index++;
|
|
71
|
+
isInsideComment = false;
|
|
72
|
+
buffer += strip(jsonString, offset, index);
|
|
73
|
+
offset = index;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
else if (isInsideComment === singleComment && currentCharacter === '\n') {
|
|
77
|
+
// Exit single-line comment via \n
|
|
78
|
+
isInsideComment = false;
|
|
79
|
+
buffer += strip(jsonString, offset, index);
|
|
80
|
+
offset = index;
|
|
81
|
+
}
|
|
82
|
+
else if (!isInsideComment && currentCharacter + nextCharacter === '/*') {
|
|
83
|
+
// Enter multiline comment
|
|
84
|
+
buffer += jsonString.slice(offset, index);
|
|
85
|
+
offset = index;
|
|
86
|
+
isInsideComment = multiComment;
|
|
87
|
+
index++;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
else if (isInsideComment === multiComment && currentCharacter + nextCharacter === '*/') {
|
|
91
|
+
// Exit multiline comment
|
|
92
|
+
index++;
|
|
93
|
+
isInsideComment = false;
|
|
94
|
+
buffer += strip(jsonString, offset, index + 1);
|
|
95
|
+
offset = index + 1;
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
else if (trailingCommas && !isInsideComment) {
|
|
99
|
+
if (commaIndex !== -1) {
|
|
100
|
+
if (currentCharacter === '}' || currentCharacter === ']') {
|
|
101
|
+
// Strip trailing comma
|
|
102
|
+
buffer += jsonString.slice(offset, index);
|
|
103
|
+
result += strip(buffer, 0, 1) + buffer.slice(1);
|
|
104
|
+
buffer = '';
|
|
105
|
+
offset = index;
|
|
106
|
+
commaIndex = -1;
|
|
107
|
+
}
|
|
108
|
+
else if (currentCharacter !== ' ' &&
|
|
109
|
+
currentCharacter !== '\t' &&
|
|
110
|
+
currentCharacter !== '\r' &&
|
|
111
|
+
currentCharacter !== '\n') {
|
|
112
|
+
// Hit non-whitespace following a comma; comma is not trailing
|
|
113
|
+
buffer += jsonString.slice(offset, index);
|
|
114
|
+
offset = index;
|
|
115
|
+
commaIndex = -1;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (currentCharacter === ',') {
|
|
119
|
+
// Flush buffer prior to this point, and save new comma index
|
|
120
|
+
result += buffer + jsonString.slice(offset, index);
|
|
121
|
+
buffer = '';
|
|
122
|
+
offset = index;
|
|
123
|
+
commaIndex = index;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return result + buffer + (isInsideComment ? strip(jsonString.slice(offset)) : jsonString.slice(offset));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.Tools = Tools;
|
|
131
|
+
/**
|
|
132
|
+
* Extend toolbox
|
|
133
|
+
*/
|
|
134
|
+
exports.default = (toolbox) => {
|
|
135
|
+
toolbox.tools = new Tools(toolbox);
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9ucy90b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBaUQ7QUFHakQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUU1QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUN4QyxNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBTSxFQUFFLEtBQU0sRUFBRSxHQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFbkcsTUFBTSxTQUFTLEdBQUcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLEVBQUU7SUFDOUMsSUFBSSxLQUFLLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUM5QixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFFdkIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDWCxjQUFjLElBQUksQ0FBQyxDQUFDO0tBQ3JCO0lBRUQsT0FBTyxPQUFPLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQUVGLE1BQWEsS0FBSztJQUNoQjs7T0FFRztJQUNILFlBQXNCLE9BQStCO1FBQS9CLFlBQU8sR0FBUCxPQUFPLENBQXdCO0lBQUcsQ0FBQztJQUV6RDs7T0FFRztJQUNILG9CQUFvQixDQUFDLElBQVk7UUFDL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUEsaUJBQVksRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENB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
|
|
@@ -85,12 +85,6 @@ build:test:
|
|
|
85
85
|
- projects/app/dist/
|
|
86
86
|
expire_in: 5 minutes
|
|
87
87
|
script:
|
|
88
|
-
- git config --global user.email $CI_EMAIL
|
|
89
|
-
- git config --global user.name $CI_NAME
|
|
90
|
-
- git config http.sslVerify "false"
|
|
91
|
-
- git config receive.advertisePushOptions true
|
|
92
|
-
- git fetch
|
|
93
|
-
- git pull https://${CI_USER}:${CI_ACCESS_TOKEN}@gitlab.lenne.tech/products/akademie/master-minds.git test:test
|
|
94
88
|
- npm run init
|
|
95
89
|
- npm run build:test
|
|
96
90
|
only:
|
|
@@ -140,7 +134,7 @@ docker_build_push_test:
|
|
|
140
134
|
before_script:
|
|
141
135
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
142
136
|
script:
|
|
143
|
-
- FILE_NAME=$FILE_NAME_TEST STACK_NAME=$STACK_NAME APP_URL=$APP_URL_TEST IMAGE_TAG=test CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh build-push.sh
|
|
137
|
+
- FILE_NAME=$FILE_NAME_TEST STACK_NAME=$STACK_NAME APP_URL=$APP_URL_TEST IMAGE_TAG=test CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh ./scripts/build-push.sh
|
|
144
138
|
only:
|
|
145
139
|
- test
|
|
146
140
|
|
|
@@ -148,11 +142,11 @@ deploy_test:
|
|
|
148
142
|
stage: deploy
|
|
149
143
|
image: tiangolo/docker-with-compose
|
|
150
144
|
tags:
|
|
151
|
-
-
|
|
145
|
+
- <%= props.testRunner %>
|
|
152
146
|
before_script:
|
|
153
147
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
154
148
|
script:
|
|
155
|
-
- FILE_NAME=$FILE_NAME_TEST STACK_NAME=$STACK_NAME APP_URL=$APP_URL_TEST IMAGE_TAG=test CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh deploy.sh
|
|
149
|
+
- FILE_NAME=$FILE_NAME_TEST STACK_NAME=$STACK_NAME APP_URL=$APP_URL_TEST IMAGE_TAG=test CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh ./scripts/deploy.sh
|
|
156
150
|
environment:
|
|
157
151
|
name: test
|
|
158
152
|
url: https://$APP_URL_TEST
|
|
@@ -167,7 +161,7 @@ docker_build_push_prod:
|
|
|
167
161
|
before_script:
|
|
168
162
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
169
163
|
script:
|
|
170
|
-
- FILE_NAME=$FILE_NAME_PROD STACK_NAME=$STACK_NAME APP_URL=$APP_URL_PROD IMAGE_TAG=production CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh build-push.sh
|
|
164
|
+
- FILE_NAME=$FILE_NAME_PROD STACK_NAME=$STACK_NAME APP_URL=$APP_URL_PROD IMAGE_TAG=production CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh ./scripts/build-push.sh
|
|
171
165
|
only:
|
|
172
166
|
- main
|
|
173
167
|
|
|
@@ -175,11 +169,11 @@ deploy_prod:
|
|
|
175
169
|
stage: deploy
|
|
176
170
|
image: tiangolo/docker-with-compose
|
|
177
171
|
tags:
|
|
178
|
-
-
|
|
172
|
+
- <%= props.prodRunner %>
|
|
179
173
|
before_script:
|
|
180
174
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
181
175
|
script:
|
|
182
|
-
- FILE_NAME=$FILE_NAME_PROD STACK_NAME=$STACK_NAME APP_URL=$APP_URL_PROD IMAGE_TAG=production CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh deploy.sh
|
|
176
|
+
- FILE_NAME=$FILE_NAME_PROD STACK_NAME=$STACK_NAME APP_URL=$APP_URL_PROD IMAGE_TAG=production CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE sh ./scripts/deploy.sh
|
|
183
177
|
environment:
|
|
184
178
|
name: production
|
|
185
179
|
url: https://$APP_URL_PROD
|
|
@@ -4,10 +4,10 @@ RUN mkdir -p /var/www
|
|
|
4
4
|
|
|
5
5
|
RUN apk --no-cache add curl
|
|
6
6
|
|
|
7
|
-
COPY ./projects/app/dist
|
|
7
|
+
COPY ./projects/app/dist ./var/www/dist
|
|
8
8
|
|
|
9
9
|
HEALTHCHECK CMD curl --fail http://localhost:4000/ || exit 1
|
|
10
10
|
|
|
11
|
-
WORKDIR /var/www
|
|
11
|
+
WORKDIR /var/www
|
|
12
12
|
|
|
13
13
|
EXPOSE 4000
|