rollup-swc-preserve-directives
Advanced tools
Comparing version 0.1.0 to 0.2.0
@@ -13,3 +13,3 @@ Object.defineProperty(exports, '__esModule', { value: true }); | ||
shebang: null, | ||
directives: new Set() | ||
directives: {} | ||
}; | ||
@@ -31,3 +31,7 @@ return { | ||
}; | ||
const { body, interpreter } = await core.parse(code, parseOptions); | ||
let magicString$1 = null; | ||
/** | ||
* @swc/core's node span doesn't start with 0 | ||
* https://github.com/swc-project/swc/issues/1366 | ||
*/ const { body, interpreter, span: { start: offset } } = await core.parse(code, parseOptions); | ||
if (interpreter) { | ||
@@ -41,3 +45,7 @@ meta.shebang = `#!${interpreter}`; | ||
if (node.expression.type === 'StringLiteral' && directiveRegex.test(node.expression.value)) { | ||
meta.directives.add(node.expression.value); | ||
var _meta_directives, _id; | ||
(_meta_directives = meta.directives)[_id = id] || (_meta_directives[_id] = new Set()); | ||
meta.directives[id].add(node.expression.value); | ||
magicString$1 || (magicString$1 = new magicString.MagicString(code)); | ||
magicString$1.remove(node.span.start - offset, node.span.end - offset); | ||
} | ||
@@ -49,20 +57,32 @@ } else { | ||
return { | ||
code, | ||
map: null, | ||
meta | ||
code: magicString$1 ? magicString$1.toString() : code, | ||
map: magicString$1 ? magicString$1.generateMap({ | ||
hires: true | ||
}).toMap() : null | ||
}; | ||
}, | ||
renderChunk (code, _chunk, { sourcemap }) { | ||
const { shebang, directives } = meta; | ||
if (!directives.size && !shebang) return null; | ||
const s = new magicString.MagicString(code); | ||
if (directives.size) { | ||
s.prepend(`${Array.from(directives).map((directive)=>`'${directive}';`).join('\n')}\n`); | ||
renderChunk (code, chunk, { sourcemap }) { | ||
const outputDirectives = chunk.moduleIds.map((id)=>{ | ||
if (meta.directives[id]) { | ||
return meta.directives[id]; | ||
} | ||
return null; | ||
}).reduce((acc, directives)=>{ | ||
if (directives) { | ||
directives.forEach((directive)=>acc.add(directive)); | ||
} | ||
return acc; | ||
}, new Set()); | ||
let magicString$1 = null; | ||
if (outputDirectives.size) { | ||
magicString$1 || (magicString$1 = new magicString.MagicString(code)); | ||
magicString$1.prepend(`${Array.from(outputDirectives).map((directive)=>`'${directive}';`).join('\n')}\n`); | ||
} | ||
if (shebang) { | ||
s.prepend(`${shebang}\n`); | ||
if (meta.shebang) { | ||
magicString$1 || (magicString$1 = new magicString.MagicString(code)); | ||
magicString$1.prepend(`${meta.shebang}\n`); | ||
} | ||
return { | ||
code: s.toString(), | ||
map: sourcemap ? s.generateMap({ | ||
code: magicString$1 ? magicString$1.toString() : code, | ||
map: sourcemap && magicString$1 ? magicString$1.generateMap({ | ||
hires: true | ||
@@ -69,0 +89,0 @@ }).toMap() : null |
@@ -11,3 +11,3 @@ import { extname } from 'path'; | ||
shebang: null, | ||
directives: new Set() | ||
directives: {} | ||
}; | ||
@@ -29,3 +29,7 @@ return { | ||
}; | ||
const { body, interpreter } = await parse(code, parseOptions); | ||
let magicString = null; | ||
/** | ||
* @swc/core's node span doesn't start with 0 | ||
* https://github.com/swc-project/swc/issues/1366 | ||
*/ const { body, interpreter, span: { start: offset } } = await parse(code, parseOptions); | ||
if (interpreter) { | ||
@@ -39,3 +43,7 @@ meta.shebang = `#!${interpreter}`; | ||
if (node.expression.type === 'StringLiteral' && directiveRegex.test(node.expression.value)) { | ||
meta.directives.add(node.expression.value); | ||
var _meta_directives, _id; | ||
(_meta_directives = meta.directives)[_id = id] || (_meta_directives[_id] = new Set()); | ||
meta.directives[id].add(node.expression.value); | ||
magicString || (magicString = new MagicString(code)); | ||
magicString.remove(node.span.start - offset, node.span.end - offset); | ||
} | ||
@@ -47,20 +55,32 @@ } else { | ||
return { | ||
code, | ||
map: null, | ||
meta | ||
code: magicString ? magicString.toString() : code, | ||
map: magicString ? magicString.generateMap({ | ||
hires: true | ||
}).toMap() : null | ||
}; | ||
}, | ||
renderChunk (code, _chunk, { sourcemap }) { | ||
const { shebang, directives } = meta; | ||
if (!directives.size && !shebang) return null; | ||
const s = new MagicString(code); | ||
if (directives.size) { | ||
s.prepend(`${Array.from(directives).map((directive)=>`'${directive}';`).join('\n')}\n`); | ||
renderChunk (code, chunk, { sourcemap }) { | ||
const outputDirectives = chunk.moduleIds.map((id)=>{ | ||
if (meta.directives[id]) { | ||
return meta.directives[id]; | ||
} | ||
return null; | ||
}).reduce((acc, directives)=>{ | ||
if (directives) { | ||
directives.forEach((directive)=>acc.add(directive)); | ||
} | ||
return acc; | ||
}, new Set()); | ||
let magicString = null; | ||
if (outputDirectives.size) { | ||
magicString || (magicString = new MagicString(code)); | ||
magicString.prepend(`${Array.from(outputDirectives).map((directive)=>`'${directive}';`).join('\n')}\n`); | ||
} | ||
if (shebang) { | ||
s.prepend(`${shebang}\n`); | ||
if (meta.shebang) { | ||
magicString || (magicString = new MagicString(code)); | ||
magicString.prepend(`${meta.shebang}\n`); | ||
} | ||
return { | ||
code: s.toString(), | ||
map: sourcemap ? s.generateMap({ | ||
code: magicString ? magicString.toString() : code, | ||
map: sourcemap && magicString ? magicString.generateMap({ | ||
hires: true | ||
@@ -67,0 +87,0 @@ }).toMap() : null |
{ | ||
"name": "rollup-swc-preserve-directives", | ||
"version": "0.1.0", | ||
"version": "0.2.0", | ||
"description": "Rollup plugin to preserve directives with SWC", | ||
@@ -19,5 +19,13 @@ "types": "./dist/index.d.ts", | ||
"build": "bunchee", | ||
"prepublishOnly": "rm -rf dist && pnpm run build" | ||
"prepublishOnly": "rm -rf dist && pnpm run build", | ||
"test": "jest --env node", | ||
"test:update": "jest --env node --updateSnapshot" | ||
}, | ||
"keywords": [], | ||
"keywords": [ | ||
"rollup", | ||
"plugin", | ||
"swc", | ||
"preserve", | ||
"directives" | ||
], | ||
"author": "huozhi", | ||
@@ -35,7 +43,12 @@ "license": "MIT", | ||
"@swc/helpers": "^0.5.1", | ||
"@swc/jest": "^0.2.26", | ||
"@types/jest": "^29.5.2", | ||
"@types/node": "^20.4.1", | ||
"bunchee": "^3.5.1", | ||
"jest": "^29.6.1", | ||
"rollup": "^3.26.2", | ||
"rollup-plugin-swc3": "^0.9.0", | ||
"typescript": "^5.1.6" | ||
} | ||
}, | ||
"packageManager": "pnpm@7.24.3" | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
9421
5
178
0
34
10