pareto-test 0.0.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 (57) hide show
  1. package/dist/bin/json_to_astn.d.ts +2 -0
  2. package/dist/bin/json_to_astn.js +177 -0
  3. package/dist/bin/temp_serialize_json_schema.d.ts +2 -0
  4. package/dist/bin/temp_serialize_json_schema.js +60 -0
  5. package/dist/generated/implementation/generic/resolve.d.ts +109 -0
  6. package/dist/generated/implementation/generic/resolve.js +276 -0
  7. package/dist/generated/implementation/generic/unmarshall.d.ts +42 -0
  8. package/dist/generated/implementation/generic/unmarshall.js +238 -0
  9. package/dist/generated/implementation/schemas/legacy_json_schema/marshall.d.ts +11 -0
  10. package/dist/generated/implementation/schemas/legacy_json_schema/marshall.js +260 -0
  11. package/dist/generated/implementation/schemas/legacy_json_schema/unmarshall.d.ts +11 -0
  12. package/dist/generated/implementation/schemas/legacy_json_schema/unmarshall.js +246 -0
  13. package/dist/generated/interface/core/astn_source.d.ts +108 -0
  14. package/dist/generated/interface/core/astn_source.js +3 -0
  15. package/dist/generated/interface/core/astn_target.d.ts +186 -0
  16. package/dist/generated/interface/core/astn_target.js +3 -0
  17. package/dist/generated/interface/core/resolve.d.ts +11 -0
  18. package/dist/generated/interface/core/resolve.js +3 -0
  19. package/dist/generated/interface/core/resolved.d.ts +117 -0
  20. package/dist/generated/interface/core/resolved.js +3 -0
  21. package/dist/generated/interface/core/unconstrained.d.ts +19 -0
  22. package/dist/generated/interface/core/unconstrained.js +3 -0
  23. package/dist/generated/interface/core/unresolved.d.ts +181 -0
  24. package/dist/generated/interface/core/unresolved.js +3 -0
  25. package/dist/generated/interface/schemas/legacy_json_schema/data_types/resolve.d.ts +1 -0
  26. package/dist/generated/interface/schemas/legacy_json_schema/data_types/resolve.js +7 -0
  27. package/dist/generated/interface/schemas/legacy_json_schema/data_types/source.d.ts +574 -0
  28. package/dist/generated/interface/schemas/legacy_json_schema/data_types/source.js +3 -0
  29. package/dist/generated/interface/schemas/legacy_json_schema/data_types/target.d.ts +574 -0
  30. package/dist/generated/interface/schemas/legacy_json_schema/data_types/target.js +3 -0
  31. package/dist/generated/interface/schemas/legacy_json_schema/marshall.d.ts +303 -0
  32. package/dist/generated/interface/schemas/legacy_json_schema/marshall.js +3 -0
  33. package/dist/generated/interface/schemas/legacy_json_schema/migrate_boilerplate.d.ts +222 -0
  34. package/dist/generated/interface/schemas/legacy_json_schema/migrate_boilerplate.js +3 -0
  35. package/dist/generated/interface/schemas/legacy_json_schema/unmarshall.d.ts +303 -0
  36. package/dist/generated/interface/schemas/legacy_json_schema/unmarshall.js +3 -0
  37. package/dist/generated/interface/schemas/legacy_json_schema/value_deserializers.d.ts +44 -0
  38. package/dist/generated/interface/schemas/legacy_json_schema/value_deserializers.js +3 -0
  39. package/dist/generated/interface/schemas/legacy_json_schema/value_serializers.d.ts +44 -0
  40. package/dist/generated/interface/schemas/legacy_json_schema/value_serializers.js +3 -0
  41. package/dist/interface/testrunner.d.ts +4 -0
  42. package/dist/interface/testrunner.js +3 -0
  43. package/dist/run_tests.d.ts +4 -0
  44. package/dist/run_tests.js +239 -0
  45. package/dist/shorthands/legacy_json_schema.d.ts +32 -0
  46. package/dist/shorthands/legacy_json_schema.js +119 -0
  47. package/dist/temp_astn_target_to_fountain_pen_block.d.ts +8 -0
  48. package/dist/temp_astn_target_to_fountain_pen_block.js +131 -0
  49. package/dist/temp_data/json_schema.astn.d.ts +2 -0
  50. package/dist/temp_data/json_schema.astn.js +278 -0
  51. package/dist/transformations/legacy_json_schema/astn_sealed_target.d.ts +38 -0
  52. package/dist/transformations/legacy_json_schema/astn_sealed_target.js +252 -0
  53. package/dist/types/json.d.ts +4 -0
  54. package/dist/types/json.js +3 -0
  55. package/dist/unmarshall_helpers.d.ts +16 -0
  56. package/dist/unmarshall_helpers.js +163 -0
  57. package/package.json +20 -0
