@travetto/compiler
Advanced tools
Comparing version 0.3.15 to 0.3.16
@@ -13,3 +13,3 @@ { | ||
"dependencies": { | ||
"@travetto/base": "^0.3.17", | ||
"@travetto/base": "^0.3.18", | ||
"@types/source-map-support": "^0.4.1", | ||
@@ -37,4 +37,4 @@ "source-map-support": "^0.5.6", | ||
}, | ||
"version": "0.3.15", | ||
"gitHead": "4cb5df8e6251cd6f887cc4d964565f5c0451e4f0" | ||
"version": "0.3.16", | ||
"gitHead": "e38c3aadc9bb556c795aabbfc1f0021079f42631" | ||
} |
travetto: Compiler | ||
=== | ||
The framework, while using [`typescript`](http://typescriptlang.org), has need of some extended functionality. The additional functionality is | ||
This module expands upon [`typescript`](http://typescriptlang.org), with supplemental functionality: | ||
* Read `tsconfig.json` from the project directory to provide | ||
* Supports on-the-fly compilation, nothing needs to be compiled ahead of time | ||
@@ -9,36 +10,12 @@ * Enhanced AST transformations, and transformer registration | ||
* Intelligent caching of source files to minimize recompilation | ||
* Support for watching sources files: | ||
* Detecting changes to files | ||
* Detecting changes to specific classes | ||
* Detecting changes to specific methods within classes | ||
* Support for detecting changes in sources files at runtime | ||
* Allows for hot-reloading of classes during development | ||
* Utilizes `es2015` ```Proxy```s to allow for swapping out implementation at runtime | ||
Additionally, there is support for common AST transformation patterns to facilitate all the transformers used throughout the framework. Functionality includes: | ||
* ```getDecoratorIdent(d: ts.Decorator): ts.Identifier``` | ||
Gets the name of the decorator function | ||
* ```findAnyDecorator(node: ts.Node, patterns: { [key: string]: Set<string> }, state: State): ts.Decorator | undefined ``` | ||
Attempts to find any matching decorators as defined in patterns | ||
* ```addImport(file: ts.SourceFile, imports: Import[])``` | ||
Will add an import to the existing source file | ||
* ```fromLiteral(val: any)``` | ||
Converts a literal value to the corresponding AST nodes | ||
* ```extendObjectLiteral(addTo: object, lit?: ts.ObjectLiteralExpression)``` | ||
Extends an AST Node via a literal value, generally used to emulate ```Object.assign``` in the AST | ||
* ```getPrimaryArgument<T = ts.Node>(node: ts.CallExpression | ts.Decorator | undefined): T | undefined``` | ||
Retrieves the first argument of CallExpression or Decorator | ||
* ```getObjectValue(node: ts.ObjectLiteralExpression | undefined, key: string)``` | ||
Extracts the literal value from an AST node if possible | ||
* ```importingVisitor``` | ||
Provides a transformer visitor that collects imports, and adds them to the source file as needed | ||
* ```importIfExternal<T extends State>(typeNode: ts.TypeNode, state: State)``` | ||
Will import a reference if the type is not defined within the file | ||
* ```buildImportAliasMap(pathToType)``` | ||
Will generate an import lookup to be used for simple type resolution | ||
Additionally, there is support for common AST transformation patterns to facilitate all the transformers used throughout the framework. | ||
Transformations are defined by `support/transformation.<name>.ts` as the filename. The schema for a transformer is: | ||
Transformations are defined by `support/transformation.<name>.ts` as the filename. The schema for a transformer is | ||
```typescript | ||
export class CustomerTransformer { | ||
priority: 1, // Lower is higher priority | ||
after: ['base'], | ||
phase: 'before'|'after', // The phase as defined by Typescript's AST processing | ||
@@ -45,0 +22,0 @@ transformer: (context: ts.TransformationContext) => { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
36943
28
Updated@travetto/base@^0.3.18