@eventvisor/core 0.22.0 → 0.24.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.
Files changed (58) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/lib/generate-code/index.js.map +1 -1
  3. package/lib/linter/conditionsSchema.d.ts +1 -301
  4. package/lib/linter/conditionsSchema.js +8 -14
  5. package/lib/linter/conditionsSchema.js.map +1 -1
  6. package/lib/linter/destinationSchema.d.ts +89 -1
  7. package/lib/linter/destinationSchema.js +0 -2
  8. package/lib/linter/destinationSchema.js.map +1 -1
  9. package/lib/linter/effectSchema.d.ts +9 -1209
  10. package/lib/linter/effectSchema.js +6 -3
  11. package/lib/linter/effectSchema.js.map +1 -1
  12. package/lib/linter/entitySchemas.spec.d.ts +1 -0
  13. package/lib/linter/entitySchemas.spec.js +169 -0
  14. package/lib/linter/entitySchemas.spec.js.map +1 -0
  15. package/lib/linter/eventSchema.js +7 -2
  16. package/lib/linter/eventSchema.js.map +1 -1
  17. package/lib/linter/lintProject.d.ts +5 -0
  18. package/lib/linter/lintProject.js +141 -5
  19. package/lib/linter/lintProject.js.map +1 -1
  20. package/lib/linter/lintProject.spec.d.ts +1 -0
  21. package/lib/linter/lintProject.spec.js +103 -0
  22. package/lib/linter/lintProject.spec.js.map +1 -0
  23. package/lib/linter/persistSchema.d.ts +4 -604
  24. package/lib/linter/persistSchema.js +4 -2
  25. package/lib/linter/persistSchema.js.map +1 -1
  26. package/lib/linter/printError.js +4 -0
  27. package/lib/linter/printError.js.map +1 -1
  28. package/lib/linter/sampleSchema.d.ts +13 -285
  29. package/lib/linter/sampleSchema.js +2 -1
  30. package/lib/linter/sampleSchema.js.map +1 -1
  31. package/lib/linter/semanticValidation.d.ts +11 -0
  32. package/lib/linter/semanticValidation.js +592 -0
  33. package/lib/linter/semanticValidation.js.map +1 -0
  34. package/lib/linter/semanticValidation.spec.d.ts +1 -0
  35. package/lib/linter/semanticValidation.spec.js +190 -0
  36. package/lib/linter/semanticValidation.spec.js.map +1 -0
  37. package/lib/linter/testSchema.d.ts +64 -3
  38. package/lib/linter/testSchema.js +81 -4
  39. package/lib/linter/testSchema.js.map +1 -1
  40. package/lib/linter/testSchema.spec.d.ts +1 -0
  41. package/lib/linter/testSchema.spec.js +260 -0
  42. package/lib/linter/testSchema.spec.js.map +1 -0
  43. package/package.json +5 -5
  44. package/src/generate-code/index.ts +2 -0
  45. package/src/linter/conditionsSchema.ts +12 -18
  46. package/src/linter/destinationSchema.ts +0 -3
  47. package/src/linter/effectSchema.ts +12 -9
  48. package/src/linter/entitySchemas.spec.ts +212 -0
  49. package/src/linter/eventSchema.ts +10 -5
  50. package/src/linter/lintProject.spec.ts +112 -0
  51. package/src/linter/lintProject.ts +134 -6
  52. package/src/linter/persistSchema.ts +6 -4
  53. package/src/linter/printError.ts +3 -0
  54. package/src/linter/sampleSchema.ts +3 -1
  55. package/src/linter/semanticValidation.spec.ts +239 -0
  56. package/src/linter/semanticValidation.ts +953 -0
  57. package/src/linter/testSchema.spec.ts +279 -0
  58. package/src/linter/testSchema.ts +89 -4
