@astryxdesign/cli 0.6.3-canary.f22695a → 0.6.3

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 (197) hide show
  1. package/README.md +1 -2
  2. package/api/build/build.type.d.mts +2 -2
  3. package/api/build/build.type.mjs +2 -2
  4. package/api/component/component.type.d.mts +6 -6
  5. package/api/component/component.type.mjs +19 -19
  6. package/api/discover/discover.type.d.mts +4 -4
  7. package/api/discover/discover.type.mjs +10 -10
  8. package/api/docs/_adapter.d.mts +24 -37
  9. package/api/docs/_adapter.mjs +83 -169
  10. package/api/docs/detail/detail.mjs +63 -14
  11. package/api/docs/detail/section/section.d.mts +1 -1
  12. package/api/docs/detail/section/section.mjs +20 -44
  13. package/api/docs/detail/section/section.test.mjs +0 -41
  14. package/api/docs/docs.d.mts +2 -7
  15. package/api/docs/docs.doc.mjs +10 -27
  16. package/api/docs/docs.mjs +9 -16
  17. package/api/docs/docs.test.mjs +0 -6
  18. package/api/docs/docs.type.d.mts +3 -40
  19. package/api/docs/docs.type.mjs +8 -36
  20. package/api/docs/integrationDocs.test.mjs +0 -106
  21. package/api/doctor/doctor.d.mts +0 -48
  22. package/api/doctor/doctor.mjs +0 -232
  23. package/api/doctor/doctor.test.mjs +0 -196
  24. package/api/hook/hook.type.d.mts +3 -3
  25. package/api/hook/hook.type.mjs +11 -11
  26. package/api/hook/list/list.d.mts +1 -1
  27. package/api/integration/add-contribution.mjs +3 -5
  28. package/api/integration/add-contribution.test.mjs +4 -4
  29. package/api/integration/integration-authoring.type.d.mts +1 -1
  30. package/api/integration/pack-check.mjs +7 -49
  31. package/api/integration/pack-check.test.mjs +0 -249
  32. package/api/search/search.d.mts +1 -1
  33. package/api/search/search.mjs +5 -5
  34. package/api/search/search.type.d.mts +2 -2
  35. package/api/search/search.type.mjs +1 -1
  36. package/api/swizzle/swizzle.type.d.mts +2 -2
  37. package/api/swizzle/swizzle.type.mjs +2 -2
  38. package/api/template/template.d.mts +1 -1
  39. package/api/template/template.type.d.mts +6 -6
  40. package/api/template/template.type.mjs +12 -12
  41. package/api/theme/build/build.mjs +6 -20
  42. package/api/theme/build/build.test.mjs +0 -127
  43. package/api/theme/palette/generate/generate.mjs +1 -1
  44. package/api/theme/palette/generate/generator.d.mts +13 -10
  45. package/api/theme/palette/generate/generator.mjs +3 -7
  46. package/api/theme/theme.type.d.mts +11 -170
  47. package/api/theme/theme.type.mjs +27 -94
  48. package/api/upgrade/_adapter.mjs +5 -71
  49. package/api/upgrade/upgrade.doc.mjs +3 -4
  50. package/api/upgrade/upgrade.type.d.mts +5 -5
  51. package/api/upgrade/upgrade.type.mjs +11 -11
  52. package/assets/codemods/integration-discovery.mjs +2 -40
  53. package/assets/codemods/integration-discovery.test.mjs +0 -58
  54. package/assets/codemods/transforms/v0.3.0/__tests__/unwrap-authoring-factories.test.mjs +5 -27
  55. package/assets/codemods/transforms/v0.3.0/unwrap-authoring-factories.mjs +5 -20
  56. package/assets/docs/README.md +0 -9
  57. package/assets/docs/cli-integrations.doc.mjs +15 -86
  58. package/assets/docs/styling-libraries.doc.mjs +1 -1
  59. package/assets/docs/working-with-ai.doc.mjs +1 -1
  60. package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.doc.mjs +3 -19
  61. package/assets/templates/blocks/components/Toolbar/ToolbarTableFilter.tsx +65 -383
  62. package/authoring/_shared/contract.ts +0 -22
  63. package/authoring/codemod/codemod.doc.mjs +1 -6
  64. package/authoring/codemod/parse.d.mts +8 -8
  65. package/authoring/codemod/parse.mjs +6 -8
  66. package/authoring/config/parse.d.mts +13 -13
  67. package/authoring/config/parse.mjs +8 -8
  68. package/authoring/config/type.ts +3 -3
  69. package/authoring/debug/parse.d.mts +5 -5
  70. package/authoring/debug/parse.mjs +3 -3
  71. package/authoring/doctypes/_schema.d.mts +23 -788
  72. package/authoring/doctypes/_schema.mjs +39 -492
  73. package/authoring/doctypes/base/type.ts +0 -40
  74. package/authoring/doctypes/command/command.doc.mjs +2 -3
  75. package/authoring/doctypes/command/parse.d.mts +2 -2
  76. package/authoring/doctypes/command/parse.mjs +1 -1
  77. package/authoring/doctypes/command/type.ts +2 -3
  78. package/authoring/doctypes/component/component.doc.mjs +3 -6
  79. package/authoring/doctypes/component/parse.d.mts +2 -2
  80. package/authoring/doctypes/component/parse.mjs +1 -1
  81. package/authoring/doctypes/component/type.ts +3 -4
  82. package/authoring/doctypes/enum/parse.d.mts +2 -2
  83. package/authoring/doctypes/enum/parse.mjs +1 -1
  84. package/authoring/doctypes/enum/type.ts +1 -3
  85. package/authoring/doctypes/function/function.doc.mjs +0 -4
  86. package/authoring/doctypes/function/parse.d.mts +2 -2
  87. package/authoring/doctypes/function/parse.mjs +1 -1
  88. package/authoring/doctypes/function/type.ts +2 -6
  89. package/authoring/doctypes/hook/hook.doc.mjs +0 -4
  90. package/authoring/doctypes/hook/parse.d.mts +2 -2
  91. package/authoring/doctypes/hook/parse.mjs +1 -1
  92. package/authoring/doctypes/hook/type.ts +2 -3
  93. package/authoring/doctypes/legacy.d.mts +6 -8
  94. package/authoring/doctypes/legacy.mjs +4 -5
  95. package/authoring/doctypes/parse.d.mts +18 -20
  96. package/authoring/doctypes/parse.mjs +10 -16
  97. package/authoring/doctypes/parse.test.mjs +3 -77
  98. package/authoring/doctypes/reference/parse.d.mts +2 -2
  99. package/authoring/doctypes/reference/parse.mjs +5 -8
  100. package/authoring/doctypes/reference/reference.doc.mjs +4 -17
  101. package/authoring/doctypes/reference/type.ts +5 -51
  102. package/authoring/doctypes/schema/parse.d.mts +2 -2
  103. package/authoring/doctypes/schema/parse.mjs +1 -1
  104. package/authoring/doctypes/schema/type.ts +2 -3
  105. package/authoring/doctypes/template/parse.d.mts +1 -92
  106. package/authoring/doctypes/template/parse.mjs +2 -36
  107. package/authoring/doctypes/template/parse.test.mjs +2 -8
  108. package/authoring/doctypes/template/template.doc.mjs +0 -4
  109. package/authoring/doctypes/template/type.ts +2 -5
  110. package/authoring/doctypes/types.ts +9 -10
  111. package/authoring/gap-report/parse.d.mts +10 -10
  112. package/authoring/gap-report/parse.mjs +6 -6
  113. package/authoring/gap-report/type.ts +1 -1
  114. package/authoring/index.d.mts +0 -1
  115. package/authoring/index.d.ts +17 -49
  116. package/authoring/index.mjs +0 -1
  117. package/authoring/integration/integration.doc.mjs +6 -13
  118. package/authoring/integration/parse.d.mts +2 -2
  119. package/authoring/integration/parse.mjs +1 -1
  120. package/authoring/integration/parse.test.mjs +1 -10
  121. package/authoring/integration/schema.d.mts +4 -6
  122. package/authoring/integration/schema.mjs +3 -9
  123. package/authoring/integration/type.ts +6 -23
  124. package/authoring/shadcn/receipt.d.mts +6 -6
  125. package/clients/cli/commands/docs.doc.mjs +3 -13
  126. package/clients/cli/commands/docs.mjs +21 -121
  127. package/clients/cli/commands/docs.test.mjs +0 -88
  128. package/clients/cli/commands/integration-authoring.test.mjs +9 -13
  129. package/clients/cli/commands/theme-palette-generate.doc.mjs +4 -8
  130. package/clients/cli/commands/upgrade.doc.mjs +2 -2
  131. package/clients/cli/formatters/index.mjs +1 -162
  132. package/clients/cli/formatters/index.test.mjs +0 -91
  133. package/clients/cli/lib/manifest.mjs +2 -7
  134. package/foundation/config/project.mjs +6 -21
  135. package/foundation/discovery/component-discovery.d.mts +1 -1
  136. package/foundation/discovery/component-discovery.mjs +1 -2
  137. package/foundation/discovery/docs-discovery.d.mts +4 -11
  138. package/foundation/discovery/docs-discovery.mjs +88 -208
  139. package/foundation/discovery/docs-discovery.test.mjs +13 -279
  140. package/foundation/discovery/template-adapter.mjs +1 -2
  141. package/foundation/integrations/autolink.mjs +5 -12
  142. package/foundation/integrations/integration-warnings.mjs +0 -6
  143. package/foundation/integrations/integrations.d.mts +2 -46
  144. package/foundation/integrations/integrations.mjs +8 -167
  145. package/foundation/integrations/integrations.test.mjs +1 -384
  146. package/foundation/integrations/validate-contributions.d.mts +0 -2
  147. package/foundation/integrations/validate-contributions.mjs +0 -10
  148. package/foundation/response/json-contract.test.mjs +17 -46
  149. package/foundation/response/response-types.doc.mjs +1 -6
  150. package/package.json +11 -9
  151. package/api/docs/compiled-topics.test.mjs +0 -78
  152. package/api/docs/index/index.d.mts +0 -18
  153. package/api/docs/index/index.mjs +0 -32
  154. package/api/docs/index/index.test.mjs +0 -62
  155. package/api/upgrade/project-context.test.mjs +0 -272
  156. package/assets/docs/authoring.doc.mjs +0 -14
  157. package/assets/templates/blocks/components/Timer/TimerFormats.doc.mjs +0 -14
  158. package/assets/templates/blocks/components/Timer/TimerFormats.tsx +0 -34
  159. package/assets/templates/blocks/components/Timer/TimerInline.doc.mjs +0 -14
  160. package/assets/templates/blocks/components/Timer/TimerInline.tsx +0 -14
  161. package/assets/templates/blocks/components/Timer/TimerShowcase.doc.mjs +0 -13
  162. package/assets/templates/blocks/components/Timer/TimerShowcase.tsx +0 -47
  163. package/assets/templates/blocks/components/Timer/TimerTypography.doc.mjs +0 -14
  164. package/assets/templates/blocks/components/Timer/TimerTypography.tsx +0 -31
  165. package/authoring/doctypes/base/graph-fields.doc.d.mts +0 -9
  166. package/authoring/doctypes/base/graph-fields.doc.mjs +0 -62
  167. package/authoring/doctypes/load-contract.test.mjs +0 -207
  168. package/authoring/doctypes/namespace/namespace.doc.d.mts +0 -9
  169. package/authoring/doctypes/namespace/namespace.doc.mjs +0 -132
  170. package/authoring/doctypes/namespace/parse.d.mts +0 -12
  171. package/authoring/doctypes/namespace/parse.mjs +0 -25
  172. package/authoring/doctypes/namespace/parse.test.mjs +0 -165
  173. package/authoring/doctypes/namespace/type.ts +0 -71
  174. package/authoring/identity/identity.doc.d.mts +0 -9
  175. package/authoring/identity/identity.doc.mjs +0 -61
  176. package/authoring/identity/type.ts +0 -132
  177. package/foundation/discovery/authoring-self-docs.d.mts +0 -69
  178. package/foundation/discovery/authoring-self-docs.mjs +0 -214
  179. package/foundation/discovery/authoring-self-docs.test.mjs +0 -154
  180. package/foundation/discovery/docs-output-budget.d.mts +0 -28
  181. package/foundation/discovery/docs-output-budget.mjs +0 -50
  182. package/foundation/discovery/docs-section-key.d.mts +0 -98
  183. package/foundation/discovery/docs-section-key.mjs +0 -221
  184. package/foundation/discovery/docs-section-key.test.mjs +0 -224
  185. package/foundation/doc-compiler/compile.d.mts +0 -162
  186. package/foundation/doc-compiler/compile.mjs +0 -262
  187. package/foundation/doc-compiler/doc-compiler.test.mjs +0 -687
  188. package/foundation/doc-compiler/ir.d.mts +0 -9
  189. package/foundation/doc-compiler/ir.mjs +0 -287
  190. package/foundation/doc-compiler/lenses.d.mts +0 -33
  191. package/foundation/doc-compiler/lenses.mjs +0 -127
  192. package/foundation/identity/provider-identity.d.mts +0 -90
  193. package/foundation/identity/provider-identity.mjs +0 -320
  194. package/foundation/identity/provider-identity.test.mjs +0 -254
  195. package/foundation/identity/providers.d.mts +0 -7
  196. package/foundation/identity/providers.mjs +0 -16
  197. package/foundation/integrations/provider-conflicts.test.mjs +0 -125
