@komaci/common-shared 242.3.3 → 242.3.6
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/build/moduleMetadata.d.ts +17 -0
- package/build/moduleMetadata.js +65 -6
- package/build/types.d.ts +2 -0
- package/package.json +2 -2
|
@@ -80,6 +80,15 @@ export declare const updateAliasForImport: (lookupName: string, referencedName:
|
|
|
80
80
|
export declare function getImportTemplateKomaciDocByResourceName(resourceName: string, templateKomaciDocMap?: {
|
|
81
81
|
[fName: string]: KomaciDocument;
|
|
82
82
|
}): KomaciDocument | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* multiple things can import something with the same base name before we fully process ast
|
|
85
|
+
* this makes sure we get import metadata for the right namespace.
|
|
86
|
+
* @param name the import name
|
|
87
|
+
* @param namespace the namespace to insure we get from
|
|
88
|
+
* @param moduleMetadata module metadata
|
|
89
|
+
* @returns the import if we could find it
|
|
90
|
+
*/
|
|
91
|
+
export declare function getImportFromNamespace(name: string, namespace: string, moduleMetadata: ModuleMetadata): ImportMetadata | undefined;
|
|
83
92
|
/**
|
|
84
93
|
* pull all needful import metadata we can from the ast
|
|
85
94
|
* for the most part, we can grab data from the komaci document for imports but sometimes
|
|
@@ -94,6 +103,14 @@ export declare function getImportTemplateKomaciDocByResourceName(resourceName: s
|
|
|
94
103
|
* @param ast ast for the given component
|
|
95
104
|
*/
|
|
96
105
|
export declare const collectImportMetadataFromAst: (ast: t.File, moduleMetadata: ModuleMetadata) => void;
|
|
106
|
+
/**
|
|
107
|
+
* Find the other import metadata object that references the same import with a different alias
|
|
108
|
+
* @param resourceName import resource path
|
|
109
|
+
* @param importedName the name as it comes from the import, an exported name, `default` or `*`
|
|
110
|
+
* @param moduleMetadata module metadata for this component
|
|
111
|
+
* @returns the import metadata if it is found
|
|
112
|
+
*/
|
|
113
|
+
export declare const findOtherAlias: (resourceName: string, importedName: string, moduleMetadata: ModuleMetadata) => ImportMetadata | undefined;
|
|
97
114
|
/**
|
|
98
115
|
* From a given adg, collect as much metadata as possible ONLY from the komaci document
|
|
99
116
|
*
|
package/build/moduleMetadata.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTemplateImport = exports.upliftFakePropsFromTemplate = exports.reconcileDefaultAdg = exports.isImportInvalid = exports.reconcilePrimingAdapater = exports.reconcileWireReference = exports.composeWireFunctionMetadata = exports.addTemplateUsageForAdg = exports.mapExportNamesToAdgs = exports.initalizeAdgMetadata = exports.collectImportMetadataFromAst = exports.getImportTemplateKomaciDocByResourceName = exports.updateAliasForImport = exports.addNewImportFromAst = exports.reconcileImport = exports.reconcileNamespace = exports.traverseAstImports = exports.composeImportMetadata = exports.initializeImportMetdataFromKomaciDocument = exports.initAdgMetadataObject = exports.initModuleMetadataObject = exports.NO_KOMACI_DOC_REF = void 0;
|
|
3
|
+
exports.isTemplateImport = exports.upliftFakePropsFromTemplate = exports.reconcileDefaultAdg = exports.isImportInvalid = exports.reconcilePrimingAdapater = exports.reconcileWireReference = exports.composeWireFunctionMetadata = exports.addTemplateUsageForAdg = exports.mapExportNamesToAdgs = exports.initalizeAdgMetadata = exports.findOtherAlias = exports.collectImportMetadataFromAst = exports.getImportFromNamespace = exports.getImportTemplateKomaciDocByResourceName = exports.updateAliasForImport = exports.addNewImportFromAst = exports.reconcileImport = exports.reconcileNamespace = exports.traverseAstImports = exports.composeImportMetadata = exports.initializeImportMetdataFromKomaciDocument = exports.initAdgMetadataObject = exports.initModuleMetadataObject = exports.NO_KOMACI_DOC_REF = void 0;
|
|
4
4
|
const allowlistNamespaces_1 = require("./allowlistNamespaces");
|
|
5
5
|
const komaciDocumentIntrospection_1 = require("./komaciDocumentIntrospection");
|
|
6
6
|
const types_1 = require("./types");
|
|
@@ -54,6 +54,7 @@ const initializeImportMetdataFromKomaciDocument = (doc, moduleMetadata, template
|
|
|
54
54
|
const namespace = {
|
|
55
55
|
names,
|
|
56
56
|
isSupported,
|
|
57
|
+
originalNames: names,
|
|
57
58
|
resourceName: importNamespace.resourceName,
|
|
58
59
|
isDefaultSpecifier: names.has('default'),
|
|
59
60
|
isNamespaceSpecifier: names.has('*'),
|
|
@@ -62,7 +63,10 @@ const initializeImportMetdataFromKomaciDocument = (doc, moduleMetadata, template
|
|
|
62
63
|
for (let j = 0; j < importNamespace.names.length; j++) {
|
|
63
64
|
const name = importNamespace.names[j];
|
|
64
65
|
const komaciDocImportRef = `${i}/names/${j}`;
|
|
65
|
-
|
|
66
|
+
// komaci doc references to other resolvable modules aren't going to ever be referenced by name so we can hoist them with the extra namespace
|
|
67
|
+
// this prevents collisions between the resolvable module and regular import
|
|
68
|
+
const importAlias = moduleMetadata.importsByName.has(name) ||
|
|
69
|
+
importNamespace.resourceName.startsWith('@salesforce/komaci')
|
|
66
70
|
? `${name}-${importNamespace.resourceName}`
|
|
67
71
|
: undefined;
|
|
68
72
|
(0, exports.composeImportMetadata)(name, importNamespace.resourceName, isSupported, templateAdgIndex !== undefined
|
|
@@ -200,6 +204,7 @@ const reconcileNamespace = (resourceName, moduleMetadata) => {
|
|
|
200
204
|
if (!namespace) {
|
|
201
205
|
namespace = {
|
|
202
206
|
names: new Set(),
|
|
207
|
+
originalNames: new Set(),
|
|
203
208
|
isSupported: allowlistNamespaces_1.isLocalHtmlImportReference.exec(resourceName)
|
|
204
209
|
? (0, allowlistNamespaces_1.isSupportedNamespace)(resourceName)
|
|
205
210
|
: (0, allowlistNamespaces_1.isNamespaceInternal)((0, allowlistNamespaces_1.getNamespaceFromImport)(resourceName)),
|
|
@@ -252,6 +257,13 @@ const addNewImportFromAst = (referencedName, namespace, moduleMetadata, original
|
|
|
252
257
|
}
|
|
253
258
|
moduleMetadata.importsByName.set(referencedName, importMetadata);
|
|
254
259
|
namespace.names.add(referencedName);
|
|
260
|
+
namespace.originalNames.add(originalImportName || referencedName);
|
|
261
|
+
if (originalImportName === 'default') {
|
|
262
|
+
namespace.isDefaultSpecifier = true;
|
|
263
|
+
}
|
|
264
|
+
else if (originalImportName === '*') {
|
|
265
|
+
namespace.isNamespaceSpecifier = true;
|
|
266
|
+
}
|
|
255
267
|
};
|
|
256
268
|
exports.addNewImportFromAst = addNewImportFromAst;
|
|
257
269
|
/**
|
|
@@ -263,13 +275,14 @@ exports.addNewImportFromAst = addNewImportFromAst;
|
|
|
263
275
|
* @param originalImportName (optional) the original name of the import that has been aliases. undefined if no alias.
|
|
264
276
|
*/
|
|
265
277
|
const updateAliasForImport = (lookupName, referencedName, namespace, moduleMetadata, originalImportName) => {
|
|
266
|
-
const importMetadata =
|
|
278
|
+
const importMetadata = getImportFromNamespace(lookupName, namespace.resourceName, moduleMetadata);
|
|
267
279
|
if (originalImportName && referencedName !== originalImportName && importMetadata) {
|
|
268
280
|
const isDefaultOrNamespace = originalImportName === '*' || originalImportName === 'default';
|
|
281
|
+
const oldAlias = importMetadata.importAlias || lookupName;
|
|
269
282
|
importMetadata.importAlias = referencedName;
|
|
283
|
+
moduleMetadata.importsByName.delete(oldAlias);
|
|
270
284
|
moduleMetadata.importsByName.set(referencedName, importMetadata);
|
|
271
|
-
|
|
272
|
-
namespace.names.delete(isDefaultOrNamespace ? originalImportName : lookupName);
|
|
285
|
+
namespace.names.delete(isDefaultOrNamespace ? originalImportName : oldAlias);
|
|
273
286
|
namespace.names.add(referencedName);
|
|
274
287
|
if (importMetadata.komaciDocImportRef !== exports.NO_KOMACI_DOC_REF) {
|
|
275
288
|
moduleMetadata.importIndexReference.set(importMetadata.komaciDocImportRef, referencedName);
|
|
@@ -294,6 +307,22 @@ function getImportTemplateKomaciDocByResourceName(resourceName, templateKomaciDo
|
|
|
294
307
|
return templateImportKomaciDoc;
|
|
295
308
|
}
|
|
296
309
|
exports.getImportTemplateKomaciDocByResourceName = getImportTemplateKomaciDocByResourceName;
|
|
310
|
+
/**
|
|
311
|
+
* multiple things can import something with the same base name before we fully process ast
|
|
312
|
+
* this makes sure we get import metadata for the right namespace.
|
|
313
|
+
* @param name the import name
|
|
314
|
+
* @param namespace the namespace to insure we get from
|
|
315
|
+
* @param moduleMetadata module metadata
|
|
316
|
+
* @returns the import if we could find it
|
|
317
|
+
*/
|
|
318
|
+
function getImportFromNamespace(name, namespace, moduleMetadata) {
|
|
319
|
+
let importMetadata = moduleMetadata.importsByName.get(name);
|
|
320
|
+
if (importMetadata?.resourceName !== namespace) {
|
|
321
|
+
importMetadata = moduleMetadata.importsByName.get(`${name}-${namespace}`);
|
|
322
|
+
}
|
|
323
|
+
return importMetadata;
|
|
324
|
+
}
|
|
325
|
+
exports.getImportFromNamespace = getImportFromNamespace;
|
|
297
326
|
/**
|
|
298
327
|
* pull all needful import metadata we can from the ast
|
|
299
328
|
* for the most part, we can grab data from the komaci document for imports but sometimes
|
|
@@ -310,15 +339,45 @@ exports.getImportTemplateKomaciDocByResourceName = getImportTemplateKomaciDocByR
|
|
|
310
339
|
const collectImportMetadataFromAst = (ast, moduleMetadata) => {
|
|
311
340
|
(0, exports.traverseAstImports)(ast, (lookupName, referencedName, resourceName, originalImportName) => {
|
|
312
341
|
const namespace = (0, exports.reconcileNamespace)(resourceName, moduleMetadata);
|
|
313
|
-
|
|
342
|
+
const existingImportMetadata = getImportFromNamespace(lookupName, resourceName, moduleMetadata);
|
|
343
|
+
if (!namespace.originalNames.has(originalImportName || referencedName)) {
|
|
314
344
|
(0, exports.addNewImportFromAst)(referencedName, namespace, moduleMetadata, originalImportName);
|
|
315
345
|
}
|
|
316
346
|
else {
|
|
347
|
+
const importMetadata = (0, exports.findOtherAlias)(resourceName, originalImportName || referencedName, moduleMetadata);
|
|
348
|
+
if (importMetadata) {
|
|
349
|
+
moduleMetadata.importsByName.set(referencedName, importMetadata);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (existingImportMetadata &&
|
|
353
|
+
existingImportMetadata.komaciDocImportRef !== exports.NO_KOMACI_DOC_REF &&
|
|
354
|
+
(!existingImportMetadata.importAlias ||
|
|
355
|
+
existingImportMetadata.importAlias ===
|
|
356
|
+
`${existingImportMetadata.name}-${resourceName}` ||
|
|
357
|
+
existingImportMetadata.importAlias === `namespace-${resourceName}`) &&
|
|
358
|
+
existingImportMetadata.name !== referencedName) {
|
|
317
359
|
(0, exports.updateAliasForImport)(lookupName, referencedName, namespace, moduleMetadata, originalImportName);
|
|
318
360
|
}
|
|
319
361
|
});
|
|
320
362
|
};
|
|
321
363
|
exports.collectImportMetadataFromAst = collectImportMetadataFromAst;
|
|
364
|
+
/**
|
|
365
|
+
* Find the other import metadata object that references the same import with a different alias
|
|
366
|
+
* @param resourceName import resource path
|
|
367
|
+
* @param importedName the name as it comes from the import, an exported name, `default` or `*`
|
|
368
|
+
* @param moduleMetadata module metadata for this component
|
|
369
|
+
* @returns the import metadata if it is found
|
|
370
|
+
*/
|
|
371
|
+
const findOtherAlias = (resourceName, importedName, moduleMetadata) => {
|
|
372
|
+
for (const importMetadata of moduleMetadata.importsByName.values()) {
|
|
373
|
+
if (importMetadata.resourceName === resourceName &&
|
|
374
|
+
importMetadata.name === importedName) {
|
|
375
|
+
return importMetadata;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return undefined;
|
|
379
|
+
};
|
|
380
|
+
exports.findOtherAlias = findOtherAlias;
|
|
322
381
|
/**
|
|
323
382
|
* From a given adg, collect as much metadata as possible ONLY from the komaci document
|
|
324
383
|
*
|
package/build/types.d.ts
CHANGED
|
@@ -56,6 +56,8 @@ export declare type ImportDetail = {
|
|
|
56
56
|
resourceName: string;
|
|
57
57
|
/** The names of the specific things imported */
|
|
58
58
|
names: Set<string>;
|
|
59
|
+
/** unique un-aliased names for all of the things imported. can include the specials like default and * */
|
|
60
|
+
originalNames: Set<string>;
|
|
59
61
|
/** If this import is a namespace */
|
|
60
62
|
isNamespaceSpecifier: boolean;
|
|
61
63
|
/** If this import contains a default specifier */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@komaci/common-shared",
|
|
3
|
-
"version": "242.3.
|
|
3
|
+
"version": "242.3.6",
|
|
4
4
|
"description": "Assets that are shared across Komaci commonjs packages",
|
|
5
5
|
"homepage": "https://komaci.dev/",
|
|
6
6
|
"repository": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"build/komaci-mapping.json"
|
|
30
30
|
],
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@komaci/types": "242.3.
|
|
32
|
+
"@komaci/types": "242.3.6"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@babel/core": "^7.9.0",
|