@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.
@@ -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 modelFieldType = this.modelFieldTypes[this.pascalCase(item.type)] || this.pascalCase(item.type);
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
- ${propName}: ${modelClassType + (isArray ? '[]' : '') + (reference ? ' | ' + reference + (isArray ? '[]' : '') : '')} = undefined;
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
- const inputFieldType = this.inputFieldTypes[this.pascalCase(item.type)] || this.pascalCase(item.type);
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) ? item.type : this.pascalCase(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
- - docker-swarm
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
- - docker-live
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/app ./var/www
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/server
11
+ WORKDIR /var/www
12
12
 
13
13
  EXPOSE 4000
@@ -96,4 +96,4 @@ services:
96
96
 
97
97
  command:
98
98
  - |
99
- NODE_ENV=develop node main.js
99
+ NODE_ENV=develop node dist/app/server/main.js
@@ -89,4 +89,4 @@ services:
89
89
  - traefik.http.routers.${STACK_NAME?Variable not set}-${IMAGE_TAG}-app-https.middlewares=${STACK_NAME?Variable not set}-${IMAGE_TAG}-redirect
90
90
  command:
91
91
  - |
92
- NODE_ENV="production" node main.js
92
+ NODE_ENV=production node dist/app/server/main.js
@@ -95,4 +95,4 @@ services:
95
95
  - traefik.http.routers.${STACK_NAME?Variable not set}-${IMAGE_TAG}-app-https.middlewares=${STACK_NAME?Variable not set}-${IMAGE_TAG}-redirect
96
96
  command:
97
97
  - |
98
- NODE_ENV=test node main.js
98
+ NODE_ENV=test node dist/app/server/main.js