@bikky/compiler 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 (42) hide show
  1. package/ASTHelper.d.ts +74 -0
  2. package/ASTHelper.d.ts.map +1 -0
  3. package/BiscuitCompiler.njsproj +89 -0
  4. package/BiscuitCompiler.njsproj.user +7 -0
  5. package/Libraries/BiscuitLibraries.d.ts +3 -0
  6. package/Libraries/BiscuitLibraries.d.ts.map +1 -0
  7. package/Libraries/BiscuitLibraries.js +3 -0
  8. package/Libraries/BiscuitLibraries.js.map +1 -0
  9. package/Libraries/BiscuitLibraries.ts +2 -0
  10. package/Libraries/GlobalTypes.d.ts +57 -0
  11. package/Libraries/MixinCode.d.ts +14 -0
  12. package/Libraries/MixinCode.d.ts.map +1 -0
  13. package/Libraries/MixinCode.js +109 -0
  14. package/Libraries/MixinCode.js.map +1 -0
  15. package/Libraries/MixinCode.ts +125 -0
  16. package/Libraries/package-lock.json +5 -0
  17. package/Source/ASTHelper.js +344 -0
  18. package/Source/ASTHelper.js.map +1 -0
  19. package/Source/ASTHelper.ts +373 -0
  20. package/Source/TSPatchTypes.d.ts +17 -0
  21. package/Transformers/CompilerInsertions.ts +21 -0
  22. package/Transformers/MacroTransformer.js +273 -0
  23. package/Transformers/MacroTransformer.js.map +1 -0
  24. package/Transformers/MacroTransformer.ts +304 -0
  25. package/Transformers/Macros.d.ts +3 -0
  26. package/Transformers/Macros.d.ts.map +1 -0
  27. package/Transformers/MixinTransformer.js +124 -0
  28. package/Transformers/MixinTransformer.js.map +1 -0
  29. package/Transformers/MixinTransformer.ts +151 -0
  30. package/Transformers/SuperTransform.d.ts +3 -0
  31. package/Transformers/SuperTransform.d.ts.map +1 -0
  32. package/Transformers/SuperTransform.js +117 -0
  33. package/Transformers/SuperTransform.js.map +1 -0
  34. package/Transformers/SuperTransform.ts +129 -0
  35. package/bin/Microsoft.NodejsTools.WebRole.dll +0 -0
  36. package/obj/Debug/BiscuitCompiler.njsproj.AssemblyReference.cache +0 -0
  37. package/obj/Debug/BiscuitCompiler.njsproj.CoreCompileInputs.cache +1 -0
  38. package/obj/Debug/BiscuitCompiler.njsproj.FileListAbsolute.txt +3 -0
  39. package/package.json +23 -0
  40. package/tsconfig.build.json +20 -0
  41. package/tsconfig.json +26 -0
  42. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Printer = exports.logError = exports.SourceFile = exports.ClassDeclaration = exports.AccessExpression = exports.CallExpression = exports.PropertyDeclaration = exports.VariableDeclaration = exports.NamedExpression = exports.StaticModifier = exports.StringLiteral = exports.Identifier = void 0;
