ng-packagr 19.2.0 → 19.2.2

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.
@@ -113,7 +113,7 @@ const watchTransformFactory = (project, options, analyseSourcesTransform, entryP
113
113
  const { onFileChange, watcher } = (0, file_watcher_1.createFileWatch)([], [data.dest + '/'], options.poll);
114
114
  graph.watcher = watcher;
115
115
  return onFileChange.pipe((0, rxjs_1.tap)(fileChange => {
116
- var _a;
116
+ var _a, _b;
117
117
  const { filePath } = fileChange;
118
118
  const { sourcesFileCache } = cache;
119
119
  const cachedSourceFile = sourcesFileCache.get(filePath);
@@ -140,7 +140,7 @@ const watchTransformFactory = (project, options, analyseSourcesTransform, entryP
140
140
  }
141
141
  }
142
142
  for (const entryPoint of graph.filter(nodes_1.isEntryPoint)) {
143
- let isDirty = !!((_a = entryPoint.cache.stylesheetProcessor.invalidate(potentialStylesResources)) === null || _a === void 0 ? void 0 : _a.length);
143
+ let isDirty = !!((_b = (_a = entryPoint.cache.stylesheetProcessor) === null || _a === void 0 ? void 0 : _a.invalidate(potentialStylesResources)) === null || _b === void 0 ? void 0 : _b.length);
144
144
  isDirty || (isDirty = allNodesToClean.some(dependent => entryPoint.dependents.has(dependent)));
145
145
  if (isDirty) {
146
146
  entryPoint.state = node_1.STATE_DIRTY;
@@ -1 +1 @@
1
- {"version":3,"file":"package.transform.js","sourceRoot":"","sources":["../../../src/lib/ng-package/package.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import { DepGraph } from 'dependency-graph';\nimport {\n NEVER,\n Observable,\n catchError,\n concatMap,\n debounceTime,\n defaultIfEmpty,\n filter,\n finalize,\n from,\n map,\n of as observableOf,\n pipe,\n startWith,\n switchMap,\n takeLast,\n tap,\n} from 'rxjs';\nimport { createFileWatch } from '../file-system/file-watcher';\nimport { BuildGraph } from '../graph/build-graph';\nimport { STATE_DIRTY, STATE_DONE, STATE_IN_PROGRESS } from '../graph/node';\nimport { Transform } from '../graph/transform';\nimport { colors } from '../utils/color';\nimport { rmdir } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { discoverPackages } from './discover-packages';\nimport {\n EntryPointNode,\n PackageNode,\n byEntryPoint,\n fileUrl,\n fileUrlPath,\n isEntryPoint,\n isFileUrl,\n isPackage,\n ngUrl,\n} from './nodes';\nimport { NgPackagrOptions } from './options.di';\n\n/**\n * A transformation for building an npm package:\n *\n * - discoverPackages\n * - options\n * - initTsConfig\n * - analyzeTsSources (thereby extracting template and stylesheet files)\n * - for each entry point\n * - run the entryPontTransform\n *\n * @param project Project token, reference to `ng-package.json`\n * @param options ng-packagr options\n * @param initTsConfigTransform Transformation initializing the tsconfig of each entry point.\n * @param analyseSourcesTransform Transformation analyzing the typescript source files of each entry point.\n * @param entryPointTransform Transformation for asset rendering and compilation of a single entry point.\n */\nexport const packageTransformFactory =\n (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n ) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n log.info(`Building Angular Package`);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);\n\n const pkgUri = ngUrl(project);\n const ngPkg = new PackageNode(pkgUri);\n\n return source$.pipe(\n // Discover packages and entry points\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(async graph => {\n ngPkg.data = await discoverPackages({ project });\n\n graph.put(ngPkg);\n const { dest, deleteDestPath } = ngPkg.data;\n\n if (deleteDestPath) {\n try {\n await rmdir(dest, { recursive: true });\n } catch {}\n }\n\n const entryPoints = [ngPkg.data.primary, ...ngPkg.data.secondaries].map(entryPoint => {\n const { destinationFiles, moduleId } = entryPoint;\n const node = new EntryPointNode(\n ngUrl(moduleId),\n ngPkg.cache.sourcesFileCache,\n ngPkg.cache.moduleResolutionCache,\n );\n node.data = { entryPoint, destinationFiles };\n node.state = 'dirty';\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n // Add entry points to graph\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform,\n finalize(() => {\n for (const node of ngPkg.dependents) {\n if (node instanceof EntryPointNode) {\n node.cache.stylesheetProcessor?.destroy();\n }\n }\n }),\n );\n };\n\nconst watchTransformFactory =\n (project: string, options: NgPackagrOptions, analyseSourcesTransform: Transform, entryPointTransform: Transform) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const CompleteWaitingForFileChange = '\\nCompilation complete. Watching for file changes...';\n const FileChangeDetected = '\\nFile change detected. Starting incremental compilation...';\n const FailedWaitingForFileChange = '\\nCompilation failed. Watching for file changes...';\n\n return source$.pipe(\n switchMap(graph => {\n const { data, cache } = graph.find(isPackage);\n const { onFileChange, watcher } = createFileWatch([], [data.dest + '/'], options.poll);\n graph.watcher = watcher;\n\n return onFileChange.pipe(\n tap(fileChange => {\n const { filePath } = fileChange;\n const { sourcesFileCache } = cache;\n const cachedSourceFile = sourcesFileCache.get(filePath);\n const { declarationFileName } = cachedSourceFile || {};\n const uriToClean = [filePath, declarationFileName].map(x => fileUrl(ensureUnixPath(x)));\n const nodesToClean = graph.filter(node => uriToClean.some(uri => uri === node.url));\n\n if (!nodesToClean.length) {\n return;\n }\n\n const allNodesToClean = [\n ...nodesToClean,\n // if a non ts file changes we need to clean up its direct dependees\n // this is mainly done for resources such as html and css\n ...nodesToClean.filter(node => !node.url.endsWith('.ts')).flatMap(node => [...node.dependees]),\n ];\n\n // delete node that changes\n for (const { url } of allNodesToClean) {\n sourcesFileCache.delete(fileUrlPath(url));\n }\n\n const potentialStylesResources = new Set<string>();\n for (const { url } of allNodesToClean) {\n if (isFileUrl(url)) {\n potentialStylesResources.add(fileUrlPath(url));\n }\n }\n\n for (const entryPoint of graph.filter(isEntryPoint)) {\n let isDirty = !!entryPoint.cache.stylesheetProcessor.invalidate(potentialStylesResources)?.length;\n isDirty ||= allNodesToClean.some(dependent => entryPoint.dependents.has(dependent));\n\n if (isDirty) {\n entryPoint.state = STATE_DIRTY;\n\n for (const url of uriToClean) {\n entryPoint.cache.analysesSourcesFileCache.delete(fileUrlPath(url));\n }\n }\n }\n }),\n debounceTime(100),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n map(() => graph),\n );\n }),\n switchMap(graph => {\n return observableOf(graph).pipe(\n buildTransformFactory(project, analyseSourcesTransform, entryPointTransform),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n\n return NEVER;\n }),\n );\n }),\n );\n };\n\nconst buildTransformFactory =\n (project: string, analyseSourcesTransform: Transform, entryPointTransform: Transform) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const startTime = Date.now();\n\n const pkgUri = ngUrl(project);\n\n return source$.pipe(\n // Analyse dependencies and external resources for each entry point\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform),\n tap(graph => {\n const ngPkg = graph.get(pkgUri);\n log.success('\\n------------------------------------------------------------------------------');\n log.success(`Built Angular Package\n - from: ${ngPkg.data.src}\n - to: ${ngPkg.data.dest}`);\n log.success('------------------------------------------------------------------------------');\n const b = colors.bold;\n const w = colors.white;\n log.msg(w(`\\nBuild at: ${b(new Date().toISOString())} - Time: ${b('' + (Date.now() - startTime))}ms\\n`));\n }),\n );\n };\n\nconst scheduleEntryPoints = (epTransform: Transform): Transform =>\n pipe(\n concatMap(graph => {\n // Calculate node/dependency depth and determine build order\n const depGraph = new DepGraph({ circular: false });\n for (const node of graph.values()) {\n if (!isEntryPoint(node)) {\n continue;\n }\n\n // Remove `ng://` prefix for better error messages\n const from = node.url.substring(5);\n depGraph.addNode(from);\n\n for (const dep of node.dependents) {\n if (!isEntryPoint(dep)) {\n continue;\n }\n\n const to = dep.url.substring(5);\n depGraph.addNode(to);\n depGraph.addDependency(from, to);\n }\n }\n\n // The array index is the depth.\n const groups = depGraph.overallOrder().map(ngUrl);\n\n // Build entry points with lower depth values first.\n return from(groups).pipe(\n map((epUrl: string): EntryPointNode => graph.find(byEntryPoint().and(ep => ep.url === epUrl))),\n filter((entryPoint: EntryPointNode): boolean => entryPoint.state !== STATE_DONE),\n concatMap(ep =>\n observableOf(ep).pipe(\n // Mark the entry point as 'in-progress'\n tap(entryPoint => (entryPoint.state = STATE_IN_PROGRESS)),\n map(() => graph),\n epTransform,\n ),\n ),\n takeLast(1), // don't use last as sometimes it this will cause 'no elements in sequence',\n defaultIfEmpty(graph),\n );\n }),\n );\n"]}
1
+ {"version":3,"file":"package.transform.js","sourceRoot":"","sources":["../../../src/lib/ng-package/package.transform.ts"],"names":[],"mappings":"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","sourcesContent":["import { DepGraph } from 'dependency-graph';\nimport {\n NEVER,\n Observable,\n catchError,\n concatMap,\n debounceTime,\n defaultIfEmpty,\n filter,\n finalize,\n from,\n map,\n of as observableOf,\n pipe,\n startWith,\n switchMap,\n takeLast,\n tap,\n} from 'rxjs';\nimport { createFileWatch } from '../file-system/file-watcher';\nimport { BuildGraph } from '../graph/build-graph';\nimport { STATE_DIRTY, STATE_DONE, STATE_IN_PROGRESS } from '../graph/node';\nimport { Transform } from '../graph/transform';\nimport { colors } from '../utils/color';\nimport { rmdir } from '../utils/fs';\nimport * as log from '../utils/log';\nimport { ensureUnixPath } from '../utils/path';\nimport { discoverPackages } from './discover-packages';\nimport {\n EntryPointNode,\n PackageNode,\n byEntryPoint,\n fileUrl,\n fileUrlPath,\n isEntryPoint,\n isFileUrl,\n isPackage,\n ngUrl,\n} from './nodes';\nimport { NgPackagrOptions } from './options.di';\n\n/**\n * A transformation for building an npm package:\n *\n * - discoverPackages\n * - options\n * - initTsConfig\n * - analyzeTsSources (thereby extracting template and stylesheet files)\n * - for each entry point\n * - run the entryPontTransform\n *\n * @param project Project token, reference to `ng-package.json`\n * @param options ng-packagr options\n * @param initTsConfigTransform Transformation initializing the tsconfig of each entry point.\n * @param analyseSourcesTransform Transformation analyzing the typescript source files of each entry point.\n * @param entryPointTransform Transformation for asset rendering and compilation of a single entry point.\n */\nexport const packageTransformFactory =\n (\n project: string,\n options: NgPackagrOptions,\n initTsConfigTransform: Transform,\n analyseSourcesTransform: Transform,\n entryPointTransform: Transform,\n ) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n log.info(`Building Angular Package`);\n\n const buildTransform = options.watch\n ? watchTransformFactory(project, options, analyseSourcesTransform, entryPointTransform)\n : buildTransformFactory(project, analyseSourcesTransform, entryPointTransform);\n\n const pkgUri = ngUrl(project);\n const ngPkg = new PackageNode(pkgUri);\n\n return source$.pipe(\n // Discover packages and entry points\n // Clean the primary dest folder (should clean all secondary sub-directory, as well)\n switchMap(async graph => {\n ngPkg.data = await discoverPackages({ project });\n\n graph.put(ngPkg);\n const { dest, deleteDestPath } = ngPkg.data;\n\n if (deleteDestPath) {\n try {\n await rmdir(dest, { recursive: true });\n } catch {}\n }\n\n const entryPoints = [ngPkg.data.primary, ...ngPkg.data.secondaries].map(entryPoint => {\n const { destinationFiles, moduleId } = entryPoint;\n const node = new EntryPointNode(\n ngUrl(moduleId),\n ngPkg.cache.sourcesFileCache,\n ngPkg.cache.moduleResolutionCache,\n );\n node.data = { entryPoint, destinationFiles };\n node.state = 'dirty';\n ngPkg.dependsOn(node);\n\n return node;\n });\n\n // Add entry points to graph\n return graph.put(entryPoints);\n }),\n // Initialize the tsconfig for each entry point\n initTsConfigTransform,\n // perform build\n buildTransform,\n finalize(() => {\n for (const node of ngPkg.dependents) {\n if (node instanceof EntryPointNode) {\n node.cache.stylesheetProcessor?.destroy();\n }\n }\n }),\n );\n };\n\nconst watchTransformFactory =\n (project: string, options: NgPackagrOptions, analyseSourcesTransform: Transform, entryPointTransform: Transform) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const CompleteWaitingForFileChange = '\\nCompilation complete. Watching for file changes...';\n const FileChangeDetected = '\\nFile change detected. Starting incremental compilation...';\n const FailedWaitingForFileChange = '\\nCompilation failed. Watching for file changes...';\n\n return source$.pipe(\n switchMap(graph => {\n const { data, cache } = graph.find(isPackage);\n const { onFileChange, watcher } = createFileWatch([], [data.dest + '/'], options.poll);\n graph.watcher = watcher;\n\n return onFileChange.pipe(\n tap(fileChange => {\n const { filePath } = fileChange;\n const { sourcesFileCache } = cache;\n const cachedSourceFile = sourcesFileCache.get(filePath);\n const { declarationFileName } = cachedSourceFile || {};\n const uriToClean = [filePath, declarationFileName].map(x => fileUrl(ensureUnixPath(x)));\n const nodesToClean = graph.filter(node => uriToClean.some(uri => uri === node.url));\n\n if (!nodesToClean.length) {\n return;\n }\n\n const allNodesToClean = [\n ...nodesToClean,\n // if a non ts file changes we need to clean up its direct dependees\n // this is mainly done for resources such as html and css\n ...nodesToClean.filter(node => !node.url.endsWith('.ts')).flatMap(node => [...node.dependees]),\n ];\n\n // delete node that changes\n for (const { url } of allNodesToClean) {\n sourcesFileCache.delete(fileUrlPath(url));\n }\n\n const potentialStylesResources = new Set<string>();\n for (const { url } of allNodesToClean) {\n if (isFileUrl(url)) {\n potentialStylesResources.add(fileUrlPath(url));\n }\n }\n\n for (const entryPoint of graph.filter(isEntryPoint)) {\n let isDirty = !!entryPoint.cache.stylesheetProcessor?.invalidate(potentialStylesResources)?.length;\n isDirty ||= allNodesToClean.some(dependent => entryPoint.dependents.has(dependent));\n\n if (isDirty) {\n entryPoint.state = STATE_DIRTY;\n\n for (const url of uriToClean) {\n entryPoint.cache.analysesSourcesFileCache.delete(fileUrlPath(url));\n }\n }\n }\n }),\n debounceTime(100),\n tap(() => log.msg(FileChangeDetected)),\n startWith(undefined),\n map(() => graph),\n );\n }),\n switchMap(graph => {\n return observableOf(graph).pipe(\n buildTransformFactory(project, analyseSourcesTransform, entryPointTransform),\n tap(() => log.msg(CompleteWaitingForFileChange)),\n catchError(error => {\n log.error(error);\n log.msg(FailedWaitingForFileChange);\n\n return NEVER;\n }),\n );\n }),\n );\n };\n\nconst buildTransformFactory =\n (project: string, analyseSourcesTransform: Transform, entryPointTransform: Transform) =>\n (source$: Observable<BuildGraph>): Observable<BuildGraph> => {\n const startTime = Date.now();\n\n const pkgUri = ngUrl(project);\n\n return source$.pipe(\n // Analyse dependencies and external resources for each entry point\n analyseSourcesTransform,\n // Next, run through the entry point transformation (assets rendering, code compilation)\n scheduleEntryPoints(entryPointTransform),\n tap(graph => {\n const ngPkg = graph.get(pkgUri);\n log.success('\\n------------------------------------------------------------------------------');\n log.success(`Built Angular Package\n - from: ${ngPkg.data.src}\n - to: ${ngPkg.data.dest}`);\n log.success('------------------------------------------------------------------------------');\n const b = colors.bold;\n const w = colors.white;\n log.msg(w(`\\nBuild at: ${b(new Date().toISOString())} - Time: ${b('' + (Date.now() - startTime))}ms\\n`));\n }),\n );\n };\n\nconst scheduleEntryPoints = (epTransform: Transform): Transform =>\n pipe(\n concatMap(graph => {\n // Calculate node/dependency depth and determine build order\n const depGraph = new DepGraph({ circular: false });\n for (const node of graph.values()) {\n if (!isEntryPoint(node)) {\n continue;\n }\n\n // Remove `ng://` prefix for better error messages\n const from = node.url.substring(5);\n depGraph.addNode(from);\n\n for (const dep of node.dependents) {\n if (!isEntryPoint(dep)) {\n continue;\n }\n\n const to = dep.url.substring(5);\n depGraph.addNode(to);\n depGraph.addDependency(from, to);\n }\n }\n\n // The array index is the depth.\n const groups = depGraph.overallOrder().map(ngUrl);\n\n // Build entry points with lower depth values first.\n return from(groups).pipe(\n map((epUrl: string): EntryPointNode => graph.find(byEntryPoint().and(ep => ep.url === epUrl))),\n filter((entryPoint: EntryPointNode): boolean => entryPoint.state !== STATE_DONE),\n concatMap(ep =>\n observableOf(ep).pipe(\n // Mark the entry point as 'in-progress'\n tap(entryPoint => (entryPoint.state = STATE_IN_PROGRESS)),\n map(() => graph),\n epTransform,\n ),\n ),\n takeLast(1), // don't use last as sometimes it this will cause 'no elements in sequence',\n defaultIfEmpty(graph),\n );\n }),\n );\n"]}
@@ -24,32 +24,39 @@ function createCssResourcePlugin(url, cache) {
24
24
  name: 'angular-css-resource',
25
25
  setup(build) {
26
26
  build.onResolve({ filter: /.*/ }, async (args) => {
27
- var _a, _b;
27
+ var _a;
28
+ const { importer, path, kind, resolveDir, namespace, pluginData = {} } = args;
28
29
  // Only attempt to resolve url tokens which only exist inside CSS.
29
30
  // Also, skip this plugin if already attempting to resolve the url-token.
30
- if (args.kind !== 'url-token' || ((_a = args.pluginData) === null || _a === void 0 ? void 0 : _a[CSS_RESOURCE_RESOLUTION])) {
31
+ if (kind !== 'url-token' || pluginData[CSS_RESOURCE_RESOLUTION]) {
31
32
  return null;
32
33
  }
34
+ let [containingDir, resourceUrl] = path.split('||file:', 2);
35
+ if (resourceUrl === undefined) {
36
+ // This can happen due to early exit checks in rebasing-importer
37
+ // logic such as when the url is an external URL.
38
+ resourceUrl = containingDir;
39
+ containingDir = '';
40
+ }
33
41
  // If root-relative, absolute or protocol relative url, mark as external to leave the
34
42
  // path/URL in place.
35
- if (url !== stylesheet_processor_1.CssUrl.inline || /^((?:\w+:)?\/\/|data:|chrome:|#|\/)/.test(args.path)) {
43
+ if (url !== stylesheet_processor_1.CssUrl.inline || /^((?:\w+:)?\/\/|data:|chrome:|#|\/)/.test(resourceUrl)) {
36
44
  return {
37
- path: args.path,
45
+ path: resourceUrl,
38
46
  external: true,
39
47
  };
40
48
  }
41
- const { importer, kind, resolveDir, namespace, pluginData = {} } = args;
42
49
  pluginData[CSS_RESOURCE_RESOLUTION] = true;
43
- const result = await build.resolve(args.path, {
50
+ const result = await build.resolve(resourceUrl, {
44
51
  importer,
45
52
  kind,
46
53
  namespace,
47
54
  pluginData,
48
- resolveDir,
55
+ resolveDir: (0, node_path_1.join)(resolveDir, containingDir),
49
56
  });
50
57
  if (result.errors.length) {
51
58
  const error = result.errors[0];
52
- if (args.path[0] === '~') {
59
+ if (resourceUrl[0] === '~') {
53
60
  error.notes = [
54
61
  {
55
62
  location: null,
@@ -57,7 +64,7 @@ function createCssResourcePlugin(url, cache) {
57
64
  },
58
65
  ];
59
66
  }
60
- else if (args.path[0] === '^') {
67
+ else if (resourceUrl[0] === '^') {
61
68
  error.notes = [
62
69
  {
63
70
  location: null,
@@ -83,7 +90,7 @@ function createCssResourcePlugin(url, cache) {
83
90
  ...result,
84
91
  // Use a relative path to prevent fully resolved paths in the metafile (JSON stats file).
85
92
  // This is only necessary for custom namespaces. esbuild will handle the file namespace.
86
- path: (0, node_path_1.relative)((_b = build.initialOptions.absWorkingDir) !== null && _b !== void 0 ? _b : '', result.path),
93
+ path: (0, node_path_1.relative)((_a = build.initialOptions.absWorkingDir) !== null && _a !== void 0 ? _a : '', result.path),
87
94
  namespace: CSS_RESOURCE_NAMESPACE,
88
95
  };
89
96
  });
@@ -1 +1 @@
1
- {"version":3,"file":"css-resource-plugin.js","sourceRoot":"","sources":["../../../../src/lib/styles/stylesheets/css-resource-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Plugin, PluginBuild } from 'esbuild';\nimport { readFile } from 'node:fs/promises';\nimport { extname, join, relative } from 'node:path';\nimport { LoadResultCache, createCachedLoad } from '../load-result-cache';\nimport { CssUrl } from '../stylesheet-processor';\n\nconst CSS_RESOURCE_NAMESPACE = 'angular:css-resource';\n\n/**\n * Symbol marker used to indicate CSS resource resolution is being attempted.\n * This is used to prevent an infinite loop within the plugin's resolve hook.\n */\nconst CSS_RESOURCE_RESOLUTION = Symbol('CSS_RESOURCE_RESOLUTION');\n\n/**\n * Creates an esbuild {@link Plugin} that loads all CSS url token references using the\n * built-in esbuild `file` loader. A plugin is used to allow for all file extensions\n * and types to be supported without needing to manually specify all extensions\n * within the build configuration.\n *\n * @returns An esbuild {@link Plugin} instance.\n */\nexport function createCssResourcePlugin(url: CssUrl, cache?: LoadResultCache): Plugin {\n return {\n name: 'angular-css-resource',\n setup(build: PluginBuild): void {\n build.onResolve({ filter: /.*/ }, async args => {\n // Only attempt to resolve url tokens which only exist inside CSS.\n // Also, skip this plugin if already attempting to resolve the url-token.\n if (args.kind !== 'url-token' || args.pluginData?.[CSS_RESOURCE_RESOLUTION]) {\n return null;\n }\n\n // If root-relative, absolute or protocol relative url, mark as external to leave the\n // path/URL in place.\n if (url !== CssUrl.inline || /^((?:\\w+:)?\\/\\/|data:|chrome:|#|\\/)/.test(args.path)) {\n return {\n path: args.path,\n external: true,\n };\n }\n\n const { importer, kind, resolveDir, namespace, pluginData = {} } = args;\n pluginData[CSS_RESOURCE_RESOLUTION] = true;\n\n const result = await build.resolve(args.path, {\n importer,\n kind,\n namespace,\n pluginData,\n resolveDir,\n });\n\n if (result.errors.length) {\n const error = result.errors[0];\n if (args.path[0] === '~') {\n error.notes = [\n {\n location: null,\n text: 'You can remove the tilde and use a relative path to reference it, which should remove this error.',\n },\n ];\n } else if (args.path[0] === '^') {\n error.notes = [\n {\n location: null,\n text: 'You can remove the caret and use a relative path to reference it, which should remove this error.',\n },\n ];\n }\n\n const extension = importer && extname(importer);\n if (extension !== '.css') {\n error.notes.push({\n location: null,\n text: 'Preprocessor stylesheets may not show the exact file location of the error.',\n });\n }\n }\n\n // Return results that are not files since these are most likely specific to another plugin\n // and cannot be loaded by this plugin.\n if (result.namespace !== 'file') {\n return result;\n }\n\n // All file results are considered CSS resources and will be loaded via the file loader\n return {\n ...result,\n // Use a relative path to prevent fully resolved paths in the metafile (JSON stats file).\n // This is only necessary for custom namespaces. esbuild will handle the file namespace.\n path: relative(build.initialOptions.absWorkingDir ?? '', result.path),\n namespace: CSS_RESOURCE_NAMESPACE,\n };\n });\n\n build.onLoad(\n { filter: /./, namespace: CSS_RESOURCE_NAMESPACE },\n createCachedLoad(cache, async args => {\n const resourcePath = join(build.initialOptions.absWorkingDir ?? '', args.path);\n\n return {\n contents: await readFile(resourcePath),\n loader: 'dataurl',\n watchFiles: [resourcePath],\n };\n }),\n );\n },\n };\n}\n"]}
1
+ {"version":3,"file":"css-resource-plugin.js","sourceRoot":"","sources":["../../../../src/lib/styles/stylesheets/css-resource-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Plugin, PluginBuild } from 'esbuild';\nimport { readFile } from 'node:fs/promises';\nimport { extname, join, relative } from 'node:path';\nimport { LoadResultCache, createCachedLoad } from '../load-result-cache';\nimport { CssUrl } from '../stylesheet-processor';\n\nconst CSS_RESOURCE_NAMESPACE = 'angular:css-resource';\n\n/**\n * Symbol marker used to indicate CSS resource resolution is being attempted.\n * This is used to prevent an infinite loop within the plugin's resolve hook.\n */\nconst CSS_RESOURCE_RESOLUTION = Symbol('CSS_RESOURCE_RESOLUTION');\n\n/**\n * Creates an esbuild {@link Plugin} that loads all CSS url token references using the\n * built-in esbuild `file` loader. A plugin is used to allow for all file extensions\n * and types to be supported without needing to manually specify all extensions\n * within the build configuration.\n *\n * @returns An esbuild {@link Plugin} instance.\n */\nexport function createCssResourcePlugin(url: CssUrl, cache?: LoadResultCache): Plugin {\n return {\n name: 'angular-css-resource',\n setup(build: PluginBuild): void {\n build.onResolve({ filter: /.*/ }, async args => {\n const { importer, path, kind, resolveDir, namespace, pluginData = {} } = args;\n\n // Only attempt to resolve url tokens which only exist inside CSS.\n // Also, skip this plugin if already attempting to resolve the url-token.\n if (kind !== 'url-token' || pluginData[CSS_RESOURCE_RESOLUTION]) {\n return null;\n }\n\n let [containingDir, resourceUrl] = path.split('||file:', 2);\n if (resourceUrl === undefined) {\n // This can happen due to early exit checks in rebasing-importer\n // logic such as when the url is an external URL.\n resourceUrl = containingDir;\n containingDir = '';\n }\n\n // If root-relative, absolute or protocol relative url, mark as external to leave the\n // path/URL in place.\n if (url !== CssUrl.inline || /^((?:\\w+:)?\\/\\/|data:|chrome:|#|\\/)/.test(resourceUrl)) {\n return {\n path: resourceUrl,\n external: true,\n };\n }\n\n pluginData[CSS_RESOURCE_RESOLUTION] = true;\n\n const result = await build.resolve(resourceUrl, {\n importer,\n kind,\n namespace,\n pluginData,\n resolveDir: join(resolveDir, containingDir),\n });\n\n if (result.errors.length) {\n const error = result.errors[0];\n if (resourceUrl[0] === '~') {\n error.notes = [\n {\n location: null,\n text: 'You can remove the tilde and use a relative path to reference it, which should remove this error.',\n },\n ];\n } else if (resourceUrl[0] === '^') {\n error.notes = [\n {\n location: null,\n text: 'You can remove the caret and use a relative path to reference it, which should remove this error.',\n },\n ];\n }\n\n const extension = importer && extname(importer);\n if (extension !== '.css') {\n error.notes.push({\n location: null,\n text: 'Preprocessor stylesheets may not show the exact file location of the error.',\n });\n }\n }\n\n // Return results that are not files since these are most likely specific to another plugin\n // and cannot be loaded by this plugin.\n if (result.namespace !== 'file') {\n return result;\n }\n\n // All file results are considered CSS resources and will be loaded via the file loader\n return {\n ...result,\n // Use a relative path to prevent fully resolved paths in the metafile (JSON stats file).\n // This is only necessary for custom namespaces. esbuild will handle the file namespace.\n path: relative(build.initialOptions.absWorkingDir ?? '', result.path),\n namespace: CSS_RESOURCE_NAMESPACE,\n };\n });\n\n build.onLoad(\n { filter: /./, namespace: CSS_RESOURCE_NAMESPACE },\n createCachedLoad(cache, async args => {\n const resourcePath = join(build.initialOptions.absWorkingDir ?? '', args.path);\n\n return {\n contents: await readFile(resourcePath),\n loader: 'dataurl',\n watchFiles: [resourcePath],\n };\n }),\n );\n },\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-packagr",
3
- "version": "19.2.0",
3
+ "version": "19.2.2",
4
4
  "description": "Compile and package Angular libraries in Angular Package Format (APF)",
5
5
  "keywords": [
6
6
  "apf",