@resistdesign/voltra 3.0.0-alpha.3 → 3.0.0-alpha.4

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 (225) hide show
  1. package/README.md +75 -0
  2. package/SearchTypes-DjN6YQzE.d.ts +577 -0
  3. package/Types-C7XjUjoF.d.ts +240 -0
  4. package/Validation-CFP59oIP.d.ts +226 -0
  5. package/api/index.d.ts +6 -0
  6. package/api/index.js +7968 -0
  7. package/app/index.d.ts +5 -0
  8. package/app/index.js +810 -0
  9. package/common/Testing/CLI.js +432 -0
  10. package/common/index.d.ts +4 -0
  11. package/common/index.js +1760 -0
  12. package/iac/index.d.ts +2 -0
  13. package/iac/index.js +1661 -0
  14. package/iac/packs/index.d.ts +1 -0
  15. package/iac/packs/index.js +1620 -0
  16. package/index-BkFZlfit.d.ts +112 -0
  17. package/index-C3-iD9Mh.d.ts +690 -0
  18. package/index-DZ2BB4iX.d.ts +5357 -0
  19. package/{src/iac/types/IaCTypes.d.ts → index-DcvJOZ_c.d.ts} +1018 -23
  20. package/index-IokxSNxm.d.ts +745 -0
  21. package/index.d.ts +13 -0
  22. package/index.js +10973 -0
  23. package/package.json +40 -41
  24. package/src/api/DataAccessControl.d.ts +0 -85
  25. package/src/api/DataAccessControl.js +0 -159
  26. package/src/api/ORM/DACUtils.d.ts +0 -60
  27. package/src/api/ORM/DACUtils.js +0 -197
  28. package/src/api/ORM/ListItemUtils.d.ts +0 -7
  29. package/src/api/ORM/ListItemUtils.js +0 -22
  30. package/src/api/ORM/ORMRouteMap.d.ts +0 -19
  31. package/src/api/ORM/ORMRouteMap.js +0 -82
  32. package/src/api/ORM/TypeInfoORMService.d.ts +0 -103
  33. package/src/api/ORM/TypeInfoORMService.js +0 -581
  34. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.d.ts +0 -63
  35. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.js +0 -2
  36. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.d.ts +0 -36
  37. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.js +0 -282
  38. package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.d.ts +0 -90
  39. package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.js +0 -2
  40. package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.d.ts +0 -45
  41. package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.js +0 -127
  42. package/src/api/ORM/drivers/S3FileItemDBDriver.d.ts +0 -44
  43. package/src/api/ORM/drivers/S3FileItemDBDriver.js +0 -182
  44. package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +0 -12
  45. package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.js +0 -20
  46. package/src/api/ORM/drivers/common/Types.d.ts +0 -77
  47. package/src/api/ORM/drivers/common/Types.js +0 -14
  48. package/src/api/ORM/drivers/common/index.d.ts +0 -2
  49. package/src/api/ORM/drivers/common/index.js +0 -18
  50. package/src/api/ORM/drivers/index.d.ts +0 -3
  51. package/src/api/ORM/drivers/index.js +0 -19
  52. package/src/api/ORM/index.d.ts +0 -4
  53. package/src/api/ORM/index.js +0 -43
  54. package/src/api/Router/AWS.d.ts +0 -26
  55. package/src/api/Router/AWS.js +0 -76
  56. package/src/api/Router/Auth.d.ts +0 -2
  57. package/src/api/Router/Auth.js +0 -9
  58. package/src/api/Router/CORS.d.ts +0 -6
  59. package/src/api/Router/CORS.js +0 -27
  60. package/src/api/Router/Types.d.ts +0 -71
  61. package/src/api/Router/Types.js +0 -2
  62. package/src/api/Router/index.d.ts +0 -18
  63. package/src/api/Router/index.js +0 -145
  64. package/src/api/index.d.ts +0 -3
  65. package/src/api/index.js +0 -39
  66. package/src/app/index.d.ts +0 -1
  67. package/src/app/index.js +0 -37
  68. package/src/app/utils/ApplicationState.d.ts +0 -52
  69. package/src/app/utils/ApplicationState.js +0 -86
  70. package/src/app/utils/ApplicationStateLoader.d.ts +0 -46
  71. package/src/app/utils/ApplicationStateLoader.js +0 -57
  72. package/src/app/utils/Controller.d.ts +0 -4
  73. package/src/app/utils/Controller.js +0 -47
  74. package/src/app/utils/Debug.d.ts +0 -4
  75. package/src/app/utils/Debug.js +0 -30
  76. package/src/app/utils/EasyLayout.d.ts +0 -49
  77. package/src/app/utils/EasyLayout.js +0 -122
  78. package/src/app/utils/Route.d.ts +0 -28
  79. package/src/app/utils/Route.js +0 -102
  80. package/src/app/utils/Service.d.ts +0 -12
  81. package/src/app/utils/Service.js +0 -34
  82. package/src/app/utils/TypeInfoORMAPIUtils.d.ts +0 -20
  83. package/src/app/utils/TypeInfoORMAPIUtils.js +0 -62
  84. package/src/app/utils/TypeInfoORMClient.d.ts +0 -24
  85. package/src/app/utils/TypeInfoORMClient.js +0 -69
  86. package/src/app/utils/index.d.ts +0 -8
  87. package/src/app/utils/index.js +0 -24
  88. package/src/common/CommandLine/collectRequiredEnvironmentVariables.d.ts +0 -1
  89. package/src/common/CommandLine/collectRequiredEnvironmentVariables.js +0 -16
  90. package/src/common/HelperTypes.d.ts +0 -3
  91. package/src/common/HelperTypes.js +0 -2
  92. package/src/common/IdGeneration/getSimpleId.d.ts +0 -4
  93. package/src/common/IdGeneration/getSimpleId.js +0 -16
  94. package/src/common/IdGeneration/index.d.ts +0 -1
  95. package/src/common/IdGeneration/index.js +0 -17
  96. package/src/common/ItemRelationshipInfoTypes.d.ts +0 -46
  97. package/src/common/ItemRelationshipInfoTypes.js +0 -20
  98. package/src/common/ItemRelationships/ItemRelationshipValidation.d.ts +0 -10
  99. package/src/common/ItemRelationships/ItemRelationshipValidation.js +0 -43
  100. package/src/common/ItemRelationships/index.d.ts +0 -1
  101. package/src/common/ItemRelationships/index.js +0 -17
  102. package/src/common/Logging/Utils.d.ts +0 -10
  103. package/src/common/Logging/Utils.js +0 -33
  104. package/src/common/Logging/index.d.ts +0 -1
  105. package/src/common/Logging/index.js +0 -17
  106. package/src/common/Routing.d.ts +0 -25
  107. package/src/common/Routing.js +0 -102
  108. package/src/common/SearchTypes.d.ts +0 -98
  109. package/src/common/SearchTypes.js +0 -39
  110. package/src/common/SearchUtils.d.ts +0 -22
  111. package/src/common/SearchUtils.js +0 -134
  112. package/src/common/SearchValidation.d.ts +0 -17
  113. package/src/common/SearchValidation.js +0 -90
  114. package/src/common/Storyboarding/Types.d.ts +0 -25
  115. package/src/common/Storyboarding/Types.js +0 -2
  116. package/src/common/StringTransformers.d.ts +0 -17
  117. package/src/common/StringTransformers.js +0 -36
  118. package/src/common/Testing/CLI.d.ts +0 -2
  119. package/src/common/Testing/CLI.js +0 -56
  120. package/src/common/Testing/Types.d.ts +0 -117
  121. package/src/common/Testing/Types.js +0 -19
  122. package/src/common/Testing/Utils.d.ts +0 -48
  123. package/src/common/Testing/Utils.js +0 -334
  124. package/src/common/Testing/index.d.ts +0 -2
  125. package/src/common/Testing/index.js +0 -18
  126. package/src/common/TypeInfoDataItemUtils.d.ts +0 -10
  127. package/src/common/TypeInfoDataItemUtils.js +0 -55
  128. package/src/common/TypeInfoORM/Types.d.ts +0 -76
  129. package/src/common/TypeInfoORM/Types.js +0 -55
  130. package/src/common/TypeInfoORM/index.d.ts +0 -1
  131. package/src/common/TypeInfoORM/index.js +0 -17
  132. package/src/common/TypeParsing/Constants.d.ts +0 -1
  133. package/src/common/TypeParsing/Constants.js +0 -4
  134. package/src/common/TypeParsing/ParsingUtils/Constants.d.ts +0 -5
  135. package/src/common/TypeParsing/ParsingUtils/Constants.js +0 -8
  136. package/src/common/TypeParsing/ParsingUtils/checkType.d.ts +0 -8
  137. package/src/common/TypeParsing/ParsingUtils/checkType.js +0 -46
  138. package/src/common/TypeParsing/ParsingUtils/checkUnionType.d.ts +0 -6
  139. package/src/common/TypeParsing/ParsingUtils/checkUnionType.js +0 -15
  140. package/src/common/TypeParsing/ParsingUtils/extractCommentTags.d.ts +0 -2
  141. package/src/common/TypeParsing/ParsingUtils/extractCommentTags.js +0 -105
  142. package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.d.ts +0 -6
  143. package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.js +0 -42
  144. package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.d.ts +0 -8
  145. package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.js +0 -14
  146. package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.d.ts +0 -5
  147. package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.js +0 -27
  148. package/src/common/TypeParsing/ParsingUtils/getTypeInfo.d.ts +0 -3
  149. package/src/common/TypeParsing/ParsingUtils/getTypeInfo.js +0 -27
  150. package/src/common/TypeParsing/ParsingUtils/getTypeInfoField.d.ts +0 -3
  151. package/src/common/TypeParsing/ParsingUtils/getTypeInfoField.js +0 -44
  152. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.d.ts +0 -4
  153. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.js +0 -28
  154. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.d.ts +0 -4
  155. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.js +0 -105
  156. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.d.ts +0 -4
  157. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.js +0 -20
  158. package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.d.ts +0 -3
  159. package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.js +0 -17
  160. package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.d.ts +0 -4
  161. package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.js +0 -49
  162. package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.d.ts +0 -2
  163. package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.js +0 -24
  164. package/src/common/TypeParsing/TypeInfo.d.ts +0 -142
  165. package/src/common/TypeParsing/TypeInfo.js +0 -13
  166. package/src/common/TypeParsing/TypeMapping.d.ts +0 -9
  167. package/src/common/TypeParsing/TypeMapping.js +0 -32
  168. package/src/common/TypeParsing/TypeParsing.d.ts +0 -5
  169. package/src/common/TypeParsing/TypeParsing.js +0 -39
  170. package/src/common/TypeParsing/Utils.d.ts +0 -21
  171. package/src/common/TypeParsing/Utils.js +0 -94
  172. package/src/common/TypeParsing/Validation.d.ts +0 -92
  173. package/src/common/TypeParsing/Validation.js +0 -340
  174. package/src/common/TypeParsing/index.d.ts +0 -5
  175. package/src/common/TypeParsing/index.js +0 -44
  176. package/src/common/index.d.ts +0 -11
  177. package/src/common/index.js +0 -47
  178. package/src/iac/SimpleCFT.d.ts +0 -48
  179. package/src/iac/SimpleCFT.js +0 -82
  180. package/src/iac/index.d.ts +0 -9
  181. package/src/iac/index.js +0 -48
  182. package/src/iac/packs/auth/user-management.d.ts +0 -14
  183. package/src/iac/packs/auth/user-management.js +0 -302
  184. package/src/iac/packs/auth.d.ts +0 -19
  185. package/src/iac/packs/auth.js +0 -47
  186. package/src/iac/packs/build/utils.d.ts +0 -100
  187. package/src/iac/packs/build/utils.js +0 -23
  188. package/src/iac/packs/build.d.ts +0 -29
  189. package/src/iac/packs/build.js +0 -217
  190. package/src/iac/packs/cdn.d.ts +0 -12
  191. package/src/iac/packs/cdn.js +0 -126
  192. package/src/iac/packs/cloud-function.d.ts +0 -17
  193. package/src/iac/packs/cloud-function.js +0 -69
  194. package/src/iac/packs/database.d.ts +0 -29
  195. package/src/iac/packs/database.js +0 -27
  196. package/src/iac/packs/dns.d.ts +0 -13
  197. package/src/iac/packs/dns.js +0 -26
  198. package/src/iac/packs/file-storage.d.ts +0 -14
  199. package/src/iac/packs/file-storage.js +0 -71
  200. package/src/iac/packs/gateway.d.ts +0 -27
  201. package/src/iac/packs/gateway.js +0 -342
  202. package/src/iac/packs/index.d.ts +0 -11
  203. package/src/iac/packs/index.js +0 -27
  204. package/src/iac/packs/repo.d.ts +0 -10
  205. package/src/iac/packs/repo.js +0 -34
  206. package/src/iac/packs/ssl-certificate.d.ts +0 -10
  207. package/src/iac/packs/ssl-certificate.js +0 -36
  208. package/src/iac/types/CloudFormationResourceSpecification.d.ts +0 -2
  209. package/src/iac/types/Constants.d.ts +0 -9
  210. package/src/iac/types/Constants.js +0 -20
  211. package/src/iac/types/IaCTypes.js +0 -14
  212. package/src/iac/types/Renderers.d.ts +0 -12
  213. package/src/iac/types/Renderers.js +0 -112
  214. package/src/iac/types/Types.d.ts +0 -37
  215. package/src/iac/types/Types.js +0 -2
  216. package/src/iac/types/Utils.d.ts +0 -2
  217. package/src/iac/types/Utils.js +0 -60
  218. package/src/iac/types/generate.d.ts +0 -1
  219. package/src/iac/types/generate.js +0 -31
  220. package/src/iac/utils/index.d.ts +0 -36
  221. package/src/iac/utils/index.js +0 -105
  222. package/src/iac/utils/patch-utils.d.ts +0 -15
  223. package/src/iac/utils/patch-utils.js +0 -62
  224. package/src/index.d.ts +0 -178
  225. package/src/index.js +0 -214
@@ -0,0 +1,432 @@
1
+ #!/usr/bin/env node
2
+ import { promises } from 'fs';
3
+ import Path from 'path';
4
+ import { pathToFileURL } from 'url';
5
+ import fastGlob from 'fast-glob';
6
+ import picocolors from 'picocolors';
7
+
8
+ var importModule = async (modulePath) => {
9
+ const moduleUrl = pathToFileURL(modulePath);
10
+ return import(moduleUrl.href);
11
+ };
12
+ var stringifyOutput = (value) => JSON.stringify(
13
+ value,
14
+ function(_key, value2) {
15
+ return typeof value2 === "function" ? "[Function]" : value2;
16
+ },
17
+ 2
18
+ );
19
+ var OPERATIONS = {
20
+ ["===" /* EQUALS */]: (a, b) => a === b,
21
+ ["!==" /* NOT_EQUALS */]: (a, b) => a !== b,
22
+ ["IN" /* IN */]: (a, b) => Array.isArray(b) && b.includes(a),
23
+ ["BETWEEN" /* BETWEEN */]: (a, b) => {
24
+ if (Array.isArray(b) && b.length === 2 && typeof b[0] === "number" && typeof b[1] === "number") {
25
+ return typeof a === "number" && a >= b[0] && a <= b[1];
26
+ }
27
+ throw new Error("BETWEEN requires an array of two numbers as expectation.");
28
+ },
29
+ ["CONTAINS" /* CONTAINS */]: (a, b) => typeof a === "string" && typeof b === "string" && a.includes(b),
30
+ ["REGEX" /* REGEX */]: (a, b) => {
31
+ if (typeof b === "object" && b !== null && "pattern" in b) {
32
+ const { pattern, flags } = b;
33
+ try {
34
+ const regex = new RegExp(pattern, flags);
35
+ return typeof a === "string" && regex.test(a);
36
+ } catch (err) {
37
+ throw new Error(`Invalid REGEX: ${err.message}`);
38
+ }
39
+ }
40
+ throw new Error(
41
+ "REGEX requires an expectation with 'pattern' and optional 'flags'."
42
+ );
43
+ },
44
+ ["EXT_REGEX" /* EXT_REGEX */]: (a, b) => {
45
+ if (typeof b === "object" && b !== null && "pattern" in b) {
46
+ const { pattern, flags } = b;
47
+ const buildRegexFromPattern = (pattern2, flags2 = "") => {
48
+ if (!Array.isArray(pattern2)) {
49
+ throw new Error("EXT_REGEX pattern must be an array of objects.");
50
+ }
51
+ const regexBody = pattern2.map(({ value, escaped }) => {
52
+ if (typeof value !== "string") {
53
+ throw new Error(
54
+ "Each pattern element must have a string 'value'."
55
+ );
56
+ }
57
+ return escaped ? value.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&") : value;
58
+ }).join("");
59
+ return new RegExp(regexBody, flags2);
60
+ };
61
+ try {
62
+ const regex = buildRegexFromPattern(pattern, flags);
63
+ return typeof a === "string" && regex.test(a);
64
+ } catch (err) {
65
+ throw new Error(`Invalid EXT_REGEX: ${err.message}`);
66
+ }
67
+ }
68
+ throw new Error(
69
+ "EXT_REGEX requires an expectation with 'pattern' as an array of PatternElement and optional 'flags'."
70
+ );
71
+ },
72
+ ["DEEP_EQUALS" /* DEEP_EQUALS */]: (a, b) => {
73
+ if (typeof a === "object" && typeof b === "object" && a !== null && b !== null) {
74
+ return JSON.stringify(a) === JSON.stringify(b);
75
+ }
76
+ return false;
77
+ },
78
+ ["ARRAY_CONTAINS" /* ARRAY_CONTAINS */]: (a, b) => {
79
+ if (Array.isArray(a)) {
80
+ return a.includes(b);
81
+ }
82
+ throw new Error("ARRAY_CONTAINS requires an array as the first argument.");
83
+ },
84
+ ["ARRAY_EQUALS" /* ARRAY_EQUALS */]: (a, b) => {
85
+ if (Array.isArray(a) && Array.isArray(b)) {
86
+ return JSON.stringify(a) === JSON.stringify(b);
87
+ }
88
+ throw new Error("ARRAY_EQUALS requires two arrays as arguments.");
89
+ }
90
+ };
91
+ var compare = (result, expectation, operation = "===" /* EQUALS */) => {
92
+ const op = OPERATIONS[operation];
93
+ if (!op) {
94
+ throw new Error(`Unsupported operation: ${operation}`);
95
+ }
96
+ return op(result, expectation);
97
+ };
98
+ var getResolvedConditions = async (testFilePath, targetTestIndex, targetTestExport, conditions, isSetup = false) => {
99
+ if (Array.isArray(conditions)) {
100
+ return conditions;
101
+ } else if (typeof conditions === "object" && conditions !== null) {
102
+ const { file, export: targetConditionExport } = conditions;
103
+ const modulePath = Path.resolve(Path.dirname(testFilePath), file);
104
+ const targetModule = await importModule(modulePath);
105
+ const conditionArray = targetModule[targetConditionExport];
106
+ if (Array.isArray(conditionArray)) {
107
+ return conditionArray;
108
+ }
109
+ }
110
+ throw new Error(
111
+ `Invalid conditions for TEST${isSetup ? " SETUP" : ""} ${targetTestIndex + 1} (${targetTestExport}) in ${testFilePath}`
112
+ );
113
+ };
114
+ var getSetupInstance = async (testFilePath, targetTestIndex, targetTestExport, test, module) => {
115
+ const { setup } = test;
116
+ if (!setup) return module;
117
+ const { conditions: baseConditions, export: targetSetupExport } = setup;
118
+ const setupFunction = module[targetSetupExport];
119
+ const conditions = await getResolvedConditions(
120
+ testFilePath,
121
+ targetTestIndex,
122
+ targetTestExport,
123
+ baseConditions,
124
+ true
125
+ );
126
+ if (typeof setupFunction !== "function") {
127
+ throw new Error(`Setup export "${setup.export}" is not a function.`);
128
+ }
129
+ return setup.instantiate ? new setupFunction(...conditions) : await setupFunction(...conditions);
130
+ };
131
+ var getTestFunction = async (testFilePath, file, targetTestIndex, test, targetModule) => {
132
+ const { export: targetExport } = test;
133
+ if (!targetExport) {
134
+ throw new Error(
135
+ `Invalid test export (${targetExport}) for TEST ${targetTestIndex + 1} in ${testFilePath}`
136
+ );
137
+ }
138
+ const instance = await getSetupInstance(
139
+ testFilePath,
140
+ targetTestIndex,
141
+ targetExport,
142
+ test,
143
+ targetModule
144
+ );
145
+ const testFunction = instance[targetExport];
146
+ if (typeof testFunction !== "function") {
147
+ throw new Error(
148
+ `Export "${targetExport}" from "${file}", declared in TEST ${targetTestIndex + 1}, is not a function.`
149
+ );
150
+ }
151
+ return testFunction;
152
+ };
153
+ var getTestConfig = async (testFilePath) => {
154
+ const testConfig = JSON.parse(
155
+ await promises.readFile(testFilePath, "utf8")
156
+ );
157
+ return testConfig;
158
+ };
159
+ var getResolvedTestConfig = async (testFilePath) => {
160
+ const { file, tests } = await getTestConfig(testFilePath);
161
+ if (!file) {
162
+ throw new Error(`Invalid test configuration in ${testFilePath}`);
163
+ }
164
+ const modulePath = Path.resolve(Path.dirname(testFilePath), file);
165
+ const targetModule = await importModule(modulePath);
166
+ return {
167
+ file,
168
+ targetModule,
169
+ tests
170
+ };
171
+ };
172
+ var mergeTestResults = (...results) => results.reduce(
173
+ ({
174
+ messages: accMessages = [],
175
+ generated: accGenerated = [],
176
+ passes: accPasses = [],
177
+ failures: accFailures = [],
178
+ errors: accErrors = []
179
+ }, {
180
+ messages = [],
181
+ generated = [],
182
+ passes = [],
183
+ failures = [],
184
+ errors = []
185
+ }) => ({
186
+ messages: [...accMessages, ...messages],
187
+ generated: [...accGenerated, ...generated],
188
+ passes: [...accPasses, ...passes],
189
+ failures: [...accFailures, ...failures],
190
+ errors: [...accErrors, ...errors]
191
+ }),
192
+ { messages: [], passes: [], failures: [], errors: [] }
193
+ );
194
+ var runTest = async (testFilePath, testFunction, test, index, targetExport, report) => {
195
+ const {
196
+ conditions: baseConditions,
197
+ expectation,
198
+ operation,
199
+ expectUndefined
200
+ } = test;
201
+ const conditions = await getResolvedConditions(
202
+ testFilePath,
203
+ index,
204
+ targetExport,
205
+ baseConditions
206
+ );
207
+ try {
208
+ const result = await testFunction(...conditions);
209
+ const passed = expectUndefined || compare(result, expectation, operation);
210
+ if (passed) {
211
+ report({
212
+ passes: [`Test ${index + 1} (${targetExport})`]
213
+ });
214
+ } else {
215
+ report({
216
+ failures: [
217
+ `Test ${index + 1} (${targetExport}):
218
+
219
+ Result:
220
+
221
+ ${stringifyOutput(result)}`
222
+ ]
223
+ });
224
+ }
225
+ } catch (err) {
226
+ report({
227
+ errors: [
228
+ `Test ${index + 1} (${targetExport}):
229
+
230
+ Error:
231
+
232
+ ${err.message}`
233
+ ]
234
+ });
235
+ }
236
+ };
237
+ var generateTestsForFile = async (testFilePath, report) => {
238
+ try {
239
+ const { file, targetModule, tests } = await getResolvedTestConfig(testFilePath);
240
+ report({
241
+ messages: [`Generating expectations for tests in ${testFilePath}`]
242
+ });
243
+ const generatedTests = [];
244
+ let hasNewExpectations = false;
245
+ for (let i = 0; i < tests.length; i++) {
246
+ const test = tests[i];
247
+ const {
248
+ export: targetExport,
249
+ conditions: baseConditions,
250
+ expectation,
251
+ operation,
252
+ expectUndefined
253
+ } = test;
254
+ const conditions = await getResolvedConditions(
255
+ testFilePath,
256
+ i,
257
+ targetExport,
258
+ baseConditions
259
+ );
260
+ if (expectation !== void 0 || expectUndefined) {
261
+ generatedTests.push(test);
262
+ } else {
263
+ const testFunction = await getTestFunction(
264
+ testFilePath,
265
+ file,
266
+ i,
267
+ test,
268
+ targetModule
269
+ );
270
+ const result = await testFunction(...conditions);
271
+ report({
272
+ generated: [
273
+ `Expectation for TEST ${i + 1} (${targetExport}):
274
+
275
+ ${stringifyOutput(result)}`
276
+ ]
277
+ });
278
+ generatedTests.push({
279
+ ...test,
280
+ expectation: result,
281
+ operation: operation || "===" /* EQUALS */
282
+ });
283
+ hasNewExpectations = true;
284
+ }
285
+ }
286
+ if (hasNewExpectations) {
287
+ const updatedTestConfig = { file, tests: generatedTests };
288
+ await promises.writeFile(
289
+ testFilePath,
290
+ JSON.stringify(updatedTestConfig, null, 2)
291
+ );
292
+ report({ messages: [`Updated test file saved to ${testFilePath}`] });
293
+ } else {
294
+ report({
295
+ messages: [`No new expectations were generated for ${testFilePath}`]
296
+ });
297
+ }
298
+ } catch (err) {
299
+ report({
300
+ errors: [`Error processing test file ${testFilePath}:
301
+
302
+ ${err.message}`]
303
+ });
304
+ }
305
+ };
306
+ var runTestsForFile = async (testFilePath, report) => {
307
+ try {
308
+ const { file, targetModule, tests } = await getResolvedTestConfig(testFilePath);
309
+ report({
310
+ messages: [`Running tests from ${testFilePath}`]
311
+ });
312
+ for (const [index, test] of tests.entries()) {
313
+ const { export: targetExport } = test;
314
+ const testFunction = await getTestFunction(
315
+ testFilePath,
316
+ file,
317
+ index,
318
+ test,
319
+ targetModule
320
+ );
321
+ await runTest(
322
+ testFilePath,
323
+ testFunction,
324
+ test,
325
+ index,
326
+ targetExport,
327
+ report
328
+ );
329
+ }
330
+ } catch (err) {
331
+ report({
332
+ errors: [`Error processing test file ${testFilePath}: ${err.message}`]
333
+ });
334
+ }
335
+ };
336
+ var executeTestingCommand = async (testFiles, generateMode = false, report) => {
337
+ const completeMessage = generateMode ? "Test generation complete." : "Testing complete.";
338
+ try {
339
+ for (const testFile of testFiles) {
340
+ const resolvedTestFile = Path.resolve(testFile);
341
+ if (generateMode) {
342
+ await generateTestsForFile(resolvedTestFile, report);
343
+ } else {
344
+ await runTestsForFile(resolvedTestFile, report);
345
+ }
346
+ }
347
+ report({
348
+ messages: [completeMessage]
349
+ });
350
+ } catch (err) {
351
+ report({ errors: [`Error running tests:
352
+
353
+ ${err.message}`] });
354
+ }
355
+ };
356
+ var main = async () => {
357
+ const args = process.argv.slice(2);
358
+ const generateMode = args.includes("--generate");
359
+ const testPaths = args.filter((arg) => arg !== "--generate");
360
+ console.log(`${picocolors.bgMagenta(picocolors.whiteBright(" VEST "))}
361
+ `);
362
+ if (testPaths.length === 0) {
363
+ console.error("Usage: vest [--generate] <test-directory-path>");
364
+ process.exit(1);
365
+ }
366
+ const testFiles = await fastGlob(testPaths);
367
+ if (testFiles.length === 0) {
368
+ console.warn(`No test files found in ${testPaths.join(", ")}`);
369
+ process.exit(0);
370
+ }
371
+ let results = {
372
+ messages: [],
373
+ passes: [],
374
+ failures: [],
375
+ errors: []
376
+ };
377
+ await executeTestingCommand(
378
+ testFiles,
379
+ generateMode,
380
+ (latestResults) => {
381
+ const {
382
+ messages = [],
383
+ generated: generated2 = [],
384
+ passes: passes2 = [],
385
+ failures: failures2 = [],
386
+ errors: errors2 = []
387
+ } = latestResults;
388
+ results = mergeTestResults(results, latestResults);
389
+ messages.forEach(
390
+ (message) => console.log(`${picocolors.blueBright("MESSAGE:")} ${message}
391
+ `)
392
+ );
393
+ generated2.forEach(
394
+ (generated3) => console.log(`${picocolors.greenBright("GENERATED:")} ${generated3}
395
+ `)
396
+ );
397
+ passes2.forEach(
398
+ (pass) => console.log(`${picocolors.greenBright("PASSED:")} ${pass}
399
+ `)
400
+ );
401
+ failures2.forEach(
402
+ (failure) => console.error(`${picocolors.redBright("FAILED:")} ${failure}
403
+ `)
404
+ );
405
+ errors2.forEach(
406
+ (error) => console.error(
407
+ `${picocolors.redBright(picocolors.italic("ERROR:"))} ${error}
408
+ `
409
+ )
410
+ );
411
+ }
412
+ );
413
+ const { generated = [], passes = [], failures = [], errors = [] } = results;
414
+ const exitValue = failures.length + errors.length;
415
+ if (generateMode) {
416
+ console.log(`${picocolors.greenBright("GENERATED:")} ${generated.length}
417
+ ${picocolors.redBright(picocolors.italic("ERRORS:"))} ${errors.length}
418
+ `);
419
+ } else {
420
+ console.log(`${picocolors.greenBright("PASSES:")} ${passes.length}
421
+ ${picocolors.redBright("FAILURES:")} ${failures.length}
422
+ ${picocolors.redBright(picocolors.italic("ERRORS:"))} ${errors.length}
423
+ `);
424
+ }
425
+ process.exit(exitValue);
426
+ };
427
+ main().catch((error) => {
428
+ console.error(error);
429
+ process.exit(1);
430
+ });
431
+
432
+ export { main };
@@ -0,0 +1,4 @@
1
+ export { b as IDGeneration, d as ItemRelationships, f as Logging, R as Routing, S as SearchUtils, c as StringTransformers, e as Testing, a as TypeParsing } from '../index-C3-iD9Mh.js';
2
+ export { H as HelperTypes, l as ItemRelationshipInfoTypes, m as SearchTypes } from '../SearchTypes-DjN6YQzE.js';
3
+ import '../Validation-CFP59oIP.js';
4
+ import 'typescript';