95 Commits

Author SHA1 Message Date
Charles Lyding
3fc520278c refactor(@angular-devkit/schematics): update rxjs usage in rules
rxjs has improved over time and this updates the rules to take advantage of improvements where applicable.
2019-05-09 10:11:32 -07:00
clydin
4177b563c5 refactor(@angular-devkit/schematics): minor rule cleanup (#14313) 2019-05-07 12:35:57 -06:00
Charles Lyding
13abfd01ec fix(@angular-devkit/schematics): fully support async rules 2019-04-15 11:02:46 -07:00
Minko Gechev
a355e7d693 feat(@schematics/angular): drop es6 from modern polyfills
1. Remove imports of es6 polyfills introduced by the CLI.
2. Refactor the migrations for version 8 by moving the codelyzer and
polyfill transforms into different files.

The PR drops all `core-js/es6` polyfills that we've introduced with the
CLI, except the commented ones. We do not remove commented imports,
since they are not part of the internal es6 polyfills.

The migration automatically drops the
associated comments with the removed imports since they are part of the node - under its
`jsDoc` property.
2019-03-29 18:06:01 -07:00
Hans Larsen
15032aa2e8 feat(@angular-devkit/schematics): add support for analytics
Schematics context now have an (optional) analytics field that, if set,
should be used to report usage. This can be set even in some cases where
analytics is disabled (to a noop analytics).
2019-03-20 15:08:07 -07:00
clydin
b1477425d9 feat(@angular-devkit/schematics): support unicode character HTML element names (#13837)
The HTML specification allows for a wide variety of characters to be present within a custom element name.  The previous behavior limited the names to mostly alphanumeric characters.  This change opens up the names to include the characters specified within the specification for custom element names.
2019-03-07 16:01:41 -08:00
clydin
324d9f2d4f feat(@angular-devkit/schematics): support basic promise/async based rules (#13660)
Currently, all third-party schematic developers are forced to use and directly depend on `rxjs` if any logic is asynchronous.   Doing so can can also add overhead and unneeded complexity for organizations that have chosen to standardize on async/await usage. This change allows such parties to rely on native promise support if desired.
2019-03-07 15:51:03 -08:00
Alan Agius
ae13974f1d build: update to rxjs 6.4 2019-02-26 08:33:48 -08:00
Alan Agius
1fd4ed6c5d fix(@angular-devkit/schematics): use join instead of normal string concatenation
This leads to cleaner paths while debugging

Fixes #13654
2019-02-13 15:26:51 -08:00
Charles Lyding
d18f89d483 refactor(@angular-devkit/schematics): remove unused VirtualTree classes 2019-01-25 21:42:21 -08:00
Charles Lyding
757bca4edc fix(@angular-devkit/schematics): fully scope merge actions in ScopedTree 2019-01-18 12:14:29 -08:00
Charles Lyding
0563e96cd2 feat(@angular-devkit/schematics): add applyToSubTree rule
This rule allows a group of rules to be applied to a scoped subdirectory of the current tree.
2019-01-18 12:14:29 -08:00
Charles Lyding
a0ac4b0e3d feat(@angular-devkit/schematics): support executing a schematic rule on a subtree 2019-01-14 10:59:37 -08:00
Alan Agius
717b02f533 ci: add ts api guardian (#12010)
* refactor: fix `import` and `export` paths to work with classic resolution

`ts-api-guardian` only support classic module resolution which means that we need to specify `index` so that the resolution works.

* build: add `npm_package` to packages

* build: add ts-api-guardian to repo

* test: add api golden files

* refactor: use proper namespace instead of alias export

* refactor: use proper namspace einstead of alias export

* build: add `_golden_api` files

At the moment ts api guardian doesn't support aliased symbols as namespaces, this is a workaround to still have namespaced symbols in the final golden file.

* build: update angular archive for workspace

* test: fix reference to `TestHost` to use namespace

* refactor: create `fs` namespace instead of aliased export

* test: update api golden file for `@angular-devkit/core/node`
2018-11-30 11:53:54 -08:00
Jason Jean
13c057a854 refactor(@angular-devkit/schematics): improve performance of move() (#12857) 2018-11-07 14:25:27 -08:00
Charles Lyding
013c663986 refactor(@angular-devkit/schematics): adjust rxjs type usage
Required for upcoming upgraded to rxjs 6.3
2018-09-26 12:57:56 -04:00
Alan Agius
191edda747 test: add unit test to cover subdirs
Closes #12143
2018-09-25 17:01:03 -04:00
Hans
f74c1f479a feat(@angular-devkit/schematics): allow workflow impl to define their own sinks (#12330)
Behaviour for NodeWorkflow should be the same.
2018-09-20 15:19:42 -07:00
Alan Agius
8fac6a7ceb fix(@angular-devkit/schematics-cli): fix list-schematics is not printing anything
Usage:
```
$  schematics @schematics/angular: --list-schematics
$  schematics --list-schematics
```

When no colon is specified, it means that that you are passing a schematic name to be looked up in the default collection.

Closes #12220
2018-09-18 11:33:11 -07:00
Sebastian Häni
8caeb47824 fix(@angular-devkit/schematics): fix generate mangling files containing wide characters
Executing a command like `ng generate component my-component` can sometimes lead to
mangled Angular module files when inserting the component into `declaration` and
adding the import. This happens if the file contains characters that are wider than
one byte e.g. a copyright sign or an umlaut. Today it is expected to be able to use
two byte long characters in code.

The `UpdateBuffer` class operates using Buffer objects which use byte arrays internally.
Using text node positions provided by the TypeScript library, these will not match up.
This change looks up the textual position inside the Buffer and uses the correct index.

Closes #7851, #7950
2018-09-06 10:53:27 -07:00
Hans
9517677158 feat(@angular-devkit/core): remove addUndefinedDefaults as default post transform
And various bug fixes.
2018-09-06 07:37:48 -07:00
Charles Lyding
cdbc1988f2 feat(@angular-devkit/schematics): allow schematic rules to control interactivity 2018-08-29 09:25:56 -07:00
Charles Lyding
d202480a17 build: update/cleanup tslint rules & fix errors 2018-08-23 11:35:34 -07:00
Filipe Silva
9720077a4b build: make resolution logic compatible with Bazel 2018-08-22 16:36:10 -07:00
Filipe Silva
e17cc66f93 test(@angular-devkit/schematics): add bazel tests 2018-08-22 16:36:10 -07:00
Charles Lyding
07c829d34b fix(@angular-devkit/schematics): improve tree type checking
Fixes #11683
2018-08-17 15:26:36 -07:00
Hans Larsen
f3e389bd8c feat(@angular-devkit/schematics): add .template as an extension
New rules to deal with templates using a .template extension. Apply the template only
to those files, then remove the .template suffix.

Also added a new rename() rule that takes a matcher and a renamer. Nothing big there.

Also added a new composeFileOperator() that compose operators one after the other.
2018-08-13 16:59:32 -07:00
Hans Larsen
2ba1f16295 refactor(@angular-devkit/schematics): add a BaseWorkflow which implements logic
And receives in its constructor the enginehost and registry. This simplifies the creation
of the NodeWorkflow, or later on the Google3Workflow etc, since all the duplicate logic
is now in a single base class.

This is yak shaving for internal stuff.
2018-08-01 11:41:49 -04:00
Hans Larsen
07c73a1e21 fix(@angular-devkit/schematics): implement optimize() for HostTree
Its only used by old Schematics library, which can end up in there. Since optimization
is only a thing for VirtualTree, HostTree returns itself.
2018-07-27 13:20:15 -07:00
Hans
9177bf9128 feat(@angular-devkit/schematics): allow path templates to override some options
Like the interpolation and the pipe character. The default behaviour is kept.

We will need to use those to work around some limiations of the google3 file system which
does not accept "@".
2018-07-25 22:54:51 +01:00
Hans
8b7516d9b3 refactor: types for content should be a pure template
Limitting it to a subset of JSON values is limiting. Templates can call functions,
list arrays, access classes, etc.
2018-07-25 22:54:51 +01:00
Charles Lyding
a29a53e2ff fix(@angular-devkit/schematics): move rule with identity is a noop 2018-07-25 19:22:20 +01:00
Hans Larsen
483cbe2665 refactor: add tslint-sonarts and a lot of tslint rules
This should clean up the code a bit.

Note: at first I added the no-useless-cast rule, but after getting frustrated
with it (as it has many false positive), I decided to remove the rule but some
useless casts were removed so I let those in the PR.
2018-07-10 15:07:36 -07:00
Alex Eagle
63389e5028 build: fixes needed in google3 2018-07-09 16:14:18 -07:00
Alex Eagle
773984dac3 build: fixes needed in google3
We have an older version of Jasmine that doesn't support generics in this spot
2018-07-06 16:33:50 -04:00
Charles Lyding
9582b84603 fix(@angular-devkit/schematics): implement HostTree specific filtering 2018-07-03 12:52:22 -04:00
Charles Lyding
61d2181f85 fix(@angular-devkit/schematics): support VirtualTree/HostTree interop 2018-07-03 12:52:22 -04:00
Charles Lyding
48780c5e45 refactor(@angular-devkit/schematics): simplify move rule 2018-07-03 12:52:22 -04:00
Charles Lyding
5a58d00a4c fix(@angular-devkit/schematics): support filtering a HostTree 2018-07-03 12:52:22 -04:00
Charles Lyding
af8e7ea333 test(@angular-devkit/schematics): use HostTree instead of VirtualTree 2018-07-03 12:52:22 -04:00
Charles Lyding
28bbd1b2bc test(@angular-devkit/schematics): test for nested chained function rules 2018-07-02 08:21:16 -04:00
Charles Lyding
a7edd57399 fix(@angular-devkit/schematics): avoid piping input multiple times when calling rules
Fixes: #11267
2018-07-02 08:21:16 -04:00
Charles Lyding
c875424222 refactor(@angular-devkit/schematics): cleanup call implementations 2018-07-02 08:21:16 -04:00
Hans
4ba67ee663 refactor: remove usage of Buffer constructor
Its being deprecated in Node 10.4. The replacements are available in Node 8 so
its all good.
2018-06-10 12:47:20 +01:00
Hans Larsen
44086c60ff build: move devkit repo back to angular-cli 2018-06-05 18:50:06 -07:00