nesoi 3.0.21 → 3.1.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.
- package/lib/compiler/apps/monolyth/stages/4_dump_modules_stage.js +8 -0
- package/lib/compiler/compiler.js +1 -1
- package/lib/compiler/elements/bucket.element.d.ts +2 -1
- package/lib/compiler/elements/bucket.element.js +68 -122
- package/lib/compiler/elements/element.js +2 -1
- package/lib/compiler/elements/externals.element.js +3 -0
- package/lib/compiler/elements/message.element.js +34 -57
- package/lib/compiler/elements/queue.element.js +1 -1
- package/lib/compiler/helpers/dump_helpers.d.ts +2 -0
- package/lib/compiler/helpers/dump_helpers.js +12 -2
- package/lib/compiler/stages/4_build_schemas_stage.js +12 -0
- package/lib/compiler/stages/5_inject_ts_stage.js +4 -1
- package/lib/compiler/stages/7_dump_stage.js +7 -1
- package/lib/compiler/treeshake.js +4 -2
- package/lib/compiler/typescript/bridge/extract.js +37 -107
- package/lib/compiler/typescript/bridge/inject.d.ts +1 -1
- package/lib/compiler/typescript/bridge/inject.js +73 -45
- package/lib/compiler/typescript/bridge/organize.js +9 -5
- package/lib/compiler/typescript/typescript_compiler.d.ts +4 -6
- package/lib/compiler/typescript/typescript_compiler.js +139 -75
- package/lib/elements/blocks/block.builder.d.ts +1 -10
- package/lib/elements/blocks/block.builder.js +0 -32
- package/lib/elements/blocks/job/internal/resource_job.builder.d.ts +3 -21
- package/lib/elements/blocks/job/job.builder.d.ts +6 -20
- package/lib/elements/blocks/job/job.builder.js +0 -4
- package/lib/elements/blocks/machine/machine.builder.d.ts +5 -14
- package/lib/elements/blocks/machine/machine.builder.js +2 -2
- package/lib/elements/blocks/queue/queue.builder.d.ts +6 -15
- package/lib/elements/blocks/queue/queue.builder.js +2 -2
- package/lib/elements/edge/externals/externals.builder.d.ts +2 -0
- package/lib/elements/edge/externals/externals.builder.js +6 -1
- package/lib/elements/edge/externals/externals.schema.d.ts +2 -1
- package/lib/elements/edge/externals/externals.schema.js +3 -1
- package/lib/elements/entities/bucket/adapters/memory.nql.js +1 -1
- package/lib/elements/entities/bucket/bucket.builder.d.ts +6 -4
- package/lib/elements/entities/bucket/bucket.js +7 -16
- package/lib/elements/entities/bucket/bucket.schema.d.ts +2 -1
- package/lib/elements/entities/bucket/graph/bucket_graph.infer.d.ts +7 -5
- package/lib/elements/entities/bucket/graph/bucket_graph_link.builder.d.ts +2 -1
- package/lib/elements/entities/bucket/model/bucket_model.builder.d.ts +1 -1
- package/lib/elements/entities/bucket/model/bucket_model.convert.d.ts +1 -1
- package/lib/elements/entities/bucket/model/bucket_model.convert.js +4 -4
- package/lib/elements/entities/bucket/model/bucket_model.infer.d.ts +45 -9
- package/lib/elements/entities/bucket/model/bucket_model.schema.d.ts +5 -6
- package/lib/elements/entities/bucket/model/bucket_model.schema.js +64 -21
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.d.ts +88 -55
- package/lib/elements/entities/bucket/model/bucket_model_field.builder.js +22 -30
- package/lib/elements/entities/bucket/query/nql.schema.d.ts +13 -10
- package/lib/elements/entities/bucket/query/nql_compiler.js +46 -21
- package/lib/elements/entities/bucket/view/bucket_view.builder.js +1 -1
- package/lib/elements/entities/bucket/view/bucket_view.d.ts +19 -0
- package/lib/elements/entities/bucket/view/bucket_view.js +230 -108
- package/lib/elements/entities/bucket/view/bucket_view.schema.d.ts +5 -10
- package/lib/elements/entities/bucket/view/bucket_view.schema.js +3 -5
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.d.ts +16 -12
- package/lib/elements/entities/bucket/view/bucket_view_field.builder.js +55 -40
- package/lib/elements/entities/message/message.builder.d.ts +1 -11
- package/lib/elements/entities/message/message.infer.d.ts +6 -30
- package/lib/elements/entities/message/message.schema.js +2 -2
- package/lib/elements/entities/message/template/message_template.builder.js +1 -1
- package/lib/elements/entities/message/template/message_template.schema.d.ts +10 -15
- package/lib/elements/entities/message/template/message_template.schema.js +29 -12
- package/lib/elements/entities/message/template/message_template_field.builder.d.ts +45 -209
- package/lib/elements/entities/message/template/message_template_field.builder.js +69 -85
- package/lib/elements/entities/message/template/message_template_parser.js +50 -65
- package/lib/engine/apps/inline.app.js +1 -0
- package/lib/engine/data/trash.js +7 -7
- package/lib/engine/data/tree.d.ts +3 -0
- package/lib/engine/data/tree.js +36 -0
- package/lib/engine/util/parse.d.ts +22 -14
- package/lib/engine/util/parse.js +18 -3
- package/lib/engine/util/type.d.ts +3 -0
- package/package.json +1 -1
- package/tools/joaquin/bucket.d.ts +9 -0
- package/tools/joaquin/bucket.js +49 -0
- package/tools/joaquin/message.d.ts +2 -1
- package/tools/joaquin/message.js +9 -2
- package/tools/joaquin/mock.d.ts +1 -0
- package/tools/joaquin/mock.js +13 -5
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -75,6 +75,14 @@ class DumpModulesStage {
|
|
|
75
75
|
}
|
|
76
76
|
str += '\n },';
|
|
77
77
|
}
|
|
78
|
+
if (Object.keys(externals.messages).length) {
|
|
79
|
+
str += '\n messages: {';
|
|
80
|
+
for (const b in externals.messages) {
|
|
81
|
+
const dep = externals.messages[b];
|
|
82
|
+
str += `\n '${b}': ${JSON.stringify(dep, undefined, 2).replace(/\n/g, '\n ')},`;
|
|
83
|
+
}
|
|
84
|
+
str += '\n },';
|
|
85
|
+
}
|
|
78
86
|
if (Object.keys(externals.jobs).length) {
|
|
79
87
|
str += '\n jobs: {\n';
|
|
80
88
|
for (const b in externals.jobs) {
|
package/lib/compiler/compiler.js
CHANGED
|
@@ -14,9 +14,9 @@ const _4_build_schemas_stage_1 = require("./stages/4_build_schemas_stage");
|
|
|
14
14
|
const _5_inject_ts_stage_1 = require("./stages/5_inject_ts_stage");
|
|
15
15
|
const _6_build_elements_stage_1 = require("./stages/6_build_elements_stage");
|
|
16
16
|
const _7_dump_stage_1 = require("./stages/7_dump_stage");
|
|
17
|
+
const _8_diagnose_stage_1 = require("./stages/8_diagnose_stage");
|
|
17
18
|
const console_1 = __importDefault(require("../engine/util/console"));
|
|
18
19
|
const log_1 = require("../engine/util/log");
|
|
19
|
-
const _8_diagnose_stage_1 = require("./stages/8_diagnose_stage");
|
|
20
20
|
const fs_1 = __importDefault(require("fs"));
|
|
21
21
|
class Compiler {
|
|
22
22
|
constructor(space, config) {
|
|
@@ -14,7 +14,8 @@ export declare class BucketElement extends Element<$Bucket> {
|
|
|
14
14
|
private buildModelFieldType;
|
|
15
15
|
private buildCompositionType;
|
|
16
16
|
buildModelType(fields?: $BucketModelFields): ObjTypeAsObj;
|
|
17
|
-
|
|
17
|
+
buildModelpath(fields?: $BucketModelFields): Record<string, TypeAsObj>;
|
|
18
|
+
buildQuerypath(fields?: $BucketModelFields): Record<string, TypeAsObj>;
|
|
18
19
|
private buildGraphType;
|
|
19
20
|
private buildViewsType;
|
|
20
21
|
private buildViewType;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BucketElement = void 0;
|
|
4
|
+
const bucket_model_schema_1 = require("../../elements/entities/bucket/model/bucket_model.schema");
|
|
4
5
|
const element_1 = require("./element");
|
|
5
6
|
const name_helpers_1 = require("../helpers/name_helpers");
|
|
6
7
|
const dependency_1 = require("../../engine/dependency");
|
|
7
|
-
const tree_1 = require("../../engine/data/tree");
|
|
8
8
|
const dump_helpers_1 = require("../helpers/dump_helpers");
|
|
9
9
|
class BucketElement extends element_1.Element {
|
|
10
10
|
// Prepare
|
|
11
11
|
prepare() {
|
|
12
12
|
this.schema['#data'] = element_1.Element.Any;
|
|
13
|
-
this.schema['#
|
|
13
|
+
this.schema['#modelpath'] = element_1.Element.Any;
|
|
14
|
+
this.schema['#querypath'] = element_1.Element.Any;
|
|
14
15
|
this.schema['#composition'] = element_1.Element.Any;
|
|
15
16
|
this.schema['#defaults'] = element_1.Element.Any;
|
|
16
17
|
this.prepareGraph(this.schema.graph.links);
|
|
@@ -34,9 +35,6 @@ class BucketElement extends element_1.Element {
|
|
|
34
35
|
if (field.children) {
|
|
35
36
|
this.prepareViewFields(field.children);
|
|
36
37
|
}
|
|
37
|
-
else {
|
|
38
|
-
field.children = element_1.Element.Never;
|
|
39
|
-
}
|
|
40
38
|
});
|
|
41
39
|
}
|
|
42
40
|
// Imports
|
|
@@ -48,13 +46,16 @@ class BucketElement extends element_1.Element {
|
|
|
48
46
|
buildType() {
|
|
49
47
|
const model = this.buildModelType();
|
|
50
48
|
const bucket = dump_helpers_1.DumpHelpers.dumpValueToType(this.schema, {
|
|
49
|
+
model: () => 'any', // = this.buildModelType(),
|
|
51
50
|
graph: () => this.buildGraphType(),
|
|
52
|
-
views: () => this.buildViewsType(
|
|
51
|
+
views: () => this.buildViewsType()
|
|
53
52
|
});
|
|
54
|
-
const
|
|
53
|
+
const modelpath = this.buildModelpath();
|
|
54
|
+
const querypath = this.buildQuerypath();
|
|
55
55
|
const composition = this.buildCompositionType();
|
|
56
56
|
Object.assign(bucket, {
|
|
57
|
-
'#
|
|
57
|
+
'#modelpath': modelpath,
|
|
58
|
+
'#querypath': querypath,
|
|
58
59
|
'#composition': composition,
|
|
59
60
|
'#defaults': bucket.defaults || '{}',
|
|
60
61
|
'#data': this.highName
|
|
@@ -64,7 +65,7 @@ class BucketElement extends element_1.Element {
|
|
|
64
65
|
bucket
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
|
-
buildModelFieldType(field
|
|
68
|
+
buildModelFieldType(field) {
|
|
68
69
|
let type = 'unknown';
|
|
69
70
|
if (field.type === 'boolean') {
|
|
70
71
|
type = 'boolean';
|
|
@@ -116,40 +117,27 @@ class BucketElement extends element_1.Element {
|
|
|
116
117
|
}
|
|
117
118
|
else if (field.type === 'dict') {
|
|
118
119
|
type = this.buildModelType({
|
|
119
|
-
'[x in string]': field.children
|
|
120
|
+
'[x in string]': field.children['#']
|
|
120
121
|
});
|
|
121
122
|
}
|
|
122
|
-
if (field.
|
|
123
|
-
|
|
123
|
+
else if (field.type === 'list') {
|
|
124
|
+
type = this.buildModelFieldType(field.children['#']);
|
|
124
125
|
if (typeof type === 'object') {
|
|
125
|
-
type.
|
|
126
|
-
}
|
|
127
|
-
else if (typeof orType === 'object') {
|
|
128
|
-
const nonObj = type;
|
|
129
|
-
type = orType;
|
|
130
|
-
type.__or = nonObj;
|
|
126
|
+
type.__array = true;
|
|
131
127
|
}
|
|
132
128
|
else {
|
|
133
|
-
type =
|
|
129
|
+
type = `(${type})[]`;
|
|
134
130
|
}
|
|
135
131
|
}
|
|
136
|
-
if (
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (field.array) {
|
|
146
|
-
if (typeof type === 'object') {
|
|
147
|
-
type.__array = true;
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
type = `(${type})[]`;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
132
|
+
else if (field.type === 'union') {
|
|
133
|
+
const types = Object.values(this.buildModelType(field.children));
|
|
134
|
+
type = dump_helpers_1.DumpHelpers.dumpUnionType(types);
|
|
135
|
+
}
|
|
136
|
+
if (!field.required) {
|
|
137
|
+
type = '('
|
|
138
|
+
+ dump_helpers_1.DumpHelpers.dumpType(type)
|
|
139
|
+
+ ' | null | undefined'
|
|
140
|
+
+ ')';
|
|
153
141
|
}
|
|
154
142
|
return type;
|
|
155
143
|
}
|
|
@@ -174,24 +162,13 @@ class BucketElement extends element_1.Element {
|
|
|
174
162
|
});
|
|
175
163
|
return model;
|
|
176
164
|
}
|
|
177
|
-
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
if (field.children) {
|
|
185
|
-
let nextFields = field.children;
|
|
186
|
-
if ('__dict' in field.children) {
|
|
187
|
-
nextFields = field.children.__dict.children;
|
|
188
|
-
}
|
|
189
|
-
if (nextFields) {
|
|
190
|
-
Object.assign(fieldPaths, this.buildModelFieldNamesType(model[key], nextFields));
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
return fieldPaths;
|
|
165
|
+
buildModelpath(fields = this.schema.model.fields) {
|
|
166
|
+
const modelpath = {};
|
|
167
|
+
return modelpath;
|
|
168
|
+
}
|
|
169
|
+
buildQuerypath(fields = this.schema.model.fields) {
|
|
170
|
+
const querypath = {};
|
|
171
|
+
return querypath;
|
|
195
172
|
}
|
|
196
173
|
buildGraphType() {
|
|
197
174
|
const links = {};
|
|
@@ -208,90 +185,59 @@ class BucketElement extends element_1.Element {
|
|
|
208
185
|
links
|
|
209
186
|
};
|
|
210
187
|
}
|
|
211
|
-
buildViewsType(
|
|
188
|
+
buildViewsType() {
|
|
212
189
|
const views = {};
|
|
213
190
|
Object.entries(this.schema.views).forEach(([key, view]) => {
|
|
214
|
-
views[key] = this.buildViewType(
|
|
191
|
+
views[key] = this.buildViewType(view.fields, key);
|
|
215
192
|
});
|
|
216
193
|
return views;
|
|
217
194
|
}
|
|
218
|
-
buildViewType(
|
|
195
|
+
buildViewType(schema, name) {
|
|
219
196
|
if (!schema) {
|
|
220
197
|
return;
|
|
221
198
|
}
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
children
|
|
230
|
-
|
|
231
|
-
|
|
199
|
+
const buildFields = (fields) => {
|
|
200
|
+
const data = {};
|
|
201
|
+
for (const key in fields) {
|
|
202
|
+
const field = fields[key];
|
|
203
|
+
if (field.scope === 'model' && 'model' in field.meta) {
|
|
204
|
+
const modelFields = bucket_model_schema_1.$BucketModel.getField(this.schema.model, field.meta.model.path);
|
|
205
|
+
const types = [];
|
|
206
|
+
if (!field.children || '__raw' in field.children) {
|
|
207
|
+
types.push(dump_helpers_1.DumpHelpers.dumpUnionType(modelFields.map(f => this.buildModelFieldType(f))));
|
|
208
|
+
}
|
|
209
|
+
// Contains children
|
|
210
|
+
if (field.children) {
|
|
211
|
+
types.push(buildFields(field.children));
|
|
212
|
+
}
|
|
213
|
+
data[key] = dump_helpers_1.DumpHelpers.dumpIntersectionType(types);
|
|
232
214
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
data[key] = `${bucket}['views']['${field.value.graph.view}']['#data']${link.many ? '[]' : ''}${link.optional ? ' | undefined' : ''}`;
|
|
215
|
+
else if (field.scope === 'graph' && 'graph' in field.meta) {
|
|
216
|
+
const link = this.schema.graph.links[field.meta.graph.link];
|
|
217
|
+
const bucket = dependency_1.$Dependency.typeName(link.bucket, this.module);
|
|
218
|
+
if (field.meta.graph.view) {
|
|
219
|
+
data[key] = `${bucket}['views']['${field.meta.graph.view}']['#data']${link.many ? '[]' : ''}${link.optional ? ' | undefined' : ''}`;
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
data[key] = `${bucket}['#data']${link.many ? '[]' : ''}${link.optional ? ' | undefined' : ''}`;
|
|
223
|
+
}
|
|
243
224
|
}
|
|
244
|
-
else {
|
|
245
|
-
data[key] =
|
|
225
|
+
else if (field.scope === 'computed') {
|
|
226
|
+
data[key] = field['#data'];
|
|
246
227
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
children
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
else if (field.scope === 'computed') {
|
|
253
|
-
data[key] = field['#data'];
|
|
254
|
-
fields[key] = {
|
|
255
|
-
'#data': data[key],
|
|
256
|
-
children: 'undefined'
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
else if (field.scope === 'view' || field.scope === 'group') {
|
|
260
|
-
const children = this.buildViewType(model, field.children, field.name);
|
|
261
|
-
data[key] = children['#data'];
|
|
262
|
-
fields[key] = {
|
|
263
|
-
'#data': data[key],
|
|
264
|
-
children: children.fields
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
else if (field.scope === 'drive') {
|
|
268
|
-
fields[key] = {
|
|
269
|
-
'#data': 'string',
|
|
270
|
-
children: 'undefined'
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
const { children, ...f } = field;
|
|
274
|
-
const type = dump_helpers_1.DumpHelpers.dumpValueToType(f, {
|
|
275
|
-
$t: () => dump_helpers_1.DumpHelpers.dumpValueToType('bucket.view.field'),
|
|
276
|
-
value: {
|
|
277
|
-
model: v => ({
|
|
278
|
-
key: dump_helpers_1.DumpHelpers.dumpValueToType(v.key),
|
|
279
|
-
enumOptions: v.enumOptions ? dump_helpers_1.DumpHelpers.dumpValueToType(v.enumOptions) : 'undefined'
|
|
280
|
-
}),
|
|
281
|
-
graph: v => ({
|
|
282
|
-
link: dump_helpers_1.DumpHelpers.dumpValueToType(v.link),
|
|
283
|
-
view: v.view ? dump_helpers_1.DumpHelpers.dumpValueToType(v.view) : 'undefined'
|
|
284
|
-
}),
|
|
285
|
-
drive: v => dump_helpers_1.DumpHelpers.dumpValueToType(v)
|
|
228
|
+
else if (field.scope === 'view' || field.scope === 'group') {
|
|
229
|
+
const children = this.buildViewType(field.children, field.name);
|
|
230
|
+
data[key] = children['#data'];
|
|
286
231
|
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
}
|
|
232
|
+
}
|
|
233
|
+
return data;
|
|
234
|
+
};
|
|
235
|
+
const data = buildFields(schema);
|
|
290
236
|
return {
|
|
291
237
|
$t: dump_helpers_1.DumpHelpers.dumpValueToType('bucket.view'),
|
|
238
|
+
fields: 'any',
|
|
292
239
|
'#data': data,
|
|
293
240
|
name: dump_helpers_1.DumpHelpers.dumpValueToType(name),
|
|
294
|
-
fields: 'any' // TODO: review if this might be needed
|
|
295
241
|
};
|
|
296
242
|
}
|
|
297
243
|
// Dump
|
|
@@ -27,7 +27,8 @@ class Element {
|
|
|
27
27
|
}
|
|
28
28
|
bridgeImports() {
|
|
29
29
|
let imports = '';
|
|
30
|
-
|
|
30
|
+
const uniqueImports = new Set(this.bridge?.imports || []);
|
|
31
|
+
for (const imp of uniqueImports) {
|
|
31
32
|
imports += imp + '\n';
|
|
32
33
|
}
|
|
33
34
|
return imports;
|
|
@@ -33,6 +33,9 @@ class ExternalsElement extends element_1.Element {
|
|
|
33
33
|
Object.values(this.schema.buckets).forEach(ref => {
|
|
34
34
|
externalModules.add(ref.module);
|
|
35
35
|
});
|
|
36
|
+
Object.values(this.schema.messages).forEach(ref => {
|
|
37
|
+
externalModules.add(ref.module);
|
|
38
|
+
});
|
|
36
39
|
Object.values(this.schema.jobs).forEach(ref => {
|
|
37
40
|
externalModules.add(ref.module);
|
|
38
41
|
});
|
|
@@ -124,76 +124,53 @@ class MessageElement extends element_1.Element {
|
|
|
124
124
|
else if (field.type === 'dict') {
|
|
125
125
|
const child = this.buildIO(field.children);
|
|
126
126
|
input[key] = {
|
|
127
|
-
'[x in string]': child.input
|
|
127
|
+
'[x in string]': child.input['#']
|
|
128
128
|
};
|
|
129
129
|
output[key] = {
|
|
130
|
-
'[x in string]': child.output
|
|
130
|
+
'[x in string]': child.output['#']
|
|
131
131
|
};
|
|
132
132
|
}
|
|
133
|
-
else if (field.type === '
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
else {
|
|
138
|
-
input[key] = 'unknown';
|
|
139
|
-
output[key] = 'unknown';
|
|
140
|
-
}
|
|
141
|
-
if (field.or) {
|
|
142
|
-
const orType = buildField(key, field.or, true);
|
|
133
|
+
else if (field.type === 'list') {
|
|
134
|
+
const child = this.buildIO(field.children);
|
|
135
|
+
input[key] = child.input['#'];
|
|
136
|
+
output[key] = child.output['#'];
|
|
143
137
|
if (typeof input[key] === 'object') {
|
|
144
|
-
input[key].
|
|
145
|
-
}
|
|
146
|
-
else if (typeof orType === 'object') {
|
|
147
|
-
const nonObj = input[key];
|
|
148
|
-
input[key] = orType;
|
|
149
|
-
input[key].__or = nonObj;
|
|
138
|
+
input[key].__array = true;
|
|
150
139
|
}
|
|
151
140
|
else {
|
|
152
|
-
input[key] =
|
|
141
|
+
input[key] = `(${input[key]})[]`;
|
|
153
142
|
}
|
|
154
143
|
if (typeof output[key] === 'object') {
|
|
155
|
-
output[key].
|
|
156
|
-
}
|
|
157
|
-
else if (typeof orType === 'object') {
|
|
158
|
-
const nonObj = output[key];
|
|
159
|
-
output[key] = orType;
|
|
160
|
-
output[key].__or = nonObj;
|
|
144
|
+
output[key].__array = true;
|
|
161
145
|
}
|
|
162
146
|
else {
|
|
163
|
-
output[key] =
|
|
147
|
+
output[key] = `(${output[key]})[]`;
|
|
164
148
|
}
|
|
165
149
|
}
|
|
166
|
-
if (
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
if (typeof output[key] === 'object') {
|
|
191
|
-
output[key].__array = true;
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
output[key] = `(${output[key]})[]`;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
150
|
+
else if (field.type === 'union') {
|
|
151
|
+
const child = this.buildIO(field.children);
|
|
152
|
+
input[key] = '(' + Object.values(child.input).map(t => dump_helpers_1.DumpHelpers.dumpType(t)).join(' | ') + ')';
|
|
153
|
+
output[key] = '(' + Object.values(child.output).map(t => dump_helpers_1.DumpHelpers.dumpType(t)).join(' | ') + ')';
|
|
154
|
+
}
|
|
155
|
+
else if (field.type === 'msg') {
|
|
156
|
+
input[key] = 'any';
|
|
157
|
+
output[key] = 'any';
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
input[key] = 'unknown';
|
|
161
|
+
output[key] = 'unknown';
|
|
162
|
+
}
|
|
163
|
+
if (!field.required || field.nullable) {
|
|
164
|
+
input[key] = '('
|
|
165
|
+
+ dump_helpers_1.DumpHelpers.dumpType(input[key])
|
|
166
|
+
+ (!field.required ? ' | undefined' : '')
|
|
167
|
+
+ (field.nullable ? ' | null' : '')
|
|
168
|
+
+ ')';
|
|
169
|
+
output[key] = '('
|
|
170
|
+
+ dump_helpers_1.DumpHelpers.dumpType(output[key])
|
|
171
|
+
+ ((!field.required && field.defaultValue === undefined) ? ' | undefined' : '')
|
|
172
|
+
+ (field.nullable ? ' | null' : '')
|
|
173
|
+
+ ')';
|
|
197
174
|
}
|
|
198
175
|
};
|
|
199
176
|
Object.entries(fields).forEach(([key, field]) => {
|
|
@@ -6,7 +6,7 @@ const dump_helpers_1 = require("../helpers/dump_helpers");
|
|
|
6
6
|
class QueueElement extends element_1.Element {
|
|
7
7
|
prepare() {
|
|
8
8
|
this.schema['#authn'] = element_1.Element.Any;
|
|
9
|
-
this.schema['#input'] = element_1.Element.
|
|
9
|
+
this.schema['#input'] = element_1.Element.Never;
|
|
10
10
|
this.schema['#output'] = element_1.Element.Any;
|
|
11
11
|
}
|
|
12
12
|
buildType() {
|
|
@@ -3,6 +3,8 @@ type TransformTypes = {
|
|
|
3
3
|
[x: string]: TransformTypes | ((v?: any) => TypeAsObj);
|
|
4
4
|
};
|
|
5
5
|
export declare class DumpHelpers {
|
|
6
|
+
static dumpUnionType(types: TypeAsObj[]): string;
|
|
7
|
+
static dumpIntersectionType(types: TypeAsObj[]): string;
|
|
6
8
|
static dumpType(type: TypeAsObj, d?: number): string;
|
|
7
9
|
static dumpSchema(val: any, d?: number): string;
|
|
8
10
|
private static dumpFunction;
|
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DumpHelpers = void 0;
|
|
4
4
|
class DumpHelpers {
|
|
5
|
+
static dumpUnionType(types) {
|
|
6
|
+
if (types.length < 2)
|
|
7
|
+
return this.dumpType(types[0]);
|
|
8
|
+
return '(' + types.map(t => this.dumpType(t)).join(' | ') + ')';
|
|
9
|
+
}
|
|
10
|
+
static dumpIntersectionType(types) {
|
|
11
|
+
if (types.length < 2)
|
|
12
|
+
return this.dumpType(types[0]);
|
|
13
|
+
return '(' + types.map(t => this.dumpType(t)).join(' | ') + ')';
|
|
14
|
+
}
|
|
5
15
|
static dumpType(type, d = 0) {
|
|
6
16
|
const pad0 = ' '.repeat(d);
|
|
7
17
|
const pad1 = ' '.repeat(d + 1);
|
|
@@ -109,8 +119,8 @@ class DumpHelpers {
|
|
|
109
119
|
}
|
|
110
120
|
static dumpFunction(fn, padding = '') {
|
|
111
121
|
// Functions should have been replaced by { __fn: ... } by the Compiler,
|
|
112
|
-
// if
|
|
113
|
-
return `/* TS BRIDGE
|
|
122
|
+
// if not, we try to use the JS version.
|
|
123
|
+
return `/* TS BRIDGE WARN: function not properly extracted from source. Attempting JS version (imports will not work) */ (${fn.toString()}) as any`;
|
|
114
124
|
}
|
|
115
125
|
static dumpValueToType(value, transform = {}, d = 2) {
|
|
116
126
|
if (value === undefined) {
|
|
@@ -17,6 +17,7 @@ class BuildSchemasStage {
|
|
|
17
17
|
log_1.Log.info('compiler', 'stage.build_schemas', 'Building schemas...');
|
|
18
18
|
const t0 = new Date().getTime();
|
|
19
19
|
await this.compiler.tree.traverse('Building schemas ', async (node) => {
|
|
20
|
+
var _a;
|
|
20
21
|
const module = this.compiler.modules[node.module].module;
|
|
21
22
|
if (node.progressive) {
|
|
22
23
|
await module.inject({
|
|
@@ -24,6 +25,17 @@ class BuildSchemasStage {
|
|
|
24
25
|
});
|
|
25
26
|
return;
|
|
26
27
|
}
|
|
28
|
+
// Accummulate imports from depencies
|
|
29
|
+
// (Given that dependencies are built in order)
|
|
30
|
+
node.bridge ?? (node.bridge = { imports: [] });
|
|
31
|
+
(_a = node.bridge).imports ?? (_a.imports = []);
|
|
32
|
+
for (const dep of node.dependencies) {
|
|
33
|
+
// If a dependency is inline and the node is it's root,
|
|
34
|
+
// they already share imports.
|
|
35
|
+
if (dep.node.root == node)
|
|
36
|
+
continue;
|
|
37
|
+
node.bridge.imports.push(...(dep.node.bridge?.imports || []));
|
|
38
|
+
}
|
|
27
39
|
// Inline nodes are built by their root builder
|
|
28
40
|
if (node.isInline) {
|
|
29
41
|
return;
|
|
@@ -19,7 +19,10 @@ class InjectTSStage {
|
|
|
19
19
|
const t0 = new Date().getTime();
|
|
20
20
|
const { tree } = this.compiler;
|
|
21
21
|
const nodes = tree.allNodes();
|
|
22
|
-
|
|
22
|
+
tree.traverse('inject', node => {
|
|
23
|
+
inject_1.TSBridgeInject.inject(this.compiler, nodes, node);
|
|
24
|
+
return Promise.resolve();
|
|
25
|
+
});
|
|
23
26
|
const t = new Date().getTime();
|
|
24
27
|
log_1.Log.debug('compiler', 'stage.inject_ts', `[t: ${(t - t0) / 1000} ms]`);
|
|
25
28
|
log_1.Log.trace('compiler', 'stage.inject_ts', 'Finished injecting TS code');
|
|
@@ -38,9 +38,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.DumpStage = void 0;
|
|
40
40
|
const fs = __importStar(require("fs"));
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
41
42
|
const log_1 = require("../../engine/util/log");
|
|
42
43
|
const name_helpers_1 = require("../helpers/name_helpers");
|
|
43
|
-
const path_1 = __importDefault(require("path"));
|
|
44
44
|
const dependency_1 = require("../../engine/dependency");
|
|
45
45
|
const bucket_element_1 = require("../elements/bucket.element");
|
|
46
46
|
const dump_helpers_1 = require("../helpers/dump_helpers");
|
|
@@ -240,6 +240,12 @@ class DumpStage {
|
|
|
240
240
|
Object.entries(externals.schema.buckets).forEach(([tag, ref]) => {
|
|
241
241
|
type.buckets[tag] = dependency_1.$Dependency.typeName(ref, module.lowName);
|
|
242
242
|
});
|
|
243
|
+
if (!type.messages) {
|
|
244
|
+
type.messages = {};
|
|
245
|
+
}
|
|
246
|
+
Object.entries(externals.schema.messages).forEach(([tag, ref]) => {
|
|
247
|
+
type.messages[tag] = dependency_1.$Dependency.typeName(ref, module.lowName);
|
|
248
|
+
});
|
|
243
249
|
if (!type.jobs) {
|
|
244
250
|
type.jobs = {};
|
|
245
251
|
}
|
|
@@ -19,10 +19,12 @@ class Treeshake {
|
|
|
19
19
|
const b = node.builder;
|
|
20
20
|
const $b = b.$b;
|
|
21
21
|
const buckets = b.buckets;
|
|
22
|
+
const messages = b.messages;
|
|
22
23
|
const jobs = b.jobs;
|
|
23
24
|
log_1.Log.trace('compiler', 'treeshake', `${' '.repeat(depth)} └ Treeshaking node ${(0, log_1.scopeTag)($b, node.name)}`);
|
|
24
25
|
node.dependencies = [
|
|
25
26
|
...Object.values(buckets),
|
|
27
|
+
...Object.values(messages),
|
|
26
28
|
...Object.values(jobs)
|
|
27
29
|
];
|
|
28
30
|
node.dependencies = this.cleanNodeDependencies(node);
|
|
@@ -141,10 +143,10 @@ class Treeshake {
|
|
|
141
143
|
nestedInlines.push(...deps.inlines);
|
|
142
144
|
}
|
|
143
145
|
}
|
|
144
|
-
// Inlines
|
|
146
|
+
// Inlines are a dependency of their parent node
|
|
145
147
|
const inlines = [..._inlineNodes, ...nestedInlines];
|
|
146
148
|
inlines.forEach(inline => {
|
|
147
|
-
|
|
149
|
+
dependencies.push(new dependency_1.$Dependency(inline.module, inline.type, inline.name));
|
|
148
150
|
});
|
|
149
151
|
return {
|
|
150
152
|
dependencies,
|