Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions lib/compile/codegen/code.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ export function getProperty(key: Code | string | number): Code {

//Does best effort to format the name properly
export function getEsmExportName(key: Code | string | number): Code {
if (typeof key == "string" && IDENTIFIER.test(key)) {
return new _Code(`${key}`)
if (typeof key == "string") {
return IDENTIFIER.test(key) ? new _Code(`${key}`) : _`${key}`
}
throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)
}
Expand Down
8 changes: 4 additions & 4 deletions lib/standalone/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ function standaloneCode(
const vCode = validateCode(usedValues, source)
if (ajv.opts.code.esm) {
// Always do named export as `validate` rather than the variable `n` which is `validateXX` for known export value
return `"use strict";${_n}export const validate = ${n};${_n}export default ${n};${_n}${vCode}`
return `"use strict";${_n}export {${n} as validate,${_n}${n} as default};${_n}${vCode}`
}
return `"use strict";${_n}module.exports = ${n};${_n}module.exports.default = ${n};${_n}${vCode}`
}
Expand All @@ -48,9 +48,9 @@ function standaloneCode(
if (v) {
const vCode = validateCode(usedValues, v.source)
const exportSyntax = ajv.opts.code.esm
? _`export const ${getEsmExportName(name)}`
: _`exports${getProperty(name)}`
code = _`${code}${_n}${exportSyntax} = ${v.source?.validateName};${_n}${vCode}`
? _`export { ${v.source?.validateName} as ${getEsmExportName(name)} };`
: _`exports${getProperty(name)} = ${v.source?.validateName};`
code = _`${code}${_n}${exportSyntax}${_n}${vCode}`
}
}
return `${code}`
Expand Down
4 changes: 2 additions & 2 deletions spec/standalone.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import assert = require("assert")

function testExportTypeEsm(moduleCode: string, singleExport: boolean) {
//Must have
assert.strictEqual(moduleCode.includes("export const"), true)
assert.strictEqual(moduleCode.includes("export {"), true)
if (singleExport) {
assert.strictEqual(moduleCode.includes("export default"), true)
assert.strictEqual(moduleCode.includes("as default"), true)
}
//Must not have
assert.strictEqual(moduleCode.includes("module.exports"), false)
Expand Down