@ng-prism/core 22.2.1 → 22.3.0
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 +22 -24
- package/builders.json +11 -11
- package/dist/app/canvas/canvas-bg.styles.d.ts +1 -1
- package/dist/app/canvas/canvas-bg.styles.d.ts.map +1 -1
- package/dist/app/canvas/canvas-bg.styles.js +17 -0
- package/dist/app/canvas/prism-canvas-bg-pill.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-bg-pill.component.js +3 -18
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts +1 -0
- package/dist/app/canvas/prism-canvas-rulers.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-rulers.component.js +9 -14
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts +23 -6
- package/dist/app/canvas/prism-canvas-toolbar.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-canvas-toolbar.component.js +110 -140
- package/dist/app/canvas/prism-template-popover.component.d.ts.map +1 -1
- package/dist/app/canvas/prism-template-popover.component.js +8 -49
- package/dist/app/canvas/viewport-snap.d.ts +12 -0
- package/dist/app/canvas/viewport-snap.d.ts.map +1 -0
- package/dist/app/canvas/viewport-snap.js +23 -0
- package/dist/app/component-head/head-metrics.d.ts.map +1 -1
- package/dist/app/component-head/head-metrics.js +2 -2
- package/dist/app/component-head/prism-component-head.component.d.ts +1 -1
- package/dist/app/component-head/prism-component-head.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-component-head.component.js +17 -50
- package/dist/app/component-head/prism-head-gauge.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-gauge.component.js +4 -36
- package/dist/app/component-head/prism-head-info.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-head-info.component.js +3 -36
- package/dist/app/component-head/prism-stat.component.d.ts.map +1 -1
- package/dist/app/component-head/prism-stat.component.js +3 -14
- package/dist/app/controls/boolean-control.component.d.ts.map +1 -1
- package/dist/app/controls/boolean-control.component.js +4 -12
- package/dist/app/controls/json-control.component.d.ts.map +1 -1
- package/dist/app/controls/json-control.component.js +4 -24
- package/dist/app/controls/number-control.component.d.ts.map +1 -1
- package/dist/app/controls/number-control.component.js +4 -11
- package/dist/app/controls/string-control.component.d.ts.map +1 -1
- package/dist/app/controls/string-control.component.js +4 -11
- package/dist/app/controls/union-control.component.d.ts.map +1 -1
- package/dist/app/controls/union-control.component.js +4 -16
- package/dist/app/directives/prism-resizer.directive.d.ts +24 -1
- package/dist/app/directives/prism-resizer.directive.d.ts.map +1 -1
- package/dist/app/directives/prism-resizer.directive.js +44 -7
- package/dist/app/directives/resize-value.d.ts +22 -0
- package/dist/app/directives/resize-value.d.ts.map +1 -0
- package/dist/app/directives/resize-value.js +23 -0
- package/dist/app/discovery-manifest.d.ts.map +1 -1
- package/dist/app/discovery-manifest.js +5 -7
- package/dist/app/header/prism-header-widget-host.component.d.ts.map +1 -1
- package/dist/app/header/prism-header-widget-host.component.js +4 -8
- package/dist/app/header/prism-header.component.d.ts.map +1 -1
- package/dist/app/header/prism-header.component.js +8 -77
- package/dist/app/hmr.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.d.ts.map +1 -1
- package/dist/app/icons/icon-registry.js +2 -1
- package/dist/app/icons/prism-icon.component.d.ts.map +1 -1
- package/dist/app/icons/prism-icon.component.js +5 -5
- package/dist/app/index.d.ts +3 -3
- package/dist/app/index.d.ts.map +1 -1
- package/dist/app/index.js +3 -3
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -1
- package/dist/app/layout-menu/prism-layout-menu.component.js +3 -77
- package/dist/app/overview/overview-panel.js +1 -1
- package/dist/app/overview/overview-visibility.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview-cell.component.js +10 -17
- package/dist/app/overview/prism-overview.component.d.ts.map +1 -1
- package/dist/app/overview/prism-overview.component.js +4 -12
- package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -1
- package/dist/app/page-renderer/prism-page-renderer.component.js +4 -17
- package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-audit.service.js +14 -2
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-core.plugin.js +1 -1
- package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-dom-utils.js +9 -6
- package/dist/app/panels/a11y/a11y-header-badge.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-header-badge.component.js +6 -22
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +6 -25
- package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.component.js +5 -36
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-keyboard.service.js +2 -2
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +5 -32
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-panel.component.js +7 -69
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-score.component.js +4 -31
- package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +8 -28
- package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr.component.js +5 -28
- package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-sr.service.js +4 -7
- package/dist/app/panels/a11y/a11y-summary.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-summary.js +2 -5
- package/dist/app/panels/a11y/a11y-thresholds.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-thresholds.js +1 -1
- package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-tree.component.js +9 -46
- package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-tree.service.js +3 -5
- package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -1
- package/dist/app/panels/a11y/a11y-violations.component.js +7 -58
- package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -1
- package/dist/app/panels/builtin-header-widgets.js +2 -2
- package/dist/app/panels/builtin-navigation-decorations.d.ts.map +1 -1
- package/dist/app/panels/builtin-navigation-decorations.js +2 -2
- package/dist/app/panels/builtin-panels.d.ts.map +1 -1
- package/dist/app/panels/builtin-panels.js +2 -7
- package/dist/app/panels/controls/controls-plugin.js +3 -3
- package/dist/app/panels/controls/non-editable-input-types.d.ts.map +1 -1
- package/dist/app/panels/controls/non-editable-input-types.js +1 -5
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -1
- package/dist/app/panels/controls/prism-controls-panel.component.js +5 -95
- package/dist/app/panels/events/events-plugin.js +3 -3
- package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-events-panel.component.js +5 -23
- package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -1
- package/dist/app/panels/events/prism-json-node.component.js +4 -86
- package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.d.ts.map +1 -1
- package/dist/app/panels/panel-host/panel-badge.js +2 -4
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +1 -1
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -1
- package/dist/app/panels/panel-host/prism-panel-host.component.js +12 -67
- package/dist/app/provide-prism.d.ts +1 -1
- package/dist/app/provide-prism.d.ts.map +1 -1
- package/dist/app/provide-prism.js +7 -11
- package/dist/app/renderer/known-inputs.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.d.ts.map +1 -1
- package/dist/app/renderer/overlay-resolver.js +1 -1
- package/dist/app/renderer/prism-renderer.component.d.ts +27 -2
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
- package/dist/app/renderer/prism-renderer.component.js +94 -76
- package/dist/app/renderer/projectable-content.d.ts.map +1 -1
- package/dist/app/renderer/projectable-content.js +1 -3
- package/dist/app/renderer/snippet-generator.d.ts +1 -1
- package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
- package/dist/app/renderer/snippet-generator.js +7 -22
- package/dist/app/services/navigation-item.types.d.ts +1 -1
- package/dist/app/services/navigation-item.types.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.d.ts +22 -0
- package/dist/app/services/prism-canvas.service.d.ts.map +1 -1
- package/dist/app/services/prism-canvas.service.js +49 -2
- package/dist/app/services/prism-capture.service.d.ts.map +1 -1
- package/dist/app/services/prism-capture.service.js +2 -6
- package/dist/app/services/prism-event-log.service.d.ts.map +1 -1
- package/dist/app/services/prism-event-log.service.js +1 -4
- package/dist/app/services/prism-layout.service.d.ts.map +1 -1
- package/dist/app/services/prism-layout.service.js +5 -4
- package/dist/app/services/prism-manifest.service.d.ts +1 -1
- package/dist/app/services/prism-manifest.service.d.ts.map +1 -1
- package/dist/app/services/prism-manifest.service.js +1 -1
- package/dist/app/services/prism-navigation.service.d.ts +1 -1
- package/dist/app/services/prism-navigation.service.d.ts.map +1 -1
- package/dist/app/services/prism-navigation.service.js +5 -13
- package/dist/app/services/prism-panel.service.d.ts.map +1 -1
- package/dist/app/services/prism-panel.service.js +2 -5
- package/dist/app/services/prism-persistence.service.d.ts.map +1 -1
- package/dist/app/services/prism-persistence.service.js +8 -10
- package/dist/app/services/prism-plugin.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
- package/dist/app/services/prism-renderer.service.js +5 -9
- package/dist/app/services/prism-search.service.d.ts.map +1 -1
- package/dist/app/services/prism-search.service.js +1 -2
- package/dist/app/services/prism-theme.service.d.ts.map +1 -1
- package/dist/app/services/prism-theme.service.js +6 -4
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
- package/dist/app/services/prism-url-state.service.js +3 -9
- package/dist/app/services/prism-variant-bg.service.d.ts.map +1 -1
- package/dist/app/services/prism-variant-bg.service.js +3 -5
- package/dist/app/shared/prism-metric-badge.component.d.ts.map +1 -1
- package/dist/app/shared/prism-metric-badge.component.js +4 -17
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
- package/dist/app/shell/prism-shell.component.js +20 -122
- package/dist/app/sidebar/navigation-decorations.d.ts.map +1 -1
- package/dist/app/sidebar/navigation-decorations.js +1 -1
- package/dist/app/sidebar/prism-sidebar.component.d.ts +1 -1
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -1
- package/dist/app/sidebar/prism-sidebar.component.js +19 -154
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -1
- package/dist/app/theme/prism-default-theme.js +5 -5
- package/dist/app/tokens/prism-tokens.d.ts.map +1 -1
- package/dist/app/tokens/prism-tokens.js +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.d.ts.map +1 -1
- package/dist/app/variant-ribbon/prism-variant-ribbon.component.js +4 -49
- package/dist/app/variant-ribbon/spectrum.d.ts.map +1 -1
- package/dist/app/view-tab-bar/next-view-id.d.ts.map +1 -1
- package/dist/app/view-tab-bar/next-view-id.js +1 -3
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-panel-host.component.js +5 -17
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -1
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +4 -27
- package/dist/builder/a11y/a11y-report-reader.d.ts +1 -1
- package/dist/builder/a11y/a11y-report-reader.d.ts.map +1 -1
- package/dist/builder/a11y/a11y-report-reader.js +7 -7
- package/dist/builder/build/index.d.ts.map +1 -1
- package/dist/builder/build/index.js +5 -9
- package/dist/builder/build/schema.d.ts.map +1 -1
- package/dist/builder/config-loader/config-loader.d.ts.map +1 -1
- package/dist/builder/config-loader/config-loader.js +4 -5
- package/dist/builder/manifest/host-parser.d.ts.map +1 -1
- package/dist/builder/manifest/host-parser.js +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -1
- package/dist/builder/manifest/runtime-manifest.generator.js +9 -34
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
- package/dist/builder/plugin-runner/plugin-runner.js +1 -3
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -1
- package/dist/builder/scanner/ast-utils.js +2 -8
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/component.scanner.js +15 -22
- package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point-discovery.js +3 -5
- package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -1
- package/dist/builder/scanner/entry-point.scanner.js +1 -3
- package/dist/builder/scanner/index.d.ts +1 -1
- package/dist/builder/scanner/index.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -1
- package/dist/builder/scanner/input.extractor.js +11 -28
- package/dist/builder/scanner/manifest.generator.d.ts.map +1 -1
- package/dist/builder/scanner/manifest.generator.js +2 -4
- package/dist/builder/scanner/scanner.d.ts.map +1 -1
- package/dist/builder/scanner/scanner.js +4 -4
- package/dist/builder/serve/index.d.ts.map +1 -1
- package/dist/builder/serve/index.js +8 -10
- package/dist/builder/serve/schema.d.ts.map +1 -1
- package/dist/builder/shared/index.d.ts +1 -1
- package/dist/builder/shared/index.d.ts.map +1 -1
- package/dist/builder/shared/index.js +1 -1
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -1
- package/dist/builder/shared/prism-pipeline.js +18 -25
- package/dist/builder/shared/resolve-cache-dir.d.ts.map +1 -1
- package/dist/builder/shared/resolve-cache-dir.js +1 -1
- package/dist/builder/watcher/index.d.ts +1 -1
- package/dist/builder/watcher/index.d.ts.map +1 -1
- package/dist/builder/watcher/prism-watcher.d.ts.map +1 -1
- package/dist/builder/watcher/prism-watcher.js +12 -10
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/decorator/index.d.ts +1 -1
- package/dist/decorator/index.d.ts.map +1 -1
- package/dist/decorator/showcase.decorator.d.ts.map +1 -1
- package/dist/decorator/showcase.types.d.ts.map +1 -1
- package/dist/plugin/index.d.ts +4 -4
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +2 -2
- package/dist/plugin/page-helpers.d.ts +1 -1
- package/dist/plugin/page-helpers.d.ts.map +1 -1
- package/dist/plugin/page-helpers.js +2 -2
- package/dist/plugin/page.types.d.ts.map +1 -1
- package/dist/plugin/plugin.types.d.ts +1 -1
- package/dist/plugin/plugin.types.d.ts.map +1 -1
- package/dist/schematics/migrations/v21-13-manifest-cache/index.d.ts.map +1 -1
- package/dist/schematics/migrations/v21-13-manifest-cache/index.js +4 -10
- package/dist/schematics/migrations/v22-0-cache-dir-rename/index.d.ts.map +1 -1
- package/dist/schematics/migrations/v22-0-cache-dir-rename/index.js +4 -8
- package/dist/schematics/ng-add/index.d.ts.map +1 -1
- package/dist/schematics/ng-add/index.js +122 -56
- package/dist/schematics/ng-add/schema.d.ts.map +1 -1
- package/dist/schematics/utils/config-ast.d.ts.map +1 -1
- package/dist/schematics/utils/config-ast.js +8 -15
- package/dist/schematics/utils/tsconfig-paths.d.ts.map +1 -1
- package/dist/schematics/utils/tsconfig-paths.js +1 -1
- package/dist/shared/canvas-bg.type.d.ts.map +1 -1
- package/dist/shared/canvas-bg.type.js +1 -8
- package/dist/shared/canvas-layout.type.d.ts.map +1 -1
- package/dist/shared/canvas-layout.type.js +1 -4
- package/dist/shared/variant-bg.d.ts.map +1 -1
- package/dist/shared/viewport.type.d.ts +47 -0
- package/dist/shared/viewport.type.d.ts.map +1 -0
- package/dist/shared/viewport.type.js +48 -0
- package/dist/transformer/cli.js +0 -0
- package/dist/transformer/index.d.ts +2 -2
- package/dist/transformer/index.d.ts.map +1 -1
- package/dist/transformer/index.js +2 -2
- package/dist/transformer/showcase-strip.transformer.d.ts.map +1 -1
- package/dist/transformer/showcase-strip.transformer.js +6 -15
- package/dist/transformer/strip-directory.d.ts.map +1 -1
- package/dist/transformer/strip-directory.js +2 -4
- package/package.json +4 -1
- package/schematics/collection.json +7 -7
- package/schematics/migrations.json +12 -12
- package/schematics/ng-add/schema.json +22 -22
- package/src/builder/build/schema.json +36 -36
- package/src/builder/serve/schema.json +37 -37
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/component.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"component.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/component.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AA4CrE;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,gBAAgB,EAAE,CA6ChG"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
2
|
import { CANVAS_BGS } from '../../shared/canvas-bg.type.js';
|
|
3
|
-
import { CANVAS_LAYOUTS
|
|
3
|
+
import { CANVAS_LAYOUTS } from '../../shared/canvas-layout.type.js';
|
|
4
|
+
import { evaluateExpression, findDecorator, getDecoratorArgument } from './ast-utils.js';
|
|
5
|
+
import { extractInputs, extractOutputs } from './input.extractor.js';
|
|
4
6
|
const COMPONENT_STATUSES = ['stable', 'beta', 'wip', 'deprecated'];
|
|
5
7
|
function isComponentStatus(value) {
|
|
6
|
-
return
|
|
7
|
-
COMPONENT_STATUSES.includes(value));
|
|
8
|
+
return typeof value === 'string' && COMPONENT_STATUSES.includes(value);
|
|
8
9
|
}
|
|
9
|
-
import { evaluateExpression, findDecorator, getDecoratorArgument, } from './ast-utils.js';
|
|
10
|
-
import { extractInputs, extractOutputs } from './input.extractor.js';
|
|
11
10
|
/**
|
|
12
11
|
* Backgrounds that still work but should not be reached for any more.
|
|
13
12
|
*
|
|
@@ -22,22 +21,19 @@ import { extractInputs, extractOutputs } from './input.extractor.js';
|
|
|
22
21
|
* Scheduled for removal in 23.0.0, the next Angular-aligned major.
|
|
23
22
|
*/
|
|
24
23
|
const DEPRECATED_BGS = {
|
|
25
|
-
checker: "use 'transparent' for the same look with a capture that keeps its alpha, or 'light'/'dark' for an absolute colour"
|
|
24
|
+
checker: "use 'transparent' for the same look with a capture that keeps its alpha, or 'light'/'dark' for an absolute colour"
|
|
26
25
|
};
|
|
27
26
|
function warnDeprecatedBg(bg, where) {
|
|
28
27
|
const advice = DEPRECATED_BGS[bg];
|
|
29
28
|
if (!advice)
|
|
30
29
|
return;
|
|
31
|
-
console.warn(`⚠ ng-prism: ${where} declares bg "${bg}", which is deprecated and will ` +
|
|
32
|
-
`be removed in 23.0.0 — ${advice}.`);
|
|
30
|
+
console.warn(`⚠ ng-prism: ${where} declares bg "${bg}", which is deprecated and will ` + `be removed in 23.0.0 — ${advice}.`);
|
|
33
31
|
}
|
|
34
32
|
function isCanvasBg(value) {
|
|
35
|
-
return
|
|
36
|
-
CANVAS_BGS.includes(value));
|
|
33
|
+
return typeof value === 'string' && CANVAS_BGS.includes(value);
|
|
37
34
|
}
|
|
38
35
|
function isCanvasLayout(value) {
|
|
39
|
-
return
|
|
40
|
-
CANVAS_LAYOUTS.includes(value));
|
|
36
|
+
return typeof value === 'string' && CANVAS_LAYOUTS.includes(value);
|
|
41
37
|
}
|
|
42
38
|
/**
|
|
43
39
|
* Scan exported symbols for Angular components annotated with @Showcase.
|
|
@@ -66,8 +62,7 @@ export function scanComponents(exports, checker) {
|
|
|
66
62
|
const outputs = extractOutputs(classDecl, checker);
|
|
67
63
|
const filePath = classDecl.getSourceFile().fileName;
|
|
68
64
|
if (hasDecoratorInputs(classDecl)) {
|
|
69
|
-
console.warn(`⚠ ng-prism: ${className} uses @Input() decorators which are not fully supported. ` +
|
|
70
|
-
`Migrate to input() signals for full ng-prism support.`);
|
|
65
|
+
console.warn(`⚠ ng-prism: ${className} uses @Input() decorators which are not fully supported. ` + `Migrate to input() signals for full ng-prism support.`);
|
|
71
66
|
}
|
|
72
67
|
components.push({
|
|
73
68
|
className,
|
|
@@ -75,7 +70,7 @@ export function scanComponents(exports, checker) {
|
|
|
75
70
|
showcaseConfig,
|
|
76
71
|
inputs,
|
|
77
72
|
outputs,
|
|
78
|
-
componentMeta
|
|
73
|
+
componentMeta
|
|
79
74
|
});
|
|
80
75
|
}
|
|
81
76
|
return components;
|
|
@@ -97,13 +92,12 @@ function extractShowcaseConfig(decorator, className) {
|
|
|
97
92
|
if (!raw || typeof raw !== 'object')
|
|
98
93
|
return undefined;
|
|
99
94
|
if (!('title' in raw)) {
|
|
100
|
-
console.warn(`⚠ ng-prism: ${className} has @Showcase without a "title" field — skipping. ` +
|
|
101
|
-
`Add a title so it can appear in the styleguide.`);
|
|
95
|
+
console.warn(`⚠ ng-prism: ${className} has @Showcase without a "title" field — skipping. ` + `Add a title so it can appear in the styleguide.`);
|
|
102
96
|
return undefined;
|
|
103
97
|
}
|
|
104
98
|
const obj = raw;
|
|
105
99
|
const config = {
|
|
106
|
-
title: obj['title']
|
|
100
|
+
title: obj['title']
|
|
107
101
|
};
|
|
108
102
|
if (obj['description'])
|
|
109
103
|
config.description = obj['description'];
|
|
@@ -159,8 +153,7 @@ function extractShowcaseConfig(decorator, className) {
|
|
|
159
153
|
`${CANVAS_BGS.join(', ')}. Skipping.`);
|
|
160
154
|
delete cleaned['bg'];
|
|
161
155
|
}
|
|
162
|
-
if (variant['canvasLayout'] !== undefined &&
|
|
163
|
-
!isCanvasLayout(variant['canvasLayout'])) {
|
|
156
|
+
if (variant['canvasLayout'] !== undefined && !isCanvasLayout(variant['canvasLayout'])) {
|
|
164
157
|
console.warn(`⚠ ng-prism: ${className} variant "${String(variant['name'])}" declares ` +
|
|
165
158
|
`invalid canvasLayout "${String(variant['canvasLayout'])}" — expected one of: ${CANVAS_LAYOUTS.join(', ')}. Skipping.`);
|
|
166
159
|
delete cleaned['canvasLayout'];
|
|
@@ -184,7 +177,7 @@ function extractComponentMeta(classDecl) {
|
|
|
184
177
|
return {
|
|
185
178
|
selector: obj['selector'] ?? '',
|
|
186
179
|
standalone: obj['standalone'] !== false,
|
|
187
|
-
isDirective: false
|
|
180
|
+
isDirective: false
|
|
188
181
|
};
|
|
189
182
|
}
|
|
190
183
|
const directiveDecorator = findDecorator(classDecl, 'Directive');
|
|
@@ -200,7 +193,7 @@ function extractComponentMeta(classDecl) {
|
|
|
200
193
|
return {
|
|
201
194
|
selector: obj['selector'] ?? '',
|
|
202
195
|
standalone: obj['standalone'] !== false,
|
|
203
|
-
isDirective: true
|
|
196
|
+
isDirective: true
|
|
204
197
|
};
|
|
205
198
|
}
|
|
206
199
|
return { selector: '', standalone: true, isDirective: false };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-point-discovery.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/entry-point-discovery.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;
|
|
1
|
+
{"version":3,"file":"entry-point-discovery.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/entry-point-discovery.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAKhH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readdirSync, readFileSync, statSync
|
|
2
|
-
import { join,
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
|
|
2
|
+
import { join, posix, relative } from 'path';
|
|
3
3
|
export function discoverSecondaryEntryPoints(libraryRoot, baseImportPath) {
|
|
4
4
|
const entryPoints = [];
|
|
5
5
|
findNgPackageJsons(libraryRoot, libraryRoot, baseImportPath, entryPoints);
|
|
@@ -15,9 +15,7 @@ function findNgPackageJsons(dir, libraryRoot, baseImportPath, result) {
|
|
|
15
15
|
const entryFilePath = join(dir, entryFile);
|
|
16
16
|
if (existsSync(entryFilePath)) {
|
|
17
17
|
const relDir = relative(libraryRoot, dir);
|
|
18
|
-
const importPath = relDir === ''
|
|
19
|
-
? baseImportPath
|
|
20
|
-
: posix.join(baseImportPath, relDir.split('\\').join('/'));
|
|
18
|
+
const importPath = relDir === '' ? baseImportPath : posix.join(baseImportPath, relDir.split('\\').join('/'));
|
|
21
19
|
result.push({ entryFile: entryFilePath, importPath });
|
|
22
20
|
}
|
|
23
21
|
if (!isLibraryRoot)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry-point.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/entry-point.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,WAAW,eAAe;
|
|
1
|
+
{"version":3,"file":"entry-point.scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/entry-point.scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACvD,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IACpB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACpC,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC,EAC3C,eAAe,EAAE,EAAE,CAAC,eAAe,EACnC,eAAe,CAAC,EAAE,EAAE,CAAC,OAAO,GAC7B,gBAAgB,CA4BlB"}
|
|
@@ -18,9 +18,7 @@ export function resolveEntryPointExports(entryPoints, compilerOptions, previousP
|
|
|
18
18
|
return { entryFile, importPath, exports: [] };
|
|
19
19
|
}
|
|
20
20
|
const moduleSymbol = checker.getSymbolAtLocation(sourceFile);
|
|
21
|
-
const exports = moduleSymbol
|
|
22
|
-
? checker.getExportsOfModule(moduleSymbol)
|
|
23
|
-
: [];
|
|
21
|
+
const exports = moduleSymbol ? checker.getExportsOfModule(moduleSymbol) : [];
|
|
24
22
|
return { entryFile, importPath, exports };
|
|
25
23
|
}
|
|
26
24
|
catch (err) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { createScanner } from './scanner.js';
|
|
2
2
|
export type { CreateScannerOptions, Scanner, ScanResult } from './scanner.js';
|
|
3
3
|
export { resolveEntryPointExports } from './entry-point.scanner.js';
|
|
4
|
-
export type { EntryPointInput,
|
|
4
|
+
export type { EntryPointInput, MultiEntryResult, ResolvedEntryPoint } from './entry-point.scanner.js';
|
|
5
5
|
export { scanComponents } from './component.scanner.js';
|
|
6
6
|
export { extractInputs, extractOutputs } from './input.extractor.js';
|
|
7
7
|
export { generateManifest } from './manifest.generator.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.extractor.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/input.extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"input.extractor.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/input.extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1E;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,SAAS,EAAE,CAmDlG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,GAAG,UAAU,EAAE,CA2BpG"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
import { evaluateExpression, findDecorator, getDecoratorArgument, getJsDocComment
|
|
2
|
+
import { evaluateExpression, findDecorator, getDecoratorArgument, getJsDocComment } from './ast-utils.js';
|
|
3
3
|
/**
|
|
4
4
|
* Extract all @Input(), input() and model() signal metadata from a class declaration.
|
|
5
5
|
*/
|
|
@@ -8,17 +8,13 @@ export function extractInputs(classDecl, checker) {
|
|
|
8
8
|
for (const member of classDecl.members) {
|
|
9
9
|
if (!ts.isPropertyDeclaration(member))
|
|
10
10
|
continue;
|
|
11
|
-
const name = member.name && ts.isIdentifier(member.name)
|
|
12
|
-
? member.name.text
|
|
13
|
-
: undefined;
|
|
11
|
+
const name = member.name && ts.isIdentifier(member.name) ? member.name.text : undefined;
|
|
14
12
|
if (!name)
|
|
15
13
|
continue;
|
|
16
14
|
const inputDecorator = findDecorator(member, 'Input');
|
|
17
15
|
if (inputDecorator) {
|
|
18
16
|
const required = isDecoratorInputRequired(inputDecorator);
|
|
19
|
-
const defaultValue = member.initializer
|
|
20
|
-
? evaluateExpression(member.initializer)
|
|
21
|
-
: undefined;
|
|
17
|
+
const defaultValue = member.initializer ? evaluateExpression(member.initializer) : undefined;
|
|
22
18
|
const doc = getJsDocComment(member, checker);
|
|
23
19
|
const { type, values, rawType } = resolveDecoratorInputType(member, checker);
|
|
24
20
|
inputs.push({
|
|
@@ -28,16 +24,14 @@ export function extractInputs(classDecl, checker) {
|
|
|
28
24
|
required,
|
|
29
25
|
...(values && { values }),
|
|
30
26
|
...(defaultValue !== undefined && { defaultValue }),
|
|
31
|
-
...(doc && { doc })
|
|
27
|
+
...(doc && { doc })
|
|
32
28
|
});
|
|
33
29
|
continue;
|
|
34
30
|
}
|
|
35
31
|
const signalCall = getInputSignalCall(member);
|
|
36
32
|
if (signalCall) {
|
|
37
33
|
const required = isSignalInputRequired(signalCall);
|
|
38
|
-
const defaultValue = !required && signalCall.arguments.length > 0
|
|
39
|
-
? evaluateExpression(signalCall.arguments[0])
|
|
40
|
-
: undefined;
|
|
34
|
+
const defaultValue = !required && signalCall.arguments.length > 0 ? evaluateExpression(signalCall.arguments[0]) : undefined;
|
|
41
35
|
const doc = getJsDocComment(member, checker);
|
|
42
36
|
const { type, values, rawType } = resolveSignalInputType(signalCall, checker);
|
|
43
37
|
inputs.push({
|
|
@@ -47,7 +41,7 @@ export function extractInputs(classDecl, checker) {
|
|
|
47
41
|
required,
|
|
48
42
|
...(values && { values }),
|
|
49
43
|
...(defaultValue !== undefined && { defaultValue }),
|
|
50
|
-
...(doc && { doc })
|
|
44
|
+
...(doc && { doc })
|
|
51
45
|
});
|
|
52
46
|
}
|
|
53
47
|
}
|
|
@@ -61,9 +55,7 @@ export function extractOutputs(classDecl, checker) {
|
|
|
61
55
|
for (const member of classDecl.members) {
|
|
62
56
|
if (!ts.isPropertyDeclaration(member))
|
|
63
57
|
continue;
|
|
64
|
-
const name = member.name && ts.isIdentifier(member.name)
|
|
65
|
-
? member.name.text
|
|
66
|
-
: undefined;
|
|
58
|
+
const name = member.name && ts.isIdentifier(member.name) ? member.name.text : undefined;
|
|
67
59
|
if (!name)
|
|
68
60
|
continue;
|
|
69
61
|
const outputDecorator = findDecorator(member, 'Output');
|
|
@@ -97,9 +89,7 @@ function getInputSignalCall(member) {
|
|
|
97
89
|
}
|
|
98
90
|
function isSignalInputRequired(callExpr) {
|
|
99
91
|
const expr = callExpr.expression;
|
|
100
|
-
return
|
|
101
|
-
ts.isIdentifier(expr.name) &&
|
|
102
|
-
expr.name.text === 'required');
|
|
92
|
+
return ts.isPropertyAccessExpression(expr) && ts.isIdentifier(expr.name) && expr.name.text === 'required';
|
|
103
93
|
}
|
|
104
94
|
function isOutputSignal(member) {
|
|
105
95
|
const init = member.initializer;
|
|
@@ -125,9 +115,7 @@ function isDecoratorInputRequired(decorator) {
|
|
|
125
115
|
if (!arg || !ts.isObjectLiteralExpression(arg))
|
|
126
116
|
return false;
|
|
127
117
|
for (const prop of arg.properties) {
|
|
128
|
-
if (ts.isPropertyAssignment(prop) &&
|
|
129
|
-
ts.isIdentifier(prop.name) &&
|
|
130
|
-
prop.name.text === 'required') {
|
|
118
|
+
if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'required') {
|
|
131
119
|
return prop.initializer.kind === ts.SyntaxKind.TrueKeyword;
|
|
132
120
|
}
|
|
133
121
|
}
|
|
@@ -135,19 +123,14 @@ function isDecoratorInputRequired(decorator) {
|
|
|
135
123
|
}
|
|
136
124
|
function resolveDecoratorInputType(member, checker) {
|
|
137
125
|
const tsType = checker.getTypeAtLocation(member);
|
|
138
|
-
const declaredText = member.type
|
|
139
|
-
? normalizeTypeText(member.type.getText())
|
|
140
|
-
: undefined;
|
|
126
|
+
const declaredText = member.type ? normalizeTypeText(member.type.getText()) : undefined;
|
|
141
127
|
return mapType(tsType, checker, declaredText);
|
|
142
128
|
}
|
|
143
129
|
function normalizeTypeText(text) {
|
|
144
130
|
return text.replace(/\s+/g, ' ').trim();
|
|
145
131
|
}
|
|
146
132
|
function getRawTypeLabel(tsType, checker) {
|
|
147
|
-
if (tsType.flags &
|
|
148
|
-
(ts.TypeFlags.Boolean |
|
|
149
|
-
ts.TypeFlags.BooleanLike |
|
|
150
|
-
ts.TypeFlags.BooleanLiteral)) {
|
|
133
|
+
if (tsType.flags & (ts.TypeFlags.Boolean | ts.TypeFlags.BooleanLike | ts.TypeFlags.BooleanLiteral)) {
|
|
151
134
|
return 'boolean';
|
|
152
135
|
}
|
|
153
136
|
if (tsType.isUnion()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.generator.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/manifest.generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;GAEG;AACH,wBAAgB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"manifest.generator.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/manifest.generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAyBvE"}
|
|
@@ -7,7 +7,7 @@ export function generateManifest(components) {
|
|
|
7
7
|
"import type { PrismManifest } from 'ng-prism/plugin';",
|
|
8
8
|
'',
|
|
9
9
|
'export const PRISM_MANIFEST: PrismManifest = {',
|
|
10
|
-
' components: ['
|
|
10
|
+
' components: ['
|
|
11
11
|
];
|
|
12
12
|
for (const comp of components) {
|
|
13
13
|
lines.push(' {');
|
|
@@ -50,9 +50,7 @@ function formatArray(arr, baseIndent) {
|
|
|
50
50
|
return '[]';
|
|
51
51
|
const inner = baseIndent + 2;
|
|
52
52
|
const items = arr.map((item) => {
|
|
53
|
-
const formatted = typeof item === 'object' && item !== null && !Array.isArray(item)
|
|
54
|
-
? formatObject(item, inner)
|
|
55
|
-
: json(item);
|
|
53
|
+
const formatted = typeof item === 'object' && item !== null && !Array.isArray(item) ? formatObject(item, inner) : json(item);
|
|
56
54
|
return `${indent(inner)}${formatted},`;
|
|
57
55
|
});
|
|
58
56
|
return `[\n${items.join('\n')}\n${indent(baseIndent)}]`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/scanner/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,KAAK,eAAe,EAA4B,MAAM,0BAA0B,CAAC;AAE1F,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IAC5C,eAAe,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACpB,kFAAkF;IAClF,IAAI,IAAI,UAAU,CAAC;CACtB;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CA+CpE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import ts from 'typescript';
|
|
2
|
-
import { resolveEntryPointExports, } from './entry-point.scanner.js';
|
|
3
2
|
import { scanComponents } from './component.scanner.js';
|
|
3
|
+
import { resolveEntryPointExports } from './entry-point.scanner.js';
|
|
4
4
|
const DEFAULT_COMPILER_OPTIONS = {
|
|
5
5
|
target: ts.ScriptTarget.ES2022,
|
|
6
6
|
module: ts.ModuleKind.ES2022,
|
|
@@ -14,7 +14,7 @@ const DEFAULT_COMPILER_OPTIONS = {
|
|
|
14
14
|
// Perf: we never call program.emit(); skip emit-related setup work.
|
|
15
15
|
noEmit: true,
|
|
16
16
|
// Perf: complement to skipLibCheck — also skip type-checking lib.*.d.ts files.
|
|
17
|
-
skipDefaultLibCheck: true
|
|
17
|
+
skipDefaultLibCheck: true
|
|
18
18
|
};
|
|
19
19
|
/**
|
|
20
20
|
* Create a stateful multi-entry scanner that retains the previous ts.Program between scans.
|
|
@@ -28,7 +28,7 @@ const DEFAULT_COMPILER_OPTIONS = {
|
|
|
28
28
|
export function createScanner(options) {
|
|
29
29
|
const compilerOptions = {
|
|
30
30
|
...DEFAULT_COMPILER_OPTIONS,
|
|
31
|
-
...options.compilerOptions
|
|
31
|
+
...options.compilerOptions
|
|
32
32
|
};
|
|
33
33
|
let previousProgram;
|
|
34
34
|
return {
|
|
@@ -60,6 +60,6 @@ export function createScanner(options) {
|
|
|
60
60
|
unique.push(c);
|
|
61
61
|
}
|
|
62
62
|
return { components: unique };
|
|
63
|
-
}
|
|
63
|
+
}
|
|
64
64
|
};
|
|
65
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/serve/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/serve/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAA0D,MAAM,2BAA2B,CAAC;AACjH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAIjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAsEtD,QAAA,MAAM,OAAO,EAAE,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAyD,CAAC;AAErH,eAAe,OAAO,CAAC"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
|
-
import { createBuilder, } from '@angular-devkit/architect';
|
|
2
|
-
import { join } from 'path';
|
|
3
1
|
import { existsSync } from 'fs';
|
|
4
|
-
import {
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { createBuilder } from '@angular-devkit/architect';
|
|
4
|
+
import { createPipelineState, runPrismPipeline } from '../shared/prism-pipeline.js';
|
|
5
5
|
import { resolveCacheDir } from '../shared/resolve-cache-dir.js';
|
|
6
6
|
import { startWatcher } from '../watcher/index.js';
|
|
7
7
|
async function createServeBuilder(options, context) {
|
|
8
8
|
const cacheDir = resolveCacheDir(options.cacheDir, context.workspaceRoot);
|
|
9
9
|
const pipelineOptions = {
|
|
10
10
|
entryPoint: options.entryPoint,
|
|
11
|
-
libraryImportPath: options.libraryImportPath ??
|
|
12
|
-
options.libraryProject ??
|
|
13
|
-
options.prismProject,
|
|
11
|
+
libraryImportPath: options.libraryImportPath ?? options.libraryProject ?? options.prismProject,
|
|
14
12
|
prismProject: options.prismProject,
|
|
15
13
|
configFile: options.configFile ?? 'ng-prism.config.ts',
|
|
16
|
-
cacheDir
|
|
14
|
+
cacheDir
|
|
17
15
|
};
|
|
18
16
|
const state = createPipelineState();
|
|
19
17
|
await runPrismPipeline(pipelineOptions, context, state);
|
|
@@ -30,8 +28,8 @@ async function createServeBuilder(options, context) {
|
|
|
30
28
|
},
|
|
31
29
|
logger: {
|
|
32
30
|
info: (msg) => context.logger.info(msg),
|
|
33
|
-
error: (msg) => context.logger.error(msg)
|
|
34
|
-
}
|
|
31
|
+
error: (msg) => context.logger.error(msg)
|
|
32
|
+
}
|
|
35
33
|
});
|
|
36
34
|
const run = await context.scheduleTarget({ project: options.prismProject, target: 'serve', configuration: '' }, { port: options.port ?? 4400 });
|
|
37
35
|
const shutdown = () => {
|
|
@@ -59,7 +57,7 @@ async function createServeBuilder(options, context) {
|
|
|
59
57
|
cleanupSignals();
|
|
60
58
|
watcher.close();
|
|
61
59
|
resolve(lastOutput ?? { success: false });
|
|
62
|
-
}
|
|
60
|
+
}
|
|
63
61
|
});
|
|
64
62
|
});
|
|
65
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/builder/serve/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/builder/serve/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createPipelineState, runPrismPipeline } from './prism-pipeline.js';
|
|
2
2
|
export type { PrismPipelineOptions, PrismPipelineResult, PrismPipelineState } from './prism-pipeline.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createPipelineState, runPrismPipeline } from './prism-pipeline.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-pipeline.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/prism-pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prism-pipeline.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/prism-pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAUhE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,oGAAoG;IACpG,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,CAExD;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmFtJ"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'fs';
|
|
2
|
+
import { dirname, join } from 'path';
|
|
3
3
|
import ts from 'typescript';
|
|
4
|
-
import {
|
|
5
|
-
import { discoverSecondaryEntryPoints } from '../scanner/entry-point-discovery.js';
|
|
4
|
+
import { checkA11yThresholds, DEFAULT_A11Y_REPORT_PATH, readA11yForComponents, readA11yMeta } from '../a11y/a11y-report-reader.js';
|
|
6
5
|
import { loadConfig } from '../config-loader/config-loader.js';
|
|
7
|
-
import { runPluginHooks } from '../plugin-runner/plugin-runner.js';
|
|
8
6
|
import { generateRuntimeManifest } from '../manifest/runtime-manifest.generator.js';
|
|
9
|
-
import {
|
|
7
|
+
import { runPluginHooks } from '../plugin-runner/plugin-runner.js';
|
|
8
|
+
import { discoverSecondaryEntryPoints } from '../scanner/entry-point-discovery.js';
|
|
9
|
+
import { createScanner } from '../scanner/scanner.js';
|
|
10
10
|
export function createPipelineState() {
|
|
11
11
|
return { scanner: undefined, lastEntrySetKey: undefined };
|
|
12
12
|
}
|
|
@@ -15,7 +15,7 @@ export async function runPrismPipeline(options, context, state) {
|
|
|
15
15
|
context.reportStatus('Loading ng-prism config...');
|
|
16
16
|
const config = await loadConfig({
|
|
17
17
|
workspaceRoot,
|
|
18
|
-
configFileName: options.configFile
|
|
18
|
+
configFileName: options.configFile
|
|
19
19
|
});
|
|
20
20
|
context.reportStatus('Scanning components...');
|
|
21
21
|
const scanResult = scanEntryPoints(workspaceRoot, options, state);
|
|
@@ -28,11 +28,8 @@ export async function runPrismPipeline(options, context, state) {
|
|
|
28
28
|
if (a11yMeta) {
|
|
29
29
|
const violations = checkA11yThresholds(a11yMeta);
|
|
30
30
|
if (violations.length > 0) {
|
|
31
|
-
const summary = violations
|
|
32
|
-
|
|
33
|
-
.join(', ');
|
|
34
|
-
throw new Error(`ng-prism: a11y thresholds violated — ${summary}. ` +
|
|
35
|
-
`Update components or relax thresholds via config.a11y.thresholds.`);
|
|
31
|
+
const summary = violations.map((v) => `${v.metric}: ${v.actual} (threshold ${v.threshold})`).join(', ');
|
|
32
|
+
throw new Error(`ng-prism: a11y thresholds violated — ${summary}. ` + `Update components or relax thresholds via config.a11y.thresholds.`);
|
|
36
33
|
}
|
|
37
34
|
// Read once, not once per component: the reader re-stats the file on every
|
|
38
35
|
// call even when its cache hits, so a per-component lookup scales the
|
|
@@ -48,11 +45,11 @@ export async function runPrismPipeline(options, context, state) {
|
|
|
48
45
|
...component,
|
|
49
46
|
showcaseConfig: {
|
|
50
47
|
...component.showcaseConfig,
|
|
51
|
-
meta: { ...component.showcaseConfig.meta, a11y }
|
|
52
|
-
}
|
|
48
|
+
meta: { ...component.showcaseConfig.meta, a11y }
|
|
49
|
+
}
|
|
53
50
|
};
|
|
54
51
|
}),
|
|
55
|
-
meta: { ...manifest.meta, a11y: a11yMeta }
|
|
52
|
+
meta: { ...manifest.meta, a11y: a11yMeta }
|
|
56
53
|
};
|
|
57
54
|
}
|
|
58
55
|
context.reportStatus('Generating runtime manifest...');
|
|
@@ -60,7 +57,7 @@ export async function runPrismPipeline(options, context, state) {
|
|
|
60
57
|
components: manifest.components,
|
|
61
58
|
libraryImportPath: options.libraryImportPath,
|
|
62
59
|
pages: manifest.pages,
|
|
63
|
-
meta: manifest.meta
|
|
60
|
+
meta: manifest.meta
|
|
64
61
|
});
|
|
65
62
|
const cacheRoot = options.cacheDir ?? join(workspaceRoot, 'ng-prism-cache');
|
|
66
63
|
const cacheDir = join(cacheRoot, options.prismProject);
|
|
@@ -77,7 +74,7 @@ export async function runPrismPipeline(options, context, state) {
|
|
|
77
74
|
manifestPath,
|
|
78
75
|
componentCount: manifest.components.length,
|
|
79
76
|
pageCount,
|
|
80
|
-
written
|
|
77
|
+
written
|
|
81
78
|
};
|
|
82
79
|
}
|
|
83
80
|
function writeManifestIfChanged(manifestPath, newContent) {
|
|
@@ -139,12 +136,8 @@ function resolveEntryPoints(workspaceRoot, options) {
|
|
|
139
136
|
const absoluteEntryPoint = join(workspaceRoot, options.entryPoint);
|
|
140
137
|
const compilerOptions = resolveTsconfigPaths(dirname(absoluteEntryPoint));
|
|
141
138
|
const entryIsDirectory = isDirectory(absoluteEntryPoint);
|
|
142
|
-
const libraryRoot = entryIsDirectory
|
|
143
|
-
|
|
144
|
-
: findLibraryRoot(absoluteEntryPoint);
|
|
145
|
-
const discovered = libraryRoot
|
|
146
|
-
? discoverSecondaryEntryPoints(libraryRoot, options.libraryImportPath)
|
|
147
|
-
: [];
|
|
139
|
+
const libraryRoot = entryIsDirectory ? absoluteEntryPoint : findLibraryRoot(absoluteEntryPoint);
|
|
140
|
+
const discovered = libraryRoot ? discoverSecondaryEntryPoints(libraryRoot, options.libraryImportPath) : [];
|
|
148
141
|
// Fallback to a direct file scan when:
|
|
149
142
|
// - the entry is a file and no ng-package.json was found above it, OR
|
|
150
143
|
// - the entry is a file with an ng-package.json above it but discovery found nothing
|
|
@@ -153,8 +146,8 @@ function resolveEntryPoints(workspaceRoot, options) {
|
|
|
153
146
|
? [
|
|
154
147
|
{
|
|
155
148
|
entryFile: absoluteEntryPoint,
|
|
156
|
-
importPath: options.libraryImportPath
|
|
157
|
-
}
|
|
149
|
+
importPath: options.libraryImportPath
|
|
150
|
+
}
|
|
158
151
|
]
|
|
159
152
|
: discovered;
|
|
160
153
|
return { entryPoints, compilerOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-cache-dir.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/resolve-cache-dir.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"resolve-cache-dir.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/resolve-cache-dir.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGrG"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { createChangeHandler, startWatcher } from './prism-watcher.js';
|
|
2
|
-
export type { ChangeHandler, ChangeHandlerOptions,
|
|
2
|
+
export type { ChangeHandler, ChangeHandlerOptions, StartWatcherOptions, WatcherHandle } from './prism-watcher.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/watcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/watcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prism-watcher.d.ts","sourceRoot":"","sources":["../../../src/builder/watcher/prism-watcher.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;
|
|
1
|
+
{"version":3,"file":"prism-watcher.d.ts","sourceRoot":"","sources":["../../../src/builder/watcher/prism-watcher.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC1B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE;QAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAqDhF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,CA0CxE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import chokidar from 'chokidar';
|
|
2
|
-
import { dirname } from 'path';
|
|
3
1
|
import { statSync } from 'fs';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import chokidar from 'chokidar';
|
|
4
4
|
export function createChangeHandler(options) {
|
|
5
5
|
const { onRebuild, logger, debounceMs = 300 } = options;
|
|
6
6
|
let timer = null;
|
|
@@ -57,12 +57,14 @@ export function createChangeHandler(options) {
|
|
|
57
57
|
export function startWatcher(options) {
|
|
58
58
|
const { entryPoint, configFile, ignorePaths, onRebuild, logger, debounceMs } = options;
|
|
59
59
|
const handler = createChangeHandler({ onRebuild, logger, debounceMs });
|
|
60
|
-
const isDir = (() => {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
60
|
+
const isDir = (() => {
|
|
61
|
+
try {
|
|
62
|
+
return statSync(entryPoint).isDirectory();
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
})();
|
|
66
68
|
const watchPaths = [isDir ? entryPoint : dirname(entryPoint)];
|
|
67
69
|
if (configFile) {
|
|
68
70
|
watchPaths.push(configFile);
|
|
@@ -74,7 +76,7 @@ export function startWatcher(options) {
|
|
|
74
76
|
const watcher = chokidar.watch(watchPaths, {
|
|
75
77
|
ignored: ignorePatterns,
|
|
76
78
|
ignoreInitial: true,
|
|
77
|
-
persistent: true
|
|
79
|
+
persistent: true
|
|
78
80
|
});
|
|
79
81
|
watcher.on('change', (filePath) => handler.handleChange(filePath));
|
|
80
82
|
watcher.on('add', (filePath) => handler.handleChange(filePath));
|
|
@@ -85,6 +87,6 @@ export function startWatcher(options) {
|
|
|
85
87
|
close() {
|
|
86
88
|
handler.dispose();
|
|
87
89
|
watcher.close();
|
|
88
|
-
}
|
|
90
|
+
}
|
|
89
91
|
};
|
|
90
92
|
}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { defineConfig } from '../plugin/define-config.js';
|
|
2
|
-
export {
|
|
2
|
+
export { componentPage, customPage } from '../plugin/page-helpers.js';
|
|
3
3
|
export type { ComponentPageOptions, CustomPageOptions } from '../plugin/page-helpers.js';
|
|
4
4
|
export type { NgPrismConfig, NgPrismPlugin } from '../plugin/plugin.types.js';
|
|
5
|
-
export type {
|
|
5
|
+
export type { ComponentPage, CustomPage, StyleguidePage } from '../plugin/page.types.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACzF,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
|