@ng-prism/core 21.7.2 → 21.8.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.
Files changed (53) hide show
  1. package/README.md +4 -4
  2. package/dist/app/index.d.ts +2 -2
  3. package/dist/app/index.d.ts.map +1 -1
  4. package/dist/app/index.js +4 -1
  5. package/dist/app/panels/a11y/a11y-audit.service.d.ts +2 -0
  6. package/dist/app/panels/a11y/a11y-audit.service.d.ts.map +1 -1
  7. package/dist/app/panels/a11y/a11y-audit.service.js +15 -2
  8. package/dist/app/panels/a11y/a11y-keyboard.component.d.ts +1 -2
  9. package/dist/app/panels/a11y/a11y-keyboard.component.d.ts.map +1 -1
  10. package/dist/app/panels/a11y/a11y-keyboard.component.js +4 -5
  11. package/dist/app/panels/a11y/a11y-panel.component.d.ts +2 -1
  12. package/dist/app/panels/a11y/a11y-panel.component.d.ts.map +1 -1
  13. package/dist/app/panels/a11y/a11y-panel.component.js +10 -19
  14. package/dist/app/panels/a11y/a11y-sr.component.d.ts +1 -2
  15. package/dist/app/panels/a11y/a11y-sr.component.d.ts.map +1 -1
  16. package/dist/app/panels/a11y/a11y-sr.component.js +4 -5
  17. package/dist/app/panels/a11y/a11y-tree.component.d.ts +3 -2
  18. package/dist/app/panels/a11y/a11y-tree.component.d.ts.map +1 -1
  19. package/dist/app/panels/a11y/a11y-tree.component.js +21 -9
  20. package/dist/app/renderer/prism-renderer.component.d.ts.map +1 -1
  21. package/dist/app/renderer/prism-renderer.component.js +8 -5
  22. package/dist/app/renderer/snippet-generator.d.ts.map +1 -1
  23. package/dist/app/renderer/snippet-generator.js +6 -3
  24. package/dist/app/services/prism-persistence.service.d.ts +20 -0
  25. package/dist/app/services/prism-persistence.service.d.ts.map +1 -0
  26. package/dist/app/services/prism-persistence.service.js +139 -0
  27. package/dist/app/services/prism-renderer.service.d.ts.map +1 -1
  28. package/dist/app/services/prism-renderer.service.js +8 -2
  29. package/dist/app/services/prism-url-state.service.d.ts.map +1 -1
  30. package/dist/app/services/prism-url-state.service.js +12 -2
  31. package/dist/app/shell/prism-shell.component.d.ts +1 -0
  32. package/dist/app/shell/prism-shell.component.d.ts.map +1 -1
  33. package/dist/app/shell/prism-shell.component.js +4 -1
  34. package/dist/builder/config-loader/config-loader.d.ts.map +1 -1
  35. package/dist/builder/config-loader/config-loader.js +9 -3
  36. package/dist/builder/plugin-runner/plugin-runner.d.ts.map +1 -1
  37. package/dist/builder/plugin-runner/plugin-runner.js +40 -14
  38. package/dist/builder/scanner/component.scanner.js +9 -4
  39. package/dist/builder/scanner/entry-point-discovery.js +24 -15
  40. package/dist/builder/serve/index.d.ts.map +1 -1
  41. package/dist/builder/serve/index.js +8 -4
  42. package/dist/builder/shared/prism-pipeline.js +11 -3
  43. package/dist/builder/watcher/prism-watcher.d.ts.map +1 -1
  44. package/dist/builder/watcher/prism-watcher.js +31 -20
  45. package/dist/config/index.d.ts +1 -1
  46. package/dist/config/index.d.ts.map +1 -1
  47. package/dist/plugin/define-config.d.ts.map +1 -1
  48. package/dist/plugin/define-config.js +20 -0
  49. package/dist/plugin/plugin.types.d.ts +2 -0
  50. package/dist/plugin/plugin.types.d.ts.map +1 -1
  51. package/dist/schematics/ng-add/index.d.ts.map +1 -1
  52. package/dist/schematics/ng-add/index.js +79 -59
  53. package/package.json +1 -1
@@ -1,4 +1,24 @@
1
1
  /** Identity helper for TypeScript type safety on ng-prism.config.ts */
2
2
  export function defineConfig(config) {
3
+ warnOnDuplicatePluginNames(config);
3
4
  return config;
4
5
  }
