@absolutejs/changelog 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ This file is generated by `absolute-changelog` from the entries in
6
6
  `changelog/`. Edit an entry, not this file — and add new ones under
7
7
  `changelog/unreleased/`.
8
8
 
9
+ ## 0.6.0 — 2026-09-10
10
+
11
+ ### Added
12
+
13
+ - **The publish gate runs the whole check:package chain, not the changelog check alone**
14
+
15
+ ### Fixed
16
+
17
+ - **Write a publish gate that bun publish can actually run — the bare binary is not on its PATH**
18
+
9
19
  ## 0.5.1 — 2026-09-10
10
20
 
11
21
  ### Fixed
package/changelog.json CHANGED
@@ -2,6 +2,20 @@
2
2
  "contract": 1,
3
3
  "name": "@absolutejs/changelog",
4
4
  "releases": [
5
+ {
6
+ "changes": [
7
+ {
8
+ "kind": "added",
9
+ "summary": "The publish gate runs the whole check:package chain, not the changelog check alone"
10
+ },
11
+ {
12
+ "kind": "fixed",
13
+ "summary": "Write a publish gate that bun publish can actually run — the bare binary is not on its PATH"
14
+ }
15
+ ],
16
+ "date": "2026-09-10",
17
+ "version": "0.6.0"
18
+ },
5
19
  {
6
20
  "changes": [
7
21
  {
package/dist/cli.js CHANGED
@@ -1254,14 +1254,17 @@ var ignoreGenerated = async (root) => {
1254
1254
  `)}
1255
1255
  `);
1256
1256
  };
1257
- var PUBLISH_GATE = "absolute-changelog check";
1257
+ var PUBLISH_GATE = "bunx absolute-changelog check";
1258
+ var publishGateFor = (scripts) => typeof scripts["check:package"] === "string" ? "bun run check:package" : PUBLISH_GATE;
1258
1259
  var withPublishGate = (scripts) => {
1260
+ const wanted = publishGateFor(scripts);
1259
1261
  const existing = scripts.prepublishOnly;
1260
- if (typeof existing === "string" && existing.includes(PUBLISH_GATE))
1262
+ if (typeof existing === "string" && existing.includes(wanted))
1261
1263
  return;
1264
+ const replaceable = typeof existing !== "string" || existing.trim() === "" || existing.trim() === PUBLISH_GATE || existing.trim() === "absolute-changelog check";
1262
1265
  return {
1263
1266
  ...scripts,
1264
- prepublishOnly: typeof existing === "string" && existing.trim() !== "" ? `${existing} && ${PUBLISH_GATE}` : PUBLISH_GATE
1267
+ prepublishOnly: replaceable ? wanted : `${existing} && ${wanted}`
1265
1268
  };
1266
1269
  };
1267
1270
  var adopt = async (root) => {
@@ -1311,5 +1314,5 @@ await main().catch((error) => {
1311
1314
  process.exit(1);
1312
1315
  });
1313
1316
 
1314
- //# debugId=3D35EBE83A76D8A664756E2164756E21
1317
+ //# debugId=A14460FB75D13A7E64756E2164756E21
1315
1318
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/cli.ts", "../src/entries.ts", "../src/types.ts", "../src/versioning.ts", "../src/read.ts", "../src/surface.ts", "../src/tarball.ts", "../src/json.ts", "../src/reconcile.ts", "../src/registry.ts", "../src/write.ts"],
4
4
  "sourcesContent": [
5
- "#!/usr/bin/env bun\n/* absolute-changelog — the release-time companion for every package that\n * keeps a changelog.\n *\n * absolute-changelog add --kind added --summary \"…\"\n * Write a pending entry under changelog/unreleased/.\n *\n * absolute-changelog release [--as major|minor|patch|prerelease]\n * [--version x.y.z] [--date YYYY-MM-DD] [--dry]\n * Turn the pending entries into a release: work out the version, write\n * changelog.json and CHANGELOG.md, bump package.json, and clear the\n * entries it consumed.\n *\n * absolute-changelog check [--offline]\n * The gate. Entries parse; the generated files are what the entries say\n * they should be; the version lines up; and the exports that moved since\n * the last published version are the exports the entries name.\n *\n * absolute-changelog adopt\n * One-time: create the entry directory, keep whatever CHANGELOG.md\n * already said as history, and wire the package's files list.\n */\nimport { existsSync } from \"node:fs\";\nimport ts from \"typescript\";\nimport { mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport {\n builtSurface,\n changelogPaths,\n loadUnreleased,\n readJsonFile,\n strayEntries,\n} from \"./entries\";\nimport { writeJsonLike } from \"./json\";\nimport { parseChangelog } from \"./read\";\nimport { describeReconciliation, reconcile } from \"./reconcile\";\nimport { packageVersions, publishedSurface } from \"./registry\";\nimport { declaresTypes, diffSurface } from \"./surface\";\nimport {\n CHANGELOG_CONTRACT,\n CHANGELOG_FILE,\n CHANGELOG_MARKDOWN,\n CHANGE_KINDS,\n UNRELEASED_DIRECTORY,\n type Changelog,\n type ChangeKind,\n type Release,\n} from \"./types\";\nimport { compareVersions, nextVersion, type ReleaseKind } from \"./versioning\";\nimport { GENERATED_MARKER, renderChangelogJson, renderMarkdown } from \"./write\";\n\nclass CliError extends Error {}\n\nconst isChangeKind = (value: unknown): value is ChangeKind =>\n CHANGE_KINDS.some((kind) => kind === value);\n\nconst isReleaseKind = (value: unknown): value is ReleaseKind =>\n RELEASE_KINDS.some((kind) => kind === value);\n\nconst RELEASE_KINDS = [\"major\", \"minor\", \"patch\", \"prerelease\"] as const;\n/** Long enough to recognise the change in a file listing, short enough to\n * read. */\nconst SLUG_MAX_LENGTH = 48;\n/** `2026-09-10`. */\nconst ISO_DATE_LENGTH = 10;\n/** Enough of a dry run to see the release taking shape. */\nconst PREVIEW_LINES = 40;\n\ntype Flags = Record<string, string | true>;\n\nconst readFlags = (argv: readonly string[]) => {\n const flags: Flags = {};\n let skip = false;\n for (const [index, argument] of argv.entries()) {\n const consumed = skip;\n skip = false;\n if (consumed || !argument.startsWith(\"--\")) continue;\n const [name, inline] = argument.slice(2).split(\"=\");\n if (name === undefined || name === \"\") continue;\n const next = argv[index + 1];\n const takesNext =\n inline === undefined && next !== undefined && !next.startsWith(\"--\");\n skip = takesNext;\n flags[name] = inline ?? (takesNext && next !== undefined ? next : true);\n }\n\n return flags;\n};\n\nconst text = (flags: Flags, name: string) => {\n const value = flags[name];\n\n return typeof value === \"string\" ? value : undefined;\n};\n\nconst list = (flags: Flags, name: string) => {\n const value = text(flags, name);\n\n return value === undefined\n ? []\n : value\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part !== \"\");\n};\n\ntype PackageShape = {\n exports?: unknown;\n scripts?: Record<string, unknown>;\n files?: string[];\n include?: unknown[];\n name?: string;\n version?: string;\n};\n\nconst isPackage = (value: unknown): value is PackageShape =>\n typeof value === \"object\" && value !== null;\n\nconst readPackage = async (root: string) => {\n const document = await readJsonFile(join(root, \"package.json\"));\n if (\n !isPackage(document) ||\n typeof document.name !== \"string\" ||\n typeof document.version !== \"string\"\n )\n throw new CliError(\n \"No package.json with a name and a version here. Run this from a package root.\",\n );\n const manifest: PackageShape & { name: string; version: string } = {\n ...document,\n name: document.name,\n version: document.version,\n };\n\n return manifest;\n};\n\nconst readChangelog = async (root: string, name: string) => {\n const document = await readJsonFile(changelogPaths(root).json);\n if (document === undefined) {\n const empty: Changelog = {\n contract: CHANGELOG_CONTRACT,\n name,\n releases: [],\n };\n\n return empty;\n }\n const read = parseChangelog(document);\n if (read.problems)\n throw new CliError(\n [`${CHANGELOG_FILE} is not a changelog:`, ...read.problems].join(\"\\n \"),\n );\n\n return read.changelog;\n};\n\nconst historyOf = async (root: string) =>\n readFile(changelogPaths(root).history, \"utf8\").catch(() => undefined);\n\nconst writeBoth = async (root: string, changelog: Changelog) => {\n const paths = changelogPaths(root);\n const history = await historyOf(root);\n await writeFile(paths.json, renderChangelogJson(changelog));\n await writeFile(\n paths.markdown,\n renderMarkdown(changelog, history === undefined ? {} : { history }),\n );\n};\n\nconst slug = (summary: string) =>\n summary\n .toLowerCase()\n .replace(/[^a-z0-9]+/gu, \"-\")\n .replace(/^-|-$/gu, \"\")\n .slice(0, SLUG_MAX_LENGTH) || \"change\";\n\n/**\n * Where the package's public API is declared, if it is where it usually is.\n *\n * An entry that imports it gets its symbols checked by the compiler at the\n * moment somebody types them, which is the difference between a typo caught\n * in an editor and a typo caught by a release gate a fortnight later.\n */\nconst sourceEntryOf = (root: string) => {\n for (const candidate of [\"src/index.ts\", \"src/index.tsx\", \"index.ts\"])\n if (existsSync(join(root, candidate)))\n return `../../${candidate.replace(/\\.tsx?$/u, \"\")}`;\n\n return undefined;\n};\n\nconst add = async (root: string, flags: Flags) => {\n const kind = text(flags, \"kind\");\n const summary = text(flags, \"summary\");\n if (!isChangeKind(kind))\n throw new CliError(`--kind must be one of: ${CHANGE_KINDS.join(\", \")}`);\n if (summary === undefined)\n throw new CliError(\"--summary is what the change is, in one line\");\n const symbols = list(flags, \"symbol\");\n const disruptive = kind === \"breaking\" || kind === \"removed\";\n if (disruptive && symbols.length === 0)\n throw new CliError(\n `a ${kind} change must name the exports it affects: --symbol serve,createServer`,\n );\n const instruction = text(flags, \"instruction\");\n if (disruptive && instruction === undefined)\n throw new CliError(\n `a ${kind} change must say how to migrate: --instruction \"…\"`,\n );\n const renameTo = text(flags, \"rename-to\");\n const migration =\n renameTo !== undefined && symbols[0] !== undefined\n ? [\n \"\\tmigration: {\",\n `\\t\\tinstruction: ${JSON.stringify(instruction)},`,\n `\\t\\trename: { from: ${JSON.stringify(\n symbols[0],\n )}, to: ${JSON.stringify(renameTo)} }`,\n \"\\t},\",\n ]\n : [\n `\\tmigration: { instruction: ${JSON.stringify(\n instruction,\n )}, manual: true },`,\n ];\n /* A type-only import, so the entry has nothing to resolve at run time.\n * The release gate reads these files back, and a gate that only works\n * where the dev dependencies are installed is a gate that fails in the\n * one place it matters.\n *\n * A named export rather than a default one: the ecosystem's lint config\n * restricts default exports, and an entry that trips the linter of every\n * package that writes one is a contract nobody keeps. */\n const api = sourceEntryOf(root);\n const body = [\n ...(api === undefined ? [] : [`import type * as Api from '${api}';`]),\n \"import type { Change } from '@absolutejs/changelog';\",\n \"\",\n `export const change: Change${api === undefined ? \"\" : \"<typeof Api>\"} = {`,\n `\\tkind: ${JSON.stringify(kind)},`,\n ...(disruptive ? migration : []),\n `\\tsummary: ${JSON.stringify(summary)}${symbols.length > 0 ? \",\" : \"\"}`,\n ...(symbols.length > 0 ? [`\\tsymbols: ${JSON.stringify(symbols)}`] : []),\n \"};\",\n \"\",\n ].join(\"\\n\");\n const directory = join(root, UNRELEASED_DIRECTORY);\n await mkdir(directory, { recursive: true });\n const file = join(directory, `${slug(summary)}.ts`);\n await writeFile(file, body);\n console.log(`wrote ${file}`);\n};\n\nconst release = async (root: string, flags: Flags) => {\n const manifest = await readPackage(root);\n const { entries, problems } = await loadUnreleased(root);\n if (problems.length > 0)\n throw new CliError(\n [\"These entries are not usable:\", ...problems].join(\"\\n \"),\n );\n if (entries.length === 0)\n throw new CliError(\n `Nothing to release: ${UNRELEASED_DIRECTORY} is empty. Add a change first.`,\n );\n const asked = text(flags, \"as\");\n if (asked !== undefined && !isReleaseKind(asked))\n throw new CliError(`--as must be one of: ${RELEASE_KINDS.join(\", \")}`);\n const changes = entries.map((entry) => entry.change);\n const version =\n text(flags, \"version\") ??\n nextVersion({\n ...(isReleaseKind(asked) ? { asked } : {}),\n changes,\n current: manifest.version ?? \"0.0.0\",\n });\n if (version === undefined)\n throw new CliError(\n `Could not work out the next version from ${manifest.version}.`,\n );\n const changelog = await readChangelog(root, manifest.name ?? \"\");\n if (changelog.releases.some((entry) => entry.version === version))\n throw new CliError(`${version} is already in the changelog.`);\n const [first, ...rest] = changes;\n if (first === undefined)\n throw new CliError(`Nothing to release: ${UNRELEASED_DIRECTORY} is empty.`);\n const next: Release = {\n changes: [first, ...rest],\n date:\n text(flags, \"date\") ?? new Date().toISOString().slice(0, ISO_DATE_LENGTH),\n version,\n };\n const written: Changelog = {\n ...changelog,\n releases: [next, ...changelog.releases],\n };\n if (flags.dry === true) {\n console.log(\n renderMarkdown(written).split(\"\\n\").slice(0, PREVIEW_LINES).join(\"\\n\"),\n );\n console.log(`\\n(dry run: ${manifest.version} → ${version})`);\n\n return;\n }\n await writeBoth(root, written);\n await writeJsonLike(join(root, \"package.json\"), { ...manifest, version });\n await Promise.all(\n entries.map((entry) => rm(join(root, entry.file), { force: true })),\n );\n console.log(\n `${manifest.name} ${manifest.version} → ${version} (${entries.length} change${\n entries.length === 1 ? \"\" : \"s\"\n })`,\n );\n};\n\nconst check = async (root: string, flags: Flags) => {\n const manifest = await readPackage(root);\n const failures: string[] = [];\n const { entries, problems } = await loadUnreleased(root);\n failures.push(...problems);\n const document = await readJsonFile(changelogPaths(root).json);\n const read = document === undefined ? undefined : parseChangelog(document);\n if (read?.problems)\n throw new CliError(\n [`${CHANGELOG_FILE} is not a changelog:`, ...read.problems].join(\"\\n \"),\n );\n /* A package that has adopted this and not released yet has no document,\n * which is a state to check rather than a failure: the entries are still\n * checked, and so is everything that does not need a release to compare\n * against. */\n const current: Changelog = read?.changelog ?? {\n contract: CHANGELOG_CONTRACT,\n name: manifest.name ?? \"\",\n releases: [],\n };\n const [newest] = current.releases;\n /* The version in the manifest is the version that was last released, and\n * the newest release in the changelog is the same thing said twice.\n * Whenever the two disagree, one of them was edited by hand. */\n if (newest !== undefined && newest.version !== manifest.version)\n failures.push(\n `package.json is ${manifest.version} and the newest release in ${CHANGELOG_FILE} is ${newest.version}`,\n );\n if (newest !== undefined && current.name !== manifest.name)\n failures.push(\n `${CHANGELOG_FILE} is for ${current.name}, not ${manifest.name}`,\n );\n /* The markdown is generated. If it does not match what the entries say it\n * should be, somebody edited the copy rather than the original. */\n const history = await historyOf(root);\n const expected = renderMarkdown(\n current,\n history === undefined ? {} : { history },\n );\n const actual = await readFile(changelogPaths(root).markdown, \"utf8\").catch(\n () => undefined,\n );\n /* Checked whether or not anything has been released. It used to wait for a\n * first release, which meant every package in a freshly adopted ecosystem\n * had a generated file nothing was watching -- and a second adoption\n * quietly rewrote 65 of them. */\n if (actual !== expected)\n failures.push(\n `${CHANGELOG_MARKDOWN} is not what the entries say it should be — it is generated; run \\`absolute-changelog release\\` or restore it`,\n );\n const tsconfig = await readTsconfig(join(root, \"tsconfig.json\"));\n const include = includeOf(tsconfig?.config);\n if (Array.isArray(include) && !coversEntries(include))\n failures.push(\n 'tsconfig.json does not compile changelog/, so nothing is checking the entries — add \"changelog/**/*\" to its include list',\n );\n for (const stray of await strayEntries(root))\n failures.push(\n `${UNRELEASED_DIRECTORY}/${stray} is not an entry, so no release will ever read it`,\n );\n /* Both documents have to ship, or a consumer that reads them gets a\n * package that quietly has none. */\n const shipped = Array.isArray(manifest.files) ? manifest.files : [];\n for (const file of [CHANGELOG_FILE, CHANGELOG_MARKDOWN])\n if (shipped.length > 0 && !shipped.includes(file))\n failures.push(`package.json does not ship ${file}`);\n /* And the part nobody can do by remembering: what the types say happened\n * against what the entries say happened.\n *\n * The baseline is the newest version the registry actually has, which is\n * not always the version in package.json -- between `release` and `publish`\n * the manifest names a version nobody can fetch. Comparing against that\n * asks the registry for something that is not there, gets nothing, and\n * passes: the gate would go quiet at the one moment it exists for.\n *\n * So the entries that speak are every entry newer than what is published:\n * the ones still waiting, and the ones a release has already folded in. */\n const offline = flags.offline === true;\n const built = await builtSurface(root);\n /* A package about to publish types it has not built. The old gate warned\n * and passed, which is the same thing as not having a gate on a clean\n * checkout -- and `prepublishOnly` runs before `prepack`, so a package that\n * builds there arrives here with nothing on disk every time.\n *\n * A package that ships no types at all has no promise of this kind to\n * check, and is left alone. */\n const shipsTypes = declaresTypes(\n await readJsonFile(join(root, \"package.json\")),\n );\n if (built === undefined && shipsTypes)\n failures.push(\n \"there are no declaration files where package.json says its types are — build before the gate, or nothing compares them\",\n );\n if (!shipsTypes)\n console.warn(\" (this package ships no types, so none were compared)\");\n const versions = offline\n ? undefined\n : await packageVersions(manifest.name ?? \"\");\n /* The registry did not answer. Every reason for that -- an outage, a rate\n * limit, a private registry this does not know about, a scoped package\n * needing auth -- ends with the types unchecked, and a gate that passes\n * when it could not check is a gate that disarms itself on a bad afternoon.\n * `--offline` is how somebody says they meant it. */\n if (!offline && versions === undefined)\n failures.push(\n `the registry did not answer for ${manifest.name}, so nothing was compared — pass --offline to skip the comparison deliberately`,\n );\n /* Answered, with nothing on it. A first release has no previous version to\n * be checked against, and refusing it would mean no package could ever have\n * one. */\n if (versions !== undefined && versions.published.length === 0)\n console.warn(\n ` (${manifest.name} has never been published, so there was nothing to compare)`,\n );\n const baseline = (versions?.published ?? [])\n .filter((version) => compareVersions(version, manifest.version) <= 0)\n .sort(compareVersions)\n .at(LAST);\n /* Published versions exist and none of them is at or below this one: the\n * manifest is behind the registry, which is its own problem. */\n if (\n versions !== undefined &&\n versions.published.length > 0 &&\n baseline === undefined &&\n !offline\n )\n console.warn(\n ` (nothing published at or below ${manifest.version}, so there was nothing to compare)`,\n );\n if (built !== undefined && baseline !== undefined) {\n const published = await publishedSurface(manifest.name ?? \"\", baseline);\n if (published === undefined)\n failures.push(\n `could not read the published types of ${manifest.name}@${baseline}, so nothing was compared`,\n );\n const speaking = [\n ...entries.map((entry) => entry.change),\n ...current.releases\n .filter((entry) => compareVersions(entry.version, baseline) > 0)\n .flatMap((entry) => [...entry.changes]),\n ];\n failures.push(\n ...(published === undefined\n ? []\n : describeReconciliation(\n reconcile({\n after: new Set(built.keys()),\n changes: speaking,\n diff: diffSurface(published, built),\n known: new Set([...published.keys(), ...built.keys()]),\n subpaths: subpathsOf(manifest),\n }),\n )),\n );\n }\n if (failures.length > 0)\n throw new CliError(\n [\"This package’s changelog does not hold:\", ...failures].join(\"\\n \"),\n );\n console.log(\n `${manifest.name}@${manifest.version}: changelog holds (${entries.length} pending, ${current.releases.length} released)`,\n );\n};\n\n/**\n * Make sure the entries are compiled by whatever compiles this package.\n *\n * The whole claim of the contract is that the compiler reviews every entry --\n * which it does not, if the package's `include` only names `src`. Nothing\n * else about the setup gives that away: entries would sit there looking\n * checked and be checked by nobody.\n */\n/** The last of a sorted list. */\nconst LAST = -1;\n\n/**\n * The entry points a package offers, as the specifiers somebody would import.\n *\n * Taken from the exports map, so a migration cannot point at a subpath that\n * does not exist -- the kind of typo that is invisible in a changelog and\n * fatal in a codemod.\n */\nconst subpathsOf = (manifest: PackageShape) => {\n const { exports } = manifest;\n if (typeof exports !== \"object\" || exports === null) return new Set<string>();\n\n return new Set(\n Object.keys(exports).map((key) =>\n key === \".\" ? (manifest.name ?? \"\") : `${manifest.name}${key.slice(1)}`,\n ),\n );\n};\n\nconst CHECKING_CONFIGS = [\"tsconfig.json\", \"tsconfig.eslint.json\"] as const;\n\n/** A tsconfig is JSON with comments, which `JSON.parse` refuses. TypeScript's\n * own reader takes it, and this package already depends on it. */\nconst readTsconfig = async (path: string) => {\n const source = await readFile(path, \"utf8\").catch(() => undefined);\n if (source === undefined) return undefined;\n const read = ts.parseConfigFileTextToJson(path, source);\n\n if (read.error !== undefined) return undefined;\n const { config } = read;\n const parsed: unknown = config;\n\n return { config: parsed, source };\n};\n\nconst coversEntries = (include: unknown) =>\n Array.isArray(include) &&\n include.some(\n (entry) => typeof entry === \"string\" && entry.startsWith(\"changelog\"),\n );\n\nconst includeOf = (config: unknown) =>\n typeof config === \"object\" && config !== null\n ? new Map(Object.entries(config)).get(\"include\")\n : undefined;\n\n/**\n * Add the entries to an include list without reformatting the file.\n *\n * A surgical insertion rather than a re-serialisation, because a tsconfig\n * carries comments -- the framework's own explains why `src/build/` is not\n * excluded -- and rewriting it as JSON would delete them.\n */\nconst includeEntriesIn = async (root: string, file: string) => {\n const path = join(root, file);\n const read = await readTsconfig(path);\n if (read === undefined) return false;\n const include = includeOf(read.config);\n if (!Array.isArray(include) || coversEntries(include)) return false;\n const opened = /\"include\"\\s*:\\s*\\[/u.exec(read.source);\n if (opened === null) return false;\n const opens = opened.index + opened[0].length;\n await writeFile(\n path,\n `${read.source.slice(0, opens)}\\n\\t\\t\"changelog/**/*\",${read.source.slice(opens)}`,\n );\n\n return true;\n};\n\nconst includeEntries = async (root: string) => {\n const wired = await Promise.all(\n CHECKING_CONFIGS.map((file) => includeEntriesIn(root, file)),\n );\n\n return wired.some(Boolean)\n ? undefined\n : \"no tsconfig include list to wire — make sure changelog/ is compiled by something\";\n};\n\n/**\n * Keep the formatter off the generated copies.\n *\n * Every package here runs prettier over `**\\/*.{ts,json,md}`, which is both of\n * these -- and the gate compares `CHANGELOG.md` byte for byte against what the\n * entries say it should be. A formatter rewrapping a line would fail a release\n * for a reason nobody could see.\n */\nconst ignoreGenerated = async (root: string) => {\n const path = join(root, \".prettierignore\");\n const existing = await readFile(path, \"utf8\").catch(() => \"\");\n const wanted = [CHANGELOG_FILE, CHANGELOG_MARKDOWN].filter(\n (name) => !existing.split(\"\\n\").includes(name),\n );\n if (wanted.length === 0) return;\n const head =\n existing.trim() === \"\"\n ? \"# Generated by absolute-changelog. Edit the entries, not these.\\n\"\n : `${existing.trimEnd()}\\n`;\n await writeFile(path, `${head}${wanted.join(\"\\n\")}\\n`);\n};\n\n/**\n * The gate on the way out, not only on the way to it.\n *\n * `check:package` is a chain somebody chose to run. `prepublishOnly` is one\n * npm and bun run themselves, whatever the publish was started by -- a\n * release script, a bare `npm publish`, a CI job, a person in a hurry at the\n * end of a day. A rule that can be walked around is a rule that eventually\n * is.\n */\nconst PUBLISH_GATE = \"absolute-changelog check\";\n\nconst withPublishGate = (scripts: Record<string, unknown>) => {\n const existing = scripts.prepublishOnly;\n if (typeof existing === \"string\" && existing.includes(PUBLISH_GATE))\n return undefined;\n\n return {\n ...scripts,\n prepublishOnly:\n typeof existing === \"string\" && existing.trim() !== \"\"\n ? `${existing} && ${PUBLISH_GATE}`\n : PUBLISH_GATE,\n };\n};\n\nconst adopt = async (root: string) => {\n const manifest = await readPackage(root);\n const paths = changelogPaths(root);\n await mkdir(paths.unreleased, { recursive: true });\n await writeFile(\n join(paths.unreleased, \".gitkeep\"),\n \"# Entries wait here. One file per change; `absolute-changelog release` consumes them.\\n\",\n );\n /* Whatever the package said before this takes over. It is kept rather\n * than parsed: prose written by hand over two years is history, and\n * guessing structure out of it would invent facts.\n *\n * Except our own output, which is what a second adoption finds. Filing that\n * as history prints the header underneath itself, and a third run would\n * nest it again -- adopting has to be a thing you can run twice. */\n const previous = existsSync(paths.markdown)\n ? await readFile(paths.markdown, \"utf8\")\n : undefined;\n if (\n previous !== undefined &&\n !previous.includes(GENERATED_MARKER) &&\n !existsSync(paths.history)\n ) {\n await mkdir(join(root, \"changelog\"), { recursive: true });\n await writeFile(\n paths.history,\n previous.replace(/^#\\s+Changelog\\s*/u, \"\").trimStart(),\n );\n await rm(paths.markdown, { force: true });\n }\n const files = manifest.files ?? [];\n const wanted = [CHANGELOG_FILE, CHANGELOG_MARKDOWN].filter(\n (entry) => !files.includes(entry),\n );\n const scripts =\n typeof manifest.scripts === \"object\" && manifest.scripts !== null\n ? withPublishGate(manifest.scripts)\n : undefined;\n if (wanted.length > 0 || scripts !== undefined)\n await writeJsonLike(join(root, \"package.json\"), {\n ...manifest,\n ...(scripts === undefined ? {} : { scripts }),\n files: [...files, ...wanted].sort(),\n });\n await ignoreGenerated(root);\n const note = await includeEntries(root);\n if (note !== undefined) console.warn(` (${note})`);\n const changelog = await readChangelog(root, manifest.name ?? \"\");\n await writeBoth(root, changelog);\n console.log(\n `${manifest.name}: ready. Add changes with \\`absolute-changelog add\\`, release with \\`absolute-changelog release\\`.`,\n );\n};\n\nconst main = async () => {\n const [command = \"\", ...argv] = process.argv.slice(2);\n const flags = readFlags(argv);\n const root = process.cwd();\n if (command === \"add\") return add(root, flags);\n if (command === \"release\") return release(root, flags);\n if (command === \"check\") return check(root, flags);\n if (command === \"adopt\") return adopt(root);\n\n throw new CliError(\n \"Usage: absolute-changelog <add|release|check|adopt> [options]\",\n );\n};\n\nawait main().catch((error: unknown) => {\n console.error(\n error instanceof CliError\n ? error.message\n : `absolute-changelog failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n process.exit(1);\n});\n",
5
+ "#!/usr/bin/env bun\n/* absolute-changelog — the release-time companion for every package that\n * keeps a changelog.\n *\n * absolute-changelog add --kind added --summary \"…\"\n * Write a pending entry under changelog/unreleased/.\n *\n * absolute-changelog release [--as major|minor|patch|prerelease]\n * [--version x.y.z] [--date YYYY-MM-DD] [--dry]\n * Turn the pending entries into a release: work out the version, write\n * changelog.json and CHANGELOG.md, bump package.json, and clear the\n * entries it consumed.\n *\n * absolute-changelog check [--offline]\n * The gate. Entries parse; the generated files are what the entries say\n * they should be; the version lines up; and the exports that moved since\n * the last published version are the exports the entries name.\n *\n * absolute-changelog adopt\n * One-time: create the entry directory, keep whatever CHANGELOG.md\n * already said as history, and wire the package's files list.\n */\nimport { existsSync } from \"node:fs\";\nimport ts from \"typescript\";\nimport { mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport {\n builtSurface,\n changelogPaths,\n loadUnreleased,\n readJsonFile,\n strayEntries,\n} from \"./entries\";\nimport { writeJsonLike } from \"./json\";\nimport { parseChangelog } from \"./read\";\nimport { describeReconciliation, reconcile } from \"./reconcile\";\nimport { packageVersions, publishedSurface } from \"./registry\";\nimport { declaresTypes, diffSurface } from \"./surface\";\nimport {\n CHANGELOG_CONTRACT,\n CHANGELOG_FILE,\n CHANGELOG_MARKDOWN,\n CHANGE_KINDS,\n UNRELEASED_DIRECTORY,\n type Changelog,\n type ChangeKind,\n type Release,\n} from \"./types\";\nimport { compareVersions, nextVersion, type ReleaseKind } from \"./versioning\";\nimport { GENERATED_MARKER, renderChangelogJson, renderMarkdown } from \"./write\";\n\nclass CliError extends Error {}\n\nconst isChangeKind = (value: unknown): value is ChangeKind =>\n CHANGE_KINDS.some((kind) => kind === value);\n\nconst isReleaseKind = (value: unknown): value is ReleaseKind =>\n RELEASE_KINDS.some((kind) => kind === value);\n\nconst RELEASE_KINDS = [\"major\", \"minor\", \"patch\", \"prerelease\"] as const;\n/** Long enough to recognise the change in a file listing, short enough to\n * read. */\nconst SLUG_MAX_LENGTH = 48;\n/** `2026-09-10`. */\nconst ISO_DATE_LENGTH = 10;\n/** Enough of a dry run to see the release taking shape. */\nconst PREVIEW_LINES = 40;\n\ntype Flags = Record<string, string | true>;\n\nconst readFlags = (argv: readonly string[]) => {\n const flags: Flags = {};\n let skip = false;\n for (const [index, argument] of argv.entries()) {\n const consumed = skip;\n skip = false;\n if (consumed || !argument.startsWith(\"--\")) continue;\n const [name, inline] = argument.slice(2).split(\"=\");\n if (name === undefined || name === \"\") continue;\n const next = argv[index + 1];\n const takesNext =\n inline === undefined && next !== undefined && !next.startsWith(\"--\");\n skip = takesNext;\n flags[name] = inline ?? (takesNext && next !== undefined ? next : true);\n }\n\n return flags;\n};\n\nconst text = (flags: Flags, name: string) => {\n const value = flags[name];\n\n return typeof value === \"string\" ? value : undefined;\n};\n\nconst list = (flags: Flags, name: string) => {\n const value = text(flags, name);\n\n return value === undefined\n ? []\n : value\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part !== \"\");\n};\n\ntype PackageShape = {\n exports?: unknown;\n scripts?: Record<string, unknown>;\n files?: string[];\n include?: unknown[];\n name?: string;\n version?: string;\n};\n\nconst isPackage = (value: unknown): value is PackageShape =>\n typeof value === \"object\" && value !== null;\n\nconst readPackage = async (root: string) => {\n const document = await readJsonFile(join(root, \"package.json\"));\n if (\n !isPackage(document) ||\n typeof document.name !== \"string\" ||\n typeof document.version !== \"string\"\n )\n throw new CliError(\n \"No package.json with a name and a version here. Run this from a package root.\",\n );\n const manifest: PackageShape & { name: string; version: string } = {\n ...document,\n name: document.name,\n version: document.version,\n };\n\n return manifest;\n};\n\nconst readChangelog = async (root: string, name: string) => {\n const document = await readJsonFile(changelogPaths(root).json);\n if (document === undefined) {\n const empty: Changelog = {\n contract: CHANGELOG_CONTRACT,\n name,\n releases: [],\n };\n\n return empty;\n }\n const read = parseChangelog(document);\n if (read.problems)\n throw new CliError(\n [`${CHANGELOG_FILE} is not a changelog:`, ...read.problems].join(\"\\n \"),\n );\n\n return read.changelog;\n};\n\nconst historyOf = async (root: string) =>\n readFile(changelogPaths(root).history, \"utf8\").catch(() => undefined);\n\nconst writeBoth = async (root: string, changelog: Changelog) => {\n const paths = changelogPaths(root);\n const history = await historyOf(root);\n await writeFile(paths.json, renderChangelogJson(changelog));\n await writeFile(\n paths.markdown,\n renderMarkdown(changelog, history === undefined ? {} : { history }),\n );\n};\n\nconst slug = (summary: string) =>\n summary\n .toLowerCase()\n .replace(/[^a-z0-9]+/gu, \"-\")\n .replace(/^-|-$/gu, \"\")\n .slice(0, SLUG_MAX_LENGTH) || \"change\";\n\n/**\n * Where the package's public API is declared, if it is where it usually is.\n *\n * An entry that imports it gets its symbols checked by the compiler at the\n * moment somebody types them, which is the difference between a typo caught\n * in an editor and a typo caught by a release gate a fortnight later.\n */\nconst sourceEntryOf = (root: string) => {\n for (const candidate of [\"src/index.ts\", \"src/index.tsx\", \"index.ts\"])\n if (existsSync(join(root, candidate)))\n return `../../${candidate.replace(/\\.tsx?$/u, \"\")}`;\n\n return undefined;\n};\n\nconst add = async (root: string, flags: Flags) => {\n const kind = text(flags, \"kind\");\n const summary = text(flags, \"summary\");\n if (!isChangeKind(kind))\n throw new CliError(`--kind must be one of: ${CHANGE_KINDS.join(\", \")}`);\n if (summary === undefined)\n throw new CliError(\"--summary is what the change is, in one line\");\n const symbols = list(flags, \"symbol\");\n const disruptive = kind === \"breaking\" || kind === \"removed\";\n if (disruptive && symbols.length === 0)\n throw new CliError(\n `a ${kind} change must name the exports it affects: --symbol serve,createServer`,\n );\n const instruction = text(flags, \"instruction\");\n if (disruptive && instruction === undefined)\n throw new CliError(\n `a ${kind} change must say how to migrate: --instruction \"…\"`,\n );\n const renameTo = text(flags, \"rename-to\");\n const migration =\n renameTo !== undefined && symbols[0] !== undefined\n ? [\n \"\\tmigration: {\",\n `\\t\\tinstruction: ${JSON.stringify(instruction)},`,\n `\\t\\trename: { from: ${JSON.stringify(\n symbols[0],\n )}, to: ${JSON.stringify(renameTo)} }`,\n \"\\t},\",\n ]\n : [\n `\\tmigration: { instruction: ${JSON.stringify(\n instruction,\n )}, manual: true },`,\n ];\n /* A type-only import, so the entry has nothing to resolve at run time.\n * The release gate reads these files back, and a gate that only works\n * where the dev dependencies are installed is a gate that fails in the\n * one place it matters.\n *\n * A named export rather than a default one: the ecosystem's lint config\n * restricts default exports, and an entry that trips the linter of every\n * package that writes one is a contract nobody keeps. */\n const api = sourceEntryOf(root);\n const body = [\n ...(api === undefined ? [] : [`import type * as Api from '${api}';`]),\n \"import type { Change } from '@absolutejs/changelog';\",\n \"\",\n `export const change: Change${api === undefined ? \"\" : \"<typeof Api>\"} = {`,\n `\\tkind: ${JSON.stringify(kind)},`,\n ...(disruptive ? migration : []),\n `\\tsummary: ${JSON.stringify(summary)}${symbols.length > 0 ? \",\" : \"\"}`,\n ...(symbols.length > 0 ? [`\\tsymbols: ${JSON.stringify(symbols)}`] : []),\n \"};\",\n \"\",\n ].join(\"\\n\");\n const directory = join(root, UNRELEASED_DIRECTORY);\n await mkdir(directory, { recursive: true });\n const file = join(directory, `${slug(summary)}.ts`);\n await writeFile(file, body);\n console.log(`wrote ${file}`);\n};\n\nconst release = async (root: string, flags: Flags) => {\n const manifest = await readPackage(root);\n const { entries, problems } = await loadUnreleased(root);\n if (problems.length > 0)\n throw new CliError(\n [\"These entries are not usable:\", ...problems].join(\"\\n \"),\n );\n if (entries.length === 0)\n throw new CliError(\n `Nothing to release: ${UNRELEASED_DIRECTORY} is empty. Add a change first.`,\n );\n const asked = text(flags, \"as\");\n if (asked !== undefined && !isReleaseKind(asked))\n throw new CliError(`--as must be one of: ${RELEASE_KINDS.join(\", \")}`);\n const changes = entries.map((entry) => entry.change);\n const version =\n text(flags, \"version\") ??\n nextVersion({\n ...(isReleaseKind(asked) ? { asked } : {}),\n changes,\n current: manifest.version ?? \"0.0.0\",\n });\n if (version === undefined)\n throw new CliError(\n `Could not work out the next version from ${manifest.version}.`,\n );\n const changelog = await readChangelog(root, manifest.name ?? \"\");\n if (changelog.releases.some((entry) => entry.version === version))\n throw new CliError(`${version} is already in the changelog.`);\n const [first, ...rest] = changes;\n if (first === undefined)\n throw new CliError(`Nothing to release: ${UNRELEASED_DIRECTORY} is empty.`);\n const next: Release = {\n changes: [first, ...rest],\n date:\n text(flags, \"date\") ?? new Date().toISOString().slice(0, ISO_DATE_LENGTH),\n version,\n };\n const written: Changelog = {\n ...changelog,\n releases: [next, ...changelog.releases],\n };\n if (flags.dry === true) {\n console.log(\n renderMarkdown(written).split(\"\\n\").slice(0, PREVIEW_LINES).join(\"\\n\"),\n );\n console.log(`\\n(dry run: ${manifest.version} → ${version})`);\n\n return;\n }\n await writeBoth(root, written);\n await writeJsonLike(join(root, \"package.json\"), { ...manifest, version });\n await Promise.all(\n entries.map((entry) => rm(join(root, entry.file), { force: true })),\n );\n console.log(\n `${manifest.name} ${manifest.version} → ${version} (${entries.length} change${\n entries.length === 1 ? \"\" : \"s\"\n })`,\n );\n};\n\nconst check = async (root: string, flags: Flags) => {\n const manifest = await readPackage(root);\n const failures: string[] = [];\n const { entries, problems } = await loadUnreleased(root);\n failures.push(...problems);\n const document = await readJsonFile(changelogPaths(root).json);\n const read = document === undefined ? undefined : parseChangelog(document);\n if (read?.problems)\n throw new CliError(\n [`${CHANGELOG_FILE} is not a changelog:`, ...read.problems].join(\"\\n \"),\n );\n /* A package that has adopted this and not released yet has no document,\n * which is a state to check rather than a failure: the entries are still\n * checked, and so is everything that does not need a release to compare\n * against. */\n const current: Changelog = read?.changelog ?? {\n contract: CHANGELOG_CONTRACT,\n name: manifest.name ?? \"\",\n releases: [],\n };\n const [newest] = current.releases;\n /* The version in the manifest is the version that was last released, and\n * the newest release in the changelog is the same thing said twice.\n * Whenever the two disagree, one of them was edited by hand. */\n if (newest !== undefined && newest.version !== manifest.version)\n failures.push(\n `package.json is ${manifest.version} and the newest release in ${CHANGELOG_FILE} is ${newest.version}`,\n );\n if (newest !== undefined && current.name !== manifest.name)\n failures.push(\n `${CHANGELOG_FILE} is for ${current.name}, not ${manifest.name}`,\n );\n /* The markdown is generated. If it does not match what the entries say it\n * should be, somebody edited the copy rather than the original. */\n const history = await historyOf(root);\n const expected = renderMarkdown(\n current,\n history === undefined ? {} : { history },\n );\n const actual = await readFile(changelogPaths(root).markdown, \"utf8\").catch(\n () => undefined,\n );\n /* Checked whether or not anything has been released. It used to wait for a\n * first release, which meant every package in a freshly adopted ecosystem\n * had a generated file nothing was watching -- and a second adoption\n * quietly rewrote 65 of them. */\n if (actual !== expected)\n failures.push(\n `${CHANGELOG_MARKDOWN} is not what the entries say it should be — it is generated; run \\`absolute-changelog release\\` or restore it`,\n );\n const tsconfig = await readTsconfig(join(root, \"tsconfig.json\"));\n const include = includeOf(tsconfig?.config);\n if (Array.isArray(include) && !coversEntries(include))\n failures.push(\n 'tsconfig.json does not compile changelog/, so nothing is checking the entries — add \"changelog/**/*\" to its include list',\n );\n for (const stray of await strayEntries(root))\n failures.push(\n `${UNRELEASED_DIRECTORY}/${stray} is not an entry, so no release will ever read it`,\n );\n /* Both documents have to ship, or a consumer that reads them gets a\n * package that quietly has none. */\n const shipped = Array.isArray(manifest.files) ? manifest.files : [];\n for (const file of [CHANGELOG_FILE, CHANGELOG_MARKDOWN])\n if (shipped.length > 0 && !shipped.includes(file))\n failures.push(`package.json does not ship ${file}`);\n /* And the part nobody can do by remembering: what the types say happened\n * against what the entries say happened.\n *\n * The baseline is the newest version the registry actually has, which is\n * not always the version in package.json -- between `release` and `publish`\n * the manifest names a version nobody can fetch. Comparing against that\n * asks the registry for something that is not there, gets nothing, and\n * passes: the gate would go quiet at the one moment it exists for.\n *\n * So the entries that speak are every entry newer than what is published:\n * the ones still waiting, and the ones a release has already folded in. */\n const offline = flags.offline === true;\n const built = await builtSurface(root);\n /* A package about to publish types it has not built. The old gate warned\n * and passed, which is the same thing as not having a gate on a clean\n * checkout -- and `prepublishOnly` runs before `prepack`, so a package that\n * builds there arrives here with nothing on disk every time.\n *\n * A package that ships no types at all has no promise of this kind to\n * check, and is left alone. */\n const shipsTypes = declaresTypes(\n await readJsonFile(join(root, \"package.json\")),\n );\n if (built === undefined && shipsTypes)\n failures.push(\n \"there are no declaration files where package.json says its types are — build before the gate, or nothing compares them\",\n );\n if (!shipsTypes)\n console.warn(\" (this package ships no types, so none were compared)\");\n const versions = offline\n ? undefined\n : await packageVersions(manifest.name ?? \"\");\n /* The registry did not answer. Every reason for that -- an outage, a rate\n * limit, a private registry this does not know about, a scoped package\n * needing auth -- ends with the types unchecked, and a gate that passes\n * when it could not check is a gate that disarms itself on a bad afternoon.\n * `--offline` is how somebody says they meant it. */\n if (!offline && versions === undefined)\n failures.push(\n `the registry did not answer for ${manifest.name}, so nothing was compared — pass --offline to skip the comparison deliberately`,\n );\n /* Answered, with nothing on it. A first release has no previous version to\n * be checked against, and refusing it would mean no package could ever have\n * one. */\n if (versions !== undefined && versions.published.length === 0)\n console.warn(\n ` (${manifest.name} has never been published, so there was nothing to compare)`,\n );\n const baseline = (versions?.published ?? [])\n .filter((version) => compareVersions(version, manifest.version) <= 0)\n .sort(compareVersions)\n .at(LAST);\n /* Published versions exist and none of them is at or below this one: the\n * manifest is behind the registry, which is its own problem. */\n if (\n versions !== undefined &&\n versions.published.length > 0 &&\n baseline === undefined &&\n !offline\n )\n console.warn(\n ` (nothing published at or below ${manifest.version}, so there was nothing to compare)`,\n );\n if (built !== undefined && baseline !== undefined) {\n const published = await publishedSurface(manifest.name ?? \"\", baseline);\n if (published === undefined)\n failures.push(\n `could not read the published types of ${manifest.name}@${baseline}, so nothing was compared`,\n );\n const speaking = [\n ...entries.map((entry) => entry.change),\n ...current.releases\n .filter((entry) => compareVersions(entry.version, baseline) > 0)\n .flatMap((entry) => [...entry.changes]),\n ];\n failures.push(\n ...(published === undefined\n ? []\n : describeReconciliation(\n reconcile({\n after: new Set(built.keys()),\n changes: speaking,\n diff: diffSurface(published, built),\n known: new Set([...published.keys(), ...built.keys()]),\n subpaths: subpathsOf(manifest),\n }),\n )),\n );\n }\n if (failures.length > 0)\n throw new CliError(\n [\"This package’s changelog does not hold:\", ...failures].join(\"\\n \"),\n );\n console.log(\n `${manifest.name}@${manifest.version}: changelog holds (${entries.length} pending, ${current.releases.length} released)`,\n );\n};\n\n/**\n * Make sure the entries are compiled by whatever compiles this package.\n *\n * The whole claim of the contract is that the compiler reviews every entry --\n * which it does not, if the package's `include` only names `src`. Nothing\n * else about the setup gives that away: entries would sit there looking\n * checked and be checked by nobody.\n */\n/** The last of a sorted list. */\nconst LAST = -1;\n\n/**\n * The entry points a package offers, as the specifiers somebody would import.\n *\n * Taken from the exports map, so a migration cannot point at a subpath that\n * does not exist -- the kind of typo that is invisible in a changelog and\n * fatal in a codemod.\n */\nconst subpathsOf = (manifest: PackageShape) => {\n const { exports } = manifest;\n if (typeof exports !== \"object\" || exports === null) return new Set<string>();\n\n return new Set(\n Object.keys(exports).map((key) =>\n key === \".\" ? (manifest.name ?? \"\") : `${manifest.name}${key.slice(1)}`,\n ),\n );\n};\n\nconst CHECKING_CONFIGS = [\"tsconfig.json\", \"tsconfig.eslint.json\"] as const;\n\n/** A tsconfig is JSON with comments, which `JSON.parse` refuses. TypeScript's\n * own reader takes it, and this package already depends on it. */\nconst readTsconfig = async (path: string) => {\n const source = await readFile(path, \"utf8\").catch(() => undefined);\n if (source === undefined) return undefined;\n const read = ts.parseConfigFileTextToJson(path, source);\n\n if (read.error !== undefined) return undefined;\n const { config } = read;\n const parsed: unknown = config;\n\n return { config: parsed, source };\n};\n\nconst coversEntries = (include: unknown) =>\n Array.isArray(include) &&\n include.some(\n (entry) => typeof entry === \"string\" && entry.startsWith(\"changelog\"),\n );\n\nconst includeOf = (config: unknown) =>\n typeof config === \"object\" && config !== null\n ? new Map(Object.entries(config)).get(\"include\")\n : undefined;\n\n/**\n * Add the entries to an include list without reformatting the file.\n *\n * A surgical insertion rather than a re-serialisation, because a tsconfig\n * carries comments -- the framework's own explains why `src/build/` is not\n * excluded -- and rewriting it as JSON would delete them.\n */\nconst includeEntriesIn = async (root: string, file: string) => {\n const path = join(root, file);\n const read = await readTsconfig(path);\n if (read === undefined) return false;\n const include = includeOf(read.config);\n if (!Array.isArray(include) || coversEntries(include)) return false;\n const opened = /\"include\"\\s*:\\s*\\[/u.exec(read.source);\n if (opened === null) return false;\n const opens = opened.index + opened[0].length;\n await writeFile(\n path,\n `${read.source.slice(0, opens)}\\n\\t\\t\"changelog/**/*\",${read.source.slice(opens)}`,\n );\n\n return true;\n};\n\nconst includeEntries = async (root: string) => {\n const wired = await Promise.all(\n CHECKING_CONFIGS.map((file) => includeEntriesIn(root, file)),\n );\n\n return wired.some(Boolean)\n ? undefined\n : \"no tsconfig include list to wire — make sure changelog/ is compiled by something\";\n};\n\n/**\n * Keep the formatter off the generated copies.\n *\n * Every package here runs prettier over `**\\/*.{ts,json,md}`, which is both of\n * these -- and the gate compares `CHANGELOG.md` byte for byte against what the\n * entries say it should be. A formatter rewrapping a line would fail a release\n * for a reason nobody could see.\n */\nconst ignoreGenerated = async (root: string) => {\n const path = join(root, \".prettierignore\");\n const existing = await readFile(path, \"utf8\").catch(() => \"\");\n const wanted = [CHANGELOG_FILE, CHANGELOG_MARKDOWN].filter(\n (name) => !existing.split(\"\\n\").includes(name),\n );\n if (wanted.length === 0) return;\n const head =\n existing.trim() === \"\"\n ? \"# Generated by absolute-changelog. Edit the entries, not these.\\n\"\n : `${existing.trimEnd()}\\n`;\n await writeFile(path, `${head}${wanted.join(\"\\n\")}\\n`);\n};\n\n/**\n * The gate on the way out, not only on the way to it.\n *\n * `check:package` is a chain somebody chooses to run. `prepublishOnly` is one\n * npm and bun run themselves, whatever the publish was started by -- a release\n * script, a bare `npm publish`, a CI job, somebody in a hurry at the end of a\n * day. A rule that can be walked around eventually is.\n *\n * It runs the whole chain rather than the changelog check alone, because the\n * weaker version had a hole this package fell into itself: a publish that\n * skipped `check:package` skipped the typecheck, the lint, the tests and the\n * build with it. Running the build here settles a subtler thing too --\n * `prepublishOnly` fires before `prepack`, so a package that builds in\n * `prepack` used to reach the gate with whatever `dist` was lying about, or\n * with none at all.\n */\n/* Never the bare binary. `bun publish` runs lifecycle scripts without\n * `node_modules/.bin` on the PATH, so `absolute-changelog check` written\n * plainly is `command not found` and every publish fails -- which is what\n * ninety-five packages were quietly set up to do. `bun run` and `bunx` both\n * resolve it; the bare name is the one spelling that does not. */\nconst PUBLISH_GATE = \"bunx absolute-changelog check\";\n\nconst publishGateFor = (scripts: Record<string, unknown>) =>\n typeof scripts[\"check:package\"] === \"string\"\n ? \"bun run check:package\"\n : PUBLISH_GATE;\n\nconst withPublishGate = (scripts: Record<string, unknown>) => {\n const wanted = publishGateFor(scripts);\n const existing = scripts.prepublishOnly;\n if (typeof existing === \"string\" && existing.includes(wanted))\n return undefined;\n /* A gate that runs only the changelog check is replaced by the chain that\n * contains it, rather than run twice. */\n const replaceable =\n typeof existing !== \"string\" ||\n existing.trim() === \"\" ||\n existing.trim() === PUBLISH_GATE ||\n existing.trim() === \"absolute-changelog check\";\n\n return {\n ...scripts,\n prepublishOnly: replaceable ? wanted : `${existing} && ${wanted}`,\n };\n};\n\nconst adopt = async (root: string) => {\n const manifest = await readPackage(root);\n const paths = changelogPaths(root);\n await mkdir(paths.unreleased, { recursive: true });\n await writeFile(\n join(paths.unreleased, \".gitkeep\"),\n \"# Entries wait here. One file per change; `absolute-changelog release` consumes them.\\n\",\n );\n /* Whatever the package said before this takes over. It is kept rather\n * than parsed: prose written by hand over two years is history, and\n * guessing structure out of it would invent facts.\n *\n * Except our own output, which is what a second adoption finds. Filing that\n * as history prints the header underneath itself, and a third run would\n * nest it again -- adopting has to be a thing you can run twice. */\n const previous = existsSync(paths.markdown)\n ? await readFile(paths.markdown, \"utf8\")\n : undefined;\n if (\n previous !== undefined &&\n !previous.includes(GENERATED_MARKER) &&\n !existsSync(paths.history)\n ) {\n await mkdir(join(root, \"changelog\"), { recursive: true });\n await writeFile(\n paths.history,\n previous.replace(/^#\\s+Changelog\\s*/u, \"\").trimStart(),\n );\n await rm(paths.markdown, { force: true });\n }\n const files = manifest.files ?? [];\n const wanted = [CHANGELOG_FILE, CHANGELOG_MARKDOWN].filter(\n (entry) => !files.includes(entry),\n );\n const scripts =\n typeof manifest.scripts === \"object\" && manifest.scripts !== null\n ? withPublishGate(manifest.scripts)\n : undefined;\n if (wanted.length > 0 || scripts !== undefined)\n await writeJsonLike(join(root, \"package.json\"), {\n ...manifest,\n ...(scripts === undefined ? {} : { scripts }),\n files: [...files, ...wanted].sort(),\n });\n await ignoreGenerated(root);\n const note = await includeEntries(root);\n if (note !== undefined) console.warn(` (${note})`);\n const changelog = await readChangelog(root, manifest.name ?? \"\");\n await writeBoth(root, changelog);\n console.log(\n `${manifest.name}: ready. Add changes with \\`absolute-changelog add\\`, release with \\`absolute-changelog release\\`.`,\n );\n};\n\nconst main = async () => {\n const [command = \"\", ...argv] = process.argv.slice(2);\n const flags = readFlags(argv);\n const root = process.cwd();\n if (command === \"add\") return add(root, flags);\n if (command === \"release\") return release(root, flags);\n if (command === \"check\") return check(root, flags);\n if (command === \"adopt\") return adopt(root);\n\n throw new CliError(\n \"Usage: absolute-changelog <add|release|check|adopt> [options]\",\n );\n};\n\nawait main().catch((error: unknown) => {\n console.error(\n error instanceof CliError\n ? error.message\n : `absolute-changelog failed: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n process.exit(1);\n});\n",
6
6
  "import { readdir, readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { validateChange } from \"./read\";\nimport { surfaceOfFiles, typeEntriesOf } from \"./surface\";\nimport {\n CHANGELOG_FILE,\n CHANGELOG_MARKDOWN,\n UNRELEASED_DIRECTORY,\n type Change,\n} from \"./types\";\n\n/*\n * The package on disk: its pending entries, its history, and the types it is\n * about to publish.\n *\n * Entries are TypeScript modules rather than data files, so an author writing\n * one is typing against the contract with the compiler watching. Reading them\n * back is an import, which is the same thing the compiler did, so a file that\n * would not build is a file that does not release.\n */\n\nexport type LoadedEntry = {\n change: Change;\n /** Relative, because it is printed at somebody who has to go and fix it. */\n file: string;\n};\n\n/**\n * Import one entry file, and say what went wrong rather than throwing.\n *\n * An entry that will not import is a problem to report beside the others --\n * a release that stops at the first bad file makes somebody fix them one at a\n * time.\n */\nconst loadEntry = async (path: string) => {\n try {\n const module: unknown = await import(pathToFileURL(path).href);\n /* `change` is what the template writes; `default` is accepted because a\n * default export is the shape somebody reaches for by habit, and\n * refusing it would be pedantry rather than a check. */\n const named =\n typeof module === \"object\" && module !== null && \"change\" in module\n ? module.change\n : undefined;\n const exported =\n named ??\n (typeof module === \"object\" && module !== null && \"default\" in module\n ? module.default\n : undefined);\n const read: { exported: unknown; failure?: string } = { exported };\n\n return read;\n } catch (error) {\n const failed: { exported?: undefined; failure: string } = {\n failure: error instanceof Error ? error.message : String(error),\n };\n\n return failed;\n }\n};\n\nexport type LoadedEntries = {\n entries: LoadedEntry[];\n problems: string[];\n};\n\nconst ENTRY = /\\.[cm]?ts$/u;\n\nconst DECLARATION = /\\.d\\.[cm]?ts$/u;\n/** Where a build puts its declaration files. Which of them a package actually\n * publishes comes from its manifest; this is only where to look. */\nconst OUTPUT_DIRECTORIES = [\"dist\", \"build\", \"lib\", \"types\", \"out\"];\n\n/**\n * The public surface a build produced, read the way a consumer would.\n *\n * From the entry points the manifest declares, following the export graph --\n * not by heaping every declaration file together, which counts names no\n * consumer can import and cannot see one being withdrawn.\n *\n * Nothing when the manifest's entry points are not on disk: that is a package\n * about to publish types it has not built, and passing it would be the gate\n * going quiet at the worst possible moment.\n */\nexport const builtSurface = async (packageRoot: string) => {\n const manifest = await readJsonFile(join(packageRoot, \"package.json\"));\n const files = new Map<string, string>();\n const walk = async (directory: string): Promise<void> => {\n const found = await readdir(join(packageRoot, directory), {\n withFileTypes: true,\n }).catch(() => []);\n await Promise.all(\n found.map(async (entry) => {\n const relative = `${directory}/${entry.name}`;\n if (entry.isDirectory()) return walk(relative);\n if (!DECLARATION.test(entry.name)) return undefined;\n files.set(\n relative,\n await readFile(join(packageRoot, relative), \"utf8\").catch(() => \"\"),\n );\n\n return undefined;\n }),\n );\n };\n await Promise.all(OUTPUT_DIRECTORIES.map((directory) => walk(directory)));\n const entries = typeEntriesOf(manifest, files);\n\n return entries.length === 0 ? undefined : surfaceOfFiles(files, entries);\n};\n\nexport const changelogPaths = (packageRoot: string) => ({\n history: join(packageRoot, \"changelog\", \"history.md\"),\n json: join(packageRoot, CHANGELOG_FILE),\n markdown: join(packageRoot, CHANGELOG_MARKDOWN),\n unreleased: join(packageRoot, UNRELEASED_DIRECTORY),\n});\n/** Every pending entry, in a stable order so a release reads the same twice. */\nexport const loadUnreleased = async (packageRoot: string) => {\n const directory = join(packageRoot, UNRELEASED_DIRECTORY);\n const names = await readdir(directory).catch(() => []);\n const entries: LoadedEntry[] = [];\n const problems: string[] = [];\n for (const name of names.filter((file) => ENTRY.test(file)).sort()) {\n const file = join(UNRELEASED_DIRECTORY, name);\n // Serial on purpose: the count is small and the failure messages read\n // in file order.\n // eslint-disable-next-line no-await-in-loop\n const loaded = await loadEntry(join(directory, name));\n if (loaded.failure !== undefined)\n problems.push(`${file}: ${loaded.failure}`);\n const checked =\n loaded.failure === undefined\n ? validateChange(loaded.exported, file)\n : undefined;\n if (checked?.problems) problems.push(...checked.problems);\n if (checked?.change !== undefined)\n entries.push({ change: checked.change, file });\n }\n\n return { entries, problems };\n};\nexport const readJsonFile = async (path: string) => {\n const source = await readFile(path, \"utf8\").catch(() => undefined);\n if (source === undefined) return undefined;\n try {\n const document: unknown = JSON.parse(source);\n\n return document;\n } catch {\n return undefined;\n }\n};\n\n/**\n * Anything in the entry directory that is not an entry.\n *\n * A `.md` note dropped in here, or a `.txt` somebody meant as a placeholder,\n * is read by nothing and consumed by nothing -- it sits there through every\n * release looking like a change that was recorded.\n */\nexport const strayEntries = async (packageRoot: string) => {\n const names = await readdir(join(packageRoot, UNRELEASED_DIRECTORY)).catch(\n () => [],\n );\n\n return names.filter(\n (name) => !ENTRY.test(name) && name !== \".gitkeep\" && !name.startsWith(\".\"),\n );\n};\n",
7
7
  "/*\n * What a change is, said in types strict enough that the important ones cannot\n * be written badly.\n *\n * A changelog is only worth having if the entries that matter carry what a\n * reader needs to act. Prose changelogs fail at exactly that: \"refactored the\n * server options\" is a true sentence and a useless one, because it does not\n * say which export moved or what to write instead. Nothing here can stop a\n * summary being vague, but the compiler can insist that a breaking change\n * names the exports it breaks and says how to migrate -- so the entries that\n * cost somebody an afternoon are the ones that cannot be filed empty.\n *\n * That is also what makes the machine half possible. `symbols` is the join\n * between an entry and the package's own type surface, so a release can be\n * checked against what actually changed; `migration` is the join between an\n * entry and the edit a project needs, so most upgrades can be applied rather\n * than described.\n */\n\n/** At least one, so a type says \"named\" rather than hoping a list is not\n * empty. */\nexport type NonEmpty<T> = readonly [T, ...T[]];\n\nexport const CHANGE_KINDS = [\n \"breaking\",\n \"removed\",\n \"added\",\n \"changed\",\n \"deprecated\",\n \"fixed\",\n \"security\",\n \"internal\",\n] as const;\n\nexport type ChangeKind = (typeof CHANGE_KINDS)[number];\n\n/** The kinds that cost a consumer work, and so must say what work. */\nexport const DISRUPTIVE_KINDS = [\"breaking\", \"removed\"] as const;\n\nexport type DisruptiveKind = (typeof DISRUPTIVE_KINDS)[number];\n\n/**\n * How to move code from before to after.\n *\n * Three of these are data rather than instructions, and that is the point: a\n * rename and a move are the overwhelming majority of real breaking changes,\n * and both are mechanical. Described as data they can be applied by anything\n * -- a CLI, an editor, a hosted upgrade button -- without running code that\n * arrived from a registry, which is the difference between an upgrade that\n * happens and an upgrade somebody schedules for a quiet week.\n *\n * `manual` is the honest escape hatch. A changed meaning is not a rewrite\n * anybody should automate, and pretending otherwise is worse than saying so.\n */\nexport type Migration<TSymbol extends string = string> =\n /** An export kept its meaning and changed its name. */\n | {\n readonly instruction: string;\n readonly rename: { readonly from: TSymbol; readonly to: string };\n }\n /** An export kept its name and moved to another entry point. */\n | {\n readonly instruction: string;\n readonly moved: {\n readonly symbol: TSymbol;\n readonly from: string;\n readonly to: string;\n };\n }\n /** A whole entry point moved; every import of it is rewritten. */\n | {\n readonly instruction: string;\n readonly resubpath: { readonly from: string; readonly to: string };\n }\n /** Neither a rename nor a move: somebody has to read the call. */\n | { readonly instruction: string; readonly manual: true };\n\n/**\n * The names a package exports, for an entry that wants them checked.\n *\n * An entry can be written against the package's own public API:\n *\n * ```ts\n * import type * as Api from \"../../src/index\";\n * import type { Change } from \"@absolutejs/changelog\";\n *\n * export const change: Change<typeof Api> = {\n * kind: \"fixed\",\n * summary: \"stops throwing on an empty list\",\n * symbols: [\"listen\"] // an export, or the compiler says so\n * };\n * ```\n *\n * Suggested rather than required, for two reasons that both matter. A\n * disruptive change is usually about something that has just stopped\n * existing -- the release that removes `start` is the release that writes the\n * entry about it -- and `typeof Api` cannot see type-only exports at all, so\n * insisting would reject an entry about `Change` or `Release` for being\n * something this package definitely exports.\n *\n * What that leaves is an editor that completes the name and a gate that is\n * certain: the release check reads the published `.d.ts`, which does carry\n * the type exports, and refuses an entry naming something the package has\n * never exported.\n */\ntype Exported<TApi> = TApi extends object\n ? Extract<keyof TApi, string>\n : string;\n\n/** Autocompleted, not restricted: an entry may name an export that has just\n * stopped being one. */\ntype Suggested<TApi> = Exported<TApi> | (string & {});\n\ntype ChangeBase = {\n /** One line, imperative, in the reader's terms rather than the\n * implementation's. */\n readonly summary: string;\n /** The why, when the summary cannot carry it. */\n readonly detail?: string;\n /** Where the discussion is. */\n readonly reference?: string;\n};\n\n/**\n * A change that costs a consumer work.\n *\n * `symbols` is not decoration: it is what lets a release be checked against\n * the package's published types, and what lets a project be told whether the\n * change reaches any of its files. An entry without it can only ever be read.\n */\nexport type DisruptiveChange<TApi = unknown> = ChangeBase & {\n readonly kind: DisruptiveKind;\n readonly symbols: NonEmpty<Suggested<TApi>>;\n readonly migration: Migration<Suggested<TApi>>;\n};\n\nexport type OrdinaryChange<TApi = unknown> = ChangeBase & {\n readonly kind: Exclude<ChangeKind, DisruptiveKind>;\n /** Optional here, and still worth filling in: it is what connects a fix\n * to the export somebody is looking at. */\n readonly symbols?: readonly Suggested<TApi>[];\n readonly migration?: never;\n};\n\nexport type Change<TApi = unknown> =\n DisruptiveChange<TApi> | OrdinaryChange<TApi>;\n\nexport type Release = {\n readonly version: string;\n /** ISO date, the day it was published. */\n readonly date: string;\n readonly changes: NonEmpty<Change>;\n /** Anything that is true of the release rather than of one change. */\n readonly note?: string;\n};\n\n/**\n * A package's history, newest first.\n *\n * Published alongside the package so that upgrading is a question anybody can\n * answer offline: what changed between the version I have and the version I\n * am being offered, and which of it reaches me.\n */\nexport type Changelog = {\n readonly name: string;\n /** The shape of this document, so a reader written today can refuse a\n * document written against a later contract instead of misreading it. */\n readonly contract: 1;\n readonly releases: readonly Release[];\n};\n\nexport const CHANGELOG_CONTRACT = 1;\n\n/** Where the machine-readable copy lives in a published package. */\nexport const CHANGELOG_FILE = \"changelog.json\";\n\n/** Where the human-readable copy lives. */\nexport const CHANGELOG_MARKDOWN = \"CHANGELOG.md\";\n\n/** Where entries wait between releases, one file each so two branches adding\n * a change do not conflict over the same line. */\nexport const UNRELEASED_DIRECTORY = \"changelog/unreleased\";\n\nexport const isDisruptive = (change: Change): change is DisruptiveChange =>\n change.kind === \"breaking\" || change.kind === \"removed\";\n\n/** Whether a migration can be applied rather than read. */\nexport const isMechanical = (\n migration: Migration,\n): migration is Exclude<Migration, { manual: true }> =>\n !(\"manual\" in migration);\n",
8
8
  "import { isDisruptive, type Change } from \"./types\";\n\n/*\n * Which version a set of changes adds up to.\n *\n * Written out rather than pulled in, for the same reason the rest of this\n * package has no dependencies: forty lines of arithmetic is not worth a\n * supply chain, and every consumer of a changelog -- a CLI, an editor, a\n * control plane deciding what to offer -- needs the comparison as much as the\n * bumping.\n *\n * The rules that are not the textbook ones are the two that match how these\n * packages are actually versioned:\n *\n * - Below 1.0.0 a breaking change moves the minor. The major is reserved\n * for the release that means it, and `0.x` is the place the ecosystem\n * lives.\n * - A version already on a prerelease line moves along that line by\n * default, whatever the changes are. Somebody publishing `beta.88` is not\n * asking to be moved to `1.0.0` because they fixed a bug.\n */\n\nexport type ReleaseKind = \"major\" | \"minor\" | \"patch\" | \"prerelease\";\n\ntype Parsed = {\n prerelease: string[];\n release: [number, number, number];\n};\n\n/** What a comparator returns: the left one is older, or it is newer. */\nconst OLDER = -1;\n/** The last element, and everything but it. */\nconst LAST = -1;\nconst NEWER = 1;\n\nconst VERSION =\n /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([0-9A-Za-z.-]+))?(?:\\+[0-9A-Za-z.-]+)?$/u;\n\nexport const parseVersion = (version: string) => {\n const found = VERSION.exec(version.trim());\n if (!found) return undefined;\n const [, major, minor, patch, prerelease] = found;\n\n return {\n prerelease: prerelease === undefined ? [] : prerelease.split(\".\"),\n release: [Number(major), Number(minor), Number(patch)],\n } satisfies Parsed;\n};\n\nconst isNumeric = (value: string) => /^\\d+$/u.test(value);\n\nconst comparePrerelease = (left: string[], right: string[]) => {\n // A release outranks any prerelease of the same numbers.\n if (left.length === 0 || right.length === 0)\n return right.length - left.length;\n for (const [index, mine] of left.entries()) {\n const theirs = right[index];\n if (theirs === undefined) return NEWER;\n if (mine === theirs) continue;\n if (isNumeric(mine) && isNumeric(theirs))\n return Number(mine) - Number(theirs);\n // Numeric identifiers rank below alphanumeric ones.\n if (isNumeric(mine)) return OLDER;\n if (isNumeric(theirs)) return NEWER;\n\n return mine < theirs ? OLDER : NEWER;\n }\n\n return left.length - right.length;\n};\n\n/** Semver order. Negative when the left version is the older one. */\nexport const compareVersions = (left: string, right: string) => {\n const mine = parseVersion(left);\n const theirs = parseVersion(right);\n if (!mine || !theirs) return 0;\n for (const [index, part] of mine.release.entries()) {\n const other = theirs.release[index] ?? 0;\n if (part !== other) return part - other;\n }\n\n return comparePrerelease(mine.prerelease, theirs.prerelease);\n};\n\nexport const isPrerelease = (version: string) =>\n (parseVersion(version)?.prerelease.length ?? 0) > 0;\n\n/** The largest step any of these changes asks for. */\nexport const releaseKindFor = (changes: readonly Change[]) => {\n if (changes.some(isDisruptive)) {\n const major: ReleaseKind = \"major\";\n\n return major;\n }\n const asked: ReleaseKind = changes.some((entry) => entry.kind === \"added\")\n ? \"minor\"\n : \"patch\";\n\n return asked;\n};\n\nconst bumpPrerelease = (parsed: Parsed) => {\n const { prerelease, release } = parsed;\n const last = prerelease.at(LAST);\n const counted =\n last !== undefined && isNumeric(last)\n ? [...prerelease.slice(0, LAST), String(Number(last) + 1)]\n : [...prerelease, \"1\"];\n\n return `${release.join(\".\")}-${counted.join(\".\")}`;\n};\n\n/**\n * The version these changes make of this one.\n *\n * `asked` overrides the changes: a release that means to leave a prerelease\n * line, or to cut the major it has been putting off, says so rather than\n * being inferred into it.\n */\nexport const nextVersion = (input: {\n asked?: ReleaseKind;\n changes: readonly Change[];\n current: string;\n /** The identifier a first prerelease uses: `beta` gives `1.0.0-beta.1`. */\n prereleaseIdentifier?: string;\n}) => {\n const parsed = parseVersion(input.current);\n if (!parsed) return undefined;\n const [major, minor, patch] = parsed.release;\n /* A prerelease line moves along itself unless told otherwise -- including\n * for a breaking change, which is what a prerelease line is for. */\n const kind =\n input.asked ??\n (parsed.prerelease.length > 0\n ? \"prerelease\"\n : releaseKindFor(input.changes));\n if (kind === \"prerelease\")\n return parsed.prerelease.length > 0\n ? bumpPrerelease(parsed)\n : `${major}.${minor}.${patch + 1}-${\n input.prereleaseIdentifier ?? \"beta\"\n }.1`;\n /* Leaving a prerelease line for the release it was leading up to: the\n * numbers are already right, the suffix is what goes. */\n if (parsed.prerelease.length > 0 && kind === \"patch\")\n return `${major}.${minor}.${patch}`;\n /* Below 1.0.0 the major is reserved for the release that means it, so a\n * breaking change moves the minor instead. */\n if (kind === \"major\")\n return major === 0 ? `${major}.${minor + 1}.0` : `${major + 1}.0.0`;\n\n return kind === \"minor\"\n ? `${major}.${minor + 1}.0`\n : `${major}.${minor}.${patch + 1}`;\n};\n",
@@ -14,7 +14,7 @@
14
14
  "import { gunzipSync } from \"node:zlib\";\nimport { parseChangelog } from \"./read\";\nimport { surfaceOfArchive } from \"./surface\";\nimport { asText, readTar } from \"./tarball\";\nimport { CHANGELOG_FILE } from \"./types\";\n\n/*\n * What the registry can tell us about a package.\n *\n * Two documents and no more: the abbreviated packument, which says which\n * versions exist and where their tarballs are, and the tarballs themselves,\n * which hold the types and the changelog.\n *\n * The abbreviated form is asked for by name. The full packument for a package\n * that publishes daily is tens of megabytes of README and maintainer history\n * for the two fields below.\n */\n\nconst ABBREVIATED = \"application/vnd.npm.install-v1+json\";\nconst DEFAULT_REGISTRY = \"https://registry.npmjs.org\";\nconst KIBIBYTE = 1024;\nconst MEBIBYTE = KIBIBYTE * KIBIBYTE;\n/** A published package past this is not one anybody is upgrading through a\n * changelog, and the bytes are a stranger's. */\nconst MAX_ARCHIVE_MEBIBYTES = 96;\nconst MAX_ARCHIVE_BYTES = MAX_ARCHIVE_MEBIBYTES * MEBIBYTE;\nconst MAX_DOWNLOAD_MEBIBYTES = 32;\nconst MAX_DOWNLOAD_BYTES = MAX_DOWNLOAD_MEBIBYTES * MEBIBYTE;\n/** Long enough for a slow registry, short enough that a hung connection does\n * not hold a release open. */\nexport type PackageVersions = {\n latest?: string;\n published: string[];\n tarballs: Record<string, string>;\n};\n\nconst TIMEOUT_MS = 20_000;\nconst NOT_FOUND = 404;\n\n/** The registry answered, and the answer is that this name has nothing on it\n * -- which a first release is, and an outage is not. */\nconst NOTHING_PUBLISHED: PackageVersions = { published: [], tarballs: {} };\n\n/** npm's own grammar, near enough: no path segments, no traversal. A name\n * from a customer's manifest reaches this, and `@scope/../../thing`\n * normalises to somebody else's package. */\nconst PACKAGE_NAME = /^(?:@[a-z0-9][a-z0-9._-]*\\/)?[a-z0-9][a-z0-9._-]*$/u;\n\n/** npm's own limit. */\nconst MAX_NAME_LENGTH = 214;\n\nexport const isPackageName = (name: string) =>\n name.length <= MAX_NAME_LENGTH && PACKAGE_NAME.test(name);\n\nexport type RegistryOptions = {\n fetch?: typeof fetch;\n /** For a private registry, or a test. */\n registry?: string;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null;\n\nconst readPackument = (body: unknown): PackageVersions | undefined => {\n if (!isRecord(body) || !isRecord(body.versions)) return undefined;\n const tarballs: Record<string, string> = {};\n for (const [version, entry] of Object.entries(body.versions)) {\n if (!isRecord(entry) || !isRecord(entry.dist)) continue;\n const { tarball } = entry.dist;\n if (typeof tarball === \"string\") tarballs[version] = tarball;\n }\n const tags = body[\"dist-tags\"];\n const latest = isRecord(tags) ? tags.latest : undefined;\n\n return {\n ...(typeof latest === \"string\" ? { latest } : {}),\n published: Object.keys(body.versions),\n tarballs,\n };\n};\n\n/** One version's tarball, gunzipped. */\n/**\n * One version's tarball, gunzipped.\n *\n * A failure is not remembered. Callers cache the promise this returns, and a\n * transient 503 stored as \"there is no archive\" sticks for the life of the\n * process -- the registry recovers and the answer does not.\n */\nexport const packageArchive = async (\n name: string,\n version: string,\n options: RegistryOptions = {},\n) => {\n const call = options.fetch ?? fetch;\n const versions = await packageVersions(name, options);\n const url = versions?.tarballs[version];\n if (url === undefined) return undefined;\n try {\n const response = await call(url, {\n signal: AbortSignal.timeout(TIMEOUT_MS),\n });\n if (!response.ok) return undefined;\n const compressed = new Uint8Array(await response.arrayBuffer());\n /* Both ends bounded. Half a megabyte of gzip expands to half a gigabyte\n * if you let it, and the thing doing the expanding here is a control\n * plane holding other people's secrets. */\n if (compressed.byteLength > MAX_DOWNLOAD_BYTES) return undefined;\n\n return new Uint8Array(\n gunzipSync(compressed, { maxOutputLength: MAX_ARCHIVE_BYTES }),\n );\n } catch {\n return undefined;\n }\n};\n/**\n * Every version published under a name, or nothing when the registry could not\n * say.\n *\n * Nothing is not an error to throw: a caller deciding what to offer somebody\n * can say \"we could not check\", and that is a better answer than a failed\n * page.\n */\nconst packuments = new Map<\n string,\n { asked: number; value: Promise<PackageVersions | undefined> }\n>();\n\n/** Long enough that a page asking about twenty packages asks once each, short\n * enough that a release published while somebody reads is offered to them. */\nconst SECONDS_PER_MINUTE = 60;\nconst MILLISECONDS_PER_SECOND = 1000;\nconst PACKUMENT_MINUTES = 5;\nconst PACKUMENT_TTL_MS =\n PACKUMENT_MINUTES * SECONDS_PER_MINUTE * MILLISECONDS_PER_SECOND;\n\n/** Forget what the registry said, for a test that means to say it again. */\nexport const forgetRegistry = () => packuments.clear();\n\nexport const packageVersions = async (\n name: string,\n options: RegistryOptions = {},\n) => {\n if (!isPackageName(name)) return undefined;\n /* Cached, because the alternative is what the consumer of this library was\n * doing: one request per package per page load, from a control plane, to\n * somebody else's registry, for an answer that changes daily.\n *\n * Only when nobody passed their own `fetch` -- a caller with a fetch double\n * means to control the answers, and a cache shared with the real registry\n * would hand them somebody else's. */\n const cacheable =\n options.fetch === undefined && options.registry === undefined;\n const known = cacheable ? packuments.get(name) : undefined;\n if (known !== undefined && Date.now() - known.asked < PACKUMENT_TTL_MS)\n return known.value;\n const value = askRegistry(name, options);\n if (cacheable) packuments.set(name, { asked: Date.now(), value });\n\n return value;\n};\n\nconst askRegistry = async (name: string, options: RegistryOptions) => {\n const call = options.fetch ?? fetch;\n const url = `${options.registry ?? DEFAULT_REGISTRY}/${name.replace(\"/\", \"%2f\")}`;\n try {\n const abbreviated = await call(url, {\n headers: { accept: ABBREVIATED },\n signal: AbortSignal.timeout(TIMEOUT_MS),\n });\n /* A package published minutes ago answers the full document and 404s the\n * abbreviated one -- the registry builds that form on its own schedule.\n * Taking the 404 at face value says \"no such package\" about a package\n * that is right there, which is a confusing few minutes for whoever just\n * published it. */\n const response = abbreviated.ok\n ? abbreviated\n : await call(url, { signal: AbortSignal.timeout(TIMEOUT_MS) });\n if (response.ok) return readPackument(await response.json());\n\n /* A definite 404 is an answer: this name has never been published. That\n * is not the same as the registry being unreachable, and a caller that\n * cannot tell them apart refuses a package's first release forever. */\n return response.status === NOT_FOUND ? NOTHING_PUBLISHED : undefined;\n } catch {\n return undefined;\n }\n};\n/**\n * A published version's changelog, when it ships one.\n *\n * Nothing is the ordinary answer for a package that has not adopted this yet,\n * and callers are expected to fall back to comparing type surfaces rather than\n * to give up: an unannotated release is still a release somebody has to\n * decide about.\n */\nexport const publishedChangelog = async (\n name: string,\n version: string,\n options: RegistryOptions = {},\n) => {\n const archive = await packageArchive(name, version, options);\n if (!archive) return undefined;\n const file = readTar(archive, (path) => path === CHANGELOG_FILE).get(\n CHANGELOG_FILE,\n );\n if (!file) return undefined;\n try {\n return parseChangelog(JSON.parse(asText(file))).changelog;\n } catch {\n return undefined;\n }\n};\n/** A published version's type surface, for comparing against another. */\nexport const publishedSurface = async (\n name: string,\n version: string,\n options: RegistryOptions = {},\n) => {\n const archive = await packageArchive(name, version, options);\n\n return archive === undefined ? undefined : surfaceOfArchive(archive);\n};\n",
15
15
  "import {\n CHANGELOG_CONTRACT,\n isDisruptive,\n type Change,\n type ChangeKind,\n type Changelog,\n type Migration,\n type Release,\n} from \"./types\";\nimport { compareVersions } from \"./versioning\";\n\n/*\n * Writing the two copies.\n *\n * `changelog.json` is the document programs read and the one that ships in the\n * package. `CHANGELOG.md` is the same content for people, generated from it\n * rather than written beside it -- two files kept in step by hand is one file\n * and a lie.\n *\n * Both are produced from the entries, so the markdown is never edited: a\n * change to it is a change to an entry, and the file says so at the top for\n * whoever arrives with a fix.\n */\n\nconst HEADING: Record<ChangeKind, string> = {\n added: \"Added\",\n breaking: \"Breaking\",\n changed: \"Changed\",\n deprecated: \"Deprecated\",\n fixed: \"Fixed\",\n internal: \"Internal\",\n removed: \"Removed\",\n security: \"Security\",\n};\n\n/* Read in the order somebody cares about them: what will cost me an\n * afternoon, then what I can now do, then what stopped being wrong. */\nconst ORDER: readonly ChangeKind[] = [\n \"breaking\",\n \"removed\",\n \"deprecated\",\n \"security\",\n \"added\",\n \"changed\",\n \"fixed\",\n \"internal\",\n];\n\nconst migrationLine = (migration: Migration) => {\n if (\"rename\" in migration)\n return `Rename \\`${migration.rename.from}\\` to \\`${migration.rename.to}\\`.`;\n if (\"moved\" in migration)\n return `Import \\`${migration.moved.symbol}\\` from \\`${migration.moved.to}\\` instead of \\`${migration.moved.from}\\`.`;\n if (\"resubpath\" in migration)\n return `Import from \\`${migration.resubpath.to}\\` instead of \\`${migration.resubpath.from}\\`.`;\n\n return migration.instruction;\n};\n\nconst renderChange = (change: Change) => {\n const symbols =\n change.symbols && change.symbols.length > 0\n ? ` (${change.symbols.map((name) => `\\`${name}\\``).join(\", \")})`\n : \"\";\n const lines = [`- **${change.summary}**${symbols}`];\n if (change.detail !== undefined) lines.push(` ${change.detail}`);\n if (isDisruptive(change)) {\n lines.push(` _Migration:_ ${change.migration.instruction}`);\n const mechanical = migrationLine(change.migration);\n if (mechanical !== change.migration.instruction)\n lines.push(` _Applied automatically:_ ${mechanical}`);\n }\n if (change.reference !== undefined) lines.push(` See ${change.reference}.`);\n\n return lines.join(\"\\n\");\n};\n\nconst renderRelease = (release: Release) => {\n const sections = ORDER.map((kind) => {\n const changes = release.changes.filter((entry) => entry.kind === kind);\n if (changes.length === 0) return null;\n\n return [`### ${HEADING[kind]}`, \"\", ...changes.map(renderChange)].join(\n \"\\n\",\n );\n }).filter((section): section is string => section !== null);\n\n return [\n `## ${release.version} — ${release.date}`,\n ...(release.note === undefined ? [] : [\"\", release.note]),\n \"\",\n sections.join(\"\\n\\n\"),\n ].join(\"\\n\");\n};\n\n/**\n * The line that says this file was generated.\n *\n * Load-bearing: adopting a package reads whatever `CHANGELOG.md` said before\n * and keeps it as history, and on a second adoption the file it generated the\n * first time is what it finds. Without a way to recognise its own output it\n * files that as history and prints the header underneath itself.\n */\nexport const GENERATED_MARKER =\n \"This file is generated by `absolute-changelog`\";\n\nexport type MarkdownOptions = {\n /** Whatever the package's changelog said before it was generated, kept\n * under the releases that came after it. History is not noise. */\n history?: string;\n};\n\n/** The document that ships in the package: stable key order, so a release\n * that changed nothing produces no diff. */\nexport const renderChangelogJson = (changelog: Changelog) =>\n `${JSON.stringify(\n {\n contract: CHANGELOG_CONTRACT,\n name: changelog.name,\n releases: [...changelog.releases]\n .sort((left, right) => compareVersions(right.version, left.version))\n .map((release) => ({\n changes: release.changes.map((change) => ({\n ...(change.detail === undefined ? {} : { detail: change.detail }),\n kind: change.kind,\n ...(isDisruptive(change) ? { migration: change.migration } : {}),\n ...(change.reference === undefined\n ? {}\n : { reference: change.reference }),\n summary: change.summary,\n ...(change.symbols && change.symbols.length > 0\n ? { symbols: change.symbols }\n : {}),\n })),\n date: release.date,\n ...(release.note === undefined ? {} : { note: release.note }),\n version: release.version,\n })),\n },\n null,\n \"\\t\",\n )}\\n`;\nexport const renderMarkdown = (\n changelog: Changelog,\n options: MarkdownOptions = {},\n) => {\n const releases = [...changelog.releases].sort((left, right) =>\n compareVersions(right.version, left.version),\n );\n const head = [\n \"# Changelog\",\n \"\",\n `All notable changes to \\`${changelog.name}\\`.`,\n \"\",\n `${GENERATED_MARKER} from the entries in`,\n \"`changelog/`. Edit an entry, not this file — and add new ones under\",\n \"`changelog/unreleased/`.\",\n ].join(\"\\n\");\n const body = releases.map(renderRelease).join(\"\\n\\n\");\n const tail =\n options.history === undefined || options.history.trim() === \"\"\n ? \"\"\n : [\"---\", \"\", \"## Earlier releases\", \"\", options.history.trim()].join(\n \"\\n\",\n );\n\n return `${[head, body, tail].filter((part) => part !== \"\").join(\"\\n\\n\")}\\n`;\n};\n"
16
16
  ],
17
- "mappings": "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",
18
- "debugId": "3D35EBE83A76D8A664756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "A14460FB75D13A7E64756E2164756E21",
19
19
  "names": []
20
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@absolutejs/changelog",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "The changelog contract for the AbsoluteJS packages. Changes are written as typed entries the compiler checks, the release gate reconciles them against the package's own published types so a change nobody wrote down cannot ship, and migrations are data rather than prose so an upgrade can be applied instead of read.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -45,7 +45,7 @@
45
45
  "changelog": "bun src/cli.ts",
46
46
  "check:package": "bun run typecheck && bun run lint && bun run test && bun run build && bun src/cli.ts check",
47
47
  "release": "bun run format && bun run check:package && bun publish",
48
- "prepublishOnly": "bun src/cli.ts check"
48
+ "prepublishOnly": "bun run check:package"
49
49
  },
50
50
  "keywords": [
51
51
  "absolutejs",