{"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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"}