@onecx/accelerator 8.4.1 → 8.5.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/dist/index.cjs CHANGED
@@ -40,13 +40,10 @@ __export(index_exports, {
40
40
  ensureProperty: () => ensureProperty,
41
41
  getLocation: () => getLocation,
42
42
  getNormalizedBrowserLocales: () => getNormalizedBrowserLocales,
43
- getOneCXSharedLibraryConfig: () => getOneCXSharedLibraryConfig,
44
- getOneCXSharedRecommendations: () => getOneCXSharedRecommendations,
45
43
  getUTCDateWithoutTimezoneIssues: () => getUTCDateWithoutTimezoneIssues,
46
44
  isTest: () => isTest,
47
45
  isValidDate: () => isValidDate,
48
- normalizeLocales: () => normalizeLocales,
49
- onecxPackageFilter: () => onecxPackageFilter
46
+ normalizeLocales: () => normalizeLocales
50
47
  });
51
48
  module.exports = __toCommonJS(index_exports);
52
49
 
@@ -668,148 +665,3 @@ var Gatherer = class _Gatherer {
668
665
  return this.ownIds.has(m.id);
669
666
  }
670
667
  };
671
-
672
- // libs/accelerator/src/lib/utils/get-onecx-shared-recommendations.ts
673
- var sharedLibraryPatterns = [
674
- /^@angular.*$/,
675
- /^@onecx.*$/,
676
- /^rxjs.*$/,
677
- /^primeng.*$/,
678
- /^@ngx-translate.*$/,
679
- /^@ngrx.*$/
680
- ];
681
- function getOneCXSharedRecommendations(libraryName, sharedConfig) {
682
- if (!sharedLibraryPatterns.some((pattern) => pattern.test(libraryName))) {
683
- return false;
684
- }
685
- sharedConfig.singleton = false;
686
- sharedConfig.strictVersion = false;
687
- sharedConfig.eager = false;
688
- return sharedConfig;
689
- }
690
-
691
- // libs/accelerator/src/lib/utils/get-onecx-shared-library-config.ts
692
- var nodeRequire = (() => {
693
- try {
694
- if (typeof process !== "undefined" && process?.versions?.node) {
695
- return eval("require");
696
- } else {
697
- throw new Error("Node.js environment is required for dynamic require.");
698
- }
699
- } catch {
700
- throw new Error("Node.js environment is required for dynamic require.");
701
- }
702
- })();
703
- var angularCore = "@angular/core";
704
- var EXPORTS_BLACKLIST = [".", "./package.json"];
705
- var DEFAULT_DEPENDENCY_BLACKLIST = [
706
- /^@nx(\/.*)?$/,
707
- /^@module-federation(\/.*)?$/
708
- ];
709
- var DEFAULT_FULL_PACKAGE_BLACKLIST = [
710
- "@angular/common/locales/global/*",
711
- "@angular/common/locales/*",
712
- "@angular/common/upgrade",
713
- "@angular/core/schematics/*",
714
- "@angular/core/event-dispatch-contract.min.js",
715
- "@angular/service-worker/ngsw-worker.js",
716
- "@angular/service-worker/safety-worker.js",
717
- "@angular/service-worker/config/schema.json",
718
- "@angular/router/upgrade",
719
- "@angular/localize/tools",
720
- "rxjs/internal/*",
721
- "primeng/resources/",
722
- "primeng/editor",
723
- "@onecx/angular-accelerator/testing",
724
- "@onecx/angular-accelerator/migrations.json"
725
- ];
726
- function removeExportPrefix(str) {
727
- return str.replace("./", "");
728
- }
729
- function onecxPackageFilter(packageName) {
730
- if (isDependencyBlacklisted(packageName)) {
731
- return true;
732
- }
733
- return DEFAULT_FULL_PACKAGE_BLACKLIST.includes(packageName);
734
- }
735
- function isDependencyBlacklisted(dependency) {
736
- return DEFAULT_DEPENDENCY_BLACKLIST.some((entry) => {
737
- if (entry instanceof RegExp) {
738
- return entry.test(dependency);
739
- }
740
- return entry === dependency;
741
- });
742
- }
743
- function readDependencyPackageJson(dependency) {
744
- if (!nodeRequire) return null;
745
- let packagePath;
746
- try {
747
- packagePath = nodeRequire.resolve(`${dependency}/package.json`);
748
- } catch {
749
- return null;
750
- }
751
- const fs = nodeRequire("fs");
752
- if (!fs.existsSync(packagePath)) {
753
- return null;
754
- }
755
- const packageContent = fs.readFileSync(packagePath, "utf-8");
756
- return JSON.parse(packageContent);
757
- }
758
- function generateSubPackageConfig(dependency, version, packageFilterCallback) {
759
- const subpackages = [];
760
- const dependencyPackage = readDependencyPackageJson(dependency);
761
- if (!dependencyPackage?.exports) {
762
- return subpackages;
763
- }
764
- const exportKeys = Object.keys(dependencyPackage.exports);
765
- for (const exportKey of exportKeys) {
766
- if (EXPORTS_BLACKLIST.includes(exportKey)) continue;
767
- const subpackageName = `${dependency}/${removeExportPrefix(exportKey)}`;
768
- if (packageFilterCallback && packageFilterCallback(subpackageName)) continue;
769
- subpackages.push({ name: subpackageName, requiredVersion: version });
770
- }
771
- return subpackages;
772
- }
773
- function generatePackageConfig(versionMap, dependency, shouldGenerateSubDeps, packageFilterCallback = onecxPackageFilter) {
774
- if (packageFilterCallback(dependency)) {
775
- return [];
776
- }
777
- const allPackages = [];
778
- const version = versionMap[dependency];
779
- allPackages.push({ name: dependency, requiredVersion: version });
780
- if (shouldGenerateSubDeps) {
781
- const subpackages = generateSubPackageConfig(dependency, version, packageFilterCallback);
782
- allPackages.push(...subpackages);
783
- }
784
- return allPackages;
785
- }
786
- function getOneCXSharedLibraryConfig(dependencies, shouldGenerateSubDeps, options) {
787
- const allDependencies = Object.keys(dependencies).flatMap((dependency) => {
788
- return generatePackageConfig(dependencies, dependency, shouldGenerateSubDeps, options?.packageFilterCallback);
789
- });
790
- const sharedEntries = allDependencies.reduce((acc, packageEntry) => {
791
- const sharedLibConfig = {};
792
- sharedLibConfig["requiredVersion"] = packageEntry.requiredVersion;
793
- sharedLibConfig["shareScope"] = "default";
794
- const angularCoreVersion = (dependencies[angularCore] || "").split(".")[0].replace("^", "");
795
- if (angularCoreVersion && parseInt(angularCoreVersion, 10) >= 21) {
796
- const shareScope = "angular_".concat(angularCoreVersion);
797
- sharedLibConfig["shareScope"] = shareScope;
798
- }
799
- const onecxRecommendation = getOneCXSharedRecommendations(packageEntry.name, sharedLibConfig);
800
- if (!onecxRecommendation) {
801
- return acc;
802
- }
803
- const configFromCallback = options?.configCallback ? options.configCallback(packageEntry.name, onecxRecommendation) : void 0;
804
- if (configFromCallback && typeof configFromCallback === "object") {
805
- Object.assign(onecxRecommendation, configFromCallback);
806
- }
807
- return {
808
- ...acc,
809
- [packageEntry.name]: {
810
- ...onecxRecommendation
811
- }
812
- };
813
- }, {});
814
- return sharedEntries;
815
- }
package/dist/index.mjs CHANGED
@@ -618,151 +618,6 @@ var Gatherer = class _Gatherer {
618
618
  return this.ownIds.has(m.id);
619
619
  }
