@eventvisor/core 0.23.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 (56) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/lib/linter/conditionsSchema.d.ts +1 -301
  3. package/lib/linter/conditionsSchema.js +8 -14
  4. package/lib/linter/conditionsSchema.js.map +1 -1
  5. package/lib/linter/destinationSchema.d.ts +89 -1
  6. package/lib/linter/destinationSchema.js +0 -2
  7. package/lib/linter/destinationSchema.js.map +1 -1
  8. package/lib/linter/effectSchema.d.ts +9 -1209
  9. package/lib/linter/effectSchema.js +6 -3
  10. package/lib/linter/effectSchema.js.map +1 -1
  11. package/lib/linter/entitySchemas.spec.d.ts +1 -0
  12. package/lib/linter/entitySchemas.spec.js +169 -0
  13. package/lib/linter/entitySchemas.spec.js.map +1 -0
  14. package/lib/linter/eventSchema.js +5 -3
  15. package/lib/linter/eventSchema.js.map +1 -1
  16. package/lib/linter/lintProject.d.ts +5 -0
  17. package/lib/linter/lintProject.js +141 -5
  18. package/lib/linter/lintProject.js.map +1 -1
  19. package/lib/linter/lintProject.spec.d.ts +1 -0
  20. package/lib/linter/lintProject.spec.js +103 -0
  21. package/lib/linter/lintProject.spec.js.map +1 -0
  22. package/lib/linter/persistSchema.d.ts +4 -604
  23. package/lib/linter/persistSchema.js +4 -2
  24. package/lib/linter/persistSchema.js.map +1 -1
  25. package/lib/linter/printError.js +4 -0
  26. package/lib/linter/printError.js.map +1 -1
  27. package/lib/linter/sampleSchema.d.ts +13 -285
  28. package/lib/linter/sampleSchema.js +2 -1
  29. package/lib/linter/sampleSchema.js.map +1 -1
  30. package/lib/linter/semanticValidation.d.ts +11 -0
  31. package/lib/linter/semanticValidation.js +592 -0
  32. package/lib/linter/semanticValidation.js.map +1 -0
  33. package/lib/linter/semanticValidation.spec.d.ts +1 -0
  34. package/lib/linter/semanticValidation.spec.js +190 -0
  35. package/lib/linter/semanticValidation.spec.js.map +1 -0
  36. package/lib/linter/testSchema.d.ts +64 -3
  37. package/lib/linter/testSchema.js +81 -4
  38. package/lib/linter/testSchema.js.map +1 -1
  39. package/lib/linter/testSchema.spec.d.ts +1 -0
  40. package/lib/linter/testSchema.spec.js +260 -0
  41. package/lib/linter/testSchema.spec.js.map +1 -0
  42. package/package.json +5 -5
  43. package/src/linter/conditionsSchema.ts +12 -18
  44. package/src/linter/destinationSchema.ts +0 -3
  45. package/src/linter/effectSchema.ts +12 -9
  46. package/src/linter/entitySchemas.spec.ts +212 -0
  47. package/src/linter/eventSchema.ts +8 -6
  48. package/src/linter/lintProject.spec.ts +112 -0
  49. package/src/linter/lintProject.ts +134 -6
  50. package/src/linter/persistSchema.ts +6 -4
  51. package/src/linter/printError.ts +3 -0
  52. package/src/linter/sampleSchema.ts +3 -1
  53. package/src/linter/semanticValidation.spec.ts +239 -0
  54. package/src/linter/semanticValidation.ts +953 -0
  55. package/src/linter/testSchema.spec.ts +279 -0
  56. package/src/linter/testSchema.ts +89 -4
@@ -46,6 +46,7 @@ function getEffectSchema(deps) {
46
46
  event_tracked: z.array(z.string()).optional(),
47
47
  attribute_set: z.array(z.string()).optional(),
48
48
  })
49
+ .strict()
49
50
  .refine((data) => {
50
51
  return Object.values(data).some((value) => value !== undefined);
51
52
  }, {
@@ -53,14 +54,16 @@ function getEffectSchema(deps) {
53
54
  path: ["event_tracked", "attribute_set"],
54
55
  });
55
56
  const effectOn = z.union([z.array(effectOnType), effectOnRecord]);
56
- const step = z.object({
57
+ const step = z
58
+ .object({
57
59
  description: z.string().optional(),
58
60
  handler: z.string().optional(),
59
61
  conditions: (0, conditionsSchema_1.getConditionsSchema)(deps).optional(),
60
62
  params: z.record(z.string(), z.any()).optional(),
61
63
  transforms: (0, transformsSchema_1.getTransformsSchema)(deps).optional(),
62
64
  continueOnError: z.boolean().optional(),
63
- });
65
+ })
66
+ .strict();
64
67
  return z
65
68
  .object({
66
69
  archived: z.boolean().optional(),
@@ -69,7 +72,7 @@ function getEffectSchema(deps) {
69
72
  on: effectOn,
70
73
  state: z.any().optional(),
71
74
  conditions: (0, conditionsSchema_1.getConditionsSchema)(deps).optional(),
72
- steps: z.array(step),
75
+ steps: z.array(step).optional(),
73
76
  persist: (0, persistSchema_1.getPersistSchema)(deps).optional(),
74
77
  })
75
78
  .strict();
@@ -1 +1 @@
1
- {"version":3,"file":"effectSchema.js","sourceRoot":"","sources":["../../src/linter/effectSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,0CAwCC;AAhDD,uCAAyB;AAGzB,yDAAyD;AACzD,6CAA6C;AAC7C,yDAAyD;AACzD,mDAAmD;AAEnD,SAAgB,eAAe,CAAC,IAAkB;IAChD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,CAAC;SACrB,MAAM,CAAC;QACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC7C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC9C,CAAC;SACD,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;QACP,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAClE,CAAC,EACD;QACE,OAAO,EAAE,wDAAwD;QACjE,IAAI,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;KACzC,CACF,CAAC;IACJ,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;QAChD,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC,CAAC;IAEH,OAAO,CAAC;SACL,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,IAAA,0BAAa,EAAC,IAAI,CAAC;QAEzB,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACzB,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACpB,OAAO,EAAE,IAAA,gCAAgB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;KAC3C,CAAC;SACD,MAAM,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"effectSchema.js","sourceRoot":"","sources":["../../src/linter/effectSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,0CA2CC;AAnDD,uCAAyB;AAGzB,yDAAyD;AACzD,6CAA6C;AAC7C,yDAAyD;AACzD,mDAAmD;AAEnD,SAAgB,eAAe,CAAC,IAAkB;IAChD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,CAAC;SACrB,MAAM,CAAC;QACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC7C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC9C,CAAC;SACD,MAAM,EAAE;SACR,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;QACP,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAClE,CAAC,EACD;QACE,OAAO,EAAE,wDAAwD;QACjE,IAAI,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;KACzC,CACF,CAAC;IACJ,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC;SACX,MAAM,CAAC;QACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;QAChD,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACxC,CAAC;SACD,MAAM,EAAE,CAAC;IAEZ,OAAO,CAAC;SACL,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,IAAA,0BAAa,EAAC,IAAI,CAAC;QAEzB,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACzB,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAC/B,OAAO,EAAE,IAAA,gCAAgB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;KAC3C,CAAC;SACD,MAAM,EAAE,CAAC;AACd,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const attributeSchema_1 = require("./attributeSchema");
4
+ const destinationSchema_1 = require("./destinationSchema");
5
+ const effectSchema_1 = require("./effectSchema");
6
+ const eventSchema_1 = require("./eventSchema");
7
+ const conditionsSchema_1 = require("./conditionsSchema");
8
+ const sampleSchema_1 = require("./sampleSchema");
9
+ function createDeps() {
10
+ return {
11
+ rootDirectoryPath: "/tmp/eventvisor",
12
+ projectConfig: {
13
+ eventsDirectoryPath: "/tmp/eventvisor/events",
14
+ attributesDirectoryPath: "/tmp/eventvisor/attributes",
15
+ destinationsDirectoryPath: "/tmp/eventvisor/destinations",
16
+ statesDirectoryPath: "/tmp/eventvisor/states",
17
+ effectsDirectoryPath: "/tmp/eventvisor/effects",
18
+ testsDirectoryPath: "/tmp/eventvisor/tests",
19
+ datafilesDirectoryPath: "/tmp/eventvisor/datafiles",
20
+ systemDirectoryPath: "/tmp/eventvisor/.eventvisor",
21
+ catalogExportDirectoryPath: "/tmp/eventvisor/out",
22
+ datafileNamePattern: "eventvisor-%s.json",
23
+ tags: ["all", "web"],
24
+ adapter: class {
25
+ },
26
+ plugins: [],
27
+ parser: { extension: "yml", parse: jest.fn(), stringify: jest.fn() },
28
+ prettyDatafile: false,
29
+ stringify: true,
30
+ },
31
+ datasource: {},
32
+ options: {},
33
+ };
34
+ }
35
+ describe("entity lint schemas", () => {
36
+ const deps = createDeps();
37
+ it("accepts string and nested conditions including regexFlags", () => {
38
+ const schema = (0, conditionsSchema_1.getConditionsSchema)(deps);
39
+ expect(schema.safeParse("*").success).toBe(true);
40
+ expect(schema.safeParse({
41
+ and: [
42
+ "*",
43
+ {
44
+ or: [
45
+ {
46
+ payload: "url",
47
+ operator: "matches",
48
+ value: "^https://",
49
+ regexFlags: "i",
50
+ },
51
+ ],
52
+ },
53
+ ],
54
+ }).success).toBe(true);
55
+ });
56
+ it("accepts arrays of samples", () => {
57
+ const schema = (0, sampleSchema_1.getSampleSchema)(deps);
58
+ const result = schema.safeParse([
59
+ {
60
+ by: "userId",
61
+ percentage: 50,
62
+ },
63
+ {
64
+ by: { payload: "country" },
65
+ range: [50, 100],
66
+ },
67
+ ]);
68
+ expect(result.success).toBe(true);
69
+ });
70
+ it("requires attribute metadata", () => {
71
+ const schema = (0, attributeSchema_1.getAttributeSchema)(deps);
72
+ expect(schema.safeParse({
73
+ type: "string",
74
+ }).success).toBe(false);
75
+ expect(schema.safeParse({
76
+ description: "User ID attribute",
77
+ tags: ["web"],
78
+ type: "string",
79
+ }).success).toBe(true);
80
+ });
81
+ it("requires event metadata and keeps strict skipValidation/destination overrides", () => {
82
+ const schema = (0, eventSchema_1.getEventSchema)(deps);
83
+ expect(schema.safeParse({
84
+ description: "Page view",
85
+ tags: ["web"],
86
+ type: "object",
87
+ skipValidation: {
88
+ conditions: "*",
89
+ },
90
+ destinations: {
91
+ console: {
92
+ sample: [
93
+ {
94
+ by: "userId",
95
+ percentage: 50,
96
+ },
97
+ ],
98
+ },
99
+ },
100
+ }).success).toBe(true);
101
+ expect(schema.safeParse({
102
+ description: "Page view",
103
+ tags: ["web"],
104
+ type: "object",
105
+ skipValidation: {
106
+ conditions: "*",
107
+ extra: true,
108
+ },
109
+ }).success).toBe(false);
110
+ expect(schema.safeParse({
111
+ type: "object",
112
+ }).success).toBe(false);
113
+ });
114
+ it("requires destination metadata and rejects JSON schema-only fields", () => {
115
+ const schema = (0, destinationSchema_1.getDestinationSchema)(deps);
116
+ expect(schema.safeParse({
117
+ description: "Console destination",
118
+ tags: ["web"],
119
+ transport: "console",
120
+ type: "object",
121
+ }).success).toBe(false);
122
+ expect(schema.safeParse({
123
+ description: "Console destination",
124
+ tags: ["web"],
125
+ transport: "console",
126
+ sample: [
127
+ {
128
+ by: "userId",
129
+ percentage: 100,
130
+ },
131
+ ],
132
+ }).success).toBe(true);
133
+ expect(schema.safeParse({
134
+ transport: "console",
135
+ }).success).toBe(false);
136
+ });
137
+ it("requires effect metadata and on, and rejects unknown step fields", () => {
138
+ const schema = (0, effectSchema_1.getEffectSchema)(deps);
139
+ expect(schema.safeParse({
140
+ description: "Inject cookie banner",
141
+ tags: ["web"],
142
+ on: {
143
+ event_tracked: ["page_view"],
144
+ },
145
+ state: {
146
+ injected: false,
147
+ },
148
+ }).success).toBe(true);
149
+ expect(schema.safeParse({
150
+ description: "Inject cookie banner",
151
+ tags: ["web"],
152
+ on: {
153
+ event_tracked: ["page_view"],
154
+ },
155
+ steps: [
156
+ {
157
+ handler: "pixel",
158
+ unknown: true,
159
+ },
160
+ ],
161
+ }).success).toBe(false);
162
+ expect(schema.safeParse({
163
+ description: "Inject cookie banner",
164
+ tags: ["web"],
165
+ steps: [],
166
+ }).success).toBe(false);
167
+ });
168
+ });
169
+ //# sourceMappingURL=entitySchemas.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitySchemas.spec.js","sourceRoot":"","sources":["../../src/linter/entitySchemas.spec.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ function getEventSchema(deps) {
49
49
  description: z.string(),
50
50
  tags: (0, tagsSchema_1.getTagsSchema)(deps),
51
51
  skipValidation: z
52
- .union([z.boolean(), z.object({ conditions: (0, conditionsSchema_1.getConditionsSchema)(deps) })])
52
+ .union([z.boolean(), z.object({ conditions: (0, conditionsSchema_1.getConditionsSchema)(deps) }).strict()])
53
53
  .optional(),
54
54
  level: z.enum(["fatal", "error", "warning", "log", "info", "debug"]).optional(),
55
55
  requiredAttributes: z.array(z.string()).optional(),
@@ -60,11 +60,13 @@ function getEventSchema(deps) {
60
60
  .record(z.string(), // @TODO: get real destination names here
61
61
  z.union([
62
62
  z.boolean(),
63
- z.object({
63
+ z
64
+ .object({
64
65
  conditions: (0, conditionsSchema_1.getConditionsSchema)(deps).optional(),
65
66
  sample: (0, sampleSchema_1.getSampleSchema)(deps).optional(),
66
67
  transforms: (0, transformsSchema_1.getTransformsSchema)(deps).optional(),
67
- }),
68
+ })
69
+ .strict(),
68
70
  ]))
69
71
  .optional(),
70
72
  })
@@ -1 +1 @@
1
- {"version":3,"file":"eventSchema.js","sourceRoot":"","sources":["../../src/linter/eventSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wCAiCC;AA1CD,uCAAyB;AAGzB,6CAA6C;AAC7C,6CAA6C;AAC7C,yDAAyD;AACzD,yDAAyD;AACzD,iDAAiD;AAEjD,SAAgB,cAAc,CAAC,IAAkB;IAC/C,OAAO,CAAC;SACL,MAAM,CAAC;QACN,GAAG,0BAAa,CAAC,KAAK;QAEtB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,IAAA,0BAAa,EAAC,IAAI,CAAC;QAEzB,cAAc,EAAE,CAAC;aACd,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACzE,QAAQ,EAAE;QACb,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC/E,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAClD,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,MAAM,EAAE,IAAA,8BAAe,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QACxC,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,YAAY,EAAE,CAAC;aACZ,MAAM,CACL,CAAC,CAAC,MAAM,EAAE,EAAE,yCAAyC;QACrD,CAAC,CAAC,KAAK,CAAC;YACN,CAAC,CAAC,OAAO,EAAE;YACX,CAAC,CAAC,MAAM,CAAC;gBACP,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;gBAChD,MAAM,EAAE,IAAA,8BAAe,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACxC,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;aACjD,CAAC;SACH,CAAC,CACH;aACA,QAAQ,EAAE;KACd,CAAC;SACD,MAAM,EAAE,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"eventSchema.js","sourceRoot":"","sources":["../../src/linter/eventSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,wCAmCC;AA5CD,uCAAyB;AAGzB,6CAA6C;AAC7C,6CAA6C;AAC7C,yDAAyD;AACzD,yDAAyD;AACzD,iDAAiD;AAEjD,SAAgB,cAAc,CAAC,IAAkB;IAC/C,OAAO,CAAC;SACL,MAAM,CAAC;QACN,GAAG,0BAAa,CAAC,KAAK;QAEtB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,IAAA,0BAAa,EAAC,IAAI,CAAC;QAEzB,cAAc,EAAE,CAAC;aACd,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aAClF,QAAQ,EAAE;QACb,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC/E,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAClD,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,MAAM,EAAE,IAAA,8BAAe,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QACxC,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAChD,YAAY,EAAE,CAAC;aACZ,MAAM,CACL,CAAC,CAAC,MAAM,EAAE,EAAE,yCAAyC;QACrD,CAAC,CAAC,KAAK,CAAC;YACN,CAAC,CAAC,OAAO,EAAE;YACX,CAAC;iBACE,MAAM,CAAC;gBACN,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;gBAChD,MAAM,EAAE,IAAA,8BAAe,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACxC,UAAU,EAAE,IAAA,sCAAmB,EAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;aACjD,CAAC;iBACD,MAAM,EAAE;SACZ,CAAC,CACH;aACA,QAAQ,EAAE;KACd,CAAC;SACD,MAAM,EAAE,CAAC;AACd,CAAC"}
@@ -1,2 +1,7 @@
1
1
  import { Plugin } from "../cli";
2
+ import { Dependencies } from "../dependencies";
3
+ export declare function lintProject(options: Dependencies, filterOptions?: {
4
+ keyPattern?: string;
5
+ entityType?: string;
6
+ }): Promise<boolean>;
2
7
  export declare const lintPlugin: Plugin;
@@ -1,14 +1,73 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.lintPlugin = void 0;
37
+ exports.lintProject = lintProject;
38
+ const z = __importStar(require("zod"));
4
39
  const attributeSchema_1 = require("./attributeSchema");
5
40
  const destinationSchema_1 = require("./destinationSchema");
6
41
  const effectSchema_1 = require("./effectSchema");
7
42
  const eventSchema_1 = require("./eventSchema");
43
+ const testSchema_1 = require("./testSchema");
8
44
  const printError_1 = require("./printError");
45
+ const semanticValidation_1 = require("./semanticValidation");
46
+ async function createLintContext(options) {
47
+ const { datasource } = options;
48
+ const [attributeNames, eventNames, destinationNames, effectNames] = await Promise.all([
49
+ datasource.listAttributes(),
50
+ datasource.listEvents(),
51
+ datasource.listDestinations(),
52
+ datasource.listEffects(),
53
+ ]);
54
+ const [attributes, events, destinations, effects] = await Promise.all([
55
+ Promise.all(attributeNames.map(async (name) => [name, await datasource.readAttribute(name)])),
56
+ Promise.all(eventNames.map(async (name) => [name, await datasource.readEvent(name)])),
57
+ Promise.all(destinationNames.map(async (name) => [name, await datasource.readDestination(name)])),
58
+ Promise.all(effectNames.map(async (name) => [name, await datasource.readEffect(name)])),
59
+ ]);
60
+ return {
61
+ attributes: Object.fromEntries(attributes),
62
+ events: Object.fromEntries(events),
63
+ destinations: Object.fromEntries(destinations),
64
+ effects: Object.fromEntries(effects),
65
+ };
66
+ }
9
67
  async function lintProject(options, filterOptions = {}) {
10
68
  const { projectConfig, datasource } = options;
11
69
  const { keyPattern, entityType } = filterOptions;
70
+ const lintContext = await createLintContext(options);
12
71
  let hasErrors = false;
13
72
  // attributes
14
73
  console.log("\nLinting attributes...");
@@ -22,7 +81,7 @@ async function lintProject(options, filterOptions = {}) {
22
81
  continue;
23
82
  }
24
83
  const attributeContent = await datasource.readAttribute(attributeKey);
25
- const result = attributeSchema.safeParse(attributeContent);
84
+ const result = await attributeSchema.safeParseAsync(attributeContent);
26
85
  if (!result.success) {
27
86
  (0, printError_1.printError)({
28
87
  entityType: "attribute",
@@ -31,6 +90,17 @@ async function lintProject(options, filterOptions = {}) {
31
90
  projectConfig,
32
91
  });
33
92
  hasErrors = true;
93
+ continue;
94
+ }
95
+ const semanticIssues = (0, semanticValidation_1.getSemanticIssues)("attribute", result.data, lintContext);
96
+ if (semanticIssues.length > 0) {
97
+ (0, printError_1.printError)({
98
+ entityType: "attribute",
99
+ entityKey: attributeKey,
100
+ error: new z.ZodError(semanticIssues),
101
+ projectConfig,
102
+ });
103
+ hasErrors = true;
34
104
  }
35
105
  }
36
106
  // events
@@ -45,7 +115,7 @@ async function lintProject(options, filterOptions = {}) {
45
115
  continue;
46
116
  }
47
117
  const eventContent = await datasource.readEvent(eventKey);
48
- const result = eventSchema.safeParse(eventContent);
118
+ const result = await eventSchema.safeParseAsync(eventContent);
49
119
  if (!result.success) {
50
120
  (0, printError_1.printError)({
51
121
  entityType: "event",
@@ -54,6 +124,17 @@ async function lintProject(options, filterOptions = {}) {
54
124
  projectConfig,
55
125
  });
56
126
  hasErrors = true;
127
+ continue;
128
+ }
129
+ const semanticIssues = (0, semanticValidation_1.getSemanticIssues)("event", result.data, lintContext);
130
+ if (semanticIssues.length > 0) {
131
+ (0, printError_1.printError)({
132
+ entityType: "event",
133
+ entityKey: eventKey,
134
+ error: new z.ZodError(semanticIssues),
135
+ projectConfig,
136
+ });
137
+ hasErrors = true;
57
138
  }
58
139
  }
59
140
  // destinations
@@ -68,7 +149,7 @@ async function lintProject(options, filterOptions = {}) {
68
149
  continue;
69
150
  }
70
151
  const destinationContent = await datasource.readDestination(destinationKey);
71
- const result = destinationSchema.safeParse(destinationContent);
152
+ const result = await destinationSchema.safeParseAsync(destinationContent);
72
153
  if (!result.success) {
73
154
  (0, printError_1.printError)({
74
155
  entityType: "destination",
@@ -77,6 +158,17 @@ async function lintProject(options, filterOptions = {}) {
77
158
  projectConfig,
78
159
  });
79
160
  hasErrors = true;
161
+ continue;
162
+ }
163
+ const semanticIssues = (0, semanticValidation_1.getSemanticIssues)("destination", result.data, lintContext);
164
+ if (semanticIssues.length > 0) {
165
+ (0, printError_1.printError)({
166
+ entityType: "destination",
167
+ entityKey: destinationKey,
168
+ error: new z.ZodError(semanticIssues),
169
+ projectConfig,
170
+ });
171
+ hasErrors = true;
80
172
  }
81
173
  }
82
174
  // effects
@@ -91,7 +183,7 @@ async function lintProject(options, filterOptions = {}) {
91
183
  continue;
92
184
  }
93
185
  const effectContent = await datasource.readEffect(effectKey);
94
- const result = effectSchema.safeParse(effectContent);
186
+ const result = await effectSchema.safeParseAsync(effectContent);
95
187
  if (!result.success) {
96
188
  (0, printError_1.printError)({
97
189
  entityType: "effect",
@@ -100,9 +192,53 @@ async function lintProject(options, filterOptions = {}) {
100
192
  projectConfig,
101
193
  });
102
194
  hasErrors = true;
195
+ continue;
196
+ }
197
+ const semanticIssues = (0, semanticValidation_1.getSemanticIssues)("effect", result.data, lintContext);
198
+ if (semanticIssues.length > 0) {
199
+ (0, printError_1.printError)({
200
+ entityType: "effect",
201
+ entityKey: effectKey,
202
+ error: new z.ZodError(semanticIssues),
203
+ projectConfig,
204
+ });
205
+ hasErrors = true;
206
+ }
207
+ }
208
+ // tests
209
+ console.log("\nLinting tests...");
210
+ const tests = await datasource.listTests();
211
+ const testSchema = (0, testSchema_1.getTestSchema)(options);
212
+ for (const testKey of tests) {
213
+ if (entityType && entityType !== "test") {
214
+ continue;
215
+ }
216
+ if (keyPattern && !testKey.includes(keyPattern)) {
217
+ continue;
218
+ }
219
+ const testContent = await datasource.readTest(testKey);
220
+ const result = await testSchema.safeParseAsync(testContent);
221
+ if (!result.success) {
222
+ (0, printError_1.printError)({
223
+ entityType: "test",
224
+ entityKey: testKey,
225
+ error: result.error,
226
+ projectConfig,
227
+ });
228
+ hasErrors = true;
229
+ continue;
230
+ }
231
+ const semanticIssues = (0, semanticValidation_1.getSemanticIssues)("test", result.data, lintContext);
232
+ if (semanticIssues.length > 0) {
233
+ (0, printError_1.printError)({
234
+ entityType: "test",
235
+ entityKey: testKey,
236
+ error: new z.ZodError(semanticIssues),
237
+ projectConfig,
238
+ });
239
+ hasErrors = true;
103
240
  }
104
241
  }
105
- // @TODO: tests
106
242
  if (hasErrors) {
107
243
  return false;
108
244
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lintProject.js","sourceRoot":"","sources":["../../src/linter/lintProject.ts"],"names":[],"mappings":";;;AAGA,uDAAuD;AACvD,2DAA2D;AAC3D,iDAAiD;AACjD,+CAA+C;AAC/C,6CAA0C;AAE1C,KAAK,UAAU,WAAW,CACxB,OAAqB,EACrB,gBAGI,EAAE;IAEN,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC9C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IAEjD,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,oCAAkB,EAAC,OAAO,CAAC,CAAC;IAEpD,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,UAAU,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,WAAW;gBACvB,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,SAAS;IACT,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAA,4BAAc,EAAC,OAAO,CAAC,CAAC;IAE5C,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,UAAU,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,OAAO;gBACnB,SAAS,EAAE,QAAQ;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YAEH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAC;IACzD,MAAM,iBAAiB,GAAG,IAAA,wCAAoB,EAAC,OAAO,CAAC,CAAC;IAExD,KAAK,MAAM,cAAc,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAI,UAAU,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,SAAS;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,aAAa;gBACzB,SAAS,EAAE,cAAc;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAA,8BAAe,EAAC,OAAO,CAAC,CAAC;IAE9C,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,QAAQ;gBACpB,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,eAAe;IAEf,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAEY,QAAA,UAAU,GAAW;IAChC,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,KAAK,WAAW,OAAO;QAC9B,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAEzE,MAAM,kBAAkB,GAAG,MAAM,WAAW,CAC1C;YACE,iBAAiB;YACjB,aAAa;YACb,UAAU;YACV,OAAO,EAAE,MAAM;SAChB,EACD;YACE,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CACF,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,mBAAmB;SACjC;QACD,IAAI;QACJ,wCAAwC;QACxC,qCAAqC;QACrC,KAAK;QACL,IAAI;QACJ,wCAAwC;QACxC,kEAAkE;QAClE,KAAK;KACN;CACF,CAAC"}
1
+ {"version":3,"file":"lintProject.js","sourceRoot":"","sources":["../../src/linter/lintProject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,kCAqOC;AAjRD,uCAAyB;AAKzB,uDAAuD;AACvD,2DAA2D;AAC3D,iDAAiD;AACjD,+CAA+C;AAC/C,6CAA6C;AAC7C,6CAA0C;AAC1C,6DAA2E;AAE3E,KAAK,UAAU,iBAAiB,CAAC,OAAqB;IACpD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAE/B,MAAM,CAAC,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpF,UAAU,CAAC,cAAc,EAAE;QAC3B,UAAU,CAAC,UAAU,EAAE;QACvB,UAAU,CAAC,gBAAgB,EAAE;QAC7B,UAAU,CAAC,WAAW,EAAE;KACzB,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpE,OAAO,CAAC,GAAG,CACT,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAU,CAAC,CAC1F;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CACT,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAU,CAAC,CAC9F;QACD,OAAO,CAAC,GAAG,CACT,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAU,CAAC,CACpF;KACF,CAAC,CAAC;IAEH,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;QAClC,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;KACrC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,OAAqB,EACrB,gBAGI,EAAE;IAEN,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAC9C,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;IACjD,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAErD,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,aAAa;IACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;IACrD,MAAM,eAAe,GAAG,IAAA,oCAAkB,EAAC,OAAO,CAAC,CAAC;IAEpD,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,UAAU,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,SAAS;QACX,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAEtE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,WAAW;gBACvB,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,sCAAiB,EAAC,WAAW,EAAE,MAAM,CAAC,IAAW,EAAE,WAAW,CAAC,CAAC;QAEvF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,WAAW;gBACvB,SAAS,EAAE,YAAY;gBACvB,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrC,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,SAAS;IACT,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAA,4BAAc,EAAC,OAAO,CAAC,CAAC;IAE5C,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,UAAU,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,OAAO;gBACnB,SAAS,EAAE,QAAQ;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YAEH,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,sCAAiB,EAAC,OAAO,EAAE,MAAM,CAAC,IAAW,EAAE,WAAW,CAAC,CAAC;QAEnF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,OAAO;gBACnB,SAAS,EAAE,QAAQ;gBACnB,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrC,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,eAAe;IACf,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAEzC,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,gBAAgB,EAAE,CAAC;IACzD,MAAM,iBAAiB,GAAG,IAAA,wCAAoB,EAAC,OAAO,CAAC,CAAC;IAExD,KAAK,MAAM,cAAc,IAAI,YAAY,EAAE,CAAC;QAC1C,IAAI,UAAU,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACvD,SAAS;QACX,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAE1E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,aAAa;gBACzB,SAAS,EAAE,cAAc;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,sCAAiB,EAAC,aAAa,EAAE,MAAM,CAAC,IAAW,EAAE,WAAW,CAAC,CAAC;QAEzF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,aAAa;gBACzB,SAAS,EAAE,cAAc;gBACzB,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrC,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAA,8BAAe,EAAC,OAAO,CAAC,CAAC;IAE9C,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,QAAQ;gBACpB,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,sCAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAW,EAAE,WAAW,CAAC,CAAC;QAEpF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,QAAQ;gBACpB,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrC,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,QAAQ;IACR,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAA,0BAAa,EAAC,OAAO,CAAC,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,UAAU,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,IAAI,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,sCAAiB,EAAC,MAAM,EAAE,MAAM,CAAC,IAAW,EAAE,WAAW,CAAC,CAAC;QAElF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAA,uBAAU,EAAC;gBACT,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrC,aAAa;aACd,CAAC,CAAC;YACH,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAEY,QAAA,UAAU,GAAW;IAChC,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,KAAK,WAAW,OAAO;QAC9B,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAEzE,MAAM,kBAAkB,GAAG,MAAM,WAAW,CAC1C;YACE,iBAAiB;YACjB,aAAa;YACb,UAAU;YACV,OAAO,EAAE,MAAM;SAChB,EACD;YACE,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CACF,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,mBAAmB;SACjC;QACD,IAAI;QACJ,wCAAwC;QACxC,qCAAqC;QACrC,KAAK;QACL,IAAI;QACJ,wCAAwC;QACxC,kEAAkE;QAClE,KAAK;KACN;CACF,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ jest.mock("chalk", () => ({
4
+ __esModule: true,
5
+ default: {
6
+ bold: {
7
+ red: {
8
+ underline: jest.fn((value) => value),
9
+ },
10
+ },
11
+ },
12
+ }));
13
+ const lintProject_1 = require("./lintProject");
14
+ function createDeps(testContent) {
15
+ return {
16
+ rootDirectoryPath: "/tmp/eventvisor",
17
+ projectConfig: {
18
+ eventsDirectoryPath: "/tmp/eventvisor/events",
19
+ attributesDirectoryPath: "/tmp/eventvisor/attributes",
20
+ destinationsDirectoryPath: "/tmp/eventvisor/destinations",
21
+ statesDirectoryPath: "/tmp/eventvisor/states",
22
+ effectsDirectoryPath: "/tmp/eventvisor/effects",
23
+ testsDirectoryPath: "/tmp/eventvisor/tests",
24
+ datafilesDirectoryPath: "/tmp/eventvisor/datafiles",
25
+ systemDirectoryPath: "/tmp/eventvisor/.eventvisor",
26
+ catalogExportDirectoryPath: "/tmp/eventvisor/out",
27
+ datafileNamePattern: "eventvisor-%s.json",
28
+ tags: ["all"],
29
+ adapter: class {
30
+ },
31
+ plugins: [],
32
+ parser: { extension: "yml", parse: jest.fn(), stringify: jest.fn() },
33
+ prettyDatafile: false,
34
+ stringify: true,
35
+ },
36
+ datasource: {
37
+ listAttributes: jest.fn().mockResolvedValue([]),
38
+ listEvents: jest.fn().mockResolvedValue(["page_view"]),
39
+ listDestinations: jest.fn().mockResolvedValue([]),
40
+ listEffects: jest.fn().mockResolvedValue([]),
41
+ listTests: jest.fn().mockResolvedValue(["events/page_view.spec"]),
42
+ readEvent: jest.fn().mockResolvedValue({
43
+ description: "Page view",
44
+ tags: ["all"],
45
+ type: "object",
46
+ properties: {
47
+ url: {
48
+ type: "string",
49
+ },
50
+ },
51
+ }),
52
+ readTest: jest.fn().mockResolvedValue(testContent),
53
+ },
54
+ options: {},
55
+ };
56
+ }
57
+ describe("lintProject", () => {
58
+ let logSpy;
59
+ beforeEach(() => {
60
+ logSpy = jest.spyOn(console, "log").mockImplementation(() => undefined);
61
+ });
62
+ afterEach(() => {
63
+ logSpy.mockRestore();
64
+ });
65
+ it("includes test specs in linting", async () => {
66
+ const deps = createDeps({
67
+ event: "page_view",
68
+ assertions: [
69
+ {
70
+ expectedDestinationsByTag: {
71
+ marketing: ["console"],
72
+ },
73
+ },
74
+ ],
75
+ });
76
+ const result = await (0, lintProject_1.lintProject)(deps);
77
+ expect(result).toBe(false);
78
+ expect(deps.datasource.listTests).toHaveBeenCalled();
79
+ expect(deps.datasource.readTest).toHaveBeenCalledWith("events/page_view.spec");
80
+ });
81
+ it("supports filtering by entityType=test", async () => {
82
+ const deps = createDeps({
83
+ event: "page_view",
84
+ assertions: [
85
+ {
86
+ track: {
87
+ url: "https://example.com",
88
+ },
89
+ expectedToBeValid: true,
90
+ },
91
+ ],
92
+ });
93
+ const result = await (0, lintProject_1.lintProject)(deps, { entityType: "test" });
94
+ expect(result).toBe(true);
95
+ expect(deps.datasource.listAttributes).toHaveBeenCalled();
96
+ expect(deps.datasource.listEvents).toHaveBeenCalled();
97
+ expect(deps.datasource.listDestinations).toHaveBeenCalled();
98
+ expect(deps.datasource.listEffects).toHaveBeenCalled();
99
+ expect(deps.datasource.listTests).toHaveBeenCalled();
100
+ expect(deps.datasource.readTest).toHaveBeenCalledWith("events/page_view.spec");
101
+ });
102
+ });
103
+ //# sourceMappingURL=lintProject.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lintProject.spec.js","sourceRoot":"","sources":["../../src/linter/lintProject.spec.ts"],"names":[],"mappings":"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"}