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.
Files changed (63) hide show
  1. package/README.md +32 -27
  2. package/dist/agents/claude/client.js +330 -264
  3. package/dist/agents/pi/client.js +238 -172
  4. package/dist/agents/pi/matchu-patchu.ts +1 -1
  5. package/dist/ai/aiProvider.d.ts.map +1 -1
  6. package/dist/ai/aiProvider.js +9 -2
  7. package/dist/ai/aiProvider.js.map +1 -1
  8. package/dist/ai/aiProviders.d.ts +5 -0
  9. package/dist/ai/aiProviders.d.ts.map +1 -1
  10. package/dist/ai/aiProviders.js +10 -2
  11. package/dist/ai/aiProviders.js.map +1 -1
  12. package/dist/ai/index.d.ts +1 -0
  13. package/dist/ai/index.d.ts.map +1 -1
  14. package/dist/ai/index.js +2 -0
  15. package/dist/ai/index.js.map +1 -1
  16. package/dist/ai/inference.d.ts +40 -0
  17. package/dist/ai/inference.d.ts.map +1 -0
  18. package/dist/ai/inference.js +301 -0
  19. package/dist/ai/inference.js.map +1 -0
  20. package/dist/ai/providers/ollama.js +1 -1
  21. package/dist/ai/providers/ollama.js.map +1 -1
  22. package/dist/ai/sseParser.d.ts.map +1 -1
  23. package/dist/ai/sseParser.js +10 -1
  24. package/dist/ai/sseParser.js.map +1 -1
  25. package/dist/dts/fetchDts.d.ts.map +1 -1
  26. package/dist/dts/fetchDts.js +4 -3
  27. package/dist/dts/fetchDts.js.map +1 -1
  28. package/dist/dts/index.d.ts +0 -1
  29. package/dist/dts/index.d.ts.map +1 -1
  30. package/dist/dts/index.js +0 -1
  31. package/dist/dts/index.js.map +1 -1
  32. package/dist/dts/typescriptProvider.d.ts.map +1 -1
  33. package/dist/dts/typescriptProvider.js +8 -3
  34. package/dist/dts/typescriptProvider.js.map +1 -1
  35. package/dist/format/parse.d.ts +3 -0
  36. package/dist/format/parse.d.ts.map +1 -1
  37. package/dist/format/parse.js +11 -5
  38. package/dist/format/parse.js.map +1 -1
  39. package/dist/format/serialize.d.ts +8 -0
  40. package/dist/format/serialize.d.ts.map +1 -1
  41. package/dist/format/serialize.js +42 -7
  42. package/dist/format/serialize.js.map +1 -1
  43. package/dist/index.js +829 -431
  44. package/dist/lint/index.d.ts.map +1 -1
  45. package/dist/lint/index.js +22 -15
  46. package/dist/lint/index.js.map +1 -1
  47. package/dist/render.js +157 -91
  48. package/dist/resolver/cdnClient.d.ts +4 -6
  49. package/dist/resolver/cdnClient.d.ts.map +1 -1
  50. package/dist/resolver/cdnClient.js +2 -2
  51. package/dist/resolver/cdnClient.js.map +1 -1
  52. package/dist/resolver/index.d.ts +1 -0
  53. package/dist/resolver/index.d.ts.map +1 -1
  54. package/dist/resolver/index.js +1 -0
  55. package/dist/resolver/index.js.map +1 -1
  56. package/dist/resolver/negativeCacheHelper.d.ts.map +1 -0
  57. package/dist/{dts → resolver}/negativeCacheHelper.js +5 -12
  58. package/dist/resolver/negativeCacheHelper.js.map +1 -0
  59. package/dist/servers.js +71 -71
  60. package/package.json +1 -1
  61. package/dist/dts/negativeCacheHelper.d.ts.map +0 -1
  62. package/dist/dts/negativeCacheHelper.js.map +0 -1
  63. /package/dist/{dts → resolver}/negativeCacheHelper.d.ts +0 -0
@@ -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;AAK1C;;;;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,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;gBACpD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;oBACb,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;wBACxB,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"}
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"}
@@ -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
@@ -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;AAE1C,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,kBAAkB,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
@@ -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,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAA;AAEjC,wBAAwB;AACxB,OAAO,EACL,WAAW,GAMZ,MAAM,kBAAkB,CAAA"}
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;IAmBjC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,kBAAkB;IAqBpB,OAAO,CAAC,UAAU,EAAE,MAAM;;;;;YA2ClB,kBAAkB;CAMjC"}
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
- return this.tryUntilSuccess([...DECLARATION_EXTENSIONS, ...others], fetchCandidate);
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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"}
@@ -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;AAStF,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,CAkE5D;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"}
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"}
@@ -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
- i++;
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
- while (i < lines.length && !lines[i]?.match(new RegExp(`^${fence}\\s*$`))) {
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
  }
