@meza/adr-tools 1.0.10 → 1.0.11

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.
Files changed (93) hide show
  1. package/.gitattributes +40 -0
  2. package/.github/renovate.json +5 -0
  3. package/.github/workflows/ci-pr.yml +44 -0
  4. package/.github/workflows/ci.yml +19 -20
  5. package/.github/workflows/sync-deps-to-main.yml +25 -0
  6. package/.github/workflows/sync-to-deps.yml +26 -0
  7. package/.releaserc.json +2 -7
  8. package/CHANGELOG.md +69 -0
  9. package/LICENSE +674 -0
  10. package/README.md +64 -5
  11. package/biome.json +148 -0
  12. package/dist/index.js +52 -82
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/adr.js +99 -125
  15. package/dist/lib/adr.js.map +1 -1
  16. package/dist/lib/config.js +20 -37
  17. package/dist/lib/config.js.map +1 -1
  18. package/dist/lib/links.js +8 -25
  19. package/dist/lib/links.js.map +1 -1
  20. package/dist/lib/links.test.js +35 -64
  21. package/dist/lib/links.test.js.map +1 -1
  22. package/dist/lib/manipulator.js +22 -23
  23. package/dist/lib/manipulator.js.map +1 -1
  24. package/dist/lib/manipulator.test.js +59 -63
  25. package/dist/lib/manipulator.test.js.map +1 -1
  26. package/dist/lib/numbering.js +9 -48
  27. package/dist/lib/numbering.js.map +1 -1
  28. package/dist/lib/numbering.test.js +27 -44
  29. package/dist/lib/numbering.test.js.map +1 -1
  30. package/dist/lib/prompt.js +14 -0
  31. package/dist/lib/prompt.js.map +1 -0
  32. package/dist/lib/prompt.test.js +33 -0
  33. package/dist/lib/prompt.test.js.map +1 -0
  34. package/dist/lib/template.js +13 -26
  35. package/dist/lib/template.js.map +1 -1
  36. package/dist/types/lib/adr.d.ts.map +1 -1
  37. package/dist/types/lib/config.d.ts.map +1 -1
  38. package/dist/types/lib/links.d.ts.map +1 -1
  39. package/dist/types/lib/manipulator.d.ts.map +1 -1
  40. package/dist/types/lib/numbering.d.ts.map +1 -1
  41. package/dist/types/lib/prompt.d.ts +2 -0
  42. package/dist/types/lib/prompt.d.ts.map +1 -0
  43. package/dist/types/lib/prompt.test.d.ts +2 -0
  44. package/dist/types/lib/prompt.test.d.ts.map +1 -0
  45. package/dist/types/lib/template.d.ts.map +1 -1
  46. package/dist/types/version.d.ts +1 -1
  47. package/dist/version.js +1 -4
  48. package/dist/version.js.map +1 -1
  49. package/doc/adr/.adr-sequence.lock +1 -0
  50. package/doc/adr/decisions.md +3 -0
  51. package/package.json +73 -47
  52. package/src/index.ts +52 -27
  53. package/src/lib/adr.ts +67 -72
  54. package/src/lib/config.ts +3 -3
  55. package/src/lib/links.test.ts +8 -24
  56. package/src/lib/links.ts +2 -2
  57. package/src/lib/manipulator.test.ts +44 -47
  58. package/src/lib/manipulator.ts +22 -10
  59. package/src/lib/numbering.test.ts +5 -9
  60. package/src/lib/numbering.ts +4 -5
  61. package/src/lib/prompt.test.ts +42 -0
  62. package/src/lib/prompt.ts +14 -0
  63. package/src/lib/template.ts +7 -3
  64. package/src/version.ts +1 -1
  65. package/tests/.adr-dir +1 -0
  66. package/tests/__snapshots__/generate-graph.e2e.test.ts.snap +23 -23
  67. package/tests/__snapshots__/init-adr-repository.e2e.test.ts.snap +1 -1
  68. package/tests/__snapshots__/linking-records.e2e.test.ts.snap +1 -1
  69. package/tests/__snapshots__/new-adr.e2e.test.ts.snap +1 -1
  70. package/tests/__snapshots__/superseding-records.e2e.test.ts.snap +1 -1
  71. package/tests/__snapshots__/toc-prefixing.e2e.test.ts.snap +1 -1
  72. package/tests/__snapshots__/use-template-override.e2e.test.ts.snap +1 -1
  73. package/tests/edit-on-create.e2e.test.ts +17 -12
  74. package/tests/funny-characters.e2e.test.ts +28 -21
  75. package/tests/generate-graph.e2e.test.ts +21 -13
  76. package/tests/init-adr-repository.e2e.test.ts +12 -8
  77. package/tests/linking-records.e2e.test.ts +21 -14
  78. package/tests/list-adrs.e2e.test.ts +23 -18
  79. package/tests/new-adr.e2e.test.ts +15 -12
  80. package/tests/superseding-records.e2e.test.ts +16 -11
  81. package/tests/toc-prefixing.e2e.test.ts +15 -11
  82. package/tests/use-template-override.e2e.test.ts +18 -10
  83. package/tests/work-form-other-directories.e2e.test.ts +14 -12
  84. package/tsconfig.json +9 -8
  85. package/vitest.config.e2e.ts +13 -0
  86. package/vitest.config.ts +8 -1
  87. package/.eslintignore +0 -2
  88. package/.eslintrc.json +0 -23
  89. package/.github/dependabot.yml +0 -14
  90. package/.github/workflows/auto-merge.yml +0 -14
  91. package/doc/adr/0001-record-architecture-decisions.md +0 -21
  92. package/doc/adr/0002-using-heavy-e2e-tests.md +0 -20
  93. /package/src/{environment.d.ts → types/environment.d.ts} +0 -0
