@adtrackify/at-service-common 3.19.3 → 3.19.5

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 (79) hide show
  1. package/dist/cjs/__tests__/clients/acuity-client.spec.js +0 -10
  2. package/dist/cjs/__tests__/clients/acuity-client.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/libs/custom-measure-formula/custom-measure-formula-utils.spec.js +131 -0
  4. package/dist/cjs/__tests__/libs/custom-measure-formula/custom-measure-formula-utils.spec.js.map +1 -0
  5. package/dist/cjs/__tests__/services/acuity-api-service.spec.js +0 -20
  6. package/dist/cjs/__tests__/services/acuity-api-service.spec.js.map +1 -1
  7. package/dist/cjs/clients/third-party/acuity-client.d.ts +0 -1
  8. package/dist/cjs/clients/third-party/acuity-client.js +0 -6
  9. package/dist/cjs/clients/third-party/acuity-client.js.map +1 -1
  10. package/dist/cjs/libs/custom-measure-formula/custom-measure-formula-types.d.ts +47 -0
  11. package/dist/cjs/libs/custom-measure-formula/custom-measure-formula-types.js +26 -0
  12. package/dist/cjs/libs/custom-measure-formula/custom-measure-formula-types.js.map +1 -0
  13. package/dist/cjs/libs/custom-measure-formula/custom-measure-formula-utils.d.ts +6 -0
  14. package/dist/cjs/libs/custom-measure-formula/custom-measure-formula-utils.js +196 -0
  15. package/dist/cjs/libs/custom-measure-formula/custom-measure-formula-utils.js.map +1 -0
  16. package/dist/cjs/libs/custom-measure-formula/index.d.ts +2 -0
  17. package/dist/cjs/libs/custom-measure-formula/index.js +19 -0
  18. package/dist/cjs/libs/custom-measure-formula/index.js.map +1 -0
  19. package/dist/cjs/libs/index.d.ts +1 -0
  20. package/dist/cjs/libs/index.js +1 -0
  21. package/dist/cjs/libs/index.js.map +1 -1
  22. package/dist/cjs/services/acuity-api-service.d.ts +0 -1
  23. package/dist/cjs/services/acuity-api-service.js +0 -19
  24. package/dist/cjs/services/acuity-api-service.js.map +1 -1
  25. package/dist/cjs/services/db/custom-measures-db-service.d.ts +14 -0
  26. package/dist/cjs/services/db/custom-measures-db-service.js +49 -0
  27. package/dist/cjs/services/db/custom-measures-db-service.js.map +1 -0
  28. package/dist/cjs/services/db/index.d.ts +1 -1
  29. package/dist/cjs/services/db/index.js +1 -1
  30. package/dist/cjs/services/db/index.js.map +1 -1
  31. package/dist/cjs/services/db/purchased-contacts-db-service.d.ts +2 -16
  32. package/dist/cjs/services/db/purchased-contacts-db-service.js +1 -10
  33. package/dist/cjs/services/db/purchased-contacts-db-service.js.map +1 -1
  34. package/dist/esm/__tests__/clients/acuity-client.spec.js +0 -10
  35. package/dist/esm/__tests__/clients/acuity-client.spec.js.map +1 -1
  36. package/dist/esm/__tests__/libs/custom-measure-formula/custom-measure-formula-utils.spec.js +129 -0
  37. package/dist/esm/__tests__/libs/custom-measure-formula/custom-measure-formula-utils.spec.js.map +1 -0
  38. package/dist/esm/__tests__/services/acuity-api-service.spec.js +0 -20
  39. package/dist/esm/__tests__/services/acuity-api-service.spec.js.map +1 -1
  40. package/dist/esm/clients/third-party/acuity-client.d.ts +0 -1
  41. package/dist/esm/clients/third-party/acuity-client.js +0 -6
  42. package/dist/esm/clients/third-party/acuity-client.js.map +1 -1
  43. package/dist/esm/libs/custom-measure-formula/custom-measure-formula-types.d.ts +47 -0
  44. package/dist/esm/libs/custom-measure-formula/custom-measure-formula-types.js +23 -0
  45. package/dist/esm/libs/custom-measure-formula/custom-measure-formula-types.js.map +1 -0
  46. package/dist/esm/libs/custom-measure-formula/custom-measure-formula-utils.d.ts +6 -0
  47. package/dist/esm/libs/custom-measure-formula/custom-measure-formula-utils.js +188 -0
  48. package/dist/esm/libs/custom-measure-formula/custom-measure-formula-utils.js.map +1 -0
  49. package/dist/esm/libs/custom-measure-formula/index.d.ts +2 -0
  50. package/dist/esm/libs/custom-measure-formula/index.js +3 -0
  51. package/dist/esm/libs/custom-measure-formula/index.js.map +1 -0
  52. package/dist/esm/libs/index.d.ts +1 -0
  53. package/dist/esm/libs/index.js +1 -0
  54. package/dist/esm/libs/index.js.map +1 -1
  55. package/dist/esm/services/acuity-api-service.d.ts +0 -1
  56. package/dist/esm/services/acuity-api-service.js +0 -19
  57. package/dist/esm/services/acuity-api-service.js.map +1 -1
  58. package/dist/esm/services/db/custom-measures-db-service.d.ts +14 -0
  59. package/dist/esm/services/db/custom-measures-db-service.js +45 -0
  60. package/dist/esm/services/db/custom-measures-db-service.js.map +1 -0
  61. package/dist/esm/services/db/index.d.ts +1 -1
  62. package/dist/esm/services/db/index.js +1 -1
  63. package/dist/esm/services/db/index.js.map +1 -1
  64. package/dist/esm/services/db/purchased-contacts-db-service.d.ts +2 -16
  65. package/dist/esm/services/db/purchased-contacts-db-service.js +1 -10
  66. package/dist/esm/services/db/purchased-contacts-db-service.js.map +1 -1
  67. package/package.json +2 -2
  68. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js +0 -66
  69. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js.map +0 -1
  70. package/dist/cjs/services/db/contact-enrichments-db-service.d.ts +0 -16
  71. package/dist/cjs/services/db/contact-enrichments-db-service.js +0 -71
  72. package/dist/cjs/services/db/contact-enrichments-db-service.js.map +0 -1
  73. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js +0 -64
  74. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js.map +0 -1
  75. package/dist/esm/services/db/contact-enrichments-db-service.d.ts +0 -16
  76. package/dist/esm/services/db/contact-enrichments-db-service.js +0 -67
  77. package/dist/esm/services/db/contact-enrichments-db-service.js.map +0 -1
  78. /package/dist/cjs/__tests__/{db/contact-enrichments-db-service.spec.d.ts → libs/custom-measure-formula/custom-measure-formula-utils.spec.d.ts} +0 -0
  79. /package/dist/esm/__tests__/{db/contact-enrichments-db-service.spec.d.ts → libs/custom-measure-formula/custom-measure-formula-utils.spec.d.ts} +0 -0
