@astryxdesign/cli 0.7.2-canary.e2909cf → 0.7.2-canary.e4bdd70
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 +15 -14
- package/api/build/help/help.mjs +1 -1
- package/api/component/_adapter.d.mts +41 -1
- package/api/component/_adapter.mjs +93 -7
- package/api/component/component.mjs +22 -5
- package/api/component/integration-export-name.test.mjs +644 -0
- package/api/docs/_adapter.d.mts +11 -0
- package/api/docs/_adapter.mjs +244 -1
- package/api/docs/integrationDocs.test.mjs +124 -0
- package/api/doctor/theme-checks.mjs +1 -1
- package/api/gap-report/gap-report.mjs +67 -4
- package/api/index.d.mts +2 -0
- package/api/index.mjs +2 -0
- package/api/init/run/run.mjs +2 -2
- package/api/integration/_adapter.d.mts +12 -0
- package/api/integration/_adapter.mjs +54 -0
- package/api/integration/add-contribution.component-names.test.mjs +66 -0
- package/api/integration/add-contribution.mjs +8 -4
- package/api/integration/add-contribution.test.mjs +4 -2
- package/api/integration/authoring-checks.mjs +11 -2
- package/api/integration/authoring-checks.test.mjs +39 -0
- package/api/integration/authoring-checks.type.d.mts +9 -0
- package/api/integration/authoring-checks.type.mjs +14 -1
- package/api/integration/check/check.d.mts +96 -0
- package/api/integration/check/check.mjs +357 -0
- package/api/integration/check/check.test.mjs +489 -0
- package/api/integration/integration-check.type.d.mts +118 -0
- package/api/integration/integration-check.type.mjs +84 -0
- package/api/integration/integrationCheck.doc.d.mts +10 -0
- package/api/integration/integrationCheck.doc.mjs +73 -0
- package/api/integration/integrationComponentConflicts.doc.mjs +36 -5
- package/api/integration/pack-check.mjs +51 -97
- package/api/integration/pack-check.test.mjs +359 -0
- package/api/integration/validate-integration.mjs +8 -0
- package/api/integration/validate-integration.test.mjs +11 -0
- package/api/integration/validate-integration.type.d.mts +8 -0
- package/api/integration/validate-integration.type.mjs +12 -1
- package/api/integration/validateIntegration.doc.mjs +17 -3
- package/api/search/search.d.mts +22 -6
- package/api/search/search.domain-priority.test.mjs +93 -18
- package/api/search/search.integration-check.test.mjs +24 -0
- package/api/search/search.mjs +133 -22
- package/api/swizzle/copy/copy.mjs +28 -14
- package/api/theme/build/build.family.test.mjs +54 -6
- package/api/theme/build/build.mjs +114 -17
- package/api/theme/themeBuild.doc.mjs +4 -4
- package/assets/docs/README.md +10 -0
- package/assets/docs/author-a-theme.doc.mjs +1 -1
- package/assets/docs/getting-started.doc.mjs +3 -3
- package/assets/docs/styling-overview.doc.mjs +1 -1
- package/assets/docs/theme.doc.dense.mjs +1 -1
- package/assets/docs/theme.doc.mjs +1 -1
- package/assets/docs/theme.doc.zh.mjs +1 -1
- package/assets/docs/tree/add-a-component.doc.mjs +11 -1
- package/assets/docs/tree/add-a-theme.doc.mjs +1 -1
- package/assets/docs/tree/add-a-topic.doc.mjs +10 -7
- package/assets/docs/tree/agent-guidance.doc.mjs +2 -2
- package/assets/docs/tree/block-template.doc.mjs +8 -20
- package/assets/docs/tree/build-the-template.doc.mjs +1 -1
- package/assets/docs/tree/check-the-props.doc.mjs +196 -0
- package/assets/docs/tree/check-your-docs.doc.mjs +51 -5
- package/assets/docs/tree/checks.doc.mjs +24 -16
- package/assets/docs/tree/codemods.doc.mjs +4 -4
- package/assets/docs/tree/component-family.doc.mjs +8 -6
- package/assets/docs/tree/component-imports.doc.mjs +10 -2
- package/assets/docs/tree/components.doc.mjs +1 -1
- package/assets/docs/tree/debug-and-gap-reports.doc.mjs +7 -18
- package/assets/docs/tree/define-the-theme.doc.mjs +6 -5
- package/assets/docs/tree/describe-the-component.doc.mjs +2 -2
- package/assets/docs/tree/docs.doc.mjs +3 -3
- package/assets/docs/tree/document-the-template.doc.mjs +1 -1
- package/assets/docs/tree/document-the-theme.doc.mjs +1 -1
- package/assets/docs/tree/export-template-assets.doc.mjs +1 -1
- package/assets/docs/tree/extend-or-replace.doc.mjs +6 -6
- package/assets/docs/tree/fonts-and-assets.doc.mjs +2 -2
- package/assets/docs/tree/generate-a-palette.doc.mjs +5 -3
- package/assets/docs/tree/grade-template-with-agent.doc.mjs +1 -1
- package/assets/docs/tree/integrations.doc.mjs +8 -0
- package/assets/docs/tree/links.doc.mjs +6 -5
- package/assets/docs/tree/package-and-test.doc.mjs +1 -1
- package/assets/docs/tree/page-template.doc.mjs +4 -8
- package/assets/docs/tree/publishing.doc.mjs +1 -1
- package/assets/docs/tree/quick-start.doc.mjs +37 -21
- package/assets/docs/tree/replace-a-core-component.doc.mjs +4 -6
- package/assets/docs/tree/replace-a-core-template.doc.mjs +6 -8
- package/assets/docs/tree/sections-and-placement.doc.mjs +4 -6
- package/assets/docs/tree/see-it-in-an-app.doc.mjs +4 -2
- package/assets/docs/tree/short-and-findable.doc.mjs +6 -5
- package/assets/docs/tree/single-component.doc.mjs +15 -6
- package/assets/docs/tree/start-a-template.doc.mjs +3 -3
- package/assets/docs/tree/subcomponent.doc.mjs +6 -6
- package/assets/docs/tree/template-assets.doc.mjs +2 -2
- package/assets/docs/tree/template-doc-overview.doc.mjs +4 -15
- package/assets/docs/tree/template-fonts.doc.mjs +1 -1
- package/assets/docs/tree/template-icons.doc.mjs +1 -1
- package/assets/docs/tree/template-images-media.doc.mjs +1 -1
- package/assets/docs/tree/template-styles.doc.mjs +2 -2
- package/assets/docs/tree/templates.doc.mjs +1 -1
- package/assets/docs/tree/test-in-an-app.doc.mjs +3 -3
- package/assets/docs/tree/test-template-in-app.doc.mjs +1 -1
- package/assets/docs/tree/tokens-and-setup.doc.mjs +19 -15
- package/assets/docs/tree/troubleshooting.doc.mjs +13 -5
- package/assets/docs/tree/type-scale.doc.mjs +3 -3
- package/assets/docs/tree/upgrading.doc.mjs +3 -3
- package/assets/docs/tree/use-a-theme-in-an-app.doc.mjs +3 -1
- package/assets/docs/tree/verify-packed-template.doc.mjs +1 -1
- package/assets/docs/tree/versioning.doc.mjs +7 -6
- package/assets/docs/tree/write-the-template-file.doc.mjs +4 -3
- package/assets/docs/use-a-theme.doc.mjs +2 -2
- package/assets/theme.template.ts +1 -1
- package/authoring/codemod/codemod.doc.mjs +7 -3
- package/authoring/config/config.doc.mjs +9 -6
- package/authoring/config/type.ts +4 -2
- package/authoring/discover/discover.doc.mjs +1 -1
- package/authoring/doctypes/base/graph-fields.doc.mjs +6 -4
- package/authoring/doctypes/command/command.doc.mjs +14 -12
- package/authoring/doctypes/component/component.doc.mjs +29 -26
- package/authoring/doctypes/component/type.ts +13 -8
- package/authoring/doctypes/enum/enum.doc.mjs +7 -4
- package/authoring/doctypes/function/function.doc.mjs +9 -8
- package/authoring/doctypes/hook/hook.doc.mjs +5 -4
- package/authoring/doctypes/namespace/namespace.doc.mjs +7 -6
- package/authoring/doctypes/reference/reference.doc.mjs +11 -10
- package/authoring/doctypes/schema/schema.doc.mjs +9 -9
- package/authoring/doctypes/template/integration-template.doc.d.mts +11 -0
- package/authoring/doctypes/template/integration-template.doc.mjs +49 -0
- package/authoring/doctypes/template/parse.d.mts +6 -2
- package/authoring/doctypes/template/parse.mjs +3 -1
- package/authoring/doctypes/template/template.doc.mjs +3 -3
- package/authoring/doctypes/template/type.ts +22 -0
- package/authoring/doctypes/theme/theme.doc.mjs +2 -2
- package/authoring/gap-report/gap-report.doc.mjs +2 -2
- package/authoring/identity/identity.doc.mjs +3 -3
- package/authoring/index.d.ts +1 -0
- package/authoring/integration/integration.doc.mjs +12 -4
- package/authoring/integration/parse.test.mjs +10 -0
- package/authoring/integration/schema.d.mts +2 -0
- package/authoring/integration/schema.mjs +1 -0
- package/authoring/integration/type.ts +4 -0
- package/clients/cli/commands/build-theme.batch-report.test.mjs +3 -1
- package/clients/cli/commands/build-theme.mjs +1 -1
- package/clients/cli/commands/build-theme.path-safety.test.mjs +155 -21
- package/clients/cli/commands/doctor-integration-components.doc.mjs +15 -4
- package/clients/cli/commands/doctor-integration-validate.doc.mjs +11 -2
- package/clients/cli/commands/doctor-integration.test.mjs +837 -0
- package/clients/cli/commands/doctor.mjs +190 -0
- package/clients/cli/commands/integration-check.doc.mjs +85 -0
- package/clients/cli/commands/integration-check.test.mjs +267 -0
- package/clients/cli/commands/integration.doc.mjs +6 -2
- package/clients/cli/commands/integration.mjs +107 -1
- package/clients/cli/commands/text-json-parity.test.mjs +5 -0
- package/clients/cli/commands/theme-build.doc.mjs +2 -2
- package/clients/cli/index.mjs +1 -0
- package/foundation/config/project.mjs +82 -0
- package/foundation/discovery/authoring-self-docs.mjs +2 -1
- package/foundation/discovery/component-discovery.d.mts +178 -10
- package/foundation/discovery/component-discovery.export-names.test.mjs +760 -0
- package/foundation/discovery/component-discovery.mjs +659 -62
- package/foundation/discovery/component-replacement.mjs +18 -0
- package/foundation/discovery/component-replacement.test.mjs +40 -0
- package/foundation/discovery/doc-types.d.mts +157 -0
- package/foundation/discovery/doc-types.mjs +1224 -0
- package/foundation/discovery/doc-types.test.mjs +652 -0
- package/foundation/discovery/docs-discovery.d.mts +81 -0
- package/foundation/discovery/docs-discovery.mjs +57 -0
- package/foundation/discovery/integration-doc-files.d.mts +22 -0
- package/foundation/discovery/integration-doc-files.mjs +231 -0
- package/foundation/discovery/integration-doc-files.test.mjs +246 -0
- package/foundation/discovery/module-exports.d.mts +27 -0
- package/foundation/discovery/module-exports.mjs +356 -31
- package/foundation/discovery/module-exports.test.mjs +172 -0
- package/foundation/discovery/package-tsconfig.d.mts +14 -0
- package/foundation/discovery/package-tsconfig.mjs +228 -0
- package/foundation/discovery/package-tsconfig.test.mjs +210 -0
- package/foundation/discovery/project-typescript.d.mts +23 -0
- package/foundation/discovery/project-typescript.mjs +61 -0
- package/foundation/discovery/prop-drift.d.mts +278 -0
- package/foundation/discovery/prop-drift.mjs +2263 -0
- package/foundation/discovery/prop-drift.test.mjs +2219 -0
- package/foundation/discovery/type-match.d.mts +53 -0
- package/foundation/discovery/type-match.mjs +660 -0
- package/foundation/discovery/type-match.test.mjs +169 -0
- package/foundation/discovery/type-text.d.mts +68 -0
- package/foundation/discovery/type-text.mjs +658 -0
- package/foundation/discovery/type-text.test.mjs +196 -0
- package/foundation/discovery/unresolved-references.d.mts +62 -0
- package/foundation/discovery/unresolved-references.mjs +790 -0
- package/foundation/discovery/unresolved-references.test.mjs +567 -0
- package/foundation/doc-compiler/doc-loads.test.mjs +6 -0
- package/foundation/doc-compiler/links.d.mts +9 -5
- package/foundation/doc-compiler/links.mjs +4 -2
- package/foundation/integrations/contribution-inventory.mjs +6 -1
- package/foundation/response/response-types.doc.mjs +7 -2
- package/package.json +9 -9
|
@@ -161,6 +161,24 @@ export async function resolveComponentReplacements(
|
|
|
161
161
|
typeof name === 'string' ? byTarget.get(name) : undefined,
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
+
// A first read under file names alone settles the common case, no
|
|
165
|
+
// declaration anywhere, without reading the names docs document.
|
|
166
|
+
let declares = false;
|
|
167
|
+
for (const integration of loadedIntegrations) {
|
|
168
|
+
if (declares || !integration?.components || integration.__loadError)
|
|
169
|
+
continue;
|
|
170
|
+
try {
|
|
171
|
+
const {components} = await discoverValidIntegrationComponents(
|
|
172
|
+
integration,
|
|
173
|
+
{documentedNames: false},
|
|
174
|
+
);
|
|
175
|
+
declares = components.some(record => record.replaces !== undefined);
|
|
176
|
+
} catch {
|
|
177
|
+
// Read again below, where a root that cannot be read is skipped.
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (!declares) return result;
|
|
181
|
+
|
|
164
182
|
/** @type {Declaration[]} */
|
|
165
183
|
const declarations = [];
|
|
166
184
|
/** @type {Array<{name: string, package: string}>} */
|
|
@@ -259,6 +259,46 @@ describe('resolveComponentReplacements', () => {
|
|
|
259
259
|
]);
|
|
260
260
|
});
|
|
261
261
|
|
|
262
|
+
it('applies a replacement under the export a doc names when its file is named otherwise', async () => {
|
|
263
|
+
// Nav.doc.mjs documents AcmeSideNav, the export of a Nav.tsx that exports
|
|
264
|
+
// nothing named Nav.
|
|
265
|
+
const acme = integrationWithDocSource(
|
|
266
|
+
'@acme/nav',
|
|
267
|
+
'Nav',
|
|
268
|
+
BASE_DOC.replace("name: 'AcmeNav'", "name: 'AcmeSideNav'"),
|
|
269
|
+
);
|
|
270
|
+
fs.writeFileSync(
|
|
271
|
+
path.join(acme.components, 'Nav.tsx'),
|
|
272
|
+
'export function AcmeSideNav() { return null; }\n',
|
|
273
|
+
);
|
|
274
|
+
const result = await resolveComponentReplacements(CORE_DIR, [acme]);
|
|
275
|
+
expect(result.findings).toEqual([]);
|
|
276
|
+
expect(result.forTarget('SideNav')).toMatchObject({
|
|
277
|
+
name: 'AcmeSideNav',
|
|
278
|
+
package: '@acme/nav',
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
it("counts a doc's replaces once when the doc lists its own name as a member", async () => {
|
|
283
|
+
// Chip.doc.mjs documents AcmeChip beside a Chip.tsx that exports both, and
|
|
284
|
+
// lists itself first, as the component-family guide asks.
|
|
285
|
+
const acme = integrationWithDocSource(
|
|
286
|
+
'@acme/chips',
|
|
287
|
+
'Chip',
|
|
288
|
+
`export default {type: 'component', name: 'AcmeChip', replaces: 'Badge', usage: {description: 'Acme chip.'}, components: [{name: 'AcmeChip', description: 'A chip.', props: []}]};\n`,
|
|
289
|
+
);
|
|
290
|
+
fs.writeFileSync(
|
|
291
|
+
path.join(acme.components, 'Chip.tsx'),
|
|
292
|
+
'export function Chip() { return null; }\nexport function AcmeChip() { return null; }\n',
|
|
293
|
+
);
|
|
294
|
+
const result = await resolveComponentReplacements(CORE_DIR, [acme]);
|
|
295
|
+
expect(result.findings).toEqual([]);
|
|
296
|
+
expect(result.forTarget('Badge')).toMatchObject({
|
|
297
|
+
name: 'Chip',
|
|
298
|
+
package: '@acme/chips',
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
|
|
262
302
|
it('lets a replacement keep the Core name it replaces', async () => {
|
|
263
303
|
const acme = integration(
|
|
264
304
|
'@acme/nav',
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// @generated by scripts/sync-api-types.mjs from the JSDoc in foundation/**/*.mjs.
|
|
2
|
+
// DO NOT EDIT — run `pnpm sync:api-types` to regenerate.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Check each doc file's values against the published authoring types.
|
|
6
|
+
* @param {DocFile[]} files
|
|
7
|
+
* @param {{packageDir: string, resolveFrom: Array<string | null | undefined>, core?: boolean}} options
|
|
8
|
+
* `core`: the docs are Core's own, so templates are held to TemplateDoc
|
|
9
|
+
* @returns {Promise<DocTypesReport>}
|
|
10
|
+
*/
|
|
11
|
+
export function checkDocTypes(files: DocFile[], options: {
|
|
12
|
+
packageDir: string;
|
|
13
|
+
resolveFrom: Array<string | null | undefined>;
|
|
14
|
+
core?: boolean;
|
|
15
|
+
}): Promise<DocTypesReport>;
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {'components' | 'hooks' | 'templates' | 'docs' | 'docs-overlay' | 'themes'} DocRoot
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* @typedef {object} DocFile
|
|
21
|
+
* @property {string} path absolute path to the doc file
|
|
22
|
+
* @property {DocRoot} root the contribution root it was found in
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* @typedef {'unknown_field' | 'missing_field' | 'wrong_type'} DocTypeProblem
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {object} DocTypeFinding
|
|
29
|
+
* @property {string} doc the doc file, relative to the package root
|
|
30
|
+
* @property {number} line 1-based line of the field (or of the doc value)
|
|
31
|
+
* @property {string} export the export checked (`default`, `docs`, `docsZh`, …)
|
|
32
|
+
* @property {string} type the authoring type it was checked against
|
|
33
|
+
* @property {string} field the field's path in the doc, such as
|
|
34
|
+
* `usage.bestPractices[2].guidance`; empty for the doc value as a whole
|
|
35
|
+
* @property {DocTypeProblem} problem
|
|
36
|
+
* @property {'warning'} severity
|
|
37
|
+
* @property {string} message what TypeScript reports, shortened
|
|
38
|
+
* @property {string} fix what to change
|
|
39
|
+
*/
|
|
40
|
+
/**
|
|
41
|
+
* @typedef {object} DocTypesUnchecked
|
|
42
|
+
* @property {string} doc the doc file, relative to the package root
|
|
43
|
+
* @property {string} reason why it was not checked
|
|
44
|
+
*/
|
|
45
|
+
/**
|
|
46
|
+
* @typedef {object} DocTypesReport
|
|
47
|
+
* @property {'checked' | 'skipped'} status `skipped` means nothing was checked,
|
|
48
|
+
* and `reason` says why
|
|
49
|
+
* @property {string} [reason]
|
|
50
|
+
* @property {string} [typescript] the version of the compiler that checked
|
|
51
|
+
* @property {number} docs how many doc values were checked
|
|
52
|
+
* @property {DocTypeFinding[]} findings
|
|
53
|
+
* @property {DocTypesUnchecked[]} unchecked doc files with nothing to check,
|
|
54
|
+
* or not fully checked
|
|
55
|
+
*/
|
|
56
|
+
/** The line both surfaces print when the compiler is missing. */
|
|
57
|
+
export const DOC_TYPES_TYPESCRIPT_MISSING_REASON: "TypeScript is not installed in this project, so docs were not checked against the authoring types. Install typescript and run this check again.";
|
|
58
|
+
export type DocRoot = "components" | "hooks" | "templates" | "docs" | "docs-overlay" | "themes";
|
|
59
|
+
export type DocFile = {
|
|
60
|
+
/**
|
|
61
|
+
* absolute path to the doc file
|
|
62
|
+
*/
|
|
63
|
+
path: string;
|
|
64
|
+
/**
|
|
65
|
+
* the contribution root it was found in
|
|
66
|
+
*/
|
|
67
|
+
root: DocRoot;
|
|
68
|
+
};
|
|
69
|
+
export type DocTypeProblem = "unknown_field" | "missing_field" | "wrong_type";
|
|
70
|
+
export type DocTypeFinding = {
|
|
71
|
+
/**
|
|
72
|
+
* the doc file, relative to the package root
|
|
73
|
+
*/
|
|
74
|
+
doc: string;
|
|
75
|
+
/**
|
|
76
|
+
* 1-based line of the field (or of the doc value)
|
|
77
|
+
*/
|
|
78
|
+
line: number;
|
|
79
|
+
/**
|
|
80
|
+
* the export checked (`default`, `docs`, `docsZh`, …)
|
|
81
|
+
*/
|
|
82
|
+
export: string;
|
|
83
|
+
/**
|
|
84
|
+
* the authoring type it was checked against
|
|
85
|
+
*/
|
|
86
|
+
type: string;
|
|
87
|
+
/**
|
|
88
|
+
* the field's path in the doc, such as
|
|
89
|
+
* `usage.bestPractices[2].guidance`; empty for the doc value as a whole
|
|
90
|
+
*/
|
|
91
|
+
field: string;
|
|
92
|
+
problem: DocTypeProblem;
|
|
93
|
+
severity: "warning";
|
|
94
|
+
/**
|
|
95
|
+
* what TypeScript reports, shortened
|
|
96
|
+
*/
|
|
97
|
+
message: string;
|
|
98
|
+
/**
|
|
99
|
+
* what to change
|
|
100
|
+
*/
|
|
101
|
+
fix: string;
|
|
102
|
+
};
|
|
103
|
+
export type DocTypesUnchecked = {
|
|
104
|
+
/**
|
|
105
|
+
* the doc file, relative to the package root
|
|
106
|
+
*/
|
|
107
|
+
doc: string;
|
|
108
|
+
/**
|
|
109
|
+
* why it was not checked
|
|
110
|
+
*/
|
|
111
|
+
reason: string;
|
|
112
|
+
};
|
|
113
|
+
export type DocTypesReport = {
|
|
114
|
+
/**
|
|
115
|
+
* `skipped` means nothing was checked,
|
|
116
|
+
* and `reason` says why
|
|
117
|
+
*/
|
|
118
|
+
status: "checked" | "skipped";
|
|
119
|
+
reason?: string | undefined;
|
|
120
|
+
/**
|
|
121
|
+
* the version of the compiler that checked
|
|
122
|
+
*/
|
|
123
|
+
typescript?: string | undefined;
|
|
124
|
+
/**
|
|
125
|
+
* how many doc values were checked
|
|
126
|
+
*/
|
|
127
|
+
docs: number;
|
|
128
|
+
findings: DocTypeFinding[];
|
|
129
|
+
/**
|
|
130
|
+
* doc files with nothing to check,
|
|
131
|
+
* or not fully checked
|
|
132
|
+
*/
|
|
133
|
+
unchecked: DocTypesUnchecked[];
|
|
134
|
+
};
|
|
135
|
+
export type Target = {
|
|
136
|
+
exportName: string;
|
|
137
|
+
/**
|
|
138
|
+
* the doc value's expression
|
|
139
|
+
*/
|
|
140
|
+
node: any;
|
|
141
|
+
/**
|
|
142
|
+
* the authoring type, as a type expression
|
|
143
|
+
*/
|
|
144
|
+
typeExpr: string;
|
|
145
|
+
/**
|
|
146
|
+
* how findings name that type
|
|
147
|
+
*/
|
|
148
|
+
typeName: string;
|
|
149
|
+
/**
|
|
150
|
+
* nodes whose leading JSDoc annotations are blanked
|
|
151
|
+
*/
|
|
152
|
+
blank: any[];
|
|
153
|
+
/**
|
|
154
|
+
* source ranges to blank
|
|
155
|
+
*/
|
|
156
|
+
blankRanges: Array<[number, number]>;
|
|
157
|
+
};
|