@devrev/ts-adaas 1.9.0 → 1.10.0-beta.1

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 (159) hide show
  1. package/dist/attachments-streaming/attachments-streaming-pool.d.ts +1 -0
  2. package/dist/attachments-streaming/attachments-streaming-pool.d.ts.map +1 -0
  3. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts +1 -0
  4. package/dist/attachments-streaming/attachments-streaming-pool.interfaces.d.ts.map +1 -0
  5. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts +1 -0
  6. package/dist/attachments-streaming/attachments-streaming-pool.test.d.ts.map +1 -0
  7. package/dist/common/constants.d.ts +1 -0
  8. package/dist/common/constants.d.ts.map +1 -0
  9. package/dist/common/control-protocol.d.ts +1 -0
  10. package/dist/common/control-protocol.d.ts.map +1 -0
  11. package/dist/common/helpers.d.ts +1 -0
  12. package/dist/common/helpers.d.ts.map +1 -0
  13. package/dist/common/helpers.test.d.ts +1 -0
  14. package/dist/common/helpers.test.d.ts.map +1 -0
  15. package/dist/common/install-initial-domain-mapping.d.ts +1 -0
  16. package/dist/common/install-initial-domain-mapping.d.ts.map +1 -0
  17. package/dist/common/install-initial-domain-mapping.test.d.ts +1 -0
  18. package/dist/common/install-initial-domain-mapping.test.d.ts.map +1 -0
  19. package/dist/deprecated/adapter/index.d.ts +1 -0
  20. package/dist/deprecated/adapter/index.d.ts.map +1 -0
  21. package/dist/deprecated/common/helpers.d.ts +1 -0
  22. package/dist/deprecated/common/helpers.d.ts.map +1 -0
  23. package/dist/deprecated/demo-extractor/index.d.ts +1 -0
  24. package/dist/deprecated/demo-extractor/index.d.ts.map +1 -0
  25. package/dist/deprecated/http/client.d.ts +1 -0
  26. package/dist/deprecated/http/client.d.ts.map +1 -0
  27. package/dist/deprecated/uploader/index.d.ts +1 -0
  28. package/dist/deprecated/uploader/index.d.ts.map +1 -0
  29. package/dist/http/axios-client-internal.d.ts +1 -0
  30. package/dist/http/axios-client-internal.d.ts.map +1 -0
  31. package/dist/http/axios-client-internal.test.d.ts +1 -0
  32. package/dist/http/axios-client-internal.test.d.ts.map +1 -0
  33. package/dist/http/axios-client.d.ts +1 -0
  34. package/dist/http/axios-client.d.ts.map +1 -0
  35. package/dist/http/constants.d.ts +1 -0
  36. package/dist/http/constants.d.ts.map +1 -0
  37. package/dist/http/index.d.ts +1 -0
  38. package/dist/http/index.d.ts.map +1 -0
  39. package/dist/http/types.d.ts +1 -0
  40. package/dist/http/types.d.ts.map +1 -0
  41. package/dist/index.d.ts +1 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/logger/logger.d.ts +1 -0
  44. package/dist/logger/logger.d.ts.map +1 -0
  45. package/dist/logger/logger.interfaces.d.ts +1 -0
  46. package/dist/logger/logger.interfaces.d.ts.map +1 -0
  47. package/dist/logger/logger.test.d.ts +1 -0
  48. package/dist/logger/logger.test.d.ts.map +1 -0
  49. package/dist/mappers/mappers.d.ts +43 -1
  50. package/dist/mappers/mappers.d.ts.map +1 -0
  51. package/dist/mappers/mappers.interface.d.ts +209 -0
  52. package/dist/mappers/mappers.interface.d.ts.map +1 -0
  53. package/dist/mappers/mappers.interface.js +40 -1
  54. package/dist/mappers/mappers.js +49 -0
  55. package/dist/mappers/mappers.test.d.ts +2 -0
  56. package/dist/mappers/mappers.test.d.ts.map +1 -0
  57. package/dist/mappers/mappers.test.js +107 -0
  58. package/dist/repo/repo.d.ts +1 -0
  59. package/dist/repo/repo.d.ts.map +1 -0
  60. package/dist/repo/repo.interfaces.d.ts +1 -0
  61. package/dist/repo/repo.interfaces.d.ts.map +1 -0
  62. package/dist/repo/repo.test.d.ts +1 -0
  63. package/dist/repo/repo.test.d.ts.map +1 -0
  64. package/dist/state/state.d.ts +1 -0
  65. package/dist/state/state.d.ts.map +1 -0
  66. package/dist/state/state.interfaces.d.ts +1 -0
  67. package/dist/state/state.interfaces.d.ts.map +1 -0
  68. package/dist/state/state.test.d.ts +1 -0
  69. package/dist/state/state.test.d.ts.map +1 -0
  70. package/dist/tests/backwards-compatibility/backwards-compatibility.test.d.ts +3 -0
  71. package/dist/tests/backwards-compatibility/backwards-compatibility.test.d.ts.map +1 -0
  72. package/dist/tests/backwards-compatibility/backwards-compatibility.test.js +401 -0
  73. package/dist/tests/backwards-compatibility/helpers.d.ts +21 -0
  74. package/dist/tests/backwards-compatibility/helpers.d.ts.map +1 -0
  75. package/dist/tests/backwards-compatibility/helpers.js +150 -0
  76. package/dist/tests/backwards-compatibility/jest.setup.d.ts +2 -0
  77. package/dist/tests/backwards-compatibility/jest.setup.d.ts.map +1 -0
  78. package/dist/tests/backwards-compatibility/jest.setup.js +5 -0
  79. package/dist/tests/mock-server.d.ts +1 -0
  80. package/dist/tests/mock-server.d.ts.map +1 -0
  81. package/dist/tests/test-helpers.d.ts +1 -0
  82. package/dist/tests/test-helpers.d.ts.map +1 -0
  83. package/dist/tests/test-helpers.interfaces.d.ts +1 -0
  84. package/dist/tests/test-helpers.interfaces.d.ts.map +1 -0
  85. package/dist/tests/timeout-handling/extraction.d.ts +1 -0
  86. package/dist/tests/timeout-handling/extraction.d.ts.map +1 -0
  87. package/dist/tests/timeout-handling/timeout-1.d.ts +1 -0
  88. package/dist/tests/timeout-handling/timeout-1.d.ts.map +1 -0
  89. package/dist/tests/timeout-handling/timeout-1.test.d.ts +1 -0
  90. package/dist/tests/timeout-handling/timeout-1.test.d.ts.map +1 -0
  91. package/dist/tests/timeout-handling/timeout-2.d.ts +1 -0
  92. package/dist/tests/timeout-handling/timeout-2.d.ts.map +1 -0
  93. package/dist/tests/timeout-handling/timeout-2.test.d.ts +1 -0
  94. package/dist/tests/timeout-handling/timeout-2.test.d.ts.map +1 -0
  95. package/dist/tests/timeout-handling/timeout-3a.d.ts +1 -0
  96. package/dist/tests/timeout-handling/timeout-3a.d.ts.map +1 -0
  97. package/dist/tests/timeout-handling/timeout-3a.test.d.ts +1 -0
  98. package/dist/tests/timeout-handling/timeout-3a.test.d.ts.map +1 -0
  99. package/dist/tests/timeout-handling/timeout-3b.d.ts +1 -0
  100. package/dist/tests/timeout-handling/timeout-3b.d.ts.map +1 -0
  101. package/dist/tests/timeout-handling/timeout-3b.test.d.ts +1 -0
  102. package/dist/tests/timeout-handling/timeout-3b.test.d.ts.map +1 -0
  103. package/dist/types/common.d.ts +1 -0
  104. package/dist/types/common.d.ts.map +1 -0
  105. package/dist/types/extraction.d.ts +5 -0
  106. package/dist/types/extraction.d.ts.map +1 -0
  107. package/dist/types/extraction.test.d.ts +1 -0
  108. package/dist/types/extraction.test.d.ts.map +1 -0
  109. package/dist/types/index.d.ts +3 -0
  110. package/dist/types/index.d.ts.map +1 -0
  111. package/dist/types/index.js +4 -1
  112. package/dist/types/loading.d.ts +1 -0
  113. package/dist/types/loading.d.ts.map +1 -0
  114. package/dist/types/workers.d.ts +1 -0
  115. package/dist/types/workers.d.ts.map +1 -0
  116. package/dist/uploader/uploader.d.ts +1 -0
  117. package/dist/uploader/uploader.d.ts.map +1 -0
  118. package/dist/uploader/uploader.interfaces.d.ts +1 -0
  119. package/dist/uploader/uploader.interfaces.d.ts.map +1 -0
  120. package/dist/uploader/uploader.test.d.ts +1 -0
  121. package/dist/uploader/uploader.test.d.ts.map +1 -0
  122. package/dist/workers/create-worker.d.ts +1 -0
  123. package/dist/workers/create-worker.d.ts.map +1 -0
  124. package/dist/workers/create-worker.test.d.ts +1 -0
  125. package/dist/workers/create-worker.test.d.ts.map +1 -0
  126. package/dist/workers/default-workers/attachments-deletion.d.ts +1 -0
  127. package/dist/workers/default-workers/attachments-deletion.d.ts.map +1 -0
  128. package/dist/workers/default-workers/attachments-extraction.d.ts +1 -0
  129. package/dist/workers/default-workers/attachments-extraction.d.ts.map +1 -0
  130. package/dist/workers/default-workers/data-deletion.d.ts +1 -0
  131. package/dist/workers/default-workers/data-deletion.d.ts.map +1 -0
  132. package/dist/workers/default-workers/data-extraction.d.ts +1 -0
  133. package/dist/workers/default-workers/data-extraction.d.ts.map +1 -0
  134. package/dist/workers/default-workers/delete-loader-attachment-state.d.ts +1 -0
  135. package/dist/workers/default-workers/delete-loader-attachment-state.d.ts.map +1 -0
  136. package/dist/workers/default-workers/delete-loader-state.d.ts +1 -0
  137. package/dist/workers/default-workers/delete-loader-state.d.ts.map +1 -0
  138. package/dist/workers/default-workers/external-sync-units-extraction.d.ts +1 -0
  139. package/dist/workers/default-workers/external-sync-units-extraction.d.ts.map +1 -0
  140. package/dist/workers/default-workers/load-attachments.d.ts +1 -0
  141. package/dist/workers/default-workers/load-attachments.d.ts.map +1 -0
  142. package/dist/workers/default-workers/load-data.d.ts +1 -0
  143. package/dist/workers/default-workers/load-data.d.ts.map +1 -0
  144. package/dist/workers/default-workers/metadata-extraction.d.ts +1 -0
  145. package/dist/workers/default-workers/metadata-extraction.d.ts.map +1 -0
  146. package/dist/workers/dummy-extractor/data-normalization.d.ts +1 -0
  147. package/dist/workers/dummy-extractor/data-normalization.d.ts.map +1 -0
  148. package/dist/workers/process-task.d.ts +1 -0
  149. package/dist/workers/process-task.d.ts.map +1 -0
  150. package/dist/workers/spawn.d.ts +1 -0
  151. package/dist/workers/spawn.d.ts.map +1 -0
  152. package/dist/workers/worker-adapter.d.ts +14 -10
  153. package/dist/workers/worker-adapter.d.ts.map +1 -0
  154. package/dist/workers/worker-adapter.js +20 -16
  155. package/dist/workers/worker-adapter.test.d.ts +1 -0
  156. package/dist/workers/worker-adapter.test.d.ts.map +1 -0
  157. package/dist/workers/worker.d.ts +1 -0
  158. package/dist/workers/worker.d.ts.map +1 -0
  159. package/package.json +7 -3
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkFunctionCompatibility = checkFunctionCompatibility;
4
+ const api_extractor_model_1 = require("@microsoft/api-extractor-model");
5
+ const helpers_1 = require("./helpers");
6
+ function checkFunctionCompatibility(newFunction, currentFunction) {
7
+ var _a;
8
+ const lengthOfPreviousParameters = currentFunction.parameters.length;
9
+ it(`Function ${newFunction.displayName} should have at least as many parameters as the current function`, () => {
10
+ expect(newFunction.parameters.length).toBeGreaterThanOrEqual(currentFunction.parameters.length);
11
+ });
12
+ it(`Function ${newFunction.displayName} should have parameters in the same order as the current function`, () => {
13
+ const newFunctionParamNames = newFunction.parameters.slice(0, lengthOfPreviousParameters).map((p) => p.name);
14
+ const currentFunctionParamNames = currentFunction.parameters.map((p) => p.name);
15
+ expect(newFunctionParamNames).toEqual(currentFunctionParamNames);
16
+ });
17
+ it(`Function ${newFunction.displayName} should have compatible parameter types with the current function`, () => {
18
+ const newFunctionParamTypes = newFunction.parameters.slice(0, lengthOfPreviousParameters).map((p) => p.parameterTypeExcerpt.text);
19
+ const currentFunctionParameterTypes = currentFunction.parameters.map((p) => p.parameterTypeExcerpt.text);
20
+ expect(newFunctionParamTypes).toEqual(currentFunctionParameterTypes);
21
+ });
22
+ // Check return type compatibility
23
+ // This check fails if it's a constructor, as those don't have a return type
24
+ if (currentFunction instanceof api_extractor_model_1.ApiFunction && newFunction instanceof api_extractor_model_1.ApiFunction) {
25
+ if (!((_a = currentFunction.returnTypeExcerpt) === null || _a === void 0 ? void 0 : _a.isEmpty)) {
26
+ it(`Function ${newFunction.displayName} should have the same return type as the current function`, () => {
27
+ expect(newFunction.returnTypeExcerpt.text).toEqual(currentFunction.returnTypeExcerpt.text);
28
+ });
29
+ }
30
+ }
31
+ it(`Function ${newFunction.displayName} should have all new parameters as optional`, () => {
32
+ const newParameters = newFunction.parameters.slice(lengthOfPreviousParameters);
33
+ expect(newParameters.every((p) => p.isOptional)).toBe(true);
34
+ });
35
+ it(`Function ${newFunction.displayName} should not have any optional parameters that became required`, () => {
36
+ const minLength = Math.min(newFunction.parameters.length, currentFunction.parameters.length);
37
+ for (let i = 0; i < minLength; i++) {
38
+ const newParam = newFunction.parameters[i];
39
+ const currentParam = currentFunction.parameters[i];
40
+ // If current parameter was optional, new parameter should also be optional
41
+ if (currentParam.isOptional && !newParam.isOptional) {
42
+ throw new Error(`Parameter ${newParam.name} became required but was optional`);
43
+ }
44
+ }
45
+ });
46
+ }
47
+ describe('Backwards Compatibility', () => {
48
+ let failure = false;
49
+ afterEach(() => {
50
+ var _a;
51
+ // Check if current test failed
52
+ if (expect.getState().currentTestName &&
53
+ ((_a = expect.getState().suppressedErrors) === null || _a === void 0 ? void 0 : _a.length) > 0) {
54
+ failure = true;
55
+ }
56
+ });
57
+ describe('Exports', () => {
58
+ describe('should verify that all exports in current are still in new', () => {
59
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
60
+ const newExports = newApiMembers.map((m) => m.displayName);
61
+ const currentExports = currentApiMembers.map((m) => m.displayName);
62
+ it.each(currentExports)('should contain export: %s', (exportName) => {
63
+ expect(newExports).toContain(exportName);
64
+ });
65
+ });
66
+ });
67
+ describe('Functions', () => {
68
+ describe('should have all current functions exported in new', () => {
69
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
70
+ const newFunctions = (0, helpers_1.getFunctions)(newApiMembers);
71
+ const currentFunctions = (0, helpers_1.getFunctions)(currentApiMembers);
72
+ const newFunctionNames = newFunctions.map(f => f.name);
73
+ for (const currentFunction of currentFunctions) {
74
+ it(`should contain function: ${currentFunction.name}`, () => {
75
+ expect(newFunctionNames).toContain(currentFunction.name);
76
+ });
77
+ }
78
+ });
79
+ describe('should verify function compatibility for each function', () => {
80
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
81
+ const newFunctions = (0, helpers_1.getFunctions)(newApiMembers);
82
+ const currentFunctions = (0, helpers_1.getFunctions)(currentApiMembers);
83
+ for (const newFunction of newFunctions) {
84
+ const currentFunction = currentFunctions.find((f) => f.name === newFunction.name);
85
+ // Skip if function doesn't exist in current API
86
+ if (!currentFunction) {
87
+ continue;
88
+ }
89
+ checkFunctionCompatibility(newFunction, currentFunction);
90
+ }
91
+ // TODO: Check that optional promotion works only one way (no required parameters becoming optional, but optional parameters can become required)
92
+ // TODO: Check that function overloads weren't removed
93
+ // TODO: Verify that function parameter destructuring patterns maintain compatibility
94
+ // TODO: Check that function parameter default values don't change in breaking ways
95
+ });
96
+ });
97
+ describe('Classes', () => {
98
+ describe('should verify class property counts and compatibility', () => {
99
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
100
+ const newClasses = (0, helpers_1.getClasses)(newApiMembers);
101
+ const currentClasses = (0, helpers_1.getClasses)(currentApiMembers);
102
+ for (const newClass of newClasses) {
103
+ const currentClass = currentClasses.find((c) => c.name === newClass.name);
104
+ // Skip if class doesn't exist in current API
105
+ if (!currentClass) {
106
+ continue;
107
+ }
108
+ const newClassProperties = (0, helpers_1.getProperties)(newClass.members);
109
+ const currentClassProperties = (0, helpers_1.getProperties)(currentClass.members);
110
+ describe(`Class ${newClass.name} should have at least all public properties from the current class`, () => {
111
+ const newPropertyNames = newClassProperties.map(p => p.name);
112
+ for (const currentProperty of currentClassProperties) {
113
+ it(`should contain property: ${currentProperty.name}`, () => {
114
+ expect(newPropertyNames).toContain(currentProperty.name);
115
+ });
116
+ }
117
+ });
118
+ describe(`Class ${newClass.name} should not have any optional properties that became required`, () => {
119
+ for (const currentProperty of currentClassProperties) {
120
+ it(`should not have optional property that became required: ${currentProperty.name}`, () => {
121
+ const newProperty = newClassProperties.find(p => p.name === currentProperty.name);
122
+ if (newProperty && currentProperty.isOptional) {
123
+ // If the current property was optional, the new property should also be optional
124
+ expect(newProperty.isOptional).toBe(true);
125
+ }
126
+ });
127
+ }
128
+ });
129
+ // Check property compatibility
130
+ const oldProperties = currentClassProperties;
131
+ const newProperties = newClassProperties;
132
+ for (const newProperty of newProperties) {
133
+ const currentProperty = oldProperties.find((p) => p.name === newProperty.name);
134
+ // If the property is new, there's no need to check for compatibility
135
+ if (!currentProperty) {
136
+ continue;
137
+ }
138
+ it(`Class ${newClass.name} property ${newProperty.name} should have the same type as the current property`, () => {
139
+ expect(newProperty.propertyTypeExcerpt.text).toEqual(currentProperty.propertyTypeExcerpt.text);
140
+ });
141
+ it(`Class ${newClass.name} property ${newProperty.name} should have the same optionality as the current property`, () => {
142
+ expect(newProperty.isOptional).toEqual(currentProperty.isOptional);
143
+ });
144
+ }
145
+ // Check constructor signature compatibility (same rules as functions)
146
+ const currentMethod = (0, helpers_1.getConstructor)(currentClass.members);
147
+ const newMethod = (0, helpers_1.getConstructor)(newClass.members);
148
+ checkFunctionCompatibility(newMethod, currentMethod);
149
+ // Check method count
150
+ const newClassMethods = (0, helpers_1.getFunctions)(newClass.members);
151
+ const currentClassMethods = (0, helpers_1.getFunctions)(currentClass.members);
152
+ describe(`Class ${newClass.name} should export all public methods from the current class`, () => {
153
+ const newMethodNames = newClassMethods.map(m => m.name);
154
+ for (const currentMethod of currentClassMethods) {
155
+ it(`should contain method: ${currentMethod.name}`, () => {
156
+ expect(newMethodNames).toContain(currentMethod.name);
157
+ });
158
+ }
159
+ });
160
+ // Check method compatibility (same rules as functions)
161
+ // Make sure to allow optional parameters to be added to the end
162
+ for (const newMethod of newClassMethods) {
163
+ const currentMethod = currentClassMethods.find((m) => m.name === newMethod.name);
164
+ // If the method is new, there's no need to check for compatibility
165
+ if (!currentMethod) {
166
+ continue;
167
+ }
168
+ checkFunctionCompatibility(newMethod, currentMethod);
169
+ }
170
+ // TODO: Verify class inheritance hierarchy hasn't changed in breaking ways
171
+ // TODO: Check that class mixins maintain their composition behavior
172
+ // TODO: Verify that abstract class methods remain abstract or are properly implemented
173
+ }
174
+ });
175
+ });
176
+ describe('Interfaces', () => {
177
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
178
+ const newInterfaces = (0, helpers_1.getInterfaces)(newApiMembers);
179
+ const currentInterfaces = (0, helpers_1.getInterfaces)(currentApiMembers);
180
+ describe('should verify interface property counts and compatibility', () => {
181
+ for (const newInterface of newInterfaces) {
182
+ const currentInterface = currentInterfaces.find((i) => i.name === newInterface.name);
183
+ if (!currentInterface) {
184
+ continue;
185
+ }
186
+ const newInterfaceProperties = (0, helpers_1.getPropertySignatures)(newInterface.members);
187
+ const currentInterfaceProperties = (0, helpers_1.getPropertySignatures)(currentInterface.members);
188
+ it(`Interface ${newInterface.name} should have at least as many properties as the current interface`, () => {
189
+ expect(newInterfaceProperties.length).toBeGreaterThanOrEqual(currentInterfaceProperties.length);
190
+ });
191
+ it(`Interface ${newInterface.name} should not have any optional properties that became required`, () => {
192
+ const requiredProperties = newInterfaceProperties.filter((p) => !p.isOptional);
193
+ expect(requiredProperties.length).toBeLessThanOrEqual(currentInterfaceProperties.filter((p) => !p.isOptional).length);
194
+ });
195
+ // Check property compatibility
196
+ const oldProperties = currentInterfaceProperties;
197
+ const newProperties = newInterfaceProperties;
198
+ for (const newProperty of newProperties) {
199
+ const currentProperty = oldProperties.find((p) => p.name === newProperty.name);
200
+ // If the property is new, there's no need to check for compatibility
201
+ if (!currentProperty) {
202
+ continue;
203
+ }
204
+ it(`Interface ${newInterface.name} property ${newProperty.name} should have the same type as the current property`, () => {
205
+ expect(newProperty.propertyTypeExcerpt.text).toEqual(currentProperty.propertyTypeExcerpt.text);
206
+ });
207
+ it(`Interface ${newInterface.name} property ${newProperty.name} should have not been made required if it was optional`, () => {
208
+ // If the new property is required, it must have been required before.
209
+ // Otherwise we break backwards-compatibility.
210
+ expect(
211
+ // If it was required before, it can be either now.
212
+ !currentProperty.isOptional ||
213
+ // If it was optional before, it can only be optional now.
214
+ newProperty.isOptional).toEqual(true);
215
+ });
216
+ }
217
+ // Check method count
218
+ const newInterfaceMethods = (0, helpers_1.getMethodSignatures)(newInterface.members);
219
+ const currentInterfaceMethods = (0, helpers_1.getMethodSignatures)(currentInterface.members);
220
+ it(`Interface ${newInterface.name} should have at least as many public methods as the current interface`, () => {
221
+ expect(newInterfaceMethods.length).toBeGreaterThanOrEqual(currentInterfaceMethods.length);
222
+ });
223
+ // Check method compatibility (same rules as functions)
224
+ // Make sure to allow optional parameters to be added to the end
225
+ for (const newMethod of newInterfaceMethods) {
226
+ const currentMethod = currentInterfaceMethods.find((m) => m.name === newMethod.name);
227
+ // If the method is new, there's no need to check for compatibility
228
+ if (!currentMethod) {
229
+ continue;
230
+ }
231
+ checkFunctionCompatibility(newMethod, currentMethod);
232
+ }
233
+ }
234
+ });
235
+ // TODO: Verify interface inheritance hierarchy hasn't changed
236
+ // TODO: Check that interface merging behavior is preserved
237
+ // TODO: Verify that interface index signatures maintain their key/value types
238
+ });
239
+ describe('Enums', () => {
240
+ let newEnums;
241
+ let currentEnums;
242
+ describe('should verify enum value counts and existence', () => {
243
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
244
+ newEnums = (0, helpers_1.getEnums)(newApiMembers);
245
+ currentEnums = (0, helpers_1.getEnums)(currentApiMembers);
246
+ // Verify no enum values were removed
247
+ for (const newEnum of newEnums) {
248
+ const currentEnum = currentEnums.find((e) => e.name === newEnum.name);
249
+ // If it's a new enum, there's no need to check for compatibility
250
+ if (!currentEnum) {
251
+ continue;
252
+ }
253
+ const currentEnumValues = currentEnum.members;
254
+ const newEnumValues = newEnum.members;
255
+ it(`Enum ${newEnum.name} should have at least as many enum values as the current enum`, () => {
256
+ expect(newEnumValues.length).toBeGreaterThanOrEqual(currentEnumValues.length);
257
+ });
258
+ for (const currentEnumValue of currentEnumValues) {
259
+ const newEnumValue = newEnumValues.find((v) => v.name === currentEnumValue.name);
260
+ // If it's a new enum value, there's no need to check for compatibility
261
+ if (!newEnumValue) {
262
+ continue;
263
+ }
264
+ it(`Enum ${newEnum.name} should contain enum value: ${currentEnumValue.name}`, () => {
265
+ expect(newEnumValue).toBeDefined();
266
+ });
267
+ }
268
+ }
269
+ });
270
+ // Verify numeric enum values haven't changed (if numeric enum)
271
+ describe('should verify numeric enum values have not changed', () => {
272
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
273
+ newEnums = (0, helpers_1.getEnums)(newApiMembers);
274
+ currentEnums = (0, helpers_1.getEnums)(currentApiMembers);
275
+ for (const newEnum of newEnums) {
276
+ const currentEnum = currentEnums.find((e) => e.name === newEnum.name);
277
+ // If it's a new enum, there's no need to check for compatibility
278
+ if (!currentEnum) {
279
+ continue;
280
+ }
281
+ // Helper function to determine if an enum is numeric based on its members' initializer values
282
+ const isNumericEnum = (enumMembers) => {
283
+ return enumMembers.every((member) => {
284
+ var _a, _b, _c;
285
+ // Check if the member has an initializer and if it's a numeric value
286
+ const initializerText = (_c = (_b = (_a = member.excerptTokens) === null || _a === void 0 ? void 0 : _a.find(token => token.kind === 'Content' && /^\d+$/.test(token.text.trim()))) === null || _b === void 0 ? void 0 : _b.text) === null || _c === void 0 ? void 0 : _c.trim();
287
+ return initializerText !== undefined && /^\d+$/.test(initializerText);
288
+ });
289
+ };
290
+ const newEnumNumeric = isNumericEnum([...newEnum.members]);
291
+ const currentEnumNumeric = isNumericEnum([...currentEnum.members]);
292
+ it(`Enum ${newEnum.name} should have the same numeric type as the current enum`, () => {
293
+ expect(newEnumNumeric).toBe(currentEnumNumeric);
294
+ });
295
+ const currentEnumValues = currentEnum.members;
296
+ const newEnumValues = newEnum.members;
297
+ it(`Enum ${newEnum.name} should have at least as many enum values as the current enum`, () => {
298
+ expect(newEnumValues.length).toBeGreaterThanOrEqual(currentEnumValues.length);
299
+ });
300
+ for (const currentEnumValue of currentEnumValues) {
301
+ const newEnumValue = newEnumValues.find((v) => v.name === currentEnumValue.name);
302
+ // If it's not defined, an existing value is missing from the new enum
303
+ it(`Enum ${newEnum.name} should contain enum value: ${currentEnumValue.name}`, () => {
304
+ expect(newEnumValue).toBeDefined();
305
+ });
306
+ it(`Enum ${newEnum.name} should have the same value for enum member: ${currentEnumValue.name}`, () => {
307
+ var _a, _b;
308
+ // Both can be undefined, but they should always equal each other
309
+ const newValue = (_a = newEnumValue.initializerExcerpt) === null || _a === void 0 ? void 0 : _a.text;
310
+ const currentValue = (_b = currentEnumValue.initializerExcerpt) === null || _b === void 0 ? void 0 : _b.text;
311
+ expect(newValue).toEqual(currentValue);
312
+ });
313
+ }
314
+ }
315
+ });
316
+ // TODO: Check that new enum values were only added at the end (best practice)
317
+ // TODO: Verify that const enums maintain their compile-time behavior
318
+ // TODO: Check that enum member values don't change in breaking ways
319
+ describe('should verify enum value types have been added to the end', () => {
320
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
321
+ newEnums = (0, helpers_1.getEnums)(newApiMembers);
322
+ currentEnums = (0, helpers_1.getEnums)(currentApiMembers);
323
+ for (const newEnum of newEnums) {
324
+ const currentEnum = currentEnums.find((e) => e.name === newEnum.name);
325
+ // If it's a new enum, there's no need to check for compatibility
326
+ if (!currentEnum) {
327
+ continue;
328
+ }
329
+ const currentEnumValues = currentEnum.members.map((a) => a.name);
330
+ const newEnumValues = newEnum.members.slice(0, currentEnumValues.length).map((a) => a.name);
331
+ // This might appear to not be working sometimes, but remember that the order of enum values is determined by the enum member key name
332
+ it(`Enum ${newEnum.name} should have added new options to the end of the array`, () => {
333
+ expect(newEnumValues).toStrictEqual(currentEnumValues);
334
+ });
335
+ }
336
+ });
337
+ });
338
+ describe('Types', () => {
339
+ const { newApiMembers, currentApiMembers } = (0, helpers_1.loadApiData)();
340
+ const newTypes = (0, helpers_1.getTypes)(newApiMembers);
341
+ const currentTypes = (0, helpers_1.getTypes)(currentApiMembers);
342
+ // Verify type aliases weren't removed
343
+ describe('should verify type aliases weren\'t removed', () => {
344
+ for (const newType of newTypes) {
345
+ const currentType = currentTypes.find((t) => t.name === newType.name);
346
+ if (!currentType) {
347
+ continue;
348
+ }
349
+ it(`Type ${newType.name} should not have been removed`, () => {
350
+ expect(currentType).toBeDefined();
351
+ });
352
+ }
353
+ });
354
+ // Verify that the type alias is the same as the current type alias
355
+ describe('should verify type aliases are the same as the current type aliases', () => {
356
+ for (const newType of newTypes) {
357
+ const currentType = currentTypes.find((t) => t.name === newType.name);
358
+ if (!currentType) {
359
+ continue;
360
+ }
361
+ it(`Type ${newType.name} should have the same type as the current type`, () => {
362
+ // Replace all whitespace with an empty string to ignore whitespace differences
363
+ expect(newType.typeExcerpt.text.replace(/\s/g, "")).toEqual(currentType.typeExcerpt.text.replace(/\s/g, ""));
364
+ });
365
+ }
366
+ });
367
+ // TODO: Verify union types didn't become more restrictive (no types removed from union)
368
+ // TODO: Verify intersection types didn't become more permissive (no required types removed)
369
+ // TODO: Check generic type parameter compatibility
370
+ });
371
+ describe('Method Signatures', () => {
372
+ // TODO: Verify generic constraints haven't become more restrictive
373
+ // TODO: Check that default parameter values are still compatible
374
+ // TODO: Verify rest parameters (...args) compatibility
375
+ // TODO: Check function signature overloads
376
+ });
377
+ describe('Generics', () => {
378
+ // TODO: Verify generic type parameters weren't removed
379
+ // TODO: Check that generic constraints didn't become more restrictive
380
+ // TODO: Verify generic parameter names haven't changed (affects explicit type arguments)
381
+ // TODO: Check variance compatibility (covariant/contravariant)
382
+ });
383
+ describe('Property Types', () => {
384
+ // TODO: Check readonly properties didn't become mutable (or vice versa in breaking way)
385
+ // TODO: Verify array types compatibility (T[] vs Array<T>)
386
+ // TODO: Check Promise/async compatibility
387
+ // TODO: Verify callback function signature compatibility
388
+ });
389
+ describe('Accessibility', () => {
390
+ // TODO: Verify public members didn't become private/protected
391
+ // TODO: Check that protected members didn't become private
392
+ // TODO: Ensure no breaking changes in static vs instance members
393
+ });
394
+ afterAll(() => {
395
+ // If there are any failures, don't update the current API baseline files
396
+ if (failure) {
397
+ return;
398
+ }
399
+ (0, helpers_1.updateCurrentApiJson)();
400
+ });
401
+ });
@@ -0,0 +1,21 @@
1
+ import { ApiClass, ApiConstructor, ApiEnum, ApiFunction, ApiInterface, ApiItem, ApiMethodSignature, ApiProperty, ApiPropertySignature, ApiTypeAlias } from '@microsoft/api-extractor-model';
2
+ export declare const newApiMdPath: string;
3
+ export declare const currentApiMdPath: string;
4
+ export declare const newApiJsonPath: string;
5
+ export declare const currentApiJsonPath: string;
6
+ export declare function generateApiReport(): void;
7
+ export declare const loadApiData: () => {
8
+ newApiMembers: readonly ApiItem[];
9
+ currentApiMembers: readonly ApiItem[];
10
+ };
11
+ export declare const getFunctions: (members: readonly ApiItem[]) => ApiFunction[];
12
+ export declare const getConstructor: (members: readonly ApiItem[]) => ApiConstructor;
13
+ export declare const getEnums: (members: readonly ApiItem[]) => ApiEnum[];
14
+ export declare const getClasses: (members: readonly ApiItem[]) => ApiClass[];
15
+ export declare const getProperties: (members: readonly ApiItem[]) => ApiProperty[];
16
+ export declare const getTypes: (members: readonly ApiItem[]) => ApiTypeAlias[];
17
+ export declare const getInterfaces: (members: readonly ApiItem[]) => ApiInterface[];
18
+ export declare const getMethodSignatures: (members: readonly ApiItem[]) => ApiMethodSignature[];
19
+ export declare const getPropertySignatures: (members: readonly ApiItem[]) => ApiPropertySignature[];
20
+ export declare const updateCurrentApiJson: () => void;
21
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/tests/backwards-compatibility/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,OAAO,EAEP,WAAW,EACX,YAAY,EACZ,OAAO,EACP,kBAAkB,EAElB,WAAW,EACX,oBAAoB,EACpB,YAAY,EAEb,MAAM,gCAAgC,CAAC;AAMxC,eAAO,MAAM,YAAY,QAA8C,CAAC;AACxE,eAAO,MAAM,gBAAgB,QAAsC,CAAC;AACpE,eAAO,MAAM,cAAc,QAAoD,CAAC;AAChF,eAAO,MAAM,kBAAkB,QAAsC,CAAC;AAGtE,wBAAgB,iBAAiB,IAAI,IAAI,CAkDxC;AAGD,eAAO,MAAM,WAAW,QAAO;IAAE,aAAa,EAAE,SAAS,OAAO,EAAE,CAAC;IAAC,iBAAiB,EAAE,SAAS,OAAO,EAAE,CAAA;CAoBxG,CAAC;AAGF,eAAO,MAAM,YAAY,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,WAAW,EAErE,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,cAE5D,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,OAAO,EAE7D,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,QAAQ,EAEhE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,WAAW,EAEtE,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,YAAY,EAElE,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,YAAY,EAEvE,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,kBAAkB,EAEnF,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,SAAS,OAAO,EAAE,KAAG,oBAAoB,EAEvF,CAAA;AAGD,eAAO,MAAM,oBAAoB,YAYhC,CAAA"}
@@ -0,0 +1,150 @@
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
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.updateCurrentApiJson = exports.getPropertySignatures = exports.getMethodSignatures = exports.getInterfaces = exports.getTypes = exports.getProperties = exports.getClasses = exports.getEnums = exports.getConstructor = exports.getFunctions = exports.loadApiData = exports.currentApiJsonPath = exports.newApiJsonPath = exports.currentApiMdPath = exports.newApiMdPath = void 0;
37
+ exports.generateApiReport = generateApiReport;
38
+ const api_extractor_1 = require("@microsoft/api-extractor");
39
+ const api_extractor_model_1 = require("@microsoft/api-extractor-model");
40
+ const fs = __importStar(require("fs"));
41
+ const node_child_process_1 = require("node:child_process");
42
+ const path = __importStar(require("path"));
43
+ exports.newApiMdPath = path.join(__dirname, 'temp', 'ts-adaas.md');
44
+ exports.currentApiMdPath = path.join(__dirname, 'ts-adaas.md');
45
+ exports.newApiJsonPath = path.join(__dirname, 'temp', 'ts-adaas.api.json');
46
+ exports.currentApiJsonPath = path.join(__dirname, 'latest.json');
47
+ // Generate API report before all tests run
48
+ function generateApiReport() {
49
+ // Before running the api extractor, make sure that the code compiles using `tsc` command
50
+ const tscCommand = 'npm run build';
51
+ try {
52
+ (0, node_child_process_1.execSync)(tscCommand);
53
+ }
54
+ catch (error) {
55
+ // Jest has a nice feature: if any of the setup scripts throw an error, the test run will fail
56
+ // This Error is rethrown to get more information from the error.
57
+ throw new Error(`Failed to compile code using tsc command:\n${error.stdout.toString()}`);
58
+ }
59
+ const apiExtractorJsonPath = path.join(__dirname, 'api-extractor.json');
60
+ // Ensure the temp and report directories exist
61
+ const tempDir = path.join(__dirname, 'temp');
62
+ const reportDir = path.join(__dirname, 'report');
63
+ if (!fs.existsSync(tempDir)) {
64
+ fs.mkdirSync(tempDir, { recursive: true });
65
+ console.log(`Created temp directory: ${tempDir}`);
66
+ }
67
+ if (!fs.existsSync(reportDir)) {
68
+ fs.mkdirSync(reportDir, { recursive: true });
69
+ console.log(`Created report directory: ${reportDir}`);
70
+ }
71
+ const extractorConfig = api_extractor_1.ExtractorConfig.loadFileAndPrepare(apiExtractorJsonPath);
72
+ const extractorResult = api_extractor_1.Extractor.invoke(extractorConfig, {
73
+ localBuild: true,
74
+ showVerboseMessages: false,
75
+ });
76
+ if (extractorResult.succeeded) {
77
+ console.log(`API Extractor completed successfully`);
78
+ process.exitCode = 0;
79
+ }
80
+ else {
81
+ console.error(`API Extractor completed with ${extractorResult.errorCount} errors` +
82
+ ` and ${extractorResult.warningCount} warnings`);
83
+ process.exitCode = 1;
84
+ }
85
+ }
86
+ // Helper function to load API data
87
+ const loadApiData = () => {
88
+ if (!fs.existsSync(exports.newApiJsonPath)) {
89
+ throw new Error('New API reports not found. Run the generate-api-report test first.');
90
+ }
91
+ if (!fs.existsSync(exports.currentApiJsonPath)) {
92
+ throw new Error('Latest API baseline not found. Run backwards compatibility tests first to generate latest.json.');
93
+ }
94
+ const newApiModel = new api_extractor_model_1.ApiModel().loadPackage(exports.newApiJsonPath);
95
+ const newApiMembers = newApiModel.entryPoints[0].members;
96
+ const currentApiModel = new api_extractor_model_1.ApiModel().loadPackage(exports.currentApiJsonPath);
97
+ const currentApiMembers = currentApiModel.entryPoints[0].members;
98
+ return { newApiMembers, currentApiMembers };
99
+ };
100
+ exports.loadApiData = loadApiData;
101
+ // Helper functions for getting different kinds of items from the API members
102
+ const getFunctions = (members) => {
103
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiFunction && m.kind === 'Function');
104
+ };
105
+ exports.getFunctions = getFunctions;
106
+ const getConstructor = (members) => {
107
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiConstructor && m.kind === 'Constructor')[0];
108
+ };
109
+ exports.getConstructor = getConstructor;
110
+ const getEnums = (members) => {
111
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiEnum && m.kind === 'Enum');
112
+ };
113
+ exports.getEnums = getEnums;
114
+ const getClasses = (members) => {
115
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiClass && m.kind === 'Class');
116
+ };
117
+ exports.getClasses = getClasses;
118
+ const getProperties = (members) => {
119
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiProperty && m.kind === 'Property');
120
+ };
121
+ exports.getProperties = getProperties;
122
+ const getTypes = (members) => {
123
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiTypeAlias && m.kind === 'TypeAlias');
124
+ };
125
+ exports.getTypes = getTypes;
126
+ const getInterfaces = (members) => {
127
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiInterface && m.kind === 'Interface');
128
+ };
129
+ exports.getInterfaces = getInterfaces;
130
+ const getMethodSignatures = (members) => {
131
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiMethodSignature && m.kind === 'MethodSignature');
132
+ };
133
+ exports.getMethodSignatures = getMethodSignatures;
134
+ const getPropertySignatures = (members) => {
135
+ return members.filter((m) => m instanceof api_extractor_model_1.ApiPropertySignature && m.kind === 'PropertySignature');
136
+ };
137
+ exports.getPropertySignatures = getPropertySignatures;
138
+ const updateCurrentApiJson = () => {
139
+ if (fs.existsSync(exports.newApiMdPath) && fs.existsSync(exports.newApiJsonPath)) {
140
+ fs.copyFileSync(exports.newApiMdPath, exports.currentApiMdPath);
141
+ // Copy new API JSON into latest.json after all tests pass
142
+ const latestJsonPath = path.join(__dirname, 'latest.json');
143
+ fs.copyFileSync(exports.newApiJsonPath, latestJsonPath);
144
+ console.log(`Updated current API baseline files and created latest.json.`);
145
+ }
146
+ else {
147
+ console.warn('No new API reports found.');
148
+ }
149
+ };
150
+ exports.updateCurrentApiJson = updateCurrentApiJson;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../../src/tests/backwards-compatibility/jest.setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const helpers_1 = require("./helpers");
4
+ // Run the API report generation
5
+ (0, helpers_1.generateApiReport)();
@@ -18,3 +18,4 @@ export declare class MockServer {
18
18
  }[];