@@ -24,16 +24,6 @@ describe('AcuityClient', () => {
24
24
  expect(config.headers.Authorization).toContain('MD5HASH');
25
25
  expect(response).toEqual({ status: 200, data: { identities: [{ id: 1 }] } });
26
26
  });
27
- it('requests byEmail with the template id, a url-encoded email, and a bearer auth header', async () => {
28
- mockGet.mockResolvedValue({ status: 200, data: { identities: [{ id: 1 }] } });
29
- const client = new acuity_client_1.AcuityClient('KEY_ID', 'SECRET');
30
- const response = await client.getContactsByEmail('a+b@x.com');
31
- expect(mockGet).toHaveBeenCalledTimes(1);
32
- const [url, config] = mockGet.mock.calls[0];
33
- expect(url).toBe('/v2/identities/byEmail?email=a%2Bb%40x.com&template=1701523581');
34
- expect(config.headers.Authorization).toMatch(/^Bearer KEY_ID/);
35
- expect(response).toEqual({ status: 200, data: { identities: [{ id: 1 }] } });
36
- });
37
27
  it('passes a non-200 response through without throwing', async () => {
38
28
  mockGet.mockResolvedValue({ status: 500, data: undefined });
39
29
  const client = new acuity_client_1.AcuityClient('KEY_ID', 'SECRET');
@@ -1 +1 @@
1
- {"version":3,"file":"acuity-client.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/acuity-client.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acuity-client.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/clients/acuity-client.spec.ts"],"names":[],"mappings":";;AAGA,mDAAyD;AAEzD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;IACxC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;CACtD,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;CAC1C,CAAC,CAAC,CAAC;AAEJ,2EAAuE;AAGvE,MAAM,OAAO,GAAI,0BAA8B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAgB,CAAC;AAEvF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,IAAI,4BAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEzD,MAAM,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,4BAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEzD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_js_1 = require("../../../libs/custom-measure-formula/index.js");
4
+ describe('custom measure formula utils', () => {
5
+ describe('tokenizeFormula', () => {
6
+ it('should tokenize measures, numbers, operators and parens', () => {
7
+ const tokens = (0, index_js_1.tokenizeFormula)('(orders.net_revenue - channel.spend) / channel.spend * 100');
8
+ expect(tokens.map((t) => t.type)).toEqual([
9
+ 'lparen',
10
+ 'measure',
11
+ 'operator',
12
+ 'measure',
13
+ 'rparen',
14
+ 'operator',
15
+ 'measure',
16
+ 'operator',
17
+ 'number',
18
+ ]);
19
+ expect(tokens[1].value).toBe('orders.net_revenue');
20
+ expect(tokens[8].value).toBe('100');
21
+ });
22
+ it('should tokenize decimal numbers and dotted measures ending in digits', () => {
23
+ const tokens = (0, index_js_1.tokenizeFormula)('orders.cm3 * 0.3');
24
+ expect(tokens.map((t) => t.value)).toEqual(['orders.cm3', '*', '0.3']);
25
+ });
26
+ it('should reject invalid characters', () => {
27
+ expect(() => (0, index_js_1.tokenizeFormula)('orders.revenue & 2')).toThrow(/Invalid character/);
28
+ });
29
+ it('should reject non-dotted identifiers', () => {
30
+ expect(() => (0, index_js_1.tokenizeFormula)('revenue + 1')).toThrow(/Invalid measure reference/);
31
+ });
32
+ it('should reject malformed numbers', () => {
33
+ expect(() => (0, index_js_1.tokenizeFormula)('1.2.3 + orders.count')).toThrow(/Invalid number/);
34
+ });
35
+ it('should reject an empty formula', () => {
36
+ expect(() => (0, index_js_1.tokenizeFormula)(' ')).toThrow(/empty/);
37
+ });
38
+ });
39
+ describe('parseFormula', () => {
40
+ it('should honour operator precedence', () => {
41
+ const ast = (0, index_js_1.parseFormula)('orders.a + orders.b * orders.c');
42
+ expect(ast).toEqual({
43
+ type: 'binary',
44
+ operator: '+',
45
+ left: { type: 'measure', measure: 'orders.a' },
46
+ right: {
47
+ type: 'binary',
48
+ operator: '*',
49
+ left: { type: 'measure', measure: 'orders.b' },
50
+ right: { type: 'measure', measure: 'orders.c' },
51
+ },
52
+ });
53
+ });
54
+ it('should honour parentheses and unary minus', () => {
55
+ const ast = (0, index_js_1.parseFormula)('-(orders.a - orders.b)');
56
+ expect(ast).toEqual({
57
+ type: 'unary',
58
+ operator: '-',
59
+ operand: {
60
+ type: 'binary',
61
+ operator: '-',
62
+ left: { type: 'measure', measure: 'orders.a' },
63
+ right: { type: 'measure', measure: 'orders.b' },
64
+ },
65
+ });
66
+ });
67
+ it('should reject unbalanced parentheses', () => {
68
+ expect(() => (0, index_js_1.parseFormula)('(orders.a + orders.b')).toThrow(/Unbalanced parentheses/);
69
+ });
70
+ it('should reject trailing operators', () => {
71
+ expect(() => (0, index_js_1.parseFormula)('orders.a +')).toThrow(/Unexpected end of formula/);
72
+ });
73
+ it('should reject dangling tokens', () => {
74
+ expect(() => (0, index_js_1.parseFormula)('orders.a orders.b')).toThrow(/Unexpected token/);
75
+ });
76
+ });
77
+ describe('collectFormulaMeasures', () => {
78
+ it('should return unique measures in order', () => {
79
+ const ast = (0, index_js_1.parseFormula)('(orders.net_revenue - channel.spend) / channel.spend');
80
+ expect((0, index_js_1.collectFormulaMeasures)(ast)).toEqual(['orders.net_revenue', 'channel.spend']);
81
+ });
82
+ });
83
+ describe('evaluateFormulaAst', () => {
84
+ const values = new Map([
85
+ ['orders.net_revenue', 1000],
86
+ ['channel.spend', 250],
87
+ ['orders.count', 0],
88
+ ]);
89
+ it('should evaluate a ratio with percentage scaling', () => {
90
+ const ast = (0, index_js_1.parseFormula)('(orders.net_revenue - channel.spend) / channel.spend * 100');
91
+ expect((0, index_js_1.evaluateFormulaAst)(ast, values)).toBe(300);
92
+ });
93
+ it('should return 0 on division by zero (matches SQL nullif semantics)', () => {
94
+ const ast = (0, index_js_1.parseFormula)('orders.net_revenue / orders.count');
95
+ expect((0, index_js_1.evaluateFormulaAst)(ast, values)).toBe(0);
96
+ });
97
+ it('should treat a missing operand as 0 (matches SQL COALESCE semantics)', () => {
98
+ const ast = (0, index_js_1.parseFormula)('orders.net_revenue - orders.unknown');
99
+ expect((0, index_js_1.evaluateFormulaAst)(ast, values)).toBe(1000);
100
+ });
101
+ });
102
+ describe('validateFormula', () => {
103
+ const knownOperands = new Set(['orders.net_revenue', 'channel.spend', 'orders.count']);
104
+ it('should accept a valid formula', () => {
105
+ const result = (0, index_js_1.validateFormula)('(orders.net_revenue - channel.spend) / channel.spend * 100', { knownOperands });
106
+ expect(result.valid).toBe(true);
107
+ expect(result.errors).toEqual([]);
108
+ expect(result.ast).toBeDefined();
109
+ });
110
+ it('should reject an unknown operand', () => {
111
+ const result = (0, index_js_1.validateFormula)('orders.net_revenue / orders.mystery', { knownOperands });
112
+ expect(result.valid).toBe(false);
113
+ expect(result.errors[0]).toMatch(/Unknown or unsupported measure/);
114
+ });
115
+ it('should reject a pure-constant formula', () => {
116
+ const result = (0, index_js_1.validateFormula)('1 + 2', { knownOperands });
117
+ expect(result.valid).toBe(false);
118
+ expect(result.errors[0]).toMatch(/at least one measure/);
119
+ });
120
+ it('should surface syntax errors', () => {
121
+ const result = (0, index_js_1.validateFormula)('(orders.count + ', { knownOperands });
122
+ expect(result.valid).toBe(false);
123
+ expect(result.errors.length).toBe(1);
124
+ });
125
+ it('should run syntactic-only when no operand predicate is supplied', () => {
126
+ const result = (0, index_js_1.validateFormula)('orders.net_revenue / channel.spend');
127
+ expect(result.valid).toBe(true);
128
+ });
129
+ });
130
+ });
131
+ //# sourceMappingURL=custom-measure-formula-utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-measure-formula-utils.spec.js","sourceRoot":"","sources":["../../../../../src/__tests__/libs/custom-measure-formula/custom-measure-formula-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const mockGetContactsByMd5 = jest.fn();
4
- const mockGetContactsByEmail = jest.fn();
5
4
  jest.mock('../../clients/third-party/acuity-client', () => ({
6
5
  AcuityClient: jest.fn().mockImplementation(() => ({
7
6
  getContactsByMd5: mockGetContactsByMd5,
8
- getContactsByEmail: mockGetContactsByEmail,
9
7
  })),
10
8
  }));
11
9
  jest.mock('../../helpers/logging-helper', () => ({
@@ -36,24 +34,6 @@ describe('AcuityApiService', () => {
36
34
  expect(result).toBeNull();
37
35
  });
38
36
  });
39
- describe('getAcuityContactsByEmail', () => {
40
- it('returns the response data on a 200', async () => {
41
- mockGetContactsByEmail.mockResolvedValue({ status: 200, data: { identities: [{ id: 1 }] } });
42
- const result = await service.getAcuityContactsByEmail('pixel', 'identity', 'a@x.com', DESTINATION);
43
- expect(mockGetContactsByEmail).toHaveBeenCalledWith('a@x.com');
44
- expect(result).toEqual({ identities: [{ id: 1 }] });
45
- });
46
- it('returns null on a non-200 response', async () => {
47
- mockGetContactsByEmail.mockResolvedValue({ status: 404, data: undefined });
48
- const result = await service.getAcuityContactsByEmail('pixel', 'identity', 'a@x.com', DESTINATION);
49
- expect(result).toBeNull();
50
- });
51
- it('returns null when the client throws', async () => {
52
- mockGetContactsByEmail.mockRejectedValue(new Error('network'));
53
- const result = await service.getAcuityContactsByEmail('pixel', 'identity', 'a@x.com', DESTINATION);
54
- expect(result).toBeNull();
55
- });
56
- });
57
37
  describe('getAcuityContactsByMd5Batch', () => {
58
38
  it('aggregates 200 identities keyed by md5 and skips non-200 hashes', async () => {
59
39
  mockGetContactsByMd5
@@ -1 +1 @@
1
- {"version":3,"file":"acuity-api-service.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/services/acuity-api-service.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acuity-api-service.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/services/acuity-api-service.spec.ts"],"names":[],"mappings":";;AAKA,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAEvC,IAAI,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1D,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QAChD,gBAAgB,EAAE,oBAAoB;KACvC,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/C,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE;CACjF,CAAC,CAAC,CAAC;AAEJ,0EAAqE;AAErE,MAAM,WAAW,GAAG,EAAiB,CAAC;AAEtC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,GAAG,IAAI,qCAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAE3F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE7F,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAEzE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE7F,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE7F,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,oBAAoB;iBACjB,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;iBACzE,qBAAqB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;YAEvG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;YAElG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -5,6 +5,5 @@ export declare class AcuityClient {
5
5
  private AA_SECRET;
6
6
  constructor(acuityKeyId: string, acuitySecret: string);
7
7
  getContactsByMd5: (md5Hash: string) => Promise<ApiResponse<AcuityContactResponse>>;
8
- getContactsByEmail: (email: string) => Promise<ApiResponse<AcuityContactResponse>>;
9
8
  private generateAuthorization;
10
9
  }
@@ -25,12 +25,6 @@ class AcuityClient {
25
25
  });
26
26
  return response;
27
27
  };
28
- getContactsByEmail = async (email) => {
29
- const response = await client.get(`/v2/identities/byEmail?email=${encodeURIComponent(email)}&template=${AA_TEMPLATE_ID}`, {
30
- headers: { Authorization: this.generateAuthorization() },
31
- });
32
- return response;
33
- };
34
28
  generateAuthorization = () => {
35
29
  const now = Date.now().toString(36);
36
30
  const hash = (0, crypto_1.generateMd5Hash)(`${now}${this.AA_SECRET}`);
@@ -1 +1 @@
1
- {"version":3,"file":"acuity-client.js","sourceRoot":"","sources":["../../../../src/clients/third-party/acuity-client.ts"],"names":[],"mappings":";;;AAAA,wCAA8C;AAE9C,8CAAoD;AAGpD,MAAM,UAAU,GAAG,gCAAgC,CAAC;AACpD,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC;IAC9B,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE;QACP,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC,CAAC;AAEH,MAAa,YAAY;IACf,SAAS,CAAS;IAClB,SAAS,CAAS;IAE1B,YAAY,WAAmB,EAAE,YAAoB;QACnD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;IAChC,CAAC;IAEM,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAA+C,EAAE;QAC/F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,4BAA4B,OAAO,aAAa,cAAc,EAAE,EAAE;YAClG,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE;SACzD,CAAC,CAAC;QACH,OAAO,QAA8C,CAAC;IACxD,CAAC,CAAC;IAEK,kBAAkB,GAAG,KAAK,EAAE,KAAa,EAA+C,EAAE;QAC/F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,aAAa,cAAc,EAAE,EAAE;YACxH,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE;SACzD,CAAC,CAAC;QACH,OAAO,QAA8C,CAAC;IACxD,CAAC,CAAC;IAEM,qBAAqB,GAAG,GAAW,EAAE;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,wBAAe,EAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACxD,OAAO,UAAU,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;IACjD,CAAC,CAAC;CACH;AA5BD,oCA4BC"}
1
+ {"version":3,"file":"acuity-client.js","sourceRoot":"","sources":["../../../../src/clients/third-party/acuity-client.ts"],"names":[],"mappings":";;;AAAA,wCAA8C;AAE9C,8CAAoD;AAGpD,MAAM,UAAU,GAAG,gCAAgC,CAAC;AACpD,MAAM,cAAc,GAAG,YAAY,CAAC;AAEpC,MAAM,MAAM,GAAG,IAAA,0BAAgB,EAAC;IAC9B,OAAO,EAAE,UAAU;IACnB,OAAO,EAAE;QACP,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC,CAAC;AAEH,MAAa,YAAY;IACf,SAAS,CAAS;IAClB,SAAS,CAAS;IAE1B,YAAY,WAAmB,EAAE,YAAoB;QACnD,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;IAChC,CAAC;IAEM,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAA+C,EAAE;QAC/F,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,4BAA4B,OAAO,aAAa,cAAc,EAAE,EAAE;YAClG,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAAE;SACzD,CAAC,CAAC;QACH,OAAO,QAA8C,CAAC;IACxD,CAAC,CAAC;IAEM,qBAAqB,GAAG,GAAW,EAAE;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,wBAAe,EAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACxD,OAAO,UAAU,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;IACjD,CAAC,CAAC;CACH;AArBD,oCAqBC"}
@@ -0,0 +1,47 @@
1
+ export declare enum FORMULA_OPERATOR {
2
+ ADD = "+",
3
+ SUBTRACT = "-",
4
+ MULTIPLY = "*",
5
+ DIVIDE = "/"
6
+ }
7
+ export declare enum FORMULA_TOKEN_TYPE {
8
+ NUMBER = "number",
9
+ MEASURE = "measure",
10
+ OPERATOR = "operator",
11
+ LPAREN = "lparen",
12
+ RPAREN = "rparen"
13
+ }
14
+ export declare enum FORMULA_NODE_TYPE {
15
+ NUMBER = "number",
16
+ MEASURE = "measure",
17
+ UNARY = "unary",
18
+ BINARY = "binary"
19
+ }
20
+ export interface FormulaToken {
21
+ type: FORMULA_TOKEN_TYPE;
22
+ value: string;
23
+ }
24
+ export type FormulaAst = {
25
+ type: FORMULA_NODE_TYPE.NUMBER;
26
+ value: number;
27
+ } | {
28
+ type: FORMULA_NODE_TYPE.MEASURE;
29
+ measure: string;
30
+ } | {
31
+ type: FORMULA_NODE_TYPE.UNARY;
32
+ operator: FORMULA_OPERATOR.SUBTRACT;
33
+ operand: FormulaAst;
34
+ } | {
35
+ type: FORMULA_NODE_TYPE.BINARY;
36
+ operator: FORMULA_OPERATOR;
37
+ left: FormulaAst;
38
+ right: FormulaAst;
39
+ };
40
+ export interface FormulaValidationOptions {
41
+ knownOperands?: ReadonlySet<string>;
42
+ }
43
+ export interface FormulaValidationResult {
44
+ valid: boolean;
45
+ errors: string[];
46
+ ast?: FormulaAst;
47
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FORMULA_NODE_TYPE = exports.FORMULA_TOKEN_TYPE = exports.FORMULA_OPERATOR = void 0;
4
+ var FORMULA_OPERATOR;
5
+ (function (FORMULA_OPERATOR) {
6
+ FORMULA_OPERATOR["ADD"] = "+";
7
+ FORMULA_OPERATOR["SUBTRACT"] = "-";
8
+ FORMULA_OPERATOR["MULTIPLY"] = "*";
9
+ FORMULA_OPERATOR["DIVIDE"] = "/";
10
+ })(FORMULA_OPERATOR = exports.FORMULA_OPERATOR || (exports.FORMULA_OPERATOR = {}));
11
+ var FORMULA_TOKEN_TYPE;
12
+ (function (FORMULA_TOKEN_TYPE) {
13
+ FORMULA_TOKEN_TYPE["NUMBER"] = "number";
14
+ FORMULA_TOKEN_TYPE["MEASURE"] = "measure";
15
+ FORMULA_TOKEN_TYPE["OPERATOR"] = "operator";
16
+ FORMULA_TOKEN_TYPE["LPAREN"] = "lparen";
17
+ FORMULA_TOKEN_TYPE["RPAREN"] = "rparen";
18
+ })(FORMULA_TOKEN_TYPE = exports.FORMULA_TOKEN_TYPE || (exports.FORMULA_TOKEN_TYPE = {}));
19
+ var FORMULA_NODE_TYPE;
20
+ (function (FORMULA_NODE_TYPE) {
21
+ FORMULA_NODE_TYPE["NUMBER"] = "number";
22
+ FORMULA_NODE_TYPE["MEASURE"] = "measure";
23
+ FORMULA_NODE_TYPE["UNARY"] = "unary";
24
+ FORMULA_NODE_TYPE["BINARY"] = "binary";
25
+ })(FORMULA_NODE_TYPE = exports.FORMULA_NODE_TYPE || (exports.FORMULA_NODE_TYPE = {}));
26
+ //# sourceMappingURL=custom-measure-formula-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-measure-formula-types.js","sourceRoot":"","sources":["../../../../src/libs/custom-measure-formula/custom-measure-formula-types.ts"],"names":[],"mappings":";;;AAGA,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,6BAAS,CAAA;IACT,kCAAc,CAAA;IACd,kCAAc,CAAA;IACd,gCAAY,CAAA;AACd,CAAC,EALW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAK3B;AAED,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,uCAAiB,CAAA;IACjB,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,uCAAiB,CAAA;IACjB,uCAAiB,CAAA;AACnB,CAAC,EANW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAM7B;AAED,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;IACnB,oCAAe,CAAA;IACf,sCAAiB,CAAA;AACnB,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B"}
@@ -0,0 +1,6 @@
1
+ import { FormulaAst, FormulaToken, FormulaValidationOptions, FormulaValidationResult } from './custom-measure-formula-types.js';
2
+ export declare const tokenizeFormula: (formula: string) => FormulaToken[];
3
+ export declare const parseFormula: (formula: string) => FormulaAst;
4
+ export declare const collectFormulaMeasures: (ast: FormulaAst) => string[];
5
+ export declare const evaluateFormulaAst: (ast: FormulaAst, operandValues: ReadonlyMap<string, number | null | undefined>) => number;
6
+ export declare const validateFormula: (formula: string, options?: FormulaValidationOptions) => FormulaValidationResult;
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateFormula = exports.evaluateFormulaAst = exports.collectFormulaMeasures = exports.parseFormula = exports.tokenizeFormula = void 0;
4
+ const ulid_1 = require("ulid");
5
+ const custom_measure_formula_types_js_1 = require("./custom-measure-formula-types.js");
6
+ const NUMBER_PATTERN = /^[0-9]+(\.[0-9]+)?$/;
7
+ const MEASURE_PATTERN = /^[a-z][a-z0-9_]*(\.[a-z0-9_]+)+$/;
8
+ const ALLOWED_CHARS_PATTERN = /[^a-z0-9_.+\-*/()\s]/;
9
+ const tokenizeFormula = (formula) => {
10
+ if (!formula || formula.trim().length === 0) {
11
+ throw new Error('Formula is empty');
12
+ }
13
+ const invalidChar = formula.match(ALLOWED_CHARS_PATTERN);
14
+ if (invalidChar) {
15
+ throw new Error(`Invalid character in formula: '${invalidChar[0]}'`);
16
+ }
17
+ const tokens = [];
18
+ let i = 0;
19
+ while (i < formula.length) {
20
+ const char = formula[i];
21
+ if (/\s/.test(char)) {
22
+ i += 1;
23
+ continue;
24
+ }
25
+ if (char === '(' || char === ')') {
26
+ tokens.push({ type: char === '(' ? custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.LPAREN : custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.RPAREN, value: char });
27
+ i += 1;
28
+ continue;
29
+ }
30
+ if (char === '+' || char === '-' || char === '*' || char === '/') {
31
+ tokens.push({ type: custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.OPERATOR, value: char });
32
+ i += 1;
33
+ continue;
34
+ }
35
+ if (char >= '0' && char <= '9') {
36
+ let value = '';
37
+ while (i < formula.length && /[0-9.]/.test(formula[i])) {
38
+ value += formula[i];
39
+ i += 1;
40
+ }
41
+ if (!NUMBER_PATTERN.test(value)) {
42
+ throw new Error(`Invalid number in formula: '${value}'`);
43
+ }
44
+ tokens.push({ type: custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.NUMBER, value });
45
+ continue;
46
+ }
47
+ if (char >= 'a' && char <= 'z') {
48
+ let value = '';
49
+ while (i < formula.length && /[a-z0-9_.]/.test(formula[i])) {
50
+ value += formula[i];
51
+ i += 1;
52
+ }
53
+ if (!MEASURE_PATTERN.test(value)) {
54
+ throw new Error(`Invalid measure reference in formula: '${value}'`);
55
+ }
56
+ tokens.push({ type: custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.MEASURE, value });
57
+ continue;
58
+ }
59
+ throw new Error(`Invalid character in formula: '${char}'`);
60
+ }
61
+ return tokens;
62
+ };
63
+ exports.tokenizeFormula = tokenizeFormula;
64
+ const parseFormula = (formula) => {
65
+ const tokens = (0, exports.tokenizeFormula)(formula);
66
+ let pos = 0;
67
+ const peek = () => tokens[pos];
68
+ const parseExpression = () => {
69
+ let left = parseTerm();
70
+ while (peek()?.type === custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.OPERATOR && (peek()?.value === '+' || peek()?.value === '-')) {
71
+ const operator = tokens[pos].value;
72
+ pos += 1;
73
+ const right = parseTerm();
74
+ left = { type: custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.BINARY, operator, left, right };
75
+ }
76
+ return left;
77
+ };
78
+ const parseTerm = () => {
79
+ let left = parseFactor();
80
+ while (peek()?.type === custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.OPERATOR && (peek()?.value === '*' || peek()?.value === '/')) {
81
+ const operator = tokens[pos].value;
82
+ pos += 1;
83
+ const right = parseFactor();
84
+ left = { type: custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.BINARY, operator, left, right };
85
+ }
86
+ return left;
87
+ };
88
+ const parseFactor = () => {
89
+ const token = peek();
90
+ if (!token) {
91
+ throw new Error('Unexpected end of formula');
92
+ }
93
+ if (token.type === custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.OPERATOR && token.value === '-') {
94
+ pos += 1;
95
+ return { type: custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.UNARY, operator: custom_measure_formula_types_js_1.FORMULA_OPERATOR.SUBTRACT, operand: parseFactor() };
96
+ }
97
+ if (token.type === custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.NUMBER) {
98
+ pos += 1;
99
+ return { type: custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.NUMBER, value: Number(token.value) };
100
+ }
101
+ if (token.type === custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.MEASURE) {
102
+ pos += 1;
103
+ return { type: custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.MEASURE, measure: token.value };
104
+ }
105
+ if (token.type === custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.LPAREN) {
106
+ pos += 1;
107
+ const expression = parseExpression();
108
+ if (peek()?.type !== custom_measure_formula_types_js_1.FORMULA_TOKEN_TYPE.RPAREN) {
109
+ throw new Error('Unbalanced parentheses in formula');
110
+ }
111
+ pos += 1;
112
+ return expression;
113
+ }
114
+ throw new Error(`Unexpected token in formula: '${token.value}'`);
115
+ };
116
+ const ast = parseExpression();
117
+ if (pos !== tokens.length) {
118
+ throw new Error(`Unexpected token in formula: '${tokens[pos].value}'`);
119
+ }
120
+ return ast;
121
+ };
122
+ exports.parseFormula = parseFormula;
123
+ const collectFormulaMeasures = (ast) => {
124
+ const measures = [];
125
+ const walk = (node) => {
126
+ switch (node.type) {
127
+ case custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.MEASURE:
128
+ if (!measures.includes(node.measure)) {
129
+ measures.push(node.measure);
130
+ }
131
+ break;
132
+ case custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.UNARY:
133
+ walk(node.operand);
134
+ break;
135
+ case custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.BINARY:
136
+ walk(node.left);
137
+ walk(node.right);
138
+ break;
139
+ }
140
+ };
141
+ walk(ast);
142
+ return measures;
143
+ };
144
+ exports.collectFormulaMeasures = collectFormulaMeasures;
145
+ const evaluateFormulaAst = (ast, operandValues) => {
146
+ switch (ast.type) {
147
+ case custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.NUMBER:
148
+ return ast.value;
149
+ case custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.MEASURE: {
150
+ const value = Number(operandValues.get(ast.measure));
151
+ return Number.isFinite(value) ? value : 0;
152
+ }
153
+ case custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.UNARY:
154
+ return -(0, exports.evaluateFormulaAst)(ast.operand, operandValues);
155
+ case custom_measure_formula_types_js_1.FORMULA_NODE_TYPE.BINARY: {
156
+ const left = (0, exports.evaluateFormulaAst)(ast.left, operandValues);
157
+ const right = (0, exports.evaluateFormulaAst)(ast.right, operandValues);
158
+ switch (ast.operator) {
159
+ case custom_measure_formula_types_js_1.FORMULA_OPERATOR.ADD:
160
+ return left + right;
161
+ case custom_measure_formula_types_js_1.FORMULA_OPERATOR.SUBTRACT:
162
+ return left - right;
163
+ case custom_measure_formula_types_js_1.FORMULA_OPERATOR.MULTIPLY:
164
+ return left * right;
165
+ case custom_measure_formula_types_js_1.FORMULA_OPERATOR.DIVIDE:
166
+ return right === 0 ? 0 : left / right;
167
+ }
168
+ }
169
+ }
170
+ };
171
+ exports.evaluateFormulaAst = evaluateFormulaAst;
172
+ const validateFormula = (formula, options) => {
173
+ let ast;
174
+ try {
175
+ ast = (0, exports.parseFormula)(formula);
176
+ }
177
+ catch (error) {
178
+ return { valid: false, errors: [error.message] };
179
+ }
180
+ const errors = [];
181
+ const measures = (0, exports.collectFormulaMeasures)(ast);
182
+ if (measures.length === 0) {
183
+ errors.push('Formula must reference at least one measure');
184
+ }
185
+ measures.forEach((measure) => {
186
+ if ((0, ulid_1.isValid)(measure)) {
187
+ errors.push(`Custom measures cannot reference another custom measure: '${measure}'`);
188
+ }
189
+ else if (options?.knownOperands && !options.knownOperands.has(measure)) {
190
+ errors.push(`Unknown or unsupported measure: '${measure}'`);
191
+ }
192
+ });
193
+ return errors.length > 0 ? { valid: false, errors } : { valid: true, errors: [], ast };
194
+ };
195
+ exports.validateFormula = validateFormula;
196
+ //# sourceMappingURL=custom-measure-formula-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-measure-formula-utils.js","sourceRoot":"","sources":["../../../../src/libs/custom-measure-formula/custom-measure-formula-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './custom-measure-formula-types.js';
2
+ export * from './custom-measure-formula-utils.js';
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./custom-measure-formula-types.js"), exports);
18
+ __exportStar(require("./custom-measure-formula-utils.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/libs/custom-measure-formula/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD;AAClD,oEAAkD"}
@@ -17,3 +17,4 @@ export * from './domain.js';
17
17
  export * from './emails.js';
18
18
  export * from './contacts.js';
19
19
  export * from './api-router/index.js';
20
+ export * from './custom-measure-formula/index.js';
@@ -33,4 +33,5 @@ __exportStar(require("./domain.js"), exports);
33
33
  __exportStar(require("./emails.js"), exports);
34
34
  __exportStar(require("./contacts.js"), exports);
35
35
  __exportStar(require("./api-router/index.js"), exports);
36
+ __exportStar(require("./custom-measure-formula/index.js"), exports);
36
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,8CAA4B;AAC5B,6CAA2B;AAC3B,kDAAgC;AAChC,yDAAuC;AACvC,2CAAyB;AACzB,6DAA2C;AAC3C,uDAAqC;AACrC,mDAAiC;AACjC,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,wDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,8CAA4B;AAC5B,6CAA2B;AAC3B,kDAAgC;AAChC,yDAAuC;AACvC,2CAAyB;AACzB,6DAA2C;AAC3C,uDAAqC;AACrC,mDAAiC;AACjC,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B;AAC9B,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,wDAAsC;AACtC,oEAAkD"}
@@ -4,6 +4,5 @@ export declare class AcuityApiService {
4
4
  private acuityClient;
5
5
  constructor(acuityKeyId: string, acuitySecret: string);
6
6
  getAcuityContactsByMd5: (pixelId: string, identityId: string, md5Hash: string, contactAcquisitionIntegration: Destination) => Promise<AcuityContactResponse | null>;
7
- getAcuityContactsByEmail: (pixelId: string, identityId: string, email: string, contactAcquisitionIntegration: Destination) => Promise<AcuityContactResponse | null>;
8
7
  getAcuityContactsByMd5Batch: (pixelId: string, identityId: string, md5Hashes: string[], contactAcquisitionIntegration: Destination) => Promise<AcuityBatchContactResponse | null>;
9
8
  }