@@ -0,0 +1,592 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSemanticIssues = getSemanticIssues;
4
+ const conditionStringWildcard = "*";
5
+ function pushIssue(state, path, message) {
6
+ state.issues.push({
7
+ code: "custom",
8
+ path,
9
+ message,
10
+ });
11
+ }
12
+ function parseDottedReference(ref) {
13
+ const parts = ref.split(".");
14
+ return {
15
+ origin: parts[0],
16
+ name: parts[1],
17
+ path: parts.slice(2),
18
+ };
19
+ }
20
+ function isObjectValue(value) {
21
+ return typeof value === "object" && value !== null && !Array.isArray(value);
22
+ }
23
+ function getSchemaAtPath(schema, pathParts) {
24
+ let current = schema;
25
+ for (const part of pathParts) {
26
+ if (!current) {
27
+ return undefined;
28
+ }
29
+ if (current.type === "array" && current.items && !Array.isArray(current.items)) {
30
+ current = current.items;
31
+ if (part === "") {
32
+ continue;
33
+ }
34
+ if (/^\d+$/.test(part)) {
35
+ continue;
36
+ }
37
+ }
38
+ if (current.properties && current.properties[part]) {
39
+ current = current.properties[part];
40
+ continue;
41
+ }
42
+ if (current.type === "array" && current.items && Array.isArray(current.items)) {
43
+ const index = Number(part);
44
+ if (!Number.isInteger(index)) {
45
+ return undefined;
46
+ }
47
+ current = current.items[index];
48
+ continue;
49
+ }
50
+ return undefined;
51
+ }
52
+ return current;
53
+ }
54
+ function valueHasPath(value, pathParts) {
55
+ let current = value;
56
+ for (const part of pathParts) {
57
+ if (Array.isArray(current) && /^\d+$/.test(part)) {
58
+ current = current[Number(part)];
59
+ continue;
60
+ }
61
+ if (isObjectValue(current) && Object.prototype.hasOwnProperty.call(current, part)) {
62
+ current = current[part];
63
+ continue;
64
+ }
65
+ return false;
66
+ }
67
+ return true;
68
+ }
69
+ function validatePayloadPath(state, payloadSchemas, pathParts, issuePath, label) {
70
+ if (!payloadSchemas || payloadSchemas.length === 0 || pathParts.length === 0) {
71
+ return;
72
+ }
73
+ const missingFor = payloadSchemas.filter((schema) => !getSchemaAtPath(schema, pathParts));
74
+ if (missingFor.length > 0) {
75
+ pushIssue(state, issuePath, `${label} references payload path "${pathParts.join(".")}" that is not defined in the referenced schema`);
76
+ }
77
+ }
78
+ function validateTargetPath(state, target, options, issuePath) {
79
+ const targetPath = target.split(".").filter(Boolean);
80
+ if (targetPath.length === 0) {
81
+ return;
82
+ }
83
+ if (options.validateTargetAgainstPayload) {
84
+ // Eventvisor intentionally allows introducing new top-level fields during transforms,
85
+ // but nested writes should still honor the declared object structure.
86
+ if (targetPath.length > 1) {
87
+ validatePayloadPath(state, options.payloadSchemas, targetPath, issuePath, `Transform target "${target}"`);
88
+ }
89
+ }
90
+ if (options.validateTargetAgainstState &&
91
+ options.stateValue !== undefined &&
92
+ !valueHasPath(options.stateValue, targetPath)) {
93
+ pushIssue(state, issuePath, `Transform target "${target}" is not declared in the effect state`);
94
+ }
95
+ }
96
+ function validateLookupKey(state, lookupKey, issuePath) {
97
+ const parts = lookupKey.split(".");
98
+ if (parts.length < 2 || !parts[0] || parts.slice(1).join(".").length === 0) {
99
+ pushIssue(state, issuePath, `Lookup reference "${lookupKey}" must include both module and key, for example "browser.screen.width"`);
100
+ }
101
+ }
102
+ function validateEntityReference(state, entityType, entityName, issuePath, label) {
103
+ if (!entityName) {
104
+ pushIssue(state, issuePath, `${label} must include an entity name`);
105
+ return;
106
+ }
107
+ const collection = entityType === "attribute"
108
+ ? state.ctx.attributes
109
+ : entityType === "event"
110
+ ? state.ctx.events
111
+ : entityType === "destination"
112
+ ? state.ctx.destinations
113
+ : state.ctx.effects;
114
+ if (!collection[entityName]) {
115
+ pushIssue(state, issuePath, `${label} references missing ${entityType} "${entityName}"`);
116
+ }
117
+ }
118
+ function validateSourceString(state, source, options) {
119
+ const parsed = parseDottedReference(source);
120
+ if (!options.allowedOrigins.has(parsed.origin)) {
121
+ pushIssue(state, options.path, `Source origin "${parsed.origin}" is not available in this context`);
122
+ return;
123
+ }
124
+ if (parsed.origin === "attributes" || parsed.origin === "attribute") {
125
+ if (parsed.origin === "attributes" && !parsed.name) {
126
+ return;
127
+ }
128
+ validateEntityReference(state, "attribute", parsed.name, options.path, `Source "${source}"`);
129
+ return;
130
+ }
131
+ if (parsed.origin === "effects" || parsed.origin === "effect") {
132
+ if (parsed.origin === "effects" && !parsed.name) {
133
+ return;
134
+ }
135
+ validateEntityReference(state, "effect", parsed.name, options.path, `Source "${source}"`);
136
+ return;
137
+ }
138
+ if (parsed.origin === "payload") {
139
+ const payloadPath = parsed.name ? [parsed.name, ...parsed.path] : parsed.path;
140
+ validatePayloadPath(state, options.payloadSchemas, payloadPath, options.path, `Source "${source}"`);
141
+ return;
142
+ }
143
+ if (parsed.origin === "lookup") {
144
+ validateLookupKey(state, source, options.path);
145
+ return;
146
+ }
147
+ if (parsed.origin === "state" && parsed.name) {
148
+ const statePath = [parsed.name, ...parsed.path];
149
+ if (options.stateValue !== undefined && !valueHasPath(options.stateValue, statePath)) {
150
+ pushIssue(state, options.path, `Source "${source}" references missing state path "${statePath.join(".")}"`);
151
+ }
152
+ }
153
+ }
154
+ function validateSourceBase(state, sourceBase, options) {
155
+ if (typeof sourceBase.source !== "undefined") {
156
+ if (Array.isArray(sourceBase.source)) {
157
+ pushIssue(state, [...options.path, "source"], `The "source" field does not support arrays; use "payload" for multi-source payload references`);
158
+ }
159
+ else {
160
+ validateSourceString(state, sourceBase.source, {
161
+ ...options,
162
+ path: [...options.path, "source"],
163
+ });
164
+ }
165
+ }
166
+ if (typeof sourceBase.payload !== "undefined") {
167
+ const payloadValue = sourceBase.payload;
168
+ const payloadPaths = Array.isArray(payloadValue) ? payloadValue : [payloadValue];
169
+ if (Array.isArray(payloadValue) && !options.allowPayloadArrays) {
170
+ pushIssue(state, [...options.path, "payload"], `The "payload" field does not support arrays in this context`);
171
+ }
172
+ for (let index = 0; index < payloadPaths.length; index++) {
173
+ const payloadPath = payloadPaths[index];
174
+ const issuePath = Array.isArray(payloadValue)
175
+ ? [...options.path, "payload", index]
176
+ : [...options.path, "payload"];
177
+ validatePayloadPath(state, options.payloadSchemas, String(payloadPath).split(".").filter(Boolean), issuePath, `Payload reference "${payloadPath}"`);
178
+ }
179
+ }
180
+ if (typeof sourceBase.lookup !== "undefined") {
181
+ if (Array.isArray(sourceBase.lookup)) {
182
+ pushIssue(state, [...options.path, "lookup"], `The "lookup" field must be a single string`);
183
+ }
184
+ else {
185
+ validateLookupKey(state, String(sourceBase.lookup), [...options.path, "lookup"]);
186
+ }
187
+ }
188
+ if (typeof sourceBase.attribute !== "undefined") {
189
+ if (Array.isArray(sourceBase.attribute)) {
190
+ pushIssue(state, [...options.path, "attribute"], `The "attribute" field must reference a single attribute`);
191
+ }
192
+ else {
193
+ validateEntityReference(state, "attribute", String(sourceBase.attribute).split(".")[0], [...options.path, "attribute"], `Attribute reference "${sourceBase.attribute}"`);
194
+ }
195
+ }
196
+ if (typeof sourceBase.effect !== "undefined") {
197
+ if (Array.isArray(sourceBase.effect)) {
198
+ pushIssue(state, [...options.path, "effect"], `The "effect" field must reference a single effect`);
199
+ }
200
+ else {
201
+ validateEntityReference(state, "effect", String(sourceBase.effect).split(".")[0], [...options.path, "effect"], `Effect reference "${sourceBase.effect}"`);
202
+ }
203
+ }
204
+ if (typeof sourceBase.state !== "undefined") {
205
+ if (Array.isArray(sourceBase.state)) {
206
+ pushIssue(state, [...options.path, "state"], `The "state" field must be a single path`);
207
+ }
208
+ else if (options.stateValue !== undefined &&
209
+ !valueHasPath(options.stateValue, String(sourceBase.state).split("."))) {
210
+ pushIssue(state, [...options.path, "state"], `State reference "${sourceBase.state}" is not declared in the effect state`);
211
+ }
212
+ }
213
+ }
214
+ function validateCondition(state, condition, path, options) {
215
+ if (typeof condition === "string") {
216
+ if (condition !== conditionStringWildcard) {
217
+ pushIssue(state, path, `Only "*" is allowed as a string condition; use structured conditions instead`);
218
+ }
219
+ return;
220
+ }
221
+ if (Array.isArray(condition)) {
222
+ condition.forEach((item, index) => validateCondition(state, item, [...path, index], options));
223
+ return;
224
+ }
225
+ if ("and" in condition) {
226
+ condition.and.forEach((item, index) => validateCondition(state, item, [...path, "and", index], options));
227
+ return;
228
+ }
229
+ if ("or" in condition) {
230
+ condition.or.forEach((item, index) => validateCondition(state, item, [...path, "or", index], options));
231
+ return;
232
+ }
233
+ if ("not" in condition) {
234
+ condition.not.forEach((item, index) => validateCondition(state, item, [...path, "not", index], options));
235
+ return;
236
+ }
237
+ validateSourceBase(state, condition, options);
238
+ }
239
+ function validateSample(state, sample, path, options) {
240
+ const samples = Array.isArray(sample) ? sample : [sample];
241
+ samples.forEach((singleSample, index) => {
242
+ const samplePath = Array.isArray(sample) ? [...path, index] : path;
243
+ if (typeof singleSample.by === "string") {
244
+ validateSourceString(state, singleSample.by, { ...options, path: [...samplePath, "by"] });
245
+ }
246
+ else if (Array.isArray(singleSample.by)) {
247
+ singleSample.by.forEach((byEntry, byIndex) => {
248
+ if (typeof byEntry === "string") {
249
+ validateSourceString(state, byEntry, {
250
+ ...options,
251
+ path: [...samplePath, "by", byIndex],
252
+ });
253
+ }
254
+ else {
255
+ validateSourceBase(state, byEntry, {
256
+ ...options,
257
+ path: [...samplePath, "by", byIndex],
258
+ });
259
+ }
260
+ });
261
+ }
262
+ else if ("or" in singleSample.by) {
263
+ singleSample.by.or.forEach((byEntry, byIndex) => {
264
+ if (typeof byEntry === "string") {
265
+ validateSourceString(state, byEntry, {
266
+ ...options,
267
+ path: [...samplePath, "by", "or", byIndex],
268
+ });
269
+ }
270
+ else {
271
+ validateSourceBase(state, byEntry, {
272
+ ...options,
273
+ path: [...samplePath, "by", "or", byIndex],
274
+ });
275
+ }
276
+ });
277
+ }
278
+ else {
279
+ validateSourceBase(state, singleSample.by, { ...options, path: [...samplePath, "by"] });
280
+ }
281
+ if (singleSample.conditions) {
282
+ validateCondition(state, singleSample.conditions, [...samplePath, "conditions"], options);
283
+ }
284
+ });
285
+ }
286
+ function validateTransform(state, transform, path, options) {
287
+ validateSourceBase(state, transform, {
288
+ ...options,
289
+ path,
290
+ allowPayloadArrays: transform.type === "concat",
291
+ });
292
+ if (["rename"].includes(transform.type) &&
293
+ (!transform.targetMap ||
294
+ (Array.isArray(transform.targetMap) && transform.targetMap.length === 0) ||
295
+ (!Array.isArray(transform.targetMap) && Object.keys(transform.targetMap).length === 0))) {
296
+ pushIssue(state, [...path, "targetMap"], `Transform "${transform.type}" requires a non-empty targetMap`);
297
+ }
298
+ if (["remove", "trim", "toInteger", "toDouble", "toString", "toBoolean"].includes(transform.type)) {
299
+ if (!transform.target) {
300
+ pushIssue(state, [...path, "target"], `Transform "${transform.type}" requires a target`);
301
+ }
302
+ }
303
+ if (transform.type === "set" && !transform.target && typeof transform.value === "undefined") {
304
+ pushIssue(state, path, `Transform "set" must define either a target or a value`);
305
+ }
306
+ if (transform.type === "rename" && transform.target) {
307
+ pushIssue(state, [...path, "target"], `Transform "rename" must use targetMap instead of target`);
308
+ }
309
+ if (transform.target) {
310
+ const targets = Array.isArray(transform.target) ? transform.target : [transform.target];
311
+ targets.forEach((target, index) => {
312
+ validateTargetPath(state, String(target), options, Array.isArray(transform.target) ? [...path, "target", index] : [...path, "target"]);
313
+ });
314
+ }
315
+ if (transform.targetMap &&
316
+ (options.validateTargetAgainstPayload || options.validateTargetAgainstState)) {
317
+ const targetMaps = Array.isArray(transform.targetMap)
318
+ ? transform.targetMap
319
+ : [transform.targetMap];
320
+ targetMaps.forEach((targetMap, mapIndex) => {
321
+ Object.values(targetMap).forEach((targetPath) => {
322
+ validateTargetPath(state, String(targetPath), options, Array.isArray(transform.targetMap)
323
+ ? [...path, "targetMap", mapIndex]
324
+ : [...path, "targetMap"]);
325
+ });
326
+ });
327
+ }
328
+ if (transform.targetMap && options.payloadSchemas && options.payloadSchemas.length > 0) {
329
+ const targetMaps = Array.isArray(transform.targetMap)
330
+ ? transform.targetMap
331
+ : [transform.targetMap];
332
+ targetMaps.forEach((targetMap, mapIndex) => {
333
+ Object.keys(targetMap).forEach((sourceKey) => {
334
+ validatePayloadPath(state, options.payloadSchemas, sourceKey.split("."), Array.isArray(transform.targetMap)
335
+ ? [...path, "targetMap", mapIndex, sourceKey]
336
+ : [...path, "targetMap", sourceKey], `Transform source "${sourceKey}"`);
337
+ });
338
+ });
339
+ }
340
+ if (transform.conditions) {
341
+ validateCondition(state, transform.conditions, [...path, "conditions"], options);
342
+ }
343
+ }
344
+ function validatePersist(state, persist, path, options) {
345
+ if (!persist || typeof persist === "string") {
346
+ return;
347
+ }
348
+ if (Array.isArray(persist)) {
349
+ persist.forEach((item, index) => validatePersist(state, item, [...path, index], options));
350
+ return;
351
+ }
352
+ if (persist.conditions) {
353
+ validateCondition(state, persist.conditions, [...path, "conditions"], options);
354
+ }
355
+ }
356
+ function validateAttributeSemantics(state, attribute) {
357
+ const options = {
358
+ path: [],
359
+ allowedOrigins: new Set([
360
+ "attributes",
361
+ "attribute",
362
+ "effects",
363
+ "effect",
364
+ "payload",
365
+ "lookup",
366
+ "attributeName",
367
+ ]),
368
+ payloadSchemas: [attribute],
369
+ validateTargetAgainstPayload: true,
370
+ };
371
+ attribute.transforms?.forEach((transform, index) => validateTransform(state, transform, ["transforms", index], options));
372
+ if (attribute.persist) {
373
+ validatePersist(state, attribute.persist, ["persist"], options);
374
+ }
375
+ }
376
+ function validateEventSemantics(state, event) {
377
+ const options = {
378
+ path: [],
379
+ allowedOrigins: new Set([
380
+ "attributes",
381
+ "attribute",
382
+ "effects",
383
+ "effect",
384
+ "payload",
385
+ "lookup",
386
+ "eventName",
387
+ "eventLevel",
388
+ ]),
389
+ payloadSchemas: [event],
390
+ validateTargetAgainstPayload: true,
391
+ };
392
+ event.requiredAttributes?.forEach((attributeName, index) => {
393
+ if (!state.ctx.attributes[attributeName]) {
394
+ pushIssue(state, ["requiredAttributes", index], `requiredAttributes references missing attribute "${attributeName}"`);
395
+ }
396
+ });
397
+ if (event.conditions) {
398
+ validateCondition(state, event.conditions, ["conditions"], options);
399
+ }
400
+ if (event.sample) {
401
+ validateSample(state, event.sample, ["sample"], options);
402
+ }
403
+ event.transforms?.forEach((transform, index) => validateTransform(state, transform, ["transforms", index], options));
404
+ if (event.skipValidation &&
405
+ typeof event.skipValidation === "object" &&
406
+ event.skipValidation.conditions) {
407
+ validateCondition(state, event.skipValidation.conditions, ["skipValidation", "conditions"], options);
408
+ }
409
+ if (event.destinations) {
410
+ Object.entries(event.destinations).forEach(([destinationName, destinationOverride]) => {
411
+ if (!state.ctx.destinations[destinationName]) {
412
+ pushIssue(state, ["destinations", destinationName], `destinations references missing destination "${destinationName}"`);
413
+ }
414
+ if (destinationOverride && typeof destinationOverride === "object") {
415
+ if (destinationOverride.conditions) {
416
+ validateCondition(state, destinationOverride.conditions, ["destinations", destinationName, "conditions"], options);
417
+ }
418
+ if (destinationOverride.sample) {
419
+ validateSample(state, destinationOverride.sample, ["destinations", destinationName, "sample"], options);
420
+ }
421
+ destinationOverride.transforms?.forEach((transform, index) => validateTransform(state, transform, ["destinations", destinationName, "transforms", index], options));
422
+ }
423
+ });
424
+ }
425
+ }
426
+ function getEffectPayloadSchemas(state, effect) {
427
+ if (!effect.on || Array.isArray(effect.on)) {
428
+ return undefined;
429
+ }
430
+ const payloadSchemas = [];
431
+ effect.on.event_tracked?.forEach((eventName) => {
432
+ const event = state.ctx.events[eventName];
433
+ if (event) {
434
+ payloadSchemas.push(event);
435
+ }
436
+ });
437
+ effect.on.attribute_set?.forEach((attributeName) => {
438
+ const attribute = state.ctx.attributes[attributeName];
439
+ if (attribute) {
440
+ payloadSchemas.push(attribute);
441
+ }
442
+ });
443
+ return payloadSchemas.length > 0 ? payloadSchemas : undefined;
444
+ }
445
+ function validateEffectSemantics(state, effect) {
446
+ if (!Array.isArray(effect.on)) {
447
+ effect.on.event_tracked?.forEach((eventName, index) => {
448
+ if (!state.ctx.events[eventName]) {
449
+ pushIssue(state, ["on", "event_tracked", index], `Effect trigger references missing event "${eventName}"`);
450
+ }
451
+ });
452
+ effect.on.attribute_set?.forEach((attributeName, index) => {
453
+ if (!state.ctx.attributes[attributeName]) {
454
+ pushIssue(state, ["on", "attribute_set", index], `Effect trigger references missing attribute "${attributeName}"`);
455
+ }
456
+ });
457
+ }
458
+ const conditionOptions = {
459
+ path: [],
460
+ allowedOrigins: new Set([
461
+ "attributes",
462
+ "attribute",
463
+ "effects",
464
+ "effect",
465
+ "payload",
466
+ "lookup",
467
+ "eventName",
468
+ "attributeName",
469
+ "state",
470
+ ]),
471
+ payloadSchemas: getEffectPayloadSchemas(state, effect),
472
+ stateValue: effect.state,
473
+ };
474
+ if (effect.conditions) {
475
+ validateCondition(state, effect.conditions, ["conditions"], conditionOptions);
476
+ }
477
+ effect.steps?.forEach((step, stepIndex) => {
478
+ if (step.conditions) {
479
+ validateCondition(state, step.conditions, ["steps", stepIndex, "conditions"], conditionOptions);
480
+ }
481
+ step.transforms?.forEach((transform, transformIndex) => validateTransform(state, transform, ["steps", stepIndex, "transforms", transformIndex], {
482
+ path: [],
483
+ allowedOrigins: new Set([
484
+ "attributes",
485
+ "attribute",
486
+ "effects",
487
+ "effect",
488
+ "lookup",
489
+ "eventName",
490
+ "attributeName",
491
+ "state",
492
+ ]),
493
+ stateValue: effect.state,
494
+ validateTargetAgainstState: true,
495
+ }));
496
+ });
497
+ if (effect.persist) {
498
+ validatePersist(state, effect.persist, ["persist"], conditionOptions);
499
+ }
500
+ }
501
+ function validateDestinationSemantics(state, destination) {
502
+ const conditionOptions = {
503
+ path: [],
504
+ allowedOrigins: new Set([
505
+ "attributes",
506
+ "attribute",
507
+ "effects",
508
+ "effect",
509
+ "payload",
510
+ "lookup",
511
+ "eventName",
512
+ "eventLevel",
513
+ ]),
514
+ };
515
+ const transformOptions = {
516
+ path: [],
517
+ allowedOrigins: new Set([
518
+ "attributes",
519
+ "attribute",
520
+ "effects",
521
+ "effect",
522
+ "payload",
523
+ "lookup",
524
+ "eventName",
525
+ "eventLevel",
526
+ "destinationName",
527
+ ]),
528
+ };
529
+ if (destination.conditions) {
530
+ validateCondition(state, destination.conditions, ["conditions"], conditionOptions);
531
+ }
532
+ if (destination.sample) {
533
+ validateSample(state, destination.sample, ["sample"], conditionOptions);
534
+ }
535
+ destination.transforms?.forEach((transform, index) => validateTransform(state, transform, ["transforms", index], transformOptions));
536
+ }
537
+ function validateTestSemantics(state, test) {
538
+ if ("attribute" in test && !state.ctx.attributes[test.attribute]) {
539
+ pushIssue(state, ["attribute"], `Test references missing attribute "${test.attribute}"`);
540
+ }
541
+ if ("event" in test) {
542
+ if (!state.ctx.events[test.event]) {
543
+ pushIssue(state, ["event"], `Test references missing event "${test.event}"`);
544
+ }
545
+ test.assertions.forEach((assertion, index) => {
546
+ assertion.expectedDestinations?.forEach((destinationName, destinationIndex) => {
547
+ const destinationExists = !!state.ctx.destinations[destinationName] ||
548
+ Object.values(state.ctx.destinations).some((destination) => destination.transport === destinationName);
549
+ if (!destinationExists) {
550
+ pushIssue(state, ["assertions", index, "expectedDestinations", destinationIndex], `expectedDestinations references missing destination "${destinationName}"`);
551
+ }
552
+ });
553
+ assertion.actions?.forEach((action, actionIndex) => {
554
+ if (action.type === "track" && !state.ctx.events[action.name]) {
555
+ pushIssue(state, ["assertions", index, "actions", actionIndex, "name"], `Action references missing event "${action.name}"`);
556
+ }
557
+ if (action.type === "setAttribute" && !state.ctx.attributes[action.name]) {
558
+ pushIssue(state, ["assertions", index, "actions", actionIndex, "name"], `Action references missing attribute "${action.name}"`);
559
+ }
560
+ });
561
+ });
562
+ }
563
+ if ("effect" in test && !state.ctx.effects[test.effect]) {
564
+ pushIssue(state, ["effect"], `Test references missing effect "${test.effect}"`);
565
+ }
566
+ if ("destination" in test && !state.ctx.destinations[test.destination]) {
567
+ pushIssue(state, ["destination"], `Test references missing destination "${test.destination}"`);
568
+ }
569
+ }
570
+ function getSemanticIssues(entityType, entity, ctx) {
571
+ const state = {
572
+ issues: [],
573
+ ctx,
574
+ };
575
+ if (entityType === "attribute") {
576
+ validateAttributeSemantics(state, entity);
577
+ }
578
+ else if (entityType === "event") {
579
+ validateEventSemantics(state, entity);
580
+ }
581
+ else if (entityType === "destination") {
582
+ validateDestinationSemantics(state, entity);
583
+ }
584
+ else if (entityType === "effect") {
585
+ validateEffectSemantics(state, entity);
586
+ }
587
+ else if (entityType === "test") {
588
+ validateTestSemantics(state, entity);
589
+ }
590
+ return state.issues;
591
+ }
592
+ //# sourceMappingURL=semanticValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semanticValidation.js","sourceRoot":"","sources":["../../src/linter/semanticValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};