package/dist/lib/adr.js CHANGED
@@ -1,39 +1,14 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.listAdrs = exports.link = exports.init = exports.newAdr = exports.generateToc = void 0;
16
- const numbering_1 = require("./numbering");
17
- const template_1 = require("./template");
18
- const promises_1 = __importDefault(require("fs/promises"));
19
- const path_1 = __importDefault(require("path"));
20
- const config_1 = require("./config");
21
- const inquirer_1 = require("inquirer");
22
- const chalk_1 = __importDefault(require("chalk"));
23
- const manipulator_1 = require("./manipulator");
24
- const links_1 = require("./links");
25
- const node_child_process_1 = __importDefault(require("node:child_process"));
26
- const askForClarification = (searchString, matches) => __awaiter(void 0, void 0, void 0, function* () {
27
- const selection = yield (0, inquirer_1.prompt)([
28
- {
29
- type: 'list',
30
- name: 'target',
31
- message: `Which file do you want to link to for ${chalk_1.default.blue(searchString)}?`,
32
- choices: matches
33
- }
34
- ]);
35
- return selection.target;
36
- });
1
+ import childProcess from 'node:child_process';
2
+ import path from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import fs from 'fs/promises';
5
+ import { getDir, workingDir } from './config.js';
6
+ import { findMatchingFilesFor, getLinkDetails } from './links.js';
7
+ import { getTitleFrom, injectLink, supersede } from './manipulator.js';
8
+ import { newNumber } from './numbering.js';
9
+ import { askForClarification } from './prompt.js';
10
+ import { template } from './template.js';
11
+ const __filename = fileURLToPath(import.meta.url);
37
12
  // eslint-disable-next-line no-unused-vars
38
13
  var LinkType;
39
14
  (function (LinkType) {
@@ -42,33 +17,33 @@ var LinkType;
42
17
  // eslint-disable-next-line no-unused-vars
43
18
  LinkType["SUPERSEDE"] = "supersede";
44
19
  })(LinkType || (LinkType = {}));
