{"version":3,"file":"build.mjs","sourceRoot":"","sources":["../../src/build.mts"],"names":[],"mappings":"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","sourcesContent":["import { globSync } from 'glob'\nimport { ConfigOption, isConfigOption } from 'jackspeak'\nimport { mkdirp } from 'mkdirp'\nimport { spawnSync } from 'node:child_process'\nimport { readFileSync, symlinkSync, writeFileSync } from 'node:fs'\nimport { lstat } from 'node:fs/promises'\nimport { createRequire } from 'node:module'\nimport { basename, dirname, relative, resolve } from 'node:path'\nimport { fileURLToPath } from 'node:url'\nimport { findPackageJson } from 'package-json-from-dist'\nimport { resolveImportSync } from 'resolve-import/resolve-import-sync'\nimport { rimrafSync } from 'rimraf'\nimport { walkUp } from 'walk-up-path'\nimport { setPluginCoreLink } from './set-plugin-core-link.js'\nimport { setPluginPackageJson } from './set-plugin-package-json.js'\n\nconst cwd = process.cwd()\nlet projectRoot = cwd\n// try to find a .tap folder, package.json file, or .taprc\nfor (const dir of walkUp(cwd)) {\n  const checks = await Promise.all(\n    ['.tap', '.taprc', '.git', 'package.json', 'node_modules'].map(\n      async x =>\n        lstat(x).then(\n          () => true,\n          () => false,\n        ),\n    ),\n  )\n  if (checks.find(x => x)) {\n    projectRoot = dir\n    break\n  }\n}\nconst pluginDir = resolve(projectRoot, '.tap/plugins')\n\n/* c8 ignore start - actually is tested, but can't collect coverage */\nif (typeof process.argv[2] !== 'string') {\n  console.error('usage: generate-tap-test-class [...plugins]')\n  process.exit(1)\n}\n/* c8 ignore stop */\n\n// set up the plugin directory\nconst core = dirname(\n  fileURLToPath(\n    resolveImportSync('@tapjs/core/package.json', import.meta.url),\n  ),\n)\n// link our @tapjs/core into the plugin env, to avoid duality\nsetPluginCoreLink(pluginDir, core)\nsetPluginPackageJson(pluginDir, core)\n\nconst pj = findPackageJson(import.meta.url)\nconst scriptsDir = resolve(dirname(pj), 'scripts')\n\nconst templateFile = resolve(scriptsDir, './test-template.ts')\nlet template = readFileSync(templateFile, 'utf8')\n\nconst defaultTarget = resolve(scriptsDir, '../test-built')\n\nconst sortedStrings = (s: string[]) =>\n  s.sort((a, b) => a.localeCompare(b, 'en'))\nconst sortedMapEntries = <T extends any>(m: Map<string, T>) =>\n  [...m.entries()].sort(([a], [b]) => a.localeCompare(b, 'en'))\nconst sortedMapValues = <T extends any>(m: Map<string, T>) =>\n  sortedMapEntries(m).map(([_, v]) => v)\n\n// override in testing, otherwise always the default\n/* c8 ignore start */\nconst dir = process.env._TESTING_TEST_BUILD_TARGET_ || defaultTarget\n/* c8 ignore stop */\n\nconst require = createRequire(dir + '/x')\nconst dirNM = resolve(dir, 'node_modules')\n\nrimrafSync(dirNM)\nmkdirp.sync(dir)\n// link the node_modules so it can find all installed plugins\nsymlinkSync(relative(dir, resolve(pluginDir, 'node_modules')), dirNM)\n\nmkdirp.sync(resolve(dir, 'src'))\nmkdirp.sync(resolve(dir, 'scripts'))\nconst out = resolve(dir, 'src/index.ts')\n\nconst copies = globSync(['LICENSE.md', 'package-template.json'], {\n  cwd: scriptsDir,\n})\nfor (const f of copies) {\n  const t = f === 'package-template.json' ? 'package.json' : f\n  writeFileSync(resolve(dir, t), readFileSync(resolve(scriptsDir, f)))\n}\n\nconst plugins = sortedStrings(process.argv.slice(2))\nconst seen = new Set<string>()\n\n// If a plugin does not appear in hasConfig, hasPlugin, or hasLoader,\n// raise an error and do not continue.\nconst hasConfig = new Map<string, string>()\nconst hasPlugin = new Map<string, string>()\n\n// has a loader, and no importLoader\nconst hasLoader = new Map<string, string>()\n// has an importLoader\nconst hasImport = new Map<string, string>()\n// the loader export, if an importLoader is present\nconst hasLoaderFallback = new Map<string, string>()\n\nconst preloaders = new Map<string, string>()\nconst preimports = new Map<string, string>()\nconst testFileExtensions = new Set<string>()\n\nconst signature = plugins.join('\\n')\nconst signatureCode = `export const signature = \\`${signature}\\`\n`\nconst configs = new Map<\n  string,\n  {\n    [field: string]: {\n      type: 'boolean' | 'string' | 'number'\n      multiple?: boolean | undefined\n      nodeArgs?: (value: any) => string[]\n      [k: string]: any\n    }\n  }\n>()\n\ntype PluginExport = {\n  plugin?: (...a: any[]) => any\n  config?: {\n    [k: string]: ConfigOption<'string' | 'number' | 'boolean', boolean>\n  } & { nodeArgs?: (value: any) => string[] }\n  loader?: string\n  importLoader?: string\n  preload?: boolean\n  testFileExtensions?: string[]\n}\n\nconst validPlugin = (p: any): p is PluginExport =>\n  !!p &&\n  typeof p === 'object' &&\n  /* c8 ignore start */\n  !!(p.plugin || p.loader || p.importLoader || p.config) &&\n  /* c8 ignore stop */\n  (p.plugin === undefined || typeof p.plugin === 'function') &&\n  (p.config === undefined ||\n    (!!p.config && typeof p.config === 'object')) &&\n  (p.loader === undefined || typeof p.loader === 'string') &&\n  (p.importLoader === undefined || typeof p.importLoader === 'string') &&\n  (p.preload === undefined || typeof p.preload === 'boolean')\n\nconst pluginNames = await Promise.all(\n  plugins.map(async p => {\n    // this also verifies that all plugins can be loaded, or it'll blow\n    // up at this point.\n    let imp: any\n    let req: any\n\n    try {\n      req = require(p)\n      /* c8 ignore start */\n    } catch (er) {\n      console.error(\n        `'${p}' does not appear to be a tap plugin. Could not load ` +\n          `module with require().`,\n        er instanceof Error ? er.message : er,\n      )\n      /* c8 ignore start */\n      process.exit(1)\n    }\n    if (!validPlugin(req)) {\n      const k = String(Object.keys(req))\n      const keys = k.length < 50 ? k : k.substring(0, 40) + '...'\n      console.error(\n        `'${p}' does not appear to be a tap plugin. When ` +\n          `loaded with require(), must export at least one of: ` +\n          'a plugin function, config object, loader module identifier, ' +\n          'or importLoader module identifier. Got: ' +\n          keys,\n      )\n      process.exit(1)\n    }\n\n    try {\n      imp = await import(String(resolveImportSync(p, dir + '/x')))\n    } catch (er) {\n      /* c8 ignore start */\n      console.error(\n        `'${p}' does not appear to be a tap plugin. Could not load ` +\n          `module with import().`,\n        er instanceof Error ? er.message : er,\n      )\n      /* c8 ignore start */\n      process.exit(1)\n    }\n    if (!validPlugin(imp)) {\n      const k = String(Object.keys(req))\n      const keys = k.length < 50 ? k : k.substring(0, 40) + '...'\n      console.error(\n        `'${p}' does not appear to be a tap plugin. When ` +\n          `loaded with import(), must export at least one of: ` +\n          'a plugin function, config object, loader module identifier, ' +\n          'or importLoader module identifier. Got: ' +\n          keys,\n      )\n      process.exit(1)\n    }\n\n    const n =\n      'Plugin_' +\n      basename(p)\n        .replace(/\\.([cm]?[jt]sx?)$/, '')\n        .replace(/[-_.]+(.)/g, (_, $1) => $1.toUpperCase())\n        .replace(/[^a-zA-Z0-9]+/g, ' ')\n        .trim()\n        .replace(' ', '_')\n    let name: string\n    if (!seen.has(n)) {\n      name = n\n    } else {\n      let i = 0\n      while (seen.has(n + '_' + ++i)) {}\n      const ni = `${n}_${i}`\n      name = ni\n    }\n    seen.add(name)\n    if (imp.config) {\n      hasConfig.set(p, name)\n      configs.set(p, imp.config)\n    }\n    if (typeof imp.plugin === 'function') {\n      hasPlugin.set(p, name)\n    }\n    if (typeof imp.importLoader === 'string') {\n      if (imp.preload === true) preimports.set(p, imp.importLoader)\n      hasImport.set(p, imp.importLoader)\n    }\n    if (typeof imp.loader === 'string') {\n      if (imp.preload === true) preloaders.set(p, imp.loader)\n      if (!imp.importLoader) hasLoader.set(p, imp.loader)\n      else hasLoaderFallback.set(p, imp.loader)\n    }\n\n    // we can't reasonably add more file types if we didn't add some\n    // functionality.\n    if (imp.testFileExtensions !== undefined) {\n      const invalidTestFileExtensions = () => {\n        console.error(\n          `'${p}' exports an invalid testFileExtensions. Must be string[].`,\n        )\n        process.exit(1)\n      }\n      if (!Array.isArray(imp.testFileExtensions)) {\n        invalidTestFileExtensions()\n      } else {\n        for (const k of imp.testFileExtensions) {\n          if (typeof k !== 'string') {\n            invalidTestFileExtensions()\n          }\n          testFileExtensions.add(k)\n        }\n      }\n    }\n    return name\n  }),\n)\n\nconst pluginImport = plugins\n  .map(\n    (p, i) => `import * as ${pluginNames[i]} from ${JSON.stringify(p)}\\n`,\n  )\n  .join('')\n\nconst pluginsConfig = (() => {\n  let code = `export const config = <C extends ConfigSet>(jack: Jack<C>) => `\n  if (!hasConfig.size) return code + 'jack\\n'\n\n  const nodeArgsHead =\n    `export const execArgv = (\\n` +\n    `  values: ReturnType<ReturnType<typeof config>['parse']>['values']\\n` +\n    `) => {\\n` +\n    `  const argv = []\\n`\n  const nodeArgsTail = '  return argv\\n}\\n\\n'\n  let nodeArgsDefs = ''\n  let nodeArgsBody = ''\n\n  code += '{\\n'\n  const hasConfigEntries = sortedMapEntries(hasConfig)\n  for (const [p, name] of hasConfigEntries) {\n    let c = 0\n    for (const [field, cfg] of Object.entries(configs.get(p) || {})) {\n      const jf = JSON.stringify(field)\n      const cn = `config_${name}_${c}`\n      const def = `  const ${cn} = ${name}.config[${jf}]\\n`\n      code += def\n      const t = JSON.stringify(cfg.type)\n      const m = JSON.stringify(!!cfg.multiple)\n      const msg = `Invalid config option '${field}' defined in plugin: '${p}'`\n      if (!isConfigOption(cfg, cfg.type, !!cfg.multiple)) {\n        console.error(msg)\n        process.exit(1)\n      }\n      const mc = JSON.stringify(msg)\n      code += `  if (!isConfigOption(${cn}, ${t}, ${m})) {\\n`\n      code += `    throw new Error(${mc})\\n`\n      code += '  }\\n'\n      if (typeof cfg.nodeArgs === 'function') {\n        const cv = `${cn}_value`\n        nodeArgsDefs += def\n        nodeArgsDefs += `  const ${cv} = values[${JSON.stringify(\n          field,\n        )}]\\n`\n        nodeArgsBody +=\n          `  if (${cv} !== undefined) {\\n` +\n          `    argv.push(...${cn}.nodeArgs(${cv}))\\n` +\n          `  }\\n`\n      }\n      c++\n    }\n  }\n\n  // now ts should know that they're all legit, and we've verified\n  // here as well, so the build would fail if they weren't.\n  code += '  return jack\\n'\n  for (const [p, name] of hasConfigEntries) {\n    let c = 0\n    const fp = `From plugin: ${p}`\n    code += `    .heading(${JSON.stringify(fp)})\\n`\n    for (const [field, cfg] of Object.entries(configs.get(p) || {})) {\n      const jf = JSON.stringify(field)\n      const fn =\n        (cfg.type === 'boolean' ? 'flag'\n        : cfg.type === 'number' ? 'num'\n        : 'opt') + (cfg.multiple ? 'List' : '')\n      code += `    .${fn}({ ${jf}: config_${name}_${c++} })\\n`\n    }\n  }\n\n  code += '}\\n'\n\n  const nodeArgs =\n    !nodeArgsDefs ? '' : (\n      nodeArgsHead + nodeArgsDefs + nodeArgsBody + nodeArgsTail\n    )\n  return nodeArgs + code\n})()\n\nconst pluginsCode = `export type PluginSet = ${\n  hasPlugin.size ?\n    `[\n${sortedMapValues(hasPlugin)\n  .map(name => `  typeof ${name}.plugin,\\n`)\n  .join('')}]`\n  : '(TapPlugin<any> | TapPlugin<any, TestBaseOpts>)[]'\n}\n\nconst plugins = () => {\n  if (plugins_) return plugins_\n  return (plugins_ = [\n${sortedMapValues(hasPlugin)\n  .map(name => `    ${name}.plugin,\\n`)\n  .join('')}  ])\n}\n`\n\nconst pluginLoaders = `const preloaders = new Set<string>(${JSON.stringify(\n  sortedMapValues(preloaders),\n  null,\n  2,\n)})\n\nconst preimports = new Set<string>(${JSON.stringify(\n  sortedMapValues(preimports),\n  null,\n  2,\n)})\n\n/**\n * The set of \\`loader\\` strings exported by plugins. If a plugin exports\n * \\`preload = true\\`, then it will be sorted to the start of this list, so\n * that Node loads it before other loaders.\n */\nexport const loaders: string[] = ${JSON.stringify(\n  sortedMapValues(hasLoader),\n  null,\n  2,\n)}.sort(\n  (a, b) => preloaders.has(a) && !preloaders.has(b) ? -1\n    : !preloaders.has(a) && preloaders.has(b) ? 1\n    : 0\n)\n\n/**\n * The set of \\`importLoader\\` strings exported by plugins, for use with\n * \\`Module.register\\` in node v20.6 and higher.\n */\nexport const importLoaders: string[] = ${JSON.stringify(\n  sortedMapValues(hasImport),\n  null,\n  2,\n)}.sort(\n  (a, b) => preimports.has(a) && !preimports.has(b) ? -1\n    : !preimports.has(a) && preimports.has(b) ? 1\n    : 0\n)\n\n/**\n * All \\`loader\\` strings exported by plugins, including fallbacks provided\n * for those that also export an \\`importLoader\\`\n */\nexport const loaderFallbacks: string[] = ${JSON.stringify(\n  sortedMapValues(new Map([...hasLoaderFallback, ...hasLoader])),\n  null,\n  2,\n)}.sort(\n  (a, b) => preloaders.has(a) && !preloaders.has(b) ? -1\n    : !preloaders.has(a) && preloaders.has(b) ? 1\n    : 0\n)\n\n`\n\nconst testFileExtensionsCode = sortedStrings([...testFileExtensions])\n  .map(ext => `testFileExtensions.add(${JSON.stringify(ext)})\\n`)\n  .join('')\n\nconst swapTag = (src: string, tag: string, code: string): string => {\n  const st = '//{{' + tag + ' START}}\\n'\n  const et = '//{{' + tag + ' END}}\\n'\n  const start = src.indexOf(st) + st.length\n  const end = src.indexOf(et)\n  const mid = src.substring(start, end)\n  return (\n    src.substring(0, start) +\n    // if it has something other than comments, include it\n    (mid.replace(/\\s*^\\/\\/.*\\n/gm, '').trim() &&\n      mid.trimEnd().replace(/^/gm, '// ') + '\\n') +\n    code +\n    src.substring(end)\n  )\n}\n\nconst swapTags = (src: string, tags: { [k: string]: string }): string => {\n  let res = src\n  for (const [tag, code] of Object.entries(tags)) {\n    res = swapTag(res, tag, code)\n  }\n  return res\n}\n\nwriteFileSync(\n  out,\n  swapTags(template, {\n    'HEADER COMMENT': `// This file is automatically generated, edits will be lost on rebuild\\n`,\n    'PLUGIN IMPORT': pluginImport,\n    'PLUGINS CODE': pluginsCode,\n    'PLUGINS CONFIG': pluginsConfig,\n    'PLUGIN SIGNATURE': signatureCode,\n    LOADERS: pluginLoaders,\n    'FILE TYPES': testFileExtensionsCode,\n  }),\n)\n\nconst tshy = fileURLToPath(resolveImportSync('tshy', import.meta.url))\n\nconst res = spawnSync(process.execPath, [tshy], {\n  cwd: dir,\n  stdio: 'inherit',\n})\n\nif (res.status !== 0 || res.signal !== null) {\n  console.error('tap build failed', {\n    code: res.status,\n    signal: res.signal,\n    ...(res.error && { error: res.error }),\n  })\n  process.exitCode = 1\n}\n\nexport {}\n"]}