Socket
Socket
Sign inDemoInstall

@jsenv/import-map

Package Overview
Dependencies
Maintainers
2
Versions
41
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jsenv/import-map - npm Package Compare versions

Comparing version 6.9.0 to 6.9.1

dist/esm/main.js

18

package.json
{
"name": "@jsenv/import-map",
"version": "6.9.0",
"version": "6.9.1",
"description": "Helpers to implement importmaps.",

@@ -40,3 +40,3 @@ "license": "MIT",

"upload-coverage": "node ./script/upload-coverage/upload-coverage.js",
"generate-esmodule-bundle": "node --no-warnings ./script/generate-esmodule-bundle/generate-esmodule-bundle.js",
"generate-esmodule-bundle": "node ./script/generate-esmodule-bundle/generate-esmodule-bundle.js",
"generate-commonjs-bundle": "node ./script/generate-commonjs-bundle/generate-commonjs-bundle.js",

@@ -52,15 +52,15 @@ "generate-import-map": "node --no-warnings ./script/generate-import-map/generate-import-map.js",

"@jsenv/codecov-upload": "3.4.2",
"@jsenv/core": "15.0.3",
"@jsenv/eslint-config": "12.5.0",
"@jsenv/core": "16.5.1",
"@jsenv/eslint-config": "12.6.0",
"@jsenv/github-release-package": "1.2.2",
"@jsenv/node-module-import-map": "12.0.2",
"@jsenv/node-module-import-map": "12.2.0",
"@jsenv/package-publish": "1.5.1",
"@jsenv/prettier-check-project": "5.6.1",
"babel-eslint": "11.0.0-beta.0",
"eslint": "7.10.0",
"playwright-chromium": "1.4.2",
"playwright-firefox": "1.4.2",
"playwright-webkit": "1.4.2",
"eslint": "7.12.1",
"playwright-chromium": "1.5.2",
"playwright-firefox": "1.5.2",
"playwright-webkit": "1.5.2",
"prettier": "2.1.2"
}
}
// https://github.com/systemjs/systemjs/blob/89391f92dfeac33919b0223bbf834a1f4eea5750/src/common.js#L136
import { assertImportMap } from "./internal/assertImportMap.js"
import { resolveUrl } from "./resolveUrl.js"

@@ -27,3 +28,3 @@ export const composeTwoImportMaps = (leftImportMap, rightImportMap) => {

if (leftHasScopes && rightHasScopes) {
importMap.scopes = composeTwoScopes(leftScopes, rightScopes)
importMap.scopes = composeTwoScopes(leftScopes, rightScopes, importMap.imports || {})
} else if (leftHasScopes) {

@@ -39,25 +40,61 @@ importMap.scopes = { ...leftScopes }

const composeTwoImports = (leftImports, rightImports) => {
return {
...leftImports,
...rightImports,
}
const topLevelMappings = {}
Object.keys(leftImports).forEach((leftSpecifier) => {
if (objectHasKey(rightImports, leftSpecifier)) {
// will be overidden
return
}
const leftAddress = leftImports[leftSpecifier]
const rightSpecifier = Object.keys(rightImports).find((rightSpecifier) => {
return compareAddressAndSpecifier(leftAddress, rightSpecifier)
})
topLevelMappings[leftSpecifier] = rightSpecifier ? rightImports[rightSpecifier] : leftSpecifier
})
Object.keys(rightImports).forEach((rightSpecifier) => {
topLevelMappings[rightSpecifier] = rightImports[rightSpecifier]
})
return topLevelMappings
}
const composeTwoScopes = (leftScopes, rightScopes) => {
const scopes = {
...leftScopes,
}
Object.keys(rightScopes).forEach((scopeKey) => {
if (scopes.hasOwnProperty(scopeKey)) {
scopes[scopeKey] = {
...scopes[scopeKey],
...rightScopes[scopeKey],
}
const objectHasKey = (object, key) => Object.prototype.hasOwnProperty.call(object, key)
const compareAddressAndSpecifier = (address, specifier) => {
const addressUrl = resolveUrl(address, "file:///")
const specifierUrl = resolveUrl(specifier, "file:///")
return addressUrl === specifierUrl
}
const composeTwoScopes = (leftScopes, rightScopes, topLevelRemappings) => {
const scopedRemappings = {}
Object.keys(leftScopes).forEach((leftScopeKey) => {
if (objectHasKey(rightScopes, leftScopeKey)) {
// will be merged
scopedRemappings[leftScopeKey] = leftScopes[leftScopeKey]
return
}
const topLevelSpecifier = Object.keys(topLevelRemappings).find((topLevelSpecifierCandidate) => {
return compareAddressAndSpecifier(leftScopeKey, topLevelSpecifierCandidate)
})
if (topLevelSpecifier) {
scopedRemappings[topLevelRemappings[topLevelSpecifier]] = leftScopes[leftScopeKey]
} else {
scopes[scopeKey] = {
...rightScopes[scopeKey],
scopedRemappings[leftScopeKey] = leftScopes[leftScopeKey]
}
})
Object.keys(rightScopes).forEach((rightScopeKey) => {
if (objectHasKey(scopedRemappings, rightScopeKey)) {
scopedRemappings[rightScopeKey] = composeTwoImports(
scopedRemappings[rightScopeKey],
rightScopes[rightScopeKey],
)
} else {
scopedRemappings[rightScopeKey] = {
...rightScopes[rightScopeKey],
}
}
})
return scopes
return scopedRemappings
}

@@ -7,5 +7,6 @@ import { assertImportMap } from "./internal/assertImportMap.js"

const { imports, scopes } = importMap
return {
imports: imports ? sortImports(imports) : undefined,
scopes: scopes ? sortScopes(scopes) : undefined,
...(imports ? { imports: sortImports(imports) } : {}),
...(scopes ? { scopes: sortScopes(scopes) } : {}),
}

@@ -12,0 +13,0 @@ }

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