45
- const actuallyLink = (task) => __awaiter(void 0, void 0, void 0, function* () {
46
- const linkedFile = path_1.default.join(yield (0, config_1.getDir)(), task.targetPath);
47
- const newAdrContent = yield promises_1.default.readFile(task.sourcePath, 'utf8');
48
- const oldAdrContent = yield promises_1.default.readFile(linkedFile, 'utf8');
49
- const oldTitle = (0, manipulator_1.getTitleFrom)(oldAdrContent);
50
- const newTitle = (0, manipulator_1.getTitleFrom)(newAdrContent);
20
+ const actuallyLink = async (task) => {
21
+ const linkedFile = path.join(await getDir(), task.targetPath);
22
+ const newAdrContent = await fs.readFile(task.sourcePath, 'utf8');
23
+ const oldAdrContent = await fs.readFile(linkedFile, 'utf8');
24
+ const oldTitle = getTitleFrom(oldAdrContent);
25
+ const newTitle = getTitleFrom(newAdrContent);
51
26
  let dirtyOld = '', dirtyNew = '';
52
27
  switch (task.type) {
53
28
  case LinkType.LINK:
54
- dirtyOld = (0, manipulator_1.injectLink)(oldAdrContent, `${task.reverseLink} [${newTitle}](${path_1.default.relative(yield (0, config_1.getDir)(), task.sourcePath)})`);
55
- dirtyNew = (0, manipulator_1.injectLink)(newAdrContent, `${task.link} [${oldTitle}](${task.targetPath})`);
29
+ dirtyOld = injectLink(oldAdrContent, `${task.reverseLink} [${newTitle}](${path.relative(await getDir(), task.sourcePath)})`);
30
+ dirtyNew = injectLink(newAdrContent, `${task.link} [${oldTitle}](${task.targetPath})`);
56
31
  break;
57
32
  case LinkType.SUPERSEDE:
58
- dirtyOld = (0, manipulator_1.supersede)(oldAdrContent, `${task.reverseLink} [${newTitle}](${path_1.default.relative(yield (0, config_1.getDir)(), task.sourcePath)})`);
59
- dirtyNew = (0, manipulator_1.injectLink)(newAdrContent, `${task.link} [${oldTitle}](${task.targetPath})`);
33
+ dirtyOld = supersede(oldAdrContent, `${task.reverseLink} [${newTitle}](${path.relative(await getDir(), task.sourcePath)})`);
34
+ dirtyNew = injectLink(newAdrContent, `${task.link} [${oldTitle}](${task.targetPath})`);
60
35
  break;
61
36
  default:
62
37
  break;
63
38
  }
64
- yield promises_1.default.writeFile(linkedFile, dirtyOld);
65
- yield promises_1.default.writeFile(task.sourcePath, dirtyNew);
66
- });
67
- const processSupersedes = (sourcePath, supersedes = [], suppressPrompts = false) => __awaiter(void 0, void 0, void 0, function* () {
39
+ await fs.writeFile(linkedFile, dirtyOld);
40
+ await fs.writeFile(task.sourcePath, dirtyNew);
41
+ };
42
+ const processSupersedes = async (sourcePath, supersedes = [], suppressPrompts = false) => {
68
43
  if (supersedes.length === 0) {
69
44
  return;
70
45
  }
71
- const supersedeStrings = yield Promise.all(supersedes.map((link) => (0, links_1.getLinkDetails)(link, true)));
46
+ const supersedeStrings = await Promise.all(supersedes.map((link) => getLinkDetails(link, true)));
72
47
  for (const targetDetails of supersedeStrings) {
73
48
  const task = {
74
49
  type: LinkType.SUPERSEDE,
@@ -79,21 +54,19 @@ const processSupersedes = (sourcePath, supersedes = [], suppressPrompts = false)
79
54
  };
80
55
  if (targetDetails.matches.length > 1) {
81
56
  if (suppressPrompts) {
82
- throw new Error(`Multiple files match the search pattern for "${targetDetails.original}".\n`
83
- + 'Please specify which file you want to targetDetails to more or remove the -q or --quiet options from the command line.');
84
- }
85
- else {
86
- task.targetPath = yield askForClarification(targetDetails.original, targetDetails.matches);
57
+ throw new Error(`Multiple files match the search pattern for "${targetDetails.original}".\n` +
58
+ 'Please specify which file you want to targetDetails to more or remove the -q or --quiet options from the command line.');
87
59
  }
60
+ task.targetPath = await askForClarification(targetDetails.original, targetDetails.matches);
88
61
  }
89
- yield actuallyLink(task);
62
+ await actuallyLink(task);
90
63
  }
91
- });
92
- const injectLinksTo = (sourcePath, links = [], suppressPrompts = false) => __awaiter(void 0, void 0, void 0, function* () {
64
+ };
65
+ const injectLinksTo = async (sourcePath, links = [], suppressPrompts = false) => {
93
66
  if (links.length === 0) {
94
67
  return;
95
68
  }
96
- const linkStrings = yield Promise.all(links.map((link) => (0, links_1.getLinkDetails)(link)));
69
+ const linkStrings = await Promise.all(links.map((link) => getLinkDetails(link)));
97
70
  for (const targetDetails of linkStrings) {
98
71
  const task = {
99
72
  type: LinkType.LINK,
@@ -104,100 +77,101 @@ const injectLinksTo = (sourcePath, links = [], suppressPrompts = false) => __awa
104
77
  };
105
78
  if (targetDetails.matches.length > 1) {
106
79
  if (suppressPrompts) {
107
- throw new Error(`Multiple files match the search pattern for "${targetDetails.original}".\n`
108
- + 'Please specify which file you want to targetDetails to more or remove the -q or --quiet options from the command line.');
109
- }
110
- else {
111
- task.targetPath = yield askForClarification(targetDetails.original, targetDetails.matches);
80
+ throw new Error(`Multiple files match the search pattern for "${targetDetails.original}".\n` +
81
+ 'Please specify which file you want to targetDetails to more or remove the -q or --quiet options from the command line.');
112
82
  }
83
+ task.targetPath = await askForClarification(targetDetails.original, targetDetails.matches);
113
84
  }
114
- yield actuallyLink(task);
85
+ await actuallyLink(task);
115
86
  }
116
- });
87
+ };
117
88
  //Generate a table of contents for the adr directory