6
+ function warnOnDuplicatePluginNames(config) {
7
+ if (!config.plugins?.length)
8
+ return;
9
+ const seen = new Set();
10
+ const duplicates = new Set();
11
+ for (const plugin of config.plugins) {
12
+ if (!plugin.name)
13
+ continue;
14
+ if (seen.has(plugin.name)) {
15
+ duplicates.add(plugin.name);
16
+ }
17
+ else {
18
+ seen.add(plugin.name);
19
+ }
20
+ }
21
+ for (const name of duplicates) {
22
+ console.warn(`⚠ ng-prism: plugin "${name}" is registered more than once — later hooks may overwrite earlier ones.`);
23
+ }
24
+ }
@@ -104,6 +104,8 @@ export interface NgPrismConfig {
104
104
  appComponent?: Type<unknown>;
105
105
  /** When false, disables URL state sync (default: true). */
106
106
  urlState?: boolean;
107
+ /** When false, disables sessionStorage state persistence (default: true). */
108
+ persistState?: boolean;
107
109
  buildInfo?: {
108
110
  version?: string;
109
111
  gitHash?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.types.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.types.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schematics/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,EAIV,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA6RtD,wBAAgB,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAUvD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schematics/ng-add/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,EAIV,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA6TtD,wBAAgB,KAAK,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAUvD"}
@@ -1,5 +1,5 @@
1
1
  import { chain, SchematicsException, } from '@angular-devkit/schematics';
2
- import { parse as parseJsonc } from 'jsonc-parser';
2
+ import { parse as parseJsonc, modify as modifyJsonc, applyEdits as applyJsoncEdits } from 'jsonc-parser';
3
3
  function readWorkspace(tree) {
4
4
  const buffer = tree.read('angular.json');
5
5
  if (!buffer) {
@@ -22,7 +22,7 @@ function addPrismAppProject(options) {
22
22
  const prismSrc = `${prismRoot}/src`;
23
23
  const mainTs = [
24
24
  "import { bootstrapApplication } from '@angular/platform-browser';",
25
- "import { PrismShellComponent, providePrism } from 'ng-prism';",
25
+ "import { PrismShellComponent, providePrism } from '@ng-prism/core';",
26
26
  "import { PRISM_RUNTIME_MANIFEST } from './prism-manifest';",
27
27
  "import config from 'ng-prism.config';",
28
28
  '',
@@ -67,37 +67,39 @@ function addPrismAppProject(options) {
67
67
  tree.create(tsconfigAppPath, JSON.stringify(tsconfigApp, null, 2) + '\n');
68
68
  }
69
69
  const port = options.port ?? 4400;
70
- workspace.projects[prismProjectName] = {
71
- projectType: 'application',
72
- root: prismRoot,
73
- sourceRoot: prismSrc,
74
- architect: {
75
- build: {
76
- builder: '@angular-devkit/build-angular:application',
77
- options: {
78
- outputPath: {
79
- base: `dist/${prismProjectName}`,
80
- browser: '',
70
+ if (!workspace.projects[prismProjectName]) {
71
+ workspace.projects[prismProjectName] = {
72
+ projectType: 'application',
73
+ root: prismRoot,
74
+ sourceRoot: prismSrc,
75
+ architect: {
76
+ build: {
77
+ builder: '@angular-devkit/build-angular:application',
78
+ options: {
79
+ outputPath: {
80
+ base: `dist/${prismProjectName}`,
81
+ browser: '',
82
+ },
83
+ index: `${prismSrc}/index.html`,
84
+ browser: `${prismSrc}/main.ts`,
85
+ tsConfig: `${prismRoot}/tsconfig.app.json`,
86
+ styles: ['node_modules/highlight.js/styles/base16/solarized-dark.min.css'],
87
+ polyfills: ['zone.js'],
88
+ allowedCommonJsDependencies: ['highlight.js'],
89
+ preserveSymlinks: true,
81
90
  },
82
- index: `${prismSrc}/index.html`,
83
- browser: `${prismSrc}/main.ts`,
84
- tsConfig: `${prismRoot}/tsconfig.app.json`,
85
- styles: ['node_modules/highlight.js/styles/base16/solarized-dark.min.css'],
86
- polyfills: ['zone.js'],
87
- allowedCommonJsDependencies: ['highlight.js'],
88
- preserveSymlinks: true,
89
91
  },
90
- },
91
- serve: {
92
- builder: '@angular-devkit/build-angular:dev-server',
93
- options: {
94
- buildTarget: `${prismProjectName}:build`,
95
- port,
92
+ serve: {
93
+ builder: '@angular-devkit/build-angular:dev-server',
94
+ options: {
95
+ buildTarget: `${prismProjectName}:build`,
96
+ port,
97
+ },
96
98
  },
97
99
  },
98
- },
99
- };
100
- writeWorkspace(tree, workspace);
100
+ };
101
+ writeWorkspace(tree, workspace);
102
+ }
101
103
  return tree;
102
104
  };
103
105
  }
@@ -112,25 +114,34 @@ function addBuilderTargets(options) {
112
114
  if (!project.architect) {
113
115
  project.architect = {};
114
116
  }
115
- project.architect['prism'] = {
116
- builder: 'ng-prism:serve',
117
- options: {
118
- entryPoint,
119
- prismProject: prismProjectName,
120
- libraryProject: options.project,
121
- port,
122
- },
123
- };
124
- project.architect['prism-build'] = {
125
- builder: 'ng-prism:build',
126
- options: {
127
- entryPoint,
128
- prismProject: prismProjectName,
129
- libraryProject: options.project,
130
- outputPath: `dist/${prismProjectName}`,
131
- },
132
- };
133
- writeWorkspace(tree, workspace);
117
+ let changed = false;
118
+ if (!project.architect['prism']) {
119
+ project.architect['prism'] = {
120
+ builder: '@ng-prism/core:serve',
121
+ options: {
122
+ entryPoint,
123
+ prismProject: prismProjectName,
124
+ libraryProject: options.project,
125
+ port,
126
+ },
127
+ };
128
+ changed = true;
129
+ }
130
+ if (!project.architect['prism-build']) {
131
+ project.architect['prism-build'] = {
132
+ builder: '@ng-prism/core:build',
133
+ options: {
134
+ entryPoint,
135
+ prismProject: prismProjectName,
136
+ libraryProject: options.project,
137
+ outputPath: `dist/${prismProjectName}`,
138
+ },
139
+ };
140
+ changed = true;
141
+ }
142
+ if (changed) {
143
+ writeWorkspace(tree, workspace);
144
+ }
134
145
  return tree;
135
146
  };
136
147
  }
@@ -141,19 +152,28 @@ function addTsConfigPaths(options) {
141
152
  if (!buffer) {
142
153
  return tree;
143
154
  }
144
- const tsConfig = parseJsonc(buffer.toString('utf-8'));
145
- if (!tsConfig.compilerOptions) {
146
- tsConfig.compilerOptions = {};
147
- }
148
- if (!tsConfig.compilerOptions.paths) {
149
- tsConfig.compilerOptions.paths = {};
150
- }
155
+ const sourceText = buffer.toString('utf-8');
156
+ const tsConfig = parseJsonc(sourceText);
157
+ const existingPaths = tsConfig.compilerOptions?.paths ?? {};
151
158
  const workspace = readWorkspace(tree);
152
159
  const project = workspace.projects[options.project];
153
160
  const sourceRoot = project.sourceRoot ?? `${project.root}/src`;
154
- tsConfig.compilerOptions.paths['ng-prism.config'] = ['ng-prism.config.ts'];
155
- tsConfig.compilerOptions.paths[options.project] = [`${sourceRoot}/public-api.ts`];
156
- tree.overwrite(tsConfigPath, JSON.stringify(tsConfig, null, 2) + '\n');
161
+ const formattingOptions = { tabSize: 2, insertSpaces: true };
162
+ let nextText = sourceText;
163
+ let changed = false;
164
+ if (!existingPaths['ng-prism.config']) {
165
+ const edits = modifyJsonc(nextText, ['compilerOptions', 'paths', 'ng-prism.config'], ['ng-prism.config.ts'], { formattingOptions });
166
+ nextText = applyJsoncEdits(nextText, edits);
167
+ changed = true;
168
+ }
169
+ if (!existingPaths[options.project]) {
170
+ const edits = modifyJsonc(nextText, ['compilerOptions', 'paths', options.project], [`${sourceRoot}/public-api.ts`], { formattingOptions });
171
+ nextText = applyJsoncEdits(nextText, edits);
172
+ changed = true;
173
+ }
174
+ if (changed) {
175
+ tree.overwrite(tsConfigPath, nextText);
176
+ }
157
177
  return tree;
158
178
  };
159
179
  }
@@ -164,7 +184,7 @@ function createConfigFile() {
164
184
  return tree;
165
185
  }
166
186
  const content = [
167
- "import { defineConfig } from 'ng-prism/config';",
187
+ "import { defineConfig } from '@ng-prism/core/config';",
168
188
  '',
169
189
  'export default defineConfig({ plugins: [] });',
170
190
  '',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-prism/core",
3
- "version": "21.7.2",
3
+ "version": "21.8.0",
4
4
  "description": "ng-prism — the Angular-native Storybook alternative. Lightweight component showcase with @Showcase decorator, no story files needed.",
5
5
  "keywords": [
6
6
  "ng-prism",