@@ -8,9 +8,6 @@ import {
8
8
  list,
9
9
  record,
10
10
  records,
11
- wrapText,
12
- displayWidth,
13
- WRAP_WIDTH,
14
11
  code,
15
12
  Block,
16
13
  BULLET,
@@ -151,91 +148,3 @@ describe('emit', () => {
151
148
  expect(spy).not.toHaveBeenCalled();
152
149
  });
153
150
  });
154
-
155
- describe('wrapText', () => {
156
- it('leaves short lines and its own line breaks alone', () => {
157
- expect(wrapText('a b\nc')).toBe('a b\nc');
158
- });
159
-
160
- it('wraps at the width with a hanging indent', () => {
161
- expect(wrapText('aaa bbb ccc', {width: 7, indent: ' '})).toBe('aaa bbb\n ccc');
162
- });
163
-
164
- it('keeps a word longer than the width whole', () => {
165
- expect(wrapText('x '.concat('y'.repeat(20)), {width: 10})).toBe(
166
- `x\n${'y'.repeat(20)}`,
167
- );
168
- });
169
- });
170
-
171
- describe('records inline layout', () => {
172
- const items = [
173
- {id: 'a', title: 'Alpha', summary: 'First.'},
174
- {id: 'bbb', title: 'Beta', summary: ''},
175
- ];
176
-
177
- it('puts one record on each line under a padded first column', () => {
178
- expect(
179
- records(items, {fields: ['id', 'title', 'summary'], layout: 'inline'}).toString(),
180
- ).toBe('a Alpha - First.\nbbb Beta');
181
- });
182
-
183
- it('wraps a long record under the first column', () => {
184
- const out = records([{id: 'a', text: 'word '.repeat(40).trim()}], {
185
- layout: 'inline',
186
- }).toString();
187
- expect(out.split('\n').length).toBeGreaterThan(1);
188
- expect(out.split('\n').every(line => line.length <= WRAP_WIDTH)).toBe(true);
189
- expect(out.split('\n')[1].startsWith(' word')).toBe(true);
190
- });
191
-
192
- it('keeps the first column padded on a record that wraps', () => {
193
- const out = records(
194
- [
195
- {id: 'a', text: 'word '.repeat(40).trim()},
196
- {id: 'longer', text: 'x'},
197
- ],
198
- {layout: 'inline'},
199
- ).toString();
200
- const lines = out.split('\n');
201
- expect(lines[0].startsWith(`a${' '.repeat(7)}word`)).toBe(true);
202
- expect(lines[1].startsWith(' '.repeat(8) + 'word')).toBe(true);
203
- expect(lines.at(-1)).toBe('longer x');
204
- expect(lines.every(line => line.length <= WRAP_WIDTH)).toBe(true);
205
- });
206
-
207
- it('cuts a long record to one line when asked', () => {
208
- const out = records([{id: 'a', text: 'word '.repeat(40).trim()}], {
209
- layout: 'inline',
210
- overflow: 'truncate',
211
- }).toString();
212
- expect(out.includes('\n')).toBe(false);
213
- expect(out.length).toBeLessThanOrEqual(WRAP_WIDTH);
214
- expect(out.endsWith('...')).toBe(true);
215
- });
216
- });
217
-
218
- describe('wide characters', () => {
219
- it('counts CJK characters as two columns', () => {
220
- expect(displayWidth('亮/暗模式')).toBe(9);
221
- });
222
-
223
- it('wraps CJK text, which has no spaces, by columns', () => {
224
- const out = wrapText('中'.repeat(100), {width: 20});
225
- expect(out.split('\n').every(line => displayWidth(line) <= 20)).toBe(true);
226
- expect(out.split('\n')).toHaveLength(10);
227
- });
228
-
229
- it('keeps spaces between Latin words next to CJK', () => {
230
- expect(wrapText('运行 astryx docs 查看', {width: 200})).toBe('运行 astryx docs 查看');
231
- });
232
-
233
- it('cuts an inline record to columns, not characters', () => {
234
- const out = records([{id: 'a', text: '中'.repeat(100)}], {
235
- layout: 'inline',
236
- overflow: 'truncate',
237
- }).toString();
238
- expect(displayWidth(out)).toBeLessThanOrEqual(WRAP_WIDTH);
239
- expect(out.endsWith('...')).toBe(true);
240
- });
241
- });
@@ -55,7 +55,7 @@ export const RESPONSE_TYPES = {
55
55
  'component.detail.showcase',
56
56
  'component.detail.blocks',
57
57
  ],
