rollup-plugin-realm-uri
Version:
Import deduplicated references to intrinsic values using realm: scheme URIs
1 lines • 27.7 kB
Source Map (JSON)
{"version":3,"file":"rollup-plugin-realm-uri.mjs","sources":["../src/util/is-identifier.mjs","../src/modules/contexts.mjs","../src/uri/well-known-symbols.mjs","../src/uri/key-types.mjs","../src/uri/targets.mjs","../src/uri/transforms.mjs","../src/uri/parse-realm-uri.mjs","../src/uri/render-realm-uri.mjs","../src/uri/canonicalize-realm-uri.mjs","../src/uri/is-realm-uri.mjs","../src/helpers/helpers.mjs","../src/helpers/is-helper-specifier.mjs","../src/util/read-file.mjs","../src/helpers/render-helper-module.mjs","../src/modules/render-module.mjs","../src/index.mjs"],"sourcesContent":["const IDENTIFIER = /^[\\p{ID_Start}$_][\\p{ID_Continue}$\\u200C\\u200D]*$/u;\n\nexport default function isIdentifier(value) {\n return IDENTIFIER.test(value);\n}\n","export default new Map([\n 'ArrayIteratorPrototype',\n 'AsyncFromSyncIteratorPrototype',\n 'AsyncFunction',\n 'AsyncFunctionPrototype',\n 'AsyncGenerator',\n 'AsyncGeneratorFunction',\n 'AsyncGeneratorPrototype',\n 'AsyncIteratorPrototype',\n 'Generator',\n 'GeneratorFunction',\n 'GeneratorPrototype',\n 'IteratorPrototype',\n 'MapIteratorPrototype',\n 'RegExpStringIteratorPrototype',\n 'SetIteratorPrototype',\n 'StringIteratorPrototype',\n 'ThrowTypeError',\n 'TypedArray',\n 'TypedArrayPrototype',\n 'globalThis'\n].map(name => [ name, toContextFileURL(name) ]));\n\nfunction toContextFileURL(name) {\n const slug = name.replace(/(?<=[a-z])(?=[A-Z])/g, '-').toLowerCase();\n return new URL(`../src/runtime/context-${ slug }.mjs`, import.meta.url);\n}\n","export default new Set([\n 'asyncIterator',\n 'hasInstance',\n 'isConcatSpreadable',\n 'iterator',\n 'match',\n 'matchAll',\n 'replace',\n 'search',\n 'species',\n 'split',\n 'toPrimitive',\n 'toStringTag',\n 'unscopables'\n]);\n","export const\n KEY_TYPE_GLOBAL_SYMBOL = Symbol('TYPE_GLOBAL_SYMBOL'),\n KEY_TYPE_STRING = Symbol('TYPE_STRING'),\n KEY_TYPE_WELL_KNOWN_SYMBOL = Symbol('TYPE_WELL_KNOWN_SYMBOL');\n","export const\n TARGET_DESCRIPTOR = Symbol('TARGET_DESCRIPTOR'),\n TARGET_GET = Symbol('TARGET_GET'),\n TARGET_SET = Symbol('TARGET_SET'),\n TARGET_VALUE = Symbol('TARGET_VALUE');\n\n","export const\n TRANSFORM_BIND = Symbol('TRANSFORM_BIND'),\n TRANSFORM_INVERT = Symbol('TRANSFORM_INVERT'),\n TRANSFORM_NONE = Symbol('TRANSFORM_NONE');\n\n","import CONTEXTS from '../modules/contexts.mjs';\nimport WELL_KNOWN_SYMBOLS from './well-known-symbols.mjs';\nimport isIdentifier from '../util/is-identifier.mjs';\n\nimport { KEY_TYPE_GLOBAL_SYMBOL, KEY_TYPE_STRING, KEY_TYPE_WELL_KNOWN_SYMBOL }\n from './key-types.mjs';\nimport { TARGET_DESCRIPTOR, TARGET_GET, TARGET_SET, TARGET_VALUE }\n from './targets.mjs';\nimport { TRANSFORM_BIND, TRANSFORM_INVERT, TRANSFORM_NONE }\n from './transforms.mjs';\n\nexport default function parseRealmURI(source) {\n try {\n const url = new URL(source);\n const { contextSource, pathSource } = splitPathSource(url.pathname);\n const context = parseContext(contextSource);\n const path = [ ...parsePath(pathSource) ];\n const target = getTarget(url.hash);\n const transform = getTransform(url.searchParams);\n\n if (target !== TARGET_VALUE && path.length === 0) {\n throw new URIError(`Only #value target is valid with empty path`);\n }\n\n if (transform === TRANSFORM_BIND && path.length === 0) {\n throw new URIError(`Bind transform cannot be used with an empty path`);\n }\n\n if (target === TARGET_DESCRIPTOR && transform !== TRANSFORM_NONE) {\n throw new URIError(`Only transform=none is valid with #descriptor`);\n }\n\n return { context, path, target, transform };\n } catch (err) {\n err.message += ` (specifier ${ source })`;\n throw err;\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n\nconst PATH_SEGMENT_COVER_GRAMMAR =\n /(?:(?:^|\\.)(?<ident>[^[.]+))|\\[(?<special>.+)\\]|(?<invalid>.+)/gusy;\n\nconst PATH_SEGMENT_SPECIAL_COVER_GRAMMAR =\n /^(?<symbol>@@)?(?:(?:\"(?<string>[^\"]*)\")|(?<badstring>\".*)|(?<ident>.+))$/s;\n\nconst PATHNAME_COVER_GRAMMAR =\n /^(?:(?<contextSource>[^/[]*)\\/)?(?<pathSource>.*)$/s;\n\n////////////////////////////////////////////////////////////////////////////////\n\nfunction assertIsIdentifier(value) {\n if (!isIdentifier(value)) {\n throw new URIError(quoted`${ value } is not an identifier`);\n }\n}\n\nfunction assertIsKnownContext(value) {\n if (!CONTEXTS.has(value)) {\n throw new URIError(quoted`${ value } is not a recognized context name`);\n }\n}\n\nfunction assertIsKnownSymbol(value) {\n if (!WELL_KNOWN_SYMBOLS.has(value)) {\n throw new URIError(quoted`${ value } is not a recognized symbol name`);\n }\n}\n\nfunction assertIsNotAFSIP(value) {\n if (value === 'AsyncFromSyncIteratorPrototype') {\n throw new URIError(\n `%AsyncFromSyncIteratorPrototype% is not implemented as a reachable, ` +\n `reified ES value in any engine presently. The spec will likely be ` +\n `amended to reflect web reality, in which case it should no longer be ` +\n `listed as a well-known intrinsic object.`\n );\n }\n}\n\nfunction getTarget(fragment) {\n switch (decodeURIComponent(fragment).toLowerCase()) {\n case '#d': case '#descriptor':\n return TARGET_DESCRIPTOR;\n case '#g': case '#get':\n return TARGET_GET;\n case '#s': case '#set':\n return TARGET_SET;\n case '#v': case '#value': case '':\n return TARGET_VALUE;\n default:\n throw new URIError(quoted`${ fragment } fragment is not valid`);\n }\n}\n\nfunction getTransform(usp) {\n let seen = false;\n let transform = TRANSFORM_NONE;\n\n for (const entry of usp) {\n const [ key, value ] = entry.map(str => str.toLowerCase());\n\n if (key !== 't' && key !== 'transform') {\n throw new URIError(quoted`${ key } query parameter key is not valid`);\n }\n\n if (seen) {\n throw new URIError('transform query parameter may appear only once');\n }\n\n seen = true;\n\n switch (value) {\n case 'b': case 'bind':\n transform = TRANSFORM_BIND;\n break;\n case 'i': case 'invert':\n transform = TRANSFORM_INVERT;\n break;\n case 'n': case 'none':\n transform = TRANSFORM_NONE;\n break;\n default:\n throw new URIError(quoted`${ value } transform is not valid`);\n }\n }\n\n return transform;\n}\n\nfunction parseContext(source='') {\n const context = decodeURIComponent(source) || 'globalThis';\n\n assertIsIdentifier(context);\n assertIsKnownContext(context);\n assertIsNotAFSIP(context);\n\n return context;\n}\n\nfunction * parsePath(source) {\n for (const { groups } of source.matchAll(PATH_SEGMENT_COVER_GRAMMAR)) {\n if (groups.ident) {\n yield parsePathSegmentIdent(groups.ident);\n } else if (groups.special) {\n yield parsePathSegmentSpecial(groups.special);\n } else {\n throw new URIError(quoted`Realm URI malformed at ${ groups.invalid }`);\n }\n }\n}\n\nfunction parsePathSegmentIdent(source) {\n const ident = decodeURIComponent(source);\n\n assertIsIdentifier(ident);\n\n return { type: KEY_TYPE_STRING, value: ident };\n}\n\nfunction parsePathSegmentSpecial(source) {\n const { groups } = source.match(PATH_SEGMENT_SPECIAL_COVER_GRAMMAR);\n\n if (groups.badstring) {\n throw new URIError(quoted`Unterminated string in property ${ source }`);\n }\n\n if (groups.ident) {\n if (!groups.symbol) {\n throw new URIError(quoted`${ source } is not a valid bracketed property`);\n }\n\n const ident = decodeURIComponent(groups.ident);\n\n assertIsIdentifier(ident);\n assertIsKnownSymbol(ident);\n\n return { type: KEY_TYPE_WELL_KNOWN_SYMBOL, value: ident };\n }\n\n return {\n type: groups.symbol ? KEY_TYPE_GLOBAL_SYMBOL : KEY_TYPE_STRING,\n value: decodeURIComponent(groups.string)\n };\n}\n\nfunction quoted(template, ...substitutions) {\n return String.raw(\n { raw: template },\n ...substitutions.map(value => JSON.stringify(value))\n );\n}\n\nfunction splitPathSource(pathname) {\n return pathname.match(PATHNAME_COVER_GRAMMAR).groups;\n}\n","import isIdentifier from '../util/is-identifier.mjs';\nimport { KEY_TYPE_STRING, KEY_TYPE_WELL_KNOWN_SYMBOL } from './key-types.mjs';\nimport { TARGET_DESCRIPTOR, TARGET_GET, TARGET_SET } from './targets.mjs';\nimport { TRANSFORM_BIND, TRANSFORM_INVERT } from './transforms.mjs';\n\nexport default function renderRealmURI({ context, path, target, transform }) {\n return new URL([\n 'realm:',\n ...renderContext(context),\n ...renderPath(path),\n ...renderQuery(transform),\n ...renderFragment(target)\n ].join('')).href;\n}\n\nfunction * renderContext(context) {\n if (context !== 'globalThis') {\n yield context;\n yield '/';\n }\n}\n\nfunction * renderFragment(target) {\n switch (target) {\n case TARGET_DESCRIPTOR:\n yield '#d';\n break;\n case TARGET_GET:\n yield '#g';\n break;\n case TARGET_SET:\n yield '#s';\n break;\n }\n}\n\nfunction * renderQuery(transform) {\n switch (transform) {\n case TRANSFORM_BIND:\n yield '?t=b';\n break;\n case TRANSFORM_INVERT:\n yield '?t=i';\n break;\n }\n}\n\nfunction * renderPath(path) {\n for (const [ index, segment ] of path.entries()) {\n yield * renderPathSegment(segment, index);\n }\n}\n\nfunction * renderPathSegment({ type, value }, index) {\n if (type === KEY_TYPE_STRING && isIdentifier(value)) {\n if (index !== 0) {\n yield '.';\n }\n\n yield value;\n } else {\n yield '[';\n\n if (type !== KEY_TYPE_STRING) {\n yield '@@';\n }\n\n if (type === KEY_TYPE_WELL_KNOWN_SYMBOL) {\n yield value;\n } else {\n yield `\"${ value.replace(/[#\"]/g, encodeURIComponent) }\"`;\n }\n\n yield ']';\n }\n}\n","import isIdentifier from '../util/is-identifier.mjs';\nimport parseRealmURI from './parse-realm-uri.mjs';\nimport renderRealmURI from './render-realm-uri.mjs';\n\nexport default function canonicalizeRealmURI(uri) {\n return renderRealmURI(parseRealmURI(uri));\n}\n","export default function isRealmURI(specifier) {\n try {\n return new URL(specifier).protocol === 'realm:';\n } catch {\n return false;\n }\n}\n","export default new Map([\n 'target-descriptor',\n 'target-get',\n 'target-set',\n 'transform-bind',\n 'transform-invert'\n].map(name => [\n `\\0realm:${ name }`,\n new URL(`../src/runtime/${ name }.mjs`, import.meta.url)\n]));\n","import HELPERS from './helpers.mjs';\n\nexport default function isRealmURIHelper(specifier) {\n return HELPERS.has(specifier);\n}\n","import fs from 'fs';\n\nexport default fs.promises.readFile;\n","import HELPERS from './helpers.mjs';\nimport readFile from '../util/read-file.mjs';\n\nexport default function renderRealmURIHelperModule(specifier) {\n return readFile(HELPERS.get(specifier), 'utf8');\n}\n","import CONTEXTS from './contexts.mjs';\nimport parseRealmURI from '../uri/parse-realm-uri.mjs';\nimport renderRealmURI from '../uri/render-realm-uri.mjs';\nimport isIdentifier from '../util/is-identifier.mjs';\nimport readFile from '../util/read-file.mjs';\n\nimport { KEY_TYPE_GLOBAL_SYMBOL, KEY_TYPE_STRING, KEY_TYPE_WELL_KNOWN_SYMBOL }\n from '../uri/key-types.mjs';\nimport { TARGET_DESCRIPTOR, TARGET_GET, TARGET_SET, TARGET_VALUE }\n from '../uri/targets.mjs';\nimport { TRANSFORM_BIND, TRANSFORM_INVERT, TRANSFORM_NONE }\n from '../uri/transforms.mjs';\n\nexport default function renderModule(specifier) {\n const { context, path, target, transform } = parseRealmURI(specifier);\n const lines = [];\n\n if (transform !== TRANSFORM_NONE) {\n lines.push(renderTransformImport(transform));\n lines.push(renderAncestor('fn', context, path, target));\n\n if (transform === TRANSFORM_INVERT) {\n lines.push(`export default transform(fn);\\n`);\n } else {\n lines.push(renderAncestor('lhs', context, path.slice(0, -1)));\n lines.push(`export default transform(fn, lhs);\\n`)\n }\n } else if (path.length === 0) {\n return readFile(CONTEXTS.get(context), 'utf8');\n } else {\n const keyDescriptor = path.pop();\n\n let keyExpression;\n let propertyAccess;\n\n lines.push(renderAncestor('lhs', context, path));\n\n switch (keyDescriptor.type) {\n case KEY_TYPE_GLOBAL_SYMBOL:\n lines.push(`import symbolFor from 'realm:Symbol.for';`);\n keyExpression = `symbolFor(${ JSON.stringify(keyDescriptor.value) })`;\n propertyAccess = `?.[${ keyExpression }]`;\n break;\n case KEY_TYPE_STRING:\n keyExpression = JSON.stringify(keyDescriptor.value);\n propertyAccess = isIdentifier(keyDescriptor.value)\n ? `?.${ keyDescriptor.value }`\n : `?.[${ keyExpression }]`;\n break;\n case KEY_TYPE_WELL_KNOWN_SYMBOL:\n lines.push(`import key from 'realm:Symbol.${ keyDescriptor.value }'`);\n keyExpression = 'key';\n propertyAccess = '?.[key]';\n break;\n }\n\n if (target === TARGET_VALUE) {\n lines.push(`export default lhs${ propertyAccess };\\n`);\n } else {\n lines.push(renderGetTargetImport(target));\n lines.push(`export default get(lhs, ${ keyExpression });\\n`);\n }\n }\n\n return lines.join('\\n');\n}\n\nfunction renderAncestor(id, context, path, target=TARGET_VALUE) {\n return `import ${ id } from ${ JSON.stringify(renderRealmURI({\n context, path, target,\n transform: TRANSFORM_NONE\n })) };`\n}\n\nfunction renderGetTargetImport(target) {\n switch (target) {\n case TARGET_DESCRIPTOR:\n return `import get from '\\0realm:target-descriptor';`\n case TARGET_GET:\n return `import get from '\\0realm:target-get';`\n case TARGET_SET:\n return `import get from '\\0realm:target-set';`\n }\n}\n\nfunction renderTransformImport(transform) {\n switch (transform) {\n case TRANSFORM_BIND:\n return `import transform from '\\0realm:transform-bind';`\n case TRANSFORM_INVERT:\n return `import transform from '\\0realm:transform-invert';`\n }\n}\n","import canonicalizeRealmURI from './uri/canonicalize-realm-uri.mjs';\nimport isRealmURI from './uri/is-realm-uri.mjs';\nimport isHelperSpecifier from './helpers/is-helper-specifier.mjs';\nimport renderHelperModule from './helpers/render-helper-module.mjs';\nimport renderModule from './modules/render-module.mjs';\n\nexport default function rollupPluginRealmURI() {\n return {\n name: 'realm-uri',\n resolveId: specifier =>\n isHelperSpecifier(specifier) ? specifier :\n isRealmURI(specifier) ? canonicalizeRealmURI(specifier) :\n null,\n load: specifier =>\n isHelperSpecifier(specifier) ? renderHelperModule(specifier) :\n isRealmURI(specifier) ? renderModule(specifier) :\n null\n };\n}\n"],"names":["isHelperSpecifier","renderHelperModule"],"mappings":"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"}