19
19
  clearRequests(): void;
20
20
  }
21
+ //# sourceMappingURL=mock-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-server.d.ts","sourceRoot":"","sources":["../../src/tests/mock-server.ts"],"names":[],"mappings":"AAGA,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAA0D;gBAE9D,IAAI,CAAC,EAAE,MAAM;IAIzB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,aAAa;IA8Nf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,UAAU,IAAI,MAAM;IAIpB,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM,EAAE;IAI1B,WAAW;gBA9RuB,MAAM;aAAO,MAAM;eAAS,GAAG;;IAkSjE,aAAa;CAGd"}
@@ -7,3 +7,4 @@ export declare function createItems(count: number): Item[];
7
7
  export declare function normalizeItem(item: Item): NormalizedItem;
8
8
  export declare function createAttachment(id: number): NormalizedAttachment;
9
9
  export declare function createAttachments(count: number): NormalizedAttachment[];
10
+ //# sourceMappingURL=test-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../src/tests/test-helpers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,IAAI,EACJ,oBAAoB,EACpB,cAAc,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,iBAAsB,EACtB,QAAQ,EACR,KAAK,EACL,KAAK,EACL,gBAAqB,EACrB,gBAAqB,EACrB,qBAA0B,EAC1B,0BAA+B,GAChC,EAAE,oBAAoB,GAAG,YAAY,CA4ErC;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAO3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,CAEjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,CASxD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,oBAAoB,CAQjE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAEvE"}
@@ -11,3 +11,4 @@ export interface CreateEventInterface {
11
11
  eventContextOverrides?: Partial<EventContext>;
12
12
  executionMetadataOverrides?: Partial<AirdropEvent['execution_metadata']>;
13
13
  }
14
+ //# sourceMappingURL=test-helpers.interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-helpers.interfaces.d.ts","sourceRoot":"","sources":["../../src/tests/test-helpers.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,gBAAgB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,qBAAqB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9C,0BAA0B,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC;CAC1E"}
@@ -1,3 +1,4 @@
1
1
  import { AirdropEvent } from '../../index';
2
2
  declare const run: (events: AirdropEvent[], workerPath: string) => Promise<void>;
3
3
  export default run;
4
+ //# sourceMappingURL=extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../../src/tests/timeout-handling/extraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAS,MAAM,aAAa,CAAC;AAMlD,QAAA,MAAM,GAAG,GAAU,QAAQ,YAAY,EAAE,EAAE,YAAY,MAAM,kBAc5D,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=timeout-1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout-1.d.ts","sourceRoot":"","sources":["../../../src/tests/timeout-handling/timeout-1.ts"],"names":[],"mappings":""}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=timeout-1.test.d.ts.map