@@ -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,sBAAsB;AACtB,MAAM,eAAe,GAAG,gBAAgB,CAAA;AACxC,MAAM,aAAa,GAAG,mBAAmB,CAAA;AACzC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AA0B1E,wFAAwF;AACxF,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACjC,IAAI,CAAC,GAAG,CAAC,CAAA;QAET,oBAAoB;QACpB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK;YAAE,OAAO,IAAI,CAAA;QAC3C,CAAC,EAAE,CAAA;QAEH,MAAM,gBAAgB,GAAa,EAAE,CAAA;QACrC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACtD,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/B,CAAC,EAAE,CAAA;QACL,CAAC;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK;YAAE,OAAO,IAAI,CAAA;QAC3C,CAAC,EAAE,CAAA;QAEH,MAAM,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAA;QACtD,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QAE7B,sBAAsB;QACtB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;QACvC,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,kGAAkG;QAClG,uEAAuE;QACvE,IAAI,WAAW,GAAG,CAAC,CAAA;QAEnB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAA;YAE7B,gEAAgE;YAChE,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;YAC9C,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;gBACpC,CAAC,EAAE,CAAA;gBAEH,+BAA+B;gBAC/B,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;oBAAE,CAAC,EAAE,CAAA;gBAEvD,4DAA4D;gBAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;gBACjD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAAC,CAAC,EAAE,CAAC;oBAAC,SAAQ;gBAAC,CAAC;gBAElC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC,EAAE,CAAA;gBAEH,MAAM,YAAY,GAAa,EAAE,CAAA;gBACjC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;oBAC1E,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC3B,CAAC,EAAE,CAAA;gBACL,CAAC;gBACD,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;gBACnC,CAAC,EAAE,CAAA,CAAC,sCAAsC;gBAE1C,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAA;gBACnE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC5C,WAAW,GAAG,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,CAAC,EAAE,CAAA;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,qGAAqG;AACrG,uGAAuG;AACvG,uFAAuF;AACvF,SAAS,aAAa,CAAC,QAAgB,EAAE,IAAc,EAAE,UAAmB;IAC1E,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7F,CAAC;IACD,IAAI,SAAS,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,QAAQ,gEAAgE,EAAE,WAAW,CAAC,CAAA;IAC5I,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,KAAK,QAAQ,2EAA2E,CAAC,CAAA;IAClH,OAAO,EAAE,CAAA;AACX,CAAC;AAED,qGAAqG;AACrG,+EAA+E;AAC/E,SAAS,YAAY,CAAC,IAAc,EAAE,SAAiB;IACrD,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,CAAA;IACrB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;QAAE,CAAC,EAAE,CAAA;IACrD,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAe;IACvC,MAAM,EAAE,GAA6B,EAAE,CAAA;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,SAAQ;QAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAE7C,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,QAAQ;gBAAE,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;gBAAC,MAAK;YACvC,KAAK,MAAM;gBAAE,EAAE,CAAC,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAK;QACzD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACrD,OAAO,EAAqB,CAAA;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,SAAS,CAAC,OAAO,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAA;AAC3C,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,KAAK,GAAmB,EAAE,CAAA;IAChC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACjD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnD,kGAAkG;QAClG,qFAAqF;QACrF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,WAAW,CAAA;YAClC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACrE,CAAC,GAAG,GAAG,CAAA;QACT,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAA;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3C,CAAA;IAClC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,KAAK,EAAE,CAAA;AACpD,CAAC"}
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;AAUrF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;AAEzF,4GAA4G;AAC5G,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAmBxD"}
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"}
@@ -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;QACV,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAE,CAAA;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAA;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC/B,OAAO,KAAK,IAAI,SAAS,KAAK,GAAG,IAAI,KAAK,OAAO,KAAK,KAAK,EAAE,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,KAAK;QACL,WAAW,WAAW,EAAE;QACxB,SAAS,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QACxC,KAAK;QACL,EAAE;QACF,GAAG,QAAQ;KACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../format/src/serialize.ts"],"names":[],"mappings":"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"}