@bikky/compiler 0.1.18 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.idea/Compiler.iml +1 -0
  2. package/.idea/scopes/All_Typescript_Files.xml +3 -0
  3. package/Execution/generate.mjs +17 -1
  4. package/Execution/generate.mjs.map +1 -1
  5. package/Execution/generate.mts +33 -3
  6. package/Libraries/BiscuitLibraries.d.mts +2 -0
  7. package/Libraries/BiscuitLibraries.d.mts.map +1 -1
  8. package/Libraries/BiscuitLibraries.mjs +4 -0
  9. package/Libraries/BiscuitLibraries.mjs.map +1 -1
  10. package/Libraries/BiscuitLibraries.mts +5 -1
  11. package/Libraries/ClassMigration.d.mts +88 -0
  12. package/Libraries/ClassMigration.d.mts.map +1 -0
  13. package/Libraries/ClassMigration.mjs +368 -0
  14. package/Libraries/ClassMigration.mjs.map +1 -0
  15. package/Libraries/ClassMigration.mts +431 -0
  16. package/Libraries/RBF.d.mts +4 -0
  17. package/Libraries/RBF.d.mts.map +1 -0
  18. package/Libraries/RBF.mjs +36 -0
  19. package/Libraries/RBF.mjs.map +1 -0
  20. package/Libraries/RBF.mts +46 -0
  21. package/Libraries/RBFTypes.d.ts +43 -0
  22. package/Source/ASTInterface/Crawler.d.ts +2 -1
  23. package/Source/ASTInterface/Crawler.d.ts.map +1 -1
  24. package/Source/ASTInterface/Crawler.js +14 -2
  25. package/Transformers/Main.d.ts +1 -1
  26. package/Transformers/Main.d.ts.map +1 -1
  27. package/Transformers/Main.js +3 -2
  28. package/Transformers/RBFHelpers/Constants.d.ts +3 -0
  29. package/Transformers/RBFHelpers/Constants.d.ts.map +1 -0
  30. package/Transformers/RBFHelpers/Constants.js +7 -0
  31. package/Transformers/RBFHelpers/Imports.d.ts +12 -0
  32. package/Transformers/RBFHelpers/Imports.d.ts.map +1 -0
  33. package/Transformers/RBFHelpers/Imports.js +212 -0
  34. package/Transformers/RBFHelpers/Print.d.ts +1 -0
  35. package/Transformers/RBFHelpers/Print.d.ts.map +1 -0
  36. package/Transformers/RBFHelpers/Print.js +2 -0
  37. package/Transformers/RBFHelpers/PropertyConfig.d.ts +65 -0
  38. package/Transformers/RBFHelpers/PropertyConfig.d.ts.map +1 -0
  39. package/Transformers/RBFHelpers/PropertyConfig.js +420 -0
  40. package/Transformers/RBFTransformer.d.ts +2 -0
  41. package/Transformers/RBFTransformer.d.ts.map +1 -0
  42. package/Transformers/RBFTransformer.js +317 -0
  43. package/package.json +1 -1
  44. package/tsconfig.build.libs.tsbuildinfo +1 -1
  45. package/tsconfig.build.src.tsbuildinfo +1 -1
  46. package/tsconfig.tsbuildinfo +1 -1
  47. package/Transformers/ReplicableTransformer.d.ts +0 -2
  48. package/Transformers/ReplicableTransformer.d.ts.map +0 -1
  49. package/Transformers/ReplicableTransformer.js +0 -797
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClassMigration.mjs","sourceRoot":"","sources":["ClassMigration.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,431 @@
1
+ /// <reference path="./GlobalTypes.d.ts">
2
+
3
+ /**
4
+ * Versions have both a "base" version and a list of mods that apply to the current object.
5
+ * In the form `{base: string, mods: {[name: string]: string}}`.
6
+ */
7
+
8
+ //TODO: Add support for upgrading expression syntax somehow.
9
+
10
+ interface SerialisedVersions {
11
+ core: Migration.Version;
12
+ mods: {[modName: string]: Migration.Version};
13
+ }
14
+
15
+ interface ModVersionMigrator {
16
+ modName: string;
17
+ version: Migration.Version;
18
+ /**
19
+ * This mod must come before the listed mods.
20
+ */
21
+ before: (string | Migration.Version)[];
22
+ /**
23
+ * This mod must come after the listed mods.
24
+ */
25
+ after: (string | Migration.Version)[];
26
+ migration: Map<string, ClassVersionMigrator>;
27
+ api: Map<string, PublicMigratorAPI>;
28
+ }
29
+
30
+ interface BaseVersionMigrator {
31
+ name: Migration.Version;
32
+ preMigration: ModVersionMigrator[];
33
+ migration: Map<string, ClassVersionMigrator>;
34
+ api: Map<string, PublicMigratorAPI>;
35
+ postMigration: ModVersionMigrator[];
36
+ }
37
+
38
+ const versionMigration: BaseVersionMigrator[] = [];
39
+ const latestVersion: SerialisedVersions = {
40
+ core: "" as any,
41
+ mods: {}
42
+ };
43
+
44
+ class ClassMigrator<F, T = never> {
45
+ fromClassName: string;
46
+ toClassName?: string;
47
+
48
+ constructor(fromClassName: string, toClassName?: string) {
49
+ this.fromClassName = fromClassName;
50
+ this.toClassName = toClassName;
51
+ }
52
+
53
+ /**
54
+ * Migrate instances of this class to become instances of another class.
55
+ */
56
+ toClass<X>(klass: Class<X>) {
57
+ return new ClassMigrator<F, X>(this.toClassName ?? this.fromClassName, klass.name);
58
+ }
59
+
60
+ /**
61
+ * Migrate data from an instance or a class that no longer exists into the current class.
62
+ */
63
+ fromInterface<X = never>(name: string) {
64
+ return new ClassMigrator<X, F>(name, this.fromClassName);
65
+ }
66
+
67
+ /**
68
+ * Load data of an old class/data name into the current class, expects that both classes have largely the same structure.
69
+ */
70
+ renamedFrom(name: string) {
71
+ return new ClassMigrator<F, F>(name, this.fromClassName);
72
+ }
73
+
74
+ /**
75
+ * Migrate from one version to another.
76
+ */
77
+ step(fromVersion: Migration.Version, toVersion: Migration.Version) {
78
+ for (let i = 0; i < versionMigration.length; i++) {
79
+ let vers = versionMigration[i];
80
+ if (fromVersion !== versionMigration[i - 1].name) {
81
+ throw new Error(`Trying to migrate from ${fromVersion} to ${toVersion}, but the previous version is ${versionMigration[i - 1].name} and cannot be skipped.`);
82
+ }
83
+ if (vers.name === toVersion) {
84
+ let result = vers.migration.get(this.fromClassName);
85
+ if (!result) {
86
+ vers.migration.set(this.fromClassName, result = new ClassVersionMigrator());
87
+ }
88
+ if (this.toClassName) {
89
+ result.newClassName = this.toClassName;
90
+ }
91
+ return result.publicAPI;
92
+ }
93
+ }
94
+ throw new Error(`Version ${toVersion} does not exist.`);
95
+ }
96
+ }
97
+
98
+ interface ValueMigrator {
99
+ prop?: (val: string)=> string;
100
+ serValue?: (val: any) => any;
101
+ dataValue?: (val: any) => any;
102
+ dataProp?: (val: string) => string;
103
+ }
104
+
105
+ class ClassVersionMigrator {
106
+ propOperations = new Map<string, ValueMigrator>();
107
+ dataOperations = new Map<string, ValueMigrator>();
108
+ newClassName?: string;
109
+ publicAPI = new PublicMigratorAPI(this);
110
+ addOperation(prop: string, operation: ValueMigrator) {
111
+ let existingOperations = this.propOperations.get(prop);
112
+ if (!existingOperations) {
113
+ existingOperations = {prop: (val: string) => val};
114
+ this.propOperations.set(prop, existingOperations);
115
+ let dataName = prop[0].toUpperCase() + prop.slice(1);
116
+ this.dataOperations.set(dataName, existingOperations);
117
+ }
118
+ else {
119
+ for (let key of Object.getOwnPropertyNames(operation) as (keyof ValueMigrator)[]) {
120
+ existingOperations[key] = operation[key];
121
+ }
122
+ }
123
+ }
124
+ addDataOperation(dataName: string, operation: ValueMigrator) {
125
+ let propName = dataName[0].toLowerCase() + dataName.slice(1);
126
+ let existingOperations = this.propOperations.get(propName);
127
+ if (!existingOperations) {
128
+ existingOperations = {dataProp: (val: string) => val};
129
+ this.propOperations.set(propName, existingOperations);
130
+ this.dataOperations.set(dataName, existingOperations);
131
+ }
132
+ else {
133
+ for (let key of Object.getOwnPropertyNames(operation) as (keyof ValueMigrator)[]) {
134
+ existingOperations[key] = operation[key];
135
+ }
136
+ }
137
+ }
138
+ }
139
+
140
+ class PublicMigratorAPI {
141
+ #private: ClassVersionMigrator;
142
+ constructor(cvm: ClassVersionMigrator) {
143
+ this.#private = cvm;
144
+ }
145
+
146
+ /**
147
+ *
148
+ */
149
+ renameProperty(oldName: string, newName: string) {
150
+ this.#private.addOperation(oldName, {prop: (val: string) => newName});
151
+ }
152
+
153
+ renameDataProperty(propName: string, dataName: string) {
154
+ this.#private.addOperation(propName, {dataProp: (val: string) => dataName});
155
+ }
156
+
157
+ arrayToDict(propName: string, keyProp: string) {
158
+ this.#private.addOperation(propName, {
159
+ dataValue: (val: any[]) => {
160
+ return val.reduce((acc, cur) => {acc[cur[keyProp]] = cur; return acc}, {});
161
+ },
162
+ serValue: (val: any[]) => {
163
+ return val.reduce((acc, cur) => {acc[cur[keyProp]] = cur; return acc}, {});
164
+ },
165
+ });
166
+ }
167
+
168
+ dictToArray(propName: string, keyProp: string) {
169
+ this.#private.addDataOperation(propName, {
170
+ serValue: (val: {[key: string]: any}) => {
171
+ return Object.keys(val).map(key => [key, val[key]]);
172
+ }
173
+ });
174
+ }
175
+ }
176
+
177
+ function getUpgradesInOrder(desiredVersions: SerialisedVersions, className: string) {
178
+ let currentVersionIndex = versionMigration.findIndex((v) => v.name == desiredVersions.core);
179
+ let modsStartFound: {[name: string]: boolean} = {};
180
+ let upgrades: ClassVersionMigrator[] = [];
181
+ while (currentVersionIndex < versionMigration.length - 1) {
182
+ let currentVersion = versionMigration[currentVersionIndex];
183
+ for (let something of currentVersion.preMigration) {
184
+ if (something.modName in desiredVersions.mods) {
185
+ if (modsStartFound[something.modName]) {
186
+ let classUpgrader = currentVersion.migration.get(className);
187
+ if (classUpgrader) {
188
+ if (classUpgrader.newClassName) {
189
+ className = classUpgrader.newClassName;
190
+ }
191
+ upgrades.push(classUpgrader);
192
+ }
193
+ }
194
+ if (something.version === desiredVersions.mods[something.modName]) {
195
+ modsStartFound[something.modName] = true;
196
+ }
197
+ }
198
+ }
199
+
200
+ let classUpgrader = currentVersion.migration.get(className);
201
+ if (classUpgrader) {
202
+ if (classUpgrader.newClassName) {
203
+ className = classUpgrader.newClassName;
204
+ }
205
+ upgrades.push(classUpgrader);
206
+ }
207
+
208
+ for (let something of currentVersion.postMigration) {
209
+ if (something.modName in desiredVersions.mods) {
210
+ if (modsStartFound[something.modName]) {
211
+ let classUpgrader = currentVersion.migration.get(className);
212
+ if (classUpgrader) {
213
+ if (classUpgrader.newClassName) {
214
+ className = classUpgrader.newClassName;
215
+ }
216
+ upgrades.push(classUpgrader);
217
+ }
218
+ }
219
+ if (something.version === desiredVersions.mods[something.modName]) {
220
+ modsStartFound[something.modName] = true;
221
+ }
222
+ }
223
+ }
224
+ currentVersionIndex++;
225
+ }
226
+ return upgrades;
227
+ }
228
+ /**
229
+ * Migrates a given serialised or data object up to a new API version.
230
+ * @param obj the data to update.
231
+ */
232
+ export function Migrate<T = any>(obj: T): T;
233
+ export function Migrate(obj: any): any {
234
+ if (Array.isArray(obj)) {
235
+ //serialised object.
236
+ let className = obj[0];
237
+ let actualObject = obj[1];
238
+ let desiredVersions = actualObject.version as SerialisedVersions;
239
+ let upgrades = getUpgradesInOrder(desiredVersions, className);
240
+ let upgradedObject: any = {
241
+ version: latestVersion
242
+ };
243
+ for (let upgrader of upgrades) {
244
+ if (upgrader.newClassName) className = upgrader.newClassName;
245
+ for (let name in actualObject) {
246
+ if (name === "version") {
247
+ continue;
248
+ }
249
+ let propUpgrader = upgrader.propOperations.get(name);
250
+ name = propUpgrader?.prop?.(name) ?? name;
251
+ if (Array.isArray(actualObject[name]) && actualObject[name].length == 2 && actualObject[name] instanceof Object && actualObject[name][1].version) {
252
+ let value = Migrate(actualObject[name]);
253
+ if (propUpgrader?.serValue) {
254
+ value = propUpgrader.serValue(value);
255
+ }
256
+ upgradedObject[name] = [name, value];
257
+ }
258
+ else {
259
+ let value = actualObject[name];
260
+ if (propUpgrader?.dataValue) {
261
+ value = propUpgrader.dataValue(value);
262
+ }
263
+ upgradedObject[name] = value;
264
+ }
265
+ }
266
+ }
267
+ return [className, upgradedObject];
268
+ }
269
+ else {
270
+ //data object.
271
+ let desiredVersions = obj.version as SerialisedVersions;
272
+ let upgrades = getUpgradesInOrder(desiredVersions, obj.Class);
273
+ let upgradedObject: any = {
274
+ Class: obj.Class,
275
+ version: latestVersion
276
+ };
277
+ for (let upgrader of upgrades) {
278
+ if (upgrader.newClassName) upgradedObject.Class = upgrader.newClassName;
279
+ for (let name in obj) {
280
+ if (name === "version" || name === "Class") {
281
+ continue;
282
+ }
283
+ let propUpgrader = upgrader.propOperations.get(name);
284
+ name = propUpgrader?.prop?.(name) ?? name;
285
+ if (obj[name] instanceof Object && obj[name].version && obj[name].Class) {
286
+ let value = Migrate(obj[name]);
287
+ if (propUpgrader?.serValue) {
288
+ value = propUpgrader.serValue(value);
289
+ }
290
+ upgradedObject[name] = [name, value];
291
+ }
292
+ else {
293
+ let value = obj[name];
294
+ if (propUpgrader?.dataValue) {
295
+ value = propUpgrader.dataValue(value);
296
+ }
297
+ upgradedObject[name] = value;
298
+ }
299
+ }
300
+ }
301
+ return upgradedObject;
302
+ }
303
+ }
304
+
305
+ export module Migration {
306
+ export declare class Version {
307
+ #secret: any;
308
+ }
309
+
310
+ /**
311
+ * Registers a migration pattern for the provided class.
312
+ * @param klass the class to migrate data for.
313
+ */
314
+ export function Register<T>(klass: Class<T>) {
315
+ return new ClassMigrator(klass.constructor.name);
316
+ }
317
+
318
+
319
+ export function SetBaseVersion(version: string): Version {
320
+ if (versionMigration.length > 0) throw new Error("Base version was already set, cannot set base version again.");
321
+ versionMigration.push({
322
+ name: version as any,
323
+ migration: new Map(),
324
+ api: new Map(),
325
+ postMigration: [],
326
+ preMigration: [],
327
+ });
328
+ latestVersion.core = version as any;
329
+ return version as any;
330
+ }
331
+
332
+ /**
333
+ *
334
+ * @param priorVersion the version that this version is based from.
335
+ * @param version
336
+ * @param coreVersionChange
337
+ * @constructor
338
+ */
339
+ export function AddCoreVersion(priorVersion: Version, version: string): Version {
340
+ let index = versionMigration.findIndex((v) => v.name == priorVersion) + 1;
341
+ versionMigration.splice(index, 0, {
342
+ name: version as any,
343
+ migration: new Map(),
344
+ api: new Map(),
345
+ postMigration: [],
346
+ preMigration: [],
347
+ });
348
+ latestVersion.core = version as any;
349
+ return version as any;
350
+ }
351
+
352
+ export function AddModVersion(coreVersion: string, modName: string, version: string, opts?: {beforeMods: (string | Version)[], afterMods: (string | Version)[], beforeBaseVersionUpgrade?: boolean}): Version {
353
+ let currentVersion = versionMigration.find((v) => v.name == coreVersion as any);
354
+ if (!currentVersion) throw new Error(`Cannot add mod version ${version} to core version ${coreVersion} as it does not exist.`);
355
+ let finalVersionName = (modName + "_" + version) as any as Version;
356
+ let migrationTime = opts?.beforeBaseVersionUpgrade ? currentVersion.preMigration : currentVersion.postMigration;
357
+ let beforeLoc = opts?.beforeMods ?? [];
358
+ let afterLoc = opts?.afterMods ?? [];
359
+ latestVersion.mods[modName] = finalVersionName;
360
+
361
+ migrationTime.forEach((e) => {
362
+ //TODO: Check to see if any of the befores are already in the afters and vice versa
363
+ // - that's an error condition.
364
+ if (beforeLoc.includes(e.modName) || beforeLoc.includes(e.version)) {
365
+ e.after = e.after.concat(afterLoc);
366
+ afterLoc = afterLoc.concat(e.after);
367
+ }
368
+ if (afterLoc.includes(e.modName) || afterLoc.includes(e.version)) {
369
+ e.before = e.before.concat(beforeLoc);
370
+ beforeLoc = beforeLoc.concat(e.before);
371
+ }
372
+ });
373
+ migrationTime.push({
374
+ modName: modName,
375
+ version: finalVersionName,
376
+ migration: new Map(),
377
+ api: new Map(),
378
+ before: beforeLoc,
379
+ after: afterLoc,
380
+ });
381
+ migrationTime.sort((a, b) => {
382
+ if (a.before.includes(b.modName) || a.before.includes(b.version)) {
383
+ return -1;
384
+ }
385
+ if (b.before.includes(a.modName) || b.before.includes(a.version)) {
386
+ return 1;
387
+ }
388
+ if (a.after.includes(b.modName) || a.after.includes(b.version)) {
389
+ return 1;
390
+ }
391
+ if (b.after.includes(a.modName) || b.after.includes(a.version)) {
392
+ return -1;
393
+ }
394
+ return 0;
395
+ });
396
+ // let earlyIndex = migrationTime.reduce<number>((previousIndex, currentMod, index) => {
397
+ // if (beforeLoc.includes(currentMod.modName)) {
398
+ // return index;
399
+ // }
400
+ // if (currentMod.after.includes(modName)) {
401
+ // return index;
402
+ // }
403
+ // return previousIndex;
404
+ // }, 0 ) ?? 0;
405
+ // let lateIndex = migrationTime.reduceRight<number>((previousIndex, currentMod, index) => {
406
+ // if (afterLoc.includes(currentMod.modName)) {
407
+ // return index + 1;
408
+ // }
409
+ // if (currentMod.before.includes(modName)) {
410
+ // return index + 1;
411
+ // }
412
+ // return previousIndex;
413
+ // }, migrationTime.length - 1 ) ?? migrationTime.length - 1;
414
+ // if (earlyIndex > lateIndex) {
415
+ // throw new Error(`Cannot add mod version ${version} to core version ${coreVersion} as it conflicts with other mods.`);
416
+ // }
417
+ // migrationTime.splice(earlyIndex, 0, {
418
+ // modName: modName,
419
+ // version: finalVersionName,
420
+ // migration: new Map(),
421
+ // api: new Map(),
422
+ // before: opts?.beforeMods ?? [],
423
+ // after: opts?.afterMods ?? [],
424
+ // });
425
+ return finalVersionName;
426
+ }
427
+
428
+ export function getLatestVersion(): SerialisedVersions {
429
+ return latestVersion;
430
+ }
431
+ }
@@ -0,0 +1,4 @@
1
+ import { RBFTypes } from "./RBFTypes.js";
2
+ export declare function RegisterClassRBF(rbf: RBFTypes.ReplicableInfo): void;
3
+ export declare function GetClassesAndRBFs(callback: (klass: Class<any>, rbf: RBFTypes.ReplicableInfo) => void): void;
4
+ //# sourceMappingURL=RBF.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RBF.d.mts","sourceRoot":"","sources":["RBF.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMzC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,cAAc,QAG5D;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,cAAc,KAAK,IAAI,QAGpG"}
@@ -0,0 +1,36 @@
1
+ const allClasses = [];
2
+ const classesByName = new Map();
3
+ const callbacks = [];
4
+ export function RegisterClassRBF(rbf) {
5
+ allClasses.push(rbf);
6
+ callbacks.forEach(callback => callback(classesByName.get(rbf.Name), rbf));
7
+ }
8
+ export function GetClassesAndRBFs(callback) {
9
+ callbacks.push(callback);
10
+ allClasses.forEach((v) => callback(classesByName.get(v.Name), v));
11
+ }
12
+ /**
13
+ * A class decorator that is used to record the class by it's class name so it can
14
+ * be synchronized with the relevant RBF data.
15
+ */
16
+ function addressableClass(version) {
17
+ return function (target) {
18
+ classesByName.set(target.name, target);
19
+ };
20
+ }
21
+ function inlineClass(version) {
22
+ return function (target) {
23
+ classesByName.set(target.name, target);
24
+ };
25
+ }
26
+ if (typeof global !== "undefined") {
27
+ global.AddressableClass = addressableClass;
28
+ global.InlineClass = inlineClass;
29
+ }
30
+ else {
31
+ AddressableClass = addressableClass;
32
+ InlineClass = inlineClass;
33
+ window.AddressableClass = addressableClass;
34
+ window.InlineClass = inlineClass;
35
+ }
36
+ //# sourceMappingURL=RBF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RBF.mjs","sourceRoot":"","sources":["RBF.mts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAA8B,EAAE,CAAC;AACjD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAe,CAAC;AAC7C,MAAM,SAAS,GAAkE,EAAE,CAAC;AAEpF,MAAM,UAAU,gBAAgB,CAAC,GAA4B;IAC5D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAmE;IACpG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAY;IACrC,OAAO,UAAU,MAAkB;QAClC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC,CAAA;AACF,CAAC;AACD,SAAS,WAAW,CAAC,OAAY;IAChC,OAAO,UAAU,MAAkB;QAClC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC,CAAA;AACF,CAAC;AAMD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,MAAc,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACnD,MAAc,CAAC,WAAW,GAAG,WAAW,CAAC;AAC3C,CAAC;KACI,CAAC;IACL,gBAAgB,GAAG,gBAAgB,CAAC;IACpC,WAAW,GAAG,WAAW,CAAC;IACzB,MAAc,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IACnD,MAAc,CAAC,WAAW,GAAG,WAAW,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,46 @@
1
+ /// <reference path="./GlobalTypes.d.ts">
2
+ import { RBFTypes } from "./RBFTypes.js";
3
+
4
+ const allClasses: RBFTypes.ReplicableInfo[] = [];
5
+ const classesByName = new Map<string, any>();
6
+ const callbacks: ((klass: Class<any>, rbf: RBFTypes.ReplicableInfo) => void)[] = [];
7
+
8
+ export function RegisterClassRBF(rbf: RBFTypes.ReplicableInfo) {
9
+ allClasses.push(rbf);
10
+ callbacks.forEach(callback => callback(classesByName.get(rbf.Name), rbf));
11
+ }
12
+
13
+ export function GetClassesAndRBFs(callback: (klass: Class<any>, rbf: RBFTypes.ReplicableInfo) => void) {
14
+ callbacks.push(callback);
15
+ allClasses.forEach((v)=> callback(classesByName.get(v.Name), v));
16
+ }
17
+
18
+ /**
19
+ * A class decorator that is used to record the class by it's class name so it can
20
+ * be synchronized with the relevant RBF data.
21
+ */
22
+ function addressableClass(version: any) {
23
+ return function (target: Class<any>) {
24
+ classesByName.set(target.name, target);
25
+ }
26
+ }
27
+ function inlineClass(version: any) {
28
+ return function (target: Class<any>) {
29
+ classesByName.set(target.name, target);
30
+ }
31
+ }
32
+
33
+ declare var window: any;
34
+ declare var AddressableClass: typeof addressableClass;
35
+ declare var InlineClass: typeof inlineClass;
36
+
37
+ if (typeof global !== "undefined") {
38
+ (global as any).AddressableClass = addressableClass;
39
+ (global as any).InlineClass = inlineClass;
40
+ }
41
+ else {
42
+ AddressableClass = addressableClass;
43
+ InlineClass = inlineClass;
44
+ (window as any).AddressableClass = addressableClass;
45
+ (window as any).InlineClass = inlineClass;
46
+ }
@@ -21,6 +21,49 @@ export declare module RBFTypes {
21
21
 
22
22
  export type PropertyConfiguration = BikPropertyConfig;
23
23
 
24
+
25
+ export enum PropertyTypes {
26
+ AsIs = 0b00000000, // No modifications
27
+ Definition = 0b00000001, // Storing the class' data instead of value.
28
+ Serialised = 0b00000010, // Storing the class' serialised data instead of value.
29
+ ForceInline= 0b00000011, // Turns a reference into a value when serialising.
30
+ //The rest are all modifiers.
31
+ Expression = 0b00000100,
32
+ Array = 0b00001000,
33
+ Array2 = 0b00010000,
34
+ Dictionary = 0b00100000, //Made with {}
35
+ Map = 0b01000000, //Made with the Map class
36
+ Solo = 0b10000000, //Only used in special circumstances to denote a property that is not array/dict/map.
37
+ }
38
+
39
+
40
+ export interface ExpressionConfiguration {
41
+ version: string;
42
+ outputTypes: any[];
43
+ startType: any;
44
+ cacheable?: boolean;
45
+ duringLoad?: boolean;
46
+ }
47
+
48
+ export interface PropertyConfiguration {
49
+ name: string;
50
+ load: {
51
+ present: true | false | "optional";
52
+ skipLoad: boolean;
53
+ name: string;
54
+ default: any;
55
+ possibleModifiers: PropertyTypes;
56
+ types: RecursivePropertyType[];
57
+ };
58
+ serialisation: {
59
+ present: true | false | "writeOnly";
60
+ inline: boolean;
61
+ possibleModifiers: PropertyTypes;
62
+ types: RecursivePropertyType[];
63
+ };
64
+ expression: ExpressionConfiguration | undefined;
65
+ }
66
+
24
67
  export interface ConvertedPropertyData {
25
68
  Config: PropertyConfiguration,
26
69
  DataName: string;
@@ -3,7 +3,8 @@ export declare namespace Crawler {
3
3
  function SetProgram(tsProgram: ts.Program): void;
4
4
  function SetFile(tsFile: ts.SourceFile): void;
5
5
  function writeSupplementaryFile(path: string, newData: string): void;
6
- function getTestFiles(path: string): Map<string, string> | undefined;
6
+ function clearTestFiles(): void;
7
+ function getTestFiles(): Map<string, string> | undefined;
7
8
  function OnFile(callback: (file: {
8
9
  ts: ts.SourceFile;
9
10
  data: any;
@@ -1 +1 @@
1
- {"version":3,"file":"Crawler.d.ts","sourceRoot":"","sources":["Crawler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAI7C,yBAAc,OAAO,CAAC;IAUlB,SAAgB,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,QAE/C;IAED,SAAgB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,QAK5C;IAGD,SAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAkBnE;IAED,SAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAK1E;IAED,SAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,KAAG,IAAI,QAE9E;IAED,SAAgB,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,KAAG,EAAE,CAAC,UAAU,QAEhG;IAED,SAAgB,UAAU;;;MAEzB;IAED,SAAgB,OAAO;;;MAEtB;IAED,SAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,QAE3G;IAED,SAAgB,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,qBAAqB,QAE9D;IAED,SAAgB,UAAU,6BAEzB;IAED,SAAgB,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,WAiDvF;CAEJ"}
1
+ {"version":3,"file":"Crawler.d.ts","sourceRoot":"","sources":["Crawler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAI7C,yBAAc,OAAO,CAAC;IAWlB,SAAgB,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,QAE/C;IAED,SAAgB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,QAK5C;IAGD,SAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAkBnE;IAED,SAAgB,cAAc,SAI7B;IAED,SAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAK9D;IAED,SAAgB,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,KAAG,IAAI,QAE9E;IAED,SAAgB,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,KAAG,EAAE,CAAC,UAAU,QAEhG;IAED,SAAgB,UAAU;;;MAEzB;IAED,SAAgB,OAAO;;;MAEtB;IAED,SAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,QAE3G;IAED,SAAgB,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,qBAAqB,QAE9D;IAED,SAAgB,UAAU,6BAEzB;IAED,SAAgB,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,WAsDvF;CAEJ"}
@@ -10,6 +10,7 @@ var Crawler;
10
10
  let file;
11
11
  let fileCallbacks = [];
12
12
  let fileCompletedCallbacks = [];
13
+ console.log("Crawler module loaded.");
13
14
  let testFilesWritten = new Map();
14
15
  function SetProgram(tsProgram) {
15
16
  program = { ts: tsProgram, data: {} };
@@ -43,7 +44,13 @@ var Crawler;
43
44
  }
44
45
  }
45
46
  Crawler.writeSupplementaryFile = writeSupplementaryFile;
46
- function getTestFiles(path) {
47
+ function clearTestFiles() {
48
+ if (typeof __isTesting__ !== "undefined" && __isTesting__) {
49
+ testFilesWritten.clear();
50
+ }
51
+ }
52
+ Crawler.clearTestFiles = clearTestFiles;
53
+ function getTestFiles() {
47
54
  if (typeof __isTesting__ !== "undefined" && __isTesting__) {
48
55
  return testFilesWritten;
49
56
  }
@@ -111,7 +118,10 @@ var Crawler;
111
118
  }
112
119
  }
113
120
  }
114
- if (result.length > 1) {
121
+ if (result.length === 0) {
122
+ return [];
123
+ }
124
+ else if (result.length > 1) {
115
125
  return crawlArray(result);
116
126
  }
117
127
  else {
@@ -121,8 +131,10 @@ var Crawler;
121
131
  //For some reason ts.isSourceFile doesn't proc correctly for SourceFile nodes.
122
132
  if (ts.isSourceFile(start) || start.kind === ts.SyntaxKind.SourceFile) {
123
133
  let result = ts.visitNode(start, crawl);
134
+ file.ts = result;
124
135
  for (let callback of fileCompletedCallbacks) {
125
136
  result = callback({ ts: result, data: {} });
137
+ file.ts = result;
126
138
  }
127
139
  return result;
128
140
  }
@@ -1,6 +1,6 @@
1
1
  import "./DelayTransformer.js";
2
2
  import "./MixinTransformer.js";
3
- import "./ReplicableTransformer.js";
3
+ import "./RBFTransformer.js";
4
4
  import * as ts from "../Cache/typescript";
5
5
  export default function (program: ts.Program, pluginOptions: {}): (context: ts.TransformationContext) => (sourceFile: ts.SourceFile) => ts.Node;
6
6
  //# sourceMappingURL=Main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Main.d.ts","sourceRoot":"","sources":["Main.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI1C,MAAM,CAAC,OAAO,WAAW,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,aAE1C,GAAG,qBAAqB,kBAEjB,GAAG,UAAU,aAKxC"}
1
+ {"version":3,"file":"Main.d.ts","sourceRoot":"","sources":["Main.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI1C,MAAM,CAAC,OAAO,WAAW,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,aAE1C,GAAG,qBAAqB,kBAEjB,GAAG,UAAU,aAMxC"}