@mxpicture/build-api 0.3.2 → 0.3.3
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.
|
@@ -10,7 +10,7 @@ import { ExportsFinderBag } from "./ExportsFinderBag.js";
|
|
|
10
10
|
export declare class ExportsFinder {
|
|
11
11
|
readonly bag: ExportsFinderBag;
|
|
12
12
|
protected _predictedBag: ExportsFinderBag | null;
|
|
13
|
-
protected _requesteds:
|
|
13
|
+
protected _requesteds: string[];
|
|
14
14
|
/**
|
|
15
15
|
* Build a finder from an array of {@link PackageAPI} objects.
|
|
16
16
|
*
|
|
@@ -41,6 +41,6 @@ export declare class ExportsFinder {
|
|
|
41
41
|
*
|
|
42
42
|
* prediction bag is not cloned --> needed for collecting
|
|
43
43
|
*/
|
|
44
|
-
|
|
44
|
+
link(): ExportsFinder;
|
|
45
45
|
}
|
|
46
46
|
//# sourceMappingURL=ExportsFinder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportsFinder.d.ts","sourceRoot":"","sources":["../../src/exp/ExportsFinder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACX,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,SAAgB,GAAG,EAAE,gBAAgB,CAAC;IACtC,SAAS,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACxD,SAAS,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"ExportsFinder.d.ts","sourceRoot":"","sources":["../../src/exp/ExportsFinder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACX,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,SAAgB,GAAG,EAAE,gBAAgB,CAAC;IACtC,SAAS,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IACxD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,CAAM;IAErC;;;;OAIG;WACW,YAAY,CACxB,IAAI,EAAE,UAAU,EAAE,EAClB,QAAQ,CAAC,EAAE,qBAAqB,GAC/B,aAAa;IAMhB;;;;OAIG;WACW,aAAa,CACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,gBAAgB,EACtD,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,gBAAgB,GAAG,IAAI,GACjE,aAAa;IAgBhB,SAAS,aAAa,GAAG,EAAE,gBAAgB;IAI3C;;;;OAIG;IACI,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,gBAAgB;IAI7D,kBAAkB,CAAC,GAAG,CAAC,EAAE,gBAAgB;IAIzC,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAK1C,QAAQ,IAAI,IAAI;IAkBvB,IAAW,UAAU,IAAI,gBAAgB,EAAE,CAE1C;IAEM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI;IAQ1E;;;;OAIG;IACI,IAAI,IAAI,aAAa;CAG7B"}
|
|
@@ -44,7 +44,7 @@ export class ExportsFinder {
|
|
|
44
44
|
* @param name - Export name to flag.
|
|
45
45
|
*/
|
|
46
46
|
request(name) {
|
|
47
|
-
this._requesteds.push(
|
|
47
|
+
this._requesteds.push(name);
|
|
48
48
|
}
|
|
49
49
|
validateRequested(req) {
|
|
50
50
|
return validateRequested(req, this.bag, this._predictedBag);
|
|
@@ -59,9 +59,7 @@ export class ExportsFinder {
|
|
|
59
59
|
this._predictedBag.add(node);
|
|
60
60
|
}
|
|
61
61
|
validate() {
|
|
62
|
-
|
|
63
|
-
this.validateRequested(req);
|
|
64
|
-
const invalids = this._requesteds.filter((req) => !req.valid);
|
|
62
|
+
const invalids = this.requesteds.filter((req) => !req.valid);
|
|
65
63
|
if (invalids.length === 0)
|
|
66
64
|
return;
|
|
67
65
|
// throw error, not all predicted names were provided
|
|
@@ -76,18 +74,18 @@ export class ExportsFinder {
|
|
|
76
74
|
throw new Error(`Predicted names missing: ${firsts.join(", ")}${others.length > 0 ? ", ..." : ""}`);
|
|
77
75
|
}
|
|
78
76
|
get requesteds() {
|
|
79
|
-
return this._requesteds;
|
|
77
|
+
return this._requesteds.map((name) => this.validateRequested({ name }));
|
|
80
78
|
}
|
|
81
79
|
requested(name, isValid) {
|
|
82
|
-
return (this.
|
|
80
|
+
return (this.requesteds.find((req) => req.name === name && (!isValid || req.valid === true)) ?? null);
|
|
83
81
|
}
|
|
84
82
|
/**
|
|
85
83
|
* Create a deep copy of this finder.
|
|
86
84
|
*
|
|
87
85
|
* prediction bag is not cloned --> needed for collecting
|
|
88
86
|
*/
|
|
89
|
-
|
|
90
|
-
return ExportsFinder.createByNodes(this.bag
|
|
87
|
+
link() {
|
|
88
|
+
return ExportsFinder.createByNodes(this.bag, this._predictedBag);
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
91
|
//# sourceMappingURL=ExportsFinder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExportsFinder.js","sourceRoot":"","sources":["../../src/exp/ExportsFinder.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IACR,GAAG,CAAmB;IAC5B,aAAa,GAA4B,IAAI,CAAC;IAC9C,WAAW,
|
|
1
|
+
{"version":3,"file":"ExportsFinder.js","sourceRoot":"","sources":["../../src/exp/ExportsFinder.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ExportNodeTyped,\n ExportsCommonExcludes,\n ExportsRequested,\n PackageAPI,\n} from \"../types/types.exports.js\";\nimport { mapPackagesToTyped } from \"./exports.package.js\";\nimport { validateRequested } from \"./exports.requested.js\";\nimport { ExportsFinderBag } from \"./ExportsFinderBag.js\";\n\n/**\n * Lookup index for typed export nodes across multiple packages.\n *\n * @remarks\n * Provides O(1) access to export metadata by name and supports marking\n * specific exports as \"requested\" for downstream code-generation steps.\n */\nexport class ExportsFinder {\n public readonly bag: ExportsFinderBag;\n protected _predictedBag: ExportsFinderBag | null = null;\n protected _requesteds: string[] = [];\n\n /**\n * Build a finder from an array of {@link PackageAPI} objects.\n *\n * @param pkgs - Packages whose exports are indexed.\n */\n public static createByPkgs(\n pkgs: PackageAPI[],\n excludes?: ExportsCommonExcludes,\n ): ExportsFinder {\n return new ExportsFinder(\n new ExportsFinderBag(mapPackagesToTyped(new Map(), pkgs, excludes)),\n );\n }\n\n /**\n * Build a finder from a pre-built node map (deep-cloned).\n *\n * @param nodes - Map of export names to typed nodes.\n */\n public static createByNodes(\n nodes: Map<string, ExportNodeTyped> | ExportsFinderBag,\n predicted?: Map<string, ExportNodeTyped> | ExportsFinderBag | null,\n ): ExportsFinder {\n const finder = new ExportsFinder(\n nodes instanceof ExportsFinderBag\n ? nodes\n : new ExportsFinderBag(structuredClone(nodes)),\n );\n\n if (predicted)\n finder.activatePrediction(\n predicted instanceof ExportsFinderBag\n ? predicted\n : new ExportsFinderBag(structuredClone(predicted)),\n );\n return finder;\n }\n\n protected constructor(bag: ExportsFinderBag) {\n this.bag = bag;\n }\n\n /**\n * Mark an export as requested.\n *\n * @param name - Export name to flag.\n */\n public request(name: string): void {\n this._requesteds.push(name);\n }\n\n protected validateRequested(req: ExportsRequested): ExportsRequested {\n return validateRequested(req, this.bag, this._predictedBag);\n }\n\n public activatePrediction(bag?: ExportsFinderBag) {\n this._predictedBag ??= bag ?? new ExportsFinderBag();\n }\n\n public addPrediction(node: ExportNodeTyped): void {\n if (!this._predictedBag) this._predictedBag = new ExportsFinderBag();\n if (!this._predictedBag.has(node.name)) this._predictedBag.add(node);\n }\n\n public validate(): void {\n const invalids = this.requesteds.filter((req) => !req.valid);\n if (invalids.length === 0) return;\n\n // throw error, not all predicted names were provided\n const firsts: string[] = [];\n const others: string[] = [];\n\n for (const { name } of invalids) {\n if (firsts.length < 3) firsts.push(name);\n else others.push(name);\n }\n\n throw new Error(\n `Predicted names missing: ${firsts.join(\", \")}${others.length > 0 ? \", ...\" : \"\"}`,\n );\n }\n\n public get requesteds(): ExportsRequested[] {\n return this._requesteds.map((name) => this.validateRequested({ name }));\n }\n\n public requested(name: string, isValid?: boolean): ExportsRequested | null {\n return (\n this.requesteds.find(\n (req) => req.name === name && (!isValid || req.valid === true),\n ) ?? null\n );\n }\n\n /**\n * Create a deep copy of this finder.\n *\n * prediction bag is not cloned --> needed for collecting\n */\n public link(): ExportsFinder {\n return ExportsFinder.createByNodes(this.bag, this._predictedBag);\n }\n}\n"]}
|