@adaptabletools/adaptable-mcp 0.1.0-canary.1 → 0.1.0-canary.2
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/README.md +3 -1
- package/data/changes/21-22.json +542 -0
- package/data/changes/22-23.json +639 -0
- package/data/changes/23-24.json +1874 -0
- package/data/manifest.snapshot.json +28 -10
- package/data/templates/angular/src/app/adaptableOptions.ts +40 -0
- package/data/templates/angular/src/app/agGridModules.ts +7 -0
- package/data/templates/angular/src/app/app.component.ts +66 -0
- package/data/templates/angular/src/app/app.module.ts +14 -0
- package/data/templates/angular/src/app/columnDefs.ts +121 -0
- package/data/templates/angular/src/app/gridOptions.ts +32 -0
- package/data/templates/angular/src/app/onAdaptableReady.ts +11 -0
- package/data/templates/angular/src/app/rowData.ts +851 -0
- package/data/templates/angular/src/app/styles.css +50 -0
- package/data/templates/angular/src/index.html +17 -0
- package/data/templates/angular/src/main.ts +18 -0
- package/data/templates/angular/src/polyfills.ts +1 -0
- package/data/templates/angular/tsconfig.json +16 -0
- package/data/templates/manifest.json +406 -0
- package/data/templates/react/src/App.tsx +71 -0
- package/data/templates/react/src/adaptableOptions.ts +40 -0
- package/data/templates/react/src/agGridModules.ts +7 -0
- package/data/templates/react/src/columnDefs.ts +121 -0
- package/data/templates/react/src/gridOptions.ts +32 -0
- package/data/templates/react/src/index.tsx +8 -0
- package/data/templates/react/src/onAdaptableReady.ts +11 -0
- package/data/templates/react/src/rowData.ts +851 -0
- package/data/templates/react/src/styles.css +50 -0
- package/data/templates/react/tsconfig.json +9 -0
- package/data/templates/vanilla/index.html +18 -0
- package/data/templates/vanilla/src/adaptableOptions.ts +40 -0
- package/data/templates/vanilla/src/agGridModules.ts +7 -0
- package/data/templates/vanilla/src/columnDefs.ts +121 -0
- package/data/templates/vanilla/src/gridOptions.ts +32 -0
- package/data/templates/vanilla/src/index.ts +41 -0
- package/data/templates/vanilla/src/onAdaptableReady.ts +11 -0
- package/data/templates/vanilla/src/rowData.ts +851 -0
- package/data/templates/vanilla/src/styles.css +50 -0
- package/data/templates/vanilla/tsconfig.json +14 -0
- package/data/templates/vue/.babelrc +3 -0
- package/data/templates/vue/public/index.html +19 -0
- package/data/templates/vue/src/App.vue +35 -0
- package/data/templates/vue/src/adaptableOptions.ts +40 -0
- package/data/templates/vue/src/agGridModules.ts +7 -0
- package/data/templates/vue/src/columnDefs.ts +121 -0
- package/data/templates/vue/src/gridOptions.ts +32 -0
- package/data/templates/vue/src/main.ts +6 -0
- package/data/templates/vue/src/onAdaptableReady.ts +11 -0
- package/data/templates/vue/src/rowData.ts +851 -0
- package/data/templates/vue/src/shims-vue.d.ts +6 -0
- package/data/templates/vue/src/styles.css +50 -0
- package/data/templates/vue/tsconfig.json +30 -0
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -1
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/anonymise/anonymise.js +315 -0
- package/dist/core/anonymise/anonymise.js.map +1 -0
- package/dist/core/anonymise/capabilities.js +94 -0
- package/dist/core/anonymise/capabilities.js.map +1 -0
- package/dist/core/aql/capabilities.js +339 -0
- package/dist/core/aql/capabilities.js.map +1 -0
- package/dist/core/aql/check.js +204 -0
- package/dist/core/aql/check.js.map +1 -0
- package/dist/core/aql/engine.js +92 -0
- package/dist/core/aql/engine.js.map +1 -0
- package/dist/core/aql/functions.js +108 -0
- package/dist/core/aql/functions.js.map +1 -0
- package/dist/core/aql/migrate.js +62 -0
- package/dist/core/aql/migrate.js.map +1 -0
- package/dist/core/capabilities.js +9 -3
- package/dist/core/capabilities.js.map +1 -1
- package/dist/core/changes/capabilities.js +92 -0
- package/dist/core/changes/capabilities.js.map +1 -0
- package/dist/core/changes/changes.js +101 -0
- package/dist/core/changes/changes.js.map +1 -0
- package/dist/core/changes/grep.js +183 -0
- package/dist/core/changes/grep.js.map +1 -0
- package/dist/core/changes/records.js +172 -0
- package/dist/core/changes/records.js.map +1 -0
- package/dist/core/changes/render-md.js +101 -0
- package/dist/core/changes/render-md.js.map +1 -0
- package/dist/core/changes/with-docs.js +86 -0
- package/dist/core/changes/with-docs.js.map +1 -0
- package/dist/core/compat/capabilities.js +1 -1
- package/dist/core/compat/capabilities.js.map +1 -1
- package/dist/core/context/capabilities.js +1 -1
- package/dist/core/context/capabilities.js.map +1 -1
- package/dist/core/convert/capabilities.js +86 -0
- package/dist/core/convert/capabilities.js.map +1 -0
- package/dist/core/convert/coldefs.js +313 -0
- package/dist/core/convert/coldefs.js.map +1 -0
- package/dist/core/docs/cache.js +1 -1
- package/dist/core/docs/capabilities.js +1 -5
- package/dist/core/docs/capabilities.js.map +1 -1
- package/dist/core/docs/hosts.js +2 -2
- package/dist/core/docs/hosts.js.map +1 -1
- package/dist/core/extract/imports.js +163 -0
- package/dist/core/extract/imports.js.map +1 -0
- package/dist/core/extract/input.js +140 -0
- package/dist/core/extract/input.js.map +1 -0
- package/dist/core/extract/line-map.js +90 -0
- package/dist/core/extract/line-map.js.map +1 -0
- package/dist/core/extract/ts-literal.js +963 -0
- package/dist/core/extract/ts-literal.js.map +1 -0
- package/dist/core/migrate/capabilities.js +143 -0
- package/dist/core/migrate/capabilities.js.map +1 -0
- package/dist/core/migrate/leftovers.js +119 -0
- package/dist/core/migrate/leftovers.js.map +1 -0
- package/dist/core/migrate/state.js +295 -0
- package/dist/core/migrate/state.js.map +1 -0
- package/dist/core/packages/cache.js +2 -1
- package/dist/core/packages/cache.js.map +1 -1
- package/dist/core/register.js +8 -0
- package/dist/core/register.js.map +1 -1
- package/dist/core/scaffold/capabilities.js +434 -0
- package/dist/core/scaffold/capabilities.js.map +1 -0
- package/dist/core/scaffold/generate.js +409 -0
- package/dist/core/scaffold/generate.js.map +1 -0
- package/dist/core/scaffold/infer.js +441 -0
- package/dist/core/scaffold/infer.js.map +1 -0
- package/dist/core/scaffold/overlay.js +290 -0
- package/dist/core/scaffold/overlay.js.map +1 -0
- package/dist/core/scaffold/readers/csv.js +146 -0
- package/dist/core/scaffold/readers/csv.js.map +1 -0
- package/dist/core/scaffold/readers/dataset.js +53 -0
- package/dist/core/scaffold/readers/dataset.js.map +1 -0
- package/dist/core/scaffold/readers/index.js +62 -0
- package/dist/core/scaffold/readers/index.js.map +1 -0
- package/dist/core/scaffold/readers/json.js +101 -0
- package/dist/core/scaffold/readers/json.js.map +1 -0
- package/dist/core/scaffold/readers/xlsx.js +81 -0
- package/dist/core/scaffold/readers/xlsx.js.map +1 -0
- package/dist/core/scaffold/suggestions.js +57 -0
- package/dist/core/scaffold/suggestions.js.map +1 -0
- package/dist/core/scaffold/templates.js +59 -0
- package/dist/core/scaffold/templates.js.map +1 -0
- package/dist/core/setup/audit.js +91 -0
- package/dist/core/setup/audit.js.map +1 -0
- package/dist/core/setup/capabilities.js +80 -0
- package/dist/core/setup/capabilities.js.map +1 -0
- package/dist/core/setup/context.js +118 -0
- package/dist/core/setup/context.js.map +1 -0
- package/dist/core/setup/rules/cell-data-type.js +40 -0
- package/dist/core/setup/rules/cell-data-type.js.map +1 -0
- package/dist/core/setup/rules/coldef-ownership.js +67 -0
- package/dist/core/setup/rules/coldef-ownership.js.map +1 -0
- package/dist/core/setup/rules/css-import.js +34 -0
- package/dist/core/setup/rules/css-import.js.map +1 -0
- package/dist/core/setup/rules/direct-grid.js +42 -0
- package/dist/core/setup/rules/direct-grid.js.map +1 -0
- package/dist/core/setup/rules/index.js +53 -0
- package/dist/core/setup/rules/index.js.map +1 -0
- package/dist/core/setup/rules/licence-literal.js +23 -0
- package/dist/core/setup/rules/licence-literal.js.map +1 -0
- package/dist/core/setup/rules/modules.js +86 -0
- package/dist/core/setup/rules/modules.js.map +1 -0
- package/dist/core/setup/rules/react-stable-refs.js +20 -0
- package/dist/core/setup/rules/react-stable-refs.js.map +1 -0
- package/dist/core/setup/rules/ready-hook.js +33 -0
- package/dist/core/setup/rules/ready-hook.js.map +1 -0
- package/dist/core/setup/rules/required-options.js +43 -0
- package/dist/core/setup/rules/required-options.js.map +1 -0
- package/dist/core/setup/rules/rule.js +10 -0
- package/dist/core/setup/rules/rule.js.map +1 -0
- package/dist/core/setup/rules/version-skew.js +65 -0
- package/dist/core/setup/rules/version-skew.js.map +1 -0
- package/dist/core/state/capabilities.js +78 -0
- package/dist/core/state/capabilities.js.map +1 -0
- package/dist/core/state/check.js +216 -0
- package/dist/core/state/check.js.map +1 -0
- package/dist/core/state/columns.js +130 -0
- package/dist/core/state/columns.js.map +1 -0
- package/dist/core/state/did-you-mean.js +83 -0
- package/dist/core/state/did-you-mean.js.map +1 -0
- package/dist/core/state/expressions.js +170 -0
- package/dist/core/state/expressions.js.map +1 -0
- package/dist/core/state/known-names.js +96 -0
- package/dist/core/state/known-names.js.map +1 -0
- package/dist/core/state/rules/aql-legacy-shape.js +42 -0
- package/dist/core/state/rules/aql-legacy-shape.js.map +1 -0
- package/dist/core/state/rules/aql-missing.js +21 -0
- package/dist/core/state/rules/aql-missing.js.map +1 -0
- package/dist/core/state/rules/aql-syntax.js +77 -0
- package/dist/core/state/rules/aql-syntax.js.map +1 -0
- package/dist/core/state/rules/calculated-settings.js +23 -0
- package/dist/core/state/rules/calculated-settings.js.map +1 -0
- package/dist/core/state/rules/column-id-exists.js +29 -0
- package/dist/core/state/rules/column-id-exists.js.map +1 -0
- package/dist/core/state/rules/dashboard-module-names.js +31 -0
- package/dist/core/state/rules/dashboard-module-names.js.map +1 -0
- package/dist/core/state/rules/dashboard-toolbar-names.js +48 -0
- package/dist/core/state/rules/dashboard-toolbar-names.js.map +1 -0
- package/dist/core/state/rules/format-column-pivot-display-format.js +43 -0
- package/dist/core/state/rules/format-column-pivot-display-format.js.map +1 -0
- package/dist/core/state/rules/helpers.js +39 -0
- package/dist/core/state/rules/helpers.js.map +1 -0
- package/dist/core/state/rules/index.js +80 -0
- package/dist/core/state/rules/index.js.map +1 -0
- package/dist/core/state/rules/layout-column-refs.js +60 -0
- package/dist/core/state/rules/layout-column-refs.js.map +1 -0
- package/dist/core/state/rules/layout-current-exists.js +27 -0
- package/dist/core/state/rules/layout-current-exists.js.map +1 -0
- package/dist/core/state/rules/layout-non-empty.js +32 -0
- package/dist/core/state/rules/layout-non-empty.js.map +1 -0
- package/dist/core/state/rules/rule.js +2 -0
- package/dist/core/state/rules/rule.js.map +1 -0
- package/dist/core/state/rules/scope-column-refs.js +32 -0
- package/dist/core/state/rules/scope-column-refs.js.map +1 -0
- package/dist/core/state/rules/scope-shape.js +61 -0
- package/dist/core/state/rules/scope-shape.js.map +1 -0
- package/dist/core/state/rules/state-unique-name.js +40 -0
- package/dist/core/state/rules/state-unique-name.js.map +1 -0
- package/dist/core/state/rules/state-unknown-section.js +30 -0
- package/dist/core/state/rules/state-unknown-section.js.map +1 -0
- package/dist/core/state/rules/type-discriminator.js +70 -0
- package/dist/core/state/rules/type-discriminator.js.map +1 -0
- package/dist/core/state/type-check.js +349 -83
- package/dist/core/state/type-check.js.map +1 -1
- package/dist/mcp/index.js +104 -16
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/server.js +110 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/skills/adaptable-debug/SKILL.md +145 -0
- package/dist/skills/adaptable-debug/VERSION.md +1 -0
- package/dist/skills/adaptable-debug/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-debug/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-debug/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-debug/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-debug/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-debug/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-debug/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-debug/references/devtools-api.md +36 -0
- package/dist/skills/adaptable-debug/references/feedback-template.md +36 -0
- package/dist/skills/adaptable-debug/references/symptoms.md +37 -0
- package/dist/skills/adaptable-debug/references/ticket-template.md +50 -0
- package/dist/skills/adaptable-dev/SKILL.md +97 -0
- package/dist/skills/adaptable-dev/VERSION.md +1 -0
- package/dist/skills/adaptable-dev/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-dev/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-dev/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-dev/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-dev/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-dev/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-dev/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-dev/references/recommendations.md +93 -0
- package/dist/skills/adaptable-setup/SKILL.md +158 -0
- package/dist/skills/adaptable-setup/VERSION.md +1 -0
- package/dist/skills/adaptable-setup/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-setup/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-setup/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-setup/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-setup/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-setup/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-setup/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-setup/references/paths.md +45 -0
- package/dist/skills/adaptable-upgrade/SKILL.md +269 -0
- package/dist/skills/adaptable-upgrade/VERSION.md +1 -0
- package/dist/skills/adaptable-upgrade/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-upgrade/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-upgrade/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-upgrade/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-upgrade/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-upgrade/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-upgrade/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-upgrade/references/apply-order.md +171 -0
- package/dist/skills/adaptable-upgrade/references/plan-preamble.md +151 -0
- package/dist/skills/adaptable-upgrade/scripts/adaptable.mjs +24 -0
- package/package.json +11 -5
- package/dist/core/state/rules.js +0 -417
- package/dist/core/state/rules.js.map +0 -1
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The literal token search of `changes --repo` (plan §8.10), ported from the
|
|
3
|
+
* upgrade skill's `scan-usages.mjs`: a plain, case-sensitive substring search
|
|
4
|
+
* over the project's text files — `git ls-files` (tracked + untracked, honouring
|
|
5
|
+
* `.gitignore`) when the folder is a repository, a walk otherwise — with
|
|
6
|
+
* `node_modules`, dot-folders, build output, lockfiles, binaries, files over
|
|
7
|
+
* 2 MB and installed skill folders excluded. No code analysis; `file:line` hits
|
|
8
|
+
* per record, capped.
|
|
9
|
+
*/
|
|
10
|
+
import { execFileSync } from 'node:child_process';
|
|
11
|
+
import { readdirSync, readFileSync, statSync } from 'node:fs';
|
|
12
|
+
import { join, relative, resolve, sep } from 'node:path';
|
|
13
|
+
const IGNORED_DIRS = new Set(['node_modules', 'dist', 'build', 'out', 'coverage', 'tmp', 'bower_components']);
|
|
14
|
+
/** Dot-folders hold tool configuration and installed agent skills, never application code */
|
|
15
|
+
const isIgnoredDir = (name) => IGNORED_DIRS.has(name) || name.startsWith('.');
|
|
16
|
+
const IGNORED_FILES = new Set(['package-lock.json', 'yarn.lock', 'pnpm-lock.yaml', 'bun.lockb', 'skills-lock.json']);
|
|
17
|
+
/** The upgrade skill's own outputs; a resumed run must not match them */
|
|
18
|
+
const isIgnoredFile = (name) => IGNORED_FILES.has(name) || /^ADAPTABLE_(UPGRADE|UPDATE)_.*\.md$/.test(name);
|
|
19
|
+
const SKILL_MARKER = 'SKILL.md';
|
|
20
|
+
export const MAX_FILE_BYTES = 2 * 1024 * 1024;
|
|
21
|
+
/** Hits kept per record (plan §2 principle 8: grep hits capped per record) */
|
|
22
|
+
export const MAX_MATCHES_PER_RECORD = 20;
|
|
23
|
+
const BINARY_EXTENSIONS = new Set([
|
|
24
|
+
'.png', '.jpg', '.jpeg', '.gif', '.webp', '.ico', '.svg', '.pdf', '.zip', '.gz', '.tgz',
|
|
25
|
+
'.woff', '.woff2', '.ttf', '.eot', '.otf', '.mp4', '.mp3', '.wasm', '.map', '.lockb', '.xlsx', '.xls',
|
|
26
|
+
]);
|
|
27
|
+
function listFilesWithGit(root) {
|
|
28
|
+
try {
|
|
29
|
+
const out = execFileSync('git', ['-C', root, 'ls-files', '--cached', '--others', '--exclude-standard', '-z'], {
|
|
30
|
+
encoding: 'utf8',
|
|
31
|
+
maxBuffer: 256 * 1024 * 1024,
|
|
32
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
33
|
+
});
|
|
34
|
+
return out
|
|
35
|
+
.split('\0')
|
|
36
|
+
.filter(Boolean)
|
|
37
|
+
.map((p) => join(root, p))
|
|
38
|
+
.filter((p) => !relative(root, p).split(sep).slice(0, -1).some(isIgnoredDir));
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function listFilesByWalking(root) {
|
|
45
|
+
const files = [];
|
|
46
|
+
const stack = [root];
|
|
47
|
+
while (stack.length) {
|
|
48
|
+
const dir = stack.pop();
|
|
49
|
+
let dirents;
|
|
50
|
+
try {
|
|
51
|
+
dirents = readdirSync(dir, { withFileTypes: true });
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
for (const dirent of dirents) {
|
|
57
|
+
if (dirent.isDirectory()) {
|
|
58
|
+
if (!isIgnoredDir(dirent.name)) {
|
|
59
|
+
stack.push(join(dir, dirent.name));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else if (dirent.isFile()) {
|
|
63
|
+
files.push(join(dir, dirent.name));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return files;
|
|
68
|
+
}
|
|
69
|
+
function isScannable(path) {
|
|
70
|
+
const name = path.slice(path.lastIndexOf(sep) + 1);
|
|
71
|
+
if (isIgnoredFile(name)) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
const dot = name.lastIndexOf('.');
|
|
75
|
+
const ext = dot >= 0 ? name.slice(dot).toLowerCase() : '';
|
|
76
|
+
if (BINARY_EXTENSIONS.has(ext)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const size = statSync(path).size;
|
|
81
|
+
return size > 0 && size <= MAX_FILE_BYTES;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** Drops every file inside a folder holding a `SKILL.md`: an installed agent skill, not application code */
|
|
88
|
+
function excludeSkillFolders(files) {
|
|
89
|
+
const skillDirs = files.filter((p) => p.endsWith(sep + SKILL_MARKER)).map((p) => p.slice(0, p.lastIndexOf(sep) + 1));
|
|
90
|
+
return skillDirs.length ? files.filter((p) => !skillDirs.some((dir) => p.startsWith(dir))) : files;
|
|
91
|
+
}
|
|
92
|
+
/** The text files of a project worth searching */
|
|
93
|
+
export function listProjectFiles(root) {
|
|
94
|
+
const absolute = resolve(root);
|
|
95
|
+
const files = listFilesWithGit(absolute) ?? listFilesByWalking(absolute);
|
|
96
|
+
return excludeSkillFolders(files).filter(isScannable);
|
|
97
|
+
}
|
|
98
|
+
const IDENTIFIER_TOKEN = /^[A-Za-z_$][\w$]*$/;
|
|
99
|
+
const IDENTIFIER_CHAR = /[\w$]/;
|
|
100
|
+
/**
|
|
101
|
+
* Whether `line` contains `token`: a plain substring, except that an identifier-shaped
|
|
102
|
+
* token (`AlertDefinition`, `predicateOptions`) must not be glued to other identifier
|
|
103
|
+
* characters — `AlertDefinitions:` is not a hit for `AlertDefinition`, while
|
|
104
|
+
* `predicateOptions.caseSensitive` and `predicateOptions:` are hits for `predicateOptions`.
|
|
105
|
+
*/
|
|
106
|
+
export function lineHas(line, token) {
|
|
107
|
+
if (!IDENTIFIER_TOKEN.test(token)) {
|
|
108
|
+
return line.includes(token);
|
|
109
|
+
}
|
|
110
|
+
let from = 0;
|
|
111
|
+
for (;;) {
|
|
112
|
+
const at = line.indexOf(token, from);
|
|
113
|
+
if (at < 0) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
const before = at > 0 ? line[at - 1] : '';
|
|
117
|
+
const after = line[at + token.length] ?? '';
|
|
118
|
+
if (!IDENTIFIER_CHAR.test(before) && !IDENTIFIER_CHAR.test(after)) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
from = at + 1;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** Searches `projects` for every record's tokens; one pass per file, one `includes` per token */
|
|
125
|
+
export function scanProjects(projects, records, options = {}) {
|
|
126
|
+
const cap = options.maxMatches ?? MAX_MATCHES_PER_RECORD;
|
|
127
|
+
const tokenIndex = new Map();
|
|
128
|
+
for (const record of records) {
|
|
129
|
+
for (const token of record.search) {
|
|
130
|
+
const ids = tokenIndex.get(token) ?? [];
|
|
131
|
+
if (!ids.includes(record.id)) {
|
|
132
|
+
ids.push(record.id);
|
|
133
|
+
}
|
|
134
|
+
tokenIndex.set(token, ids);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const tokens = [...tokenIndex.keys()];
|
|
138
|
+
const hits = new Map(); // id → "file:line" → match
|
|
139
|
+
let scannedFiles = 0;
|
|
140
|
+
for (const project of projects) {
|
|
141
|
+
const base = resolve(options.cwd ?? project);
|
|
142
|
+
for (const file of listProjectFiles(project)) {
|
|
143
|
+
let text;
|
|
144
|
+
try {
|
|
145
|
+
text = readFileSync(file, 'utf8');
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (text.includes('\0')) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
scannedFiles++;
|
|
154
|
+
const present = tokens.filter((token) => text.includes(token));
|
|
155
|
+
if (!present.length) {
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const rel = relative(base, file) || file;
|
|
159
|
+
text.split(/\r?\n/).forEach((line, i) => {
|
|
160
|
+
for (const token of present) {
|
|
161
|
+
if (!lineHas(line, token)) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
for (const id of tokenIndex.get(token)) {
|
|
165
|
+
const perRecord = hits.get(id) ?? new Map();
|
|
166
|
+
const key = `${rel}:${i + 1}`;
|
|
167
|
+
if (!perRecord.has(key)) {
|
|
168
|
+
perRecord.set(key, { file: rel, line: i + 1, token });
|
|
169
|
+
}
|
|
170
|
+
hits.set(id, perRecord);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const byRecord = new Map();
|
|
177
|
+
for (const [id, perRecord] of hits) {
|
|
178
|
+
const sorted = [...perRecord.values()].sort((a, b) => (a.file === b.file ? a.line - b.line : a.file.localeCompare(b.file)));
|
|
179
|
+
byRecord.set(id, { matches: sorted.slice(0, cap), total: sorted.length });
|
|
180
|
+
}
|
|
181
|
+
return { scannedFiles, byRecord };
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=grep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/core/changes/grep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Change records (plan §12, Appendix B) at run time: the bundled copies in
|
|
3
|
+
* `data/changes/<k-1>-<k>.json` (built by `scripts/build-records.ts` from the
|
|
4
|
+
* release notes and shipped with the package) and the hosted copies the docs
|
|
5
|
+
* build publishes at `llms/changes/<k-1>-<k>.json`, preferred when the hash the
|
|
6
|
+
* manifest lists for them differs from the bundled copy's (plan §12.3, §8.10) —
|
|
7
|
+
* so a release-note correction reaches users without a CLI publish. Also the
|
|
8
|
+
* `KeyRename` list the did-you-mean of `check state` / `check setup` reads from
|
|
9
|
+
* the `state` / `options` records (A2.2's hand-off).
|
|
10
|
+
*/
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { fileURLToPath } from 'node:url';
|
|
15
|
+
import { getManifestInfo } from '../compat/manifest.js';
|
|
16
|
+
import { RECORDS_FLOOR } from '../constants.js';
|
|
17
|
+
import { DOCS_DIR, getCacheDir } from '../packages/cache.js';
|
|
18
|
+
export const AREAS = ['packages', 'css', 'state', 'aql', 'options', 'api', 'objects', 'deployment'];
|
|
19
|
+
const BUNDLED_DIR = fileURLToPath(new URL('../../../data/changes/', import.meta.url));
|
|
20
|
+
/** `files` key under which the docs build lists a transition's records (C3.1 follows this) */
|
|
21
|
+
export const manifestKeyFor = (from, to) => `changes-${from}-${to}`;
|
|
22
|
+
const sha256 = (text) => createHash('sha256').update(text).digest('hex');
|
|
23
|
+
/** The bundled records of one transition, when the package ships them */
|
|
24
|
+
export function readBundledRecords(from, to, dir = BUNDLED_DIR) {
|
|
25
|
+
const path = join(dir, `${from}-${to}.json`);
|
|
26
|
+
if (!existsSync(path)) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const text = readFileSync(path, 'utf8');
|
|
30
|
+
return { file: JSON.parse(text), text };
|
|
31
|
+
}
|
|
32
|
+
/** Transitions with a bundled copy, oldest first */
|
|
33
|
+
export function bundledTransitions(dir = BUNDLED_DIR) {
|
|
34
|
+
if (!existsSync(dir)) {
|
|
35
|
+
return [];
|
|
36
|
+
}
|
|
37
|
+
return readdirSync(dir)
|
|
38
|
+
.map((name) => /^(\d+)-(\d+)\.json$/.exec(name))
|
|
39
|
+
.filter((m) => !!m)
|
|
40
|
+
.map((m) => ({ from: Number(m[1]), to: Number(m[2]) }))
|
|
41
|
+
.sort((a, b) => a.to - b.to);
|
|
42
|
+
}
|
|
43
|
+
function hostedCachePath(host, from, to, hash) {
|
|
44
|
+
return join(getCacheDir(DOCS_DIR, new URL(host).hostname, 'changes'), `${from}-${to}.${hash.slice(0, 12)}.json`);
|
|
45
|
+
}
|
|
46
|
+
async function defaultFetchText(url) {
|
|
47
|
+
const response = await fetch(url, { signal: AbortSignal.timeout(30_000) });
|
|
48
|
+
return response.ok ? response.text() : undefined;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The records for every transition in `(from, to]`: hosted when the manifest lists a
|
|
52
|
+
* copy whose hash differs from the bundled one (fetched once per hash into the cache),
|
|
53
|
+
* else bundled. Never throws for a missing transition — `missing` says which.
|
|
54
|
+
*/
|
|
55
|
+
export async function loadRecords(options) {
|
|
56
|
+
const warnings = [];
|
|
57
|
+
const transitions = [];
|
|
58
|
+
const missing = [];
|
|
59
|
+
let manifest;
|
|
60
|
+
try {
|
|
61
|
+
manifest = await (options.manifest ?? (() => getManifestInfo({ offline: options.offline, docsHost: options.docsHost, maxAgeMs: options.maxAgeMs })))();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
manifest = undefined;
|
|
65
|
+
}
|
|
66
|
+
const files = manifest?.manifest.files;
|
|
67
|
+
const host = manifest?.host;
|
|
68
|
+
const fetchText = options.fetchText ?? defaultFetchText;
|
|
69
|
+
for (let k = options.from + 1; k <= options.to; k++) {
|
|
70
|
+
const from = k - 1;
|
|
71
|
+
const bundled = readBundledRecords(from, k);
|
|
72
|
+
const hosted = files?.[manifestKeyFor(from, k)];
|
|
73
|
+
let loaded;
|
|
74
|
+
if (hosted && host && (!bundled || sha256(bundled.text) !== hosted.sha256)) {
|
|
75
|
+
const cached = hostedCachePath(host, from, k, hosted.sha256);
|
|
76
|
+
let text;
|
|
77
|
+
if (existsSync(cached)) {
|
|
78
|
+
text = readFileSync(cached, 'utf8');
|
|
79
|
+
}
|
|
80
|
+
else if (options.offline) {
|
|
81
|
+
warnings.push(`The docs host has newer change records for ${from} → ${k} than the bundled copy; --offline kept the bundled one.`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
try {
|
|
85
|
+
text = await fetchText(`${host}${hosted.path}`);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
text = undefined;
|
|
89
|
+
}
|
|
90
|
+
if (text === undefined) {
|
|
91
|
+
warnings.push(`The hosted change records for ${from} → ${k} (${host}${hosted.path}) could not be fetched; the bundled copy was used.`);
|
|
92
|
+
}
|
|
93
|
+
else if (sha256(text) !== hosted.sha256) {
|
|
94
|
+
warnings.push(`The hosted change records for ${from} → ${k} do not match the hash the manifest lists; the bundled copy was used.`);
|
|
95
|
+
text = undefined;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
writeFileSync(cached, text);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (text !== undefined) {
|
|
102
|
+
loaded = { from, to: k, source: 'hosted', file: JSON.parse(text) };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (!loaded && bundled) {
|
|
106
|
+
loaded = { from, to: k, source: 'bundled', file: bundled.file };
|
|
107
|
+
}
|
|
108
|
+
if (loaded) {
|
|
109
|
+
transitions.push(loaded);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
missing.push({ from, to: k });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return { transitions, missing, warnings };
|
|
116
|
+
}
|
|
117
|
+
const IDENTIFIER_PATH = /^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*)*$/;
|
|
118
|
+
const USE_IDENTIFIER = /^(?:removed\s*[—–-]\s*)?use\s+([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)$/;
|
|
119
|
+
/** Single words that read as identifiers but are prose or types in an `after` cell */
|
|
120
|
+
const NOT_A_RENAME = new Set([
|
|
121
|
+
'removed', 'deprecated', 'gone', 'none', 'same', 'unchanged', 'inferred', 'required', 'optional', 'ignored', 'yes', 'no',
|
|
122
|
+
'string', 'number', 'boolean', 'object', 'function', 'any', 'void', 'never', 'null', 'undefined', 'true', 'false',
|
|
123
|
+
'Partial', 'Promise', 'Record', 'Array', 'unknown',
|
|
124
|
+
]);
|
|
125
|
+
/** The identifier path an `after` cell names: `a.b`, `a.b (note)`, `removed — use a.b`; `undefined` for prose */
|
|
126
|
+
export function identifierOf(cell) {
|
|
127
|
+
const text = cell.replace(/\s*\([^)]*\)\s*$/, '').trim();
|
|
128
|
+
const found = IDENTIFIER_PATH.test(text) ? text : USE_IDENTIFIER.exec(text)?.[1];
|
|
129
|
+
return found && !NOT_A_RENAME.has(found) ? found : undefined;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Renames the did-you-mean can offer, from the `state` / `options` records: rows whose
|
|
133
|
+
* `before` is a dotted identifier and whose `after` names one (`a.b`, `a.b (note)`,
|
|
134
|
+
* `removed — use a.b`) with a different last segment —
|
|
135
|
+
* `predicateOptions.caseSensitivePredicates` → `expressionOptions.caseSensitiveExpressions`
|
|
136
|
+
* gives `caseSensitivePredicates` → `caseSensitiveExpressions`. No path prefix: the notes
|
|
137
|
+
* write paths loosely (`CalculatedColumn.Query`), so the rename applies at any position.
|
|
138
|
+
*/
|
|
139
|
+
export function keyRenames(file) {
|
|
140
|
+
const out = [];
|
|
141
|
+
const transition = `${file.from}-${file.to}`;
|
|
142
|
+
for (const record of file.records) {
|
|
143
|
+
if (record.area !== 'state' && record.area !== 'options') {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
for (const row of record.rows) {
|
|
147
|
+
const after = identifierOf(row.after);
|
|
148
|
+
if (!IDENTIFIER_PATH.test(row.before) || !after) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const from = row.before.split('.').pop();
|
|
152
|
+
const to = after.split('.').pop();
|
|
153
|
+
if (from === to || out.some((r) => r.from === from && r.to === to && r.area === record.area)) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
out.push({ from, to, area: record.area, transition, anchor: record.id });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return out;
|
|
160
|
+
}
|
|
161
|
+
const renamesByMajor = new Map();
|
|
162
|
+
/** The renames that lead to `major`'s spellings, from the bundled records of `(major-1) → major`; `[]` when none are bundled */
|
|
163
|
+
export function bundledRenamesFor(major) {
|
|
164
|
+
let renames = renamesByMajor.get(major);
|
|
165
|
+
if (!renames) {
|
|
166
|
+
const bundled = major > RECORDS_FLOOR ? readBundledRecords(major - 1, major) : undefined;
|
|
167
|
+
renames = bundled ? keyRenames(bundled.file) : [];
|
|
168
|
+
renamesByMajor.set(major, renames);
|
|
169
|
+
}
|
|
170
|
+
return renames;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=records.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../../src/core/changes/records.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/** Plan §8.10 section order (`packages` and `css` share the first) */
|
|
2
|
+
export const AREA_ORDER = [
|
|
3
|
+
{ title: 'Packages & CSS', areas: ['packages', 'css'] },
|
|
4
|
+
{ title: 'Adaptable State', areas: ['state'] },
|
|
5
|
+
{ title: 'Adaptable Options', areas: ['options'] },
|
|
6
|
+
{ title: 'Adaptable API', areas: ['api'] },
|
|
7
|
+
{ title: 'Adaptable Objects', areas: ['objects'] },
|
|
8
|
+
{ title: 'AdapTableQL', areas: ['aql'] },
|
|
9
|
+
{ title: 'Deployment', areas: ['deployment'] },
|
|
10
|
+
];
|
|
11
|
+
function autoMigratedOf(record) {
|
|
12
|
+
const values = [...new Set(record.rows.map((r) => r.autoMigrated))].filter((v) => v !== 'n/a');
|
|
13
|
+
return values.length ? values.join(' / ') : 'n/a';
|
|
14
|
+
}
|
|
15
|
+
const code = (text) => (text.includes('`') ? text : `\`${text}\``);
|
|
16
|
+
export function renderRecord(record) {
|
|
17
|
+
const lines = [`#### ${record.title}`, '', `- **${record.type}** · auto-migrated: ${autoMigratedOf(record)} · id \`${record.id}\``];
|
|
18
|
+
for (const row of record.rows) {
|
|
19
|
+
const label = row.item && row.item !== record.title ? `${row.item}: ` : '';
|
|
20
|
+
lines.push(`- ${label}${code(row.before)} → ${code(row.after)}${record.rows.length > 1 && row.autoMigrated !== 'n/a' ? ` _(auto-migrated: ${row.autoMigrated})_` : ''}`);
|
|
21
|
+
}
|
|
22
|
+
if (record.note) {
|
|
23
|
+
lines.push(`- Note: ${record.note}`);
|
|
24
|
+
}
|
|
25
|
+
lines.push(`- Release note: ${record.url}`);
|
|
26
|
+
if (record.matches) {
|
|
27
|
+
if (record.matches.length) {
|
|
28
|
+
const more = (record.matchCount ?? record.matches.length) - record.matches.length;
|
|
29
|
+
lines.push(`- Matches: ${record.matches.map((m) => `\`${m.file}:${m.line}\``).join(', ')}${more > 0 ? ` … and ${more} more` : ''}`);
|
|
30
|
+
}
|
|
31
|
+
else if (record.always) {
|
|
32
|
+
lines.push('- Matches: (applies to every project)');
|
|
33
|
+
}
|
|
34
|
+
else if (!record.search.length) {
|
|
35
|
+
lines.push('- Matches: (no search tokens; review by hand)');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
lines.push('- Matches: none');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (record.docsSection) {
|
|
42
|
+
lines.push('', ...record.docsSection.split('\n').map((l) => (l ? `> ${l}` : '>')));
|
|
43
|
+
}
|
|
44
|
+
lines.push('');
|
|
45
|
+
return lines;
|
|
46
|
+
}
|
|
47
|
+
export function renderTransition(transition, filtered) {
|
|
48
|
+
const lines = [`## AdapTable ${transition.from} → ${transition.to}`, '', `_Records ${transition.recordsSource}; release note: ${transition.releaseNote}_`, ''];
|
|
49
|
+
const included = transition.records.filter((r) => r.included);
|
|
50
|
+
for (const { title, areas } of AREA_ORDER) {
|
|
51
|
+
const records = included.filter((r) => areas.includes(r.area));
|
|
52
|
+
if (!records.length) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
lines.push(`### ${title}`, '');
|
|
56
|
+
for (const record of records) {
|
|
57
|
+
lines.push(...renderRecord(record));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!included.length) {
|
|
61
|
+
lines.push('_Nothing to do for this step._', '');
|
|
62
|
+
}
|
|
63
|
+
const excluded = transition.records.filter((r) => !r.included);
|
|
64
|
+
if (filtered && excluded.length) {
|
|
65
|
+
lines.push('<details><summary>Not matched in the project (' + excluded.length + ')</summary>', '');
|
|
66
|
+
for (const record of excluded) {
|
|
67
|
+
lines.push(`- ${record.type} [${record.area}] ${record.title} — ${record.url}`);
|
|
68
|
+
}
|
|
69
|
+
lines.push('', '</details>', '');
|
|
70
|
+
}
|
|
71
|
+
return lines;
|
|
72
|
+
}
|
|
73
|
+
export function renderChanges(data) {
|
|
74
|
+
const lines = [`# Changes ${data.from} → ${data.to}`, ''];
|
|
75
|
+
if (data.environment) {
|
|
76
|
+
const env = Object.entries(data.environment)
|
|
77
|
+
.filter(([, v]) => v)
|
|
78
|
+
.map(([k, v]) => `${k} ${v}`);
|
|
79
|
+
lines.push(`- Environment for ${data.to}: ${env.join(' · ')}`);
|
|
80
|
+
}
|
|
81
|
+
if (data.scanned) {
|
|
82
|
+
lines.push(`- Searched ${data.scanned.files} files in ${data.scanned.projects.join(', ')}${data.filtered ? '' : ' (every record listed, --all)'}`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
lines.push('- No project searched: every record listed. Pass `--repo <dir>` to keep only the ones your code hits.');
|
|
86
|
+
}
|
|
87
|
+
lines.push('');
|
|
88
|
+
for (let k = data.from + 1; k <= data.to; k++) {
|
|
89
|
+
const transition = data.transitions.find((t) => t.to === k);
|
|
90
|
+
if (transition) {
|
|
91
|
+
lines.push(...renderTransition(transition, data.filtered));
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const m = data.missing.find((x) => x.to === k);
|
|
95
|
+
if (m) {
|
|
96
|
+
lines.push(`## AdapTable ${m.from} → ${m.to}`, '', `_No change records yet; read ${m.releaseNote} by hand._`, '');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return lines.join('\n').trimEnd();
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=render-md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-md.js","sourceRoot":"","sources":["../../../src/core/changes/render-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `changes --with-docs` (plan §8.10): the release-note section each kept record
|
|
3
|
+
* links into, read through the docs corpus (the same path as `docs get`) and
|
|
4
|
+
* inlined under the record — collapsed to its heading when longer than
|
|
5
|
+
* `MAX_INLINE_LINES`. The `.md` export strips the `<Change>` anchors, so a
|
|
6
|
+
* record's section is its area's `###` heading inside `## Upgrade Guide`
|
|
7
|
+
* (the guide's intro for `deployment` records); one corpus and one page per
|
|
8
|
+
* transition, one extraction per area.
|
|
9
|
+
*/
|
|
10
|
+
import { loadCorpus } from '../docs/cache.js';
|
|
11
|
+
import { extractHeading, findPage } from '../docs/get-page.js';
|
|
12
|
+
import { CapabilityError } from '../envelope.js';
|
|
13
|
+
export const MAX_INLINE_LINES = 60;
|
|
14
|
+
/** The `###` heading of each area inside `## Upgrade Guide` (the same titles `build-records.ts` reads) */
|
|
15
|
+
export const AREA_HEADINGS = {
|
|
16
|
+
packages: 'Packages & CSS',
|
|
17
|
+
css: 'Packages & CSS',
|
|
18
|
+
aql: 'AdapTableQL',
|
|
19
|
+
state: 'Adaptable State',
|
|
20
|
+
options: 'Adaptable Options',
|
|
21
|
+
api: 'Adaptable API',
|
|
22
|
+
objects: 'Adaptable Objects',
|
|
23
|
+
};
|
|
24
|
+
/** The guide's intro: everything before its first `###` */
|
|
25
|
+
function guideIntro(guide) {
|
|
26
|
+
const lines = guide.split('\n');
|
|
27
|
+
const first = lines.findIndex((l, i) => i > 0 && /^###\s/.test(l));
|
|
28
|
+
return (first < 0 ? lines : lines.slice(0, first)).join('\n').trimEnd();
|
|
29
|
+
}
|
|
30
|
+
export function collapse(section, slug, heading) {
|
|
31
|
+
const lines = section.split('\n');
|
|
32
|
+
if (lines.length <= MAX_INLINE_LINES) {
|
|
33
|
+
return section;
|
|
34
|
+
}
|
|
35
|
+
return `${lines[0]}\n\n_${lines.length} lines — read it with \`adaptable docs get ${slug} --section "${heading}"\`._`;
|
|
36
|
+
}
|
|
37
|
+
/** Fills `docsSection` on every included record; returns warnings for what could not be read */
|
|
38
|
+
export async function inlineSections(transitions, options) {
|
|
39
|
+
const warnings = [];
|
|
40
|
+
for (const transition of transitions) {
|
|
41
|
+
const slug = `support/version-${transition.to}0-release-note`;
|
|
42
|
+
let guide;
|
|
43
|
+
try {
|
|
44
|
+
const { corpus, warnings: corpusWarnings } = await loadCorpus({ major: transition.to, ...options });
|
|
45
|
+
warnings.push(...corpusWarnings);
|
|
46
|
+
const page = findPage(corpus, `/${slug}`);
|
|
47
|
+
if (!page) {
|
|
48
|
+
warnings.push(`--with-docs: ${slug} is not in the docs corpus of ${corpus.host}; sections not inlined for ${transition.from} → ${transition.to}.`);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
guide = extractHeading(page.markdown, 'Upgrade Guide');
|
|
52
|
+
if (!guide) {
|
|
53
|
+
warnings.push(`--with-docs: ${slug} has no "Upgrade Guide" heading; sections not inlined for ${transition.from} → ${transition.to}.`);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof CapabilityError) {
|
|
59
|
+
warnings.push(`--with-docs: ${error.message} Sections not inlined for ${transition.from} → ${transition.to}.`);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
const sections = new Map();
|
|
65
|
+
for (const record of transition.records) {
|
|
66
|
+
if (!record.included) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const heading = record.area === 'deployment' ? undefined : AREA_HEADINGS[record.area];
|
|
70
|
+
const key = heading ?? '(intro)';
|
|
71
|
+
if (!sections.has(key)) {
|
|
72
|
+
const section = heading ? extractHeading(guide, heading) : guideIntro(guide);
|
|
73
|
+
sections.set(key, section ? collapse(section, slug, heading ?? 'Upgrade Guide') : undefined);
|
|
74
|
+
if (!section) {
|
|
75
|
+
warnings.push(`--with-docs: no "${heading}" section under the Upgrade Guide of ${slug}.`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const section = sections.get(key);
|
|
79
|
+
if (section) {
|
|
80
|
+
record.docsSection = section;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return warnings;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=with-docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-docs.js","sourceRoot":"","sources":["../../../src/core/changes/with-docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,7 +84,7 @@ registerCapability({
|
|
|
84
84
|
}),
|
|
85
85
|
output: CompatOutput,
|
|
86
86
|
run: async (input, ctx) => {
|
|
87
|
-
const info = await getManifestInfo(
|
|
87
|
+
const info = await getManifestInfo(ctx.manifest);
|
|
88
88
|
if (!info) {
|
|
89
89
|
throw new CapabilityError('DOCS_NOT_AVAILABLE', 'No docs manifest could be read: the host is unreachable (or --offline) and nothing is cached or bundled.', 'Retry with network access, or pass --docs-host <url>.');
|
|
90
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/compat/capabilities.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/compat/capabilities.ts"],"names":[],"mappings":"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"}
|