@opra/cli 1.19.5 → 1.20.0

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.
@@ -2,11 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateDataType = generateDataType;
4
4
  exports._generateTypeCode = _generateTypeCode;
5
- exports._generateEnumTypeCode = _generateEnumTypeCode;
5
+ exports._generateArrayTypeCode = _generateArrayTypeCode;
6
6
  exports._generateComplexTypeCode = _generateComplexTypeCode;
7
- exports._generateSimpleTypeCode = _generateSimpleTypeCode;
8
- exports._generateMixinTypeCode = _generateMixinTypeCode;
7
+ exports._generateEnumTypeCode = _generateEnumTypeCode;
9
8
  exports._generateMappedTypeCode = _generateMappedTypeCode;
9
+ exports._generateMixinTypeCode = _generateMixinTypeCode;
10
+ exports._generateSimpleTypeCode = _generateSimpleTypeCode;
11
+ exports._generateUnionTypeCode = _generateUnionTypeCode;
10
12
  const tslib_1 = require("tslib");
11
13
  const node_path_1 = tslib_1.__importDefault(require("node:path"));
12
14
  const common_1 = require("@opra/common");
@@ -85,14 +87,14 @@ async function _generateTypeCode(currentFile, dataType, intent) {
85
87
  if (intent === 'root' && !dataType.name) {
86
88
  throw new TypeError(`Name required to generate data type code to root intent`);
87
89
  }
88
- if (dataType instanceof common_1.EnumType) {
89
- return await this._generateEnumTypeCode(currentFile, dataType, intent);
90
+ if (dataType instanceof common_1.ArrayType) {
91
+ return await this._generateArrayTypeCode(currentFile, dataType, intent);
90
92
  }
91
93
  if (dataType instanceof common_1.ComplexType) {
92
94
  return await this._generateComplexTypeCode(currentFile, dataType, intent);
93
95
  }
94
- if (dataType instanceof common_1.SimpleType) {
95
- return await this._generateSimpleTypeCode(currentFile, dataType, intent);
96
+ if (dataType instanceof common_1.EnumType) {
97
+ return await this._generateEnumTypeCode(currentFile, dataType, intent);
96
98
  }
97
99
  if (dataType instanceof common_1.MappedType) {
98
100
  return await this._generateMappedTypeCode(currentFile, dataType, intent);
@@ -100,36 +102,34 @@ async function _generateTypeCode(currentFile, dataType, intent) {
100
102
  if (dataType instanceof common_1.MixinType) {
101
103
  return await this._generateMixinTypeCode(currentFile, dataType, intent);
102
104
  }
105
+ if (dataType instanceof common_1.SimpleType) {
106
+ return await this._generateSimpleTypeCode(currentFile, dataType, intent);
107
+ }
108
+ if (dataType instanceof common_1.UnionType) {
109
+ return await this._generateUnionTypeCode(currentFile, dataType, intent);
110
+ }
103
111
  /* istanbul ignore next */
104
112
  throw new TypeError(`${dataType.kind} data types can not be directly exported`);
105
113
  }
106
114
  /**
107
115
  *
108
116
  */
109
- async function _generateEnumTypeCode(currentFile, dataType, intent) {
110
- if (intent === 'root') {
111
- let out = `enum ${dataType.name} {\n\t`;
112
- for (const [value, info] of Object.entries(dataType.attributes)) {
113
- // Print JSDoc
114
- let jsDoc = '';
115
- if (dataType.attributes[value].description)
116
- jsDoc += ` * ${dataType.attributes[value].description}\n`;
117
- if (jsDoc)
118
- out += `/**\n${jsDoc} */\n`;
119
- out +=
120
- `${info.alias || value} = ` +
121
- (typeof value === 'number'
122
- ? value
123
- : "'" + String(value).replace("'", "\\'") + "'");
124
- out += ',\n\n';
125
- }
126
- return out + '\b}';
117
+ async function _generateArrayTypeCode(currentFile, dataType, intent) {
118
+ if (intent === 'extends')
119
+ throw new TypeError('Array types can not be extended');
120
+ let out = '';
121
+ const x = await this.generateDataType(dataType.type, 'typeDef', currentFile);
122
+ if (x.kind === 'embedded') {
123
+ out =
124
+ x.code.includes('|') || x.code.includes('&')
125
+ ? '(' + x.code + ')'
126
+ : x.code;
127
127
  }
128
- return ('(' +
129
- Object.keys(dataType.attributes)
130
- .map(t => `'${t}'`)
131
- .join(' | ') +
132
- ')');
128
+ else
129
+ out = x.typeName;
130
+ if (intent === 'root')
131
+ return `type ${dataType.name} = ${out}[]`;
132
+ return `${out}[]`;
133
133
  }
134
134
  /**
135
135
  *
@@ -180,17 +180,20 @@ async function _generateComplexTypeCode(currentFile, dataType, intent) {
180
180
  if (field.readonly)
181
181
  out += 'readonly ';
182
182
  out += `${field.name}${field.required ? '' : '?'}: `;
183
+ let typ = '';
183
184
  if (field.fixed) {
184
185
  const t = typeof field.fixed;
185
- out += `${t === 'number' || t === 'boolean' || t === 'bigint' ? field.fixed : "'" + field.fixed + "'"}\n`;
186
+ typ = `${t === 'number' || t === 'boolean' || t === 'bigint' ? field.fixed : "'" + field.fixed + "'"}\n`;
186
187
  }
187
188
  else {
188
189
  const x = await this.generateDataType(field.type, 'typeDef', currentFile);
189
- const s = x.kind === 'embedded' ? x.code : x.typeName;
190
- if (field.isArray) {
191
- out += /[a-zA-Z]\w*/.test(s) ? s + '[]' : '(' + s + ')[]';
192
- }
190
+ typ = x.kind === 'embedded' ? x.code : x.typeName;
193
191
  }
192
+ if (field.isArray && !(field.type instanceof common_1.ArrayType)) {
193
+ out += /[a-zA-Z]\w*/.test(typ) ? typ + '[];\n' : '(' + typ + ')[];\n';
194
+ }
195
+ else
196
+ out += typ + ';\n';
194
197
  }
195
198
  if (dataType.additionalFields)
196
199
  out += '[key: string]: any;\n';
@@ -199,30 +202,30 @@ async function _generateComplexTypeCode(currentFile, dataType, intent) {
199
202
  /**
200
203
  *
201
204
  */
202
- async function _generateSimpleTypeCode(currentFile, dataType, intent) {
203
- let out = intent === 'root' ? `type ${dataType.name} = ` : '';
204
- const nameMapping = dataType.nameMappings.js || 'any';
205
- out += nameMapping === 'Date' ? 'string' : nameMapping;
206
- return intent === 'root' ? out + ';' : out;
207
- }
208
- /**
209
- *
210
- */
211
- async function _generateMixinTypeCode(currentFile, dataType, intent) {
212
- const outArray = [];
213
- for (const t of dataType.types) {
214
- const x = await this.generateDataType(t, 'typeDef', currentFile);
215
- if (x.kind === 'embedded') {
216
- outArray.push(x.code.includes('|') ? '(' + x.code + ')' : x.code);
205
+ async function _generateEnumTypeCode(currentFile, dataType, intent) {
206
+ if (intent === 'root') {
207
+ let out = `enum ${dataType.name} {\n\t`;
208
+ for (const [value, info] of Object.entries(dataType.attributes)) {
209
+ // Print JSDoc
210
+ let jsDoc = '';
211
+ if (dataType.attributes[value].description)
212
+ jsDoc += ` * ${dataType.attributes[value].description}\n`;
213
+ if (jsDoc)
214
+ out += `/**\n${jsDoc} */\n`;
215
+ out +=
216
+ `${info.alias || value} = ` +
217
+ (typeof value === 'number'
218
+ ? value
219
+ : "'" + String(value).replace("'", "\\'") + "'");
220
+ out += ',\n\n';
217
221
  }
218
- else
219
- outArray.push(x.typeName);
222
+ return out + '\b}';
220
223
  }
221
- if (intent === 'root')
222
- return `type ${dataType.name} = ${outArray.join(' & ')}`;
223
- if (intent === 'extends')
224
- return outArray.join(', ');
225
- return outArray.join(' & ');
224
+ return ('(' +
225
+ Object.keys(dataType.attributes)
226
+ .map(t => `'${t}'`)
227
+ .join(' | ') +
228
+ ')');
226
229
  }
227
230
  /**
228
231
  *
@@ -282,3 +285,54 @@ async function _generateMappedTypeCode(currentFile, dataType, intent) {
282
285
  }
283
286
  return out;
284
287
  }
288
+ /**
289
+ *
290
+ */
291
+ async function _generateMixinTypeCode(currentFile, dataType, intent) {
292
+ const outArray = [];
293
+ for (const t of dataType.types) {
294
+ const x = await this.generateDataType(t, 'typeDef', currentFile);
295
+ if (x.kind === 'embedded') {
296
+ outArray.push(x.code.includes('|') || x.code.includes('&')
297
+ ? '(' + x.code + ')'
298
+ : x.code);
299
+ }
300
+ else
301
+ outArray.push(x.typeName);
302
+ }
303
+ if (intent === 'root')
304
+ return `type ${dataType.name} = ${outArray.join(' & ')}`;
305
+ if (intent === 'extends')
306
+ return outArray.join(', ');
307
+ return outArray.join(' & ');
308
+ }
309
+ /**
310
+ *
311
+ */
312
+ async function _generateSimpleTypeCode(currentFile, dataType, intent) {
313
+ let out = intent === 'root' ? `type ${dataType.name} = ` : '';
314
+ const nameMapping = dataType.nameMappings.js || 'any';
315
+ out += nameMapping === 'Date' ? 'string' : nameMapping;
316
+ return intent === 'root' ? out + ';' : out;
317
+ }
318
+ /**
319
+ *
320
+ */
321
+ async function _generateUnionTypeCode(currentFile, dataType, intent) {
322
+ if (intent === 'extends')
323
+ throw new TypeError('Union types can not be extended');
324
+ const outArray = [];
325
+ for (const t of dataType.types) {
326
+ const x = await this.generateDataType(t, 'typeDef', currentFile);
327
+ if (x.kind === 'embedded') {
328
+ outArray.push(x.code.includes('|') || x.code.includes('&')
329
+ ? '(' + x.code + ')'
330
+ : x.code);
331
+ }
332
+ else
333
+ outArray.push(x.typeName);
334
+ }
335
+ if (intent === 'root')
336
+ return `type ${dataType.name} = ${outArray.join(' | ')}`;
337
+ return outArray.join(' | ');
338
+ }
@@ -43,7 +43,7 @@ async function generateDocument(document, options) {
43
43
  ? (0, putil_varhelpers_1.pascalCase)(ref.info.title)
44
44
  : `Reference${refIdGenerator++}`);
45
45
  generator._documentRoot = '/references/' + typesNamespace;
46
- generator._typesRoot = node_path_1.default.join(generator._documentRoot, 'models');
46
+ generator._typesRoot = node_path_1.default.posix.join(generator._documentRoot, 'models');
47
47
  generator._typesNamespace =
48
48
  !this.options.referenceNamespaces || ref[common_1.BUILTIN] ? '' : typesNamespace;
49
49
  await generator.generateDocument(ref, {
@@ -105,11 +105,13 @@ exports.TsGenerator = TsGenerator;
105
105
  TsGenerator.prototype.generateDocument = generate_document_js_1.generateDocument;
106
106
  TsGenerator.prototype.generateDataType = generate_data_type_js_1.generateDataType;
107
107
  TsGenerator.prototype._generateTypeCode = generate_data_type_js_1._generateTypeCode;
108
- TsGenerator.prototype._generateEnumTypeCode = generate_data_type_js_1._generateEnumTypeCode;
108
+ TsGenerator.prototype._generateArrayTypeCode = generate_data_type_js_1._generateArrayTypeCode;
109
109
  TsGenerator.prototype._generateComplexTypeCode = generate_data_type_js_1._generateComplexTypeCode;
110
- TsGenerator.prototype._generateSimpleTypeCode = generate_data_type_js_1._generateSimpleTypeCode;
110
+ TsGenerator.prototype._generateEnumTypeCode = generate_data_type_js_1._generateEnumTypeCode;
111
111
  TsGenerator.prototype._generateMappedTypeCode = generate_data_type_js_1._generateMappedTypeCode;
112
112
  TsGenerator.prototype._generateMixinTypeCode = generate_data_type_js_1._generateMixinTypeCode;
113
+ TsGenerator.prototype._generateSimpleTypeCode = generate_data_type_js_1._generateSimpleTypeCode;
114
+ TsGenerator.prototype._generateUnionTypeCode = generate_data_type_js_1._generateUnionTypeCode;
113
115
  TsGenerator.prototype.generateHttpApi = generate_http_api_js_1.generateHttpApi;
114
116
  TsGenerator.prototype.generateHttpController = generate_http_controller_js_1.generateHttpController;
115
117
  })();
@@ -1,5 +1,5 @@
1
1
  import path from 'node:path';
2
- import { ComplexType, EnumType, MappedType, MixinType, SimpleType, } from '@opra/common';
2
+ import { ArrayType, ComplexType, EnumType, MappedType, MixinType, SimpleType, UnionType, } from '@opra/common';
3
3
  import { CodeBlock } from '../../code-block.js';
4
4
  import { wrapJSDocString } from '../utils/string-utils.js';
5
5
  const internalTypeNames = [
@@ -75,14 +75,14 @@ export async function _generateTypeCode(currentFile, dataType, intent) {
75
75
  if (intent === 'root' && !dataType.name) {
76
76
  throw new TypeError(`Name required to generate data type code to root intent`);
77
77
  }
78
- if (dataType instanceof EnumType) {
79
- return await this._generateEnumTypeCode(currentFile, dataType, intent);
78
+ if (dataType instanceof ArrayType) {
79
+ return await this._generateArrayTypeCode(currentFile, dataType, intent);
80
80
  }
81
81
  if (dataType instanceof ComplexType) {
82
82
  return await this._generateComplexTypeCode(currentFile, dataType, intent);
83
83
  }
84
- if (dataType instanceof SimpleType) {
85
- return await this._generateSimpleTypeCode(currentFile, dataType, intent);
84
+ if (dataType instanceof EnumType) {
85
+ return await this._generateEnumTypeCode(currentFile, dataType, intent);
86
86
  }
87
87
  if (dataType instanceof MappedType) {
88
88
  return await this._generateMappedTypeCode(currentFile, dataType, intent);
@@ -90,36 +90,34 @@ export async function _generateTypeCode(currentFile, dataType, intent) {
90
90
  if (dataType instanceof MixinType) {
91
91
  return await this._generateMixinTypeCode(currentFile, dataType, intent);
92
92
  }
93
+ if (dataType instanceof SimpleType) {
94
+ return await this._generateSimpleTypeCode(currentFile, dataType, intent);
95
+ }
96
+ if (dataType instanceof UnionType) {
97
+ return await this._generateUnionTypeCode(currentFile, dataType, intent);
98
+ }
93
99
  /* istanbul ignore next */
94
100
  throw new TypeError(`${dataType.kind} data types can not be directly exported`);
95
101
  }
96
102
  /**
97
103
  *
98
104
  */
99
- export async function _generateEnumTypeCode(currentFile, dataType, intent) {
100
- if (intent === 'root') {
101
- let out = `enum ${dataType.name} {\n\t`;
102
- for (const [value, info] of Object.entries(dataType.attributes)) {
103
- // Print JSDoc
104
- let jsDoc = '';
105
- if (dataType.attributes[value].description)
106
- jsDoc += ` * ${dataType.attributes[value].description}\n`;
107
- if (jsDoc)
108
- out += `/**\n${jsDoc} */\n`;
109
- out +=
110
- `${info.alias || value} = ` +
111
- (typeof value === 'number'
112
- ? value
113
- : "'" + String(value).replace("'", "\\'") + "'");
114
- out += ',\n\n';
115
- }
116
- return out + '\b}';
105
+ export async function _generateArrayTypeCode(currentFile, dataType, intent) {
106
+ if (intent === 'extends')
107
+ throw new TypeError('Array types can not be extended');
108
+ let out = '';
109
+ const x = await this.generateDataType(dataType.type, 'typeDef', currentFile);
110
+ if (x.kind === 'embedded') {
111
+ out =
112
+ x.code.includes('|') || x.code.includes('&')
113
+ ? '(' + x.code + ')'
114
+ : x.code;
117
115
  }
118
- return ('(' +
119
- Object.keys(dataType.attributes)
120
- .map(t => `'${t}'`)
121
- .join(' | ') +
122
- ')');
116
+ else
117
+ out = x.typeName;
118
+ if (intent === 'root')
119
+ return `type ${dataType.name} = ${out}[]`;
120
+ return `${out}[]`;
123
121
  }
124
122
  /**
125
123
  *
@@ -170,17 +168,20 @@ export async function _generateComplexTypeCode(currentFile, dataType, intent) {
170
168
  if (field.readonly)
171
169
  out += 'readonly ';
172
170
  out += `${field.name}${field.required ? '' : '?'}: `;
171
+ let typ = '';
173
172
  if (field.fixed) {
174
173
  const t = typeof field.fixed;
175
- out += `${t === 'number' || t === 'boolean' || t === 'bigint' ? field.fixed : "'" + field.fixed + "'"}\n`;
174
+ typ = `${t === 'number' || t === 'boolean' || t === 'bigint' ? field.fixed : "'" + field.fixed + "'"}\n`;
176
175
  }
177
176
  else {
178
177
  const x = await this.generateDataType(field.type, 'typeDef', currentFile);
179
- const s = x.kind === 'embedded' ? x.code : x.typeName;
180
- if (field.isArray) {
181
- out += /[a-zA-Z]\w*/.test(s) ? s + '[]' : '(' + s + ')[]';
182
- }
178
+ typ = x.kind === 'embedded' ? x.code : x.typeName;
179
+ }
180
+ if (field.isArray && !(field.type instanceof ArrayType)) {
181
+ out += /[a-zA-Z]\w*/.test(typ) ? typ + '[];\n' : '(' + typ + ')[];\n';
183
182
  }
183
+ else
184
+ out += typ + ';\n';
184
185
  }
185
186
  if (dataType.additionalFields)
186
187
  out += '[key: string]: any;\n';
@@ -189,30 +190,30 @@ export async function _generateComplexTypeCode(currentFile, dataType, intent) {
189
190
  /**
190
191
  *
191
192
  */
192
- export async function _generateSimpleTypeCode(currentFile, dataType, intent) {
193
- let out = intent === 'root' ? `type ${dataType.name} = ` : '';
194
- const nameMapping = dataType.nameMappings.js || 'any';
195
- out += nameMapping === 'Date' ? 'string' : nameMapping;
196
- return intent === 'root' ? out + ';' : out;
197
- }
198
- /**
199
- *
200
- */
201
- export async function _generateMixinTypeCode(currentFile, dataType, intent) {
202
- const outArray = [];
203
- for (const t of dataType.types) {
204
- const x = await this.generateDataType(t, 'typeDef', currentFile);
205
- if (x.kind === 'embedded') {
206
- outArray.push(x.code.includes('|') ? '(' + x.code + ')' : x.code);
193
+ export async function _generateEnumTypeCode(currentFile, dataType, intent) {
194
+ if (intent === 'root') {
195
+ let out = `enum ${dataType.name} {\n\t`;
196
+ for (const [value, info] of Object.entries(dataType.attributes)) {
197
+ // Print JSDoc
198
+ let jsDoc = '';
199
+ if (dataType.attributes[value].description)
200
+ jsDoc += ` * ${dataType.attributes[value].description}\n`;
201
+ if (jsDoc)
202
+ out += `/**\n${jsDoc} */\n`;
203
+ out +=
204
+ `${info.alias || value} = ` +
205
+ (typeof value === 'number'
206
+ ? value
207
+ : "'" + String(value).replace("'", "\\'") + "'");
208
+ out += ',\n\n';
207
209
  }
208
- else
209
- outArray.push(x.typeName);
210
+ return out + '\b}';
210
211
  }
211
- if (intent === 'root')
212
- return `type ${dataType.name} = ${outArray.join(' & ')}`;
213
- if (intent === 'extends')
214
- return outArray.join(', ');
215
- return outArray.join(' & ');
212
+ return ('(' +
213
+ Object.keys(dataType.attributes)
214
+ .map(t => `'${t}'`)
215
+ .join(' | ') +
216
+ ')');
216
217
  }
217
218
  /**
218
219
  *
@@ -272,3 +273,54 @@ export async function _generateMappedTypeCode(currentFile, dataType, intent) {
272
273
  }
273
274
  return out;
274
275
  }
276
+ /**
277
+ *
278
+ */
279
+ export async function _generateMixinTypeCode(currentFile, dataType, intent) {
280
+ const outArray = [];
281
+ for (const t of dataType.types) {
282
+ const x = await this.generateDataType(t, 'typeDef', currentFile);
283
+ if (x.kind === 'embedded') {
284
+ outArray.push(x.code.includes('|') || x.code.includes('&')
285
+ ? '(' + x.code + ')'
286
+ : x.code);
287
+ }
288
+ else
289
+ outArray.push(x.typeName);
290
+ }
291
+ if (intent === 'root')
292
+ return `type ${dataType.name} = ${outArray.join(' & ')}`;
293
+ if (intent === 'extends')
294
+ return outArray.join(', ');
295
+ return outArray.join(' & ');
296
+ }
297
+ /**
298
+ *
299
+ */
300
+ export async function _generateSimpleTypeCode(currentFile, dataType, intent) {
301
+ let out = intent === 'root' ? `type ${dataType.name} = ` : '';
302
+ const nameMapping = dataType.nameMappings.js || 'any';
303
+ out += nameMapping === 'Date' ? 'string' : nameMapping;
304
+ return intent === 'root' ? out + ';' : out;
305
+ }
306
+ /**
307
+ *
308
+ */
309
+ export async function _generateUnionTypeCode(currentFile, dataType, intent) {
310
+ if (intent === 'extends')
311
+ throw new TypeError('Union types can not be extended');
312
+ const outArray = [];
313
+ for (const t of dataType.types) {
314
+ const x = await this.generateDataType(t, 'typeDef', currentFile);
315
+ if (x.kind === 'embedded') {
316
+ outArray.push(x.code.includes('|') || x.code.includes('&')
317
+ ? '(' + x.code + ')'
318
+ : x.code);
319
+ }
320
+ else
321
+ outArray.push(x.typeName);
322
+ }
323
+ if (intent === 'root')
324
+ return `type ${dataType.name} = ${outArray.join(' | ')}`;
325
+ return outArray.join(' | ');
326
+ }
@@ -39,7 +39,7 @@ export async function generateDocument(document, options) {
39
39
  ? pascalCase(ref.info.title)
40
40
  : `Reference${refIdGenerator++}`);
41
41
  generator._documentRoot = '/references/' + typesNamespace;
42
- generator._typesRoot = path.join(generator._documentRoot, 'models');
42
+ generator._typesRoot = path.posix.join(generator._documentRoot, 'models');
43
43
  generator._typesNamespace =
44
44
  !this.options.referenceNamespaces || ref[BUILTIN] ? '' : typesNamespace;
45
45
  await generator.generateDocument(ref, {
@@ -5,7 +5,7 @@ import process from 'node:process';
5
5
  import colors from 'ansi-colors';
6
6
  import { FileWriter } from '../file-writer.js';
7
7
  import { cleanDirectory } from './generators/clean-directory.js';
8
- import { _generateComplexTypeCode, _generateEnumTypeCode, _generateMappedTypeCode, _generateMixinTypeCode, _generateSimpleTypeCode, _generateTypeCode, generateDataType, } from './generators/generate-data-type.js';
8
+ import { _generateArrayTypeCode, _generateComplexTypeCode, _generateEnumTypeCode, _generateMappedTypeCode, _generateMixinTypeCode, _generateSimpleTypeCode, _generateTypeCode, _generateUnionTypeCode, generateDataType, } from './generators/generate-data-type.js';
9
9
  import { generateDocument } from './generators/generate-document.js';
10
10
  import { generateHttpApi } from './generators/generate-http-api.js';
11
11
  import { generateHttpController } from './generators/generate-http-controller.js';
@@ -100,11 +100,13 @@ export class TsGenerator extends EventEmitter {
100
100
  TsGenerator.prototype.generateDocument = generateDocument;
101
101
  TsGenerator.prototype.generateDataType = generateDataType;
102
102
  TsGenerator.prototype._generateTypeCode = _generateTypeCode;
103
- TsGenerator.prototype._generateEnumTypeCode = _generateEnumTypeCode;
103
+ TsGenerator.prototype._generateArrayTypeCode = _generateArrayTypeCode;
104
104
  TsGenerator.prototype._generateComplexTypeCode = _generateComplexTypeCode;
105
- TsGenerator.prototype._generateSimpleTypeCode = _generateSimpleTypeCode;
105
+ TsGenerator.prototype._generateEnumTypeCode = _generateEnumTypeCode;
106
106
  TsGenerator.prototype._generateMappedTypeCode = _generateMappedTypeCode;
107
107
  TsGenerator.prototype._generateMixinTypeCode = _generateMixinTypeCode;
108
+ TsGenerator.prototype._generateSimpleTypeCode = _generateSimpleTypeCode;
109
+ TsGenerator.prototype._generateUnionTypeCode = _generateUnionTypeCode;
108
110
  TsGenerator.prototype.generateHttpApi = generateHttpApi;
109
111
  TsGenerator.prototype.generateHttpController = generateHttpController;
110
112
  })();
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@opra/cli",
3
- "version": "1.19.5",
3
+ "version": "1.20.0",
4
4
  "description": "Opra CLI tools",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
8
  "@browsery/type-is": "^2.0.1",
9
9
  "ansi-colors": "^4.1.3",
10
- "commander": "^14.0.1",
10
+ "commander": "^14.0.2",
11
11
  "js-string-escape": "^1.0.1",
12
12
  "putil-flattentext": "^2.1.1",
13
13
  "putil-varhelpers": "^1.6.5",
14
14
  "tslib": "^2.8.1"
15
15
  },
16
16
  "peerDependencies": {
17
- "@opra/client": "^1.19.5",
18
- "@opra/common": "^1.19.5"
17
+ "@opra/client": "^1.20.0",
18
+ "@opra/common": "^1.20.0"
19
19
  },
20
20
  "type": "module",
21
21
  "exports": {
@@ -1,4 +1,4 @@
1
- import { ComplexType, DataType, EnumType, MappedType, MixinType, SimpleType } from '@opra/common';
1
+ import { ArrayType, ComplexType, DataType, EnumType, MappedType, MixinType, SimpleType, UnionType } from '@opra/common';
2
2
  import { TsFile } from '../ts-file.js';
3
3
  import type { TsGenerator } from '../ts-generator';
4
4
  type Intent = 'root' | 'extends' | 'typeDef';
@@ -21,7 +21,7 @@ export declare function _generateTypeCode(this: TsGenerator, currentFile: TsFile
21
21
  /**
22
22
  *
23
23
  */
24
- export declare function _generateEnumTypeCode(this: TsGenerator, currentFile: TsFile, dataType: EnumType, intent?: Intent): Promise<string>;
24
+ export declare function _generateArrayTypeCode(this: TsGenerator, currentFile: TsFile, dataType: ArrayType, intent?: Intent): Promise<string>;
25
25
  /**
26
26
  *
27
27
  */
@@ -29,7 +29,11 @@ export declare function _generateComplexTypeCode(this: TsGenerator, currentFile:
29
29
  /**
30
30
  *
31
31
  */
32
- export declare function _generateSimpleTypeCode(this: TsGenerator, currentFile: TsFile, dataType: SimpleType, intent?: Intent): Promise<string>;
32
+ export declare function _generateEnumTypeCode(this: TsGenerator, currentFile: TsFile, dataType: EnumType, intent?: Intent): Promise<string>;
33
+ /**
34
+ *
35
+ */
36
+ export declare function _generateMappedTypeCode(this: TsGenerator, currentFile: TsFile, dataType: MappedType, intent?: Intent): Promise<string>;
33
37
  /**
34
38
  *
35
39
  */
@@ -37,5 +41,9 @@ export declare function _generateMixinTypeCode(this: TsGenerator, currentFile: T
37
41
  /**
38
42
  *
39
43
  */
40
- export declare function _generateMappedTypeCode(this: TsGenerator, currentFile: TsFile, dataType: MappedType, intent?: Intent): Promise<string>;
44
+ export declare function _generateSimpleTypeCode(this: TsGenerator, currentFile: TsFile, dataType: SimpleType, intent?: Intent): Promise<string>;
45
+ /**
46
+ *
47
+ */
48
+ export declare function _generateUnionTypeCode(this: TsGenerator, currentFile: TsFile, dataType: UnionType, intent?: Intent): Promise<string>;
41
49
  export {};
@@ -3,7 +3,7 @@ import { ApiDocument } from '@opra/common';
3
3
  import type { IFileWriter } from '../interfaces/file-writer.interface.js';
4
4
  import type { ILogger } from '../interfaces/logger.interface.js';
5
5
  import { cleanDirectory } from './generators/clean-directory.js';
6
- import { _generateComplexTypeCode, _generateEnumTypeCode, _generateMappedTypeCode, _generateMixinTypeCode, _generateSimpleTypeCode, _generateTypeCode, generateDataType } from './generators/generate-data-type.js';
6
+ import { _generateArrayTypeCode, _generateComplexTypeCode, _generateEnumTypeCode, _generateMappedTypeCode, _generateMixinTypeCode, _generateSimpleTypeCode, _generateTypeCode, _generateUnionTypeCode, generateDataType } from './generators/generate-data-type.js';
7
7
  import { generateDocument } from './generators/generate-document.js';
8
8
  import { generateHttpApi } from './generators/generate-http-api.js';
9
9
  import { generateHttpController } from './generators/generate-http-controller.js';
@@ -31,11 +31,13 @@ export declare class TsGenerator extends EventEmitter {
31
31
  protected generateDocument: typeof generateDocument;
32
32
  protected generateDataType: typeof generateDataType;
33
33
  protected _generateTypeCode: typeof _generateTypeCode;
34
- protected _generateEnumTypeCode: typeof _generateEnumTypeCode;
34
+ protected _generateArrayTypeCode: typeof _generateArrayTypeCode;
35
35
  protected _generateComplexTypeCode: typeof _generateComplexTypeCode;
36
- protected _generateSimpleTypeCode: typeof _generateSimpleTypeCode;
36
+ protected _generateEnumTypeCode: typeof _generateEnumTypeCode;
37
37
  protected _generateMappedTypeCode: typeof _generateMappedTypeCode;
38
38
  protected _generateMixinTypeCode: typeof _generateMixinTypeCode;
39
+ protected _generateSimpleTypeCode: typeof _generateSimpleTypeCode;
40
+ protected _generateUnionTypeCode: typeof _generateUnionTypeCode;
39
41
  protected generateHttpApi: typeof generateHttpApi;
40
42
  protected generateHttpController: typeof generateHttpController;
41
43
  protected _documentRoot: string;