@ng-prism/core 21.9.1 → 21.10.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/dist/app/canvas/prism-canvas-bg-pill.component.d.ts +10 -0
- package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -0
- package/dist/app/canvas/prism-canvas-bg-pill.component.js +51 -0
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +5 -0
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +82 -17
- package/dist/app/canvas/prism-code-drawer.component.d.ts +2 -0
- package/dist/app/canvas/prism-code-drawer.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-code-drawer.component.js +6 -4
- package/dist/app/canvas/prism-template-popover.component.d.ts +16 -0
- package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -0
- package/dist/app/canvas/prism-template-popover.component.js +162 -0
- package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
- package/dist/app/icons/prism-icon.component.js +3 -1
- package/dist/app/renderer/prism-renderer.component.d.ts +2 -0
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +25 -15
- package/dist/app/services/prism-canvas.service.d.ts +2 -1
- package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.js +2 -1
- package/dist/app/services/prism-layout.service.d.ts +3 -0
- package/dist/app/services/prism-layout.service.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.js +13 -5
- package/dist/app/services/prism-theme.service.d.ts +1 -1
- package/dist/app/services/prism-variant-bg.service.d.ts +19 -0
- package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -0
- package/dist/app/services/prism-variant-bg.service.js +45 -0
- package/dist/app/shell/prism-shell.component.js +13 -14
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +25 -5
- package/dist/decorator/showcase.types.d.ts +10 -0
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/shared/canvas-bg.type.d.ts +3 -0
- package/dist/shared/canvas-bg.type.d.ts.map +1 -0
- package/dist/shared/canvas-bg.type.js +7 -0
- package/dist/transformer/showcase-strip.transformer.d.ts.map +1 -1
- package/dist/transformer/showcase-strip.transformer.js +49 -12
- package/package.json +1 -1
|
@@ -4,9 +4,9 @@ function isShowcaseModule(specifier) {
|
|
|
4
4
|
return SHOWCASE_MODULE_PREFIXES.some((prefix) => specifier === prefix || specifier.startsWith(prefix + '/'));
|
|
5
5
|
}
|
|
6
6
|
function isShowcaseCall(expr, names) {
|
|
7
|
-
return ts.isCallExpression(expr)
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
return (ts.isCallExpression(expr) &&
|
|
8
|
+
ts.isIdentifier(expr.expression) &&
|
|
9
|
+
names.has(expr.expression.text));
|
|
10
10
|
}
|
|
11
11
|
function isLoweredShowcaseCall(expr, names) {
|
|
12
12
|
if (!ts.isCallExpression(expr))
|
|
@@ -15,11 +15,21 @@ function isLoweredShowcaseCall(expr, names) {
|
|
|
15
15
|
}
|
|
16
16
|
function tryHandleDecorateStatement(stmt, names, factory) {
|
|
17
17
|
const expr = stmt.expression;
|
|
18
|
-
if (!ts.isBinaryExpression(expr) ||
|
|
18
|
+
if (!ts.isBinaryExpression(expr) ||
|
|
19
|
+
expr.operatorToken.kind !== ts.SyntaxKind.EqualsToken) {
|
|
19
20
|
return undefined;
|
|
20
21
|
}
|
|
21
|
-
const
|
|
22
|
-
|
|
22
|
+
const chain = [];
|
|
23
|
+
let current = expr;
|
|
24
|
+
while (ts.isBinaryExpression(current) &&
|
|
25
|
+
current.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
|
|
26
|
+
chain.push(current);
|
|
27
|
+
current = current.right;
|
|
28
|
+
}
|
|
29
|
+
const rhs = current;
|
|
30
|
+
if (!ts.isCallExpression(rhs) ||
|
|
31
|
+
!ts.isIdentifier(rhs.expression) ||
|
|
32
|
+
rhs.expression.text !== '__decorate') {
|
|
23
33
|
return undefined;
|
|
24
34
|
}
|
|
25
35
|
const args = rhs.arguments;
|
|
@@ -36,14 +46,18 @@ function tryHandleDecorateStatement(stmt, names, factory) {
|
|
|
36
46
|
}
|
|
37
47
|
const newArray = factory.updateArrayLiteralExpression(decoratorArray, remaining);
|
|
38
48
|
const newCall = factory.updateCallExpression(rhs, rhs.expression, rhs.typeArguments, [newArray, ...args.slice(1)]);
|
|
39
|
-
|
|
40
|
-
|
|
49
|
+
let newRhs = newCall;
|
|
50
|
+
for (let i = chain.length - 1; i >= 0; i--) {
|
|
51
|
+
const link = chain[i];
|
|
52
|
+
newRhs = factory.updateBinaryExpression(link, link.left, link.operatorToken, newRhs);
|
|
53
|
+
}
|
|
54
|
+
const newStmt = factory.updateExpressionStatement(stmt, newRhs);
|
|
41
55
|
return { action: 'replace', statement: newStmt };
|
|
42
56
|
}
|
|
43
57
|
function isShowcaseDecorator(d, names) {
|
|
44
|
-
return ts.isCallExpression(d.expression)
|
|
45
|
-
|
|
46
|
-
|
|
58
|
+
return (ts.isCallExpression(d.expression) &&
|
|
59
|
+
ts.isIdentifier(d.expression.expression) &&
|
|
60
|
+
names.has(d.expression.expression.text));
|
|
47
61
|
}
|
|
48
62
|
function stripNativeDecorators(node, names, factory) {
|
|
49
63
|
const decorators = ts.getDecorators(node);
|
|
@@ -114,7 +128,8 @@ export function createShowcaseStripTransformer() {
|
|
|
114
128
|
continue;
|
|
115
129
|
const decorateResult = tryHandleDecorateStatement(stmt, names, factory);
|
|
116
130
|
if (decorateResult) {
|
|
117
|
-
if (decorateResult.action === 'replace' &&
|
|
131
|
+
if (decorateResult.action === 'replace' &&
|
|
132
|
+
decorateResult.statement) {
|
|
118
133
|
filtered.push(decorateResult.statement);
|
|
119
134
|
}
|
|
120
135
|
continue;
|
|
@@ -134,6 +149,21 @@ export function createShowcaseStripTransformer() {
|
|
|
134
149
|
};
|
|
135
150
|
};
|
|
136
151
|
}
|
|
152
|
+
function findShowcaseLeak(sourceFile, names) {
|
|
153
|
+
let leak;
|
|
154
|
+
function visit(node) {
|
|
155
|
+
if (leak)
|
|
156
|
+
return;
|
|
157
|
+
if (ts.isIdentifier(node) && names.has(node.text)) {
|
|
158
|
+
const { line } = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
|
|
159
|
+
leak = { name: node.text, line: line + 1 };
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
ts.forEachChild(node, visit);
|
|
163
|
+
}
|
|
164
|
+
visit(sourceFile);
|
|
165
|
+
return leak;
|
|
166
|
+
}
|
|
137
167
|
export function stripShowcaseDecorators(source, fileName = 'file.ts') {
|
|
138
168
|
const sourceFile = ts.createSourceFile(fileName, source, ts.ScriptTarget.Latest, true);
|
|
139
169
|
const importInfo = findShowcaseImports(sourceFile);
|
|
@@ -143,5 +173,12 @@ export function stripShowcaseDecorators(source, fileName = 'file.ts') {
|
|
|
143
173
|
const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
|
|
144
174
|
const output = printer.printFile(result.transformed[0]);
|
|
145
175
|
result.dispose();
|
|
176
|
+
const audited = ts.createSourceFile(fileName, output, ts.ScriptTarget.Latest, true);
|
|
177
|
+
const leak = findShowcaseLeak(audited, importInfo.localNames);
|
|
178
|
+
if (leak) {
|
|
179
|
+
throw new Error(`[ng-prism] Showcase reference '${leak.name}' left in output after stripping at ${fileName}:${leak.line}. ` +
|
|
180
|
+
`The Showcase import was removed but a reference remains — this would cause a ReferenceError at runtime. ` +
|
|
181
|
+
`This is a transformer bug; please report the input source.`);
|
|
182
|
+
}
|
|
146
183
|
return output;
|
|
147
184
|
}
|
package/package.json
CHANGED