typebulb 0.24.2 → 0.25.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/README.md +32 -27
- package/dist/agents/claude/client.js +330 -264
- package/dist/agents/pi/client.js +238 -172
- package/dist/agents/pi/matchu-patchu.ts +1 -1
- package/dist/ai/aiProvider.d.ts.map +1 -1
- package/dist/ai/aiProvider.js +9 -2
- package/dist/ai/aiProvider.js.map +1 -1
- package/dist/ai/aiProviders.d.ts +5 -0
- package/dist/ai/aiProviders.d.ts.map +1 -1
- package/dist/ai/aiProviders.js +10 -2
- package/dist/ai/aiProviders.js.map +1 -1
- package/dist/ai/index.d.ts +1 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +2 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/inference.d.ts +40 -0
- package/dist/ai/inference.d.ts.map +1 -0
- package/dist/ai/inference.js +301 -0
- package/dist/ai/inference.js.map +1 -0
- package/dist/ai/providers/ollama.js +1 -1
- package/dist/ai/providers/ollama.js.map +1 -1
- package/dist/ai/sseParser.d.ts.map +1 -1
- package/dist/ai/sseParser.js +10 -1
- package/dist/ai/sseParser.js.map +1 -1
- package/dist/dts/fetchDts.d.ts.map +1 -1
- package/dist/dts/fetchDts.js +4 -3
- package/dist/dts/fetchDts.js.map +1 -1
- package/dist/dts/index.d.ts +0 -1
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/index.js +0 -1
- package/dist/dts/index.js.map +1 -1
- package/dist/dts/typescriptProvider.d.ts.map +1 -1
- package/dist/dts/typescriptProvider.js +8 -3
- package/dist/dts/typescriptProvider.js.map +1 -1
- package/dist/format/parse.d.ts +3 -0
- package/dist/format/parse.d.ts.map +1 -1
- package/dist/format/parse.js +11 -5
- package/dist/format/parse.js.map +1 -1
- package/dist/format/serialize.d.ts +8 -0
- package/dist/format/serialize.d.ts.map +1 -1
- package/dist/format/serialize.js +42 -7
- package/dist/format/serialize.js.map +1 -1
- package/dist/index.js +829 -431
- package/dist/lint/index.d.ts.map +1 -1
- package/dist/lint/index.js +22 -15
- package/dist/lint/index.js.map +1 -1
- package/dist/render.js +157 -91
- package/dist/resolver/cdnClient.d.ts +4 -6
- package/dist/resolver/cdnClient.d.ts.map +1 -1
- package/dist/resolver/cdnClient.js +2 -2
- package/dist/resolver/cdnClient.js.map +1 -1
- package/dist/resolver/index.d.ts +1 -0
- package/dist/resolver/index.d.ts.map +1 -1
- package/dist/resolver/index.js +1 -0
- package/dist/resolver/index.js.map +1 -1
- package/dist/resolver/negativeCacheHelper.d.ts.map +1 -0
- package/dist/{dts → resolver}/negativeCacheHelper.js +5 -12
- package/dist/resolver/negativeCacheHelper.js.map +1 -0
- package/dist/servers.js +71 -71
- package/package.json +1 -1
- package/dist/dts/negativeCacheHelper.d.ts.map +0 -1
- package/dist/dts/negativeCacheHelper.js.map +0 -1
- /package/dist/{dts → resolver}/negativeCacheHelper.d.ts +0 -0
package/dist/dts/fetchDts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchDts.js","sourceRoot":"","sources":["../../dts/src/fetchDts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"fetchDts.js","sourceRoot":"","sources":["../../dts/src/fetchDts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAK/C;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAe;IAC5C,MAAM,aAAa,GAAG,IAAI,QAAQ,CAAe,EAAE,GAAG,EAAE,SAAS,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5F,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAA;IAErD,OAAO,KAAK,UAAU,iBAAiB,CAAC,GAAW;QACjD,IAAI,CAAC;YACH,IAAI,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAA;YAEjD,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAA;YAE5C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;YAC7C,IAAI,MAAM;gBAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;YAEvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAClC,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAA;YAE7B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAuB,EAAE;gBACvC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAA;gBACvE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;oBACd,IAAI,IAAI,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;wBACzB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;wBAC5B,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;oBACjC,CAAC;oBACD,OAAO,SAAS,CAAA;gBAClB,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,CAAA;gBAChC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;gBACxC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAA;YAC/B,CAAC,CAAC,EAAE,CAAA;YAEJ,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;YACpB,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/dist/dts/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { esLibEntries, domLibEntries, filterByTsVersion, type LibEntry, type TsVersionGate, } from './libManifest.js';
|
|
2
2
|
export { clientTbTypings, serverTbTypings } from './tbTypings.js';
|
|
3
3
|
export { type DtsCache } from './cache.js';
|
|
4
|
-
export { NegativeCacheHelper, type NegativeCacheStore, type NegativeRecord, } from './negativeCacheHelper.js';
|
|
5
4
|
export { DtsResolver, type DtsResolverDeps, type TypeFetchResult, type ModuleShim, type ResolvedTypeFile, type ResolvedTypeDef, } from './dtsResolver.js';
|
|
6
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../dts/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../dts/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAA"}
|
package/dist/dts/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { esLibEntries, domLibEntries, filterByTsVersion, } from './libManifest.js';
|
|
2
2
|
export { clientTbTypings, serverTbTypings } from './tbTypings.js';
|
|
3
|
-
export { NegativeCacheHelper, } from './negativeCacheHelper.js';
|
|
4
3
|
// DTS resolver pipeline
|
|
5
4
|
export { DtsResolver, } from './dtsResolver.js';
|
|
6
5
|
//# sourceMappingURL=index.js.map
|
package/dist/dts/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../dts/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,GAGlB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIjE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../dts/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,GAGlB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIjE,wBAAwB;AACxB,OAAO,EACL,WAAW,GAMZ,MAAM,kBAAkB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescriptProvider.d.ts","sourceRoot":"","sources":["../../dts/src/typescriptProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxG,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;AAGtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAatD,qBAAa,kBAAmB,YAAW,YAAY;IACzC,OAAO,CAAC,QAAQ;IAAqB,OAAO,CAAC,SAAS;gBAA9C,QAAQ,EAAE,iBAAiB,EAAU,SAAS,EAAE,SAAS;YAE/D,OAAO;IAWrB,OAAO,CAAC,YAAY;YAON,0BAA0B;IAcxC,OAAO,CAAC,qBAAqB;YAMf,eAAe;YAOf,mBAAmB;
|
|
1
|
+
{"version":3,"file":"typescriptProvider.d.ts","sourceRoot":"","sources":["../../dts/src/typescriptProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxG,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;AAGtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAatD,qBAAa,kBAAmB,YAAW,YAAY;IACzC,OAAO,CAAC,QAAQ;IAAqB,OAAO,CAAC,SAAS;gBAA9C,QAAQ,EAAE,iBAAiB,EAAU,SAAS,EAAE,SAAS;YAE/D,OAAO;IAWrB,OAAO,CAAC,YAAY;YAON,0BAA0B;IAcxC,OAAO,CAAC,qBAAqB;YAMf,eAAe;YAOf,mBAAmB;IAyBjC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,kBAAkB;IAqBpB,OAAO,CAAC,UAAU,EAAE,MAAM;;;;;YA2ClB,kBAAkB;CAMjC"}
|
|
@@ -60,7 +60,7 @@ export class TypescriptProvider {
|
|
|
60
60
|
return res;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
async resolveFromSelected(sel, fetchCandidate) {
|
|
63
|
+
async resolveFromSelected(sel, fetchCandidate, opts) {
|
|
64
64
|
if (sel.kind === 'types') {
|
|
65
65
|
const clean = normalizeRelative(sel.path);
|
|
66
66
|
if (!clean || clean === '/' || clean === '.') {
|
|
@@ -74,7 +74,12 @@ export class TypescriptProvider {
|
|
|
74
74
|
return fetchCandidate(clean);
|
|
75
75
|
}
|
|
76
76
|
const others = declarationCandidatesFor(sel.path);
|
|
77
|
-
|
|
77
|
+
// For a subpath probe, its own sibling declarations must come before the package-root
|
|
78
|
+
// index.d.ts — root-first types every subpath as the root module and caches root content
|
|
79
|
+
// under the subpath key (the TB-Packages.md pitfall). Root-first stays correct for the
|
|
80
|
+
// root flow that shares this function.
|
|
81
|
+
const candidates = opts?.subpath ? [...others, ...DECLARATION_EXTENSIONS] : [...DECLARATION_EXTENSIONS, ...others];
|
|
82
|
+
return this.tryUntilSuccess(candidates, fetchCandidate);
|
|
78
83
|
}
|
|
79
84
|
toResolutionResult(path) {
|
|
80
85
|
return { kind: DTS_REGEX.test(path) ? 'types' : 'probe', path };
|
|
@@ -112,7 +117,7 @@ export class TypescriptProvider {
|
|
|
112
117
|
const key = ensureLeadingDotSlash(parsed.subpath);
|
|
113
118
|
const expPath = this.resolveExportsPath(pkg, key);
|
|
114
119
|
if (expPath) {
|
|
115
|
-
const res = await this.resolveFromSelected(this.toResolutionResult(expPath), fetcher);
|
|
120
|
+
const res = await this.resolveFromSelected(this.toResolutionResult(expPath), fetcher, { subpath: true });
|
|
116
121
|
if (res)
|
|
117
122
|
return { ...res, resolvedPkg: resolvedFullPkg };
|
|
118
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescriptProvider.js","sourceRoot":"","sources":["../../dts/src/typescriptProvider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"typescriptProvider.js","sourceRoot":"","sources":["../../dts/src/typescriptProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/format/parse.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/** Parse a `.bulb.md` file: strict Markdown bundle with YAML frontmatter and `**filename**` blocks. */
|
|
2
2
|
import { type SubscriptKind } from './registry.js';
|
|
3
|
+
export declare const FENCE_OPEN_RE: RegExp;
|
|
4
|
+
/** The closing-fence test for a given opening fence (the fence chars alone, trailing whitespace ok). */
|
|
5
|
+
export declare const fenceCloseRe: (fence: string) => RegExp;
|
|
3
6
|
export interface BulbFrontmatter {
|
|
4
7
|
format: string;
|
|
5
8
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../format/src/parse.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,OAAO,EAAE,KAAK,aAAa,EAAsC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../format/src/parse.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,OAAO,EAAE,KAAK,aAAa,EAAsC,MAAM,eAAe,CAAA;AAOtF,eAAO,MAAM,aAAa,QAAsB,CAAA;AAGhD,wGAAwG;AACxG,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAAsC,CAAA;AAEnF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,eAAe,CAAA;IAC5B,0DAA0D;IAC1D,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,iGAAiG;IACjG,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB;;;;;;OAMG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,mDAAmD;AACnD,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;AAEvE,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAqE5D;AA6CD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE/D;AAED;;sGAEsG;AACtG,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAkBjE;AAED,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAKvD"}
|
package/dist/format/parse.js
CHANGED
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
import { blocks, orderedKinds, isBulbFormat } from './registry.js';
|
|
3
3
|
import { unescapeYamlString } from './yaml.js';
|
|
4
4
|
// The block grammar: a `**filename**` header on its own line, then a fenced code block (3+ backticks,
|
|
5
|
-
// optional language).
|
|
5
|
+
// optional language). Exported so the surgical writer (serialize.ts replaceBulbBlock) shares this
|
|
6
|
+
// grammar rather than restating it — parse and replace must never disagree about what a fence is.
|
|
6
7
|
const BLOCK_HEADER_RE = /^\*\*(.+)\*\*$/;
|
|
7
|
-
const FENCE_OPEN_RE = /^(`{3,})(\w*)\s*$/;
|
|
8
|
+
export const FENCE_OPEN_RE = /^(`{3,})(\w*)\s*$/;
|
|
8
9
|
const BLOCK_PATHS = new Set(orderedKinds.map(k => blocks[k].path));
|
|
10
|
+
/** The closing-fence test for a given opening fence (the fence chars alone, trailing whitespace ok). */
|
|
11
|
+
export const fenceCloseRe = (fence) => new RegExp(`^${fence}\\s*$`);
|
|
9
12
|
/** Parse a `.bulb.md` file into frontmatter and file contents, or null if malformed. */
|
|
10
13
|
export function parseBulb(content) {
|
|
11
14
|
try {
|
|
@@ -42,16 +45,19 @@ export function parseBulb(content) {
|
|
|
42
45
|
// Skip empty lines until fence
|
|
43
46
|
while (i < lines.length && lines[i]?.trim() === '')
|
|
44
47
|
i++;
|
|
45
|
-
// Parse fenced code block (tolerant of trailing whitespace)
|
|
48
|
+
// Parse fenced code block (tolerant of trailing whitespace). No fence: re-examine
|
|
49
|
+
// the current line from the top of the loop — it may itself be the next block's
|
|
50
|
+
// header, which an unconditional skip here would swallow (and every block after it).
|
|
46
51
|
const fenceMatch = lines[i]?.match(FENCE_OPEN_RE);
|
|
47
52
|
if (!fenceMatch) {
|
|
48
|
-
|
|
53
|
+
warnings.push(`**${filename}** has no code fence — block skipped`);
|
|
49
54
|
continue;
|
|
50
55
|
}
|
|
51
56
|
const fence = fenceMatch[1];
|
|
52
57
|
i++;
|
|
53
58
|
const contentLines = [];
|
|
54
|
-
|
|
59
|
+
const closeRe = fenceCloseRe(fence);
|
|
60
|
+
while (i < lines.length && !lines[i]?.match(closeRe)) {
|
|
55
61
|
contentLines.push(lines[i]);
|
|
56
62
|
i++;
|
|
57
63
|
}
|
package/dist/format/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../format/src/parse.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,OAAO,EAAsB,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAE9C,sGAAsG;AACtG,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../format/src/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,12 @@ export type BulbSource = {
|
|
|
5
5
|
} & Partial<Record<SubscriptKind, string | null>>;
|
|
6
6
|
/** Serialize a bulb to `.bulb.md` text: YAML frontmatter then one `**filename**` block per present kind. */
|
|
7
7
|
export declare function serializeBulb(source: BulbSource): string;
|
|
8
|
+
/**
|
|
9
|
+
* Replace one block's fence content in existing `.bulb.md` text, surgically — everything else
|
|
10
|
+
* (frontmatter beyond format/name, inter-block prose, block order) is preserved verbatim, which a
|
|
11
|
+
* parse→serialize round trip would lose. Appends the block at the end when absent. The fence grows
|
|
12
|
+
* if the new content carries a longer backtick run; an unterminated block is left untouched (the
|
|
13
|
+
* same defect parseBulb only warns on — rewriting inside it would guess at its extent).
|
|
14
|
+
*/
|
|
15
|
+
export declare function replaceBulbBlock(content: string, kind: SubscriptKind, newContent: string): string;
|
|
8
16
|
//# sourceMappingURL=serialize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../format/src/serialize.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAE3D,OAAO,EAAE,KAAK,aAAa,EAAqC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../format/src/serialize.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAE3D,OAAO,EAAE,KAAK,aAAa,EAAqC,MAAM,eAAe,CAAA;AAWrF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;AAUzF,4GAA4G;AAC5G,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAaxD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAoBjG"}
|
package/dist/format/serialize.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Serialize a bulb's blocks back into `.bulb.md` text. */
|
|
2
2
|
import { blocks, orderedKinds, BULB_FORMAT } from './registry.js';
|
|
3
|
+
import { FENCE_OPEN_RE, fenceCloseRe } from './parse.js';
|
|
3
4
|
import { escapeYamlString } from './yaml.js';
|
|
4
5
|
/** A fence long enough not to collide with any run of backticks already in the content. */
|
|
5
6
|
function getFence(content) {
|
|
@@ -7,17 +8,18 @@ function getFence(content) {
|
|
|
7
8
|
const maxLen = match ? Math.max(...match.map(m => m.length)) : 0;
|
|
8
9
|
return '`'.repeat(Math.max(3, maxLen + 1));
|
|
9
10
|
}
|
|
11
|
+
/** One `**path**` block section: header + fenced content, fence sized to the content. */
|
|
12
|
+
function blockSection(kind, content) {
|
|
13
|
+
const { path } = blocks[kind];
|
|
14
|
+
const lang = path.split('.').pop();
|
|
15
|
+
const fence = getFence(content);
|
|
16
|
+
return `**${path}**\n\n${fence}${lang}\n${content}\n${fence}`;
|
|
17
|
+
}
|
|
10
18
|
/** Serialize a bulb to `.bulb.md` text: YAML frontmatter then one `**filename**` block per present kind. */
|
|
11
19
|
export function serializeBulb(source) {
|
|
12
20
|
const sections = orderedKinds
|
|
13
21
|
.filter(kind => source[kind])
|
|
14
|
-
.map(kind =>
|
|
15
|
-
const { path } = blocks[kind];
|
|
16
|
-
const content = source[kind];
|
|
17
|
-
const lang = path.split('.').pop();
|
|
18
|
-
const fence = getFence(content);
|
|
19
|
-
return `**${path}**\n\n${fence}${lang}\n${content}\n${fence}`;
|
|
20
|
-
});
|
|
22
|
+
.map(kind => blockSection(kind, source[kind]));
|
|
21
23
|
return [
|
|
22
24
|
'---',
|
|
23
25
|
`format: ${BULB_FORMAT}`,
|
|
@@ -27,4 +29,37 @@ export function serializeBulb(source) {
|
|
|
27
29
|
...sections,
|
|
28
30
|
].join('\n');
|
|
29
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Replace one block's fence content in existing `.bulb.md` text, surgically — everything else
|
|
34
|
+
* (frontmatter beyond format/name, inter-block prose, block order) is preserved verbatim, which a
|
|
35
|
+
* parse→serialize round trip would lose. Appends the block at the end when absent. The fence grows
|
|
36
|
+
* if the new content carries a longer backtick run; an unterminated block is left untouched (the
|
|
37
|
+
* same defect parseBulb only warns on — rewriting inside it would guess at its extent).
|
|
38
|
+
*/
|
|
39
|
+
export function replaceBulbBlock(content, kind, newContent) {
|
|
40
|
+
const { path } = blocks[kind];
|
|
41
|
+
const lines = content.split('\n');
|
|
42
|
+
for (let i = 0; i < lines.length; i++) {
|
|
43
|
+
if (lines[i]?.trim() !== `**${path}**`)
|
|
44
|
+
continue;
|
|
45
|
+
let j = i + 1;
|
|
46
|
+
while (j < lines.length && lines[j]?.trim() === '')
|
|
47
|
+
j++;
|
|
48
|
+
const m = lines[j]?.match(FENCE_OPEN_RE);
|
|
49
|
+
if (!m)
|
|
50
|
+
continue;
|
|
51
|
+
const closeRe = fenceCloseRe(m[1]);
|
|
52
|
+
let k = j + 1;
|
|
53
|
+
while (k < lines.length && !lines[k]?.match(closeRe))
|
|
54
|
+
k++;
|
|
55
|
+
// Unterminated fence: refuse to touch the file at all — rewriting inside it would guess at its
|
|
56
|
+
// extent, and falling through to append would plant a duplicate block inside the open fence.
|
|
57
|
+
if (k >= lines.length)
|
|
58
|
+
return content;
|
|
59
|
+
const grown = getFence(newContent);
|
|
60
|
+
const fence = grown.length > m[1].length ? grown : m[1];
|
|
61
|
+
return [...lines.slice(0, j), fence + m[2], ...newContent.split('\n'), fence, ...lines.slice(k + 1)].join('\n');
|
|
62
|
+
}
|
|
63
|
+
return `${content.replace(/\s*$/, '')}\n\n${blockSection(kind, newContent)}\n`;
|
|
64
|
+
}
|
|
30
65
|
//# sourceMappingURL=serialize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../format/src/serialize.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAE3D,OAAO,EAAsB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,2FAA2F;AAC3F,SAAS,QAAQ,CAAC,OAAe;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC;AAID,4GAA4G;AAC5G,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,MAAM,QAAQ,GAAG,YAAY;SAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC5B,GAAG,CAAC,IAAI,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../format/src/serialize.ts"],"names":[],"mappings":"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"}
|