@ebusd/ebus-typespec 0.3.1 → 0.5.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/README.md +2 -0
- package/dist/src/csv_emitter.d.ts +5 -2
- package/dist/src/csv_emitter.js +78 -13
- package/dist/src/csv_emitter.js.map +1 -1
- package/dist/src/decorators.d.ts +32 -0
- package/dist/src/decorators.js +158 -15
- package/dist/src/decorators.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib.d.ts +58 -9
- package/dist/src/lib.js +25 -1
- package/dist/src/lib.js.map +1 -1
- package/dist/src/linter.js +0 -1
- package/dist/src/linter.js.map +1 -1
- package/dist/src/tsp2ebusd.js +10 -0
- package/dist/src/tsp2ebusd.js.map +1 -1
- package/dist/src/validate.d.ts +2 -0
- package/dist/src/validate.js +83 -0
- package/dist/src/validate.js.map +1 -0
- package/docs.md +34 -2
- package/lib/decorators.tsp +15 -2
- package/lib/models.tsp +8 -8
- package/lib/types.tsp +235 -13
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ This is a short overview of the [decorators](lib/decorators.tsp) offered by the
|
|
|
17
17
|
* base ID: `@base(PB, SB, ID*)`
|
|
18
18
|
* ID extension: `@ext(ID*)`
|
|
19
19
|
* inheritance: ``@inherit(...)`
|
|
20
|
+
* message chaining: `@chain(...)`
|
|
20
21
|
* message direction: `@write`, `@passive`
|
|
21
22
|
* message condition(s): `@condition(model, values)`
|
|
22
23
|
* message authorization: `@auth(level)`
|
|
@@ -45,6 +46,7 @@ Here is a small example of a message carrying just a single byte:
|
|
|
45
46
|
|
|
46
47
|
```typespec
|
|
47
48
|
import "@ebusd/ebus-typespec";
|
|
49
|
+
using Ebus;
|
|
48
50
|
using Ebus.num;
|
|
49
51
|
|
|
50
52
|
@zz(0x08)
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { type EmitContext, type Model, type Namespace, type Program, type Union } from "@typespec/compiler";
|
|
2
|
-
import { CodeTypeEmitter, type Context, type EmittedSourceFile, type EmitterOutput, type SourceFile } from "@typespec/compiler/emitter-framework";
|
|
1
|
+
import { type CompilerHost, type EmitContext, type Model, type Namespace, type Program, type Union } from "@typespec/compiler";
|
|
2
|
+
import { CodeTypeEmitter, type AssetEmitter, type Context, type EmittedSourceFile, type EmitterOutput, type SourceFile } from "@typespec/compiler/emitter-framework";
|
|
3
3
|
import { type EbusdEmitterOptions } from "./lib.js";
|
|
4
4
|
export declare class EbusdEmitter extends CodeTypeEmitter<EbusdEmitterOptions> {
|
|
5
5
|
#private;
|
|
6
|
+
private translations;
|
|
7
|
+
constructor(emitter: AssetEmitter<string, EbusdEmitterOptions>, translations?: Map<string, string>);
|
|
6
8
|
programContext(program: Program): Context;
|
|
7
9
|
modelDeclaration(model: Model, name: string): EmitterOutput<string>;
|
|
8
10
|
modelPropertiesRw(model: Model, activeWrite?: boolean, broadcastTarget?: boolean): EmitterOutput<string>;
|
|
@@ -12,4 +14,5 @@ export declare class EbusdEmitter extends CodeTypeEmitter<EbusdEmitterOptions> {
|
|
|
12
14
|
namespaceContext(namespace: Namespace): Context;
|
|
13
15
|
modelDeclarationContext(model: Model, modelName: string): Context;
|
|
14
16
|
}
|
|
17
|
+
export declare function getEbusdEmitterClass(host: CompilerHost, translationFile?: string): Promise<typeof EbusdEmitter>;
|
|
15
18
|
export declare function $onEmit(context: EmitContext<EbusdEmitterOptions>): Promise<void>;
|
package/dist/src/csv_emitter.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { emitFile, getDoc, getMaxLength, getMinLength, getNamespaceFullName, isDeclaredInNamespace, isNumericType } from "@typespec/compiler";
|
|
1
|
+
import { emitFile, getDoc as getDocNoTrans, getMaxLength, getMinLength, getNamespaceFullName, isDeclaredInNamespace, isNumericType } from "@typespec/compiler";
|
|
2
2
|
import { CodeTypeEmitter, StringBuilder, code } from "@typespec/compiler/emitter-framework";
|
|
3
3
|
import { DuplicateTracker } from "@typespec/compiler/utils";
|
|
4
|
+
import jsYaml from "js-yaml";
|
|
4
5
|
import { basename, extname } from "path";
|
|
5
|
-
import { getAuth, getConditions, getDivisor, getId, getInherit, getMaxBits, getOut, getPassive, getQq, getUnit, getValues, getWrite, getZz, isSourceAddr } from "./decorators.js";
|
|
6
|
+
import { getAuth, getChain, getConditions, getDivisor, getId, getInherit, getMaxBits, getOut, getPassive, getQq, getUnit, getValues, getWrite, getZz, isSourceAddr } from "./decorators.js";
|
|
6
7
|
import { StateKeys, reportDiagnostic } from "./lib.js";
|
|
7
8
|
const hex = (v) => v === undefined ? '' : (0x100 | v).toString(16).substring(1);
|
|
8
9
|
const hexs = (vs) => vs ? vs.map(hex).join('') : '';
|
|
@@ -35,8 +36,13 @@ const mapConds = (idModel, sf, conds) => conds?.map(c => {
|
|
|
35
36
|
return `[${condName + values}]`;
|
|
36
37
|
}).join('');
|
|
37
38
|
export class EbusdEmitter extends CodeTypeEmitter {
|
|
39
|
+
translations;
|
|
38
40
|
#idDuplicateTracker = new DuplicateTracker();
|
|
39
41
|
#sourceFileByPath = new Map();
|
|
42
|
+
constructor(emitter, translations = new Map()) {
|
|
43
|
+
super(emitter);
|
|
44
|
+
this.translations = translations;
|
|
45
|
+
}
|
|
40
46
|
programContext(program) {
|
|
41
47
|
const sourceFile = this.emitter.createSourceFile('');
|
|
42
48
|
return {
|
|
@@ -121,11 +127,11 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
121
127
|
}
|
|
122
128
|
const baseFields = inheritFrom && this.modelPropertiesRw(inheritFrom, write && !passive, broadcastTarget);
|
|
123
129
|
const fields = this.modelPropertiesRw(model, write && !passive, broadcastTarget);
|
|
124
|
-
const comment = getDoc(
|
|
130
|
+
const comment = this.#getDoc(model) ?? this.#getDoc(inheritFrom);
|
|
125
131
|
const qq = getQq(program, model) ?? getQq(program, inheritFrom); // todo could do same handling as for zz
|
|
126
132
|
// when inheriting id, only one of them may have pbsb, rest of id is concatenated
|
|
127
133
|
const baseId = getId(program, inheritFrom);
|
|
128
|
-
const modelId = getId(program, model);
|
|
134
|
+
const modelId = getId(program, model);
|
|
129
135
|
const id = [...(baseId || []), ...(modelId || [])];
|
|
130
136
|
if (id.length < 2) {
|
|
131
137
|
reportDiagnostic(program, {
|
|
@@ -138,10 +144,41 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
138
144
|
this.#idDuplicateTracker.track([sf?.path || '', conds, direction, qq, zz, ...id].join(), model);
|
|
139
145
|
}
|
|
140
146
|
const idh = hexs(id);
|
|
147
|
+
const pbsb = idh.substring(0, 4);
|
|
148
|
+
let ids = idh.substring(4);
|
|
149
|
+
const chain = getChain(program, model) || getChain(program, inheritFrom);
|
|
150
|
+
if (chain) {
|
|
151
|
+
let badLength = ids.length ? '' : 'missing DD';
|
|
152
|
+
let idsuffix = '';
|
|
153
|
+
if (!badLength) {
|
|
154
|
+
const lengthSuffix = chain.length ? `:${chain.length}` : '';
|
|
155
|
+
idsuffix += lengthSuffix;
|
|
156
|
+
const commonPrefix = idh.substring(4, idh.length - chain.dds[0].length * 2);
|
|
157
|
+
for (const dd of chain.dds) {
|
|
158
|
+
const h = hexs(dd);
|
|
159
|
+
if (h.length < idh.length - 4 - commonPrefix.length) {
|
|
160
|
+
badLength = h || 'missing suffix';
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
idsuffix += `;${commonPrefix}${h}${lengthSuffix}`;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (badLength) {
|
|
168
|
+
reportDiagnostic(program, {
|
|
169
|
+
code: "invalid-length",
|
|
170
|
+
format: { which: 'chain', value: badLength },
|
|
171
|
+
target: model,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
ids += idsuffix;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
141
178
|
const level = getAuth(program, model) ?? getAuth(program, inheritFrom);
|
|
142
179
|
// message: type,circuit,level,name,comment,qq,zz,pbsb,id,...fields
|
|
143
180
|
// field: name,part,type,divisor/values,unit,comment
|
|
144
|
-
const message = [conds + direction, normName.circuit(nearestCircuit), level, normName.message(name), escape(comment), hex(qq), hex(zz),
|
|
181
|
+
const message = [conds + direction, normName.circuit(nearestCircuit), level, normName.message(name), escape(comment), hex(qq), hex(zz), pbsb, ids];
|
|
145
182
|
decls.push([...message, ...(baseFields ? [baseFields] : []), fields].join());
|
|
146
183
|
}
|
|
147
184
|
return this.emitter.result.declaration(name, decls.join('\n'));
|
|
@@ -167,8 +204,8 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
167
204
|
else {
|
|
168
205
|
reportDiagnostic(program, {
|
|
169
206
|
code: "banned-inheritance",
|
|
170
|
-
|
|
171
|
-
|
|
207
|
+
target: model,
|
|
208
|
+
format: { ref: p.name },
|
|
172
209
|
});
|
|
173
210
|
commentProp = undefined;
|
|
174
211
|
}
|
|
@@ -237,10 +274,10 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
237
274
|
}
|
|
238
275
|
res.unit ??= getUnit(program, s);
|
|
239
276
|
if (commentProp) {
|
|
240
|
-
res.comment ??= getDoc(
|
|
277
|
+
res.comment ??= this.#getDoc(commentProp);
|
|
241
278
|
commentProp = undefined;
|
|
242
279
|
}
|
|
243
|
-
res.comment ??= getDoc(
|
|
280
|
+
res.comment ??= this.#getDoc(s);
|
|
244
281
|
if (s.kind === 'ModelProperty') {
|
|
245
282
|
s = s.type;
|
|
246
283
|
}
|
|
@@ -307,7 +344,7 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
307
344
|
const sf = this.#getCurrentSourceFile();
|
|
308
345
|
const [idModel] = program.resolveTypeReference('Ebus.id.id');
|
|
309
346
|
if (this.emitter.getOptions()["includes"]) {
|
|
310
|
-
const comment = getDoc(
|
|
347
|
+
const comment = this.#getDoc(union);
|
|
311
348
|
if (comment) {
|
|
312
349
|
decls.push(`# ${comment}`);
|
|
313
350
|
}
|
|
@@ -317,7 +354,7 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
317
354
|
}
|
|
318
355
|
const isLoad = typeof uv.name === 'string' && !!uv.name;
|
|
319
356
|
const conds = mapConds(idModel, sf, getConditions(program, uv) || []);
|
|
320
|
-
addInclude(uv.type, getDoc(
|
|
357
|
+
addInclude(uv.type, this.#getDoc(uv), conds, isLoad);
|
|
321
358
|
});
|
|
322
359
|
return this.emitter.result.declaration(name, decls.join('\n'));
|
|
323
360
|
}
|
|
@@ -343,7 +380,7 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
343
380
|
&& this.#sourceFileByPath.get(referenceContext.fullname)?.meta.refCount === 1) {
|
|
344
381
|
this.emitter.emitTypeReference(namespace, { referenceContext }); // force emit the included file itself, once only
|
|
345
382
|
}
|
|
346
|
-
addInclude(namespace, getDoc(
|
|
383
|
+
addInclude(namespace, this.#getDoc(uv), conds, true);
|
|
347
384
|
}
|
|
348
385
|
else {
|
|
349
386
|
current.referencedBy = union;
|
|
@@ -489,11 +526,39 @@ export class EbusdEmitter extends CodeTypeEmitter {
|
|
|
489
526
|
// : this.emitter.getOptions()["file-type"] === "yaml" ? "yaml" :
|
|
490
527
|
return "csv";
|
|
491
528
|
}
|
|
529
|
+
#getDoc(target) {
|
|
530
|
+
const str = getDocNoTrans(this.emitter.getProgram(), target);
|
|
531
|
+
return !str ? str : (this.translations.get(str) || str);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
export async function getEbusdEmitterClass(host, translationFile) {
|
|
535
|
+
let translations;
|
|
536
|
+
if (translationFile) {
|
|
537
|
+
const content = (await host.readFile(translationFile)).text;
|
|
538
|
+
if (content) {
|
|
539
|
+
const data = jsYaml.load(content);
|
|
540
|
+
translations = new Map();
|
|
541
|
+
for (const [k, v] of Object.entries(data)) {
|
|
542
|
+
translations.set(k, v);
|
|
543
|
+
if (v.endsWith('.') && k.endsWith('.')) {
|
|
544
|
+
// for convenience
|
|
545
|
+
translations.set(k.substring(0, k.length - 1), v.substring(0, v.length - 1));
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
class ParamedEbusdEmitter extends EbusdEmitter {
|
|
551
|
+
constructor(emitter) {
|
|
552
|
+
super(emitter, translations);
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
;
|
|
556
|
+
return ParamedEbusdEmitter;
|
|
492
557
|
}
|
|
493
558
|
export async function $onEmit(context) {
|
|
494
559
|
const emitter =
|
|
495
560
|
// context.options["file-type"]==='csv'?
|
|
496
|
-
context.getAssetEmitter(
|
|
561
|
+
context.getAssetEmitter(await getEbusdEmitterClass(context.program.host, context.options.translations));
|
|
497
562
|
emitter.emitProgram();
|
|
498
563
|
await emitter.writeOutput();
|
|
499
564
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csv_emitter.js","sourceRoot":"","sources":["../../src/csv_emitter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"csv_emitter.js","sourceRoot":"","sources":["../../src/csv_emitter.ts"],"names":[],"mappings":"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"}
|
package/dist/src/decorators.d.ts
CHANGED
|
@@ -130,6 +130,38 @@ export declare function $ext(context: DecoratorContext, target: Model, ...dd: Nu
|
|
|
130
130
|
* @returns value if provided on the given target or undefined.
|
|
131
131
|
*/
|
|
132
132
|
export declare function getId(program: Program, target: Model): number[] | undefined;
|
|
133
|
+
/**
|
|
134
|
+
* Accessor for the `@id`/`@base`/`@ext` decorators with metadata
|
|
135
|
+
*
|
|
136
|
+
* @param program TypeSpec program.
|
|
137
|
+
* @param target Decorator target.
|
|
138
|
+
* @returns value if provided on the given target or undefined.
|
|
139
|
+
*/
|
|
140
|
+
export declare function getIdType(program: Program, target: Model): {
|
|
141
|
+
isExt?: boolean;
|
|
142
|
+
id: number[];
|
|
143
|
+
} | undefined;
|
|
144
|
+
/**
|
|
145
|
+
* Implementation of the `@chain` decorator.
|
|
146
|
+
*
|
|
147
|
+
* @param context Decorator context.
|
|
148
|
+
* @param target Decorator target.
|
|
149
|
+
* @param length the (maximum) length of a single message part of this chain, or 0 for default (=24).
|
|
150
|
+
* @param dd second message ID part the chain is built from (first one taken from id or ext decorator).
|
|
151
|
+
* @param dds list of further message ID parts the chain is built from.
|
|
152
|
+
*/
|
|
153
|
+
export declare function $chain(context: DecoratorContext, target: Model, length: Numeric, dd: Numeric[], ...dds: Numeric[][]): void;
|
|
154
|
+
/**
|
|
155
|
+
* Accessor for the `@chain` decorator.
|
|
156
|
+
*
|
|
157
|
+
* @param program TypeSpec program.
|
|
158
|
+
* @param target Decorator target.
|
|
159
|
+
* @returns value if provided on the given target or undefined.
|
|
160
|
+
*/
|
|
161
|
+
export declare function getChain(program: Program, target: Model): {
|
|
162
|
+
length: number;
|
|
163
|
+
dds: number[][];
|
|
164
|
+
} | undefined;
|
|
133
165
|
/**
|
|
134
166
|
* Implementation of the `@inherit` decorator.
|
|
135
167
|
*
|
package/dist/src/decorators.js
CHANGED
|
@@ -70,7 +70,7 @@ export function getPassive(program, target) {
|
|
|
70
70
|
* @param value the value to set.
|
|
71
71
|
*/
|
|
72
72
|
export function $auth(context, target, value) {
|
|
73
|
-
if (value && !/^[a-
|
|
73
|
+
if (value && !/^[a-z0-9_-]*$/i.test(value)) {
|
|
74
74
|
reportDiagnostic(context.program, {
|
|
75
75
|
code: "banned-auth",
|
|
76
76
|
target: context.getArgumentTarget(0),
|
|
@@ -78,6 +78,13 @@ export function $auth(context, target, value) {
|
|
|
78
78
|
});
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
+
if (context.program.stateMap(StateKeys.auth).has(target)) {
|
|
82
|
+
reportDiagnostic(context.program, {
|
|
83
|
+
code: "multiple-decorator",
|
|
84
|
+
target: context.getArgumentTarget(0),
|
|
85
|
+
format: { which: 'auth' },
|
|
86
|
+
});
|
|
87
|
+
}
|
|
81
88
|
context.program.stateMap(StateKeys.auth).set(target, value);
|
|
82
89
|
}
|
|
83
90
|
/**
|
|
@@ -132,6 +139,13 @@ export function $qq(context, target, value) {
|
|
|
132
139
|
});
|
|
133
140
|
return;
|
|
134
141
|
}
|
|
142
|
+
if (context.program.stateMap(StateKeys.qq).has(target)) {
|
|
143
|
+
reportDiagnostic(context.program, {
|
|
144
|
+
code: "multiple-decorator",
|
|
145
|
+
target: context.getArgumentTarget(0),
|
|
146
|
+
format: { which: 'qq' },
|
|
147
|
+
});
|
|
148
|
+
}
|
|
135
149
|
context.program.stateMap(StateKeys.qq).set(target, value);
|
|
136
150
|
}
|
|
137
151
|
/**
|
|
@@ -160,6 +174,13 @@ export function $zz(context, target, value) {
|
|
|
160
174
|
});
|
|
161
175
|
return;
|
|
162
176
|
}
|
|
177
|
+
if (context.program.stateMap(StateKeys.zz).has(target)) {
|
|
178
|
+
reportDiagnostic(context.program, {
|
|
179
|
+
code: "multiple-decorator",
|
|
180
|
+
target: context.getArgumentTarget(0),
|
|
181
|
+
format: { which: 'zz' },
|
|
182
|
+
});
|
|
183
|
+
}
|
|
163
184
|
context.program.stateMap(StateKeys.zz).set(target, value === undefined ? 0xaa : value);
|
|
164
185
|
}
|
|
165
186
|
/**
|
|
@@ -182,7 +203,16 @@ export function getZz(program, target) {
|
|
|
182
203
|
* @param dd further message ID parts.
|
|
183
204
|
*/
|
|
184
205
|
export function $id(context, target, pb, sb, ...dd) {
|
|
185
|
-
|
|
206
|
+
// single @id and @ext can only combine with single @base from inherited model
|
|
207
|
+
if (context.program.stateMap(StateKeys.id).has(target)) {
|
|
208
|
+
reportDiagnostic(context.program, {
|
|
209
|
+
code: "multiple-decorator",
|
|
210
|
+
target: context.getArgumentTarget(0),
|
|
211
|
+
format: { which: 'id/@base/@ext' },
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
const id = { id: [pb, sb, ...dd], isExt: false };
|
|
215
|
+
context.program.stateMap(StateKeys.id).set(target, id);
|
|
186
216
|
context.program.stateSet(StateKeys.id).add(target);
|
|
187
217
|
}
|
|
188
218
|
/**
|
|
@@ -195,7 +225,16 @@ export function $id(context, target, pb, sb, ...dd) {
|
|
|
195
225
|
* @param dd further message ID parts.
|
|
196
226
|
*/
|
|
197
227
|
export function $base(context, target, pb, sb, ...dd) {
|
|
198
|
-
|
|
228
|
+
// single @id and @ext can only combine with single @base from inherited model
|
|
229
|
+
if (context.program.stateMap(StateKeys.id).has(target)) {
|
|
230
|
+
reportDiagnostic(context.program, {
|
|
231
|
+
code: "multiple-decorator",
|
|
232
|
+
target: context.getArgumentTarget(0),
|
|
233
|
+
format: { which: 'base/@id/@ext' },
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
const id = { id: [pb, sb, ...dd] };
|
|
237
|
+
context.program.stateMap(StateKeys.id).set(target, id);
|
|
199
238
|
}
|
|
200
239
|
/**
|
|
201
240
|
* Implementation of the `@ext` decorator.
|
|
@@ -205,7 +244,16 @@ export function $base(context, target, pb, sb, ...dd) {
|
|
|
205
244
|
* @param dd further message ID parts.
|
|
206
245
|
*/
|
|
207
246
|
export function $ext(context, target, ...dd) {
|
|
208
|
-
|
|
247
|
+
// single @id and @ext can only combine with single @base from inherited model
|
|
248
|
+
if (context.program.stateMap(StateKeys.id).has(target)) {
|
|
249
|
+
reportDiagnostic(context.program, {
|
|
250
|
+
code: "multiple-decorator",
|
|
251
|
+
target: context.getArgumentTarget(0),
|
|
252
|
+
format: { which: 'ext/@id/@base' },
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
const id = { id: dd, isExt: true };
|
|
256
|
+
context.program.stateMap(StateKeys.id).set(target, id);
|
|
209
257
|
context.program.stateSet(StateKeys.id).add(target);
|
|
210
258
|
}
|
|
211
259
|
/**
|
|
@@ -217,7 +265,76 @@ export function $ext(context, target, ...dd) {
|
|
|
217
265
|
*/
|
|
218
266
|
export function getId(program, target) {
|
|
219
267
|
const ids = program.stateMap(StateKeys.id).get(target);
|
|
220
|
-
return ids?.map(v => getNum(v)).filter(v => v !== undefined);
|
|
268
|
+
return ids?.id.map(v => getNum(v)).filter(v => v !== undefined);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Accessor for the `@id`/`@base`/`@ext` decorators with metadata
|
|
272
|
+
*
|
|
273
|
+
* @param program TypeSpec program.
|
|
274
|
+
* @param target Decorator target.
|
|
275
|
+
* @returns value if provided on the given target or undefined.
|
|
276
|
+
*/
|
|
277
|
+
export function getIdType(program, target) {
|
|
278
|
+
const ids = program.stateMap(StateKeys.id).get(target);
|
|
279
|
+
if (!ids) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
return { ...ids, id: ids.id.map(v => getNum(v)).filter(v => v !== undefined) };
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Implementation of the `@chain` decorator.
|
|
286
|
+
*
|
|
287
|
+
* @param context Decorator context.
|
|
288
|
+
* @param target Decorator target.
|
|
289
|
+
* @param length the (maximum) length of a single message part of this chain, or 0 for default (=24).
|
|
290
|
+
* @param dd second message ID part the chain is built from (first one taken from id or ext decorator).
|
|
291
|
+
* @param dds list of further message ID parts the chain is built from.
|
|
292
|
+
*/
|
|
293
|
+
export function $chain(context, target, length, dd, ...dds) {
|
|
294
|
+
const val = getNum(length);
|
|
295
|
+
if (val === undefined || val < 0 || val > 30) { // 0 is allowed as replacement for default=24, 31 is ebusd MAX_LEN
|
|
296
|
+
reportDiagnostic(context.program, {
|
|
297
|
+
code: "banned-length",
|
|
298
|
+
target: context.getArgumentTarget(0),
|
|
299
|
+
format: { which: 'chain', value: val !== undefined && val > 30 ? '30' : '<0' },
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
// required combination with @id checked by $onValidate
|
|
303
|
+
if (context.program.stateMap(StateKeys.chain).has(target)) {
|
|
304
|
+
reportDiagnostic(context.program, {
|
|
305
|
+
code: "multiple-decorator",
|
|
306
|
+
target: context.getArgumentTarget(0),
|
|
307
|
+
format: { which: 'chain' },
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
dds = [dd, ...dds];
|
|
311
|
+
const sorted = dds.sort((a, b) => a === b ? 0 : (!a) ? -1 : (!b) ? 1 : (a.length - b.length));
|
|
312
|
+
if (sorted.length > 1 && sorted[0]?.length !== sorted[sorted.length - 1]?.length) {
|
|
313
|
+
reportDiagnostic(context.program, {
|
|
314
|
+
code: "banned-length",
|
|
315
|
+
target: context.getArgumentTarget(0),
|
|
316
|
+
format: { which: 'chain', value: `${sorted[0]?.length || 0}!=${sorted[sorted.length - 1]?.length || 0}` },
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
context.program.stateMap(StateKeys.chain).set(target, { length, dds });
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Accessor for the `@chain` decorator.
|
|
323
|
+
*
|
|
324
|
+
* @param program TypeSpec program.
|
|
325
|
+
* @param target Decorator target.
|
|
326
|
+
* @returns value if provided on the given target or undefined.
|
|
327
|
+
*/
|
|
328
|
+
export function getChain(program, target) {
|
|
329
|
+
const { length, dds } = (program.stateMap(StateKeys.chain).get(target) ?? {});
|
|
330
|
+
if (!dds || length === undefined) {
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
// silently discards empty parts
|
|
334
|
+
return {
|
|
335
|
+
length: getNum(length),
|
|
336
|
+
dds: dds.map(dd => dd?.map(v => getNum(v)).filter(v => v !== undefined)).filter(dd => dd !== undefined && dd.length),
|
|
337
|
+
};
|
|
221
338
|
}
|
|
222
339
|
/**
|
|
223
340
|
* Implementation of the `@inherit` decorator.
|
|
@@ -228,6 +345,13 @@ export function getId(program, target) {
|
|
|
228
345
|
* @param other further inherited models.
|
|
229
346
|
*/
|
|
230
347
|
export function $inherit(context, target, first, ...other) {
|
|
348
|
+
if (context.program.stateMap(StateKeys.inherit).has(target)) {
|
|
349
|
+
reportDiagnostic(context.program, {
|
|
350
|
+
code: "multiple-decorator",
|
|
351
|
+
target: context.getArgumentTarget(0),
|
|
352
|
+
format: { which: 'inherit' },
|
|
353
|
+
});
|
|
354
|
+
}
|
|
231
355
|
context.program.stateMap(StateKeys.inherit).set(target, [first, ...other]);
|
|
232
356
|
}
|
|
233
357
|
/**
|
|
@@ -313,6 +437,13 @@ export function $maxBits(context, target, value) {
|
|
|
313
437
|
format: { which: 'maxBits', value: val !== undefined && val > 7 ? '7' : '<0' },
|
|
314
438
|
});
|
|
315
439
|
}
|
|
440
|
+
if (context.program.stateMap(StateKeys.maxBits).has(target)) {
|
|
441
|
+
reportDiagnostic(context.program, {
|
|
442
|
+
code: "multiple-decorator",
|
|
443
|
+
target: context.getArgumentTarget(0),
|
|
444
|
+
format: { which: 'maxBits' },
|
|
445
|
+
});
|
|
446
|
+
}
|
|
316
447
|
context.program.stateMap(StateKeys.maxBits).set(target, val);
|
|
317
448
|
}
|
|
318
449
|
/**
|
|
@@ -383,6 +514,7 @@ export function getUnit(program, target) {
|
|
|
383
514
|
*/
|
|
384
515
|
export function $divisor(context, target, value) {
|
|
385
516
|
const val = getNum(value);
|
|
517
|
+
// todo report on boolean and bit types
|
|
386
518
|
// this works only for direct Scalars, not for indirect ones via ModelProperty:
|
|
387
519
|
const isPlainTime = target.kind === 'Scalar' && isIntrinsicType(context.program, target, 'plainTime'); // for internal time types
|
|
388
520
|
if (!(isNumericType(context.program, getPropertyType(target)) || isPlainTime)
|
|
@@ -395,6 +527,13 @@ export function $divisor(context, target, value) {
|
|
|
395
527
|
});
|
|
396
528
|
return;
|
|
397
529
|
}
|
|
530
|
+
if (context.program.stateMap(StateKeys.divisor).has(target)) {
|
|
531
|
+
reportDiagnostic(context.program, {
|
|
532
|
+
code: "multiple-decorator",
|
|
533
|
+
target: context.getArgumentTarget(0),
|
|
534
|
+
format: { which: 'divisor/@factor' },
|
|
535
|
+
});
|
|
536
|
+
}
|
|
398
537
|
context.program.stateMap(StateKeys.divisor).set(target, val);
|
|
399
538
|
}
|
|
400
539
|
/**
|
|
@@ -417,6 +556,13 @@ export function $factor(context, target, value) {
|
|
|
417
556
|
});
|
|
418
557
|
return;
|
|
419
558
|
}
|
|
559
|
+
if (context.program.stateMap(StateKeys.divisor).has(target)) {
|
|
560
|
+
reportDiagnostic(context.program, {
|
|
561
|
+
code: "multiple-decorator",
|
|
562
|
+
target: context.getArgumentTarget(0),
|
|
563
|
+
format: { which: 'factor/@divisor' },
|
|
564
|
+
});
|
|
565
|
+
}
|
|
420
566
|
context.program.stateMap(StateKeys.divisor).set(target, 1.0 / val);
|
|
421
567
|
}
|
|
422
568
|
/**
|
|
@@ -437,16 +583,13 @@ export function getDivisor(program, target) {
|
|
|
437
583
|
* @param value the value to set.
|
|
438
584
|
*/
|
|
439
585
|
export function $values(context, target, value) {
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
// });
|
|
448
|
-
// return;
|
|
449
|
-
// }
|
|
586
|
+
if (context.program.stateMap(StateKeys.values).has(target)) {
|
|
587
|
+
reportDiagnostic(context.program, {
|
|
588
|
+
code: "multiple-decorator",
|
|
589
|
+
target: context.getArgumentTarget(0),
|
|
590
|
+
format: { which: 'values' },
|
|
591
|
+
});
|
|
592
|
+
}
|
|
450
593
|
context.program.stateMap(StateKeys.values).set(target, value);
|
|
451
594
|
}
|
|
452
595
|
/**
|