@ng-prism/core 21.0.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 +170 -0
- package/builders.json +14 -0
- package/dist/app/component-header/prism-component-header.component.d.ts +8 -0
- package/dist/app/component-header/prism-component-header.component.d.ts.map +1 -0
- package/dist/app/component-header/prism-component-header.component.js +77 -0
- package/dist/app/controls/boolean-control.component.d.ts +10 -0
- package/dist/app/controls/boolean-control.component.d.ts.map +1 -0
- package/dist/app/controls/boolean-control.component.js +58 -0
- package/dist/app/controls/json-control.component.d.ts +19 -0
- package/dist/app/controls/json-control.component.d.ts.map +1 -0
- package/dist/app/controls/json-control.component.js +136 -0
- package/dist/app/controls/number-control.component.d.ts +10 -0
- package/dist/app/controls/number-control.component.d.ts.map +1 -0
- package/dist/app/controls/number-control.component.js +55 -0
- package/dist/app/controls/string-control.component.d.ts +10 -0
- package/dist/app/controls/string-control.component.d.ts.map +1 -0
- package/dist/app/controls/string-control.component.js +55 -0
- package/dist/app/controls/union-control.component.d.ts +11 -0
- package/dist/app/controls/union-control.component.d.ts.map +1 -0
- package/dist/app/controls/union-control.component.js +72 -0
- package/dist/app/header/prism-header.component.d.ts +10 -0
- package/dist/app/header/prism-header.component.d.ts.map +1 -0
- package/dist/app/header/prism-header.component.js +241 -0
- package/dist/app/hmr.d.ts +4 -0
- package/dist/app/hmr.d.ts.map +1 -0
- package/dist/app/hmr.js +5 -0
- package/dist/app/index.d.ts +18 -0
- package/dist/app/index.d.ts.map +1 -0
- package/dist/app/index.js +21 -0
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts +10 -0
- package/dist/app/layout-menu/prism-layout-menu.component.d.ts.map +1 -0
- package/dist/app/layout-menu/prism-layout-menu.component.js +190 -0
- package/dist/app/page-renderer/prism-icon-page.component.d.ts +8 -0
- package/dist/app/page-renderer/prism-icon-page.component.d.ts.map +1 -0
- package/dist/app/page-renderer/prism-icon-page.component.js +42 -0
- package/dist/app/page-renderer/prism-page-renderer.component.d.ts +8 -0
- package/dist/app/page-renderer/prism-page-renderer.component.d.ts.map +1 -0
- package/dist/app/page-renderer/prism-page-renderer.component.js +72 -0
- package/dist/app/page-renderer/prism-token-page.component.d.ts +8 -0
- package/dist/app/page-renderer/prism-token-page.component.d.ts.map +1 -0
- package/dist/app/page-renderer/prism-token-page.component.js +164 -0
- package/dist/app/panels/a11y/a11y-audit.service.d.ts +17 -0
- package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-audit.service.js +71 -0
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts +3 -0
- package/dist/app/panels/a11y/a11y-core.plugin.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-core.plugin.js +8 -0
- package/dist/app/panels/a11y/a11y-dom-utils.d.ts +11 -0
- package/dist/app/panels/a11y/a11y-dom-utils.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-dom-utils.js +149 -0
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts +24 -0
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-keyboard-overlay.component.js +104 -0
- package/dist/app/panels/a11y/a11y-keyboard.component.d.ts +12 -0
- package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-keyboard.component.js +150 -0
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-keyboard.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-keyboard.service.js +71 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts +6 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-overlay-host.component.js +18 -0
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-panel-state.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-panel-state.service.js +11 -0
- package/dist/app/panels/a11y/a11y-panel.component.d.ts +14 -0
- package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-panel.component.js +183 -0
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-perspective.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-perspective.service.js +11 -0
- package/dist/app/panels/a11y/a11y-score.component.d.ts +11 -0
- package/dist/app/panels/a11y/a11y-score.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-score.component.js +72 -0
- package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts +27 -0
- package/dist/app/panels/a11y/a11y-sr-overlay.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-sr-overlay.component.js +127 -0
- package/dist/app/panels/a11y/a11y-sr.component.d.ts +19 -0
- package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-sr.component.js +257 -0
- package/dist/app/panels/a11y/a11y-sr.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-sr.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-sr.service.js +102 -0
- package/dist/app/panels/a11y/a11y-tree.component.d.ts +27 -0
- package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-tree.component.js +229 -0
- package/dist/app/panels/a11y/a11y-tree.service.d.ts +8 -0
- package/dist/app/panels/a11y/a11y-tree.service.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-tree.service.js +47 -0
- package/dist/app/panels/a11y/a11y-violations.component.d.ts +15 -0
- package/dist/app/panels/a11y/a11y-violations.component.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y-violations.component.js +457 -0
- package/dist/app/panels/a11y/a11y.types.d.ts +44 -0
- package/dist/app/panels/a11y/a11y.types.d.ts.map +1 -0
- package/dist/app/panels/a11y/a11y.types.js +1 -0
- package/dist/app/panels/builtin-panels.d.ts +3 -0
- package/dist/app/panels/builtin-panels.d.ts.map +1 -0
- package/dist/app/panels/builtin-panels.js +8 -0
- package/dist/app/panels/controls/controls-plugin.d.ts +3 -0
- package/dist/app/panels/controls/controls-plugin.d.ts.map +1 -0
- package/dist/app/panels/controls/controls-plugin.js +12 -0
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts +13 -0
- package/dist/app/panels/controls/prism-controls-panel.component.d.ts.map +1 -0
- package/dist/app/panels/controls/prism-controls-panel.component.js +178 -0
- package/dist/app/panels/events/events-plugin.d.ts +3 -0
- package/dist/app/panels/events/events-plugin.d.ts.map +1 -0
- package/dist/app/panels/events/events-plugin.js +12 -0
- package/dist/app/panels/events/prism-events-panel.component.d.ts +9 -0
- package/dist/app/panels/events/prism-events-panel.component.d.ts.map +1 -0
- package/dist/app/panels/events/prism-events-panel.component.js +83 -0
- package/dist/app/panels/events/prism-json-node.component.d.ts +22 -0
- package/dist/app/panels/events/prism-json-node.component.d.ts.map +1 -0
- package/dist/app/panels/events/prism-json-node.component.js +350 -0
- package/dist/app/panels/events/prism-json-node.utils.d.ts +2 -0
- package/dist/app/panels/events/prism-json-node.utils.d.ts.map +1 -0
- package/dist/app/panels/events/prism-json-node.utils.js +40 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts +26 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.d.ts.map +1 -0
- package/dist/app/panels/panel-host/prism-panel-host.component.js +157 -0
- package/dist/app/provide-prism.d.ts +8 -0
- package/dist/app/provide-prism.d.ts.map +1 -0
- package/dist/app/provide-prism.js +21 -0
- package/dist/app/renderer/highlight-xml.d.ts +2 -0
- package/dist/app/renderer/highlight-xml.d.ts.map +1 -0
- package/dist/app/renderer/highlight-xml.js +27 -0
- package/dist/app/renderer/prism-renderer.component.d.ts +32 -0
- package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -0
- package/dist/app/renderer/prism-renderer.component.js +346 -0
- package/dist/app/renderer/snippet-generator.d.ts +7 -0
- package/dist/app/renderer/snippet-generator.d.ts.map +1 -0
- package/dist/app/renderer/snippet-generator.js +162 -0
- package/dist/app/services/navigation-item.types.d.ts +10 -0
- package/dist/app/services/navigation-item.types.d.ts.map +1 -0
- package/dist/app/services/navigation-item.types.js +1 -0
- package/dist/app/services/prism-event-log.service.d.ts +16 -0
- package/dist/app/services/prism-event-log.service.d.ts.map +1 -0
- package/dist/app/services/prism-event-log.service.js +21 -0
- package/dist/app/services/prism-layout.service.d.ts +23 -0
- package/dist/app/services/prism-layout.service.d.ts.map +1 -0
- package/dist/app/services/prism-layout.service.js +85 -0
- package/dist/app/services/prism-manifest.service.d.ts +15 -0
- package/dist/app/services/prism-manifest.service.d.ts.map +1 -0
- package/dist/app/services/prism-manifest.service.js +53 -0
- package/dist/app/services/prism-navigation.service.d.ts +18 -0
- package/dist/app/services/prism-navigation.service.d.ts.map +1 -0
- package/dist/app/services/prism-navigation.service.js +94 -0
- package/dist/app/services/prism-panel.service.d.ts +8 -0
- package/dist/app/services/prism-panel.service.d.ts.map +1 -0
- package/dist/app/services/prism-panel.service.js +12 -0
- package/dist/app/services/prism-plugin.service.d.ts +12 -0
- package/dist/app/services/prism-plugin.service.d.ts.map +1 -0
- package/dist/app/services/prism-plugin.service.js +32 -0
- package/dist/app/services/prism-renderer.service.d.ts +18 -0
- package/dist/app/services/prism-renderer.service.d.ts.map +1 -0
- package/dist/app/services/prism-renderer.service.js +84 -0
- package/dist/app/services/prism-search.service.d.ts +13 -0
- package/dist/app/services/prism-search.service.d.ts.map +1 -0
- package/dist/app/services/prism-search.service.js +39 -0
- package/dist/app/services/prism-theme.service.d.ts +9 -0
- package/dist/app/services/prism-theme.service.d.ts.map +1 -0
- package/dist/app/services/prism-theme.service.js +23 -0
- package/dist/app/services/prism-url-state.service.d.ts +16 -0
- package/dist/app/services/prism-url-state.service.d.ts.map +1 -0
- package/dist/app/services/prism-url-state.service.js +108 -0
- package/dist/app/shell/prism-shell.component.d.ts +22 -0
- package/dist/app/shell/prism-shell.component.d.ts.map +1 -0
- package/dist/app/shell/prism-shell.component.js +283 -0
- package/dist/app/sidebar/prism-sidebar.component.d.ts +14 -0
- package/dist/app/sidebar/prism-sidebar.component.d.ts.map +1 -0
- package/dist/app/sidebar/prism-sidebar.component.js +105 -0
- package/dist/app/theme/prism-default-theme.d.ts +4 -0
- package/dist/app/theme/prism-default-theme.d.ts.map +1 -0
- package/dist/app/theme/prism-default-theme.js +57 -0
- package/dist/app/tokens/prism-tokens.d.ts +11 -0
- package/dist/app/tokens/prism-tokens.d.ts.map +1 -0
- package/dist/app/tokens/prism-tokens.js +7 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts +22 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.d.ts.map +1 -0
- package/dist/app/view-tab-bar/prism-view-panel-host.component.js +90 -0
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts +10 -0
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.d.ts.map +1 -0
- package/dist/app/view-tab-bar/prism-view-tab-bar.component.js +65 -0
- package/dist/builder/build/index.d.ts +6 -0
- package/dist/builder/build/index.d.ts.map +1 -0
- package/dist/builder/build/index.js +15 -0
- package/dist/builder/build/schema.d.ts +9 -0
- package/dist/builder/build/schema.d.ts.map +1 -0
- package/dist/builder/build/schema.js +1 -0
- package/dist/builder/config-loader/config-loader.d.ts +8 -0
- package/dist/builder/config-loader/config-loader.d.ts.map +1 -0
- package/dist/builder/config-loader/config-loader.js +33 -0
- package/dist/builder/config-loader/index.d.ts +3 -0
- package/dist/builder/config-loader/index.d.ts.map +1 -0
- package/dist/builder/config-loader/index.js +1 -0
- package/dist/builder/icon-resolver/icon-resolver.d.ts +7 -0
- package/dist/builder/icon-resolver/icon-resolver.d.ts.map +1 -0
- package/dist/builder/icon-resolver/icon-resolver.js +12 -0
- package/dist/builder/icon-resolver/index.d.ts +2 -0
- package/dist/builder/icon-resolver/index.d.ts.map +1 -0
- package/dist/builder/icon-resolver/index.js +1 -0
- package/dist/builder/manifest/host-parser.d.ts +6 -0
- package/dist/builder/manifest/host-parser.d.ts.map +1 -0
- package/dist/builder/manifest/host-parser.js +9 -0
- package/dist/builder/manifest/index.d.ts +3 -0
- package/dist/builder/manifest/index.d.ts.map +1 -0
- package/dist/builder/manifest/index.js +1 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts +9 -0
- package/dist/builder/manifest/runtime-manifest.generator.d.ts.map +1 -0
- package/dist/builder/manifest/runtime-manifest.generator.js +216 -0
- package/dist/builder/plugin-runner/index.d.ts +2 -0
- package/dist/builder/plugin-runner/index.d.ts.map +1 -0
- package/dist/builder/plugin-runner/index.js +1 -0
- package/dist/builder/plugin-runner/plugin-runner.d.ts +3 -0
- package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -0
- package/dist/builder/plugin-runner/plugin-runner.js +38 -0
- package/dist/builder/scanner/ast-utils.d.ts +20 -0
- package/dist/builder/scanner/ast-utils.d.ts.map +1 -0
- package/dist/builder/scanner/ast-utils.js +100 -0
- package/dist/builder/scanner/component.scanner.d.ts +7 -0
- package/dist/builder/scanner/component.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/component.scanner.js +113 -0
- package/dist/builder/scanner/entry-point-discovery.d.ts +6 -0
- package/dist/builder/scanner/entry-point-discovery.d.ts.map +1 -0
- package/dist/builder/scanner/entry-point-discovery.js +38 -0
- package/dist/builder/scanner/entry-point.scanner.d.ts +11 -0
- package/dist/builder/scanner/entry-point.scanner.d.ts.map +1 -0
- package/dist/builder/scanner/entry-point.scanner.js +19 -0
- package/dist/builder/scanner/index.d.ts +8 -0
- package/dist/builder/scanner/index.d.ts.map +1 -0
- package/dist/builder/scanner/index.js +6 -0
- package/dist/builder/scanner/input.extractor.d.ts +11 -0
- package/dist/builder/scanner/input.extractor.d.ts.map +1 -0
- package/dist/builder/scanner/input.extractor.js +169 -0
- package/dist/builder/scanner/manifest.generator.d.ts +6 -0
- package/dist/builder/scanner/manifest.generator.d.ts.map +1 -0
- package/dist/builder/scanner/manifest.generator.js +59 -0
- package/dist/builder/scanner/scanner.d.ts +16 -0
- package/dist/builder/scanner/scanner.d.ts.map +1 -0
- package/dist/builder/scanner/scanner.js +28 -0
- package/dist/builder/serve/index.d.ts +6 -0
- package/dist/builder/serve/index.d.ts.map +1 -0
- package/dist/builder/serve/index.js +48 -0
- package/dist/builder/serve/schema.d.ts +9 -0
- package/dist/builder/serve/schema.d.ts.map +1 -0
- package/dist/builder/serve/schema.js +1 -0
- package/dist/builder/shared/index.d.ts +3 -0
- package/dist/builder/shared/index.d.ts.map +1 -0
- package/dist/builder/shared/index.js +1 -0
- package/dist/builder/shared/prism-pipeline.d.ts +21 -0
- package/dist/builder/shared/prism-pipeline.d.ts.map +1 -0
- package/dist/builder/shared/prism-pipeline.js +95 -0
- package/dist/builder/token-scanner/index.d.ts +2 -0
- package/dist/builder/token-scanner/index.d.ts.map +1 -0
- package/dist/builder/token-scanner/index.js +1 -0
- package/dist/builder/token-scanner/token-scanner.d.ts +9 -0
- package/dist/builder/token-scanner/token-scanner.d.ts.map +1 -0
- package/dist/builder/token-scanner/token-scanner.js +95 -0
- package/dist/builder/watcher/index.d.ts +3 -0
- package/dist/builder/watcher/index.d.ts.map +1 -0
- package/dist/builder/watcher/index.js +1 -0
- package/dist/builder/watcher/prism-watcher.d.ts +29 -0
- package/dist/builder/watcher/prism-watcher.d.ts.map +1 -0
- package/dist/builder/watcher/prism-watcher.js +79 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/decorator/index.d.ts +3 -0
- package/dist/decorator/index.d.ts.map +1 -0
- package/dist/decorator/index.js +1 -0
- package/dist/decorator/showcase.decorator.d.ts +5 -0
- package/dist/decorator/showcase.decorator.d.ts.map +1 -0
- package/dist/decorator/showcase.decorator.js +7 -0
- package/dist/decorator/showcase.types.d.ts +54 -0
- package/dist/decorator/showcase.types.d.ts.map +1 -0
- package/dist/decorator/showcase.types.js +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/plugin/define-config.d.ts +4 -0
- package/dist/plugin/define-config.d.ts.map +1 -0
- package/dist/plugin/define-config.js +4 -0
- package/dist/plugin/index.d.ts +8 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +3 -0
- package/dist/plugin/page-helpers.d.ts +19 -0
- package/dist/plugin/page-helpers.d.ts.map +1 -0
- package/dist/plugin/page-helpers.js +20 -0
- package/dist/plugin/page.types.d.ts +19 -0
- package/dist/plugin/page.types.d.ts.map +1 -0
- package/dist/plugin/page.types.js +1 -0
- package/dist/plugin/plugin.types.d.ts +98 -0
- package/dist/plugin/plugin.types.d.ts.map +1 -0
- package/dist/plugin/plugin.types.js +1 -0
- package/dist/schematics/ng-add/index.d.ts +4 -0
- package/dist/schematics/ng-add/index.d.ts.map +1 -0
- package/dist/schematics/ng-add/index.js +179 -0
- package/dist/schematics/ng-add/schema.d.ts +5 -0
- package/dist/schematics/ng-add/schema.d.ts.map +1 -0
- package/dist/schematics/ng-add/schema.js +1 -0
- package/dist/test-setup-browser.d.ts +2 -0
- package/dist/test-setup-browser.d.ts.map +1 -0
- package/dist/test-setup-browser.js +4 -0
- package/package.json +73 -0
- package/schematics/collection.json +10 -0
- package/schematics/ng-add/schema.json +20 -0
- package/src/builder/build/schema.json +35 -0
- package/src/builder/serve/schema.json +36 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import type { PrismManifest } from '../../plugin/plugin.types.js';
|
|
3
|
+
export interface CreateScannerOptions {
|
|
4
|
+
entryPoint: string;
|
|
5
|
+
compilerOptions?: ts.CompilerOptions;
|
|
6
|
+
}
|
|
7
|
+
export interface Scanner {
|
|
8
|
+
/** Scan the entry point. Reuses TypeScript program state from previous scans. */
|
|
9
|
+
scan(): PrismManifest;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a stateful scanner that retains the previous ts.Program between scans.
|
|
13
|
+
* TypeScript reuses parsed SourceFile objects from the old program, making incremental scans fast.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createScanner(options: CreateScannerOptions): Scanner;
|
|
16
|
+
//# sourceMappingURL=scanner.d.ts.map
|
|
@@ -0,0 +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,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,OAAO;IACtB,iFAAiF;IACjF,IAAI,IAAI,aAAa,CAAC;CACvB;AAWD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAmBpE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
import { resolveEntryPointExports } from './entry-point.scanner.js';
|
|
3
|
+
import { scanComponents } from './component.scanner.js';
|
|
4
|
+
const DEFAULT_COMPILER_OPTIONS = {
|
|
5
|
+
target: ts.ScriptTarget.ES2022,
|
|
6
|
+
module: ts.ModuleKind.ES2022,
|
|
7
|
+
moduleResolution: ts.ModuleResolutionKind.Node10,
|
|
8
|
+
experimentalDecorators: true,
|
|
9
|
+
strict: true,
|
|
10
|
+
skipLibCheck: true,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Create a stateful scanner that retains the previous ts.Program between scans.
|
|
14
|
+
* TypeScript reuses parsed SourceFile objects from the old program, making incremental scans fast.
|
|
15
|
+
*/
|
|
16
|
+
export function createScanner(options) {
|
|
17
|
+
const compilerOptions = { ...DEFAULT_COMPILER_OPTIONS, ...options.compilerOptions };
|
|
18
|
+
let previousProgram;
|
|
19
|
+
return {
|
|
20
|
+
scan() {
|
|
21
|
+
const { program, exports } = resolveEntryPointExports(options.entryPoint, compilerOptions, previousProgram);
|
|
22
|
+
previousProgram = program;
|
|
23
|
+
const checker = program.getTypeChecker();
|
|
24
|
+
const components = scanComponents(exports, checker);
|
|
25
|
+
return { components };
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Builder } from '@angular-devkit/architect';
|
|
2
|
+
import type { json } from '@angular-devkit/core';
|
|
3
|
+
import type { ServeBuilderSchema } from './schema.js';
|
|
4
|
+
declare const builder: Builder<ServeBuilderSchema & json.JsonObject>;
|
|
5
|
+
export default builder;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/serve/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAA2C,MAAM,2BAA2B,CAAC;AACjH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA0DtD,QAAA,MAAM,OAAO,EAAE,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAyD,CAAC;AACrH,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { createBuilder } from '@angular-devkit/architect';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { existsSync } from 'fs';
|
|
4
|
+
import { runPrismPipeline, createPipelineState } from '../shared/prism-pipeline.js';
|
|
5
|
+
import { startWatcher } from '../watcher/index.js';
|
|
6
|
+
async function createServeBuilder(options, context) {
|
|
7
|
+
const pipelineOptions = {
|
|
8
|
+
entryPoint: options.entryPoint,
|
|
9
|
+
libraryImportPath: options.libraryImportPath ?? options.libraryProject ?? options.prismProject,
|
|
10
|
+
prismProject: options.prismProject,
|
|
11
|
+
configFile: options.configFile ?? 'ng-prism.config.ts',
|
|
12
|
+
};
|
|
13
|
+
const state = createPipelineState();
|
|
14
|
+
await runPrismPipeline(pipelineOptions, context, state);
|
|
15
|
+
const absoluteEntryPoint = join(context.workspaceRoot, options.entryPoint);
|
|
16
|
+
const configFilePath = join(context.workspaceRoot, pipelineOptions.configFile);
|
|
17
|
+
const absolutePrismProject = join(context.workspaceRoot, options.prismProject);
|
|
18
|
+
const watcher = startWatcher({
|
|
19
|
+
entryPoint: absoluteEntryPoint,
|
|
20
|
+
configFile: existsSync(configFilePath) ? configFilePath : undefined,
|
|
21
|
+
ignorePaths: [absolutePrismProject],
|
|
22
|
+
debounceMs: 50,
|
|
23
|
+
onRebuild: async () => {
|
|
24
|
+
await runPrismPipeline(pipelineOptions, context, state);
|
|
25
|
+
},
|
|
26
|
+
logger: {
|
|
27
|
+
info: (msg) => console.log(msg),
|
|
28
|
+
error: (msg) => console.error(msg),
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
const run = await context.scheduleTarget({ project: options.prismProject, target: 'serve', configuration: '' }, { port: options.port ?? 4400 });
|
|
32
|
+
const shutdown = () => {
|
|
33
|
+
watcher.close();
|
|
34
|
+
run.stop();
|
|
35
|
+
};
|
|
36
|
+
process.once('SIGINT', shutdown);
|
|
37
|
+
process.once('SIGTERM', shutdown);
|
|
38
|
+
return new Promise((resolve, reject) => {
|
|
39
|
+
let lastOutput;
|
|
40
|
+
run.output.subscribe({
|
|
41
|
+
next: (output) => { lastOutput = output; },
|
|
42
|
+
error: (err) => { shutdown(); reject(err); },
|
|
43
|
+
complete: () => { watcher.close(); resolve(lastOutput ?? { success: false }); },
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const builder = createBuilder(createServeBuilder);
|
|
48
|
+
export default builder;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/builder/serve/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,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;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { runPrismPipeline, createPipelineState } from './prism-pipeline.js';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BuilderContext } from '@angular-devkit/architect';
|
|
2
|
+
import { type Scanner } from '../scanner/scanner.js';
|
|
3
|
+
export interface PrismPipelineOptions {
|
|
4
|
+
entryPoint: string;
|
|
5
|
+
libraryImportPath: string;
|
|
6
|
+
prismProject: string;
|
|
7
|
+
configFile: string;
|
|
8
|
+
}
|
|
9
|
+
export interface PrismPipelineResult {
|
|
10
|
+
manifestPath: string;
|
|
11
|
+
componentCount: number;
|
|
12
|
+
pageCount: number;
|
|
13
|
+
/** True if the manifest file was actually written; false if the existing content was identical. */
|
|
14
|
+
written: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface PrismPipelineState {
|
|
17
|
+
scanners: Map<string, Scanner>;
|
|
18
|
+
}
|
|
19
|
+
export declare function createPipelineState(): PrismPipelineState;
|
|
20
|
+
export declare function runPrismPipeline(options: PrismPipelineOptions, context: BuilderContext, state: PrismPipelineState): Promise<PrismPipelineResult>;
|
|
21
|
+
//# sourceMappingURL=prism-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAGhE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAMpE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,CAExD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAmD9B"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { join } from 'path';
|
|
2
|
+
import { writeFileSync, readFileSync, mkdirSync, statSync, renameSync, existsSync, unlinkSync } from 'fs';
|
|
3
|
+
import { createScanner } from '../scanner/scanner.js';
|
|
4
|
+
import { discoverSecondaryEntryPoints } from '../scanner/entry-point-discovery.js';
|
|
5
|
+
import { loadConfig } from '../config-loader/config-loader.js';
|
|
6
|
+
import { runPluginHooks } from '../plugin-runner/plugin-runner.js';
|
|
7
|
+
import { generateRuntimeManifest } from '../manifest/runtime-manifest.generator.js';
|
|
8
|
+
export function createPipelineState() {
|
|
9
|
+
return { scanners: new Map() };
|
|
10
|
+
}
|
|
11
|
+
export async function runPrismPipeline(options, context, state) {
|
|
12
|
+
const { workspaceRoot } = context;
|
|
13
|
+
context.reportStatus('Loading ng-prism config...');
|
|
14
|
+
const config = await loadConfig({
|
|
15
|
+
workspaceRoot,
|
|
16
|
+
configFileName: options.configFile,
|
|
17
|
+
});
|
|
18
|
+
context.reportStatus('Scanning components...');
|
|
19
|
+
const scanResult = scanEntryPoints(workspaceRoot, options, state);
|
|
20
|
+
const pages = config.pages ? [...config.pages] : [];
|
|
21
|
+
context.reportStatus('Running plugin hooks...');
|
|
22
|
+
const manifest = await runPluginHooks({ ...scanResult, pages }, config.plugins ?? []);
|
|
23
|
+
context.reportStatus('Generating runtime manifest...');
|
|
24
|
+
const source = generateRuntimeManifest({
|
|
25
|
+
components: manifest.components,
|
|
26
|
+
libraryImportPath: options.libraryImportPath,
|
|
27
|
+
pages: manifest.pages,
|
|
28
|
+
});
|
|
29
|
+
const projectMeta = await context.getProjectMetadata(options.prismProject);
|
|
30
|
+
const sourceRoot = projectMeta['sourceRoot']
|
|
31
|
+
?? join('projects', options.prismProject, 'src');
|
|
32
|
+
const manifestPath = join(workspaceRoot, sourceRoot, 'prism-manifest.ts');
|
|
33
|
+
mkdirSync(join(workspaceRoot, sourceRoot), { recursive: true });
|
|
34
|
+
const written = writeManifestIfChanged(manifestPath, source);
|
|
35
|
+
const pageCount = (manifest.pages ?? []).length;
|
|
36
|
+
context.reportStatus('');
|
|
37
|
+
context.logger.info(`ng-prism: ${written ? 'Generated' : 'Verified (unchanged)'} manifest ` +
|
|
38
|
+
`with ${manifest.components.length} component(s)` +
|
|
39
|
+
(pageCount > 0 ? ` and ${pageCount} page(s)` : '') +
|
|
40
|
+
` → ${manifestPath}`);
|
|
41
|
+
return {
|
|
42
|
+
manifestPath,
|
|
43
|
+
componentCount: manifest.components.length,
|
|
44
|
+
pageCount,
|
|
45
|
+
written,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function writeManifestIfChanged(manifestPath, newContent) {
|
|
49
|
+
if (existsSync(manifestPath)) {
|
|
50
|
+
const currentContent = readFileSync(manifestPath, 'utf-8');
|
|
51
|
+
if (currentContent === newContent) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const tempPath = manifestPath + '.tmp';
|
|
56
|
+
writeFileSync(tempPath, newContent, 'utf-8');
|
|
57
|
+
if (existsSync(manifestPath)) {
|
|
58
|
+
unlinkSync(manifestPath);
|
|
59
|
+
}
|
|
60
|
+
renameSync(tempPath, manifestPath);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
function isDirectory(path) {
|
|
64
|
+
try {
|
|
65
|
+
return statSync(path).isDirectory();
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function scanEntryPoints(workspaceRoot, options, state) {
|
|
72
|
+
const absoluteEntryPoint = join(workspaceRoot, options.entryPoint);
|
|
73
|
+
if (!isDirectory(absoluteEntryPoint)) {
|
|
74
|
+
return getOrCreateScanner(state, absoluteEntryPoint).scan();
|
|
75
|
+
}
|
|
76
|
+
const entryPoints = discoverSecondaryEntryPoints(absoluteEntryPoint, options.libraryImportPath);
|
|
77
|
+
const allComponents = [];
|
|
78
|
+
for (const ep of entryPoints) {
|
|
79
|
+
const scanner = getOrCreateScanner(state, ep.entryFile);
|
|
80
|
+
const result = scanner.scan();
|
|
81
|
+
for (const comp of result.components) {
|
|
82
|
+
comp.importPath = ep.importPath;
|
|
83
|
+
allComponents.push(comp);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { components: allComponents };
|
|
87
|
+
}
|
|
88
|
+
function getOrCreateScanner(state, entryFile) {
|
|
89
|
+
let scanner = state.scanners.get(entryFile);
|
|
90
|
+
if (!scanner) {
|
|
91
|
+
scanner = createScanner({ entryPoint: entryFile });
|
|
92
|
+
state.scanners.set(entryFile, scanner);
|
|
93
|
+
}
|
|
94
|
+
return scanner;
|
|
95
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builder/token-scanner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { parseTokenFile, detectVisualization, scanTokens } from './token-scanner.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DesignTokenGroup, TokenVisualization } from '../../plugin/page.types.js';
|
|
2
|
+
export interface ScanTokensOptions {
|
|
3
|
+
patterns: string[];
|
|
4
|
+
workspaceRoot: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function detectVisualization(value: string): TokenVisualization;
|
|
7
|
+
export declare function parseTokenFile(content: string, filePath: string): DesignTokenGroup[];
|
|
8
|
+
export declare function scanTokens(options: ScanTokensOptions): DesignTokenGroup[];
|
|
9
|
+
//# sourceMappingURL=token-scanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-scanner.d.ts","sourceRoot":"","sources":["../../../src/builder/token-scanner/token-scanner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEpG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAerE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA0DpF;AAsBD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,EAAE,CAazE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { globSync } from 'glob';
|
|
3
|
+
export function detectVisualization(value) {
|
|
4
|
+
const trimmed = value.trim();
|
|
5
|
+
if (/^#([0-9a-fA-F]{3,8})$/.test(trimmed))
|
|
6
|
+
return 'color';
|
|
7
|
+
if (/^rgba?\s*\(/.test(trimmed))
|
|
8
|
+
return 'color';
|
|
9
|
+
if (/^hsla?\s*\(/.test(trimmed))
|
|
10
|
+
return 'color';
|
|
11
|
+
if (/^\d+(\.\d+)?\s*(px|rem|em|%)$/.test(trimmed))
|
|
12
|
+
return 'spacing';
|
|
13
|
+
if (/\d+\s*px\s+\d+\s*px\s+.*rgba?\s*\(/.test(trimmed))
|
|
14
|
+
return 'shadow';
|
|
15
|
+
if (/^0\s+\d/.test(trimmed) && /rgba?\s*\(/.test(trimmed))
|
|
16
|
+
return 'shadow';
|
|
17
|
+
if (/['"][^'"]+['"]/.test(trimmed) && /sans-serif|serif|monospace|system-ui/.test(trimmed))
|
|
18
|
+
return 'typography';
|
|
19
|
+
return 'raw';
|
|
20
|
+
}
|
|
21
|
+
export function parseTokenFile(content, filePath) {
|
|
22
|
+
const groups = [];
|
|
23
|
+
let current = null;
|
|
24
|
+
let nextTypeOverride = null;
|
|
25
|
+
for (const line of content.split('\n')) {
|
|
26
|
+
const trimmed = line.trim();
|
|
27
|
+
const prismMatch = trimmed.match(/^\/\/\s*@prism\s+(.+)$/);
|
|
28
|
+
if (prismMatch) {
|
|
29
|
+
current = {
|
|
30
|
+
title: prismMatch[1].trim(),
|
|
31
|
+
filePath,
|
|
32
|
+
tokens: [],
|
|
33
|
+
};
|
|
34
|
+
groups.push(current);
|
|
35
|
+
nextTypeOverride = null;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (!current)
|
|
39
|
+
continue;
|
|
40
|
+
const descMatch = trimmed.match(/^\/\/\s*@description\s+(.+)$/);
|
|
41
|
+
if (descMatch) {
|
|
42
|
+
current.description = descMatch[1].trim();
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const catMatch = trimmed.match(/^\/\/\s*@category\s+(.+)$/);
|
|
46
|
+
if (catMatch) {
|
|
47
|
+
current.category = catMatch[1].trim();
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const typeMatch = trimmed.match(/^\/\/\s*@type\s+(\w+)$/);
|
|
51
|
+
if (typeMatch) {
|
|
52
|
+
nextTypeOverride = typeMatch[1];
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const scssMatch = trimmed.match(/^(\$[\w-]+)\s*:\s*(.+?)\s*(!default\s*)?;(.*)$/);
|
|
56
|
+
if (scssMatch) {
|
|
57
|
+
const token = buildToken(scssMatch[1], scssMatch[2], scssMatch[4], nextTypeOverride);
|
|
58
|
+
current.tokens.push(token);
|
|
59
|
+
nextTypeOverride = null;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const cssMatch = trimmed.match(/^(--[\w-]+)\s*:\s*(.+?)\s*;(.*)$/);
|
|
63
|
+
if (cssMatch) {
|
|
64
|
+
const token = buildToken(cssMatch[1], cssMatch[2], cssMatch[3], nextTypeOverride);
|
|
65
|
+
current.tokens.push(token);
|
|
66
|
+
nextTypeOverride = null;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return groups;
|
|
71
|
+
}
|
|
72
|
+
function buildToken(name, value, trailingComment, typeOverride) {
|
|
73
|
+
const token = {
|
|
74
|
+
name,
|
|
75
|
+
value: value.trim(),
|
|
76
|
+
visualization: typeOverride ?? detectVisualization(value),
|
|
77
|
+
};
|
|
78
|
+
const commentMatch = trailingComment?.match(/\/\/\s*(.+)$/);
|
|
79
|
+
if (commentMatch) {
|
|
80
|
+
token.description = commentMatch[1].trim();
|
|
81
|
+
}
|
|
82
|
+
return token;
|
|
83
|
+
}
|
|
84
|
+
export function scanTokens(options) {
|
|
85
|
+
const { patterns, workspaceRoot } = options;
|
|
86
|
+
const groups = [];
|
|
87
|
+
for (const pattern of patterns) {
|
|
88
|
+
const files = globSync(pattern, { cwd: workspaceRoot, absolute: true });
|
|
89
|
+
for (const file of files) {
|
|
90
|
+
const content = readFileSync(file, 'utf-8');
|
|
91
|
+
groups.push(...parseTokenFile(content, file));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return groups;
|
|
95
|
+
}
|
|
@@ -0,0 +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,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createChangeHandler, startWatcher } from './prism-watcher.js';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface ChangeHandlerOptions {
|
|
2
|
+
onRebuild: () => Promise<void>;
|
|
3
|
+
logger: {
|
|
4
|
+
info(msg: string): void;
|
|
5
|
+
error(msg: string): void;
|
|
6
|
+
};
|
|
7
|
+
debounceMs?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ChangeHandler {
|
|
10
|
+
handleChange(filename: string | null): void;
|
|
11
|
+
dispose(): void;
|
|
12
|
+
}
|
|
13
|
+
export interface WatcherHandle {
|
|
14
|
+
close(): void;
|
|
15
|
+
}
|
|
16
|
+
export interface StartWatcherOptions {
|
|
17
|
+
entryPoint: string;
|
|
18
|
+
configFile?: string;
|
|
19
|
+
ignorePaths?: string[];
|
|
20
|
+
onRebuild: () => Promise<void>;
|
|
21
|
+
logger: {
|
|
22
|
+
info(msg: string): void;
|
|
23
|
+
error(msg: string): void;
|
|
24
|
+
};
|
|
25
|
+
debounceMs?: number;
|
|
26
|
+
}
|
|
27
|
+
export declare function createChangeHandler(options: ChangeHandlerOptions): ChangeHandler;
|
|
28
|
+
export declare function startWatcher(options: StartWatcherOptions): WatcherHandle;
|
|
29
|
+
//# sourceMappingURL=prism-watcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-watcher.d.ts","sourceRoot":"","sources":["../../../src/builder/watcher/prism-watcher.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,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;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,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;CACrB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA0ChF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,aAAa,CAkCxE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import chokidar from 'chokidar';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import { statSync } from 'fs';
|
|
4
|
+
export function createChangeHandler(options) {
|
|
5
|
+
const { onRebuild, logger, debounceMs = 300 } = options;
|
|
6
|
+
let timer = null;
|
|
7
|
+
let isRebuilding = false;
|
|
8
|
+
let disposed = false;
|
|
9
|
+
function handleChange(filename) {
|
|
10
|
+
if (disposed)
|
|
11
|
+
return;
|
|
12
|
+
if (filename && !/\.(ts|scss|css|svg)$/.test(filename))
|
|
13
|
+
return;
|
|
14
|
+
if (timer)
|
|
15
|
+
clearTimeout(timer);
|
|
16
|
+
timer = setTimeout(async () => {
|
|
17
|
+
if (disposed || isRebuilding)
|
|
18
|
+
return;
|
|
19
|
+
isRebuilding = true;
|
|
20
|
+
logger.info('ng-prism: Change detected, re-scanning...');
|
|
21
|
+
try {
|
|
22
|
+
await onRebuild();
|
|
23
|
+
if (!disposed) {
|
|
24
|
+
logger.info('ng-prism: Re-scan complete.');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
if (!disposed) {
|
|
29
|
+
logger.error(`ng-prism: Re-scan failed — ${err instanceof Error ? err.message : String(err)}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
isRebuilding = false;
|
|
34
|
+
}
|
|
35
|
+
}, debounceMs);
|
|
36
|
+
}
|
|
37
|
+
function dispose() {
|
|
38
|
+
disposed = true;
|
|
39
|
+
if (timer) {
|
|
40
|
+
clearTimeout(timer);
|
|
41
|
+
timer = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { handleChange, dispose };
|
|
45
|
+
}
|
|
46
|
+
export function startWatcher(options) {
|
|
47
|
+
const { entryPoint, configFile, ignorePaths, onRebuild, logger, debounceMs } = options;
|
|
48
|
+
const handler = createChangeHandler({ onRebuild, logger, debounceMs });
|
|
49
|
+
const isDir = (() => { try {
|
|
50
|
+
return statSync(entryPoint).isDirectory();
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
} })();
|
|
55
|
+
const watchPaths = [isDir ? entryPoint : dirname(entryPoint)];
|
|
56
|
+
if (configFile) {
|
|
57
|
+
watchPaths.push(configFile);
|
|
58
|
+
}
|
|
59
|
+
const ignorePatterns = [/(?:^|[/\\])(?:node_modules|\.git)[/\\]/];
|
|
60
|
+
if (ignorePaths) {
|
|
61
|
+
ignorePatterns.push(...ignorePaths);
|
|
62
|
+
}
|
|
63
|
+
const watcher = chokidar.watch(watchPaths, {
|
|
64
|
+
ignored: ignorePatterns,
|
|
65
|
+
ignoreInitial: true,
|
|
66
|
+
persistent: true,
|
|
67
|
+
});
|
|
68
|
+
watcher.on('change', (filePath) => handler.handleChange(filePath));
|
|
69
|
+
watcher.on('add', (filePath) => handler.handleChange(filePath));
|
|
70
|
+
watcher.on('unlink', (filePath) => handler.handleChange(filePath));
|
|
71
|
+
watcher.on('error', (err) => logger.error(`ng-prism: Watcher error — ${err instanceof Error ? err.message : String(err)}`));
|
|
72
|
+
logger.info(`ng-prism: Watching ${watchPaths.join(', ')} for changes...`);
|
|
73
|
+
return {
|
|
74
|
+
close() {
|
|
75
|
+
handler.dispose();
|
|
76
|
+
watcher.close();
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { defineConfig } from '../plugin/define-config.js';
|
|
2
|
+
export { customPage, componentPage } from '../plugin/page-helpers.js';
|
|
3
|
+
export type { ComponentPageOptions } from '../plugin/page-helpers.js';
|
|
4
|
+
export type { NgPrismConfig, NgPrismPlugin } from '../plugin/plugin.types.js';
|
|
5
|
+
export type { StyleguidePage, CustomPage, ComponentPage } from '../plugin/page.types.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorator/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Showcase } from './showcase.decorator.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import type { ShowcaseConfig } from './showcase.types.js';
|
|
3
|
+
export declare const SHOWCASE_METADATA_KEY = "ngPrism:config";
|
|
4
|
+
export declare function Showcase(config: ShowcaseConfig): ClassDecorator;
|
|
5
|
+
//# sourceMappingURL=showcase.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase.decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/showcase.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAI/D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Provider } from '@angular/core';
|
|
2
|
+
export interface DirectiveHost {
|
|
3
|
+
selector: string;
|
|
4
|
+
import: {
|
|
5
|
+
name: string;
|
|
6
|
+
from: string;
|
|
7
|
+
};
|
|
8
|
+
inputs?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface ShowcaseConfig {
|
|
11
|
+
/** Display name in the ng-prism UI */
|
|
12
|
+
title: string;
|
|
13
|
+
/** Description text — Markdown supported */
|
|
14
|
+
description?: string;
|
|
15
|
+
/** Groups the component in the sidebar */
|
|
16
|
+
category?: string;
|
|
17
|
+
/** Controls the order of this category in the sidebar (lower = higher). Categories without this sort alphabetically after ordered ones. */
|
|
18
|
+
categoryOrder?: number;
|
|
19
|
+
/** Controls the order of this component within its category (lower = higher). Components without this sort alphabetically after ordered ones. */
|
|
20
|
+
componentOrder?: number;
|
|
21
|
+
/** Predefined variants shown as tabs */
|
|
22
|
+
variants?: Variant[];
|
|
23
|
+
/** Tags for search and filtering */
|
|
24
|
+
tags?: string[];
|
|
25
|
+
/**
|
|
26
|
+
* Providers for a child injector scoped to this component.
|
|
27
|
+
* Use for components that require specific services (e.g. DialogService, OverlayService).
|
|
28
|
+
* For library-wide providers, use defineConfig({ appProviders }).
|
|
29
|
+
*/
|
|
30
|
+
providers?: Provider[];
|
|
31
|
+
/** Arbitrary metadata for plugins (e.g. { figma: 'https://...' }) */
|
|
32
|
+
meta?: Record<string, unknown>;
|
|
33
|
+
/** Host element for directive showcases. String = HTML element (e.g. '<button class="btn">'), object = Angular component. */
|
|
34
|
+
host?: string | DirectiveHost;
|
|
35
|
+
/** Title of a registered ComponentPage to render instead of the component itself. Use for complex components that need template projections or mock data. The page component can inject PrismRendererService to react to control panel changes. */
|
|
36
|
+
renderPage?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface Variant {
|
|
39
|
+
/** Tab label */
|
|
40
|
+
name: string;
|
|
41
|
+
/** @Input() values for this variant */
|
|
42
|
+
inputs?: Record<string, unknown>;
|
|
43
|
+
/**
|
|
44
|
+
* Content projected into <ng-content>.
|
|
45
|
+
* - string → projected into the default (unnamed) slot
|
|
46
|
+
* - Record<string, string> → keys are slot selectors (e.g. '[card-header]'), 'default' is the unnamed slot
|
|
47
|
+
*/
|
|
48
|
+
content?: string | Record<string, string>;
|
|
49
|
+
/** Optional description for this variant */
|
|
50
|
+
description?: string;
|
|
51
|
+
/** Arbitrary metadata for plugins (e.g. { figma: 'https://...?node-id=12-34' }) */
|
|
52
|
+
meta?: Record<string, unknown>;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=showcase.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"showcase.types.d.ts","sourceRoot":"","sources":["../../src/decorator/showcase.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2IAA2I;IAC3I,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iJAAiJ;IACjJ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,6HAA6H;IAC7H,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC9B,mPAAmP;IACnP,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AAGrC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED