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