Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@lwc/metadata

Package Overview
Dependencies
Maintainers
14
Versions
128
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@lwc/metadata - npm Package Compare versions

Comparing version 2.20.0 to 2.20.2

dist/script-metadata/module-references/__tests__/salesforce-references/webstore.spec.d.ts

2

dist/bundle-metadata.js

@@ -78,3 +78,3 @@ 'use strict';

} */
const version = '2.20.0';
const version = '2.20.2';
function collectBundleMetadata(config) {

@@ -81,0 +81,0 @@ // validateBundleConfig(config);

@@ -28,10 +28,5 @@ 'use strict';

code: 1703,
message: 'Invalid module id "{0}".',
message: 'Invalid module identifier "{0}".',
level: errors.DiagnosticLevel.Error,
},
INVALID_USER_ID: {
code: 1708,
message: 'Invalid user import "{0}".',
level: errors.DiagnosticLevel.Error,
},
MISSING_RESOURCE_VALUE: {

@@ -92,12 +87,2 @@ code: 1704,

},
INVALID_SITE_ID: {
code: 1717,
message: 'Invalid site import "{0}".',
level: errors.DiagnosticLevel.Error,
},
INVALID_COMMERCE_IMPORT: {
code: 1718,
message: 'Invalid commerce import "{0}".',
level: errors.DiagnosticLevel.Error,
},
MODULES_DOES_NOT_SUPPORT_NAMESPACED_IMPORTS: {

@@ -104,0 +89,0 @@ code: 1719,

@@ -227,3 +227,3 @@ import { File, SourceLocation } from './common-metadata-types';

} | 'unresolved';
declare type SfdcResourceType = 'accessCheck' | 'apex' | 'apexMethod' | 'apexContinuation' | 'client' | 'commerce' | 'community' | 'component' | 'contentAssetUrl' | 'customPermission' | 'dynamicComponent' | 'messageChannel' | 'i18n' | 'gate' | 'label' | 'metric' | 'internal' | 'resourceUrl' | 'schema' | 'site' | 'slds' | 'user' | 'userPermission' | 'komaci';
declare type SfdcResourceType = 'accessCheck' | 'apex' | 'apexMethod' | 'apexContinuation' | 'client' | 'commerce' | 'community' | 'component' | 'contentAssetUrl' | 'customPermission' | 'dynamicComponent' | 'messageChannel' | 'i18n' | 'gate' | 'label' | 'metric' | 'internal' | 'resourceUrl' | 'schema' | 'site' | 'slds' | 'user' | 'userPermission' | 'komaci' | 'webstore';
interface ModuleReference {

@@ -230,0 +230,0 @@ name: string;

@@ -176,2 +176,9 @@ 'use strict';

traverse__default["default"](astRoot, {
enter(path) {
// Force the all the import declarations to be collected first. The other visitors
// depends on the collected imports data.
path.traverse({
ImportDeclaration: moduleImportsVisitor["default"](state, result),
});
},
CallExpression: callExpressionVisitor["default"](state, result),

@@ -183,3 +190,2 @@ Class: classVisitor["default"](state, result),

Import: dynamicImportsVisitor["default"](state, result),
ImportDeclaration: moduleImportsVisitor["default"](state, result),
NewExpression: newExpressionVisitor["default"](state, result),

@@ -186,0 +192,0 @@ });

@@ -6,6 +6,6 @@ 'use strict';

var errors = require('@lwc/errors');
var utils$1 = require('../../../shared/utils.js');
var errors$1 = require('../../../errors/errors.js');
var resolver = require('../../resolver.js');
var utils = require('./utils.js');
var utils$1 = require('../../../shared/utils.js');
var resolver = require('../../resolver.js');

@@ -12,0 +12,0 @@ // Copyright (c) 2022, Salesforce, Inc.,

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const ACCESS_CHECK_PREFIX = '@salesforce/accessCheck';
var accessCheckCollector = new genericPrefixSalesforceCollector["default"](ACCESS_CHECK_PREFIX);
var accessCheckCollector = utils.createSalesforceModuleCollector({
name: 'accessCheck',
});
exports["default"] = accessCheckCollector;
//# sourceMappingURL=access-check.js.map

@@ -1,3 +0,2 @@

import { CollectionStrategy } from '../main';
declare const clientCollector: CollectionStrategy;
export default clientCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,25 +5,11 @@ 'use strict';

var errors = require('../../../../errors/errors.js');
var utils = require('../utils.js');
var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
// Copyright (c) 2022, Salesforce, Inc.,
const CLIENT_PREFIX = '@salesforce/client';
const validClientImports = new Set([`${CLIENT_PREFIX}/formFactor`]);
const genericSalesforceCollector = new genericPrefixSalesforceCollector["default"](CLIENT_PREFIX);
const clientCollector = {
matches: (value) => genericSalesforceCollector.matches(value),
collect(value, node, state) {
if (!validClientImports.has(value)) {
throw new errors.MetadataCollectionError([
utils.createReferenceDiagnostic(node.source, state.fileName, errors.Errors.INVALID_MODULE_ID, [
value,
]),
]);
}
return genericSalesforceCollector.collect(value, node, state);
},
};
var clientCollector = utils.createSalesforceModuleCollector({
name: 'client',
allowlist: ['formFactor'],
});
exports["default"] = clientCollector;
//# sourceMappingURL=client.js.map

@@ -1,3 +0,2 @@

import { CollectionStrategy } from '../main';
declare const commerceCollector: CollectionStrategy;
export default commerceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,23 +5,11 @@ 'use strict';

var errors = require('../../../../errors/errors.js');
var utils = require('../utils.js');
var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
// Copyright (c) 2022, Salesforce, Inc.,
const COMMERCE_PREFIX = '@salesforce/commerce';
const validCommerceImports = new Set([`${COMMERCE_PREFIX}/webstoreId`]);
const genericSalesforceCollector = new genericPrefixSalesforceCollector["default"](COMMERCE_PREFIX);
const commerceCollector = {
matches: (value) => genericSalesforceCollector.matches(value),
collect(value, node, state) {
if (!validCommerceImports.has(value)) {
throw new errors.MetadataCollectionError([
utils.createReferenceDiagnostic(node.source, state.fileName, errors.Errors.INVALID_COMMERCE_IMPORT, [value]),
]);
}
return genericSalesforceCollector.collect(value, node, state);
},
};
var commerceCollector = utils.createSalesforceModuleCollector({
name: 'commerce',
allowlist: ['webstoreId'],
});
exports["default"] = commerceCollector;
//# sourceMappingURL=commerce.js.map

@@ -1,3 +0,2 @@

import { CollectionStrategy } from '../main';
declare const communityCollector: CollectionStrategy;
export default communityCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,26 +5,11 @@ 'use strict';

var errors = require('../../../../errors/errors.js');
var utils = require('../utils.js');
var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
// Copyright (c) 2022, Salesforce, Inc.,
const COMMUNITY_PREFIX = '@salesforce/community';
const validCommunityImports = new Set([
`${COMMUNITY_PREFIX}/Id`,
`${COMMUNITY_PREFIX}/basePath`,
]);
const genericSalesforceCollector = new genericPrefixSalesforceCollector["default"](COMMUNITY_PREFIX);
const communityCollector = {
matches: (value) => genericSalesforceCollector.matches(value),
collect(value, node, state) {
if (!validCommunityImports.has(value)) {
throw new errors.MetadataCollectionError([
utils.createReferenceDiagnostic(node.source, state.fileName, errors.Errors.INVALID_COMMUNITY_ID, [value]),
]);
}
return genericSalesforceCollector.collect(value, node, state);
},
};
var communityCollector = utils.createSalesforceModuleCollector({
name: 'community',
allowlist: ['Id', 'basePath'],
});
exports["default"] = communityCollector;
//# sourceMappingURL=community.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const CONTENT_ASSET_URL_PREFIX = '@salesforce/contentAssetUrl';
var contentAssetUrlCollector = new genericPrefixSalesforceCollector["default"](CONTENT_ASSET_URL_PREFIX);
var contentAssetUrlCollector = utils.createSalesforceModuleCollector({
name: 'contentAssetUrl',
});
exports["default"] = contentAssetUrlCollector;
//# sourceMappingURL=content-asset-url.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const CUSTOM_PERMISSIONS_PREFIX = '@salesforce/customPermission';
var customPermissionsCollector = new genericPrefixSalesforceCollector["default"](CUSTOM_PERMISSIONS_PREFIX);
var customPermissionsCollector = utils.createSalesforceModuleCollector({
name: 'customPermission',
});
exports["default"] = customPermissionsCollector;
//# sourceMappingURL=custom-permissions.js.map

@@ -1,3 +0,2 @@

import { CollectionStrategy } from '../main';
declare const designSystemCollector: CollectionStrategy;
export default designSystemCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,18 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const DESIGN_SYSTEM_PREFIX = '@salesforce/slds';
const prefixedCollector = new genericPrefixSalesforceCollector["default"](DESIGN_SYSTEM_PREFIX);
function isValidDesignSystemReference(value) {
return value.startsWith(DESIGN_SYSTEM_PREFIX);
}
const designSystemCollector = {
matches: isValidDesignSystemReference,
collect(value, node, state) {
return prefixedCollector.collect(value, node, state);
},
};
var designSystemCollector = utils.createSalesforceModuleCollector({
name: 'slds',
});
exports["default"] = designSystemCollector;
//# sourceMappingURL=design-system.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const GATE_PREFIX = '@salesforce/gate';
var gateCollector = new genericPrefixSalesforceCollector["default"](GATE_PREFIX);
var gateCollector = utils.createSalesforceModuleCollector({
name: 'gate',
});
exports["default"] = gateCollector;
//# sourceMappingURL=gate.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const I18N_PREFIX = '@salesforce/i18n';
var i18nCollector = new genericPrefixSalesforceCollector["default"](I18N_PREFIX);
var i18nCollector = utils.createSalesforceModuleCollector({
name: 'i18n',
});
exports["default"] = i18nCollector;
//# sourceMappingURL=i18n.js.map

@@ -1,3 +0,2 @@

import { CollectionStrategy } from '../main';
declare const internalCollector: CollectionStrategy;
export default internalCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,32 +5,11 @@ 'use strict';

var errors = require('../../../../errors/errors.js');
var utils = require('../utils.js');
var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
// Copyright (c) 2022, Salesforce, Inc.,
const INTERNAL_PREFIX = '@salesforce/internal';
// NOTE: Any component that depends on @salesforce/internal may not be portable,
// meaning that it will be a challenge for other containers at salesforce to support it,
// and even more challenging for customers of salesforce since they can't see what the values are.
const SUPPORTED_INTERNAL_SCOPED_IMPORTS = new Set([
INTERNAL_PREFIX + '/core.appVersion',
INTERNAL_PREFIX + '/core.securePort',
INTERNAL_PREFIX + '/core.untrustedContentDomain',
]);
const genericSalesforceCollector = new genericPrefixSalesforceCollector["default"](INTERNAL_PREFIX);
const internalCollector = {
matches: (value) => genericSalesforceCollector.matches(value),
collect(value, node, state) {
if (!SUPPORTED_INTERNAL_SCOPED_IMPORTS.has(value)) {
throw new errors.MetadataCollectionError([
utils.createReferenceDiagnostic(node.source, state.fileName, errors.Errors.INVALID_MODULE_ID, [
value,
]),
]);
}
return genericSalesforceCollector.collect(value, node, state);
},
};
var internalCollector = utils.createSalesforceModuleCollector({
name: 'internal',
allowlist: ['core.appVersion', 'core.securePort', 'core.untrustedContentDomain'],
});
exports["default"] = internalCollector;
//# sourceMappingURL=internal.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const LABEL_PREFIX = '@salesforce/label';
var labelCollector = new genericPrefixSalesforceCollector["default"](LABEL_PREFIX);
var labelCollector = utils.createSalesforceModuleCollector({
name: 'label',
});
exports["default"] = labelCollector;
//# sourceMappingURL=label.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const MESSAGE_CHANNEL_PREFIX = '@salesforce/messageChannel';
var messageChannelCollector = new genericPrefixSalesforceCollector["default"](MESSAGE_CHANNEL_PREFIX);
var messageChannelCollector = utils.createSalesforceModuleCollector({
name: 'messageChannel',
});
exports["default"] = messageChannelCollector;
//# sourceMappingURL=message-channel.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const METRIC_PREFIX = '@salesforce/metric';
var metricCollector = new genericPrefixSalesforceCollector["default"](METRIC_PREFIX);
var metricCollector = utils.createSalesforceModuleCollector({
name: 'metric',
});
exports["default"] = metricCollector;
//# sourceMappingURL=metric.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const RESOURCE_URL_PREFIX = '@salesforce/resourceUrl';
var resourceUrlCollector = new genericPrefixSalesforceCollector["default"](RESOURCE_URL_PREFIX);
var resourceUrlCollector = utils.createSalesforceModuleCollector({
name: 'resourceUrl',
});
exports["default"] = resourceUrlCollector;
//# sourceMappingURL=resource-url.js.map

@@ -1,3 +0,2 @@

import GenericPrefixSalesforceCollector from './generic-prefix-salesforce-collector';
declare const _default: GenericPrefixSalesforceCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,9 +5,10 @@ 'use strict';

var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
var utils = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const SCHEMA_PREFIX = '@salesforce/schema';
var schemaCollector = new genericPrefixSalesforceCollector["default"](SCHEMA_PREFIX);
var schemaCollector = utils.createSalesforceModuleCollector({
name: 'schema',
});
exports["default"] = schemaCollector;
//# sourceMappingURL=schema.js.map

@@ -1,3 +0,2 @@

import { CollectionStrategy } from '../main';
declare const siteCollector: CollectionStrategy;
export default siteCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,25 +5,11 @@ 'use strict';

var errors = require('../../../../errors/errors.js');
var utils = require('../utils.js');
var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
// Copyright (c) 2022, Salesforce, Inc.,
const SITE_PREFIX = '@salesforce/site';
const validSiteImports = new Set([`${SITE_PREFIX}/activeLanguages`, `${SITE_PREFIX}/Id`]);
const genericSalesforceCollector = new genericPrefixSalesforceCollector["default"](SITE_PREFIX);
const siteCollector = {
matches: (value) => genericSalesforceCollector.matches(value),
collect(value, node, state) {
if (!validSiteImports.has(value)) {
throw new errors.MetadataCollectionError([
utils.createReferenceDiagnostic(node.source, state.fileName, errors.Errors.INVALID_SITE_ID, [
value,
]),
]);
}
return genericSalesforceCollector.collect(value, node, state);
},
};
var siteCollector = utils.createSalesforceModuleCollector({
name: 'site',
allowlist: ['activeLanguages', 'Id'],
});
exports["default"] = siteCollector;
//# sourceMappingURL=site.js.map

@@ -1,3 +0,2 @@

import { CollectionStrategy } from '../main';
declare const userCollector: CollectionStrategy;
export default userCollector;
declare const _default: import("../main").CollectionStrategy;
export default _default;

@@ -5,25 +5,11 @@ 'use strict';

var errors = require('../../../../errors/errors.js');
var utils = require('../utils.js');
var genericPrefixSalesforceCollector = require('./generic-prefix-salesforce-collector.js');
// Copyright (c) 2022, Salesforce, Inc.,
const USER_PREFIX = '@salesforce/user';
const validUserImports = new Set([`${USER_PREFIX}/Id`, `${USER_PREFIX}/isGuest`]);
const genericSalesforceCollector = new genericPrefixSalesforceCollector["default"](USER_PREFIX);
const userCollector = {
matches: (value) => genericSalesforceCollector.matches(value),
collect(value, node, state) {
if (!validUserImports.has(value)) {
throw new errors.MetadataCollectionError([
utils.createReferenceDiagnostic(node.source, state.fileName, errors.Errors.INVALID_USER_ID, [
value,
]),
]);
}
return genericSalesforceCollector.collect(value, node, state);
},
};
var userCollector = utils.createSalesforceModuleCollector({
name: 'user',
allowlist: ['Id', 'isGuest'],
});
exports["default"] = userCollector;
//# sourceMappingURL=user.js.map

@@ -6,2 +6,3 @@ import * as t from '@babel/types';

import { ModuleReference, SfdcResourceType } from '../../../schema/typescript-types/script-metadata-types';
import { CollectionStrategy } from './main';
export declare const SALESFORCE_PREFIX = "@salesforce";

@@ -17,2 +18,7 @@ export declare function isValidImportForPrefix(prefix: string, source: string): boolean;

export declare function generateSalesforceReference(sourceNode: t.StringLiteral, moduleSpecifier: string, scoped: SfdcResourceType, id: string, namespaceMapping: NamespaceMapping, state: State): ModuleReference;
export declare function getSalesforceReference(prefix: string, moduleSpecifier: string, node: t.ExportAllDeclaration | t.ExportNamedDeclaration | t.ImportDeclaration, state: State): ModuleReference;
interface SalesforceModuleCollectorConfig {
name: SfdcResourceType;
allowlist?: string[];
}
export declare function createSalesforceModuleCollector(config: SalesforceModuleCollectorConfig): CollectionStrategy;
export {};

@@ -6,7 +6,7 @@ 'use strict';

var t = require('@babel/types');
var errors = require('@lwc/errors');
var errors$1 = require('@lwc/errors');
var sfdcCompilerUtils = require('@lwc/sfdc-compiler-utils');
var utils$1 = require('../../../shared/utils.js');
var errors$1 = require('../../../errors/errors.js');
var utils = require('../../utils.js');
var utils = require('../../../shared/utils.js');
var errors = require('../../../errors/errors.js');
var utils$1 = require('../../utils.js');

@@ -53,3 +53,3 @@ function _interopNamespace(e) {

function createReferenceDiagnostic(sourceNode, fileName, errorInfo, messageArgs) {
return errors.generateCompilerDiagnostic(errorInfo, {
return errors$1.generateCompilerDiagnostic(errorInfo, {
messageArgs,

@@ -69,5 +69,5 @@ origin: {

const { fileName, namespaceMapping } = state;
if (utils$1.isEmpty(moduleSpecifier)) {
throw new errors$1.MetadataCollectionError([
createReferenceDiagnostic(sourceNode, fileName, errors$1.Errors.MISSING_RESOURCE_VALUE, [
if (utils.isEmpty(moduleSpecifier)) {
throw new errors.MetadataCollectionError([
createReferenceDiagnostic(sourceNode, fileName, errors.Errors.MISSING_RESOURCE_VALUE, [
moduleSpecifier,

@@ -80,9 +80,9 @@ ]),

type: referenceType,
locations: [utils.generateSourceLocation(sourceNode, utils.QUOTE_LENGTH, utils.QUOTE_LENGTH)],
locations: [utils$1.generateSourceLocation(sourceNode, utils$1.QUOTE_LENGTH, utils$1.QUOTE_LENGTH)],
id: state.generateReferenceId('ModuleReference', moduleSpecifier),
};
const namespacedModuleSpecifier = !utils$1.isEmptyObject(namespaceMapping)
const namespacedModuleSpecifier = !utils.isEmptyObject(namespaceMapping)
? sfdcCompilerUtils.getNamespacedIdForResource(moduleSpecifier, namespaceMapping)
: undefined;
if (!utils$1.isUndefined(namespacedModuleSpecifier)) {
if (!utils.isUndefined(namespacedModuleSpecifier)) {
ref.namespacedName = namespacedModuleSpecifier;

@@ -98,4 +98,4 @@ }

if (node.type === 'ImportDeclaration' && hasNamedImport) {
throw new errors$1.MetadataCollectionError([
errors.generateCompilerDiagnostic(errors$1.Errors.MODULES_ONLY_SUPPORT_DEFAULT_IMPORTS, {
throw new errors.MetadataCollectionError([
errors$1.generateCompilerDiagnostic(errors.Errors.MODULES_ONLY_SUPPORT_DEFAULT_IMPORTS, {
messageArgs: [prefix],

@@ -131,3 +131,3 @@ origin: {

type: '@salesforce',
locations: [utils.generateSourceLocation(sourceNode, utils.QUOTE_LENGTH, utils.QUOTE_LENGTH)],
locations: [utils$1.generateSourceLocation(sourceNode, utils$1.QUOTE_LENGTH, utils$1.QUOTE_LENGTH)],
id: state.generateReferenceId('ModuleReference', moduleSpecifier),

@@ -140,3 +140,3 @@ };

const namespacedId = createNamespacedId(moduleSpecifier, namespaceMapping);
if (!utils$1.isUndefined(namespacedId)) {
if (!utils.isUndefined(namespacedId)) {
ref.sfdcResource.namespacedId = namespacedId;

@@ -146,16 +146,32 @@ }

}
function getSalesforceReference(prefix, moduleSpecifier, node, state) {
const source = node.source;
const { fileName, namespaceMapping } = state;
assertOnlyDefaultImport(node, fileName, prefix);
const scoped = prefix.substring(SALESFORCE_PREFIX.length + SLASH_LENGTH);
const id = getId(prefix, moduleSpecifier);
if (utils$1.isEmpty(id)) {
throw new errors$1.MetadataCollectionError([
createReferenceDiagnostic(source, fileName, errors$1.Errors.MISSING_RESOURCE_VALUE, [
moduleSpecifier,
]),
]);
}
return generateSalesforceReference(source, moduleSpecifier, scoped, id, namespaceMapping, state);
function createSalesforceModuleCollector(config) {
const prefix = `@salesforce/${config.name}`;
const allowedImports = config.allowlist
? new Set(config.allowlist.map((x) => `${prefix}/${x}`))
: null;
return {
matches(value) {
return value.startsWith(`${prefix}/`);
},
collect(value, node, state) {
const source = node.source;
const { fileName, namespaceMapping } = state;
// Check if the import is part of the allow list (if provided).
if (allowedImports && !allowedImports.has(value)) {
throw new errors.MetadataCollectionError([
createReferenceDiagnostic(node.source, state.fileName, errors.Errors.INVALID_MODULE_ID, [value]),
]);
}
assertOnlyDefaultImport(node, fileName, prefix);
const id = getId(prefix, value);
if (utils.isEmpty(id)) {
throw new errors.MetadataCollectionError([
createReferenceDiagnostic(source, fileName, errors.Errors.MISSING_RESOURCE_VALUE, [
value,
]),
]);
}
return generateSalesforceReference(source, value, config.name, id, namespaceMapping, state);
},
};
}

@@ -166,6 +182,6 @@

exports.createReferenceDiagnostic = createReferenceDiagnostic;
exports.createSalesforceModuleCollector = createSalesforceModuleCollector;
exports.generateSalesforceReference = generateSalesforceReference;
exports.getId = getId;
exports.getModuleReference = getModuleReference;
exports.getSalesforceReference = getSalesforceReference;
exports.isLwcReference = isLwcReference;

@@ -172,0 +188,0 @@ exports.isRelativeImport = isRelativeImport;

@@ -5,2 +5,4 @@ 'use strict';

var utils = require('../../shared/utils.js');
var utils$1 = require('../utils.js');
var main = require('./collectors/main.js');

@@ -25,11 +27,10 @@ var accessCheck = require('./collectors/scoped/access-check.js');

var user = require('./collectors/scoped/user.js');
var userPermissions = require('./collectors/scoped/user-permissions.js');
var userPermission = require('./collectors/scoped/user-permission.js');
var komaci = require('./collectors/scoped/komaci.js');
var webstore = require('./collectors/scoped/webstore.js');
var localModule = require('./collectors/local-module.js');
var genericModule = require('./collectors/generic-module.js');
var utils = require('../../shared/utils.js');
var utils$1 = require('../utils.js');
// Copyright (c) 2022, Salesforce, Inc.,
const availableCollectors = [
const PLATFORM_COLLECTORS = [
accessCheck["default"],

@@ -53,8 +54,12 @@ apex["default"],

user["default"],
userPermissions["default"],
userPermission["default"],
localModule["default"],
genericModule["default"],
webstore["default"],
];
/* module collectors that are not available on platform */
const internalOnlyCollectors = [komaci["default"]];
const INTERNAL_COLLECTORS = [...PLATFORM_COLLECTORS, komaci["default"]];
const COLLECTORS_MAP = {
platform: PLATFORM_COLLECTORS,
internal: INTERNAL_COLLECTORS,
};
function gatherModuleReference(node, state, result) {

@@ -66,3 +71,3 @@ const { moduleReferenceLookup } = state;

const { value: moduleSpecifier } = source;
let moduleReference = moduleReferenceLookup[moduleSpecifier];
let moduleReference = moduleReferenceLookup.get(moduleSpecifier);
if (!utils.isUndefined(moduleReference)) {

@@ -72,7 +77,5 @@ moduleReference.locations.push(utils$1.generateSourceLocation(source, utils$1.QUOTE_LENGTH, utils$1.QUOTE_LENGTH));

else {
moduleReference = main.collectReference(state.bundleType === 'internal'
? [...availableCollectors, ...internalOnlyCollectors]
: availableCollectors, node, state);
moduleReference = main.collectReference(COLLECTORS_MAP[state.bundleType], node, state);
result.moduleReferences.push(moduleReference);
moduleReferenceLookup[moduleSpecifier] = moduleReference;
moduleReferenceLookup.set(moduleSpecifier, moduleReference);
}

@@ -79,0 +82,0 @@ return moduleReference;

@@ -7,4 +7,11 @@ import { Scope } from '@babel/traverse';

export declare function resolveExportSpecifierExported(imported: t.ExportSpecifier['exported']): string;
export declare function resolveExpression(expression: t.Expression, scope: Scope): Value;
/**
* Resolve an expression to a Value.
* @param expression expression to resolve
* @param scope scope in which the expression was found
* @param unresolvedIdentifiers To detect ciruclar reference in identifiers
* @returns Resolved value
*/
export declare function resolveExpression(expression: t.Expression, scope: Scope, unresolvedIdentifiers?: Set<t.Identifier>): Value;
/**
* Return value resolution will be returned only if the code block contains a single return statement

@@ -11,0 +18,0 @@ * and no other statements, except for ExpressionStatement or declarations. Such limitation is

@@ -41,3 +41,3 @@ 'use strict';

}
function resolveIdentifier(identifier, scope) {
function resolveIdentifier(identifier, scope, unresolvedIdentifiers) {
const binding = scope.getBinding(identifier.name);

@@ -47,13 +47,21 @@ if (utils.isUndefined(binding)) {

}
const { kind, path, identifier: bindingIdentifier } = binding;
// If identifier is a constant and it has a initial value
if (binding.kind === 'const') {
if (binding.path.node.type === 'VariableDeclarator' &&
!utils.isNull(binding.path.node.init) &&
!utils.isUndefined(binding.path.node.init)) {
return resolveExpression(binding.path.node.init, scope);
if (kind === 'const') {
if (path.node.type === 'VariableDeclarator' &&
!utils.isNull(path.node.init) &&
!utils.isUndefined(path.node.init)) {
// If an unresolved identifier is visited twice in the current resolution cycle, there is a circular reference
if (unresolvedIdentifiers.has(bindingIdentifier)) {
return unresolved();
}
unresolvedIdentifiers.add(bindingIdentifier);
const value = resolveExpression(path.node.init, scope, unresolvedIdentifiers);
unresolvedIdentifiers.delete(bindingIdentifier);
return value;
}
}
else if (binding.kind === 'module') {
else if (kind === 'module') {
// If identifier is a value imported from an external module
const { parent, node } = binding.path;
const { parent, node } = path;
if (t__namespace.isImportDeclaration(parent)) {

@@ -192,3 +200,10 @@ if (t__namespace.isImportSpecifier(node)) {

}
function resolveExpression(expression, scope) {
/**
* Resolve an expression to a Value.
* @param expression expression to resolve
* @param scope scope in which the expression was found
* @param unresolvedIdentifiers To detect ciruclar reference in identifiers
* @returns Resolved value
*/
function resolveExpression(expression, scope, unresolvedIdentifiers = new Set()) {
switch (expression.type) {

@@ -200,3 +215,3 @@ case 'ArrayExpression':

if (t__namespace.isExpression(element)) {
return resolveExpression(element, scope);
return resolveExpression(element, scope, unresolvedIdentifiers);
}

@@ -236,3 +251,3 @@ else {

if (t__namespace.isExpression(property.value)) {
accumulator[key] = resolveExpression(property.value, scope);
accumulator[key] = resolveExpression(property.value, scope, unresolvedIdentifiers);
}

@@ -252,3 +267,3 @@ else {

case 'Identifier':
return resolveIdentifier(expression, scope);
return resolveIdentifier(expression, scope, unresolvedIdentifiers);
case 'MemberExpression':

@@ -255,0 +270,0 @@ return resolveMemberExpression(expression, scope);

@@ -19,5 +19,3 @@ import * as t from '@babel/types';

source: string;
moduleReferenceLookup: {
[moduleSpecifier: string]: ModuleReference;
};
moduleReferenceLookup: Map<string, ModuleReference>;
eventLookup: Map<t.NewExpression, DOMEvent>;

@@ -24,0 +22,0 @@ eventsPendingResolution: {

@@ -79,3 +79,3 @@ 'use strict';

// Lookup for module reference by module specifier, used incase a module is imported twice in the same file
this.moduleReferenceLookup = {};
this.moduleReferenceLookup = new Map();
this.eventLookup = new Map();

@@ -82,0 +82,0 @@ // Any unresolved Event references unresolved when EventDispatch was create will be updated in post processing

@@ -46,3 +46,3 @@ 'use strict';

moduleSpecifier,
refId: state.moduleReferenceLookup[moduleSpecifier].id,
refId: state.moduleReferenceLookup.get(moduleSpecifier)?.id,
location: utils.generateSourceLocation(superClass),

@@ -106,3 +106,3 @@ };

// Look up for processing getter/setter pair as a single class property
const visitedAccessors = {};
const visitedAccessors = new Map();
const classMemberPaths = path.get('body.body');

@@ -149,4 +149,4 @@ body.body.forEach((classMember, index$1) => {

// If this is the first time the property is being visited
let classPropertyMeta;
if (utils$1.isUndefined(visitedAccessors[memberName])) {
let classPropertyMeta = visitedAccessors.get(memberName);
if (utils$1.isUndefined(classPropertyMeta)) {
classPropertyMeta = {

@@ -160,8 +160,5 @@ type: 'Property',

};
visitedAccessors[memberName] = classPropertyMeta;
visitedAccessors.set(memberName, classPropertyMeta);
classMetadata.properties.push(classPropertyMeta);
}
else {
classPropertyMeta = visitedAccessors[memberName];
}
if (classMember.kind === 'get') {

@@ -168,0 +165,0 @@ const initialValue = resolver.resolveMethodReturnValue(classMember, classMemberPath.scope);

@@ -57,4 +57,37 @@ 'use strict';

}
if (collectionResult.ast) {
trimLocationFromAst(collectionResult.ast);
}
return collectionResult;
}
// Preorder traversal to strip location information from @lwc/template-compiler AST.
// This is needed for ADG only to reduce the memory footprint in prod.
// TODO: Once ADG has been replaced by Komaci remove trimLocationFromAst
function trimLocationFromAst(tmplAstNode) {
// There is validation in the metadata-v2tov1-adapter which relies on location information
// TODO: Once metadata v2 has replaced v1 isPreservedLocationNode should be removed.
if (!isPreservedLocationNode(tmplAstNode)) {
delete tmplAstNode.location;
delete tmplAstNode.directiveLocation;
}
for (const key of Object.keys(tmplAstNode)) {
const value = tmplAstNode[key];
if (value !== null && typeof value === 'object') {
if (Array.isArray(value)) {
for (const node of value) {
trimLocationFromAst(node);
}
}
else {
trimLocationFromAst(value);
}
}
}
}
function isPreservedLocationNode(node) {
return isDirective(node) && (node.name === 'InnerHTML' || node.name === 'Dynamic');
}
function isDirective(node) {
return node.type === 'Directive';
}
function collectTemplateMetadataFromAST(fileName, root, namespaceMapping) {

@@ -61,0 +94,0 @@ const result = generateEmptyResult(fileName);

{
"name": "@lwc/metadata",
"version": "2.20.0",
"version": "2.20.2",
"description": "Extract metadata about Lightning Web Components modules. This software is provided as-is with no support provided.",

@@ -13,3 +13,3 @@ "main": "dist/index.js",

"scripts": {
"clean": "rimraf dist/",
"clean": "rimraf dist/ && rimraf node_modules/",
"build": "rollup --config scripts/rollup.config.js"

@@ -26,5 +26,5 @@ },

"peerDependencies": {
"@lwc/sfdc-compiler-utils": "2.20.0",
"@lwc/errors": "~2.20.0",
"@lwc/template-compiler": "~2.20.0"
"@lwc/sfdc-compiler-utils": "2.20.2",
"@lwc/errors": "~2.20.2",
"@lwc/template-compiler": "~2.20.2"
},

@@ -31,0 +31,0 @@ "devDependencies": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc