node-tao 0.0.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  <p align="center">
4
4
  <img src="https://raw.githubusercontent.com/GreenFlag31/node-tao/main/node-tao.jpg" alt="node-tao template engine representation" width="300" height="300"/>
5
-
6
5
  </p>
7
6
 
8
7
  **`TAO`** is a simple, lightweight and very fast embedded JS templating. It emphasizes great performance, security, and developer experience.
9
8
 
9
+
10
10
  ### 🌟 Features
11
11
 
12
12
  - 🚀 Super Fast
@@ -41,7 +41,7 @@ console.log(res); // <h1>Hi Tao!</h1>
41
41
 
42
42
  Helpers are functions that can be used inside a template. Helpers can be **local** (only available in a particular `render`) or **global** (available everywhere on the instance).
43
43
 
44
- ```javascript
44
+ ```typescript
45
45
  import { Tao } from 'tao';
46
46
 
47
47
  const tao = new Tao({ views: path.join(__dirname, 'templates') });
@@ -53,6 +53,12 @@ function nPlusTwo(n: number) {
53
53
  // Global helper need to be registered on the instance
54
54
  tao.defineHelpers({ nPlusTwo });
55
55
 
56
+ // Define a dedicated interface for data and helpers passed to the template
57
+ interface SimpleData {
58
+ name: string;
59
+ nPlusOne: (n: number) => number;
60
+ }
61
+
56
62
  // Render a template
57
63
  app.get('/', (req, res) => {
58
64
  // Local helper
@@ -60,8 +66,9 @@ app.get('/', (req, res) => {
60
66
  return n + 1;
61
67
  }
62
68
 
63
- const res = tao.render('simple', { name: 'Ben' }, { nPlusOne });
64
- console.log(res); // <h1>Hi Ben!</h1>
69
+ // Data and helpers are merged into a single object
70
+ const res = tao.render<SimpleData>('simple', { name: 'Tao', nPlusOne });
71
+ console.log(res); // <h1>Hi Tao!</h1>
65
72
  });
66
73
  ```
67
74
 
@@ -86,7 +93,7 @@ In your template, you might want to include other templates:
86
93
  <%~ include('article', { phone: 'Tao T9' }) %>
87
94
  ```
88
95
 
89
- Child components will inherit from **data** and **helpers** provided in the parent component.
96
+ Child components will inherit from **data** provided in the parent component.
90
97
 
91
98
  ## Template prefix options
92
99
 
@@ -185,17 +192,23 @@ In case of an error, a visual representation is available in your browser, givin
185
192
 
186
193
  ![Error representation](https://raw.githubusercontent.com/GreenFlag31/node-tao/main/error-representation.png)
187
194
 
188
- NB: _set `debug: true` to activate this option. Do not activate this option in production._
195
+ NB: _set `development: true` to activate this option. Do not activate this option in production._
189
196
 
190
- Metrics are also available, so you get usefull informations about the template rendering time, cache hit, mapped templates, etc. in your browser console.
197
+ ### DevTools widget
191
198
 
192
- ![Metrics](https://raw.githubusercontent.com/GreenFlag31/node-tao/main/metrics.png)
199
+ When `development: true` is set, a floating **Tao DevTools** button (`τ`) appears in the bottom-right corner of every rendered page. Clicking it opens a panel that shows:
193
200
 
194
- If you want to inspect the data provided to the template, it is available directly in your browser console under the object `data`.
201
+ | Field | Description |
202
+ | -------------------- | -------------------------------------------------------------- |
203
+ | **Template** | Name of the rendered template |
204
+ | **Render time** | Rendering time in ms |
205
+ | **Cache** | Whether the template cache is enabled or disabled |
206
+ | **Cache hit** | Whether this render was served from cache |
207
+ | **Children** | Included sub-templates for this render |
208
+ | **Data keys** | Number of data keys passed to the template |
209
+ | **Helpers** | Number of local helpers passed to the template |
210
+ | **Mapped templates** | Full list of all templates discovered in the `views` directory |
195
211
 
196
- ![Data](https://raw.githubusercontent.com/GreenFlag31/node-tao/main/data.png)
197
-
198
- NB: _set `metrics: true` to activate this option. Do not activate this option in production._
199
212
 
200
213
  ## Integration with Web Framework
201
214
 
@@ -276,6 +289,7 @@ It started as a fork of `eta`, but became a dedicated library because the change
276
289
  - **Flexible template path resolution**: With `fileResolution` mode set to `flexible`, only end unique paths can be provided, which increases file path readability (aka. `namespaces`).
277
290
  - **Vscode extension**: Official vscode extension.
278
291
  - **Performance**: Various performance optimization.
292
+ - **Lexer**: A lexer offers more accuracy and is more scalable.
279
293
  - **Testing**: Modern and up to date numerous tests.
280
294
 
281
295
  </details>
@@ -285,7 +299,7 @@ It started as a fork of `eta`, but became a dedicated library because the change
285
299
  <b>Choices</b>
286
300
  </summary>
287
301
 
288
- - **No async support**: Supporting async rendering (e.g., `await include`) within templates encourages placing too much logic in the view layer and can be considered as an _anti-pattern_. Templates should be responsible for displaying data, while controllers should handle logic. Async behavior in templates would also require error handling (e.g., `try/catch`), adding complexity and possible errors. Async logic in template make it impossible de optimize through a `Promise.all` or any parallelism, hard to test and debug. In short: if you have async data, fetch it beforehand and render it synchronously.
302
+ - **No async support**: Supporting async rendering (e.g., `await include`) within templates encourages placing too much logic in the view layer and can be considered as an _anti-pattern_. Templates should be responsible for displaying data, while controllers should handle logic. Async behavior in templates would also require error handling (e.g., `try/catch`), adding complexity and possible errors. Async logic in template make it impossible de optimize through a `Promise.all` or any parallelism, hard to test and debug. In short: if you have async data, fetch it beforehand and render it synchronously (or use client side Javascript).
289
303
 
290
304
  - **No `layouts`**: Layouts are essentially includes and add unnecessary complexity to the rendering process.
291
305
 
@@ -307,6 +321,8 @@ V0.0.4: Fix NaN or Infinity value provided inside an object into the template.
307
321
 
308
322
  V0.0.5: Fix character escape triggering an invalid js syntax.
309
323
 
324
+ V1.0.0: Transforming the basic template expression extraction (inherited from ETA) to a lexer. Adding a widget to developer experience. Render method accepts now a generic and two params, the second param containing data and helpers.
325
+
310
326
  ## Credits
311
327
 
312
- - Syntax and some parts of compilation are based on `eta`.
328
+ - Syntax and some parts of compilation were based on `eta` in the versions < 1.0.0.
package/error-utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ErrorData } from './interfaces';
1
+ import { ErrorData, ErrorType } from './interfaces';
2
2
  declare function findOriginalLineNumberWithMessage(error: ErrorData, compiledAnonymousFnContent: string, originalFileContent: string): [string, string[], number | null];
3
3
  declare function getErrorMessageAndSource(error: any): [string, string];
4
4
  /**
@@ -8,14 +8,16 @@ declare function getLineFromAnonymousFunction(source: string): number;
8
8
  declare function extractContentFromAnonymousFunction(compiledAnonymousFnContent: string, line: number): string;
9
9
  declare function getOriginalLineNumber(compiledJoined: string): number;
10
10
  /**
11
- * Error occurred while parsing the template (unclosed string)
11
+ * Error occurred while parsing the template
12
12
  */
13
13
  declare function handleParseError(error: any): any;
14
14
  declare function getParsingErrorData(expression: string, index: number, message: string, fileContent: string): ErrorData;
15
+ declare function buildErrorData(message: string, lineNumber: number, fileContent: string, type: ErrorType): ErrorData;
15
16
  declare function infiniteInclusionError(filename: string, children: string[]): any;
16
17
  declare function handleNonUniqueFile(files: string[], filename: string): any;
17
18
  declare function handleWrongTypeOfTemplate(template: string): any;
18
19
  declare function handleNotFoundDynamicTemplate(template: string): any;
19
20
  declare function handleNoTemplateFilesFound(views: string, extension: string): any;
20
- export { getErrorMessageAndSource, getLineFromAnonymousFunction, extractContentFromAnonymousFunction, getOriginalLineNumber, findOriginalLineNumberWithMessage, handleParseError, getParsingErrorData, handleNonUniqueFile, infiniteInclusionError, handleWrongTypeOfTemplate, handleNotFoundDynamicTemplate, handleNoTemplateFilesFound, };
21
+ declare function logger(level: 'info' | 'warn' | 'error' | 'debug', message: string): void;
22
+ export { getErrorMessageAndSource, getLineFromAnonymousFunction, extractContentFromAnonymousFunction, getOriginalLineNumber, findOriginalLineNumberWithMessage, handleParseError, getParsingErrorData, handleNonUniqueFile, infiniteInclusionError, handleWrongTypeOfTemplate, handleNotFoundDynamicTemplate, handleNoTemplateFilesFound, logger, buildErrorData, };
21
23
  //# sourceMappingURL=error-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../src/error-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,cAAc,CAAC;AAEpD,iBAAS,iCAAiC,CACxC,KAAK,EAAE,SAAS,EAChB,0BAA0B,EAAE,MAAM,EAClC,mBAAmB,EAAE,MAAM,GAC1B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAkCnC;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9D;AAED;;GAEG;AACH,iBAAS,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAKnD;AAED,iBAAS,mCAAmC,CAAC,0BAA0B,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAS5F;AAiBD,iBAAS,qBAAqB,CAAC,cAAc,EAAE,MAAM,UAMpD;AAWD;;GAEG;AACH,iBAAS,gBAAgB,CAAC,KAAK,EAAE,GAAG,OAMnC;AAED,iBAAS,mBAAmB,CAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,SAAS,CAWX;AAQD,iBAAS,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAWnE;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,OAgB7D;AAED,iBAAS,yBAAyB,CAAC,QAAQ,EAAE,MAAM,OAUlD;AAED,iBAAS,6BAA6B,CAAC,QAAQ,EAAE,MAAM,OAUtD;AAED,iBAAS,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAUnE;AAED,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,mCAAmC,EACnC,qBAAqB,EACrB,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,0BAA0B,GAC3B,CAAC"}
1
+ {"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../src/error-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,iBAAS,iCAAiC,CACxC,KAAK,EAAE,SAAS,EAChB,0BAA0B,EAAE,MAAM,EAClC,mBAAmB,EAAE,MAAM,GAC1B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,CAkCnC;AAED,iBAAS,wBAAwB,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9D;AAED;;GAEG;AACH,iBAAS,4BAA4B,CAAC,MAAM,EAAE,MAAM,UAKnD;AAED,iBAAS,mCAAmC,CAAC,0BAA0B,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAS5F;AAiBD,iBAAS,qBAAqB,CAAC,cAAc,EAAE,MAAM,UAMpD;AAWD;;GAEG;AACH,iBAAS,gBAAgB,CAAC,KAAK,EAAE,GAAG,OAMnC;AAED,iBAAS,mBAAmB,CAC1B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,SAAS,CAWX;AAED,iBAAS,cAAc,CACrB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,SAAS,GACd,SAAS,CAQX;AAQD,iBAAS,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAWnE;AAED,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,OAgB7D;AAED,iBAAS,yBAAyB,CAAC,QAAQ,EAAE,MAAM,OAUlD;AAED,iBAAS,6BAA6B,CAAC,QAAQ,EAAE,MAAM,OAUtD;AAED,iBAAS,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAUnE;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,QAc1E;AAED,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,mCAAmC,EACnC,qBAAqB,EACrB,iCAAiC,EACjC,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,6BAA6B,EAC7B,0BAA0B,EAC1B,MAAM,EACN,cAAc,GACf,CAAC"}
package/error-utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleNoTemplateFilesFound = exports.handleNotFoundDynamicTemplate = exports.handleWrongTypeOfTemplate = exports.infiniteInclusionError = exports.handleNonUniqueFile = exports.getParsingErrorData = exports.handleParseError = exports.findOriginalLineNumberWithMessage = exports.getOriginalLineNumber = exports.extractContentFromAnonymousFunction = exports.getLineFromAnonymousFunction = exports.getErrorMessageAndSource = void 0;
3
+ exports.buildErrorData = exports.logger = exports.handleNoTemplateFilesFound = exports.handleNotFoundDynamicTemplate = exports.handleWrongTypeOfTemplate = exports.infiniteInclusionError = exports.handleNonUniqueFile = exports.getParsingErrorData = exports.handleParseError = exports.findOriginalLineNumberWithMessage = exports.getOriginalLineNumber = exports.extractContentFromAnonymousFunction = exports.getLineFromAnonymousFunction = exports.getErrorMessageAndSource = void 0;
4
4
  function findOriginalLineNumberWithMessage(error, compiledAnonymousFnContent, originalFileContent) {
5
5
  const basicErrorTypes = [
6
6
  'Template Type Error',
@@ -12,7 +12,7 @@ function findOriginalLineNumberWithMessage(error, compiledAnonymousFnContent, or
12
12
  return [error.message, [], null];
13
13
  }
14
14
  if (error.type === 'Parse Error') {
15
- handleParseError(error);
15
+ // handleParseError(error);
16
16
  return [error.message, error.fileContent, error.lineNumber];
17
17
  }
18
18
  if (error.type === 'ReadFile Error') {
@@ -80,7 +80,7 @@ function splitByLine(fileContent) {
80
80
  return fileSplittedByNewLine;
81
81
  }
82
82
  /**
83
- * Error occurred while parsing the template (unclosed string)
83
+ * Error occurred while parsing the template
84
84
  */
85
85
  function handleParseError(error) {
86
86
  const { fileContent } = error;
@@ -100,6 +100,15 @@ function getParsingErrorData(expression, index, message, fileContent) {
100
100
  return error;
101
101
  }
102
102
  exports.getParsingErrorData = getParsingErrorData;
103
+ function buildErrorData(message, lineNumber, fileContent, type) {
104
+ const error = new Error();
105
+ error.message = message;
106
+ error.lineNumber = lineNumber;
107
+ error.fileContent = fileContent;
108
+ error.type = type;
109
+ return error;
110
+ }
111
+ exports.buildErrorData = buildErrorData;
103
112
  function getTemplateParsedLineNumber(expression, index) {
104
113
  const splitIntoLines = expression.slice(0, index).split(/\n/);
105
114
  const line = splitIntoLines.length;
@@ -153,11 +162,25 @@ exports.handleNotFoundDynamicTemplate = handleNotFoundDynamicTemplate;
153
162
  function handleNoTemplateFilesFound(views, extension) {
154
163
  const errorType = 'Not Found Error';
155
164
  const error = new Error();
156
- error.message = `No template files found in ${views} with extension ${extension}`;
165
+ error.message = `No template files found (reading: ${views}.${extension})`;
157
166
  error.lineNumber = null;
158
167
  error.fileContent = '';
159
168
  error.type = errorType;
160
169
  return error;
161
170
  }
162
171
  exports.handleNoTemplateFilesFound = handleNoTemplateFilesFound;
172
+ function logger(level, message) {
173
+ if (!message)
174
+ return;
175
+ const color = {
176
+ debug: '\x1b[90m',
177
+ info: '\x1b[36m',
178
+ warn: '\x1b[33m',
179
+ error: '\x1b[31m',
180
+ }[level];
181
+ const reset = '\x1b[0m';
182
+ const time = new Date().toISOString();
183
+ console.log(`${color}[${time}] [${level.toUpperCase()}]${reset}`, message);
184
+ }
185
+ exports.logger = logger;
163
186
  //# sourceMappingURL=error-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../src/error-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../src/error-utils.ts"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { Tao } from './tao';
2
- export { type options } from './interfaces';
2
+ export { type Options as options } from './interfaces';
3
3
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC"}
package/interfaces.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { Store } from './store';
2
1
  export type ErrorType = 'Parse Error' | 'ReadFile Error' | 'Compilation Error' | 'Execution Error' | 'Inclusion Error' | 'Precompilation Error' | 'Template Type Error' | 'Not Found Error';
3
2
  export interface DebugData {
4
3
  compiledAnonymousFnContent: string;
@@ -31,17 +30,16 @@ export interface Tags {
31
30
  */
32
31
  closing?: string;
33
32
  }
34
- /**
35
- * HTML content or template data.
36
- */
37
- export type AstObject = string | TemplateData;
38
33
  export type TagType = 'raw' | 'execute' | 'interpolate';
39
34
  export type FileResolution = 'strict' | 'flexible';
40
35
  export interface TemplateData {
41
- type: TagType;
42
- content: string;
36
+ type: TagType | null;
37
+ value: string;
38
+ line: number;
39
+ startPos: number;
40
+ endPos: number;
43
41
  }
44
- export type ChildTemplateFunction = (data: object, helpers: Helpers) => string;
42
+ export type ChildTemplateFunction = (data: Data, helpers: Helpers) => string;
45
43
  export type TemplateFunction = (data: object, helpers: Helpers, ɵɵstart: number, ɵɵcacheHit: boolean) => string;
46
44
  export interface ErrorData {
47
45
  filename: string;
@@ -52,6 +50,9 @@ export interface ErrorData {
52
50
  isAChildError: boolean;
53
51
  errorHTML: string;
54
52
  }
53
+ export interface DataOrHelper {
54
+ [key: string]: any;
55
+ }
55
56
  export interface Data {
56
57
  [key: string]: any;
57
58
  }
@@ -67,47 +68,41 @@ export interface Metrics {
67
68
  }
68
69
  export interface LoadedChildTemplateData {
69
70
  templateLoaded: string;
70
- data: Data;
71
- helpers: Helpers;
71
+ dataOrHelpers: DataOrHelper;
72
72
  filename: string;
73
73
  }
74
74
  export interface LoadedTemplateData {
75
75
  templateLoaded: string;
76
- data: Data;
77
- helpers: Helpers;
76
+ dataOrHelpers: DataOrHelper;
78
77
  ɵɵstart: number;
79
78
  filename: string;
80
79
  ɵɵcacheHit: boolean;
81
80
  }
82
81
  export interface CompileChildExecuteData {
83
82
  fullPath: string;
84
- data: Data;
85
- helpers: Helpers;
83
+ dataOrHelpers: DataOrHelper;
86
84
  filename: string;
87
85
  }
88
86
  export interface CompileExecuteData {
89
87
  fullPath: string;
90
- data: Data;
91
- helpers: Helpers;
88
+ dataOrHelpers: DataOrHelper;
92
89
  ɵɵstart: number;
93
90
  filename: string;
94
91
  ɵɵcacheHit: boolean;
95
92
  }
96
93
  export interface ExecuteChildFunction {
97
94
  compiledContent: string;
98
- data: Data;
99
- helpers: Helpers;
95
+ dataOrHelpers: DataOrHelper;
100
96
  filename: string;
101
97
  }
102
98
  export interface ExecuteFunction {
103
99
  compiledContent: string;
104
- data: Data;
105
- helpers: Helpers;
100
+ dataOrHelpers: DataOrHelper;
106
101
  ɵɵstart: number;
107
102
  filename: string;
108
103
  ɵɵcacheHit: boolean;
109
104
  }
110
- export interface options {
105
+ export interface Options {
111
106
  /**
112
107
  * Automatically XML-escape interpolations.
113
108
  *
@@ -176,18 +171,14 @@ export interface HelperData {
176
171
  name: string;
177
172
  params: string;
178
173
  }
179
- export interface UserData {
180
- template: string;
181
- variables: VariableData[];
182
- helpers: HelperData[];
183
- lastUpdate: string;
174
+ export interface TemplateExpression {
175
+ id: number;
176
+ prefixType: TagType;
177
+ expression: string;
178
+ templateStart: number;
179
+ templateEnd: number;
184
180
  }
185
- export interface InjectedData {
186
- development: boolean;
187
- templatePaths: string[];
188
- fullPath: string;
189
- data: Data;
190
- helpers: Helpers;
191
- helpersStore: Store<HelperFunction>;
181
+ export interface TemplateQuotePosition {
182
+ line: number;
192
183
  }
193
184
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,iBAAiB,GACjB,sBAAsB,GACtB,qBAAqB,GACrB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,SAAS;IACxB,0BAA0B,EAAE,MAAM,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,KAAK;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,YAAY,CAAC;AAE9C,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,aAAa,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;AAE/E,MAAM,MAAM,gBAAgB,GAAG,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,OAAO,KAChB,MAAM,CAAC;AAEZ,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,IAAI;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;AAErD,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IAE1C;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;IACzC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CACrC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"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"}
package/metrics.d.ts CHANGED
@@ -4,13 +4,15 @@ declare function includeRenderTime(development: boolean): "" | "const ɵɵrender
4
4
  declare function includeChildren(development: boolean): "" | "const ɵɵchildren = this.childrenStore.get(this.parentTemplate) || [];";
5
5
  declare function updateChildrenStore(childrenStore: Store<string[]>, filename: string, parentTemplate: string, development: boolean): void;
6
6
  /**
7
- * Display metrics in the browser. Do not include logs if disabled or if the current template is included in another template. Make data available in the console.
7
+ * Injects the devtools floating widget when development mode is enabled.
8
+ * The widget shows a small "τ" button in the bottom-right corner; clicking it
9
+ * opens a panel with render time, cache info, and template list.
10
+ * Console logs are preserved inside the widget setup script.
8
11
  */
9
12
  declare function includeMetrics(metricsData: Metrics): string;
10
13
  /**
11
14
  * Takes into account the parent directory.
12
15
  */
13
16
  declare function getFileNameAndAbsPath(files: string[]): string[];
14
- declare function getNormalStyle(): string;
15
- export { getFileNameAndAbsPath, getNormalStyle, includeMetrics, includeRenderTime, includeChildren, updateChildrenStore, };
17
+ export { getFileNameAndAbsPath, includeMetrics, includeRenderTime, includeChildren, updateChildrenStore, };
16
18
  //# sourceMappingURL=metrics.d.ts.map
package/metrics.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,iBAAS,iBAAiB,CAAC,WAAW,EAAE,OAAO,6EAI9C;AAED,iBAAS,eAAe,CAAC,WAAW,EAAE,OAAO,gFAI5C;AAED,iBAAS,mBAAmB,CAC1B,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,OAAO,QAYrB;AAED;;GAEG;AACH,iBAAS,cAAc,CAAC,WAAW,EAAE,OAAO,UAW3C;AAoCD;;GAEG;AACH,iBAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,YAS7C;AAED,iBAAS,cAAc,WAEtB;AAED,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,iBAAS,iBAAiB,CAAC,WAAW,EAAE,OAAO,6EAI9C;AAED,iBAAS,eAAe,CAAC,WAAW,EAAE,OAAO,gFAI5C;AAED,iBAAS,mBAAmB,CAC1B,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,OAAO,QAYrB;AAuFD;;;;;GAKG;AACH,iBAAS,cAAc,CAAC,WAAW,EAAE,OAAO,UAW3C;AAED;;GAEG;AACH,iBAAS,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,YAS7C;AAED,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,mBAAmB,GACpB,CAAC"}
package/metrics.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateChildrenStore = exports.includeChildren = exports.includeRenderTime = exports.includeMetrics = exports.getNormalStyle = exports.getFileNameAndAbsPath = void 0;
4
- const const_1 = require("./const");
3
+ exports.updateChildrenStore = exports.includeChildren = exports.includeRenderTime = exports.includeMetrics = exports.getFileNameAndAbsPath = void 0;
5
4
  const error_utils_1 = require("./error-utils");
6
5
  function includeRenderTime(development) {
7
6
  if (!development)
@@ -28,39 +27,104 @@ function updateChildrenStore(childrenStore, filename, parentTemplate, developmen
28
27
  }
29
28
  exports.updateChildrenStore = updateChildrenStore;
30
29
  /**
31
- * Display metrics in the browser. Do not include logs if disabled or if the current template is included in another template. Make data available in the console.
30
+ * Builds the static HTML/CSS/JS for the floating devtools widget.
31
+ * All string literals inside use double quotes so the output is safe
32
+ * to embed in the single-quoted JS string produced by includeMetrics.
33
+ */
34
+ function buildDevtoolsWidget(filename, cacheEnabled, templates) {
35
+ const cacheStatus = cacheEnabled ? 'enabled' : 'disabled';
36
+ const tmplItems = templates.map((t, i) => `<li><b>${i + 1}</b>${t}</li>`).join('');
37
+ const css = [
38
+ '#tao-dt{position:fixed;bottom:20px;right:20px;z-index:2147483647;font-family:ui-monospace,monospace;font-size:12px}',
39
+ '#tao-dt-btn{width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#0f0f1a,#1e1e3a);border:1px solid #4a4a6a;color:#00ff99;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(0,0,0,.5);transition:transform .2s,box-shadow .2s;outline:none}',
40
+ '#tao-dt-btn:hover{transform:scale(1.1);box-shadow:0 6px 24px rgba(0,255,153,.15)}',
41
+ '#tao-dt-panel{position:absolute;bottom:52px;right:0;width:320px;background:#0d0d1a;border:1px solid #2a2a4a;border-radius:12px;overflow:hidden;box-shadow:0 8px 40px rgba(0,0,0,.7);display:none}',
42
+ '#tao-dt-panel.tao-open{display:block}',
43
+ '.tao-ph{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #1a1a3a;background:#09091a}',
44
+ '.tao-ph-t{color:#00ff99;font-weight:700;font-size:13px}',
45
+ '.tao-ph-x{background:none;border:none;color:#555;cursor:pointer;font-size:14px;padding:0;line-height:1}',
46
+ '.tao-ph-x:hover{color:#ff4d4d}',
47
+ '.tao-pb{padding:10px 14px}',
48
+ '.tao-row{display:flex;justify-content:space-between;align-items:baseline;padding:5px 0;border-bottom:1px solid #111128}',
49
+ '.tao-k{color:#555;font-size:10px;text-transform:uppercase;letter-spacing:.6px}',
50
+ '.tao-v{color:#ccc;text-align:right;word-break:break-all;max-width:185px;font-size:11px}',
51
+ '.tao-v-ok{color:#00ff99}.tao-v-warn{color:#ffa500}.tao-v-info{color:#66ccff}.tao-v-dim{color:#555}',
52
+ '.tao-sep{color:#3a3a6a;font-size:10px;text-transform:uppercase;letter-spacing:.6px;margin:10px 0 6px;font-weight:700}',
53
+ '.tao-ul{list-style:none;padding:0;margin:0;max-height:100px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#2a2a4a #0d0d1a}',
54
+ '.tao-ul::-webkit-scrollbar{width:4px}',
55
+ '.tao-ul::-webkit-scrollbar-track{background:#0d0d1a}',
56
+ '.tao-ul::-webkit-scrollbar-thumb{background:#2a2a4a;border-radius:2px}',
57
+ '.tao-ul li{color:#87cefa;padding:2px 0;font-size:11px;display:flex;gap:5px}',
58
+ '.tao-ul li b{color:#444;font-weight:normal;min-width:16px}',
59
+ ].join('');
60
+ // TAO_DT_set receives runtime values from the data-injection script tag.
61
+ // Static values (filename, cacheStatus, templates) are baked in here at compile time.
62
+ const js = [
63
+ '(function(){',
64
+ 'function getEl(id) { return document.getElementById(id); }',
65
+ 'window.TAO_DT_set = function(data) {',
66
+ 'var rtValue = parseFloat(data.rt);',
67
+ 'getEl("tao-dt-rt").textContent = data.rt;',
68
+ 'getEl("tao-dt-rt").className = "tao-v " + (rtValue < 5 ? "tao-v-ok" : "tao-v-warn");',
69
+ 'var cacheHit = data.ch;',
70
+ 'getEl("tao-dt-ch").textContent = String(cacheHit);',
71
+ 'getEl("tao-dt-ch").className = "tao-v " + (cacheHit ? "tao-v-ok" : "tao-v-dim");',
72
+ 'var childrenEl = getEl("tao-dt-ci");',
73
+ 'childrenEl.textContent = data.ci || "none";',
74
+ 'if (!data.ci) childrenEl.className = "tao-v tao-v-dim";',
75
+ 'var dkEl = getEl("tao-dt-dk");',
76
+ 'dkEl.textContent = String(data.dk);',
77
+ 'dkEl.className = "tao-v " + (data.dk > 0 ? "tao-v-info" : "tao-v-dim");',
78
+ 'var hkEl = getEl("tao-dt-hk");',
79
+ 'hkEl.textContent = String(data.hk);',
80
+ 'hkEl.className = "tao-v " + (data.hk > 0 ? "tao-v-info" : "tao-v-dim");',
81
+ '};',
82
+ 'var btn = getEl("tao-dt-btn");',
83
+ 'var panel = getEl("tao-dt-panel");',
84
+ 'btn.addEventListener("click", function(e) { e.stopPropagation(); panel.classList.toggle("tao-open"); });',
85
+ 'getEl("tao-dt-x").addEventListener("click", function() { panel.classList.remove("tao-open"); });',
86
+ 'document.addEventListener("click", function(e) { if (!e.target.closest("#tao-dt")) panel.classList.remove("tao-open"); });',
87
+ '})();',
88
+ ].join('');
89
+ return [
90
+ `<style>${css}</style>`,
91
+ `<div id="tao-dt">`,
92
+ `<div id="tao-dt-panel">`,
93
+ `<div class="tao-ph"><span class="tao-ph-t">&#9889; Tao DevTools</span><button class="tao-ph-x" id="tao-dt-x">&#x2715;</button></div>`,
94
+ `<div class="tao-pb">`,
95
+ `<div class="tao-row"><span class="tao-k">Template</span><span class="tao-v tao-v-ok">${filename}</span></div>`,
96
+ `<div class="tao-row"><span class="tao-k">Render time</span><span class="tao-v" id="tao-dt-rt"></span></div>`,
97
+ `<div class="tao-row"><span class="tao-k">Cache</span><span class="tao-v ${cacheEnabled ? 'tao-v-ok' : 'tao-v-warn'}">${cacheStatus}</span></div>`,
98
+ `<div class="tao-row"><span class="tao-k">Cache hit</span><span class="tao-v" id="tao-dt-ch"></span></div>`,
99
+ `<div class="tao-row"><span class="tao-k">Children</span><span class="tao-v tao-v-info" id="tao-dt-ci"></span></div>`,
100
+ `<div class="tao-row"><span class="tao-k">Data keys</span><span class="tao-v" id="tao-dt-dk"></span></div>`,
101
+ `<div class="tao-row"><span class="tao-k">Helpers</span><span class="tao-v" id="tao-dt-hk"></span></div>`,
102
+ `<div class="tao-sep">Mapped templates (${templates.length})</div>`,
103
+ `<ul class="tao-ul">${tmplItems}</ul>`,
104
+ `</div></div>`,
105
+ `<button id="tao-dt-btn" title="Tao DevTools">&#964;</button>`,
106
+ `</div>`,
107
+ `<script>${js}</script>`,
108
+ ].join('');
109
+ }
110
+ /**
111
+ * Injects the devtools floating widget when development mode is enabled.
112
+ * The widget shows a small "τ" button in the bottom-right corner; clicking it
113
+ * opens a panel with render time, cache info, and template list.
114
+ * Console logs are preserved inside the widget setup script.
32
115
  */
33
116
  function includeMetrics(metricsData) {
34
- const { cacheEnabled, filename: filename, files, development } = metricsData;
117
+ const { cacheEnabled, filename, files, development } = metricsData;
35
118
  if (!development)
36
- return '""';
37
- const templatesPathWithDirectory = getFileNameAndAbsPath(files);
38
- return `'<script>const data = ' + JSON.stringify(${const_1.TEMPLATE_VARNAME}) + ';console.log(${logRendered(filename)});${logChildTemplatesCount()};${logRenderTime()};console.log(${logCache(cacheEnabled)});${logCacheHit()};${logMappedTemplates(templatesPathWithDirectory)}</script>'`;
119
+ return '"";';
120
+ const templates = getFileNameAndAbsPath(files);
121
+ const widget = buildDevtoolsWidget(filename, cacheEnabled, templates);
122
+ // ' + variable + ' splices runtime values into the compiled JS string.
123
+ // The resulting expression in compiled code:
124
+ // ɵɵtp.res += '[widget]<script>TAO_DT_set({rt:"Xms",ch:bool,ci:"..."})</script>';
125
+ return `'${widget}<script>TAO_DT_set({rt:"' + ɵɵrenderDuration + 'ms",ch:' + ɵɵcacheHit + ',ci:"' + ɵɵchildren.join(", ") + '",dk:' + Object.keys(tao).length + ',hk:' + Object.keys(hp).length + '})</script>'`;
39
126
  }
40
127
  exports.includeMetrics = includeMetrics;
41
- function logMappedTemplates(templates) {
42
- const logs = templates
43
- .map((template, i) => `console.log("%c#${i + 1} %c${template}", "color: #888", "color: #87cefa");`)
44
- .join('');
45
- return `console.group("%cMAPPED TEMPLATES (${templates.length})", "color: #00ffcc; font-weight: bold");${logs}console.groupEnd();`;
46
- }
47
- function logCacheHit() {
48
- return `console.log("%c[CACHE HIT]%c ' + ɵɵcacheHit + '", "color:rgb(255, 0, 221);font-weight:bold",${getNormalStyle()})`;
49
- }
50
- function logCache(cacheEnabled) {
51
- const isEnabled = cacheEnabled ? 'enabled' : 'disabled';
52
- return `"%c[CACHE]%c ${isEnabled}", "color: #ff4d4d;font-weight:bold", ${getNormalStyle()}`;
53
- }
54
- function logRendered(template) {
55
- return `"%c[RENDERED]%c ${template}", "color: #00ff99;font-weight:bold", ${getNormalStyle()}`;
56
- }
57
- function logChildTemplatesCount() {
58
- const children = `(ɵɵchildren.length ? ɵɵchildren.join(", ") : "")`;
59
- return `console.log("%c[CHILDREN]%c ' + ${children} + '", "color: #66ccff;font-weight:bold",${getNormalStyle()})`;
60
- }
61
- function logRenderTime() {
62
- return `console.log("%c[RENDER TIME]%c ' + ɵɵrenderDuration + 'ms", "color: #ffa500;font-weight:bold",${getNormalStyle()})`;
63
- }
64
128
  /**
65
129
  * Takes into account the parent directory.
66
130
  */
@@ -73,8 +137,4 @@ function getFileNameAndAbsPath(files) {
73
137
  return templatesPathWithDirectory;
74
138
  }
75
139
  exports.getFileNameAndAbsPath = getFileNameAndAbsPath;
76
- function getNormalStyle() {
77
- return `"color: #fff"`;
78
- }
79
- exports.getNormalStyle = getNormalStyle;
80
140
  //# sourceMappingURL=metrics.js.map
package/metrics.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}