118
- const generateToc = (options) => __awaiter(void 0, void 0, void 0, function* () {
119
- const adrDir = yield (0, config_1.getDir)();
120
- const files = yield promises_1.default.readdir(adrDir);
89
+ export const generateToc = async (options) => {
90
+ const adrDir = await getDir();
91
+ const files = await fs.readdir(adrDir);
121
92
  const toc = files.filter((file) => file.match(/^\d{4}-.*\.md$/));
122
- const titles = toc.map((file) => __awaiter(void 0, void 0, void 0, function* () {
123
- const title = (0, manipulator_1.getTitleFrom)(yield promises_1.default.readFile(path_1.default.join(adrDir, file), 'utf8'));
124
- return `- [${title}](${(options === null || options === void 0 ? void 0 : options.prefix) || ''}${file})`;
125
- }));
126
- const resolvedTitles = yield Promise.all(titles);
127
- const tocFile = path_1.default.resolve(path_1.default.join(adrDir, 'decisions.md'));
128
- yield promises_1.default.writeFile(tocFile, `# Table of Contents\n\n${resolvedTitles.join('\n')}`);
129
- });
130
- exports.generateToc = generateToc;
131
- const newAdr = (title, config) => __awaiter(void 0, void 0, void 0, function* () {
132
- const newNum = yield (0, numbering_1.newNumber)();
133
- const formattedDate = (config === null || config === void 0 ? void 0 : config.date) || new Date().toISOString().split('T')[0] || 'ERROR';
134
- const tpl = yield (0, template_1.template)(config === null || config === void 0 ? void 0 : config.template);
135
- const adr = tpl.replace('DATE', formattedDate).replace('TITLE', title).replace('NUMBER', newNum.toString()).replace('STATUS', 'Accepted');
93
+ const titles = toc.map(async (file) => {
94
+ const title = getTitleFrom(await fs.readFile(path.join(adrDir, file), 'utf8'));
95
+ return `- [${title}](${options?.prefix || ''}${file})`;
96
+ });
97
+ const resolvedTitles = await Promise.all(titles);
98
+ const tocFile = path.resolve(path.join(adrDir, 'decisions.md'));
99
+ await fs.writeFile(tocFile, `# Table of Contents\n\n${resolvedTitles.join('\n')}`);
100
+ };
101
+ export const newAdr = async (title, config) => {
102
+ const newNum = await newNumber();
103
+ const formattedDate = config?.date || new Date().toISOString().split('T')[0] || 'ERROR';
104
+ const tpl = await template(config?.template);
105
+ const adr = tpl
106
+ .replace('DATE', formattedDate)
107
+ .replace('TITLE', title)
108
+ .replace('NUMBER', newNum.toString())
109
+ .replace('STATUS', 'Accepted');
136
110
  const paddedNumber = newNum.toString().padStart(4, '0');
137
- const cleansedTitle = title.toLowerCase().replace(/\W/g, '-').replace(/^(.*)\W$/, '$1').replace(/^\W(.*)$/, '$1');
111
+ const cleansedTitle = title
112
+ .toLowerCase()
113
+ .replace(/\W/g, '-')
114
+ .replace(/^(.*)\W$/, '$1')
115
+ .replace(/^\W(.*)$/, '$1');
138
116
  const fileName = `${paddedNumber}-${cleansedTitle}.md`;
139
- const adrDirectory = yield (0, config_1.getDir)();
140
- const adrPath = path_1.default.resolve(path_1.default.join(adrDirectory, fileName));
141
- yield promises_1.default.writeFile(adrPath, adr);
142
- yield promises_1.default.writeFile(path_1.default.resolve(adrDirectory, '.adr-sequence.lock'), newNum.toString());
143
- yield processSupersedes(adrPath, config === null || config === void 0 ? void 0 : config.supersedes, config === null || config === void 0 ? void 0 : config.suppressPrompts);
144
- yield injectLinksTo(adrPath, config === null || config === void 0 ? void 0 : config.links, config === null || config === void 0 ? void 0 : config.suppressPrompts);
145
- yield (0, exports.generateToc)();
146
- const newAdrPath = path_1.default.relative((0, config_1.workingDir)(), adrPath);
117
+ const adrDirectory = await getDir();
118
+ const adrPath = path.resolve(path.join(adrDirectory, fileName));
119
+ await fs.writeFile(adrPath, adr);
120
+ await fs.writeFile(path.resolve(adrDirectory, '.adr-sequence.lock'), newNum.toString());
121
+ await processSupersedes(adrPath, config?.supersedes, config?.suppressPrompts);
122
+ await injectLinksTo(adrPath, config?.links, config?.suppressPrompts);
123
+ await generateToc();
147
124
  if (process.env.VISUAL) {
148
- yield node_child_process_1.default.spawn(process.env.VISUAL, [adrPath], {
125
+ await childProcess.spawn(process.env.VISUAL, [adrPath], {
149
126
  stdio: 'inherit',
150
127
  shell: true
151
128
  });
152
129
  return;
153
130
  }
154
131
  if (process.env.EDITOR) {
155
- yield node_child_process_1.default.spawn(process.env.EDITOR, [adrPath], {
132
+ await childProcess.spawn(process.env.EDITOR, [adrPath], {
156
133
  stdio: 'inherit',
157
134
  shell: true
158
135
  });
159
136
  return;
160
137
  }
161
- console.log(newAdrPath);
162
- });
163
- exports.newAdr = newAdr;
164
- const init = (directory) => __awaiter(void 0, void 0, void 0, function* () {
165
- const dir = directory || (yield (0, config_1.getDir)());
166
- yield promises_1.default.mkdir(dir, { recursive: true });
167
- yield promises_1.default.writeFile(path_1.default.join((0, config_1.workingDir)(), '.adr-dir'), path_1.default.relative((0, config_1.workingDir)(), dir));
168
- yield (0, exports.newAdr)('Record Architecture Decisions', {
138
+ };
139
+ export const init = async (directory) => {
140
+ const dir = directory || (await getDir());
141
+ await fs.mkdir(dir, { recursive: true });
142
+ await fs.writeFile(path.join(workingDir(), '.adr-dir'), path.relative(workingDir(), dir));
143
+ await newAdr('Record Architecture Decisions', {
169
144
  date: process.env.ADR_DATE,
170
- template: path_1.default.resolve(path_1.default.dirname(__filename), '../templates/init.md')
145
+ template: path.resolve(path.dirname(__filename), '../templates/init.md')
171
146
  });
172
- });
173
- exports.init = init;
174
- const link = (source, link, target, reverseLink, options) => __awaiter(void 0, void 0, void 0, function* () {
175
- const getFor = (pattern) => __awaiter(void 0, void 0, void 0, function* () {
176
- const found = yield (0, links_1.findMatchingFilesFor)(pattern);
147
+ };
148
+ export const link = async (source, link, target, reverseLink, options) => {
149
+ const getFor = async (pattern) => {
150
+ const found = await findMatchingFilesFor(pattern);
177
151
  if (found.length === 1) {
178
152
  return found[0];
179
153
  }
180
- if (options === null || options === void 0 ? void 0 : options.quiet) {
181
- throw new Error(`Multiple files match the search pattern for "${pattern}".\n`
182
- + 'Please specify which file you want to targetDetails to more or remove the -q or --quiet options from the command line.');
154
+ if (options?.quiet) {
155
+ throw new Error(`Multiple files match the search pattern for "${pattern}".\n` +
156
+ 'Please specify which file you want to targetDetails to more or remove the -q or --quiet options from the command line.');
183
157
  }
184
158
  return askForClarification(pattern, found);
185
- });
186
- const sourceFile = yield getFor(source);
187
- yield injectLinksTo(path_1.default.resolve(yield (0, config_1.getDir)(), sourceFile), [`${target}:${link}:${reverseLink}`]);
188
- });
189
- exports.link = link;
190
- const listAdrs = () => __awaiter(void 0, void 0, void 0, function* () {
191
- const dir = yield (0, config_1.getDir)();
192
- const files = yield promises_1.default.readdir(dir);
193
- const toc = files.map(f => {
159
+ };
160
+ const sourceFile = await getFor(source);
161
+ await injectLinksTo(path.resolve(await getDir(), sourceFile), [`${target}:${link}:${reverseLink}`]);
162
+ };
163
+ export const listAdrs = async () => {
164
+ const dir = await getDir();
165
+ const files = await fs.readdir(dir);
166
+ const toc = files
167
+ .map((f) => {
194
168
  const adrFile = f.match(/^0*(\d+)-.*$/);
195
169
  if (adrFile) {
196
- return path_1.default.resolve(dir, adrFile[0]);
170
+ return path.resolve(dir, adrFile[0]);
197
171
  }
198
172
  return '';
199
- }).filter(f => f !== '');
173
+ })
174
+ .filter((f) => f !== '');
200
175
  return toc;
201
- });
202
- exports.listAdrs = listAdrs;
176
+ };
203
177
  //# sourceMappingURL=adr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adr.js","sourceRoot":"src/","sources":["lib/adr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adr.js","sourceRoot":"src/","sources":["lib/adr.ts"],"names":[],"mappings":"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"}
@@ -1,50 +1,33 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getDir = exports.workingDir = void 0;
16
- const promises_1 = __importDefault(require("fs/promises"));
17
- const fs_1 = require("fs");
18
- const path_1 = __importDefault(require("path"));
19
- const workingDir = () => process.cwd();
20
- exports.workingDir = workingDir;
21
- const findTopLevelDir = (dir) => __awaiter(void 0, void 0, void 0, function* () {
1
+ import { constants } from 'fs';
2
+ import path from 'path';
3
+ import fs from 'fs/promises';
4
+ export const workingDir = () => process.cwd();
5
+ const findTopLevelDir = async (dir) => {
22
6
  try {
23
- yield promises_1.default.access(path_1.default.join(dir, '.adr-dir'), fs_1.constants.F_OK);
7
+ await fs.access(path.join(dir, '.adr-dir'), constants.F_OK);
24
8
  return dir;
25
9
  }
26
- catch (e) {
10
+ catch (_e) {
27
11
  if (dir === '/') {
28
12
  throw new Error('No ADR directory config found');
29
13
  }
30
- const newDir = path_1.default.join(dir, '..');
14
+ const newDir = path.join(dir, '..');
31
15
  return findTopLevelDir(newDir);
32
16
  }
33
- });
34
- const getDirPath = () => __awaiter(void 0, void 0, void 0, function* () {
17
+ };
18
+ const getDirPath = async () => {
35
19
  try {
36
- const configDir = yield findTopLevelDir((0, exports.workingDir)());
37
- const configFile = yield promises_1.default.readFile(path_1.default.join(configDir, '.adr-dir'), 'utf8');
38
- return path_1.default.relative((0, exports.workingDir)(), path_1.default.join(configDir, configFile.trim()));
20
+ const configDir = await findTopLevelDir(workingDir());
21
+ const configFile = await fs.readFile(path.join(configDir, '.adr-dir'), 'utf8');
22
+ return path.relative(workingDir(), path.join(configDir, configFile.trim()));
39
23
  }
40
- catch (e) {
41
- return path_1.default.resolve(path_1.default.join((0, exports.workingDir)(), 'doc/adr'));
24
+ catch (_e) {
25
+ return path.resolve(path.join(workingDir(), 'doc/adr'));
42
26
  }
43
- });
44
- const getDir = () => __awaiter(void 0, void 0, void 0, function* () {
45
- const dir = yield getDirPath();
46
- yield promises_1.default.mkdir(dir, { recursive: true });
27
+ };
28
+ export const getDir = async () => {
29
+ const dir = await getDirPath();
30
+ await fs.mkdir(dir, { recursive: true });
47
31
  return dir;
48
- });
49
- exports.getDir = getDir;
32
+ };
50
33
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"src/","sources":["lib/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2DAA6B;AAC7B,2BAA+B;AAC/B,gDAAwB;AAEjB,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAAjC,QAAA,UAAU,cAAuB;AAE9C,MAAM,eAAe,GAAG,CAAO,GAAW,EAAmB,EAAE;IAC7D,IAAI;QACF,MAAM,kBAAE,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,cAAS,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,GAAG,KAAK,GAAG,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;SAClD;QACD,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;KAChC;AACH,CAAC,CAAA,CAAC;AAEF,MAAM,UAAU,GAAG,GAA0B,EAAE;IAC7C,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,cAAI,CAAC,QAAQ,CAAC,IAAA,kBAAU,GAAE,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAC7E;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,IAAI,CAAC,IAAA,kBAAU,GAAE,EAAE,SAAS,CAAC,CAAC,CAAC;KACzD;AACH,CAAC,CAAA,CAAC;AAEK,MAAM,MAAM,GAAG,GAA0B,EAAE;IAChD,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;IAC/B,MAAM,kBAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,CAAC;AACb,CAAC,CAAA,CAAC;AAJW,QAAA,MAAM,UAIjB"}
1
+ {"version":3,"file":"config.js","sourceRoot":"src/","sources":["lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAE9C,MAAM,eAAe,GAAG,KAAK,EAAE,GAAW,EAAmB,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,IAAqB,EAAE;IAC7C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,IAAqB,EAAE;IAChD,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;IAC/B,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
package/dist/lib/links.js CHANGED
@@ -1,26 +1,10 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
1
+ import fs from 'fs/promises';
2
+ import { getDir } from './config.js';
3
+ export const findMatchingFilesFor = async (pattern) => {
4
+ const files = await fs.readdir(await getDir());
5
+ return files.filter((file) => file.includes(pattern));
10
6
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getLinkDetails = exports.findMatchingFilesFor = void 0;
16
- const promises_1 = __importDefault(require("fs/promises"));
17
- const config_1 = require("./config");
18
- const findMatchingFilesFor = (pattern) => __awaiter(void 0, void 0, void 0, function* () {
19
- const files = yield promises_1.default.readdir(yield (0, config_1.getDir)());
20
- return files.filter(file => file.includes(pattern));
21
- });
22
- exports.findMatchingFilesFor = findMatchingFilesFor;
23
- const getLinkDetails = (linkString, isSupersede = false) => __awaiter(void 0, void 0, void 0, function* () {
7
+ export const getLinkDetails = async (linkString, isSupersede = false) => {
24
8
  const parts = linkString.split(':');
25
9
  const pattern = parts[0];
26
10
  let link = 'Supersedes';
@@ -29,7 +13,7 @@ const getLinkDetails = (linkString, isSupersede = false) => __awaiter(void 0, vo
29
13
  link = parts[1];
30
14
  reverseLink = parts[2];
31
15
  }
32
- const files = yield (0, exports.findMatchingFilesFor)(pattern);
16
+ const files = await findMatchingFilesFor(pattern);
33
17
  return {
34
18
  pattern: pattern,
35
19
  original: linkString,
@@ -37,6 +21,5 @@ const getLinkDetails = (linkString, isSupersede = false) => __awaiter(void 0, vo
37
21
  reverseLink: reverseLink,
38
22
  matches: files
39
23
  };
40
- });
41
- exports.getLinkDetails = getLinkDetails;
24
+ };
42
25
  //# sourceMappingURL=links.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"links.js","sourceRoot":"src/","sources":["lib/links.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2DAA6B;AAC7B,qCAAkC;AAU3B,MAAM,oBAAoB,GAAG,CAAO,OAAe,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,MAAM,IAAA,eAAM,GAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,CAAC,CAAA,CAAC;AAHW,QAAA,oBAAoB,wBAG/B;AAEK,MAAM,cAAc,GAAG,CAAO,UAAkB,EAAE,cAAuB,KAAK,EAAwB,EAAE;IAC7G,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,WAAW,GAAG,eAAe,CAAC;IAClC,IAAI,CAAC,WAAW,EAAE;QAChB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;IACD,MAAM,KAAK,GAAG,MAAM,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;IAClD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC,CAAA,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
1
+ {"version":3,"file":"links.js","sourceRoot":"src/","sources":["lib/links.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAUrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,UAAkB,EAAE,cAAuB,KAAK,EAAwB,EAAE;IAC7G,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,IAAI,GAAG,YAAY,CAAC;IACxB,IAAI,WAAW,GAAG,eAAe,CAAC;IAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC,CAAC"}
@@ -1,94 +1,65 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
1
+ import fs from 'fs/promises';
2
+ import { afterEach, describe, expect, it, vi } from 'vitest';
3
+ import { getDir } from './config.js';
4
+ import { getLinkDetails } from './links.js';
5
+ vi.mock('./config.js');
6
+ vi.mock('fs/promises');
7
+ describe('The link lib', () => {
8
+ afterEach(() => {
9
+ vi.resetAllMocks();
9
10
  });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const vitest_1 = require("vitest");
16
- const promises_1 = __importDefault(require("fs/promises"));
17
- const config_1 = require("./config");
18
- const links_1 = require("./links");
19
- vitest_1.vi.mock('./config');
20
- vitest_1.vi.mock('fs/promises');
21
- (0, vitest_1.describe)('The link lib', () => {
22
- (0, vitest_1.afterEach)(() => {
23
- vitest_1.vi.resetAllMocks();
24
- });
25
- (0, vitest_1.it)('does not care if there are no matches', () => __awaiter(void 0, void 0, void 0, function* () {
26
- vitest_1.vi.mocked(config_1.getDir).mockResolvedValueOnce('/');
27
- vitest_1.vi.mocked(promises_1.default.readdir).mockResolvedValueOnce([]);
11
+ it('does not care if there are no matches', async () => {
12
+ vi.mocked(getDir).mockResolvedValueOnce('/');
13
+ vi.mocked(fs.readdir).mockResolvedValueOnce([]);
28
14
  const linkString = '1:overrides:overriden by';
29
- const response = yield (0, links_1.getLinkDetails)(linkString);
30
- (0, vitest_1.expect)(response).toEqual({
15
+ const response = await getLinkDetails(linkString);
16
+ expect(response).toEqual({
31
17
  pattern: '1',
32
18
  original: '1:overrides:overriden by',
33
19
  link: 'overrides',
34
20
  reverseLink: 'overriden by',
35
21
  matches: []
36
22
  });
37
- }));
38
- (0, vitest_1.it)('does handles multiple matches', () => __awaiter(void 0, void 0, void 0, function* () {
39
- vitest_1.vi.mocked(config_1.getDir).mockResolvedValueOnce('/');
40
- vitest_1.vi.mocked(promises_1.default.readdir).mockResolvedValueOnce([
41
- '1-one',
42
- '1-two',
43
- '1-three'
44
- ]);
23
+ });
24
+ it('does handles multiple matches', async () => {
25
+ vi.mocked(getDir).mockResolvedValueOnce('/');
26
+ vi.mocked(fs.readdir).mockResolvedValueOnce(['1-one', '1-two', '1-three']);
45
27
  const linkString = '1:overrides:overriden by';
46
- const response = yield (0, links_1.getLinkDetails)(linkString);
47
- (0, vitest_1.expect)(response).toEqual({
28
+ const response = await getLinkDetails(linkString);
29
+ expect(response).toEqual({
48
30
  pattern: '1',
49
31
  original: '1:overrides:overriden by',
50
32
  link: 'overrides',
51
33
  reverseLink: 'overriden by',
52
- matches: [
53
- '1-one',
54
- '1-two',
55
- '1-three'
56
- ]
34
+ matches: ['1-one', '1-two', '1-three']
57
35
  });
58
- }));
59
- (0, vitest_1.it)('returns only files that match the pattern', () => __awaiter(void 0, void 0, void 0, function* () {
60
- vitest_1.vi.mocked(config_1.getDir).mockResolvedValueOnce('/');
61
- vitest_1.vi.mocked(promises_1.default.readdir).mockResolvedValueOnce([
62
- 'on1e',
63
- '1-two',
64
- 'three'
65
- ]);
36
+ });
37
+ it('returns only files that match the pattern', async () => {
38
+ vi.mocked(getDir).mockResolvedValueOnce('/');
39
+ vi.mocked(fs.readdir).mockResolvedValueOnce(['on1e', '1-two', 'three']);
66
40
  const linkString = '1:overrides:overriden by';
67
- const response = yield (0, links_1.getLinkDetails)(linkString);
68
- (0, vitest_1.expect)(response).toEqual({
41
+ const response = await getLinkDetails(linkString);
42
+ expect(response).toEqual({
69
43
  pattern: '1',
70
44
  original: '1:overrides:overriden by',
71
45
  link: 'overrides',
72
46
  reverseLink: 'overriden by',
73
- matches: [
74
- 'on1e',
75
- '1-two'
76
- ]
47
+ matches: ['on1e', '1-two']
77
48
  });
78
- }));
79
- (0, vitest_1.it)('handles superseding', () => __awaiter(void 0, void 0, void 0, function* () {
80
- vitest_1.vi.mocked(config_1.getDir).mockResolvedValueOnce('/');
81
- vitest_1.vi.mocked(promises_1.default.readdir).mockResolvedValueOnce([]);
49
+ });
50
+ it('handles superseding', async () => {
51
+ vi.mocked(getDir).mockResolvedValueOnce('/');
52
+ vi.mocked(fs.readdir).mockResolvedValueOnce([]);
82
53
  const linkString = '1';
83
54
  const supersede = true;
84
- const response = yield (0, links_1.getLinkDetails)(linkString, supersede);
85
- (0, vitest_1.expect)(response).toEqual({
55
+ const response = await getLinkDetails(linkString, supersede);
56
+ expect(response).toEqual({
86
57
  pattern: '1',
87
58
  original: '1',
88
59
  link: 'Supersedes',
89
60
  reverseLink: 'Superseded by',
90
61
  matches: []
91
62
  });
92
- }));
63
+ });
93
64
  });
94
65
  //# sourceMappingURL=links.test.js.map