@@ -0,0 +1,303 @@
1
+ import * as _i_in from "../../core/astn_source";
2
+ import * as _i_out from "./data_types/target";
3
+ import * as _i_vd from "./value_deserializers";
4
+ export type _T_Array_Definition = ($$_: _i_in._T_Value, $$_p: {
5
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
6
+ }) => _i_out._T_Array_Definition;
7
+ export type _T_Boolean_Definition = ($$_: _i_in._T_Value, $$_p: {
8
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
9
+ }) => _i_out._T_Boolean_Definition;
10
+ export type _T_Definition = ($$_: _i_in._T_Value, $$_p: {
11
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
12
+ }) => _i_out._T_Definition;
13
+ export type _T_Error = ($$_: _i_in._T_Value, $$_p: {
14
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
15
+ }) => _i_out._T_Error;
16
+ export type _T_Null_Definition = ($$_: _i_in._T_Value, $$_p: {
17
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
18
+ }) => _i_out._T_Null_Definition;
19
+ export type _T_Number_Definition = ($$_: _i_in._T_Value, $$_p: {
20
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
21
+ }) => _i_out._T_Number_Definition;
22
+ export type _T_Object_Definition = ($$_: _i_in._T_Value, $$_p: {
23
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
24
+ }) => _i_out._T_Object_Definition;
25
+ export type _T_Schema = ($$_: _i_in._T_Value, $$_p: {
26
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
27
+ }) => _i_out._T_Schema;
28
+ export type _T_String_Definition = ($$_: _i_in._T_Value, $$_p: {
29
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
30
+ }) => _i_out._T_String_Definition;
31
+ export type _T_Value_Type = ($$_: _i_in._T_Value, $$_p: {
32
+ readonly 'value deserializers': _i_vd._T_Value_Deserializers;
33
+ }) => _i_out._T_Value_Type;
34
+ export type Array_Definition = _T_Array_Definition;
35
+ export type Boolean_Definition = _T_Boolean_Definition;
36
+ export type Definition = _T_Definition;
37
+ export type Error = _T_Error;
38
+ export type Null_Definition = _T_Null_Definition;
39
+ export type Number_Definition = _T_Number_Definition;
40
+ export type Object_Definition = _T_Object_Definition;
41
+ export type Schema = _T_Schema;
42
+ export type String_Definition = _T_String_Definition;
43
+ export type Value_Type = _T_Value_Type;
44
+ export declare namespace _T_Array_Definition {
45
+ namespace CONTEXT {
46
+ }
47
+ type CONTEXT = _i_in._T_Value;
48
+ namespace PARAMS {
49
+ namespace value_deserializers {
50
+ }
51
+ type value_deserializers = _i_vd._T_Value_Deserializers;
52
+ }
53
+ namespace RESULT {
54
+ }
55
+ type RESULT = _i_out._T_Array_Definition;
56
+ }
57
+ export declare namespace _T_Boolean_Definition {
58
+ namespace CONTEXT {
59
+ }
60
+ type CONTEXT = _i_in._T_Value;
61
+ namespace PARAMS {
62
+ namespace value_deserializers {
63
+ }
64
+ type value_deserializers = _i_vd._T_Value_Deserializers;
65
+ }
66
+ namespace RESULT {
67
+ }
68
+ type RESULT = _i_out._T_Boolean_Definition;
69
+ }
70
+ export declare namespace _T_Definition {
71
+ namespace CONTEXT {
72
+ }
73
+ type CONTEXT = _i_in._T_Value;
74
+ namespace PARAMS {
75
+ namespace value_deserializers {
76
+ }
77
+ type value_deserializers = _i_vd._T_Value_Deserializers;
78
+ }
79
+ namespace RESULT {
80
+ }
81
+ type RESULT = _i_out._T_Definition;
82
+ }
83
+ export declare namespace _T_Error {
84
+ namespace CONTEXT {
85
+ }
86
+ type CONTEXT = _i_in._T_Value;
87
+ namespace PARAMS {
88
+ namespace value_deserializers {
89
+ }
90
+ type value_deserializers = _i_vd._T_Value_Deserializers;
91
+ }
92
+ namespace RESULT {
93
+ }
94
+ type RESULT = _i_out._T_Error;
95
+ }
96
+ export declare namespace _T_Null_Definition {
97
+ namespace CONTEXT {
98
+ }
99
+ type CONTEXT = _i_in._T_Value;
100
+ namespace PARAMS {
101
+ namespace value_deserializers {
102
+ }
103
+ type value_deserializers = _i_vd._T_Value_Deserializers;
104
+ }
105
+ namespace RESULT {
106
+ }
107
+ type RESULT = _i_out._T_Null_Definition;
108
+ }
109
+ export declare namespace _T_Number_Definition {
110
+ namespace CONTEXT {
111
+ }
112
+ type CONTEXT = _i_in._T_Value;
113
+ namespace PARAMS {
114
+ namespace value_deserializers {
115
+ }
116
+ type value_deserializers = _i_vd._T_Value_Deserializers;
117
+ }
118
+ namespace RESULT {
119
+ }
120
+ type RESULT = _i_out._T_Number_Definition;
121
+ }
122
+ export declare namespace _T_Object_Definition {
123
+ namespace CONTEXT {
124
+ }
125
+ type CONTEXT = _i_in._T_Value;
126
+ namespace PARAMS {
127
+ namespace value_deserializers {
128
+ }
129
+ type value_deserializers = _i_vd._T_Value_Deserializers;
130
+ }
131
+ namespace RESULT {
132
+ }
133
+ type RESULT = _i_out._T_Object_Definition;
134
+ }
135
+ export declare namespace _T_Schema {
136
+ namespace CONTEXT {
137
+ }
138
+ type CONTEXT = _i_in._T_Value;
139
+ namespace PARAMS {
140
+ namespace value_deserializers {
141
+ }
142
+ type value_deserializers = _i_vd._T_Value_Deserializers;
143
+ }
144
+ namespace RESULT {
145
+ }
146
+ type RESULT = _i_out._T_Schema;
147
+ }
148
+ export declare namespace _T_String_Definition {
149
+ namespace CONTEXT {
150
+ }
151
+ type CONTEXT = _i_in._T_Value;
152
+ namespace PARAMS {
153
+ namespace value_deserializers {
154
+ }
155
+ type value_deserializers = _i_vd._T_Value_Deserializers;
156
+ }
157
+ namespace RESULT {
158
+ }
159
+ type RESULT = _i_out._T_String_Definition;
160
+ }
161
+ export declare namespace _T_Value_Type {
162
+ namespace CONTEXT {
163
+ }
164
+ type CONTEXT = _i_in._T_Value;
165
+ namespace PARAMS {
166
+ namespace value_deserializers {
167
+ }
168
+ type value_deserializers = _i_vd._T_Value_Deserializers;
169
+ }
170
+ namespace RESULT {
171
+ }
172
+ type RESULT = _i_out._T_Value_Type;
173
+ }
174
+ export declare namespace Array_Definition {
175
+ namespace CONTEXT {
176
+ }
177
+ type CONTEXT = _i_in._T_Value;
178
+ namespace PARAMS {
179
+ namespace value_deserializers {
180
+ }
181
+ type value_deserializers = _i_vd._T_Value_Deserializers;
182
+ }
183
+ namespace RESULT {
184
+ }
185
+ type RESULT = _i_out._T_Array_Definition;
186
+ }
187
+ export declare namespace Boolean_Definition {
188
+ namespace CONTEXT {
189
+ }
190
+ type CONTEXT = _i_in._T_Value;
191
+ namespace PARAMS {
192
+ namespace value_deserializers {
193
+ }
194
+ type value_deserializers = _i_vd._T_Value_Deserializers;
195
+ }
196
+ namespace RESULT {
197
+ }
198
+ type RESULT = _i_out._T_Boolean_Definition;
199
+ }
200
+ export declare namespace Definition {
201
+ namespace CONTEXT {
202
+ }
203
+ type CONTEXT = _i_in._T_Value;
204
+ namespace PARAMS {
205
+ namespace value_deserializers {
206
+ }
207
+ type value_deserializers = _i_vd._T_Value_Deserializers;
208
+ }
209
+ namespace RESULT {
210
+ }
211
+ type RESULT = _i_out._T_Definition;
212
+ }
213
+ export declare namespace Error {
214
+ namespace CONTEXT {
215
+ }
216
+ type CONTEXT = _i_in._T_Value;
217
+ namespace PARAMS {
218
+ namespace value_deserializers {
219
+ }
220
+ type value_deserializers = _i_vd._T_Value_Deserializers;
221
+ }
222
+ namespace RESULT {
223
+ }
224
+ type RESULT = _i_out._T_Error;
225
+ }
226
+ export declare namespace Null_Definition {
227
+ namespace CONTEXT {
228
+ }
229
+ type CONTEXT = _i_in._T_Value;
230
+ namespace PARAMS {
231
+ namespace value_deserializers {
232
+ }
233
+ type value_deserializers = _i_vd._T_Value_Deserializers;
234
+ }
235
+ namespace RESULT {
236
+ }
237
+ type RESULT = _i_out._T_Null_Definition;
238
+ }
239
+ export declare namespace Number_Definition {
240
+ namespace CONTEXT {
241
+ }
242
+ type CONTEXT = _i_in._T_Value;
243
+ namespace PARAMS {
244
+ namespace value_deserializers {
245
+ }
246
+ type value_deserializers = _i_vd._T_Value_Deserializers;
247
+ }
248
+ namespace RESULT {
249
+ }
250
+ type RESULT = _i_out._T_Number_Definition;
251
+ }
252
+ export declare namespace Object_Definition {
253
+ namespace CONTEXT {
254
+ }
255
+ type CONTEXT = _i_in._T_Value;
256
+ namespace PARAMS {
257
+ namespace value_deserializers {
258
+ }
259
+ type value_deserializers = _i_vd._T_Value_Deserializers;
260
+ }
261
+ namespace RESULT {
262
+ }
263
+ type RESULT = _i_out._T_Object_Definition;
264
+ }
265
+ export declare namespace Schema {
266
+ namespace CONTEXT {
267
+ }
268
+ type CONTEXT = _i_in._T_Value;
269
+ namespace PARAMS {
270
+ namespace value_deserializers {
271
+ }
272
+ type value_deserializers = _i_vd._T_Value_Deserializers;
273
+ }
274
+ namespace RESULT {
275
+ }
276
+ type RESULT = _i_out._T_Schema;
277
+ }
278
+ export declare namespace String_Definition {
279
+ namespace CONTEXT {
280
+ }
281
+ type CONTEXT = _i_in._T_Value;
282
+ namespace PARAMS {
283
+ namespace value_deserializers {
284
+ }
285
+ type value_deserializers = _i_vd._T_Value_Deserializers;
286
+ }
287
+ namespace RESULT {
288
+ }
289
+ type RESULT = _i_out._T_String_Definition;
290
+ }
291
+ export declare namespace Value_Type {
292
+ namespace CONTEXT {
293
+ }
294
+ type CONTEXT = _i_in._T_Value;
295
+ namespace PARAMS {
296
+ namespace value_deserializers {
297
+ }
298
+ type value_deserializers = _i_vd._T_Value_Deserializers;
299
+ }
300
+ namespace RESULT {
301
+ }
302
+ type RESULT = _i_out._T_Value_Type;
303
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5tYXJzaGFsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvaW50ZXJmYWNlL3NjaGVtYXMvbGVnYWN5X2pzb25fc2NoZW1hL3VubWFyc2hhbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,44 @@
1
+ export type _T_Value_Deserializers = {
2
+ readonly 'boolean': ($$_: string, $$_p: null) => boolean;
3
+ readonly 'custom numbers': null;
4
+ readonly 'default number': ($$_: string, $$_p: null) => number;
5
+ };
6
+ export type Value_Deserializers = _T_Value_Deserializers;
7
+ export declare namespace _T_Value_Deserializers {
8
+ namespace _boolean {
9
+ type CONTEXT = string;
10
+ namespace PARAMS {
11
+ }
12
+ type RESULT = boolean;
13
+ }
14
+ type _boolean = ($$_: string, $$_p: null) => boolean;
15
+ namespace custom_numbers {
16
+ }
17
+ type custom_numbers = null;
18
+ namespace default_number {
19
+ type CONTEXT = string;
20
+ namespace PARAMS {
21
+ }
22
+ type RESULT = number;
23
+ }
24
+ type default_number = ($$_: string, $$_p: null) => number;
25
+ }
26
+ export declare namespace Value_Deserializers {
27
+ namespace _boolean {
28
+ type CONTEXT = string;
29
+ namespace PARAMS {
30
+ }
31
+ type RESULT = boolean;
32
+ }
33
+ type _boolean = ($$_: string, $$_p: null) => boolean;
34
+ namespace custom_numbers {
35
+ }
36
+ type custom_numbers = null;
37
+ namespace default_number {
38
+ type CONTEXT = string;
39
+ namespace PARAMS {
40
+ }
41
+ type RESULT = number;
42
+ }
43
+ type default_number = ($$_: string, $$_p: null) => number;
44
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfZGVzZXJpYWxpemVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9nZW5lcmF0ZWQvaW50ZXJmYWNlL3NjaGVtYXMvbGVnYWN5X2pzb25fc2NoZW1hL3ZhbHVlX2Rlc2VyaWFsaXplcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,44 @@
1
+ export type _T_Value_Serializers = {
2
+ readonly 'boolean': ($$_: boolean, $$_p: null) => string;
3
+ readonly 'custom numbers': null;
4
+ readonly 'default number': ($$_: number, $$_p: null) => string;
5
+ };
6
+ export type Value_Serializers = _T_Value_Serializers;
7
+ export declare namespace _T_Value_Serializers {
8
+ namespace _boolean {
9
+ type CONTEXT = boolean;
10
+ namespace PARAMS {
11
+ }
12
+ type RESULT = string;
13
+ }
14
+ type _boolean = ($$_: boolean, $$_p: null) => string;
15
+ namespace custom_numbers {
16
+ }
17
+ type custom_numbers = null;
18
+ namespace default_number {
19
+ type CONTEXT = number;
20
+ namespace PARAMS {
21
+ }
22
+ type RESULT = string;
23
+ }
24
+ type default_number = ($$_: number, $$_p: null) => string;
25
+ }
26
+ export declare namespace Value_Serializers {
27
+ namespace _boolean {
28
+ type CONTEXT = boolean;
29
+ namespace PARAMS {
30
+ }
31
+ type RESULT = string;
32
+ }
33
+ type _boolean = ($$_: boolean, $$_p: null) => string;
34
+ namespace custom_numbers {
35
+ }
36
+ type custom_numbers = null;
37
+ namespace default_number {
38
+ type CONTEXT = number;
39
+ namespace PARAMS {
40
+ }
41
+ type RESULT = string;
42
+ }
43
+ type default_number = ($$_: number, $$_p: null) => string;
44
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWVfc2VyaWFsaXplcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZ2VuZXJhdGVkL2ludGVyZmFjZS9zY2hlbWFzL2xlZ2FjeV9qc29uX3NjaGVtYS92YWx1ZV9zZXJpYWxpemVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,4 @@
1
+ export type TestRunner = {
2
+ 'target_extension': string;
3
+ 'transformer': (input_content: string, filename_without_extension: string) => string;
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdHJ1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2UvdGVzdHJ1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,4 @@
1
+ import * as _et from 'exupery-core-types';
2
+ import { TestRunner } from "./interface/testrunner";
3
+ export declare const run_tests: (tests: _et.Dictionary<TestRunner>) => void;
4
+ export declare const test_runner: ($p: TestRunner, name: string, overwrite_expected: boolean) => boolean;
@@ -0,0 +1,239 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.test_runner = exports.run_tests = void 0;
27
+ const child_process_1 = require("child_process");
28
+ const path = __importStar(require("path"));
29
+ const fs = __importStar(require("fs"));
30
+ const run_tests = (tests) => {
31
+ const test_base_dir = '/home/corno/workspace/pareto-development-tools/test';
32
+ const data_dir = '/home/corno/workspace/pareto-development-tools/data/test';
33
+ const args = process.argv.slice(2);
34
+ const overwrite_expected = args.includes('--overwrite-expected');
35
+ const specific_test = args.find(arg => arg.startsWith('--test='))?.split('=')[1];
36
+ // Clean the entire 'actual' directory before starting tests
37
+ const actual_dir = path.join(data_dir, 'actual');
38
+ if (fs.existsSync(actual_dir)) {
39
+ // Remove all contents
40
+ const entries = fs.readdirSync(actual_dir);
41
+ for (const entry of entries) {
42
+ const entry_path = path.join(actual_dir, entry);
43
+ const stat = fs.statSync(entry_path);
44
+ if (stat.isDirectory()) {
45
+ fs.rmSync(entry_path, { recursive: true, force: true });
46
+ }
47
+ else {
48
+ fs.unlinkSync(entry_path);
49
+ }
50
+ }
51
+ console.log('✓ Cleaned actual directory\n');
52
+ }
53
+ else {
54
+ fs.mkdirSync(actual_dir, { recursive: true });
55
+ console.log('✓ Created actual directory\n');
56
+ }
57
+ console.log('Running all tests...\n');
58
+ console.log('-'.repeat(60));
59
+ let failed_tests = 0;
60
+ let passed_tests = 0;
61
+ const failed_test_types = [];
62
+ // Run each test
63
+ tests.map(($, key) => {
64
+ try {
65
+ const success = (0, exports.test_runner)($, key, overwrite_expected);
66
+ if (success) {
67
+ passed_tests++;
68
+ }
69
+ else {
70
+ failed_tests++;
71
+ failed_test_types.push(key);
72
+ }
73
+ }
74
+ catch (err) {
75
+ failed_tests++;
76
+ failed_test_types.push(key);
77
+ }
78
+ });
79
+ // Summary
80
+ console.log('\n' + '-'.repeat(60));
81
+ console.log(`Test Summary:`);
82
+ console.log(` - ${passed_tests} test(s) passed`);
83
+ console.log(` - ${failed_tests} test(s) failed`);
84
+ if (failed_tests > 0) {
85
+ console.log('\n❌ Some tests failed');
86
+ // Open Beyond Compare for expected vs actual directories
87
+ const expected_path = path.join(data_dir, 'expected');
88
+ const actual_path = path.join(data_dir, 'actual');
89
+ console.log(`\nOpening Beyond Compare...`);
90
+ console.log(` Expected: ${expected_path}`);
91
+ console.log(` Actual: ${actual_path}`);
92
+ try {
93
+ (0, child_process_1.execSync)(`bcompare "${expected_path}" "${actual_path}" &`, {
94
+ stdio: 'ignore'
95
+ });
96
+ }
97
+ catch (err) {
98
+ console.error(` ⚠️ Could not open Beyond Compare. Make sure 'bcompare' is in your PATH.`);
99
+ }
100
+ process.exit(1);
101
+ }
102
+ else {
103
+ console.log('\n✓ All tests passed');
104
+ }
105
+ };
106
+ exports.run_tests = run_tests;
107
+ function to_snake_case(str) {
108
+ return str.toLowerCase().replace(/\s+/g, '_');
109
+ }
110
+ const test_runner = ($p, name, overwrite_expected) => {
111
+ const data_dir = path.join(__dirname, '../../../data');
112
+ const test_data_dir = path.join(data_dir, 'test');
113
+ const fixtures_dir = path.join(test_data_dir, 'fixtures');
114
+ const test_dir_name = to_snake_case(name);
115
+ const input_dir = path.join(fixtures_dir, test_dir_name);
116
+ const expected_dir = path.join(test_data_dir, 'expected');
117
+ const actual_dir = path.join(test_data_dir, 'actual');
118
+ console.log('='.repeat(60));
119
+ console.log(`Running test: ${name}\n`);
120
+ // Check if input directory exists
121
+ if (!fs.existsSync(input_dir)) {
122
+ console.error(`❌ Input directory not found: ${input_dir}`);
123
+ return false;
124
+ }
125
+ // Ensure actual output directory exists
126
+ const actual_output_dir = path.join(actual_dir, test_dir_name);
127
+ if (!fs.existsSync(actual_output_dir)) {
128
+ fs.mkdirSync(actual_output_dir, { recursive: true });
129
+ }
130
+ // Clear/create expected output directory if overwrite flag is set
131
+ const expected_output_dir = path.join(expected_dir, test_dir_name);
132
+ if (overwrite_expected) {
133
+ // Only clear if the directory exists and has files
134
+ if (fs.existsSync(expected_output_dir)) {
135
+ const files = fs.readdirSync(expected_output_dir);
136
+ console.log(`⚠️ Overwrite mode: Will replace ${files.length} existing expected file(s) in ${test_dir_name}`);
137
+ for (const file of files) {
138
+ fs.unlinkSync(path.join(expected_output_dir, file));
139
+ }
140
+ console.log(`✓ Cleared ${expected_output_dir}`);
141
+ }
142
+ else {
143
+ fs.mkdirSync(expected_output_dir, { recursive: true });
144
+ console.log(`✓ Created ${expected_output_dir}`);
145
+ }
146
+ }
147
+ else {
148
+ // Ensure expected output directory exists
149
+ if (!fs.existsSync(expected_output_dir)) {
150
+ fs.mkdirSync(expected_output_dir, { recursive: true });
151
+ }
152
+ }
153
+ // Read all files from input directory
154
+ const input_files = fs.readdirSync(input_dir);
155
+ console.log(`\nFound ${input_files.length} input file(s) to process\n`);
156
+ let differences_found = 0;
157
+ let matches_found = 0;
158
+ for (const input_file of input_files) {
159
+ const base_name = path.basename(input_file, path.extname(input_file));
160
+ const output_name = `${base_name}.${$p.target_extension}`;
161
+ try {
162
+ // Read input file
163
+ const input_path = path.join(input_dir, input_file);
164
+ const input_content = fs.readFileSync(input_path, 'utf8');
165
+ // Transform input to output
166
+ const output_content = $p.transformer(input_content, base_name);
167
+ // If overwrite expected, write to expected directory
168
+ if (overwrite_expected) {
169
+ const expected_path = path.join(expected_output_dir, output_name);
170
+ fs.writeFileSync(expected_path, output_content);
171
+ console.log(`\x1b[32m${base_name} ✓\x1b[0m`);
172
+ }
173
+ else {
174
+ // Compare with expected
175
+ const expected_path = path.join(expected_output_dir, output_name);
176
+ if (!fs.existsSync(expected_path)) {
177
+ // No expected file exists, write to actual
178
+ const actual_path = path.join(actual_output_dir, output_name);
179
+ fs.writeFileSync(actual_path, output_content);
180
+ console.log(`\x1b[31m${base_name} ❌\x1b[0m`);
181
+ differences_found++;
182
+ }
183
+ else {
184
+ // Compare with expected
185
+ const expected_content = fs.readFileSync(expected_path, 'utf8');
186
+ if (output_content === expected_content) {
187
+ console.log(`\x1b[32m${base_name} ✓\x1b[0m`);
188
+ matches_found++;
189
+ }
190
+ else {
191
+ // Write to actual directory
192
+ const actual_path = path.join(actual_output_dir, output_name);
193
+ fs.writeFileSync(actual_path, output_content);
194
+ console.log(`\x1b[31m${base_name} ❌\x1b[0m`);
195
+ differences_found++;
196
+ }
197
+ }
198
+ }
199
+ }
200
+ catch (error) {
201
+ // Write error information to actual file so we can see what went wrong
202
+ const actual_path = path.join(actual_output_dir, output_name);
203
+ const error_content = `ERROR during transformation:\n${error instanceof Error ? error.stack : String(error)}`;
204
+ fs.writeFileSync(actual_path, error_content);
205
+ console.log(`\x1b[31m${base_name} ❌\x1b[0m`);
206
+ console.log('\n' + '-'.repeat(60));
207
+ console.error(`❌ FATAL ERROR during transformation of ${base_name}:`);
208
+ console.error(error instanceof Error ? error.message : String(error));
209
+ console.error(`Full error details written to: ${actual_path}`);
210
+ console.error(`\nAborting test run due to transformation error.`);
211
+ console.log('='.repeat(60));
212
+ process.exit(1);
213
+ }
214
+ }
215
+ console.log('\n' + '-'.repeat(60));
216
+ if (overwrite_expected) {
217
+ console.log(`✓ Baseline set: ${input_files.length} file(s) written to expected directory`);
218
+ console.log('='.repeat(60));
219
+ return true;
220
+ }
221
+ else {
222
+ console.log(`Summary:`);
223
+ console.log(` - ${matches_found} file(s) match expected`);
224
+ console.log(` - ${differences_found} file(s) differ or missing expected`);
225
+ if (differences_found > 0) {
226
+ console.log(`\n⚠️ Differences found! Check files in: ${actual_output_dir}`);
227
+ console.log(`To set new baseline, run with: --overwrite-expected`);
228
+ console.log('='.repeat(60));
229
+ return false;
230
+ }
231
+ else {
232
+ console.log(`\n✓ All generated files match expected`);
233
+ console.log('='.repeat(60));
234
+ return true;
235
+ }
236
+ }
237
+ };
238
+ exports.test_runner = test_runner;
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuX3Rlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bl90ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLGlEQUF5QztBQUN6QywyQ0FBNkI7QUFDN0IsdUNBQXlCO0FBR2xCLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBaUMsRUFBRSxFQUFFO0lBRTNELE1BQU0sYUFBYSxHQUFHLHFEQUFxRCxDQUFDO0lBQzVFLE1BQU0sUUFBUSxHQUFHLDBEQUEwRCxDQUFDO0lBRTVFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpGLDREQUE0RDtJQUM1RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNqRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM1QixzQkFBc0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2hELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxD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