@angular-devkit/core 0.0.14 → 0.0.15
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.
- package/{src/logger → node}/cli-logger.d.ts +2 -2
- package/node/cli-logger.js +43 -0
- package/node/fs.d.ts +1 -0
- package/node/fs.js +25 -0
- package/node/index.d.ts +11 -0
- package/node/index.js +17 -0
- package/node/resolve.d.ts +58 -0
- package/node/resolve.js +214 -0
- package/package.json +4 -2
- package/src/index.d.ts +2 -1
- package/src/index.js +3 -2
- package/src/json/index.d.ts +2 -0
- package/src/json/index.js +3 -1
- package/src/json/schema/index.d.ts +14 -0
- package/src/json/schema/index.js +19 -0
- package/src/json/schema/registry.d.ts +19 -0
- package/src/json/schema/registry.js +34 -0
- package/src/json/schema/schema.d.ts +83 -0
- package/src/json/schema/schema.js +3 -0
- package/src/json/schema/serializers/interface.d.ts +11 -0
- package/src/json/schema/serializers/interface.js +6 -0
- package/src/json/schema/serializers/javascript.d.ts +46 -0
- package/src/json/schema/serializers/javascript.js +94 -0
- package/src/json/schema/serializers/javascript_benchmark.d.ts +0 -0
- package/src/json/schema/serializers/javascript_benchmark.js +45 -0
- package/src/json/schema/serializers/templates/javascript/index.d.ts +11 -0
- package/src/json/schema/serializers/templates/javascript/index.js +21 -0
- package/src/json/schema/serializers/templates/javascript/prop-any.js +40 -0
- package/src/json/schema/serializers/templates/javascript/prop-array.js +166 -0
- package/src/json/schema/serializers/templates/javascript/prop-boolean.js +54 -0
- package/src/json/schema/serializers/templates/javascript/prop-number.js +130 -0
- package/src/json/schema/serializers/templates/javascript/prop-object.js +231 -0
- package/src/json/schema/serializers/templates/javascript/prop-string.js +98 -0
- package/src/json/schema/serializers/templates/javascript/root.js +41 -0
- package/src/json/schema/serializers/templates/javascript/subschema.js +65 -0
- package/src/logger/index.d.ts +0 -1
- package/src/logger/index.js +1 -2
- package/src/logger/logger.d.ts +12 -1
- package/src/logger/logger.js +17 -1
- package/src/logger/null-logger.d.ts +2 -1
- package/src/logger/null-logger.js +12 -1
- package/src/utils/index.d.ts +3 -0
- package/src/utils/index.js +4 -1
- package/src/utils/literals.d.ts +12 -0
- package/src/utils/literals.js +42 -0
- package/src/utils/template.d.ts +82 -0
- package/src/utils/template.js +258 -0
- package/src/logger/cli-logger.js +0 -44
package/src/logger/logger.js
CHANGED
|
@@ -51,6 +51,22 @@ class Logger extends Observable_1.Observable {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
asApi() {
|
|
55
|
+
return {
|
|
56
|
+
createChild: (name) => this.createChild(name),
|
|
57
|
+
log: (level, message, metadata) => {
|
|
58
|
+
return this.log(level, message, metadata);
|
|
59
|
+
},
|
|
60
|
+
debug: (message, metadata) => this.debug(message, metadata),
|
|
61
|
+
info: (message, metadata) => this.info(message, metadata),
|
|
62
|
+
warn: (message, metadata) => this.warn(message, metadata),
|
|
63
|
+
error: (message, metadata) => this.error(message, metadata),
|
|
64
|
+
fatal: (message, metadata) => this.fatal(message, metadata),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
createChild(name) {
|
|
68
|
+
return new Logger(name, this);
|
|
69
|
+
}
|
|
54
70
|
complete() {
|
|
55
71
|
this._subject.complete();
|
|
56
72
|
}
|
|
@@ -89,4 +105,4 @@ class Logger extends Observable_1.Observable {
|
|
|
89
105
|
}
|
|
90
106
|
}
|
|
91
107
|
exports.Logger = Logger;
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2NvcmUvc3JjL2xvZ2dlci9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCxnREFBNkM7QUFHN0MsMENBQXVDO0FBa0J2QyxZQUFvQixTQUFRLHVCQUFvQjtJQStCOUMsWUFBNEIsSUFBWSxFQUFrQixTQUF3QixJQUFJO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBRGtCLFNBQUksR0FBSixJQUFJLENBQVE7UUFBa0IsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUE5Qm5FLGFBQVEsR0FBc0IsSUFBSSxpQkFBTyxFQUFZLENBQUM7UUFpQ3ZFLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDZixPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEIsa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUUsQ0FBQztJQUNILENBQUM7SUF2Q0QsSUFBYyxXQUFXLEtBQUssTUFBTSxDQUFDLElBQUks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QUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFNRCxTQUFTLENBQUMsZUFBeUUsRUFDekUsTUFBK0IsRUFDL0IsU0FBc0I7UUFDOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBK0IsRUFBRSxXQUE0QjtRQUNuRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQS9GRCx3QkErRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFBhcnRpYWxPYnNlcnZlciB9IGZyb20gJ3J4anMvT2JzZXJ2ZXInO1xuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICdyeGpzL09wZXJhdG9yJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL1N1YmplY3QnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgSnNvbk9iamVjdCB9IGZyb20gJy4uL2pzb24vaW50ZXJmYWNlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlck1ldGFkYXRhIGV4dGVuZHMgSnNvbk9iamVjdCB7XG4gIG5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIExvZ0VudHJ5IGV4dGVuZHMgTG9nZ2VyTWV0YWRhdGEge1xuICBsZXZlbDogTG9nTGV2ZWw7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIgZXh0ZW5kcyBPYnNlcnZhYmxlPExvZ0VudHJ5PiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxMb2dFbnRyeT4gPSBuZXcgU3ViamVjdDxMb2dFbnRyeT4oKTtcbiAgcHJvdGVjdGVkIF9tZXRhZGF0YTogTG9nZ2VyTWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSBfb2JzOiBPYnNlcnZhYmxlPExvZ0VudHJ5PjtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gIHByb3RlY3RlZCBnZXQgX29ic2VydmFibGUoKSB7IHJldHVybiB0aGlzLl9vYnM7IH1cbiAgcHJvdGVjdGVkIHNldCBfb2JzZXJ2YWJsZSh2OiBPYnNlcnZhYmxlPExvZ0VudHJ5Pikge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl9vYnMgPSB2O1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5zdWJzY3JpYmUoKHZhbHVlOiBMb2dFbnRyeSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudC5fc3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudC5fc3ViamVjdC5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0sICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgcGFyZW50OiBMb2dnZXIgfCBudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCBwYXRoOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBwID0gcGFyZW50O1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBwYXRoLnB1c2gocC5uYW1lKTtcbiAgICAgIHAgPSBwLnBhcmVudDtcbiAgICB9XG4gICAgdGhpcy5fbWV0YWRhdGEgPSB7IG5hbWUsIHBhdGggfTtcbiAgICB0aGlzLl9vYnNlcnZhYmxlID0gdGhpcy5fc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIC8vIFdoZW4gdGhlIHBhcmVudCBjb21wbGV0ZXMsIGNvbXBsZXRlIHVzIGFzIHdlbGwuXG4gICAgICB0aGlzLnBhcmVudC5fc3ViamVjdC5zdWJzY3JpYmUodW5kZWZpbmVkLCB1bmRlZmluZWQsICgpID0+IHRoaXMuY29tcGxldGUoKSk7XG4gICAgfVxuICB9XG5cbiAgY29tcGxldGUoKSB7XG4gICAgdGhpcy5fc3ViamVjdC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgbG9nKGxldmVsOiBMb2dMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YTogSnNvbk9iamVjdCA9IHt9KTogdm9pZCB7XG4gICAgY29uc3QgZW50cnk6IExvZ0VudHJ5ID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fbWV0YWRhdGEsIG1ldGFkYXRhLCB7XG4gICAgICBsZXZlbCwgbWVzc2FnZSwgdGltZXN0YW1wOiArRGF0ZS5ub3coKSxcbiAgICB9KTtcbiAgICB0aGlzLl9zdWJqZWN0Lm5leHQoZW50cnkpO1xuICB9XG5cbiAgZGVidWcobWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YTogSnNvbk9iamVjdCA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMubG9nKCdkZWJ1ZycsIG1lc3NhZ2UsIG1ldGFkYXRhKTtcbiAgfVxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE6IEpzb25PYmplY3QgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmxvZygnaW5mbycsIG1lc3NhZ2UsIG1ldGFkYXRhKTtcbiAgfVxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE6IEpzb25PYmplY3QgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmxvZygnd2FybicsIG1lc3NhZ2UsIG1ldGFkYXRhKTtcbiAgfVxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG1ldGFkYXRhOiBKc29uT2JqZWN0ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5sb2coJ2Vycm9yJywgbWVzc2FnZSwgbWV0YWRhdGEpO1xuICB9XG4gIGZhdGFsKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE6IEpzb25PYmplY3QgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmxvZygnZmF0YWwnLCBtZXNzYWdlLCBtZXRhZGF0YSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYDxMb2dnZXIoJHt0aGlzLm5hbWV9KT5gO1xuICB9XG5cbiAgbGlmdChvcGVyYXRvcjogT3BlcmF0b3I8TG9nRW50cnksIExvZ0VudHJ5Pik6IE9ic2VydmFibGU8TG9nRW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy5fb2JzZXJ2YWJsZS5saWZ0KG9wZXJhdG9yKTtcbiAgfVxuXG4gIHN1YnNjcmliZSgpOiBTdWJzY3JpcHRpb247XG4gIHN1YnNjcmliZShvYnNlcnZlcjogUGFydGlhbE9ic2VydmVyPExvZ0VudHJ5Pik6IFN1YnNjcmlwdGlvbjtcbiAgc3Vic2NyaWJlKG5leHQ/OiAodmFsdWU6IExvZ0VudHJ5KSA9PiB2b2lkLCBlcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWQsXG4gICAgICAgICAgICBjb21wbGV0ZT86ICgpID0+IHZvaWQpOiBTdWJzY3JpcHRpb247XG4gIHN1YnNjcmliZShfb2JzZXJ2ZXJPck5leHQ/OiBQYXJ0aWFsT2JzZXJ2ZXI8TG9nRW50cnk+IHwgKCh2YWx1ZTogTG9nRW50cnkpID0+IHZvaWQpLFxuICAgICAgICAgICAgX2Vycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZCxcbiAgICAgICAgICAgIF9jb21wbGV0ZT86ICgpID0+IHZvaWQpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl9vYnNlcnZhYmxlLnN1YnNjcmliZS5hcHBseSh0aGlzLl9vYnNlcnZhYmxlLCBhcmd1bWVudHMpO1xuICB9XG4gIGZvckVhY2gobmV4dDogKHZhbHVlOiBMb2dFbnRyeSkgPT4gdm9pZCwgUHJvbWlzZUN0b3I/OiB0eXBlb2YgUHJvbWlzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9vYnNlcnZhYmxlLmZvckVhY2gobmV4dCwgUHJvbWlzZUN0b3IpO1xuICB9XG59XG4iXX0=
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii9Vc2Vycy9oYW5zbC9Tb3VyY2VzL2RldmtpdC8iLCJzb3VyY2VzIjpbInBhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2NvcmUvc3JjL2xvZ2dlci9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCxnREFBNkM7QUFHN0MsMENBQXVDO0FBMkJ2QyxZQUFvQixTQUFRLHVCQUFvQjtJQStCOUMsWUFBNEIsSUFBWSxFQUFrQixTQUF3QixJQUFJO1FBQ3BGLEtBQUssRUFBRSxDQUFDO1FBRGtCLFNBQUksR0FBSixJQUFJLENBQVE7UUFBa0IsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUE5Qm5FLGFBQVEsR0FBc0IsSUFBSSxpQkFBTyxFQUFZLENBQUM7UUFpQ3ZFLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDZixPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEIsa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUUsQ0FBQztJQUNILENBQUM7SUF2Q0QsSUFBYyxXQUFXLEtBQUssTUFBTSxDQUFDLElBQUks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QVMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxPQUFPLENBQUMsSUFBK0IsRUFBRSxXQUE0QjtRQUNuRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQWpIRCx3QkFpSEMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcy9PYnNlcnZhYmxlJztcbmltcG9ydCB7IFBhcnRpYWxPYnNlcnZlciB9IGZyb20gJ3J4anMvT2JzZXJ2ZXInO1xuaW1wb3J0IHsgT3BlcmF0b3IgfSBmcm9tICdyeGpzL09wZXJhdG9yJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzL1N1YmplY3QnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgSnNvbk9iamVjdCB9IGZyb20gJy4uL2pzb24vaW50ZXJmYWNlJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlck1ldGFkYXRhIGV4dGVuZHMgSnNvbk9iamVjdCB7XG4gIG5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIExvZ0VudHJ5IGV4dGVuZHMgTG9nZ2VyTWV0YWRhdGEge1xuICBsZXZlbDogTG9nTGV2ZWw7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdGltZXN0YW1wOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlckFwaSB7XG4gIGNyZWF0ZUNoaWxkKG5hbWU6IHN0cmluZyk6IExvZ2dlcjtcbiAgbG9nKGxldmVsOiBMb2dMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YT86IEpzb25PYmplY3QpOiB2b2lkO1xuICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIG1ldGFkYXRhPzogSnNvbk9iamVjdCk6IHZvaWQ7XG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YT86IEpzb25PYmplY3QpOiB2b2lkO1xuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE/OiBKc29uT2JqZWN0KTogdm9pZDtcbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YT86IEpzb25PYmplY3QpOiB2b2lkO1xuICBmYXRhbChtZXNzYWdlOiBzdHJpbmcsIG1ldGFkYXRhPzogSnNvbk9iamVjdCk6IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIExvZ0xldmVsID0gJ2RlYnVnJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcicgfCAnZmF0YWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIgZXh0ZW5kcyBPYnNlcnZhYmxlPExvZ0VudHJ5PiBpbXBsZW1lbnRzIExvZ2dlckFwaSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxMb2dFbnRyeT4gPSBuZXcgU3ViamVjdDxMb2dFbnRyeT4oKTtcbiAgcHJvdGVjdGVkIF9tZXRhZGF0YTogTG9nZ2VyTWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSBfb2JzOiBPYnNlcnZhYmxlPExvZ0VudHJ5PjtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gIHByb3RlY3RlZCBnZXQgX29ic2VydmFibGUoKSB7IHJldHVybiB0aGlzLl9vYnM7IH1cbiAgcHJvdGVjdGVkIHNldCBfb2JzZXJ2YWJsZSh2OiBPYnNlcnZhYmxlPExvZ0VudHJ5Pikge1xuICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl9vYnMgPSB2O1xuICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5zdWJzY3JpYmUoKHZhbHVlOiBMb2dFbnRyeSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudC5fc3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgICAgICB0aGlzLnBhcmVudC5fc3ViamVjdC5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0sICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgcGFyZW50OiBMb2dnZXIgfCBudWxsID0gbnVsbCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBjb25zdCBwYXRoOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBwID0gcGFyZW50O1xuICAgIHdoaWxlIChwKSB7XG4gICAgICBwYXRoLnB1c2gocC5uYW1lKTtcbiAgICAgIHAgPSBwLnBhcmVudDtcbiAgICB9XG4gICAgdGhpcy5fbWV0YWRhdGEgPSB7IG5hbWUsIHBhdGggfTtcbiAgICB0aGlzLl9vYnNlcnZhYmxlID0gdGhpcy5fc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBpZiAodGhpcy5wYXJlbnQpIHtcbiAgICAgIC8vIFdoZW4gdGhlIHBhcmVudCBjb21wbGV0ZXMsIGNvbXBsZXRlIHVzIGFzIHdlbGwuXG4gICAgICB0aGlzLnBhcmVudC5fc3ViamVjdC5zdWJzY3JpYmUodW5kZWZpbmVkLCB1bmRlZmluZWQsICgpID0+IHRoaXMuY29tcGxldGUoKSk7XG4gICAgfVxuICB9XG5cbiAgYXNBcGkoKTogTG9nZ2VyQXBpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY3JlYXRlQ2hpbGQ6IChuYW1lOiBzdHJpbmcpID0+IHRoaXMuY3JlYXRlQ2hpbGQobmFtZSksXG4gICAgICBsb2c6IChsZXZlbDogTG9nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE/OiBKc29uT2JqZWN0KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvZyhsZXZlbCwgbWVzc2FnZSwgbWV0YWRhdGEpO1xuICAgICAgfSxcbiAgICAgIGRlYnVnOiAobWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YT86IEpzb25PYmplY3QpID0+IHRoaXMuZGVidWcobWVzc2FnZSwgbWV0YWRhdGEpLFxuICAgICAgaW5mbzogKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE/OiBKc29uT2JqZWN0KSA9PiB0aGlzLmluZm8obWVzc2FnZSwgbWV0YWRhdGEpLFxuICAgICAgd2FybjogKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE/OiBKc29uT2JqZWN0KSA9PiB0aGlzLndhcm4obWVzc2FnZSwgbWV0YWRhdGEpLFxuICAgICAgZXJyb3I6IChtZXNzYWdlOiBzdHJpbmcsIG1ldGFkYXRhPzogSnNvbk9iamVjdCkgPT4gdGhpcy5lcnJvcihtZXNzYWdlLCBtZXRhZGF0YSksXG4gICAgICBmYXRhbDogKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE/OiBKc29uT2JqZWN0KSA9PiB0aGlzLmZhdGFsKG1lc3NhZ2UsIG1ldGFkYXRhKSxcbiAgICB9O1xuICB9XG5cbiAgY3JlYXRlQ2hpbGQobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBMb2dnZXIobmFtZSwgdGhpcyk7XG4gIH1cblxuICBjb21wbGV0ZSgpIHtcbiAgICB0aGlzLl9zdWJqZWN0LmNvbXBsZXRlKCk7XG4gIH1cblxuICBsb2cobGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcsIG1ldGFkYXRhOiBKc29uT2JqZWN0ID0ge30pOiB2b2lkIHtcbiAgICBjb25zdCBlbnRyeTogTG9nRW50cnkgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9tZXRhZGF0YSwgbWV0YWRhdGEsIHtcbiAgICAgIGxldmVsLCBtZXNzYWdlLCB0aW1lc3RhbXA6ICtEYXRlLm5vdygpLFxuICAgIH0pO1xuICAgIHRoaXMuX3N1YmplY3QubmV4dChlbnRyeSk7XG4gIH1cblxuICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIG1ldGFkYXRhOiBKc29uT2JqZWN0ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5sb2coJ2RlYnVnJywgbWVzc2FnZSwgbWV0YWRhdGEpO1xuICB9XG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YTogSnNvbk9iamVjdCA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMubG9nKCdpbmZvJywgbWVzc2FnZSwgbWV0YWRhdGEpO1xuICB9XG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YTogSnNvbk9iamVjdCA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMubG9nKCd3YXJuJywgbWVzc2FnZSwgbWV0YWRhdGEpO1xuICB9XG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgbWV0YWRhdGE6IEpzb25PYmplY3QgPSB7fSkge1xuICAgIHJldHVybiB0aGlzLmxvZygnZXJyb3InLCBtZXNzYWdlLCBtZXRhZGF0YSk7XG4gIH1cbiAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YTogSnNvbk9iamVjdCA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMubG9nKCdmYXRhbCcsIG1lc3NhZ2UsIG1ldGFkYXRhKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBgPExvZ2dlcigke3RoaXMubmFtZX0pPmA7XG4gIH1cblxuICBsaWZ0KG9wZXJhdG9yOiBPcGVyYXRvcjxMb2dFbnRyeSwgTG9nRW50cnk+KTogT2JzZXJ2YWJsZTxMb2dFbnRyeT4ge1xuICAgIHJldHVybiB0aGlzLl9vYnNlcnZhYmxlLmxpZnQob3BlcmF0b3IpO1xuICB9XG5cbiAgc3Vic2NyaWJlKCk6IFN1YnNjcmlwdGlvbjtcbiAgc3Vic2NyaWJlKG9ic2VydmVyOiBQYXJ0aWFsT2JzZXJ2ZXI8TG9nRW50cnk+KTogU3Vic2NyaXB0aW9uO1xuICBzdWJzY3JpYmUobmV4dD86ICh2YWx1ZTogTG9nRW50cnkpID0+IHZvaWQsIGVycm9yPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZCxcbiAgICAgICAgICAgIGNvbXBsZXRlPzogKCkgPT4gdm9pZCk6IFN1YnNjcmlwdGlvbjtcbiAgc3Vic2NyaWJlKF9vYnNlcnZlck9yTmV4dD86IFBhcnRpYWxPYnNlcnZlcjxMb2dFbnRyeT4gfCAoKHZhbHVlOiBMb2dFbnRyeSkgPT4gdm9pZCksXG4gICAgICAgICAgICBfZXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkLFxuICAgICAgICAgICAgX2NvbXBsZXRlPzogKCkgPT4gdm9pZCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX29ic2VydmFibGUuc3Vic2NyaWJlLmFwcGx5KHRoaXMuX29ic2VydmFibGUsIGFyZ3VtZW50cyk7XG4gIH1cbiAgZm9yRWFjaChuZXh0OiAodmFsdWU6IExvZ0VudHJ5KSA9PiB2b2lkLCBQcm9taXNlQ3Rvcj86IHR5cGVvZiBQcm9taXNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX29ic2VydmFibGUuZm9yRWFjaChuZXh0LCBQcm9taXNlQ3Rvcik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -15,6 +15,17 @@ class NullLogger extends logger_1.Logger {
|
|
|
15
15
|
super('', parent);
|
|
16
16
|
this._observable = Observable_1.Observable.empty();
|
|
17
17
|
}
|
|
18
|
+
asApi() {
|
|
19
|
+
return {
|
|
20
|
+
createChild: () => new NullLogger(this),
|
|
21
|
+
log() { },
|
|
22
|
+
debug() { },
|
|
23
|
+
info() { },
|
|
24
|
+
warn() { },
|
|
25
|
+
error() { },
|
|
26
|
+
fatal() { },
|
|
27
|
+
};
|
|
28
|
+
}
|
|
18
29
|
}
|
|
19
30
|
exports.NullLogger = NullLogger;
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbC1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2hhbnNsL1NvdXJjZXMvZGV2a2l0LyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvbG9nZ2VyL251bGwtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7OztHQU1HO0FBQ0gsZ0RBQTZDO0FBQzdDLHFDQUFtQztBQUNuQyxxQ0FBNkM7QUFHN0MsZ0JBQXdCLFNBQVEsZUFBTTtJQUNwQyxZQUFZLFNBQXdCLElBQUk7UUFDdEMsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsV0FBVyxHQUFHLHVCQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUs7UUFDSCxNQUFNLENBQUM7WUFDTCxXQUFXLEVBQUUsTUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDdkMsR0FBRyxLQUFJLENBQUM7WUFDUixLQUFLLEtBQUksQ0FBQztZQUNWLElBQUksS0FBSSxDQUFDO1lBQ1QsSUFBSSxLQUFJLENBQUM7WUFDVCxLQUFLLEtBQUksQ0FBQztZQUNWLEtBQUssS0FBSSxDQUFDO1NBQ0UsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFqQkQsZ0NBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgJ3J4anMvYWRkL29ic2VydmFibGUvZW1wdHknO1xuaW1wb3J0IHsgTG9nZ2VyLCBMb2dnZXJBcGkgfSBmcm9tICcuL2xvZ2dlcic7XG5cblxuZXhwb3J0IGNsYXNzIE51bGxMb2dnZXIgZXh0ZW5kcyBMb2dnZXIge1xuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IExvZ2dlciB8IG51bGwgPSBudWxsKSB7XG4gICAgc3VwZXIoJycsIHBhcmVudCk7XG4gICAgdGhpcy5fb2JzZXJ2YWJsZSA9IE9ic2VydmFibGUuZW1wdHkoKTtcbiAgfVxuXG4gIGFzQXBpKCk6IExvZ2dlckFwaSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNyZWF0ZUNoaWxkOiAoKSA9PiBuZXcgTnVsbExvZ2dlcih0aGlzKSxcbiAgICAgIGxvZygpIHt9LFxuICAgICAgZGVidWcoKSB7fSxcbiAgICAgIGluZm8oKSB7fSxcbiAgICAgIHdhcm4oKSB7fSxcbiAgICAgIGVycm9yKCkge30sXG4gICAgICBmYXRhbCgpIHt9LFxuICAgIH0gYXMgTG9nZ2VyQXBpO1xuICB9XG59XG4iXX0=
|
package/src/utils/index.d.ts
CHANGED
|
@@ -5,5 +5,8 @@
|
|
|
5
5
|
* Use of this source code is governed by an MIT-style license that can be
|
|
6
6
|
* found in the LICENSE file at https://angular.io/license
|
|
7
7
|
*/
|
|
8
|
+
import * as tags from './literals';
|
|
8
9
|
export * from './object';
|
|
9
10
|
export * from './strings';
|
|
11
|
+
export * from './template';
|
|
12
|
+
export { tags };
|
package/src/utils/index.js
CHANGED
|
@@ -10,6 +10,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
* Use of this source code is governed by an MIT-style license that can be
|
|
11
11
|
* found in the LICENSE file at https://angular.io/license
|
|
12
12
|
*/
|
|
13
|
+
const tags = require("./literals");
|
|
14
|
+
exports.tags = tags;
|
|
13
15
|
__export(require("./object"));
|
|
14
16
|
__export(require("./strings"));
|
|
15
|
-
|
|
17
|
+
__export(require("./template"));
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2hhbnNsL1NvdXJjZXMvZGV2a2l0LyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7O0dBTUc7QUFDSCxtQ0FBbUM7QUFLMUIsb0JBQUk7QUFKYiw4QkFBeUI7QUFDekIsK0JBQTBCO0FBQzFCLGdDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCAqIGFzIHRhZ3MgZnJvbSAnLi9saXRlcmFscyc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW1wbGF0ZSc7XG5cbmV4cG9ydCB7IHRhZ3MgfTtcbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
export declare type TemplateTag = (template: TemplateStringsArray, ...substitutions: any[]) => string;
|
|
9
|
+
export declare function oneLine(strings: TemplateStringsArray, ...values: any[]): string;
|
|
10
|
+
export declare function indentBy(indentations: number): TemplateTag;
|
|
11
|
+
export declare function stripIndent(strings: TemplateStringsArray, ...values: any[]): string;
|
|
12
|
+
export declare function stripIndents(strings: TemplateStringsArray, ...values: any[]): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// tslint:disable-next-line:no-any
|
|
4
|
+
function oneLine(strings, ...values) {
|
|
5
|
+
const endResult = String.raw(strings, ...values);
|
|
6
|
+
return endResult.replace(/(?:\n(?:\s*))+/gm, ' ').trim();
|
|
7
|
+
}
|
|
8
|
+
exports.oneLine = oneLine;
|
|
9
|
+
function indentBy(indentations) {
|
|
10
|
+
let i = '';
|
|
11
|
+
while (indentations--) {
|
|
12
|
+
i += ' ';
|
|
13
|
+
}
|
|
14
|
+
return (strings, ...values) => {
|
|
15
|
+
return i + stripIndent(strings, ...values).replace(/\n/g, '\n' + i);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
exports.indentBy = indentBy;
|
|
19
|
+
// tslint:disable-next-line:no-any
|
|
20
|
+
function stripIndent(strings, ...values) {
|
|
21
|
+
const endResult = String.raw(strings, ...values);
|
|
22
|
+
// remove the shortest leading indentation from each line
|
|
23
|
+
const match = endResult.match(/^[ \t]*(?=\S)/gm);
|
|
24
|
+
// return early if there's nothing to strip
|
|
25
|
+
if (match === null) {
|
|
26
|
+
return endResult;
|
|
27
|
+
}
|
|
28
|
+
const indent = Math.min(...match.map(el => el.length));
|
|
29
|
+
const regexp = new RegExp('^[ \\t]{' + indent + '}', 'gm');
|
|
30
|
+
return (indent > 0 ? endResult.replace(regexp, '') : endResult).trim();
|
|
31
|
+
}
|
|
32
|
+
exports.stripIndent = stripIndent;
|
|
33
|
+
// tslint:disable-next-line:no-any
|
|
34
|
+
function stripIndents(strings, ...values) {
|
|
35
|
+
return String.raw(strings, ...values)
|
|
36
|
+
.split('\n')
|
|
37
|
+
.map(line => line.trim())
|
|
38
|
+
.join('\n')
|
|
39
|
+
.trim();
|
|
40
|
+
}
|
|
41
|
+
exports.stripIndents = stripIndents;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl0ZXJhbHMuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2hhbnNsL1NvdXJjZXMvZGV2a2l0LyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvdXRpbHMvbGl0ZXJhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxrQ0FBa0M7QUFDbEMsaUJBQXdCLE9BQTZCLEVBQUUsR0FBRyxNQUFhO0lBQ3JFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFFakQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0QsQ0FBQztBQUpELDBCQUlDO0FBRUQsa0JBQXlCLFlBQW9CO0lBQzNDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNYLE9BQU8sWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUN0QixDQUFDLElBQUksR0FBRyxDQUFDO0lBQ1gsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU07UUFDeEIsTUFBTSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVRELDRCQVNDO0FBR0Qsa0NBQWtDO0FBQ2xDLHFCQUE0QixPQUE2QixFQUFFLEdBQUcsTUFBYTtJQUN6RSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBRWpELHlEQUF5RDtJQUN6RCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFakQsMkNBQTJDO0lBQzNDLEVBQUUsQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ25CLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxHQUFHLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUzRCxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pFLENBQUM7QUFmRCxrQ0FlQztBQUdELGtDQUFrQztBQUNsQyxzQkFBNkIsT0FBNkIsRUFBRSxHQUFHLE1BQWE7SUFDMUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1NBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDWCxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ1YsSUFBSSxFQUFFLENBQUM7QUFDWixDQUFDO0FBTkQsb0NBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG5leHBvcnQgdHlwZSBUZW1wbGF0ZVRhZyA9ICh0ZW1wbGF0ZTogVGVtcGxhdGVTdHJpbmdzQXJyYXksIC4uLnN1YnN0aXR1dGlvbnM6IGFueVtdKSA9PiBzdHJpbmc7XG5cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuZXhwb3J0IGZ1bmN0aW9uIG9uZUxpbmUoc3RyaW5nczogVGVtcGxhdGVTdHJpbmdzQXJyYXksIC4uLnZhbHVlczogYW55W10pIHtcbiAgY29uc3QgZW5kUmVzdWx0ID0gU3RyaW5nLnJhdyhzdHJpbmdzLCAuLi52YWx1ZXMpO1xuXG4gIHJldHVybiBlbmRSZXN1bHQucmVwbGFjZSgvKD86XFxuKD86XFxzKikpKy9nbSwgJyAnKS50cmltKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnRCeShpbmRlbnRhdGlvbnM6IG51bWJlcik6IFRlbXBsYXRlVGFnIHtcbiAgbGV0IGkgPSAnJztcbiAgd2hpbGUgKGluZGVudGF0aW9ucy0tKSB7XG4gICAgaSArPSAnICc7XG4gIH1cblxuICByZXR1cm4gKHN0cmluZ3MsIC4uLnZhbHVlcykgPT4ge1xuICAgIHJldHVybiBpICsgc3RyaXBJbmRlbnQoc3RyaW5ncywgLi4udmFsdWVzKS5yZXBsYWNlKC9cXG4vZywgJ1xcbicgKyBpKTtcbiAgfTtcbn1cblxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG5leHBvcnQgZnVuY3Rpb24gc3RyaXBJbmRlbnQoc3RyaW5nczogVGVtcGxhdGVTdHJpbmdzQXJyYXksIC4uLnZhbHVlczogYW55W10pIHtcbiAgY29uc3QgZW5kUmVzdWx0ID0gU3RyaW5nLnJhdyhzdHJpbmdzLCAuLi52YWx1ZXMpO1xuXG4gIC8vIHJlbW92ZSB0aGUgc2hvcnRlc3QgbGVhZGluZyBpbmRlbnRhdGlvbiBmcm9tIGVhY2ggbGluZVxuICBjb25zdCBtYXRjaCA9IGVuZFJlc3VsdC5tYXRjaCgvXlsgXFx0XSooPz1cXFMpL2dtKTtcblxuICAvLyByZXR1cm4gZWFybHkgaWYgdGhlcmUncyBub3RoaW5nIHRvIHN0cmlwXG4gIGlmIChtYXRjaCA9PT0gbnVsbCkge1xuICAgIHJldHVybiBlbmRSZXN1bHQ7XG4gIH1cblxuICBjb25zdCBpbmRlbnQgPSBNYXRoLm1pbiguLi5tYXRjaC5tYXAoZWwgPT4gZWwubGVuZ3RoKSk7XG4gIGNvbnN0IHJlZ2V4cCA9IG5ldyBSZWdFeHAoJ15bIFxcXFx0XXsnICsgaW5kZW50ICsgJ30nLCAnZ20nKTtcblxuICByZXR1cm4gKGluZGVudCA+IDAgPyBlbmRSZXN1bHQucmVwbGFjZShyZWdleHAsICcnKSA6IGVuZFJlc3VsdCkudHJpbSgpO1xufVxuXG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEluZGVudHMoc3RyaW5nczogVGVtcGxhdGVTdHJpbmdzQXJyYXksIC4uLnZhbHVlczogYW55W10pIHtcbiAgcmV0dXJuIFN0cmluZy5yYXcoc3RyaW5ncywgLi4udmFsdWVzKVxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKGxpbmUgPT4gbGluZS50cmltKCkpXG4gICAgLmpvaW4oJ1xcbicpXG4gICAgLnRyaW0oKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.io/license
|
|
7
|
+
*/
|
|
8
|
+
import { Position } from 'source-map';
|
|
9
|
+
export interface TemplateOptions {
|
|
10
|
+
sourceURL?: string;
|
|
11
|
+
sourceMap?: boolean;
|
|
12
|
+
module?: boolean | {
|
|
13
|
+
exports: {};
|
|
14
|
+
};
|
|
15
|
+
sourceRoot?: string;
|
|
16
|
+
fileName?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A simple AST for templates. There's only one level of AST nodes, but it's still useful
|
|
20
|
+
* to have the information you're looking for.
|
|
21
|
+
*/
|
|
22
|
+
export interface TemplateAst {
|
|
23
|
+
fileName: string;
|
|
24
|
+
content: string;
|
|
25
|
+
children: TemplateAstNode[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The base, which contains positions.
|
|
29
|
+
*/
|
|
30
|
+
export interface TemplateAstBase {
|
|
31
|
+
start: Position;
|
|
32
|
+
end: Position;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A static content node.
|
|
36
|
+
*/
|
|
37
|
+
export interface TemplateAstContent extends TemplateAstBase {
|
|
38
|
+
kind: 'content';
|
|
39
|
+
content: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* An evaluate node, which is the code between `<% ... %>`.
|
|
43
|
+
*/
|
|
44
|
+
export interface TemplateAstEvaluate extends TemplateAstBase {
|
|
45
|
+
kind: 'evaluate';
|
|
46
|
+
expression: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* An escape node, which is the code between `<%- ... %>`.
|
|
50
|
+
*/
|
|
51
|
+
export interface TemplateAstEscape extends TemplateAstBase {
|
|
52
|
+
kind: 'escape';
|
|
53
|
+
expression: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* An interpolation node, which is the code between `<%= ... %>`.
|
|
57
|
+
*/
|
|
58
|
+
export interface TemplateAstInterpolate extends TemplateAstBase {
|
|
59
|
+
kind: 'interpolate';
|
|
60
|
+
expression: string;
|
|
61
|
+
}
|
|
62
|
+
export declare type TemplateAstNode = TemplateAstContent | TemplateAstEvaluate | TemplateAstEscape | TemplateAstInterpolate;
|
|
63
|
+
/**
|
|
64
|
+
* Given a source text (and a fileName), returns a TemplateAst.
|
|
65
|
+
*/
|
|
66
|
+
export declare function templateParser(sourceText: string, fileName: string): TemplateAst;
|
|
67
|
+
/**
|
|
68
|
+
* An equivalent of EJS templates, which is based on John Resig's `tmpl` implementation
|
|
69
|
+
* (http://ejohn.org/blog/javascript-micro-templating/) and Laura Doktorova's doT.js
|
|
70
|
+
* (https://github.com/olado/doT).
|
|
71
|
+
*
|
|
72
|
+
* This version differs from lodash by removing support from ES6 quasi-literals, and making the
|
|
73
|
+
* code slightly simpler to follow. It also does not depend on any third party, which is nice.
|
|
74
|
+
*
|
|
75
|
+
* Finally, it supports SourceMap, if you ever need to debug, which is super nice.
|
|
76
|
+
*
|
|
77
|
+
* @param content The template content.
|
|
78
|
+
* @param options Optional Options. See TemplateOptions for more description.
|
|
79
|
+
* @return {(input: T) => string} A function that accept an input object and returns the content
|
|
80
|
+
* of the template with the input applied.
|
|
81
|
+
*/
|
|
82
|
+
export declare function template<T>(content: string, options?: TemplateOptions): (input: T) => string;
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* @license
|
|
5
|
+
* Copyright Google Inc. All Rights Reserved.
|
|
6
|
+
*
|
|
7
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
8
|
+
* found in the LICENSE file at https://angular.io/license
|
|
9
|
+
*/
|
|
10
|
+
const source_map_1 = require("source-map");
|
|
11
|
+
// Matches <%= expr %>. This does not support structural JavaScript (for/if/...).
|
|
12
|
+
const kInterpolateRe = /<%=([\s\S]+?)%>/g;
|
|
13
|
+
// Used to match template delimiters.
|
|
14
|
+
// <%- expr %>: HTML escape the value.
|
|
15
|
+
// <% ... %>: Structural template code.
|
|
16
|
+
const kEscapeRe = /<%-([\s\S]+?)%>/g;
|
|
17
|
+
const kEvaluateRe = /<%([\s\S]+?)%>/g;
|
|
18
|
+
/** Used to map characters to HTML entities. */
|
|
19
|
+
const kHtmlEscapes = {
|
|
20
|
+
'&': '&',
|
|
21
|
+
'<': '<',
|
|
22
|
+
'>': '>',
|
|
23
|
+
'"': '"',
|
|
24
|
+
"'": ''',
|
|
25
|
+
'`': '`',
|
|
26
|
+
};
|
|
27
|
+
// Used to match HTML entities and HTML characters.
|
|
28
|
+
const reUnescapedHtml = new RegExp(`[${Object.keys(kHtmlEscapes).join('')}]`, 'g');
|
|
29
|
+
function _positionFor(content, offset) {
|
|
30
|
+
let line = 1;
|
|
31
|
+
let column = 0;
|
|
32
|
+
for (let i = 0; i < offset - 1; i++) {
|
|
33
|
+
if (content[i] == '\n') {
|
|
34
|
+
line++;
|
|
35
|
+
column = 0;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
column++;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
line,
|
|
43
|
+
column,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Given a source text (and a fileName), returns a TemplateAst.
|
|
48
|
+
*/
|
|
49
|
+
function templateParser(sourceText, fileName) {
|
|
50
|
+
const children = [];
|
|
51
|
+
// Compile the regexp to match each delimiter.
|
|
52
|
+
const reDelimiters = RegExp(`${kEscapeRe.source}|${kInterpolateRe.source}|${kEvaluateRe.source}|$`, 'g');
|
|
53
|
+
const parsed = sourceText.split(reDelimiters);
|
|
54
|
+
let offset = 0;
|
|
55
|
+
// Optimization that uses the fact that the end of a node is always the beginning of the next
|
|
56
|
+
// node, so we keep the positioning of the nodes in memory.
|
|
57
|
+
let start = _positionFor(sourceText, offset);
|
|
58
|
+
let end = null;
|
|
59
|
+
for (let i = 0; i < parsed.length; i += 4) {
|
|
60
|
+
const [content, escape, interpolate, evaluate] = parsed.slice(i, i + 4);
|
|
61
|
+
if (content) {
|
|
62
|
+
end = _positionFor(sourceText, offset + content.length);
|
|
63
|
+
offset += content.length;
|
|
64
|
+
children.push({ kind: 'content', content, start, end });
|
|
65
|
+
start = end;
|
|
66
|
+
}
|
|
67
|
+
if (escape) {
|
|
68
|
+
end = _positionFor(sourceText, offset + escape.length + 5);
|
|
69
|
+
offset += escape.length + 5;
|
|
70
|
+
children.push({ kind: 'escape', expression: escape, start, end });
|
|
71
|
+
start = end;
|
|
72
|
+
}
|
|
73
|
+
if (interpolate) {
|
|
74
|
+
end = _positionFor(sourceText, offset + interpolate.length + 5);
|
|
75
|
+
offset += interpolate.length + 5;
|
|
76
|
+
children.push({
|
|
77
|
+
kind: 'interpolate',
|
|
78
|
+
expression: interpolate,
|
|
79
|
+
start,
|
|
80
|
+
end,
|
|
81
|
+
});
|
|
82
|
+
start = end;
|
|
83
|
+
}
|
|
84
|
+
if (evaluate) {
|
|
85
|
+
end = _positionFor(sourceText, offset + evaluate.length + 5);
|
|
86
|
+
offset += evaluate.length + 5;
|
|
87
|
+
children.push({ kind: 'evaluate', expression: evaluate, start, end });
|
|
88
|
+
start = end;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
fileName,
|
|
93
|
+
content: sourceText,
|
|
94
|
+
children,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
exports.templateParser = templateParser;
|
|
98
|
+
/**
|
|
99
|
+
* Fastest implementation of the templating algorithm. It only add strings and does not bother
|
|
100
|
+
* with source maps.
|
|
101
|
+
*/
|
|
102
|
+
function templateFast(ast, options) {
|
|
103
|
+
const module = options && options.module ? 'module.exports.default =' : '';
|
|
104
|
+
const reHtmlEscape = reUnescapedHtml.source.replace(/[']/g, '\\\\\\\'');
|
|
105
|
+
return `
|
|
106
|
+
return ${module} function(obj) {
|
|
107
|
+
obj || (obj = {});
|
|
108
|
+
let __t;
|
|
109
|
+
let __p = '';
|
|
110
|
+
const __escapes = ${JSON.stringify(kHtmlEscapes)};
|
|
111
|
+
const __escapesre = new RegExp('${reHtmlEscape}', 'g');
|
|
112
|
+
|
|
113
|
+
const __e = function(s) {
|
|
114
|
+
return s ? s.replace(__escapesre, function(key) { return __escapes[key]; }) : '';
|
|
115
|
+
};
|
|
116
|
+
with (obj) {
|
|
117
|
+
${ast.children.map(node => {
|
|
118
|
+
switch (node.kind) {
|
|
119
|
+
case 'content':
|
|
120
|
+
return `__p += ${JSON.stringify(node.content)};`;
|
|
121
|
+
case 'interpolate':
|
|
122
|
+
return `__p += ((__t = (${node.expression})) == null) ? '' : __t;`;
|
|
123
|
+
case 'escape':
|
|
124
|
+
return `__p += __e(${node.expression});`;
|
|
125
|
+
case 'evaluate':
|
|
126
|
+
return node.expression;
|
|
127
|
+
}
|
|
128
|
+
}).join('\n')}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return __p;
|
|
132
|
+
};
|
|
133
|
+
`;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Templating algorithm with source map support. The map is outputted as //# sourceMapUrl=...
|
|
137
|
+
*/
|
|
138
|
+
function templateWithSourceMap(ast, options) {
|
|
139
|
+
const sourceUrl = ast.fileName;
|
|
140
|
+
const module = options && options.module ? 'module.exports.default =' : '';
|
|
141
|
+
const reHtmlEscape = reUnescapedHtml.source.replace(/[']/g, '\\\\\\\'');
|
|
142
|
+
const preamble = (new source_map_1.SourceNode(1, 0, sourceUrl, ''))
|
|
143
|
+
.add(new source_map_1.SourceNode(1, 0, sourceUrl, [
|
|
144
|
+
`return ${module} function(obj) {\n`,
|
|
145
|
+
' obj || (obj = {});\n',
|
|
146
|
+
' let __t;\n',
|
|
147
|
+
' let __p = "";\n',
|
|
148
|
+
` const __escapes = ${JSON.stringify(kHtmlEscapes)};\n`,
|
|
149
|
+
` const __escapesre = new RegExp('${reHtmlEscape}', 'g');\n`,
|
|
150
|
+
`\n`,
|
|
151
|
+
` const __e = function(s) { `,
|
|
152
|
+
` return s ? s.replace(__escapesre, function(key) { return __escapes[key]; }) : '';`,
|
|
153
|
+
` };\n`,
|
|
154
|
+
` with (obj) {\n`,
|
|
155
|
+
]));
|
|
156
|
+
const end = ast.children.length
|
|
157
|
+
? ast.children[ast.children.length - 1].end
|
|
158
|
+
: { line: 0, column: 0 };
|
|
159
|
+
const nodes = ast.children.reduce((chunk, node) => {
|
|
160
|
+
let code = '';
|
|
161
|
+
switch (node.kind) {
|
|
162
|
+
case 'content':
|
|
163
|
+
code = [
|
|
164
|
+
new source_map_1.SourceNode(node.start.line, node.start.column, sourceUrl, '__p = __p'),
|
|
165
|
+
...node.content.split('\n').map((line, i, arr) => {
|
|
166
|
+
return new source_map_1.SourceNode(node.start.line + i, i == 0 ? node.start.column : 0, sourceUrl, '\n + '
|
|
167
|
+
+ JSON.stringify(line + (i == arr.length - 1 ? '' : '\n')));
|
|
168
|
+
}),
|
|
169
|
+
new source_map_1.SourceNode(node.end.line, node.end.column, sourceUrl, ';\n'),
|
|
170
|
+
];
|
|
171
|
+
break;
|
|
172
|
+
case 'interpolate':
|
|
173
|
+
code = [
|
|
174
|
+
new source_map_1.SourceNode(node.start.line, node.start.column, sourceUrl, '__p += ((__t = '),
|
|
175
|
+
...node.expression.split('\n').map((line, i, arr) => {
|
|
176
|
+
return new source_map_1.SourceNode(node.start.line + i, i == 0 ? node.start.column : 0, sourceUrl, line + ((i == arr.length - 1) ? '' : '\n'));
|
|
177
|
+
}),
|
|
178
|
+
new source_map_1.SourceNode(node.end.line, node.end.column, sourceUrl, ') == null ? "" : __t);\n'),
|
|
179
|
+
];
|
|
180
|
+
break;
|
|
181
|
+
case 'escape':
|
|
182
|
+
code = [
|
|
183
|
+
new source_map_1.SourceNode(node.start.line, node.start.column, sourceUrl, '__p += __e('),
|
|
184
|
+
...node.expression.split('\n').map((line, i, arr) => {
|
|
185
|
+
return new source_map_1.SourceNode(node.start.line + i, i == 0 ? node.start.column : 0, sourceUrl, line + ((i == arr.length - 1) ? '' : '\n'));
|
|
186
|
+
}),
|
|
187
|
+
new source_map_1.SourceNode(node.end.line, node.end.column, sourceUrl, ');\n'),
|
|
188
|
+
];
|
|
189
|
+
break;
|
|
190
|
+
case 'evaluate':
|
|
191
|
+
code = [
|
|
192
|
+
...node.expression.split('\n').map((line, i, arr) => {
|
|
193
|
+
return new source_map_1.SourceNode(node.start.line + i, i == 0 ? node.start.column : 0, sourceUrl, line + ((i == arr.length - 1) ? '' : '\n'));
|
|
194
|
+
}),
|
|
195
|
+
new source_map_1.SourceNode(node.end.line, node.end.column, sourceUrl, '\n'),
|
|
196
|
+
];
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
return chunk.add(new source_map_1.SourceNode(node.start.line, node.start.column, sourceUrl, code));
|
|
200
|
+
}, preamble)
|
|
201
|
+
.add(new source_map_1.SourceNode(end.line, end.column, sourceUrl, [
|
|
202
|
+
' };\n',
|
|
203
|
+
'\n',
|
|
204
|
+
' return __p;\n',
|
|
205
|
+
'}\n',
|
|
206
|
+
]));
|
|
207
|
+
const code = nodes.toStringWithSourceMap({
|
|
208
|
+
file: sourceUrl,
|
|
209
|
+
sourceRoot: options && options.sourceRoot || '.',
|
|
210
|
+
});
|
|
211
|
+
// Set the source content in the source map, otherwise the sourceUrl is not enough
|
|
212
|
+
// to find the content.
|
|
213
|
+
code.map.setSourceContent(sourceUrl, ast.content);
|
|
214
|
+
return code.code
|
|
215
|
+
+ '\n//# sourceMappingURL=data:application/json;base64,'
|
|
216
|
+
+ new Buffer(code.map.toString()).toString('base64');
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* An equivalent of EJS templates, which is based on John Resig's `tmpl` implementation
|
|
220
|
+
* (http://ejohn.org/blog/javascript-micro-templating/) and Laura Doktorova's doT.js
|
|
221
|
+
* (https://github.com/olado/doT).
|
|
222
|
+
*
|
|
223
|
+
* This version differs from lodash by removing support from ES6 quasi-literals, and making the
|
|
224
|
+
* code slightly simpler to follow. It also does not depend on any third party, which is nice.
|
|
225
|
+
*
|
|
226
|
+
* Finally, it supports SourceMap, if you ever need to debug, which is super nice.
|
|
227
|
+
*
|
|
228
|
+
* @param content The template content.
|
|
229
|
+
* @param options Optional Options. See TemplateOptions for more description.
|
|
230
|
+
* @return {(input: T) => string} A function that accept an input object and returns the content
|
|
231
|
+
* of the template with the input applied.
|
|
232
|
+
*/
|
|
233
|
+
function template(content, options) {
|
|
234
|
+
const sourceUrl = options && options.sourceURL || 'ejs';
|
|
235
|
+
const ast = templateParser(content, sourceUrl);
|
|
236
|
+
let source;
|
|
237
|
+
// If there's no need for source map support, we revert back to the fast implementation.
|
|
238
|
+
if (options && options.sourceMap) {
|
|
239
|
+
source = templateWithSourceMap(ast, options);
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
source = templateFast(ast, options);
|
|
243
|
+
}
|
|
244
|
+
// We pass a dummy module in case the module option is passed. If `module: true` is passed, we
|
|
245
|
+
// need to only use the source, not the function itself. Otherwise expect a module object to be
|
|
246
|
+
// passed, and we use that one.
|
|
247
|
+
const fn = Function('module', source);
|
|
248
|
+
const module = options && options.module
|
|
249
|
+
? (options.module === true ? { exports: {} } : options.module)
|
|
250
|
+
: null;
|
|
251
|
+
const result = fn(module);
|
|
252
|
+
// Provide the compiled function's source by its `toString` method or
|
|
253
|
+
// the `source` property as a convenience for inlining compiled templates.
|
|
254
|
+
result.source = source;
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
257
|
+
exports.template = template;
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2hhbnNsL1NvdXJjZXMvZGV2a2l0LyIsInNvdXJjZXMiOlsicGFja2FnZXMvYW5ndWxhcl9kZXZraXQvY29yZS9zcmMvdXRpbHMvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCwyQ0FBa0Q7QUFFbEQsaUZBQWlGO0FBQ2pGLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDO0FBRTFDLHFDQUFxQztBQUNyQyxzQ0FBc0M7QUFDdEMsdUNBQXVDO0FBQ3ZDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDO0FBRXRDLCtDQUErQztBQUMvQyxNQUFNLFlBQVksR0FBNkI7SUFDN0MsR0FBRyxFQUFFLE9BQU87SUFDWixHQUFHLEVBQUUsTUFBTTtJQUNYLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxPQUFPO0NBQ2IsQ0FBQztBQUVGLG1EQUFtRDtBQUNuRCxNQUFNLGVBQWUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFZbkYsc0JBQXNCLE9BQWUsRUFBRSxNQUFjO0lBQ25ELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNmLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3ZC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QztJQUVELDhGQUE4RjtJQUM5RiwrRkFBK0Y7SUFDL0YsK0JBQStCO0lBQy9CLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNO1VBQ3pCLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztVQUM1RCxJQUFJLENBQUM7SUFDcEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTFCLHFFQUFxRTtJQUNyRSwwRUFBMEU7SUFDMUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFFdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBMUJELDRCQTBCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7IFBvc2l0aW9uLCBTb3VyY2VOb2RlIH0gZnJvbSAnc291cmNlLW1hcCc7XG5cbi8vIE1hdGNoZXMgPCU9IGV4cHIgJT4uIFRoaXMgZG9lcyBub3Qgc3VwcG9ydCBzdHJ1Y3R1cmFsIEphdmFTY3JpcHQgKGZvci9pZi8uLi4pLlxuY29uc3Qga0ludGVycG9sYXRlUmUgPSAvPCU9KFtcXHNcXFNdKz8pJT4vZztcblxuLy8gVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLlxuLy8gPCUtIGV4cHIgJT46IEhUTUwgZXNjYXBlIHRoZSB2YWx1ZS5cbi8vIDwlIC4uLiAlPjogU3RydWN0dXJhbCB0ZW1wbGF0ZSBjb2RlLlxuY29uc3Qga0VzY2FwZVJlID0gLzwlLShbXFxzXFxTXSs/KSU+L2c7XG5jb25zdCBrRXZhbHVhdGVSZSA9IC88JShbXFxzXFxTXSs/KSU+L2c7XG5cbi8qKiBVc2VkIHRvIG1hcCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuICovXG5jb25zdCBrSHRtbEVzY2FwZXM6IHtbY2hhcjogc3RyaW5nXTogc3RyaW5nfSA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICBcIidcIjogJyYjMzk7JyxcbiAgJ2AnOiAnJiM5NjsnLFxufTtcblxuLy8gVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuXG5jb25zdCByZVVuZXNjYXBlZEh0bWwgPSBuZXcgUmVnRXhwKGBbJHtPYmplY3Qua2V5cyhrSHRtbEVzY2FwZXMpLmpvaW4oJycpfV1gLCAnZycpO1xuXG4vLyBPcHRpb25zIHRvIHBhc3MgdG8gdGVtcGxhdGUuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlT3B0aW9ucyB7XG4gIHNvdXJjZVVSTD86IHN0cmluZztcbiAgc291cmNlTWFwPzogYm9vbGVhbjtcbiAgbW9kdWxlPzogYm9vbGVhbiB8IHsgZXhwb3J0czoge30gfTtcbiAgc291cmNlUm9vdD86IHN0cmluZztcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XG59XG5cblxuZnVuY3Rpb24gX3Bvc2l0aW9uRm9yKGNvbnRlbnQ6IHN0cmluZywgb2Zmc2V0OiBudW1iZXIpOiBQb3NpdGlvbiB7XG4gIGxldCBsaW5lID0gMTtcbiAgbGV0IGNvbHVtbiA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb2Zmc2V0IC0gMTsgaSsrKSB7XG4gICAgaWYgKGNvbnRlbnRbaV0gPT0gJ1xcbicpIHtcbiAgICAgIGxpbmUrKztcbiAgICAgIGNvbHVtbiA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbHVtbisrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbGluZSxcbiAgICBjb2x1bW4sXG4gIH07XG59XG5cbi8qKlxuICogQSBzaW1wbGUgQVNUIGZvciB0ZW1wbGF0ZXMuIFRoZXJlJ3Mgb25seSBvbmUgbGV2ZWwgb2YgQVNUIG5vZGVzLCBidXQgaXQncyBzdGlsbCB1c2VmdWxcbiAqIHRvIGhhdmUgdGhlIGluZm9ybWF0aW9uIHlvdSdyZSBsb29raW5nIGZvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUFzdCB7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgY2hpbGRyZW46IFRlbXBsYXRlQXN0Tm9kZVtdO1xufVxuXG4vKipcbiAqIFRoZSBiYXNlLCB3aGljaCBjb250YWlucyBwb3NpdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVBc3RCYXNlIHtcbiAgc3RhcnQ6IFBvc2l0aW9uO1xuICBlbmQ6IFBvc2l0aW9uO1xufVxuXG4vKipcbiAqIEEgc3RhdGljIGNvbnRlbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZUFzdENvbnRlbnQgZXh0ZW5kcyBUZW1wbGF0ZUFzdEJhc2Uge1xuICBraW5kOiAnY29udGVudCc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBldmFsdWF0ZSBub2RlLCB3aGljaCBpcyB0aGUgY29kZSBiZXR3ZWVuIGA8JSAuLi4gJT5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlQXN0RXZhbHVhdGUgZXh0ZW5kcyBUZW1wbGF0ZUFzdEJhc2Uge1xuICBraW5kOiAnZXZhbHVhdGUnO1xuICBleHByZXNzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gZXNjYXBlIG5vZGUsIHdoaWNoIGlzIHRoZSBjb2RlIGJldHdlZW4gYDwlLSAuLi4gJT5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlQXN0RXNjYXBlIGV4dGVuZHMgVGVtcGxhdGVBc3RCYXNlIHtcbiAga2luZDogJ2VzY2FwZSc7XG4gIGV4cHJlc3Npb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBpbnRlcnBvbGF0aW9uIG5vZGUsIHdoaWNoIGlzIHRoZSBjb2RlIGJldHdlZW4gYDwlPSAuLi4gJT5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlQXN0SW50ZXJwb2xhdGUgZXh0ZW5kcyBUZW1wbGF0ZUFzdEJhc2Uge1xuICBraW5kOiAnaW50ZXJwb2xhdGUnO1xuICBleHByZXNzaW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFRlbXBsYXRlQXN0Tm9kZSA9IFRlbXBsYXRlQXN0Q29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGVtcGxhdGVBc3RFdmFsdWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVGVtcGxhdGVBc3RFc2NhcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFRlbXBsYXRlQXN0SW50ZXJwb2xhdGU7XG5cbi8qKlxuICogR2l2ZW4gYSBzb3VyY2UgdGV4dCAoYW5kIGEgZmlsZU5hbWUpLCByZXR1cm5zIGEgVGVtcGxhdGVBc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZVBhcnNlcihzb3VyY2VUZXh0OiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZUFzdCB7XG4gIGNvbnN0IGNoaWxkcmVuID0gW107XG5cbiAgLy8gQ29tcGlsZSB0aGUgcmVnZXhwIHRvIG1hdGNoIGVhY2ggZGVsaW1pdGVyLlxuICBjb25zdCByZURlbGltaXRlcnMgPSBSZWdFeHAoXG4gICAgYCR7a0VzY2FwZVJlLnNvdXJjZX18JHtrSW50ZXJwb2xhdGVSZS5zb3VyY2V9fCR7a0V2YWx1YXRlUmUuc291cmNlfXwkYCwgJ2cnKTtcblxuICBjb25zdCBwYXJzZWQgPSBzb3VyY2VUZXh0LnNwbGl0KHJlRGVsaW1pdGVycyk7XG4gIGxldCBvZmZzZXQgPSAwO1xuICAvLyBPcHRpbWl6YXRpb24gdGhhdCB1c2VzIHRoZSBmYWN0IHRoYXQgdGhlIGVuZCBvZiBhIG5vZGUgaXMgYWx3YXlzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHRcbiAgLy8gbm9kZSwgc28gd2Uga2VlcCB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIG5vZGVzIGluIG1lbW9yeS5cbiAgbGV0IHN0YXJ0ID0gX3Bvc2l0aW9uRm9yKHNvdXJjZVRleHQsIG9mZnNldCk7XG4gIGxldCBlbmQgPSBudWxsIGFzIFBvc2l0aW9uIHwgbnVsbDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnNlZC5sZW5ndGg7IGkgKz0gNCkge1xuICAgIGNvbnN0IFtjb250ZW50LCBlc2NhcGUsIGludGVycG9sYXRlLCBldmFsdWF0ZV0gPSBwYXJzZWQuc2xpY2UoaSwgaSArIDQpO1xuICAgIGlmIChjb250ZW50KSB7XG4gICAgICBlbmQgPSBfcG9zaXRpb25Gb3Ioc291cmNlVGV4dCwgb2Zmc2V0ICsgY29udGVudC5sZW5ndGgpO1xuICAgICAgb2Zmc2V0ICs9IGNvbnRlbnQubGVuZ3RoO1xuICAgICAgY2hpbGRyZW4ucHVzaCh7IGtpbmQ6ICdjb250ZW50JywgY29udGVudCwgc3RhcnQsIGVuZCB9IGFzIFRlbXBsYXRlQXN0Q29udGVudCk7XG4gICAgICBzdGFydCA9IGVuZDtcbiAgICB9XG4gICAgaWYgKGVzY2FwZSkge1xuICAgICAgZW5kID0gX3Bvc2l0aW9uRm9yKHNvdXJjZVRleHQsIG9mZnNldCArIGVzY2FwZS5sZW5ndGggKyA1KTtcbiAgICAgIG9mZnNldCArPSBlc2NhcGUubGVuZ3RoICsgNTtcbiAgICAgIGNoaWxkcmVuLnB1c2goeyBraW5kOiAnZXNjYXBlJywgZXhwcmVzc2lvbjogZXNjYXBlLCBzdGFydCwgZW5kIH0gYXMgVGVtcGxhdGVBc3RFc2NhcGUpO1xuICAgICAgc3RhcnQgPSBlbmQ7XG4gICAgfVxuICAgIGlmIChpbnRlcnBvbGF0ZSkge1xuICAgICAgZW5kID0gX3Bvc2l0aW9uRm9yKHNvdXJjZVRleHQsIG9mZnNldCArIGludGVycG9sYXRlLmxlbmd0aCArIDUpO1xuICAgICAgb2Zmc2V0ICs9IGludGVycG9sYXRlLmxlbmd0aCArIDU7XG4gICAgICBjaGlsZHJlbi5wdXNoKHtcbiAgICAgICAga2luZDogJ2ludGVycG9sYXRlJyxcbiAgICAgICAgZXhwcmVzc2lvbjogaW50ZXJwb2xhdGUsXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBlbmQsXG4gICAgICB9IGFzIFRlbXBsYXRlQXN0SW50ZXJwb2xhdGUpO1xuICAgICAgc3RhcnQgPSBlbmQ7XG4gICAgfVxuICAgIGlmIChldmFsdWF0ZSkge1xuICAgICAgZW5kID0gX3Bvc2l0aW9uRm9yKHNvdXJjZVRleHQsIG9mZnNldCArIGV2YWx1YXRlLmxlbmd0aCArIDUpO1xuICAgICAgb2Zmc2V0ICs9IGV2YWx1YXRlLmxlbmd0aCArIDU7XG4gICAgICBjaGlsZHJlbi5wdXNoKHsga2luZDogJ2V2YWx1YXRlJywgZXhwcmVzc2lvbjogZXZhbHVhdGUsIHN0YXJ0LCBlbmQgfSBhcyBUZW1wbGF0ZUFzdEV2YWx1YXRlKTtcbiAgICAgIHN0YXJ0ID0gZW5kO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZmlsZU5hbWUsXG4gICAgY29udGVudDogc291cmNlVGV4dCxcbiAgICBjaGlsZHJlbixcbiAgfTtcbn1cblxuLyoqXG4gKiBGYXN0ZXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSB0ZW1wbGF0aW5nIGFsZ29yaXRobS4gSXQgb25seSBhZGQgc3RyaW5ncyBhbmQgZG9lcyBub3QgYm90aGVyXG4gKiB3aXRoIHNvdXJjZSBtYXBzLlxuICovXG5mdW5jdGlvbiB0ZW1wbGF0ZUZhc3QoYXN0OiBUZW1wbGF0ZUFzdCwgb3B0aW9ucz86IFRlbXBsYXRlT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IG1vZHVsZSA9IG9wdGlvbnMgJiYgb3B0aW9ucy5tb2R1bGUgPyAnbW9kdWxlLmV4cG9ydHMuZGVmYXVsdCA9JyA6ICcnO1xuICBjb25zdCByZUh0bWxFc2NhcGUgPSByZVVuZXNjYXBlZEh0bWwuc291cmNlLnJlcGxhY2UoL1snXS9nLCAnXFxcXFxcXFxcXFxcXFwnJyk7XG5cbiAgcmV0dXJuIGBcbiAgICByZXR1cm4gJHttb2R1bGV9IGZ1bmN0aW9uKG9iaikge1xuICAgICAgb2JqIHx8IChvYmogPSB7fSk7XG4gICAgICBsZXQgX190O1xuICAgICAgbGV0IF9fcCA9ICcnO1xuICAgICAgY29uc3QgX19lc2NhcGVzID0gJHtKU09OLnN0cmluZ2lmeShrSHRtbEVzY2FwZXMpfTtcbiAgICAgIGNvbnN0IF9fZXNjYXBlc3JlID0gbmV3IFJlZ0V4cCgnJHtyZUh0bWxFc2NhcGV9JywgJ2cnKTtcblxuICAgICAgY29uc3QgX19lID0gZnVuY3Rpb24ocykge1xuICAgICAgICByZXR1cm4gcyA/IHMucmVwbGFjZShfX2VzY2FwZXNyZSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiBfX2VzY2FwZXNba2V5XTsgfSkgOiAnJztcbiAgICAgIH07XG4gICAgICB3aXRoIChvYmopIHtcbiAgICAgICAgJHthc3QuY2hpbGRyZW4ubWFwKG5vZGUgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBfX3AgKz0gJHtKU09OLnN0cmluZ2lmeShub2RlLmNvbnRlbnQpfTtgO1xuICAgICAgICAgICAgICBjYXNlICdpbnRlcnBvbGF0ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBfX3AgKz0gKChfX3QgPSAoJHtub2RlLmV4cHJlc3Npb259KSkgPT0gbnVsbCkgPyAnJyA6IF9fdDtgO1xuICAgICAgICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgICAgICAgIHJldHVybiBgX19wICs9IF9fZSgke25vZGUuZXhwcmVzc2lvbn0pO2A7XG4gICAgICAgICAgICAgIGNhc2UgJ2V2YWx1YXRlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5leHByZXNzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9fcDtcbiAgICB9O1xuICBgO1xufVxuXG4vKipcbiAqIFRlbXBsYXRpbmcgYWxnb3JpdGhtIHdpdGggc291cmNlIG1hcCBzdXBwb3J0LiBUaGUgbWFwIGlzIG91dHB1dHRlZCBhcyAvLyMgc291cmNlTWFwVXJsPS4uLlxuICovXG5mdW5jdGlvbiB0ZW1wbGF0ZVdpdGhTb3VyY2VNYXAoYXN0OiBUZW1wbGF0ZUFzdCwgb3B0aW9ucz86IFRlbXBsYXRlT3B0aW9ucyk6IHN0cmluZyB7XG4gIGNvbnN0IHNvdXJjZVVybCA9IGFzdC5maWxlTmFtZTtcbiAgY29uc3QgbW9kdWxlID0gb3B0aW9ucyAmJiBvcHRpb25zLm1vZHVsZSA/ICdtb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0nIDogJyc7XG4gIGNvbnN0IHJlSHRtbEVzY2FwZSA9IHJlVW5lc2NhcGVkSHRtbC5zb3VyY2UucmVwbGFjZSgvWyddL2csICdcXFxcXFxcXFxcXFxcXCcnKTtcblxuICBjb25zdCBwcmVhbWJsZSA9IChuZXcgU291cmNlTm9kZSgxLCAwLCBzb3VyY2VVcmwsICcnKSlcbiAgICAuYWRkKG5ldyBTb3VyY2VOb2RlKDEsIDAsIHNvdXJjZVVybCwgW1xuICAgICAgYHJldHVybiAke21vZHVsZX0gZnVuY3Rpb24ob2JqKSB7XFxuYCxcbiAgICAgICcgIG9iaiB8fCAob2JqID0ge30pO1xcbicsXG4gICAgICAnICBsZXQgX190O1xcbicsXG4gICAgICAnICBsZXQgX19wID0gXCJcIjtcXG4nLFxuICAgICAgYCAgY29uc3QgX19lc2NhcGVzID0gJHtKU09OLnN0cmluZ2lmeShrSHRtbEVzY2FwZXMpfTtcXG5gLFxuICAgICAgYCAgY29uc3QgX19lc2NhcGVzcmUgPSBuZXcgUmVnRXhwKCcke3JlSHRtbEVzY2FwZX0nLCAnZycpO1xcbmAsXG4gICAgICBgXFxuYCxcbiAgICAgIGAgIGNvbnN0IF9fZSA9IGZ1bmN0aW9uKHMpIHsgYCxcbiAgICAgIGAgICAgcmV0dXJuIHMgPyBzLnJlcGxhY2UoX19lc2NhcGVzcmUsIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gX19lc2NhcGVzW2tleV07IH0pIDogJyc7YCxcbiAgICAgIGAgIH07XFxuYCxcbiAgICAgIGAgIHdpdGggKG9iaikge1xcbmAsXG4gICAgXSkpO1xuXG4gIGNvbnN0IGVuZCA9IGFzdC5jaGlsZHJlbi5sZW5ndGhcbiAgICA/IGFzdC5jaGlsZHJlblthc3QuY2hpbGRyZW4ubGVuZ3RoIC0gMV0uZW5kXG4gICAgOiB7IGxpbmU6IDAsIGNvbHVtbjogMCB9O1xuICBjb25zdCBub2RlcyA9IGFzdC5jaGlsZHJlbi5yZWR1Y2UoKGNodW5rLCBub2RlKSA9PiB7XG4gICAgbGV0IGNvZGU6IHN0cmluZyB8IFNvdXJjZU5vZGUgfCAoU291cmNlTm9kZSB8IHN0cmluZylbXSA9ICcnO1xuICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgY29kZSA9IFtcbiAgICAgICAgICBuZXcgU291cmNlTm9kZShub2RlLnN0YXJ0LmxpbmUsIG5vZGUuc3RhcnQuY29sdW1uLCBzb3VyY2VVcmwsICdfX3AgPSBfX3AnKSxcbiAgICAgICAgICAuLi5ub2RlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgobGluZSwgaSwgYXJyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUoXG4gICAgICAgICAgICAgIG5vZGUuc3RhcnQubGluZSArIGksXG4gICAgICAgICAgICAgIGkgPT0gMCA/IG5vZGUuc3RhcnQuY29sdW1uIDogMCxcbiAgICAgICAgICAgICAgc291cmNlVXJsLFxuICAgICAgICAgICAgICAnXFxuICAgICsgJ1xuICAgICAgICAgICAgICArIEpTT04uc3RyaW5naWZ5KGxpbmUgKyAoaSA9PSBhcnIubGVuZ3RoIC0gMSA/ICcnIDogJ1xcbicpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IFNvdXJjZU5vZGUobm9kZS5lbmQubGluZSwgbm9kZS5lbmQuY29sdW1uLCBzb3VyY2VVcmwsICc7XFxuJyksXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW50ZXJwb2xhdGUnOlxuICAgICAgICBjb2RlID0gW1xuICAgICAgICAgIG5ldyBTb3VyY2VOb2RlKG5vZGUuc3RhcnQubGluZSwgbm9kZS5zdGFydC5jb2x1bW4sIHNvdXJjZVVybCwgJ19fcCArPSAoKF9fdCA9ICcpLFxuICAgICAgICAgIC4uLm5vZGUuZXhwcmVzc2lvbi5zcGxpdCgnXFxuJykubWFwKChsaW5lLCBpLCBhcnIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU291cmNlTm9kZShcbiAgICAgICAgICAgICAgbm9kZS5zdGFydC5saW5lICsgaSxcbiAgICAgICAgICAgICAgaSA9PSAwID8gbm9kZS5zdGFydC5jb2x1bW4gOiAwLFxuICAgICAgICAgICAgICBzb3VyY2VVcmwsXG4gICAgICAgICAgICAgIGxpbmUgKyAoKGkgPT0gYXJyLmxlbmd0aCAtIDEpID8gJycgOiAnXFxuJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBTb3VyY2VOb2RlKG5vZGUuZW5kLmxpbmUsIG5vZGUuZW5kLmNvbHVtbiwgc291cmNlVXJsLCAnKSA9PSBudWxsID8gXCJcIiA6IF9fdCk7XFxuJyksXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXNjYXBlJzpcbiAgICAgICAgY29kZSA9IFtcbiAgICAgICAgICBuZXcgU291cmNlTm9kZShub2RlLnN0YXJ0LmxpbmUsIG5vZGUuc3RhcnQuY29sdW1uLCBzb3VyY2VVcmwsICdfX3AgKz0gX19lKCcpLFxuICAgICAgICAgIC4uLm5vZGUuZXhwcmVzc2lvbi5zcGxpdCgnXFxuJykubWFwKChsaW5lLCBpLCBhcnIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU291cmNlTm9kZShcbiAgICAgICAgICAgICAgbm9kZS5zdGFydC5saW5lICsgaSxcbiAgICAgICAgICAgICAgaSA9PSAwID8gbm9kZS5zdGFydC5jb2x1bW4gOiAwLFxuICAgICAgICAgICAgICBzb3VyY2VVcmwsXG4gICAgICAgICAgICAgIGxpbmUgKyAoKGkgPT0gYXJyLmxlbmd0aCAtIDEpID8gJycgOiAnXFxuJyksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBTb3VyY2VOb2RlKG5vZGUuZW5kLmxpbmUsIG5vZGUuZW5kLmNvbHVtbiwgc291cmNlVXJsLCAnKTtcXG4nKSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmFsdWF0ZSc6XG4gICAgICAgIGNvZGUgPSBbXG4gICAgICAgICAgLi4ubm9kZS5leHByZXNzaW9uLnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUsIGksIGFycikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKFxuICAgICAgICAgICAgICBub2RlLnN0YXJ0LmxpbmUgKyBpLFxuICAgICAgICAgICAgICBpID09IDAgPyBub2RlLnN0YXJ0LmNvbHVtbiA6IDAsXG4gICAgICAgICAgICAgIHNvdXJjZVVybCxcbiAgICAgICAgICAgICAgbGluZSArICgoaSA9PSBhcnIubGVuZ3RoIC0gMSkgPyAnJyA6ICdcXG4nKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IFNvdXJjZU5vZGUobm9kZS5lbmQubGluZSwgbm9kZS5lbmQuY29sdW1uLCBzb3VyY2VVcmwsICdcXG4nKSxcbiAgICAgICAgXTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNodW5rLmFkZChuZXcgU291cmNlTm9kZShub2RlLnN0YXJ0LmxpbmUsIG5vZGUuc3RhcnQuY29sdW1uLCBzb3VyY2VVcmwsIGNvZGUpKTtcbiAgfSwgcHJlYW1ibGUpXG4gIC5hZGQobmV3IFNvdXJjZU5vZGUoZW5kLmxpbmUsIGVuZC5jb2x1bW4sIHNvdXJjZVVybCwgW1xuICAgICcgIH07XFxuJyxcbiAgICAnXFxuJyxcbiAgICAnICByZXR1cm4gX19wO1xcbicsXG4gICAgJ31cXG4nLFxuICBdKSk7XG5cbiAgY29uc3QgY29kZSA9IG5vZGVzLnRvU3RyaW5nV2l0aFNvdXJjZU1hcCh7XG4gICAgZmlsZTogc291cmNlVXJsLFxuICAgIHNvdXJjZVJvb3Q6IG9wdGlvbnMgJiYgb3B0aW9ucy5zb3VyY2VSb290IHx8ICcuJyxcbiAgfSk7XG5cbiAgLy8gU2V0IHRoZSBzb3VyY2UgY29udGVudCBpbiB0aGUgc291cmNlIG1hcCwgb3RoZXJ3aXNlIHRoZSBzb3VyY2VVcmwgaXMgbm90IGVub3VnaFxuICAvLyB0byBmaW5kIHRoZSBjb250ZW50LlxuICBjb2RlLm1hcC5zZXRTb3VyY2VDb250ZW50KHNvdXJjZVVybCwgYXN0LmNvbnRlbnQpO1xuXG4gIHJldHVybiBjb2RlLmNvZGVcbiAgICAgICArICdcXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCdcbiAgICAgICArIG5ldyBCdWZmZXIoY29kZS5tYXAudG9TdHJpbmcoKSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufVxuXG5cbi8qKlxuICogQW4gZXF1aXZhbGVudCBvZiBFSlMgdGVtcGxhdGVzLCB3aGljaCBpcyBiYXNlZCBvbiBKb2huIFJlc2lnJ3MgYHRtcGxgIGltcGxlbWVudGF0aW9uXG4gKiAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanNcbiAqIChodHRwczovL2dpdGh1Yi5jb20vb2xhZG8vZG9UKS5cbiAqXG4gKiBUaGlzIHZlcnNpb24gZGlmZmVycyBmcm9tIGxvZGFzaCBieSByZW1vdmluZyBzdXBwb3J0IGZyb20gRVM2IHF1YXNpLWxpdGVyYWxzLCBhbmQgbWFraW5nIHRoZVxuICogY29kZSBzbGlnaHRseSBzaW1wbGVyIHRvIGZvbGxvdy4gSXQgYWxzbyBkb2VzIG5vdCBkZXBlbmQgb24gYW55IHRoaXJkIHBhcnR5LCB3aGljaCBpcyBuaWNlLlxuICpcbiAqIEZpbmFsbHksIGl0IHN1cHBvcnRzIFNvdXJjZU1hcCwgaWYgeW91IGV2ZXIgbmVlZCB0byBkZWJ1Zywgd2hpY2ggaXMgc3VwZXIgbmljZS5cbiAqXG4gKiBAcGFyYW0gY29udGVudCBUaGUgdGVtcGxhdGUgY29udGVudC5cbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIE9wdGlvbnMuIFNlZSBUZW1wbGF0ZU9wdGlvbnMgZm9yIG1vcmUgZGVzY3JpcHRpb24uXG4gKiBAcmV0dXJuIHsoaW5wdXQ6IFQpID0+IHN0cmluZ30gQSBmdW5jdGlvbiB0aGF0IGFjY2VwdCBhbiBpbnB1dCBvYmplY3QgYW5kIHJldHVybnMgdGhlIGNvbnRlbnRcbiAqICAgICAgICAgb2YgdGhlIHRlbXBsYXRlIHdpdGggdGhlIGlucHV0IGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZW1wbGF0ZTxUPihjb250ZW50OiBzdHJpbmcsIG9wdGlvbnM/OiBUZW1wbGF0ZU9wdGlvbnMpOiAoaW5wdXQ6IFQpID0+IHN0cmluZyB7XG4gIGNvbnN0IHNvdXJjZVVybCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zb3VyY2VVUkwgfHwgJ2Vqcyc7XG4gIGNvbnN0IGFzdCA9IHRlbXBsYXRlUGFyc2VyKGNvbnRlbnQsIHNvdXJjZVVybCk7XG5cbiAgbGV0IHNvdXJjZTogc3RyaW5nO1xuICAvLyBJZiB0aGVyZSdzIG5vIG5lZWQgZm9yIHNvdXJjZSBtYXAgc3VwcG9ydCwgd2UgcmV2ZXJ0IGJhY2sgdG8gdGhlIGZhc3QgaW1wbGVtZW50YXRpb24uXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc291cmNlTWFwKSB7XG4gICAgc291cmNlID0gdGVtcGxhdGVXaXRoU291cmNlTWFwKGFzdCwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgc291cmNlID0gdGVtcGxhdGVGYXN0KGFzdCwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyBXZSBwYXNzIGEgZHVtbXkgbW9kdWxlIGluIGNhc2UgdGhlIG1vZHVsZSBvcHRpb24gaXMgcGFzc2VkLiBJZiBgbW9kdWxlOiB0cnVlYCBpcyBwYXNzZWQsIHdlXG4gIC8vIG5lZWQgdG8gb25seSB1c2UgdGhlIHNvdXJjZSwgbm90IHRoZSBmdW5jdGlvbiBpdHNlbGYuIE90aGVyd2lzZSBleHBlY3QgYSBtb2R1bGUgb2JqZWN0IHRvIGJlXG4gIC8vIHBhc3NlZCwgYW5kIHdlIHVzZSB0aGF0IG9uZS5cbiAgY29uc3QgZm4gPSBGdW5jdGlvbignbW9kdWxlJywgc291cmNlKTtcbiAgY29uc3QgbW9kdWxlID0gb3B0aW9ucyAmJiBvcHRpb25zLm1vZHVsZVxuICAgICAgICAgICAgICAgPyAob3B0aW9ucy5tb2R1bGUgPT09IHRydWUgPyB7IGV4cG9ydHM6IHt9IH0gOiBvcHRpb25zLm1vZHVsZSlcbiAgICAgICAgICAgICAgIDogbnVsbDtcbiAgY29uc3QgcmVzdWx0ID0gZm4obW9kdWxlKTtcblxuICAvLyBQcm92aWRlIHRoZSBjb21waWxlZCBmdW5jdGlvbidzIHNvdXJjZSBieSBpdHMgYHRvU3RyaW5nYCBtZXRob2Qgb3JcbiAgLy8gdGhlIGBzb3VyY2VgIHByb3BlcnR5IGFzIGEgY29udmVuaWVuY2UgZm9yIGlubGluaW5nIGNvbXBpbGVkIHRlbXBsYXRlcy5cbiAgcmVzdWx0LnNvdXJjZSA9IHNvdXJjZTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
|
package/src/logger/cli-logger.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
* @license
|
|
5
|
-
* Copyright Google Inc. All Rights Reserved.
|
|
6
|
-
*
|
|
7
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
8
|
-
* found in the LICENSE file at https://angular.io/license
|
|
9
|
-
*/
|
|
10
|
-
require("rxjs/add/operator/filter");
|
|
11
|
-
const terminal_1 = require("../terminal");
|
|
12
|
-
const indent_1 = require("./indent");
|
|
13
|
-
/**
|
|
14
|
-
* A Logger that sends information to STDOUT and STDERR.
|
|
15
|
-
*/
|
|
16
|
-
function createLogger(verbose = false) {
|
|
17
|
-
const logger = new indent_1.IndentLogger('cling');
|
|
18
|
-
logger
|
|
19
|
-
.filter((entry) => (entry.level != 'debug' || verbose))
|
|
20
|
-
.subscribe((entry) => {
|
|
21
|
-
let color = x => terminal_1.dim(terminal_1.white(x));
|
|
22
|
-
let output = process.stdout;
|
|
23
|
-
switch (entry.level) {
|
|
24
|
-
case 'info':
|
|
25
|
-
color = terminal_1.white;
|
|
26
|
-
break;
|
|
27
|
-
case 'warn':
|
|
28
|
-
color = terminal_1.yellow;
|
|
29
|
-
break;
|
|
30
|
-
case 'error':
|
|
31
|
-
color = terminal_1.red;
|
|
32
|
-
output = process.stderr;
|
|
33
|
-
break;
|
|
34
|
-
case 'fatal':
|
|
35
|
-
color = (x) => terminal_1.bold(terminal_1.red(x));
|
|
36
|
-
output = process.stderr;
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
output.write(color(entry.message) + '\n');
|
|
40
|
-
});
|
|
41
|
-
return logger;
|
|
42
|
-
}
|
|
43
|
-
exports.createLogger = createLogger;
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvaGFuc2wvU291cmNlcy9kZXZraXQvIiwic291cmNlcyI6WyJwYWNrYWdlcy9hbmd1bGFyX2RldmtpdC9jb3JlL3NyYy9sb2dnZXIvY2xpLWxvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7R0FNRztBQUNILG9DQUFrQztBQUNsQywwQ0FBNEQ7QUFDNUQscUNBQXdDO0FBSXhDOztHQUVHO0FBQ0gsc0JBQTZCLE9BQU8sR0FBRyxLQUFLO0lBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUkscUJBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUV6QyxNQUFNO1NBQ0gsTUFBTSxDQUFDLENBQUMsS0FBZSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLENBQUM7U0FDaEUsU0FBUyxDQUFDLENBQUMsS0FBZTtRQUN6QixJQUFJLEtBQUssR0FBMEIsQ0FBQyxJQUFJLGNBQUcsQ0FBQyxnQkFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM1QixNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNwQixLQUFLLE1BQU07Z0JBQ1QsS0FBSyxHQUFHLGdCQUFLLENBQUM7Z0JBQ2QsS0FBSyxDQUFDO1lBQ1IsS0FBSyxNQUFNO2dCQUNULEtBQUssR0FBRyxpQkFBTSxDQUFDO2dCQUNmLEtBQUssQ0FBQztZQUNSLEtBQUssT0FBTztnQkFDVixLQUFLLEdBQUcsY0FBRyxDQUFDO2dCQUNaLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUN4QixLQUFLLENBQUM7WUFDUixLQUFLLE9BQU87Z0JBQ1YsS0FBSyxHQUFHLENBQUMsQ0FBUyxLQUFLLGVBQUksQ0FBQyxjQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQztRQUNWLENBQUM7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFTCxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUE3QkQsb0NBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuaW1wb3J0ICdyeGpzL2FkZC9vcGVyYXRvci9maWx0ZXInO1xuaW1wb3J0IHsgYm9sZCwgZGltLCByZWQsIHdoaXRlLCB5ZWxsb3cgfSBmcm9tICcuLi90ZXJtaW5hbCc7XG5pbXBvcnQgeyBJbmRlbnRMb2dnZXIgfSBmcm9tICcuL2luZGVudCc7XG5pbXBvcnQgeyBMb2dFbnRyeSwgTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5cbi8qKlxuICogQSBMb2dnZXIgdGhhdCBzZW5kcyBpbmZvcm1hdGlvbiB0byBTVERPVVQgYW5kIFNUREVSUi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcih2ZXJib3NlID0gZmFsc2UpOiBMb2dnZXIge1xuICBjb25zdCBsb2dnZXIgPSBuZXcgSW5kZW50TG9nZ2VyKCdjbGluZycpO1xuXG4gIGxvZ2dlclxuICAgIC5maWx0ZXIoKGVudHJ5OiBMb2dFbnRyeSkgPT4gKGVudHJ5LmxldmVsICE9ICdkZWJ1ZycgfHwgdmVyYm9zZSkpXG4gICAgLnN1YnNjcmliZSgoZW50cnk6IExvZ0VudHJ5KSA9PiB7XG4gICAgICBsZXQgY29sb3I6IChzOiBzdHJpbmcpID0+IHN0cmluZyA9IHggPT4gZGltKHdoaXRlKHgpKTtcbiAgICAgIGxldCBvdXRwdXQgPSBwcm9jZXNzLnN0ZG91dDtcbiAgICAgIHN3aXRjaCAoZW50cnkubGV2ZWwpIHtcbiAgICAgICAgY2FzZSAnaW5mbyc6XG4gICAgICAgICAgY29sb3IgPSB3aGl0ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnd2Fybic6XG4gICAgICAgICAgY29sb3IgPSB5ZWxsb3c7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICBjb2xvciA9IHJlZDtcbiAgICAgICAgICBvdXRwdXQgPSBwcm9jZXNzLnN0ZGVycjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZmF0YWwnOlxuICAgICAgICAgIGNvbG9yID0gKHg6IHN0cmluZykgPT4gYm9sZChyZWQoeCkpO1xuICAgICAgICAgIG91dHB1dCA9IHByb2Nlc3Muc3RkZXJyO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBvdXRwdXQud3JpdGUoY29sb3IoZW50cnkubWVzc2FnZSkgKyAnXFxuJyk7XG4gICAgfSk7XG5cbiAgcmV0dXJuIGxvZ2dlcjtcbn1cbiJdfQ==
|