620
620
  };
621
-
622
- // libs/accelerator/src/lib/utils/get-onecx-shared-recommendations.ts
623
- var sharedLibraryPatterns = [
624
- /^@angular.*$/,
625
- /^@onecx.*$/,
626
- /^rxjs.*$/,
627
- /^primeng.*$/,
628
- /^@ngx-translate.*$/,
629
- /^@ngrx.*$/
630
- ];
631
- function getOneCXSharedRecommendations(libraryName, sharedConfig) {
632
- if (!sharedLibraryPatterns.some((pattern) => pattern.test(libraryName))) {
633
- return false;
634
- }
635
- sharedConfig.singleton = false;
636
- sharedConfig.strictVersion = false;
637
- sharedConfig.eager = false;
638
- return sharedConfig;
639
- }
640
-
641
- // libs/accelerator/src/lib/utils/get-onecx-shared-library-config.ts
642
- var nodeRequire = (() => {
643
- try {
644
- if (typeof process !== "undefined" && process?.versions?.node) {
645
- return eval("require");
646
- } else {
647
- throw new Error("Node.js environment is required for dynamic require.");
648
- }
649
- } catch {
650
- throw new Error("Node.js environment is required for dynamic require.");
651
- }
652
- })();
653
- var angularCore = "@angular/core";
654
- var EXPORTS_BLACKLIST = [".", "./package.json"];
655
- var DEFAULT_DEPENDENCY_BLACKLIST = [
656
- /^@nx(\/.*)?$/,
657
- /^@module-federation(\/.*)?$/
658
- ];
659
- var DEFAULT_FULL_PACKAGE_BLACKLIST = [
660
- "@angular/common/locales/global/*",
661
- "@angular/common/locales/*",
662
- "@angular/common/upgrade",
663
- "@angular/core/schematics/*",
664
- "@angular/core/event-dispatch-contract.min.js",
665
- "@angular/service-worker/ngsw-worker.js",
666
- "@angular/service-worker/safety-worker.js",
667
- "@angular/service-worker/config/schema.json",
668
- "@angular/router/upgrade",
669
- "@angular/localize/tools",
670
- "rxjs/internal/*",
671
- "primeng/resources/",
672
- "primeng/editor",
673
- "@onecx/angular-accelerator/testing",
674
- "@onecx/angular-accelerator/migrations.json"
675
- ];
676
- function removeExportPrefix(str) {
677
- return str.replace("./", "");
678
- }
679
- function onecxPackageFilter(packageName) {
680
- if (isDependencyBlacklisted(packageName)) {
681
- return true;
682
- }
683
- return DEFAULT_FULL_PACKAGE_BLACKLIST.includes(packageName);
684
- }
685
- function isDependencyBlacklisted(dependency) {
686
- return DEFAULT_DEPENDENCY_BLACKLIST.some((entry) => {
687
- if (entry instanceof RegExp) {
688
- return entry.test(dependency);
689
- }
690
- return entry === dependency;
691
- });
692
- }
693
- function readDependencyPackageJson(dependency) {
694
- if (!nodeRequire) return null;
695
- let packagePath;
696
- try {
697
- packagePath = nodeRequire.resolve(`${dependency}/package.json`);
698
- } catch {
699
- return null;
700
- }
701
- const fs = nodeRequire("fs");
702
- if (!fs.existsSync(packagePath)) {
703
- return null;
704
- }
705
- const packageContent = fs.readFileSync(packagePath, "utf-8");
706
- return JSON.parse(packageContent);
707
- }
708
- function generateSubPackageConfig(dependency, version, packageFilterCallback) {
709
- const subpackages = [];
710
- const dependencyPackage = readDependencyPackageJson(dependency);
711
- if (!dependencyPackage?.exports) {
712
- return subpackages;
713
- }
714
- const exportKeys = Object.keys(dependencyPackage.exports);
715
- for (const exportKey of exportKeys) {
716
- if (EXPORTS_BLACKLIST.includes(exportKey)) continue;
717
- const subpackageName = `${dependency}/${removeExportPrefix(exportKey)}`;
718
- if (packageFilterCallback && packageFilterCallback(subpackageName)) continue;
719
- subpackages.push({ name: subpackageName, requiredVersion: version });
720
- }
721
- return subpackages;
722
- }
723
- function generatePackageConfig(versionMap, dependency, shouldGenerateSubDeps, packageFilterCallback = onecxPackageFilter) {
724
- if (packageFilterCallback(dependency)) {
725
- return [];
726
- }
727
- const allPackages = [];
728
- const version = versionMap[dependency];
729
- allPackages.push({ name: dependency, requiredVersion: version });
730
- if (shouldGenerateSubDeps) {
731
- const subpackages = generateSubPackageConfig(dependency, version, packageFilterCallback);
732
- allPackages.push(...subpackages);
733
- }
734
- return allPackages;
735
- }
736
- function getOneCXSharedLibraryConfig(dependencies, shouldGenerateSubDeps, options) {
737
- const allDependencies = Object.keys(dependencies).flatMap((dependency) => {
738
- return generatePackageConfig(dependencies, dependency, shouldGenerateSubDeps, options?.packageFilterCallback);
739
- });
740
- const sharedEntries = allDependencies.reduce((acc, packageEntry) => {
741
- const sharedLibConfig = {};
742
- sharedLibConfig["requiredVersion"] = packageEntry.requiredVersion;
743
- sharedLibConfig["shareScope"] = "default";
744
- const angularCoreVersion = (dependencies[angularCore] || "").split(".")[0].replace("^", "");
745
- if (angularCoreVersion && parseInt(angularCoreVersion, 10) >= 21) {
746
- const shareScope = "angular_".concat(angularCoreVersion);
747
- sharedLibConfig["shareScope"] = shareScope;
748
- }
749
- const onecxRecommendation = getOneCXSharedRecommendations(packageEntry.name, sharedLibConfig);
750
- if (!onecxRecommendation) {
751
- return acc;
752
- }
753
- const configFromCallback = options?.configCallback ? options.configCallback(packageEntry.name, onecxRecommendation) : void 0;
754
- if (configFromCallback && typeof configFromCallback === "object") {
755
- Object.assign(onecxRecommendation, configFromCallback);
756
- }
757
- return {
758
- ...acc,
759
- [packageEntry.name]: {
760
- ...onecxRecommendation
761
- }
762
- };
763
- }, {});
764
- return sharedEntries;
765
- }
766
621
  export {
767
622
  BroadcastChannelMock,
768
623
  FakeTopic,
@@ -774,11 +629,8 @@ export {
774
629
  ensureProperty,
775
630
  getLocation,
776
631
  getNormalizedBrowserLocales,
777
- getOneCXSharedLibraryConfig,
778
- getOneCXSharedRecommendations,
779
632
  getUTCDateWithoutTimezoneIssues,
780
633
  isTest,
781
634
  isValidDate,
782
- normalizeLocales,
783
- onecxPackageFilter
635
+ normalizeLocales
784
636
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onecx/accelerator",
3
- "version": "8.4.1",
3
+ "version": "8.5.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
package/src/index.d.ts CHANGED
@@ -11,5 +11,3 @@ export * from './lib/utils/get-normalized-browser-locales.utils';
11
11
  export * from './lib/utils/gatherer';
12
12
  export * from './lib/utils/create-logger.utils';
13
13
  export * from './lib/utils/ensure-property.utils';
14
- export * from './lib/utils/get-onecx-shared-recommendations';
15
- export * from './lib/utils/get-onecx-shared-library-config';
package/src/index.js CHANGED
@@ -11,6 +11,4 @@ export * from './lib/utils/get-normalized-browser-locales.utils';
11
11
  export * from './lib/utils/gatherer';
12
12
  export * from './lib/utils/create-logger.utils';
13
13
  export * from './lib/utils/ensure-property.utils';
14
- export * from './lib/utils/get-onecx-shared-recommendations';
15
- export * from './lib/utils/get-onecx-shared-library-config';
16
14
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/accelerator/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAA;AACnD,cAAc,kDAAkD,CAAA;AAChE,cAAc,sBAAsB,CAAA;AACpC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,8CAA8C,CAAA;AAC5D,cAAc,6CAA6C,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/accelerator/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0CAA0C,CAAA;AACxD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAA;AACnD,cAAc,kDAAkD,CAAA;AAChE,cAAc,sBAAsB,CAAA;AACpC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA"}
package/src/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export declare const LIB_NAME = "@onecx/accelerator";
2
- export declare const LIB_VERSION = "8.4.1";
2
+ export declare const LIB_VERSION = "8.5.0";
package/src/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export const LIB_NAME = '@onecx/accelerator';
2
- export const LIB_VERSION = '8.4.1';
2
+ export const LIB_VERSION = '8.5.0';
3
3
  //# sourceMappingURL=version.js.map
@@ -1,95 +0,0 @@
1
- import { SharedLibraryConfig } from "./get-onecx-shared-recommendations";
2
- /**
3
- * Callbacks that can be passed to the SharedLibraryConfigOptions function to customize its behavior.
4
- * @property {function} configCallback - A function that receives the package name and current shared configuration, returning a modified configuration. Must return a SharedLibraryConfig object.
5
- * @property {function} packageFilterCallback - A function that takes a package name and returns a boolean. Return true to EXCLUDE the package, false to INCLUDE it, use onecxPackageFilter to use default blacklist.
6
- */
7
- export interface SharedLibraryConfigOptions {
8
- configCallback?: (packageName: string, currentConfig: SharedLibraryConfig) => SharedLibraryConfig;
9
- packageFilterCallback?: (packageName: string) => boolean | undefined;
10
- }
11
- /**
12
- * onecxPackageFilter is the default OneCX package filter.
13
- * @param {string} packageName - The full package name to check against the default blacklist.
14
- * @returns {boolean} - Returns `true` if the package is on the default blacklist, `false` otherwise.
15
- */
16
- export declare function onecxPackageFilter(packageName: string): boolean;
17
- /**
18
- * Generates a shared library configuration object for all dependencies (main + subpackages if needed).
19
- * @param {Record<string, string>} dependencies - Map of dependency names to versions
20
- * @param {boolean} shouldGenerateSubDeps - Flag indicating whether to include subpackages based on exports
21
- * @param {SharedLibraryConfigOptions} options - Optional callbacks for customizing the configuration generation process. Includes:
22
- * - configCallback: A function that receives the package name and current shared configuration, returning a modified configuration.
23
- * configCallback?: (packageName: string, currentConfig: SharedLibraryConfig) => SharedLibraryConfig;
24
- * - packageFilterCallback: A function that takes a package name and returns a boolean. Return true to EXCLUDE the package, false to INCLUDE it.
25
- * packageFilterCallback?: (packageName: string) => boolean | undefined;
26
- * @returns {Record<string, SharedLibraryConfig>} A map of package names to their shared library configuration
27
- *
28
- * @example
29
- * **Recommended usage for @module-federation/enhanced:**
30
- * ```js
31
- * const sharedEntries = getOneCXSharedLibraryConfig(dependencies, true);
32
- * const config = {
33
- * name: 'onecx-test-project-ui',
34
- * filename: 'remoteEntry.js',
35
- * shared: sharedEntries,
36
- * shareScope: 'angular_21'
37
- * }
38
- * ```
39
- *
40
- * **Recommended usage for @angular-architects/module-federation:**
41
- * The share function is from @angular-architects/module-federation.
42
- * ```js
43
- * function customConfigCallback(packageName: string, currentConfig: SharedLibraryConfig): SharedLibraryConfig {
44
- * currentConfig[includeSecondaries]=true
45
- * currentConfig[requiredVersion]='auto'
46
- * return currentConfig
47
- * }
48
- *
49
- * const sharedEntries = getOneCXSharedLibraryConfig(dependencies, false, { configCallback: customConfigCallback });
50
- * const config = withModuleFederationPlugin({
51
- * name: 'onecx-<%= remoteModuleFileName %>-ui',
52
- * filename: 'remoteEntryOneCX.js',
53
- * exposes: {
54
- * './OneCX<%= remoteModuleName %>Module': './src/main.ts'
55
- * },
56
- * shared: share(sharedEntries),
57
- * });
58
- * ```
59
- * \
60
- * **With options (custom filter and config override) you can customize the behavior as follows:**
61
- * ```js
62
- * const sharedEntries = getOneCXSharedLibraryConfig(dependencies, true, {
63
- * packageFilterCallback: customPackageFilter,
64
- * configCallback: customConfigCallback,
65
- * });
66
- * ```
67
- * \
68
- * Following are some Custom Implementation:
69
- * 1. Adding Custom Config or overiding default config
70
- *```js
71
- * function customConfigCallback(packageName: string, currentConfig: SharedLibraryConfig): SharedLibraryConfig {
72
- * currentConfig[singleton]=true
73
- * return currentConfig
74
- * }
75
- * ```
76
- *
77
- * 2. Custom Package without using onecxPckageFilter
78
- * ```js
79
- * function customPackageFilter(packageName: string): boolean {
80
- * if (packageName.startsWith('@internal/')) return true;
81
- * return false;
82
- * }
83
- * ```
84
- *
85
- * 3. Custom Package using onecxPckageFilter as defaut:
86
- * ```js
87
- * function customPackageFilter(packageName: string): boolean {
88
- * if (packageName.startsWith('@internal/')) return true;
89
- * return onecxPackageFilter(packageName);
90
- * }
91
- *
92
- * ```
93
- *
94
- */
95
- export declare function getOneCXSharedLibraryConfig(dependencies: Record<string, string>, shouldGenerateSubDeps: boolean, options?: SharedLibraryConfigOptions): Record<string, SharedLibraryConfig>;
@@ -1,261 +0,0 @@
1
- import { getOneCXSharedRecommendations } from "./get-onecx-shared-recommendations";
2
- /**
3
- * As we have { platform: 'browser'} in accelerator's & integration-interface project.json.
4
- * We use dynamic require (provided by Node.js) to read package.json of dependencies, which is not supported in browser environment.
5
- * So we need to check if the environment is node before using it. So it will only return valid require function while building
6
- */
7
- const nodeRequire = (() => {
8
- try {
9
- if (typeof process !== 'undefined' && process?.versions?.node) {
10
- return eval('require');
11
- }
12
- else {
13
- throw new Error('Node.js environment is required for dynamic require.');
14
- }
15
- }
16
- catch {
17
- throw new Error('Node.js environment is required for dynamic require.');
18
- }
19
- })();
20
- const angularCore = '@angular/core';
21
- /**
22
- * Blacklist of export paths to exclude when generating subpackage entries.
23
- */
24
- const EXPORTS_BLACKLIST = ['.', './package.json'];
25
- /**
26
- * Patterns for identifying dependencies that should be blacklisted.
27
- */
28
- const DEFAULT_DEPENDENCY_BLACKLIST = [
29
- /^@nx(\/.*)?$/,
30
- /^@module-federation(\/.*)?$/,
31
- ];
32
- /**
33
- * For identifying full package paths that should be blacklisted.
34
- */
35
- const DEFAULT_FULL_PACKAGE_BLACKLIST = [
36
- '@angular/common/locales/global/*',
37
- '@angular/common/locales/*',
38
- '@angular/common/upgrade',
39
- '@angular/core/schematics/*',
40
- '@angular/core/event-dispatch-contract.min.js',
41
- '@angular/service-worker/ngsw-worker.js',
42
- '@angular/service-worker/safety-worker.js',
43
- '@angular/service-worker/config/schema.json',
44
- '@angular/router/upgrade',
45
- '@angular/localize/tools',
46
- 'rxjs/internal/*',
47
- 'primeng/resources/',
48
- 'primeng/editor',
49
- '@onecx/angular-accelerator/testing',
50
- '@onecx/angular-accelerator/migrations.json',
51
- ];
52
- /**
53
- * Removes the './' prefix from a string, typically used for export paths in package.json files.
54
- * @param {string} str - The string from which to remove the './' prefix.
55
- * @returns {string} The string without the './' prefix.
56
- */
57
- function removeExportPrefix(str) {
58
- return str.replace('./', '');
59
- }
60
- /**
61
- * onecxPackageFilter is the default OneCX package filter.
62
- * @param {string} packageName - The full package name to check against the default blacklist.
63
- * @returns {boolean} - Returns `true` if the package is on the default blacklist, `false` otherwise.
64
- */
65
- export function onecxPackageFilter(packageName) {
66
- if (isDependencyBlacklisted(packageName)) {
67
- return true;
68
- }
69
- return DEFAULT_FULL_PACKAGE_BLACKLIST.includes(packageName);
70
- }
71
- /**
72
- * Check whether a dependency matches any blacklist entry. Supports RegExp entries and exact string matches.
73
- */
74
- function isDependencyBlacklisted(dependency) {
75
- return DEFAULT_DEPENDENCY_BLACKLIST.some((entry) => {
76
- if (entry instanceof RegExp) {
77
- return entry.test(dependency);
78
- }
79
- return entry === dependency;
80
- });
81
- }
82
- /**
83
- * Resolves and reads a dependency's package.json file.
84
- * Handles module resolution across npm/yarn/pnpm layouts.
85
- * @param {string} dependency - Package name to resolve
86
- * @returns {Object|null} Parsed package.json or null if not found
87
- */
88
- function readDependencyPackageJson(dependency) {
89
- if (!nodeRequire)
90
- return null;
91
- let packagePath;
92
- try {
93
- packagePath = nodeRequire.resolve(`${dependency}/package.json`);
94
- }
95
- catch {
96
- return null;
97
- }
98
- const fs = nodeRequire('fs');
99
- if (!fs.existsSync(packagePath)) {
100
- return null;
101
- }
102
- const packageContent = fs.readFileSync(packagePath, 'utf-8');
103
- return JSON.parse(packageContent);
104
- }
105
- /**
106
- * Generates subpackages from a dependency's export entries. Reads the dependency's package.json to find all exported subpackages
107
- * and creates fully qualified package names.
108
- * @param {string} dependency - Package name
109
- * @param {string} version - Package version
110
- * @param {function} packageFilterCallback - Optional callback to filter out specific subpackages. Should return true to exclude a package, false to include it.
111
- * @returns {Array} Array of subpackage objects with name and version
112
- */
113
- function generateSubPackageConfig(dependency, version, packageFilterCallback) {
114
- const subpackages = [];
115
- const dependencyPackage = readDependencyPackageJson(dependency);
116
- if (!dependencyPackage?.exports) {
117
- return subpackages;
118
- }
119
- const exportKeys = Object.keys(dependencyPackage.exports);
120
- for (const exportKey of exportKeys) {
121
- if (EXPORTS_BLACKLIST.includes(exportKey))
122
- continue;
123
- const subpackageName = `${dependency}/${removeExportPrefix(exportKey)}`;
124
- if (packageFilterCallback && packageFilterCallback(subpackageName))
125
- continue;
126
- subpackages.push({ name: subpackageName, requiredVersion: version });
127
- }
128
- return subpackages;
129
- }
130
- /**
131
- * Generates all shared packages (main + subpackages) for a given dependency.
132
- * Includes the main package plus all exported subpackages.
133
- * @param {Object} versionMap - Map of dependency names to versions
134
- * @param {string} dependency - Package name to generate packages for
135
- * @param {boolean} shouldGenerateSubDeps - Flag indicating whether to include subpackages based on exports
136
- * @param {function} packageFilterCallback - Optional callback to filter out specific packages. Should return true to exclude a package, false to include it.
137
- * @returns {Array} Array of all packages (main + subpackages)
138
- */
139
- function generatePackageConfig(versionMap, dependency, shouldGenerateSubDeps, packageFilterCallback = onecxPackageFilter) {
140
- if (packageFilterCallback(dependency)) {
141
- return [];
142
- }
143
- const allPackages = [];
144
- const version = versionMap[dependency];
145
- allPackages.push({ name: dependency, requiredVersion: version });
146
- if (shouldGenerateSubDeps) {
147
- const subpackages = generateSubPackageConfig(dependency, version, packageFilterCallback);
148
- allPackages.push(...subpackages);
149
- }
150
- return allPackages;
151
- }
152
- /**
153
- * Generates a shared library configuration object for all dependencies (main + subpackages if needed).
154
- * @param {Record<string, string>} dependencies - Map of dependency names to versions
155
- * @param {boolean} shouldGenerateSubDeps - Flag indicating whether to include subpackages based on exports
156
- * @param {SharedLibraryConfigOptions} options - Optional callbacks for customizing the configuration generation process. Includes:
157
- * - configCallback: A function that receives the package name and current shared configuration, returning a modified configuration.
158
- * configCallback?: (packageName: string, currentConfig: SharedLibraryConfig) => SharedLibraryConfig;
159
- * - packageFilterCallback: A function that takes a package name and returns a boolean. Return true to EXCLUDE the package, false to INCLUDE it.
160
- * packageFilterCallback?: (packageName: string) => boolean | undefined;
161
- * @returns {Record<string, SharedLibraryConfig>} A map of package names to their shared library configuration
162
- *
163
- * @example
164
- * **Recommended usage for @module-federation/enhanced:**
165
- * ```js
166
- * const sharedEntries = getOneCXSharedLibraryConfig(dependencies, true);
167
- * const config = {
168
- * name: 'onecx-test-project-ui',
169
- * filename: 'remoteEntry.js',
170
- * shared: sharedEntries,
171
- * shareScope: 'angular_21'
172
- * }
173
- * ```
174
- *
175
- * **Recommended usage for @angular-architects/module-federation:**
176
- * The share function is from @angular-architects/module-federation.
177
- * ```js
178
- * function customConfigCallback(packageName: string, currentConfig: SharedLibraryConfig): SharedLibraryConfig {
179
- * currentConfig[includeSecondaries]=true
180
- * currentConfig[requiredVersion]='auto'
181
- * return currentConfig
182
- * }
183
- *
184
- * const sharedEntries = getOneCXSharedLibraryConfig(dependencies, false, { configCallback: customConfigCallback });
185
- * const config = withModuleFederationPlugin({
186
- * name: 'onecx-<%= remoteModuleFileName %>-ui',
187
- * filename: 'remoteEntryOneCX.js',
188
- * exposes: {
189
- * './OneCX<%= remoteModuleName %>Module': './src/main.ts'
190
- * },
191
- * shared: share(sharedEntries),
192
- * });
193
- * ```
194
- * \
195
- * **With options (custom filter and config override) you can customize the behavior as follows:**
196
- * ```js
197
- * const sharedEntries = getOneCXSharedLibraryConfig(dependencies, true, {
198
- * packageFilterCallback: customPackageFilter,
199
- * configCallback: customConfigCallback,
200
- * });
201
- * ```
202
- * \
203
- * Following are some Custom Implementation:
204
- * 1. Adding Custom Config or overiding default config
205
- *```js
206
- * function customConfigCallback(packageName: string, currentConfig: SharedLibraryConfig): SharedLibraryConfig {
207
- * currentConfig[singleton]=true
208
- * return currentConfig
209
- * }
210
- * ```
211
- *
212
- * 2. Custom Package without using onecxPckageFilter
213
- * ```js
214
- * function customPackageFilter(packageName: string): boolean {
215
- * if (packageName.startsWith('@internal/')) return true;
216
- * return false;
217
- * }
218
- * ```
219
- *
220
- * 3. Custom Package using onecxPckageFilter as defaut:
221
- * ```js
222
- * function customPackageFilter(packageName: string): boolean {
223
- * if (packageName.startsWith('@internal/')) return true;
224
- * return onecxPackageFilter(packageName);
225
- * }
226
- *
227
- * ```
228
- *
229
- */
230
- export function getOneCXSharedLibraryConfig(dependencies, shouldGenerateSubDeps, options) {
231
- const allDependencies = Object.keys(dependencies).flatMap((dependency) => {
232
- return generatePackageConfig(dependencies, dependency, shouldGenerateSubDeps, options?.packageFilterCallback);
233
- });
234
- const sharedEntries = allDependencies.reduce((acc, packageEntry) => {
235
- const sharedLibConfig = {};
236
- sharedLibConfig['requiredVersion'] = packageEntry.requiredVersion;
237
- sharedLibConfig['shareScope'] = 'default';
238
- const angularCoreVersion = (dependencies[angularCore] || '').split('.')[0].replace('^', '');
239
- if (angularCoreVersion && parseInt(angularCoreVersion, 10) >= 21) {
240
- const shareScope = ('angular_').concat(angularCoreVersion);
241
- sharedLibConfig['shareScope'] = shareScope;
242
- }
243
- const onecxRecommendation = getOneCXSharedRecommendations(packageEntry.name, sharedLibConfig);
244
- if (!onecxRecommendation) {
245
- return acc;
246
- }
247
- // Apply configCallback if provided to current config overriding the recommendation
248
- const configFromCallback = options?.configCallback ? options.configCallback(packageEntry.name, onecxRecommendation) : undefined;
249
- if (configFromCallback && typeof configFromCallback === 'object') {
250
- Object.assign(onecxRecommendation, configFromCallback);
251
- }
252
- return {
253
- ...acc,
254
- [packageEntry.name]: {
255
- ...onecxRecommendation,
256
- },
257
- };
258
- }, {});
259
- return sharedEntries;
260
- }
261
- //# sourceMappingURL=get-onecx-shared-library-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-onecx-shared-library-config.js","sourceRoot":"","sources":["../../../../../../libs/accelerator/src/lib/utils/get-onecx-shared-library-config.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- export interface SharedLibraryConfig {
2
- singleton?: boolean;
3
- strictVersion?: boolean;
4
- eager?: boolean;
5
- requiredVersion?: string | false;
6
- version?: string;
7
- includeSecondaries?: boolean;
8
- shareScope?: string;
9
- }
10
- /**
11
- * Provides recommendations for shared library configurations for specific OneCX-related libraries.
12
- * If the library name matches certain patterns (e.g., Angular, OneCX, RxJS, PrimeNG, ngx-translate, ngrx), it modifies the shared configuration to set singleton, strictVersion, and eager to false.
13
- * For non-matching libraries, it returns false and does not modify the configuration.
14
- * @param {string} libraryName - The name of the library being shared.
15
- * @param {SharedLibraryConfig} sharedConfig - The existing shared configuration for the library, which may be modified if recommendations are applied.
16
- * @returns {false | SharedLibraryConfig} - Returns the modified shared configuration if recommendations are applied, or false if no recommendations are applicable.
17
- */
18
- export declare function getOneCXSharedRecommendations(libraryName: string, sharedConfig: SharedLibraryConfig): false | SharedLibraryConfig;
@@ -1,29 +0,0 @@
1
- /**
2
- * Patterns for identifying shared libraries that should have specific configuration recommendations.
3
- */
4
- const sharedLibraryPatterns = [
5
- /^@angular.*$/,
6
- /^@onecx.*$/,
7
- /^rxjs.*$/,
8
- /^primeng.*$/,
9
- /^@ngx-translate.*$/,
10
- /^@ngrx.*$/,
11
- ];
12
- /**
13
- * Provides recommendations for shared library configurations for specific OneCX-related libraries.
14
- * If the library name matches certain patterns (e.g., Angular, OneCX, RxJS, PrimeNG, ngx-translate, ngrx), it modifies the shared configuration to set singleton, strictVersion, and eager to false.
15
- * For non-matching libraries, it returns false and does not modify the configuration.
16
- * @param {string} libraryName - The name of the library being shared.
17
- * @param {SharedLibraryConfig} sharedConfig - The existing shared configuration for the library, which may be modified if recommendations are applied.
18
- * @returns {false | SharedLibraryConfig} - Returns the modified shared configuration if recommendations are applied, or false if no recommendations are applicable.
19
- */
20
- export function getOneCXSharedRecommendations(libraryName, sharedConfig) {
21
- if (!sharedLibraryPatterns.some((pattern) => pattern.test(libraryName))) {
22
- return false;
23
- }
24
- sharedConfig.singleton = false;
25
- sharedConfig.strictVersion = false;
26
- sharedConfig.eager = false;
27
- return sharedConfig;
28
- }
29
- //# sourceMappingURL=get-onecx-shared-recommendations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get-onecx-shared-recommendations.js","sourceRoot":"","sources":["../../../../../../libs/accelerator/src/lib/utils/get-onecx-shared-recommendations.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,qBAAqB,GAAa;IACtC,cAAc;IACd,YAAY;IACZ,UAAU;IACV,aAAa;IACb,oBAAoB;IACpB,WAAW;CACZ,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAmB,EACnB,YAAiC;IAEjC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAA;IACd,CAAC;IACD,YAAY,CAAC,SAAS,GAAG,KAAK,CAAA;IAC9B,YAAY,CAAC,aAAa,GAAG,KAAK,CAAA;IAClC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAA;IAC1B,OAAO,YAAY,CAAA;AACrB,CAAC"}