4
+ const ts = require("typescript");
5
+ function Identifier(context, name) {
6
+ return context.factory.createIdentifier(name);
7
+ }
8
+ exports.Identifier = Identifier;
9
+ function StringLiteral(context, name) {
10
+ return context.factory.createStringLiteral(name);
11
+ }
12
+ exports.StringLiteral = StringLiteral;
13
+ function StaticModifier(context) {
14
+ return context.factory.createModifiersFromModifierFlags(ts.ModifierFlags.Static)[0];
15
+ }
16
+ exports.StaticModifier = StaticModifier;
17
+ class NamedExpression {
18
+ constructor(name) {
19
+ this.name = name;
20
+ }
21
+ getName() {
22
+ return this.name;
23
+ }
24
+ rename(name) {
25
+ this.name = name;
26
+ return this;
27
+ }
28
+ }
29
+ exports.NamedExpression = NamedExpression;
30
+ class VariableDeclaration extends NamedExpression {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.modifiers = [];
34
+ }
35
+ setValue(value) {
36
+ this.value = value;
37
+ return this;
38
+ }
39
+ addModifier(modifier) {
40
+ if (!this.modifiers) {
41
+ this.modifiers = [];
42
+ }
43
+ this.modifiers.push(modifier);
44
+ return this;
45
+ }
46
+ make(context) {
47
+ return context.factory.createVariableStatement(this.modifiers, context.factory.createVariableDeclarationList([context.factory.createVariableDeclaration(this.name, undefined, undefined, this.value)]));
48
+ }
49
+ }
50
+ exports.VariableDeclaration = VariableDeclaration;
51
+ (function (VariableDeclaration) {
52
+ function from(variable) {
53
+ var result = new VariableDeclaration(variable.name);
54
+ result.value = variable.initializer;
55
+ result.modifiers = variable.modifiers ? Array.from(variable.modifiers) : undefined;
56
+ return result;
57
+ }
58
+ VariableDeclaration.from = from;
59
+ })(VariableDeclaration = exports.VariableDeclaration || (exports.VariableDeclaration = {}));
60
+ class PropertyDeclaration extends VariableDeclaration {
61
+ //Property declarations can support a few more name types than normal variables.
62
+ constructor(name) {
63
+ super(name);
64
+ }
65
+ make(context) {
66
+ return context.factory.createPropertyDeclaration([], this.modifiers, this.name, undefined, undefined, this.value);
67
+ }
68
+ }
69
+ exports.PropertyDeclaration = PropertyDeclaration;
70
+ (function (PropertyDeclaration) {
71
+ function from(variable) {
72
+ var result = new PropertyDeclaration(variable.name);
73
+ result.value = variable.initializer;
74
+ result.modifiers = variable.modifiers ? Array.from(variable.modifiers) : undefined;
75
+ return result;
76
+ }
77
+ PropertyDeclaration.from = from;
78
+ })(PropertyDeclaration = exports.PropertyDeclaration || (exports.PropertyDeclaration = {}));
79
+ class CallExpression extends NamedExpression {
80
+ constructor() {
81
+ super(...arguments);
82
+ this.arguments = [];
83
+ }
84
+ addArgument(...arg) {
85
+ this.arguments.push(...arg);
86
+ return this;
87
+ }
88
+ make(context) {
89
+ return context.factory.createCallExpression(this.name, undefined, this.arguments);
90
+ }
91
+ }
92
+ exports.CallExpression = CallExpression;
93
+ //this[super].function.call(this, arguments);
94
+ class AccessExpression {
95
+ constructor(context) {
96
+ this.context = context;
97
+ }
98
+ this() {
99
+ if (!this.start) {
100
+ this.start = this.context.factory.createThis();
101
+ }
102
+ else {
103
+ throw new Error("This can only be the first expression in an access chain");
104
+ }
105
+ return this;
106
+ }
107
+ access(node) {
108
+ if (!this.start) {
109
+ this.start = node;
110
+ }
111
+ else {
112
+ if (!this.chain) {
113
+ if (this.start.kind === ts.SyntaxKind.ThisKeyword) {
114
+ this.chain = this.context.factory.createElementAccessExpression(this.start, node);
115
+ }
116
+ else {
117
+ this.chain = this.context.factory.createPropertyAccessExpression(this.start, node);
118
+ }
119
+ }
120
+ else {
121
+ this.chain = this.context.factory.createPropertyAccessExpression(this.chain, node);
122
+ }
123
+ }
124
+ return this;
125
+ }
126
+ make() {
127
+ return this.chain;
128
+ }
129
+ }
130
+ exports.AccessExpression = AccessExpression;
131
+ class ClassDeclaration extends NamedExpression {
132
+ constructor() {
133
+ super(...arguments);
134
+ this.decorators = [];
135
+ this.members = [];
136
+ }
137
+ static from(oldClass) {
138
+ var Class = new ClassDeclaration(oldClass.name);
139
+ Class.original = oldClass;
140
+ if (oldClass.heritageClauses) {
141
+ for (var clause of oldClass.heritageClauses) {
142
+ if (clause.token == ts.SyntaxKind.ExtendsKeyword) {
143
+ Class.extends = clause.types[0].expression;
144
+ }
145
+ }
146
+ }
147
+ Class.members = Array.from(oldClass.members);
148
+ if (oldClass.decorators) {
149
+ Class.decorators = Array.from(oldClass.decorators);
150
+ }
151
+ return Class;
152
+ }
153
+ addMemberAtStart(member) {
154
+ this.members.unshift(member);
155
+ return this;
156
+ }
157
+ addMember(member) {
158
+ this.members.push(member);
159
+ return this;
160
+ }
161
+ hasDecorator(identifier) {
162
+ var name = (typeof identifier === "string") ? identifier : identifier.text;
163
+ for (var i = 0; i < this.decorators.length; i++) {
164
+ var decorator = this.decorators[i];
165
+ if (ts.isIdentifier(decorator.expression) && decorator.expression.text == name) {
166
+ return true;
167
+ }
168
+ else if (ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() == name) {
169
+ return true;
170
+ }
171
+ }
172
+ return false;
173
+ }
174
+ removeDecorator(identifier) {
175
+ var name = (typeof identifier === "string") ? identifier : identifier.text;
176
+ for (var i = 0; i < this.decorators.length; i++) {
177
+ var decorator = this.decorators[i];
178
+ if (ts.isIdentifier(decorator.expression) && decorator.expression.text == name) {
179
+ this.decorators.splice(i, 1);
180
+ return this;
181
+ }
182
+ else if (ts.isCallExpression(decorator.expression) && decorator.expression.expression.getText() == name) {
183
+ this.decorators.splice(i, 1);
184
+ return this;
185
+ }
186
+ }
187
+ return this;
188
+ }
189
+ hasExtends() {
190
+ return !!this.extends;
191
+ }
192
+ getExtends() {
193
+ return this.extends;
194
+ }
195
+ setExtends(Extends) {
196
+ this.extends = Extends;
197
+ return this;
198
+ }
199
+ static eachContextualNode(Class, foo, context) {
200
+ var statement = (node) => {
201
+ if (ts.isBlock(node)) {
202
+ return blocks(node);
203
+ }
204
+ else if (ts.isArrowFunction(node)) {
205
+ return members(node);
206
+ }
207
+ else {
208
+ var result = foo(node);
209
+ if (!result) {
210
+ return result;
211
+ }
212
+ if (Array.isArray(result)) {
213
+ //TODO: Should probably do something smart here?
214
+ return result;
215
+ }
216
+ return ts.visitEachChild(result, statement, context);
217
+ }
218
+ };
219
+ var blocks = (node) => {
220
+ if (ts.isBlock(node)) {
221
+ return ts.visitEachChild(node, statement, context);
222
+ }
223
+ return node;
224
+ };
225
+ var members = (node) => {
226
+ if (ts.isMethodDeclaration(node)) {
227
+ return ts.visitEachChild(node, blocks, context);
228
+ }
229
+ else {
230
+ return node;
231
+ }
232
+ };
233
+ return ts.visitEachChild(Class, members, context);
234
+ }
235
+ update(context) {
236
+ if (!this.original) {
237
+ throw new Error("Cannot update class that doesn't exist!");
238
+ }
239
+ var replaceNodeArrays = (nodes, visitor, test, start, count) => {
240
+ if (nodes == this.original.decorators) {
241
+ return context.factory.createNodeArray(this.decorators);
242
+ }
243
+ if (nodes == this.original.members) {
244
+ return context.factory.createNodeArray(this.members);
245
+ }
246
+ if (nodes) {
247
+ var changedArray = false;
248
+ var newArray = [];
249
+ for (var node of nodes) {
250
+ var newNode = ts.visitNode(node, visitor, test);
251
+ newArray.push(newNode);
252
+ if (node != newNode) {
253
+ changedArray = true;
254
+ }
255
+ }
256
+ if (changedArray) {
257
+ return context.factory.createNodeArray(newArray);
258
+ }
259
+ }
260
+ return nodes;
261
+ };
262
+ var replaceExports = (node) => {
263
+ if (node.kind == ts.SyntaxKind.HeritageClause && node.token == ts.SyntaxKind.ExtendsKeyword) {
264
+ //I hope this works...
265
+ var result = context.factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [ts.createExpressionWithTypeArguments(undefined, this.extends)]);
266
+ return result;
267
+ }
268
+ return node;
269
+ };
270
+ //first parameter is the class, second is the thing to edit individual nodes, third is the context
271
+ // last parameter is the thing to edit entire node arrays.
272
+ return ts.visitEachChild(this.original, replaceExports, context, replaceNodeArrays);
273
+ }
274
+ }
275
+ exports.ClassDeclaration = ClassDeclaration;
276
+ class SourceFile {
277
+ constructor() {
278
+ this.statements = [];
279
+ }
280
+ static from(oldfile) {
281
+ var file = new SourceFile;
282
+ file.statements = Array.from(oldfile.statements);
283
+ file.original = oldfile;
284
+ return file;
285
+ }
286
+ replaceNode(oldNode, newNode) {
287
+ var index = this.statements.indexOf(oldNode);
288
+ if (index < 0) {
289
+ throw new Error("Tried to replace a node that doesn't exist in file");
290
+ }
291
+ this.statements[index] = newNode;
292
+ return this;
293
+ }
294
+ insertUnderImports(node) {
295
+ for (var i = 0; i < this.statements.length; i++) {
296
+ if (this.statements[i].kind !== ts.SyntaxKind.ImportDeclaration) {
297
+ this.statements.splice(i, 0, node);
298
+ break;
299
+ }
300
+ }
301
+ return this;
302
+ }
303
+ update(context) {
304
+ if (!this.original) {
305
+ throw new Error("Cannot update file that doesn't exist!");
306
+ }
307
+ var newSource = ts.getMutableClone(this.original);
308
+ //Cast to any because mutable clones use the same immutable typing as their original node.
309
+ newSource.statements = context.factory.createNodeArray(this.statements);
310
+ return newSource;
311
+ }
312
+ }
313
+ exports.SourceFile = SourceFile;
314
+ function logError(node, error) {
315
+ if (!node || !node.getSourceFile()) {
316
+ console.error("Why are we here?");
317
+ return;
318
+ }
319
+ var source = ts.isSourceFile(node) ? node : node.getSourceFile();
320
+ var pos = source.getLineAndCharacterOfPosition(node.pos);
321
+ console.error(`${source.fileName}(${pos.line},${pos.character}):`, error);
322
+ // This can cause the compiler to stop, but we're not using it because the above will allow
323
+ // us to go to the right location in the file. And we probably want to return what we can if
324
+ // there's an error since that's how the rest of typescript works.
325
+ //ts.createThrow(ts.createStringLiteral("Compiler Error."));
326
+ return;
327
+ }
328
+ exports.logError = logError;
329
+ var Printer;
330
+ (function (Printer) {
331
+ var printer = ts.createPrinter();
332
+ function printNode(node, sourceFile) {
333
+ return printer.printNode(ts.EmitHint.Unspecified, node, sourceFile);
334
+ }
335
+ Printer.printNode = printNode;
336
+ function printNodeFirstLine(node, sourceFile) {
337
+ var code = printNode(node, node.getSourceFile());
338
+ //space matches tab.
339
+ code = code.replace(/^ *{? *\r\n?/, "");
340
+ return code.replace(/\r\n.*/gi, "");
341
+ }
342
+ Printer.printNodeFirstLine = printNodeFirstLine;
343
+ })(Printer = exports.Printer || (exports.Printer = {}));
344
+ //# sourceMappingURL=ASTHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ASTHelper.js","sourceRoot":"","sources":["ASTHelper.ts"],"names":[],"mappings":"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"}