58
- docs: ['docs.list', 'docs.index', 'docs.detail', 'docs.detail.section'],
58
+ docs: ['docs.list', 'docs.detail', 'docs.detail.section'],
59
59
  blog: ['blog.list', 'blog.detail'],
60
60
  discover: [
61
61
  'discover.list',
@@ -105,12 +105,7 @@ const EXAMPLES = {
105
105
  'astryx component XDSButton',
106
106
  'astryx component XDSButton --props --json',
107
107
  ],
108
- docs: [
109
- 'astryx docs',
110
- 'astryx docs spacing --json',
111
- 'astryx docs theme --index',
112
- 'astryx docs theme quick-start',
113
- ],
108
+ docs: ['astryx docs', 'astryx docs spacing --json'],
114
109
  discover: ['astryx discover --json'],
115
110
  search: [
116
111
  'astryx search modal --json',
@@ -38,7 +38,6 @@ import {parseConfig} from '../../authoring/config/parse.mjs';
38
38
  import {
39
39
  loadIntegrations,
40
40
  loadLocalIntegration,
41
- markProviderConflicts,
42
41
  } from '../integrations/integrations.mjs';
43
42
  import {autolinkIntegrations} from '../integrations/autolink.mjs';
44
43
  import {
@@ -204,11 +203,10 @@ export class Project {
204
203
  /** @type {ProjectIntegrationIssue[]} */
205
204
  #issues = [];
206
205
  /**
207
- * Loaded integrations whose issues have already been collected (via a
208
- * discovery method or a direct issues() validation), so issues() can fill in
209
- * only the ones not yet visited and never double-collect. Keyed by entry, not
210
- * label: two entries can share a package name (an alias at another version).
211
- * @type {Set<object>}
206
+ * Package names of integrations whose issues have already been collected
207
+ * (via a discovery method or a direct issues() validation), so issues() can
208
+ * fill in only the ones not yet visited and never double-collect.
209
+ * @type {Set<string>}
212
210
  */
213
211
  #visitedIssues = new Set();
214
212
 
@@ -279,8 +277,6 @@ export class Project {
279
277
  loadedIntegrations = await loadIntegrations(integrations, {
280
278
  cwd: projectDir,
281
279
  fresh,
282
- // Provider identity is resolved once, below, over the final set.
283
- resolveProviders: false,
284
280
  });
285
281
  }
286
282
 
@@ -314,10 +310,6 @@ export class Project {
314
310
  else loadedIntegrations[existing] = localIntegration;
315
311
  }
316
312
 
317
- // Autolinked and local packages can claim a provider ID that a configured
318
- // package already holds, so identity is resolved once over the final set.
319
- loadedIntegrations = markProviderConflicts(loadedIntegrations);
320
-
321
313
  // The debug recorder resolves its settings synchronously, long before any
322
314
  // command gets here, so this is where a project's `debug` block gets a
323
315
  // turn. The event is not written until process exit, so settings applied
@@ -444,13 +436,6 @@ export class Project {
444
436
  * @returns {string}
445
437
  */
446
438
  #pkgLabel(integration) {
447
- // A set-aside package is labelled name@version, so its issue never reads as
448
- // the winner's, even when both share a package name.
449
- if (integration?.__providerConflict) {
450
- return integration.version
451
- ? `${integration.name}@${integration.version}`
452
- : (integration.__spec ?? integration.name);
453
- }
454
439
  return integration?.name ?? integration?.__spec ?? '(integration)';
455
440
  }
456
441
 
@@ -478,8 +463,8 @@ export class Project {
478
463
  */
479
464
  async #collectIssues(integration) {
480
465
  const pkg = this.#pkgLabel(integration);
481
- if (this.#visitedIssues.has(integration)) return;
482
- this.#visitedIssues.add(integration);
466
+ if (this.#visitedIssues.has(pkg)) return;
467
+ this.#visitedIssues.add(pkg);
483
468
  // A manifest that failed to load (throwing import / invalid shape) is
484
469
  // recorded as a marker by loadIntegrations — surface it as an issue and
485
470
  // skip validation (there's no manifest to validate).
@@ -175,4 +175,4 @@ export function discoverOwnedComponents(coreDir: string, loadedIntegrations?: Ar
175
175
  issuesUrl: string | undefined;
176
176
  }>;
177
177
  /** The owner package name for built-in (core) components. */
178
- export const CORE_PACKAGE: import("../../authoring/index.js").ProviderId;
178
+ export const CORE_PACKAGE: "@astryxdesign/core";
@@ -7,12 +7,11 @@
7
7
  import * as fs from 'node:fs';
8
8
  import * as path from 'node:path';
9
9
  import {existsCaseExact} from '../fs/paths.mjs';
10
- import {CORE_PROVIDER_ID} from '../identity/providers.mjs';
11
10
 
12
11
  const SKIP_DIRS = new Set(['hooks', 'utils', '__tests__', 'node_modules']);
13
12
 
14
13
  /** The owner package name for built-in (core) components. */
15
- export const CORE_PACKAGE = CORE_PROVIDER_ID;
14
+ export const CORE_PACKAGE = '@astryxdesign/core';
16
15
 
17
16
  /** Conventional doc-file suffixes for integration components (same-stem). */
18
17
  const INTEGRATION_DOC_SUFFIXES = ['.doc.ts', '.doc.mjs', '.doc.js'];
@@ -72,10 +72,9 @@ export function discoverIntegrationDocs(integration: {
72
72
  errors: Error[];
73
73
  }>;
74
74
  /**
75
- * Merge an extension onto a base topic: a section with a stable `id` replaces
76
- * the base section with the same `id`; legacy sections without IDs fall back to
77
- * title matching. A section with no match is appended, and title/description
78
- * are taken from the extension when it states them.
75
+ * Merge an extension onto a base topic: a section whose title matches one in
76
+ * the base replaces it, a section the base does not have is appended, and the
77
+ * title/description are taken from the extension when it states them.
79
78
  *
80
79
  * Keyed by section TITLE rather than by position, the way the localization
81
80
  * overlays are — position keying grafts an overlay onto whichever section
@@ -87,17 +86,12 @@ export function discoverIntegrationDocs(integration: {
87
86
  * @returns {any} a new doc; neither input is mutated
88
87
  */
89
88
  export function mergeTopic(base: any, overlay: any): any;
90
- export { withSourceTitle };
91
89
  /**
92
90
  * Owner package recorded for the built-in topics. They ship inside the CLI
93
91
  * (assets/docs), not in @astryxdesign/core, so this is the CLI's own name —
94
92
  * unlike component discovery, whose built-ins belong to core.
95
93
  */
96
- export const BUILTIN_DOCS_PACKAGE: import("../../authoring/index.js").ProviderId;
97
- /** Blocks that are valid authoring but require the compiled graph renderer. */
98
- export const GRAPH_BLOCK_TYPES: Set<string>;
99
- /** Doc fields only the docs graph reads; a topic that sets one fails to load. */
100
- export const GRAPH_ONLY_FIELDS: string[];
94
+ export const BUILTIN_DOCS_PACKAGE: "@astryxdesign/cli";
101
95
  /**
102
96
  * Every topic a project can read, and the relationships between them.
103
97
  *
@@ -189,4 +183,3 @@ export type DocsTopicEntry = {
189
183
  path: string;
190
184
  }>;
191
185
  };
192
- import { withSourceTitle } from './docs-section-key.mjs';