{"version":3,"sources":["../../../bin/zipup.ts","../../../bin/find-root.ts","../../../bin/version.ts","../../../bin/continuous-integration.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */\n\nimport archiver from 'archiver'\nimport * as fs from 'node:fs'\nimport * as path from 'node:path'\n\nimport { glob } from 'glob'\nimport { root } from './find-root'\nimport { version } from './version'\n\nconst [, , source, target, ...exclude] = process.argv\nconst excludes = exclude.map(ext => ext.toLowerCase())\n\nif (!source) {\n  console.info('zipup <source> <target> ...<exclude patterns>')\n  process.exit(1)\n}\n\nconst xpi = path.join(root, 'xpi', `${target}-${version()}.xpi`)\nconsole.log(`creating ${xpi}`) // eslint-disable-line no-console\nif (fs.existsSync(xpi)) fs.unlinkSync(xpi)\nif (!fs.existsSync(path.dirname(xpi))) fs.mkdirSync(path.dirname(xpi))\n\nasync function main() {\n  const build = path.join(root, source)\n  let files = await glob('**/*', {\n    nodir: true,\n    cwd: build,\n  })\n  files = files.filter(file => !excludes.find(ext => file.toLowerCase().endsWith(ext)))\n\n  await new Promise<void>((resolve, reject) => {\n    const xpi = path.join(root, 'xpi', `${target}-${version()}.xpi`)\n    const output = fs.createWriteStream(xpi)\n    const archive = archiver('zip', { zlib: { level: 9 } })\n\n    output.on('close', () => {\n      console.log(archive.pointer() + ' total bytes')\n      resolve()\n    })\n\n    archive.on('warning', err => {\n      if (err.code === 'ENOENT') {\n        console.warn(err.message)\n      }\n      else {\n        console.error(err)\n      }\n    })\n\n    archive.on('error', err => {\n      reject(err)\n    })\n\n    archive.pipe(output)\n\n    for (const file of files) {\n      archive.file(path.join(build, file), { name: file })\n    }\n\n    archive.finalize()\n  })\n}\n\nmain().catch(err => {\n  console.log(err)\n  process.exit(1)\n})\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nconst folders = process.cwd().split(path.sep)\nconst rootIndex = folders.findIndex((folder: string, i: number) => fs.existsSync(path.join(folders.slice(0, i + 1).join(path.sep), 'package.json')))\nexport const root = (rootIndex > 0 ? folders.slice(0, rootIndex + 1) : folders).join(path.sep)\nconsole.log('project directory:', root)\n\nexport const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf-8'))\n","#!/usr/bin/env node\n\nimport fs from 'node:fs'\nimport os from 'node:os'\nimport path from 'node:path'\n\nimport { ContinuousIntegration as CI } from './continuous-integration'\nimport { pkg, root } from './find-root'\n\nexport function version(): string {\n  let $version = pkg.version as string\n\n  if (CI.service && !CI.tag) {\n    $version = `${$version}.${CI.build_number}`\n  }\n  else if (!CI.service) {\n    $version = `${$version}.${os.userInfo().username}.${os.hostname()}`\n  }\n\n  const version_module = path.join(root, 'gen', 'version.cjs')\n  if (!fs.existsSync(path.dirname(version_module))) fs.mkdirSync(path.dirname(version_module))\n  fs.writeFileSync(version_module, `module.exports = { version: ${JSON.stringify($version)} }`)\n  console.log('written version', $version, 'to', version_module)\n  return $version\n}\n\nversion()\n","import * as child_process from 'node:child_process'\n\nclass ContinuousIntegrationSingleton {\n  public service = ''\n  public build_number: number\n  public tag = ''\n  public commit_message = ''\n  public branch = ''\n  public pull_request = false\n  public issue = ''\n\n  constructor() {\n    for (const [id, name] of Object.entries({ CIRCLECI: 'Circle', TRAVIS: 'Travis', SEMAPHORE: 'Semaphore', GITHUB_ACTIONS: 'GitHub' })) {\n      if (process.env[id] === 'true') this.service = name\n    }\n\n    switch (this.service) {\n      case 'Circle':\n        this.build_number = this.parseInt(process.env.CIRCLE_BUILD_NUM)\n        try {\n          this.tag = child_process.execSync(`git describe --exact-match ${process.env.CIRCLE_SHA1}`, { stdio: 'pipe' }).toString().trim()\n        }\n        catch (err) {\n          this.tag = null\n        }\n        this.commit_message = child_process.execSync(`git log --format=%B -n 1 ${process.env.CIRCLE_SHA1}`).toString().trim()\n        this.branch = process.env.CIRCLE_BRANCH\n        this.pull_request = !!process.env.CIRCLE_PULL_REQUEST\n        break\n\n      case 'GitHub':\n        this.build_number = this.parseInt(process.env.GITHUB_RUN_NUMBER)\n        this.commit_message = child_process.execSync(`git log --format=%B -n 1 ${process.env.GITHUB_SHA}`).toString().trim()\n        this.pull_request = process.env.GITHUB_EVENT_NAME.startsWith('pull-request')\n\n        if (process.env.GITHUB_HEAD_REF) {\n          this.branch = process.env.GITHUB_HEAD_REF.split('/').pop()\n        }\n        else if (process.env.GITHUB_REF.startsWith('refs/tags/')) {\n          // leave branch undefined when tagged... not great\n          this.tag = process.env.GITHUB_REF.split('/').pop()\n        }\n        else if (process.env.GITHUB_REF.startsWith('refs/heads/')) {\n          this.branch = process.env.GITHUB_REF.split('/').pop()\n        }\n        this.branch = this.branch || ''\n        this.issue = this.branch.match(/^gh-([0-9]+)$/)?.[1] || ''\n        break\n\n      default:\n        if (process.env.CI === 'true') throw new Error(`Unexpected CI service ${this.service}`)\n    }\n  }\n\n  private parseInt(n: number | string): number {\n    if (typeof n === 'number') return n\n    const int = parseInt(n)\n    if (isNaN(int)) throw new Error(`${n} is not an integer`)\n    return int\n  }\n}\n\nexport const ContinuousIntegration = new ContinuousIntegrationSingleton() // eslint-disable-line @typescript-eslint/naming-convention,no-underscore-dangle,id-blacklist,id-match\n"],"mappings":"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","names":["fs","path","path","fs","import_node_fs","import_node_path","os","path","fs","xpi","archiver"]}