@forge-ts/core 0.2.1 → 0.3.1
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 +1 -1
- package/dist/index.d.ts +148 -15
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ npm install @forge-ts/core
|
|
|
17
17
|
- **`createWalker(config)`** - AST walker using the TypeScript Compiler API + `@microsoft/tsdoc`
|
|
18
18
|
- **`loadConfig(rootDir?)`** - Zero-config loader (reads `forge-ts.config.ts` or `package.json`)
|
|
19
19
|
- **`filterByVisibility(symbols, minVisibility)`** - Filter by `@public`, `@beta`, `@internal` tags
|
|
20
|
-
- **OpenAPI 3.
|
|
20
|
+
- **OpenAPI 3.2 types** - `OpenAPIDocument`, `OpenAPISchemaObject`, etc.
|
|
21
21
|
|
|
22
22
|
## Example
|
|
23
23
|
|
package/dist/index.d.ts
CHANGED
|
@@ -135,6 +135,12 @@ interface ForgeError {
|
|
|
135
135
|
line: number;
|
|
136
136
|
/** 0-based column. */
|
|
137
137
|
column: number;
|
|
138
|
+
/** Suggested fix for the agent — exact TSDoc block to add. */
|
|
139
|
+
suggestedFix?: string;
|
|
140
|
+
/** The symbol name that needs fixing. */
|
|
141
|
+
symbolName?: string;
|
|
142
|
+
/** The symbol kind (function, class, interface, etc.). */
|
|
143
|
+
symbolKind?: string;
|
|
138
144
|
}
|
|
139
145
|
/**
|
|
140
146
|
* A diagnostic warning produced during a forge-ts run.
|
|
@@ -158,6 +164,12 @@ interface ForgeWarning {
|
|
|
158
164
|
*
|
|
159
165
|
* @param rootDir - Absolute path to the project root.
|
|
160
166
|
* @returns A fully-populated default configuration.
|
|
167
|
+
* @example
|
|
168
|
+
* ```typescript
|
|
169
|
+
* import { defaultConfig } from "@forge-ts/core";
|
|
170
|
+
* const config = defaultConfig("/path/to/project");
|
|
171
|
+
* console.log(config.enforce.enabled); // true
|
|
172
|
+
* ```
|
|
161
173
|
* @public
|
|
162
174
|
*/
|
|
163
175
|
declare function defaultConfig(rootDir: string): ForgeConfig;
|
|
@@ -172,12 +184,18 @@ declare function defaultConfig(rootDir: string): ForgeConfig;
|
|
|
172
184
|
*
|
|
173
185
|
* @param rootDir - The project root to search for config. Defaults to `process.cwd()`.
|
|
174
186
|
* @returns A fully-resolved {@link ForgeConfig}.
|
|
187
|
+
* @example
|
|
188
|
+
* ```typescript
|
|
189
|
+
* import { loadConfig } from "@forge-ts/core";
|
|
190
|
+
* const config = await loadConfig("/path/to/project");
|
|
191
|
+
* // config is fully resolved with defaults
|
|
192
|
+
* ```
|
|
175
193
|
* @public
|
|
176
194
|
*/
|
|
177
195
|
declare function loadConfig(rootDir?: string): Promise<ForgeConfig>;
|
|
178
196
|
|
|
179
197
|
/**
|
|
180
|
-
* OpenAPI 3.
|
|
198
|
+
* OpenAPI 3.2 type contracts shared across the forge-ts toolchain.
|
|
181
199
|
*
|
|
182
200
|
* All OpenAPI-related types are defined here so that consumers never resort
|
|
183
201
|
* to `Record<string, unknown>` or inline structural types.
|
|
@@ -186,104 +204,194 @@ declare function loadConfig(rootDir?: string): Promise<ForgeConfig>;
|
|
|
186
204
|
* @public
|
|
187
205
|
*/
|
|
188
206
|
/**
|
|
189
|
-
* OpenAPI 3.
|
|
207
|
+
* OpenAPI 3.2 schema object.
|
|
190
208
|
* @public
|
|
191
209
|
*/
|
|
192
210
|
interface OpenAPISchemaObject {
|
|
211
|
+
/** The data type of the schema (e.g., "string", "number", "object", "array"). */
|
|
193
212
|
type?: "string" | "number" | "integer" | "boolean" | "array" | "object" | "null";
|
|
213
|
+
/** A format hint for the data type (e.g., "int32", "date-time", "email", "uuid"). */
|
|
194
214
|
format?: string;
|
|
215
|
+
/** A human-readable description of the schema's purpose or constraints. */
|
|
195
216
|
description?: string;
|
|
217
|
+
/** Property definitions for object-type schemas. Maps each property name to its schema. */
|
|
196
218
|
properties?: Record<string, OpenAPISchemaObject>;
|
|
219
|
+
/** List of property names that must be present on the object. */
|
|
197
220
|
required?: string[];
|
|
221
|
+
/** Schema definition for the elements of an array-type schema. Required when `type` is "array". */
|
|
198
222
|
items?: OpenAPISchemaObject;
|
|
223
|
+
/** Controls whether additional properties are allowed (`true`/`false`) or defines their schema. */
|
|
199
224
|
additionalProperties?: boolean | OpenAPISchemaObject;
|
|
225
|
+
/** Restricts the value to one of the listed constants. */
|
|
200
226
|
enum?: Array<string | number | boolean>;
|
|
227
|
+
/** Validates the value against exactly one of the listed sub-schemas. */
|
|
201
228
|
oneOf?: OpenAPISchemaObject[];
|
|
229
|
+
/** Validates the value against all of the listed sub-schemas (intersection). */
|
|
202
230
|
allOf?: OpenAPISchemaObject[];
|
|
231
|
+
/** Validates the value against at least one of the listed sub-schemas. */
|
|
203
232
|
anyOf?: OpenAPISchemaObject[];
|
|
233
|
+
/** Indicates that the value may be `null` in addition to its declared type. */
|
|
204
234
|
nullable?: boolean;
|
|
235
|
+
/** Marks the schema as deprecated, signalling that it may be removed in a future version. */
|
|
205
236
|
deprecated?: boolean;
|
|
237
|
+
/** The default value to use when the property is absent. */
|
|
206
238
|
default?: string | number | boolean | null;
|
|
239
|
+
/** A JSON Reference (`$ref`) pointing to another schema definition in the document. */
|
|
207
240
|
$ref?: string;
|
|
208
241
|
}
|
|
209
242
|
/**
|
|
210
|
-
* OpenAPI 3.
|
|
243
|
+
* OpenAPI 3.2 info object.
|
|
211
244
|
* @public
|
|
212
245
|
*/
|
|
213
246
|
interface OpenAPIInfoObject {
|
|
247
|
+
/** The human-readable name of the API. */
|
|
214
248
|
title: string;
|
|
249
|
+
/** The version string for the API (e.g., "1.0.0"). */
|
|
215
250
|
version: string;
|
|
251
|
+
/** A detailed description of the API, supporting CommonMark markdown. */
|
|
216
252
|
description?: string;
|
|
253
|
+
/** A short summary of the API, intended for display in tooling. */
|
|
254
|
+
summary?: string;
|
|
255
|
+
/** Licensing information for the exposed API, including name, URL, and SPDX identifier. */
|
|
217
256
|
license?: {
|
|
218
257
|
name: string;
|
|
219
258
|
url?: string;
|
|
259
|
+
identifier?: string;
|
|
220
260
|
};
|
|
221
261
|
}
|
|
222
262
|
/**
|
|
223
|
-
* OpenAPI 3.
|
|
263
|
+
* OpenAPI 3.2 tag object.
|
|
224
264
|
* @public
|
|
225
265
|
*/
|
|
226
266
|
interface OpenAPITagObject {
|
|
267
|
+
/** The name of the tag, used to group operations in the document. */
|
|
227
268
|
name: string;
|
|
269
|
+
/** An optional description of the tag, supporting CommonMark markdown. */
|
|
228
270
|
description?: string;
|
|
229
271
|
}
|
|
230
272
|
/**
|
|
231
|
-
* OpenAPI 3.
|
|
273
|
+
* OpenAPI 3.2 path item object.
|
|
232
274
|
* @public
|
|
233
275
|
*/
|
|
234
276
|
interface OpenAPIPathItemObject {
|
|
277
|
+
/** A short summary of the path item, intended for tooling display. */
|
|
235
278
|
summary?: string;
|
|
279
|
+
/** A detailed description of the path item, supporting CommonMark markdown. */
|
|
236
280
|
description?: string;
|
|
281
|
+
/** The operation definition for HTTP GET requests to this path. */
|
|
237
282
|
get?: OpenAPIOperationObject;
|
|
283
|
+
/** The operation definition for HTTP POST requests to this path. */
|
|
238
284
|
post?: OpenAPIOperationObject;
|
|
285
|
+
/** The operation definition for HTTP PUT requests to this path. */
|
|
239
286
|
put?: OpenAPIOperationObject;
|
|
287
|
+
/** The operation definition for HTTP DELETE requests to this path. */
|
|
240
288
|
delete?: OpenAPIOperationObject;
|
|
289
|
+
/** The operation definition for HTTP PATCH requests to this path. */
|
|
241
290
|
patch?: OpenAPIOperationObject;
|
|
291
|
+
/** The operation definition for HTTP OPTIONS requests to this path. */
|
|
292
|
+
options?: OpenAPIOperationObject;
|
|
293
|
+
/** The operation definition for HTTP HEAD requests to this path. */
|
|
294
|
+
head?: OpenAPIOperationObject;
|
|
295
|
+
/** The operation definition for HTTP TRACE requests to this path. */
|
|
296
|
+
trace?: OpenAPIOperationObject;
|
|
297
|
+
/** The operation definition for HTTP QUERY requests to this path (OpenAPI 3.2 extension). */
|
|
298
|
+
query?: OpenAPIOperationObject;
|
|
299
|
+
/** Additional non-standard HTTP method operations keyed by method name. */
|
|
300
|
+
additionalOperations?: Record<string, OpenAPIOperationObject>;
|
|
242
301
|
}
|
|
243
302
|
/**
|
|
244
|
-
* OpenAPI 3.
|
|
303
|
+
* OpenAPI 3.2 operation object.
|
|
245
304
|
* @public
|
|
246
305
|
*/
|
|
247
306
|
interface OpenAPIOperationObject {
|
|
307
|
+
/** A unique string identifier for the operation, used by tooling to reference it. */
|
|
248
308
|
operationId?: string;
|
|
309
|
+
/** A short, human-readable summary of what the operation does. */
|
|
249
310
|
summary?: string;
|
|
311
|
+
/** A detailed description of the operation's behaviour, supporting CommonMark markdown. */
|
|
250
312
|
description?: string;
|
|
313
|
+
/** A list of tag names that logically group this operation in documentation and tooling. */
|
|
251
314
|
tags?: string[];
|
|
315
|
+
/** The list of parameters applicable to this operation. */
|
|
252
316
|
parameters?: OpenAPIParameterObject[];
|
|
317
|
+
/** The possible responses returned by this operation, keyed by HTTP status code or "default". */
|
|
253
318
|
responses?: Record<string, OpenAPIResponseObject>;
|
|
254
319
|
}
|
|
255
320
|
/**
|
|
256
|
-
* OpenAPI 3.
|
|
321
|
+
* OpenAPI 3.2 parameter object.
|
|
257
322
|
* @public
|
|
258
323
|
*/
|
|
259
324
|
interface OpenAPIParameterObject {
|
|
325
|
+
/** The name of the parameter, case-sensitive. */
|
|
260
326
|
name: string;
|
|
261
|
-
|
|
327
|
+
/** The location of the parameter: path, query, header, cookie, or querystring. */
|
|
328
|
+
in: "query" | "header" | "path" | "cookie" | "querystring";
|
|
329
|
+
/** A human-readable description of the parameter's purpose, supporting CommonMark markdown. */
|
|
262
330
|
description?: string;
|
|
331
|
+
/** Whether the parameter is mandatory. Required for `in: "path"` parameters. */
|
|
263
332
|
required?: boolean;
|
|
333
|
+
/** The schema defining the type and constraints of the parameter value. */
|
|
334
|
+
schema?: OpenAPISchemaObject;
|
|
335
|
+
/** Marks the parameter as deprecated; clients should avoid using it. */
|
|
336
|
+
deprecated?: boolean;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* OpenAPI 3.2 encoding object.
|
|
340
|
+
* @public
|
|
341
|
+
*/
|
|
342
|
+
interface OpenAPIEncodingObject {
|
|
343
|
+
/** The MIME type to use for encoding a specific property (e.g., "application/json"). */
|
|
344
|
+
contentType?: string;
|
|
345
|
+
/** Additional headers to send alongside the encoded part, keyed by header name. */
|
|
346
|
+
headers?: Record<string, OpenAPIParameterObject>;
|
|
347
|
+
/** The serialization style for the encoded value (e.g., "form", "spaceDelimited"). */
|
|
348
|
+
style?: string;
|
|
349
|
+
/** Whether arrays and objects should be exploded into separate query parameters. */
|
|
350
|
+
explode?: boolean;
|
|
351
|
+
/** Whether reserved characters in the encoded value should be allowed without percent-encoding. */
|
|
352
|
+
allowReserved?: boolean;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* OpenAPI 3.2 media type object.
|
|
356
|
+
* @public
|
|
357
|
+
*/
|
|
358
|
+
interface OpenAPIMediaTypeObject {
|
|
359
|
+
/** The schema defining the structure and type of the media type's payload. */
|
|
264
360
|
schema?: OpenAPISchemaObject;
|
|
361
|
+
/** Encoding information for specific properties of a `multipart` or `application/x-www-form-urlencoded` request body. */
|
|
362
|
+
encoding?: Record<string, OpenAPIEncodingObject>;
|
|
265
363
|
}
|
|
266
364
|
/**
|
|
267
|
-
* OpenAPI 3.
|
|
365
|
+
* OpenAPI 3.2 response object.
|
|
268
366
|
* @public
|
|
269
367
|
*/
|
|
270
368
|
interface OpenAPIResponseObject {
|
|
369
|
+
/** A required human-readable description of the response, supporting CommonMark markdown. */
|
|
271
370
|
description: string;
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
371
|
+
/** HTTP headers returned with this response, keyed by header name. */
|
|
372
|
+
headers?: Record<string, OpenAPIParameterObject>;
|
|
373
|
+
/** The response body content, keyed by media type (e.g., "application/json"). */
|
|
374
|
+
content?: Record<string, OpenAPIMediaTypeObject>;
|
|
275
375
|
}
|
|
276
376
|
/**
|
|
277
|
-
* Complete OpenAPI 3.
|
|
377
|
+
* Complete OpenAPI 3.2 document.
|
|
278
378
|
* @public
|
|
279
379
|
*/
|
|
280
380
|
interface OpenAPIDocument {
|
|
281
|
-
|
|
381
|
+
/** The OpenAPI specification version this document conforms to. Must be "3.2.0". */
|
|
382
|
+
openapi: "3.2.0";
|
|
383
|
+
/** An optional self-referencing URL for this document, used for tooling and resolution. */
|
|
384
|
+
$self?: string;
|
|
385
|
+
/** Metadata about the API including title, version, and description. */
|
|
282
386
|
info: OpenAPIInfoObject;
|
|
387
|
+
/** The available paths and their operations, keyed by path template (e.g., "/users/{id}"). */
|
|
283
388
|
paths: Record<string, OpenAPIPathItemObject>;
|
|
389
|
+
/** Reusable schema and media type definitions shared across the document. */
|
|
284
390
|
components: {
|
|
285
391
|
schemas: Record<string, OpenAPISchemaObject>;
|
|
392
|
+
mediaTypes?: Record<string, OpenAPIMediaTypeObject>;
|
|
286
393
|
};
|
|
394
|
+
/** A list of tags used to group operations, with optional descriptions. */
|
|
287
395
|
tags?: OpenAPITagObject[];
|
|
288
396
|
}
|
|
289
397
|
|
|
@@ -298,6 +406,12 @@ interface OpenAPIDocument {
|
|
|
298
406
|
*
|
|
299
407
|
* @param tags - The parsed `tags` map from `ForgeSymbol.documentation`.
|
|
300
408
|
* @returns The resolved {@link Visibility} value.
|
|
409
|
+
* @example
|
|
410
|
+
* ```typescript
|
|
411
|
+
* import { resolveVisibility } from "@forge-ts/core";
|
|
412
|
+
* const vis = resolveVisibility({ internal: [] });
|
|
413
|
+
* // vis === Visibility.Internal
|
|
414
|
+
* ```
|
|
301
415
|
* @public
|
|
302
416
|
*/
|
|
303
417
|
declare function resolveVisibility(tags: Record<string, string[]> | undefined): Visibility;
|
|
@@ -310,6 +424,12 @@ declare function resolveVisibility(tags: Record<string, string[]> | undefined):
|
|
|
310
424
|
* @param candidate - The visibility of the symbol being tested.
|
|
311
425
|
* @param minVisibility - The minimum visibility threshold.
|
|
312
426
|
* @returns `true` if `candidate` is at least as visible as `minVisibility`.
|
|
427
|
+
* @example
|
|
428
|
+
* ```typescript
|
|
429
|
+
* import { meetsVisibility, Visibility } from "@forge-ts/core";
|
|
430
|
+
* meetsVisibility(Visibility.Public, Visibility.Public); // true
|
|
431
|
+
* meetsVisibility(Visibility.Internal, Visibility.Public); // false
|
|
432
|
+
* ```
|
|
313
433
|
* @public
|
|
314
434
|
*/
|
|
315
435
|
declare function meetsVisibility(candidate: Visibility, minVisibility: Visibility): boolean;
|
|
@@ -320,6 +440,11 @@ declare function meetsVisibility(candidate: Visibility, minVisibility: Visibilit
|
|
|
320
440
|
* @param symbols - The full list of symbols to filter.
|
|
321
441
|
* @param minVisibility - The minimum visibility threshold to keep.
|
|
322
442
|
* @returns A new array containing only symbols that pass the visibility check.
|
|
443
|
+
* @example
|
|
444
|
+
* ```typescript
|
|
445
|
+
* import { filterByVisibility, Visibility } from "@forge-ts/core";
|
|
446
|
+
* const publicOnly = filterByVisibility(symbols, Visibility.Public);
|
|
447
|
+
* ```
|
|
323
448
|
* @public
|
|
324
449
|
*/
|
|
325
450
|
declare function filterByVisibility(symbols: ForgeSymbol[], minVisibility: Visibility): ForgeSymbol[];
|
|
@@ -345,8 +470,16 @@ interface ASTWalker {
|
|
|
345
470
|
*
|
|
346
471
|
* @param config - The resolved {@link ForgeConfig} for the project.
|
|
347
472
|
* @returns An {@link ASTWalker} instance whose `walk()` method performs the extraction.
|
|
473
|
+
* @example
|
|
474
|
+
* ```typescript
|
|
475
|
+
* import { loadConfig, createWalker } from "@forge-ts/core";
|
|
476
|
+
* const config = await loadConfig();
|
|
477
|
+
* const walker = createWalker(config);
|
|
478
|
+
* const symbols = walker.walk();
|
|
479
|
+
* console.log(`Found ${symbols.length} symbols`);
|
|
480
|
+
* ```
|
|
348
481
|
* @public
|
|
349
482
|
*/
|
|
350
483
|
declare function createWalker(config: ForgeConfig): ASTWalker;
|
|
351
484
|
|
|
352
|
-
export { type ASTWalker, type ForgeConfig, type ForgeError, type ForgeResult, type ForgeSymbol, type ForgeWarning, type OpenAPIDocument, type OpenAPIInfoObject, type OpenAPIOperationObject, type OpenAPIParameterObject, type OpenAPIPathItemObject, type OpenAPIResponseObject, type OpenAPISchemaObject, type OpenAPITagObject, Visibility, createWalker, defaultConfig, filterByVisibility, loadConfig, meetsVisibility, resolveVisibility };
|
|
485
|
+
export { type ASTWalker, type ForgeConfig, type ForgeError, type ForgeResult, type ForgeSymbol, type ForgeWarning, type OpenAPIDocument, type OpenAPIEncodingObject, type OpenAPIInfoObject, type OpenAPIMediaTypeObject, type OpenAPIOperationObject, type OpenAPIParameterObject, type OpenAPIPathItemObject, type OpenAPIResponseObject, type OpenAPISchemaObject, type OpenAPITagObject, Visibility, createWalker, defaultConfig, filterByVisibility, loadConfig, meetsVisibility, resolveVisibility };
|
package/dist/index.js
CHANGED
|
@@ -36,7 +36,7 @@ function defaultConfig(rootDir) {
|
|
|
36
36
|
gen: {
|
|
37
37
|
enabled: true,
|
|
38
38
|
formats: ["markdown"],
|
|
39
|
-
llmsTxt:
|
|
39
|
+
llmsTxt: true,
|
|
40
40
|
readmeSync: false
|
|
41
41
|
}
|
|
42
42
|
};
|
|
@@ -190,6 +190,9 @@ function parseTSDoc(rawComment, startLine) {
|
|
|
190
190
|
if (comment.modifierTagSet.hasTag(StandardTags.alpha)) {
|
|
191
191
|
tags.alpha = [];
|
|
192
192
|
}
|
|
193
|
+
if (comment.modifierTagSet.hasTag(StandardTags.packageDocumentation)) {
|
|
194
|
+
tags.packageDocumentation = [];
|
|
195
|
+
}
|
|
193
196
|
let deprecated;
|
|
194
197
|
if (comment.deprecatedBlock) {
|
|
195
198
|
deprecated = renderBlock(comment.deprecatedBlock).trim() || "true";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/types.ts","../src/visibility.ts","../src/walker.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { type ForgeConfig, Visibility } from \"./types.js\";\n\n/**\n * Constructs a sensible default {@link ForgeConfig} rooted at `rootDir`.\n *\n * @param rootDir - Absolute path to the project root.\n * @returns A fully-populated default configuration.\n * @public\n */\nexport function defaultConfig(rootDir: string): ForgeConfig {\n\treturn {\n\t\trootDir,\n\t\ttsconfig: join(rootDir, \"tsconfig.json\"),\n\t\toutDir: join(rootDir, \"docs\"),\n\t\tenforce: {\n\t\t\tenabled: true,\n\t\t\tminVisibility: Visibility.Public,\n\t\t\tstrict: false,\n\t\t},\n\t\tdoctest: {\n\t\t\tenabled: true,\n\t\t\tcacheDir: join(rootDir, \".cache\", \"doctest\"),\n\t\t},\n\t\tapi: {\n\t\t\tenabled: false,\n\t\t\topenapi: false,\n\t\t\topenapiPath: join(rootDir, \"docs\", \"openapi.json\"),\n\t\t},\n\t\tgen: {\n\t\t\tenabled: true,\n\t\t\tformats: [\"markdown\"],\n\t\t\tllmsTxt: false,\n\t\t\treadmeSync: false,\n\t\t},\n\t};\n}\n\n/**\n * Merges a partial user config with the defaults so every field is present.\n *\n * @param rootDir - Absolute path to the project root.\n * @param partial - Partial config from the user's config file.\n * @returns A fully-populated {@link ForgeConfig}.\n * @internal\n */\nfunction mergeWithDefaults(rootDir: string, partial: Partial<ForgeConfig>): ForgeConfig {\n\tconst defaults = defaultConfig(rootDir);\n\treturn {\n\t\t...defaults,\n\t\t...partial,\n\t\tenforce: { ...defaults.enforce, ...partial.enforce },\n\t\tdoctest: { ...defaults.doctest, ...partial.doctest },\n\t\tapi: { ...defaults.api, ...partial.api },\n\t\tgen: { ...defaults.gen, ...partial.gen },\n\t};\n}\n\n/**\n * Attempts to load a TypeScript or JavaScript config file via dynamic import.\n *\n * @param filePath - Absolute path to the config file.\n * @returns The default export of the config module, or `null` on failure.\n * @internal\n */\nasync function loadModuleConfig(filePath: string): Promise<Partial<ForgeConfig> | null> {\n\ttry {\n\t\tconst fileUrl = pathToFileURL(filePath).href;\n\t\tconst mod = (await import(fileUrl)) as {\n\t\t\tdefault?: Partial<ForgeConfig>;\n\t\t};\n\t\treturn mod.default ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Minimal shape of a `package.json` file relevant to forge-ts config loading.\n * @internal\n */\ninterface PackageJson {\n\tname?: string;\n\tversion?: string;\n\t\"forge-ts\"?: Partial<ForgeConfig>;\n}\n\n/**\n * Attempts to read the `\"forge-ts\"` key from a `package.json` file.\n *\n * @param pkgPath - Absolute path to `package.json`.\n * @returns The value of the `\"forge-ts\"` key, or `null` if absent.\n * @internal\n */\nasync function loadPackageJsonConfig(pkgPath: string): Promise<Partial<ForgeConfig> | null> {\n\ttry {\n\t\tconst raw = await readFile(pkgPath, \"utf8\");\n\t\tconst pkg = JSON.parse(raw) as PackageJson;\n\t\tconst key = pkg[\"forge-ts\"];\n\t\tif (key) {\n\t\t\treturn key;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Loads the forge-ts configuration for a project.\n *\n * Resolution order:\n * 1. `<rootDir>/forge-ts.config.ts`\n * 2. `<rootDir>/forge-ts.config.js`\n * 3. `\"forge-ts\"` key inside `<rootDir>/package.json`\n * 4. Built-in defaults (returned when none of the above is found)\n *\n * @param rootDir - The project root to search for config. Defaults to `process.cwd()`.\n * @returns A fully-resolved {@link ForgeConfig}.\n * @public\n */\nexport async function loadConfig(rootDir?: string): Promise<ForgeConfig> {\n\tconst root = resolve(rootDir ?? process.cwd());\n\n\tconst candidates = [join(root, \"forge-ts.config.ts\"), join(root, \"forge-ts.config.js\")];\n\n\tfor (const candidate of candidates) {\n\t\tif (existsSync(candidate)) {\n\t\t\tconst partial = await loadModuleConfig(candidate);\n\t\t\tif (partial) {\n\t\t\t\treturn mergeWithDefaults(root, partial);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst pkgPath = join(root, \"package.json\");\n\tif (existsSync(pkgPath)) {\n\t\tconst partial = await loadPackageJsonConfig(pkgPath);\n\t\tif (partial) {\n\t\t\treturn mergeWithDefaults(root, partial);\n\t\t}\n\t}\n\n\treturn defaultConfig(root);\n}\n","/**\n * Visibility levels for exported symbols.\n * Derived from TSDoc release tags (@public, @beta, @internal).\n * @public\n */\nexport enum Visibility {\n\tPublic = \"public\",\n\tBeta = \"beta\",\n\tInternal = \"internal\",\n\tPrivate = \"private\",\n}\n\n/**\n * A single extracted and annotated symbol from the TypeScript AST.\n * @public\n */\nexport interface ForgeSymbol {\n\t/** The declared name of the symbol. */\n\tname: string;\n\t/** The syntactic kind of the symbol. */\n\tkind: \"function\" | \"class\" | \"interface\" | \"type\" | \"enum\" | \"variable\" | \"method\" | \"property\";\n\t/** Resolved visibility from TSDoc release tags. */\n\tvisibility: Visibility;\n\t/** Absolute path to the source file. */\n\tfilePath: string;\n\t/** 1-based line number of the declaration. */\n\tline: number;\n\t/** 0-based column of the declaration. */\n\tcolumn: number;\n\t/** Parsed TSDoc documentation, if present. */\n\tdocumentation?: {\n\t\tsummary?: string;\n\t\tparams?: Array<{ name: string; description: string; type?: string }>;\n\t\treturns?: { description: string; type?: string };\n\t\tthrows?: Array<{ type?: string; description: string }>;\n\t\texamples?: Array<{ code: string; language: string; line: number }>;\n\t\ttags?: Record<string, string[]>;\n\t\tdeprecated?: string;\n\t};\n\t/** Human-readable type signature of the symbol. */\n\tsignature?: string;\n\t/** Child symbols (e.g., class members, enum values). */\n\tchildren?: ForgeSymbol[];\n\t/** Whether this symbol is part of the public module exports. */\n\texported: boolean;\n}\n\n/**\n * Full configuration for a forge-ts run.\n * Loaded from forge-ts.config.ts or the \"forge-ts\" key in package.json.\n * @public\n */\nexport interface ForgeConfig {\n\t/** Root directory of the project. */\n\trootDir: string;\n\t/** Path to the tsconfig.json to compile against. */\n\ttsconfig: string;\n\t/** Output directory for generated files. */\n\toutDir: string;\n\t/** Enforce TSDoc on all public exports. */\n\tenforce: {\n\t\tenabled: boolean;\n\t\t/** Minimum visibility level to enforce documentation on. */\n\t\tminVisibility: Visibility;\n\t\t/** Fail on warnings rather than only on errors. */\n\t\tstrict: boolean;\n\t};\n\t/** DocTest configuration. */\n\tdoctest: {\n\t\tenabled: boolean;\n\t\t/** Cache directory for virtual test files. */\n\t\tcacheDir: string;\n\t};\n\t/** API generation configuration. */\n\tapi: {\n\t\tenabled: boolean;\n\t\t/** Generate an OpenAPI spec from exported HTTP handlers. */\n\t\topenapi: boolean;\n\t\t/** Output path for the OpenAPI spec file. */\n\t\topenapiPath: string;\n\t};\n\t/** Output generation configuration. */\n\tgen: {\n\t\tenabled: boolean;\n\t\t/** Output formats to generate. */\n\t\tformats: Array<\"markdown\" | \"mdx\">;\n\t\t/** Generate an llms.txt companion file. */\n\t\tllmsTxt: boolean;\n\t\t/** Synchronise summaries back into README.md. */\n\t\treadmeSync: boolean;\n\t\t/** Static site generator to target for output format. */\n\t\tssgTarget?: \"docusaurus\" | \"mintlify\" | \"nextra\" | \"vitepress\";\n\t};\n}\n\n/**\n * The result of a forge-ts compilation pass.\n * @public\n */\nexport interface ForgeResult {\n\t/** Whether the run succeeded without errors. */\n\tsuccess: boolean;\n\t/** All symbols extracted during this run. */\n\tsymbols: ForgeSymbol[];\n\t/** Errors that caused or would cause failure. */\n\terrors: ForgeError[];\n\t/** Non-fatal warnings. */\n\twarnings: ForgeWarning[];\n\t/** Wall-clock duration of the run in milliseconds. */\n\tduration: number;\n}\n\n/**\n * A diagnostic error produced during a forge-ts run.\n * @public\n */\nexport interface ForgeError {\n\t/** Machine-readable error code (e.g. \"E001\"). */\n\tcode: string;\n\t/** Human-readable description of the error. */\n\tmessage: string;\n\t/** Absolute path of the file where the error occurred. */\n\tfilePath: string;\n\t/** 1-based line number. */\n\tline: number;\n\t/** 0-based column. */\n\tcolumn: number;\n}\n\n/**\n * A diagnostic warning produced during a forge-ts run.\n * @public\n */\nexport interface ForgeWarning {\n\t/** Machine-readable warning code (e.g. \"W001\"). */\n\tcode: string;\n\t/** Human-readable description of the warning. */\n\tmessage: string;\n\t/** Absolute path of the file where the warning occurred. */\n\tfilePath: string;\n\t/** 1-based line number. */\n\tline: number;\n\t/** 0-based column. */\n\tcolumn: number;\n}\n","import { type ForgeSymbol, Visibility } from \"./types.js\";\n\n/**\n * Determines the visibility level of a symbol from its TSDoc release tags.\n *\n * The precedence order is:\n * 1. `@internal` → {@link Visibility.Internal}\n * 2. `@beta` → {@link Visibility.Beta}\n * 3. `@public` → {@link Visibility.Public}\n * 4. (no tag) → {@link Visibility.Public} (default for exports)\n *\n * @param tags - The parsed `tags` map from `ForgeSymbol.documentation`.\n * @returns The resolved {@link Visibility} value.\n * @public\n */\nexport function resolveVisibility(tags: Record<string, string[]> | undefined): Visibility {\n\tif (!tags) return Visibility.Public;\n\n\tif (\"internal\" in tags) return Visibility.Internal;\n\tif (\"beta\" in tags) return Visibility.Beta;\n\tif (\"public\" in tags) return Visibility.Public;\n\n\treturn Visibility.Public;\n}\n\n/**\n * Numeric rank used for visibility comparisons.\n * Lower numbers are more restrictive.\n * @internal\n */\nconst VISIBILITY_RANK: Record<Visibility, number> = {\n\t[Visibility.Public]: 0,\n\t[Visibility.Beta]: 1,\n\t[Visibility.Internal]: 2,\n\t[Visibility.Private]: 3,\n};\n\n/**\n * Returns whether `candidate` meets or exceeds the required minimum visibility.\n *\n * \"Meets\" means the symbol is at least as visible as `minVisibility`.\n * For example, `Public` meets a minimum of `Public`, but `Internal` does not.\n *\n * @param candidate - The visibility of the symbol being tested.\n * @param minVisibility - The minimum visibility threshold.\n * @returns `true` if `candidate` is at least as visible as `minVisibility`.\n * @public\n */\nexport function meetsVisibility(candidate: Visibility, minVisibility: Visibility): boolean {\n\treturn VISIBILITY_RANK[candidate] <= VISIBILITY_RANK[minVisibility];\n}\n\n/**\n * Filters an array of {@link ForgeSymbol} objects to only include symbols\n * whose visibility meets or exceeds `minVisibility`.\n *\n * @param symbols - The full list of symbols to filter.\n * @param minVisibility - The minimum visibility threshold to keep.\n * @returns A new array containing only symbols that pass the visibility check.\n * @public\n */\nexport function filterByVisibility(\n\tsymbols: ForgeSymbol[],\n\tminVisibility: Visibility,\n): ForgeSymbol[] {\n\treturn symbols.filter((s) => meetsVisibility(s.visibility, minVisibility));\n}\n","import { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport {\n\ttype DocBlock,\n\ttype DocCodeSpan,\n\ttype DocComment,\n\ttype DocFencedCode,\n\ttype DocNode,\n\tDocNodeKind,\n\ttype DocParagraph,\n\ttype DocPlainText,\n\ttype DocSection,\n\tStandardTags,\n\tTSDocConfiguration,\n\tTSDocParser,\n} from \"@microsoft/tsdoc\";\nimport ts from \"typescript\";\nimport type { ForgeConfig, ForgeSymbol } from \"./types.js\";\nimport { resolveVisibility } from \"./visibility.js\";\n\n// ---------------------------------------------------------------------------\n// Public API surface\n// ---------------------------------------------------------------------------\n\n/**\n * The return type of {@link createWalker}.\n * @public\n */\nexport interface ASTWalker {\n\t/**\n\t * Walk all source files referenced by the configured tsconfig and return\n\t * one {@link ForgeSymbol} per exported declaration.\n\t */\n\twalk(): ForgeSymbol[];\n}\n\n// ---------------------------------------------------------------------------\n// TSDoc helpers\n// ---------------------------------------------------------------------------\n\n/** Render inline nodes (PlainText, CodeSpan, SoftBreak) to a plain string. @internal */\nfunction renderInlineNodes(nodes: readonly DocNode[]): string {\n\tconst parts: string[] = [];\n\tfor (const node of nodes) {\n\t\tswitch (node.kind) {\n\t\t\tcase DocNodeKind.PlainText:\n\t\t\t\tparts.push((node as DocPlainText).text);\n\t\t\t\tbreak;\n\t\t\tcase DocNodeKind.CodeSpan:\n\t\t\t\tparts.push(`\\`${(node as DocCodeSpan).code}\\``);\n\t\t\t\tbreak;\n\t\t\tcase DocNodeKind.SoftBreak:\n\t\t\t\tparts.push(\" \");\n\t\t\t\tbreak;\n\t\t\tcase DocNodeKind.Paragraph:\n\t\t\t\t// Recurse into paragraph nodes to extract nested text\n\t\t\t\tparts.push(renderInlineNodes((node as DocParagraph).nodes));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn parts.join(\"\");\n}\n\n/** Render a `DocSection` (or similar node) to a plain string. @internal */\nfunction renderDocSection(section: DocSection | undefined): string {\n\tif (!section) return \"\";\n\treturn renderInlineNodes(section.nodes).trim();\n}\n\n/** Render a `DocBlock`'s content to a plain string. @internal */\nfunction renderBlock(block: DocBlock): string {\n\treturn renderDocSection(block.content);\n}\n\n/** Extract all `@example` fenced code blocks from a parsed comment. @internal */\nfunction extractExamples(\n\tcomment: DocComment,\n\tstartLine: number,\n): Array<{ code: string; language: string; line: number }> {\n\tconst examples: Array<{ code: string; language: string; line: number }> = [];\n\n\tfor (const block of comment.customBlocks) {\n\t\tif (block.blockTag.tagName.toLowerCase() !== \"@example\") continue;\n\n\t\tfor (const node of block.content.nodes) {\n\t\t\tif (node.kind === DocNodeKind.FencedCode) {\n\t\t\t\tconst fenced = node as DocFencedCode;\n\t\t\t\texamples.push({\n\t\t\t\t\tcode: fenced.code,\n\t\t\t\t\tlanguage: fenced.language || \"typescript\",\n\t\t\t\t\tline: startLine,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treturn examples;\n}\n\n/** Parse a raw JSDoc/TSDoc comment string into a structured documentation object. @internal */\nfunction parseTSDoc(rawComment: string, startLine: number): ForgeSymbol[\"documentation\"] {\n\tconst configuration = new TSDocConfiguration();\n\tconst parser = new TSDocParser(configuration);\n\tconst result = parser.parseString(rawComment);\n\tconst comment = result.docComment;\n\n\tconst tags: Record<string, string[]> = {};\n\n\t// Release tags\n\tif (comment.modifierTagSet.hasTag(StandardTags.public)) {\n\t\ttags.public = [];\n\t}\n\tif (comment.modifierTagSet.hasTag(StandardTags.beta)) {\n\t\ttags.beta = [];\n\t}\n\tif (comment.modifierTagSet.hasTag(StandardTags.internal)) {\n\t\ttags.internal = [];\n\t}\n\tif (comment.modifierTagSet.hasTag(StandardTags.alpha)) {\n\t\ttags.alpha = [];\n\t}\n\n\t// @deprecated\n\tlet deprecated: string | undefined;\n\tif (comment.deprecatedBlock) {\n\t\tdeprecated = renderBlock(comment.deprecatedBlock).trim() || \"true\";\n\t}\n\n\t// @param blocks\n\tconst params: Array<{ name: string; description: string; type?: string }> = [];\n\tfor (const paramBlock of comment.params.blocks) {\n\t\tparams.push({\n\t\t\tname: paramBlock.parameterName,\n\t\t\tdescription: renderBlock(paramBlock),\n\t\t});\n\t}\n\n\t// @returns block\n\tlet returns: { description: string; type?: string } | undefined;\n\tif (comment.returnsBlock) {\n\t\tconst desc = renderBlock(comment.returnsBlock);\n\t\tif (desc) returns = { description: desc };\n\t}\n\n\t// @throws blocks\n\tconst throws: Array<{ type?: string; description: string }> = [];\n\tfor (const block of comment.customBlocks) {\n\t\tif (block.blockTag.tagName.toLowerCase() === \"@throws\") {\n\t\t\tthrows.push({ description: renderBlock(block) });\n\t\t}\n\t}\n\n\t// @example blocks\n\tconst examples = extractExamples(comment, startLine);\n\n\tconst summary = renderDocSection(comment.summarySection);\n\n\treturn {\n\t\tsummary: summary || undefined,\n\t\tparams: params.length > 0 ? params : undefined,\n\t\treturns,\n\t\tthrows: throws.length > 0 ? throws : undefined,\n\t\texamples: examples.length > 0 ? examples : undefined,\n\t\ttags: Object.keys(tags).length > 0 ? tags : undefined,\n\t\tdeprecated,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// TypeScript AST helpers\n// ---------------------------------------------------------------------------\n\n/** Extract the leading JSDoc comment text for a node. @internal */\nfunction getLeadingComment(node: ts.Node, sourceFile: ts.SourceFile): string | undefined {\n\tconst fullText = sourceFile.getFullText();\n\tconst ranges = ts.getLeadingCommentRanges(fullText, node.getFullStart());\n\tif (!ranges || ranges.length === 0) return undefined;\n\n\t// Take the last leading comment (closest to the declaration)\n\tconst range = ranges[ranges.length - 1];\n\tif (\n\t\trange.kind !== ts.SyntaxKind.MultiLineCommentTrivia ||\n\t\t!fullText.slice(range.pos, range.end).startsWith(\"/**\")\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn fullText.slice(range.pos, range.end);\n}\n\n/** Map a TypeScript `SyntaxKind` to a `ForgeSymbol` kind string. @internal */\nfunction kindToString(kind: ts.SyntaxKind): ForgeSymbol[\"kind\"] | null {\n\tswitch (kind) {\n\t\tcase ts.SyntaxKind.FunctionDeclaration:\n\t\tcase ts.SyntaxKind.ArrowFunction:\n\t\tcase ts.SyntaxKind.FunctionExpression:\n\t\t\treturn \"function\";\n\t\tcase ts.SyntaxKind.ClassDeclaration:\n\t\t\treturn \"class\";\n\t\tcase ts.SyntaxKind.InterfaceDeclaration:\n\t\t\treturn \"interface\";\n\t\tcase ts.SyntaxKind.TypeAliasDeclaration:\n\t\t\treturn \"type\";\n\t\tcase ts.SyntaxKind.EnumDeclaration:\n\t\t\treturn \"enum\";\n\t\tcase ts.SyntaxKind.VariableDeclaration:\n\t\tcase ts.SyntaxKind.VariableStatement:\n\t\t\treturn \"variable\";\n\t\tcase ts.SyntaxKind.MethodDeclaration:\n\t\tcase ts.SyntaxKind.MethodSignature:\n\t\t\treturn \"method\";\n\t\tcase ts.SyntaxKind.PropertyDeclaration:\n\t\tcase ts.SyntaxKind.PropertySignature:\n\t\tcase ts.SyntaxKind.EnumMember:\n\t\t\treturn \"property\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/** Build a human-readable type signature string using the type checker. @internal */\nfunction buildSignature(node: ts.Declaration, checker: ts.TypeChecker): string | undefined {\n\ttry {\n\t\tconst symbol = checker.getSymbolAtLocation((node as ts.NamedDeclaration).name ?? node);\n\t\tif (!symbol) return undefined;\n\t\tconst type = checker.getTypeOfSymbolAtLocation(symbol, node);\n\t\treturn checker.typeToString(type);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Walker implementation\n// ---------------------------------------------------------------------------\n\n/** @internal */\nfunction extractSymbolsFromFile(\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\t_tsdocParser: TSDocParser,\n): ForgeSymbol[] {\n\tconst symbols: ForgeSymbol[] = [];\n\tconst filePath = sourceFile.fileName;\n\n\tfunction visit(node: ts.Node, parentExported: boolean): void {\n\t\tconst isExported =\n\t\t\tparentExported ||\n\t\t\t(ts.getCombinedModifierFlags(node as ts.Declaration) & ts.ModifierFlags.Export) !== 0;\n\n\t\t// Handle export declarations: `export { Foo, Bar }`\n\t\tif (ts.isExportDeclaration(node)) {\n\t\t\tts.forEachChild(node, (child) => visit(child, true));\n\t\t\treturn;\n\t\t}\n\n\t\tconst kind = kindToString(node.kind);\n\n\t\t// Variable statements need special handling: `export const foo = ...`\n\t\tif (ts.isVariableStatement(node)) {\n\t\t\tif (!isExported) {\n\t\t\t\tts.forEachChild(node, (child) => visit(child, false));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const decl of node.declarationList.declarations) {\n\t\t\t\tconst name = decl.name.getText(sourceFile);\n\t\t\t\tconst pos = sourceFile.getLineAndCharacterOfPosition(decl.getStart());\n\t\t\t\tconst rawComment = getLeadingComment(node, sourceFile);\n\t\t\t\tconst documentation = rawComment ? parseTSDoc(rawComment, pos.line + 1) : undefined;\n\t\t\t\tconst tags = documentation?.tags;\n\t\t\t\tconst visibility = resolveVisibility(tags);\n\n\t\t\t\tsymbols.push({\n\t\t\t\t\tname,\n\t\t\t\t\tkind: \"variable\",\n\t\t\t\t\tvisibility,\n\t\t\t\t\tfilePath,\n\t\t\t\t\tline: pos.line + 1,\n\t\t\t\t\tcolumn: pos.character,\n\t\t\t\t\tdocumentation,\n\t\t\t\t\tsignature: buildSignature(decl, checker),\n\t\t\t\t\texported: true,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (kind === null || !isExported) {\n\t\t\tts.forEachChild(node, (child) => visit(child, isExported));\n\t\t\treturn;\n\t\t}\n\n\t\tconst namedNode = node as ts.NamedDeclaration;\n\t\tconst nameNode = namedNode.name;\n\t\tif (!nameNode) {\n\t\t\tts.forEachChild(node, (child) => visit(child, isExported));\n\t\t\treturn;\n\t\t}\n\n\t\tconst name = nameNode.getText(sourceFile);\n\t\tconst pos = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n\t\tconst rawComment = getLeadingComment(node, sourceFile);\n\t\tconst documentation = rawComment ? parseTSDoc(rawComment, pos.line + 1) : undefined;\n\t\tconst tags = documentation?.tags;\n\t\tconst visibility = resolveVisibility(tags);\n\n\t\tconst children: ForgeSymbol[] = [];\n\n\t\t// Walk class members / interface members / enum members\n\t\tif (\n\t\t\tts.isClassDeclaration(node) ||\n\t\t\tts.isInterfaceDeclaration(node) ||\n\t\t\tts.isEnumDeclaration(node)\n\t\t) {\n\t\t\tfor (const member of node.members) {\n\t\t\t\tconst memberKind = kindToString(member.kind);\n\t\t\t\tif (!memberKind) continue;\n\t\t\t\tconst memberName = (member as ts.NamedDeclaration).name?.getText(sourceFile) ?? \"\";\n\t\t\t\tconst memberPos = sourceFile.getLineAndCharacterOfPosition(member.getStart());\n\t\t\t\tconst memberComment = getLeadingComment(member, sourceFile);\n\t\t\t\tconst memberDoc = memberComment ? parseTSDoc(memberComment, memberPos.line + 1) : undefined;\n\t\t\t\tconst memberTags = memberDoc?.tags;\n\t\t\t\tconst memberVisibility = resolveVisibility(memberTags);\n\n\t\t\t\tchildren.push({\n\t\t\t\t\tname: memberName,\n\t\t\t\t\tkind: memberKind,\n\t\t\t\t\tvisibility: memberVisibility,\n\t\t\t\t\tfilePath,\n\t\t\t\t\tline: memberPos.line + 1,\n\t\t\t\t\tcolumn: memberPos.character,\n\t\t\t\t\tdocumentation: memberDoc,\n\t\t\t\t\tsignature: buildSignature(member as ts.Declaration, checker),\n\t\t\t\t\texported: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tsymbols.push({\n\t\t\tname,\n\t\t\tkind,\n\t\t\tvisibility,\n\t\t\tfilePath,\n\t\t\tline: pos.line + 1,\n\t\t\tcolumn: pos.character,\n\t\t\tdocumentation,\n\t\t\tsignature: buildSignature(namedNode as ts.Declaration, checker),\n\t\t\tchildren: children.length > 0 ? children : undefined,\n\t\t\texported: isExported,\n\t\t});\n\t}\n\n\tts.forEachChild(sourceFile, (node) => visit(node, false));\n\treturn symbols;\n}\n\n/**\n * Creates an {@link ASTWalker} configured for the given forge config.\n *\n * The walker uses the TypeScript Compiler API to create a `ts.Program` from\n * the project's tsconfig, then visits every source file to extract exported\n * declarations. TSDoc comments are parsed with `@microsoft/tsdoc` to\n * populate the `documentation` field on each {@link ForgeSymbol}.\n *\n * @param config - The resolved {@link ForgeConfig} for the project.\n * @returns An {@link ASTWalker} instance whose `walk()` method performs the extraction.\n * @public\n */\nexport function createWalker(config: ForgeConfig): ASTWalker {\n\treturn {\n\t\twalk(): ForgeSymbol[] {\n\t\t\t// Load tsconfig\n\t\t\tconst tsconfigPath = resolve(config.tsconfig);\n\t\t\tconst configFile = ts.readConfigFile(tsconfigPath, (path) => readFileSync(path, \"utf8\"));\n\n\t\t\tif (configFile.error) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to read tsconfig at ${tsconfigPath}: ${ts.flattenDiagnosticMessageText(configFile.error.messageText, \"\\n\")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parsedCommandLine = ts.parseJsonConfigFileContent(\n\t\t\t\tconfigFile.config,\n\t\t\t\tts.sys,\n\t\t\t\tresolve(config.rootDir),\n\t\t\t);\n\n\t\t\tconst program = ts.createProgram({\n\t\t\t\trootNames: parsedCommandLine.fileNames,\n\t\t\t\toptions: parsedCommandLine.options,\n\t\t\t});\n\n\t\t\tconst checker = program.getTypeChecker();\n\n\t\t\tconst tsdocConfiguration = new TSDocConfiguration();\n\t\t\tconst tsdocParser = new TSDocParser(tsdocConfiguration);\n\n\t\t\tconst allSymbols: ForgeSymbol[] = [];\n\n\t\t\tfor (const sourceFile of program.getSourceFiles()) {\n\t\t\t\t// Skip declaration files and node_modules\n\t\t\t\tif (sourceFile.isDeclarationFile || sourceFile.fileName.includes(\"node_modules\")) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst fileSymbols = extractSymbolsFromFile(sourceFile, checker, tsdocParser);\n\t\t\t\tallSymbols.push(...fileSymbols);\n\t\t\t}\n\n\t\t\treturn allSymbols;\n\t\t},\n\t};\n}\n"],"mappings":"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","names":["Visibility","resolve","name","pos","rawComment","documentation","tags","visibility","resolve"]}
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/types.ts","../src/visibility.ts","../src/walker.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join, resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { type ForgeConfig, Visibility } from \"./types.js\";\n\n/**\n * Constructs a sensible default {@link ForgeConfig} rooted at `rootDir`.\n *\n * @param rootDir - Absolute path to the project root.\n * @returns A fully-populated default configuration.\n * @example\n * ```typescript\n * import { defaultConfig } from \"@forge-ts/core\";\n * const config = defaultConfig(\"/path/to/project\");\n * console.log(config.enforce.enabled); // true\n * ```\n * @public\n */\nexport function defaultConfig(rootDir: string): ForgeConfig {\n\treturn {\n\t\trootDir,\n\t\ttsconfig: join(rootDir, \"tsconfig.json\"),\n\t\toutDir: join(rootDir, \"docs\"),\n\t\tenforce: {\n\t\t\tenabled: true,\n\t\t\tminVisibility: Visibility.Public,\n\t\t\tstrict: false,\n\t\t},\n\t\tdoctest: {\n\t\t\tenabled: true,\n\t\t\tcacheDir: join(rootDir, \".cache\", \"doctest\"),\n\t\t},\n\t\tapi: {\n\t\t\tenabled: false,\n\t\t\topenapi: false,\n\t\t\topenapiPath: join(rootDir, \"docs\", \"openapi.json\"),\n\t\t},\n\t\tgen: {\n\t\t\tenabled: true,\n\t\t\tformats: [\"markdown\"],\n\t\t\tllmsTxt: true,\n\t\t\treadmeSync: false,\n\t\t},\n\t};\n}\n\n/**\n * Merges a partial user config with the defaults so every field is present.\n *\n * @param rootDir - Absolute path to the project root.\n * @param partial - Partial config from the user's config file.\n * @returns A fully-populated {@link ForgeConfig}.\n * @internal\n */\nfunction mergeWithDefaults(rootDir: string, partial: Partial<ForgeConfig>): ForgeConfig {\n\tconst defaults = defaultConfig(rootDir);\n\treturn {\n\t\t...defaults,\n\t\t...partial,\n\t\tenforce: { ...defaults.enforce, ...partial.enforce },\n\t\tdoctest: { ...defaults.doctest, ...partial.doctest },\n\t\tapi: { ...defaults.api, ...partial.api },\n\t\tgen: { ...defaults.gen, ...partial.gen },\n\t};\n}\n\n/**\n * Attempts to load a TypeScript or JavaScript config file via dynamic import.\n *\n * @param filePath - Absolute path to the config file.\n * @returns The default export of the config module, or `null` on failure.\n * @internal\n */\nasync function loadModuleConfig(filePath: string): Promise<Partial<ForgeConfig> | null> {\n\ttry {\n\t\tconst fileUrl = pathToFileURL(filePath).href;\n\t\tconst mod = (await import(fileUrl)) as {\n\t\t\tdefault?: Partial<ForgeConfig>;\n\t\t};\n\t\treturn mod.default ?? null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Minimal shape of a `package.json` file relevant to forge-ts config loading.\n * @internal\n */\ninterface PackageJson {\n\tname?: string;\n\tversion?: string;\n\t\"forge-ts\"?: Partial<ForgeConfig>;\n}\n\n/**\n * Attempts to read the `\"forge-ts\"` key from a `package.json` file.\n *\n * @param pkgPath - Absolute path to `package.json`.\n * @returns The value of the `\"forge-ts\"` key, or `null` if absent.\n * @internal\n */\nasync function loadPackageJsonConfig(pkgPath: string): Promise<Partial<ForgeConfig> | null> {\n\ttry {\n\t\tconst raw = await readFile(pkgPath, \"utf8\");\n\t\tconst pkg = JSON.parse(raw) as PackageJson;\n\t\tconst key = pkg[\"forge-ts\"];\n\t\tif (key) {\n\t\t\treturn key;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Loads the forge-ts configuration for a project.\n *\n * Resolution order:\n * 1. `<rootDir>/forge-ts.config.ts`\n * 2. `<rootDir>/forge-ts.config.js`\n * 3. `\"forge-ts\"` key inside `<rootDir>/package.json`\n * 4. Built-in defaults (returned when none of the above is found)\n *\n * @param rootDir - The project root to search for config. Defaults to `process.cwd()`.\n * @returns A fully-resolved {@link ForgeConfig}.\n * @example\n * ```typescript\n * import { loadConfig } from \"@forge-ts/core\";\n * const config = await loadConfig(\"/path/to/project\");\n * // config is fully resolved with defaults\n * ```\n * @public\n */\nexport async function loadConfig(rootDir?: string): Promise<ForgeConfig> {\n\tconst root = resolve(rootDir ?? process.cwd());\n\n\tconst candidates = [join(root, \"forge-ts.config.ts\"), join(root, \"forge-ts.config.js\")];\n\n\tfor (const candidate of candidates) {\n\t\tif (existsSync(candidate)) {\n\t\t\tconst partial = await loadModuleConfig(candidate);\n\t\t\tif (partial) {\n\t\t\t\treturn mergeWithDefaults(root, partial);\n\t\t\t}\n\t\t}\n\t}\n\n\tconst pkgPath = join(root, \"package.json\");\n\tif (existsSync(pkgPath)) {\n\t\tconst partial = await loadPackageJsonConfig(pkgPath);\n\t\tif (partial) {\n\t\t\treturn mergeWithDefaults(root, partial);\n\t\t}\n\t}\n\n\treturn defaultConfig(root);\n}\n","/**\n * Visibility levels for exported symbols.\n * Derived from TSDoc release tags (@public, @beta, @internal).\n * @public\n */\nexport enum Visibility {\n\tPublic = \"public\",\n\tBeta = \"beta\",\n\tInternal = \"internal\",\n\tPrivate = \"private\",\n}\n\n/**\n * A single extracted and annotated symbol from the TypeScript AST.\n * @public\n */\nexport interface ForgeSymbol {\n\t/** The declared name of the symbol. */\n\tname: string;\n\t/** The syntactic kind of the symbol. */\n\tkind: \"function\" | \"class\" | \"interface\" | \"type\" | \"enum\" | \"variable\" | \"method\" | \"property\";\n\t/** Resolved visibility from TSDoc release tags. */\n\tvisibility: Visibility;\n\t/** Absolute path to the source file. */\n\tfilePath: string;\n\t/** 1-based line number of the declaration. */\n\tline: number;\n\t/** 0-based column of the declaration. */\n\tcolumn: number;\n\t/** Parsed TSDoc documentation, if present. */\n\tdocumentation?: {\n\t\tsummary?: string;\n\t\tparams?: Array<{ name: string; description: string; type?: string }>;\n\t\treturns?: { description: string; type?: string };\n\t\tthrows?: Array<{ type?: string; description: string }>;\n\t\texamples?: Array<{ code: string; language: string; line: number }>;\n\t\ttags?: Record<string, string[]>;\n\t\tdeprecated?: string;\n\t};\n\t/** Human-readable type signature of the symbol. */\n\tsignature?: string;\n\t/** Child symbols (e.g., class members, enum values). */\n\tchildren?: ForgeSymbol[];\n\t/** Whether this symbol is part of the public module exports. */\n\texported: boolean;\n}\n\n/**\n * Full configuration for a forge-ts run.\n * Loaded from forge-ts.config.ts or the \"forge-ts\" key in package.json.\n * @public\n */\nexport interface ForgeConfig {\n\t/** Root directory of the project. */\n\trootDir: string;\n\t/** Path to the tsconfig.json to compile against. */\n\ttsconfig: string;\n\t/** Output directory for generated files. */\n\toutDir: string;\n\t/** Enforce TSDoc on all public exports. */\n\tenforce: {\n\t\tenabled: boolean;\n\t\t/** Minimum visibility level to enforce documentation on. */\n\t\tminVisibility: Visibility;\n\t\t/** Fail on warnings rather than only on errors. */\n\t\tstrict: boolean;\n\t};\n\t/** DocTest configuration. */\n\tdoctest: {\n\t\tenabled: boolean;\n\t\t/** Cache directory for virtual test files. */\n\t\tcacheDir: string;\n\t};\n\t/** API generation configuration. */\n\tapi: {\n\t\tenabled: boolean;\n\t\t/** Generate an OpenAPI spec from exported HTTP handlers. */\n\t\topenapi: boolean;\n\t\t/** Output path for the OpenAPI spec file. */\n\t\topenapiPath: string;\n\t};\n\t/** Output generation configuration. */\n\tgen: {\n\t\tenabled: boolean;\n\t\t/** Output formats to generate. */\n\t\tformats: Array<\"markdown\" | \"mdx\">;\n\t\t/** Generate an llms.txt companion file. */\n\t\tllmsTxt: boolean;\n\t\t/** Synchronise summaries back into README.md. */\n\t\treadmeSync: boolean;\n\t\t/** Static site generator to target for output format. */\n\t\tssgTarget?: \"docusaurus\" | \"mintlify\" | \"nextra\" | \"vitepress\";\n\t};\n}\n\n/**\n * The result of a forge-ts compilation pass.\n * @public\n */\nexport interface ForgeResult {\n\t/** Whether the run succeeded without errors. */\n\tsuccess: boolean;\n\t/** All symbols extracted during this run. */\n\tsymbols: ForgeSymbol[];\n\t/** Errors that caused or would cause failure. */\n\terrors: ForgeError[];\n\t/** Non-fatal warnings. */\n\twarnings: ForgeWarning[];\n\t/** Wall-clock duration of the run in milliseconds. */\n\tduration: number;\n}\n\n/**\n * A diagnostic error produced during a forge-ts run.\n * @public\n */\nexport interface ForgeError {\n\t/** Machine-readable error code (e.g. \"E001\"). */\n\tcode: string;\n\t/** Human-readable description of the error. */\n\tmessage: string;\n\t/** Absolute path of the file where the error occurred. */\n\tfilePath: string;\n\t/** 1-based line number. */\n\tline: number;\n\t/** 0-based column. */\n\tcolumn: number;\n\t/** Suggested fix for the agent — exact TSDoc block to add. */\n\tsuggestedFix?: string;\n\t/** The symbol name that needs fixing. */\n\tsymbolName?: string;\n\t/** The symbol kind (function, class, interface, etc.). */\n\tsymbolKind?: string;\n}\n\n/**\n * A diagnostic warning produced during a forge-ts run.\n * @public\n */\nexport interface ForgeWarning {\n\t/** Machine-readable warning code (e.g. \"W001\"). */\n\tcode: string;\n\t/** Human-readable description of the warning. */\n\tmessage: string;\n\t/** Absolute path of the file where the warning occurred. */\n\tfilePath: string;\n\t/** 1-based line number. */\n\tline: number;\n\t/** 0-based column. */\n\tcolumn: number;\n}\n","import { type ForgeSymbol, Visibility } from \"./types.js\";\n\n/**\n * Determines the visibility level of a symbol from its TSDoc release tags.\n *\n * The precedence order is:\n * 1. `@internal` → {@link Visibility.Internal}\n * 2. `@beta` → {@link Visibility.Beta}\n * 3. `@public` → {@link Visibility.Public}\n * 4. (no tag) → {@link Visibility.Public} (default for exports)\n *\n * @param tags - The parsed `tags` map from `ForgeSymbol.documentation`.\n * @returns The resolved {@link Visibility} value.\n * @example\n * ```typescript\n * import { resolveVisibility } from \"@forge-ts/core\";\n * const vis = resolveVisibility({ internal: [] });\n * // vis === Visibility.Internal\n * ```\n * @public\n */\nexport function resolveVisibility(tags: Record<string, string[]> | undefined): Visibility {\n\tif (!tags) return Visibility.Public;\n\n\tif (\"internal\" in tags) return Visibility.Internal;\n\tif (\"beta\" in tags) return Visibility.Beta;\n\tif (\"public\" in tags) return Visibility.Public;\n\n\treturn Visibility.Public;\n}\n\n/**\n * Numeric rank used for visibility comparisons.\n * Lower numbers are more restrictive.\n * @internal\n */\nconst VISIBILITY_RANK: Record<Visibility, number> = {\n\t[Visibility.Public]: 0,\n\t[Visibility.Beta]: 1,\n\t[Visibility.Internal]: 2,\n\t[Visibility.Private]: 3,\n};\n\n/**\n * Returns whether `candidate` meets or exceeds the required minimum visibility.\n *\n * \"Meets\" means the symbol is at least as visible as `minVisibility`.\n * For example, `Public` meets a minimum of `Public`, but `Internal` does not.\n *\n * @param candidate - The visibility of the symbol being tested.\n * @param minVisibility - The minimum visibility threshold.\n * @returns `true` if `candidate` is at least as visible as `minVisibility`.\n * @example\n * ```typescript\n * import { meetsVisibility, Visibility } from \"@forge-ts/core\";\n * meetsVisibility(Visibility.Public, Visibility.Public); // true\n * meetsVisibility(Visibility.Internal, Visibility.Public); // false\n * ```\n * @public\n */\nexport function meetsVisibility(candidate: Visibility, minVisibility: Visibility): boolean {\n\treturn VISIBILITY_RANK[candidate] <= VISIBILITY_RANK[minVisibility];\n}\n\n/**\n * Filters an array of {@link ForgeSymbol} objects to only include symbols\n * whose visibility meets or exceeds `minVisibility`.\n *\n * @param symbols - The full list of symbols to filter.\n * @param minVisibility - The minimum visibility threshold to keep.\n * @returns A new array containing only symbols that pass the visibility check.\n * @example\n * ```typescript\n * import { filterByVisibility, Visibility } from \"@forge-ts/core\";\n * const publicOnly = filterByVisibility(symbols, Visibility.Public);\n * ```\n * @public\n */\nexport function filterByVisibility(\n\tsymbols: ForgeSymbol[],\n\tminVisibility: Visibility,\n): ForgeSymbol[] {\n\treturn symbols.filter((s) => meetsVisibility(s.visibility, minVisibility));\n}\n","import { readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport {\n\ttype DocBlock,\n\ttype DocCodeSpan,\n\ttype DocComment,\n\ttype DocFencedCode,\n\ttype DocNode,\n\tDocNodeKind,\n\ttype DocParagraph,\n\ttype DocPlainText,\n\ttype DocSection,\n\tStandardTags,\n\tTSDocConfiguration,\n\tTSDocParser,\n} from \"@microsoft/tsdoc\";\nimport ts from \"typescript\";\nimport type { ForgeConfig, ForgeSymbol } from \"./types.js\";\nimport { resolveVisibility } from \"./visibility.js\";\n\n// ---------------------------------------------------------------------------\n// Public API surface\n// ---------------------------------------------------------------------------\n\n/**\n * The return type of {@link createWalker}.\n * @public\n */\nexport interface ASTWalker {\n\t/**\n\t * Walk all source files referenced by the configured tsconfig and return\n\t * one {@link ForgeSymbol} per exported declaration.\n\t */\n\twalk(): ForgeSymbol[];\n}\n\n// ---------------------------------------------------------------------------\n// TSDoc helpers\n// ---------------------------------------------------------------------------\n\n/** Render inline nodes (PlainText, CodeSpan, SoftBreak) to a plain string. @internal */\nfunction renderInlineNodes(nodes: readonly DocNode[]): string {\n\tconst parts: string[] = [];\n\tfor (const node of nodes) {\n\t\tswitch (node.kind) {\n\t\t\tcase DocNodeKind.PlainText:\n\t\t\t\tparts.push((node as DocPlainText).text);\n\t\t\t\tbreak;\n\t\t\tcase DocNodeKind.CodeSpan:\n\t\t\t\tparts.push(`\\`${(node as DocCodeSpan).code}\\``);\n\t\t\t\tbreak;\n\t\t\tcase DocNodeKind.SoftBreak:\n\t\t\t\tparts.push(\" \");\n\t\t\t\tbreak;\n\t\t\tcase DocNodeKind.Paragraph:\n\t\t\t\t// Recurse into paragraph nodes to extract nested text\n\t\t\t\tparts.push(renderInlineNodes((node as DocParagraph).nodes));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn parts.join(\"\");\n}\n\n/** Render a `DocSection` (or similar node) to a plain string. @internal */\nfunction renderDocSection(section: DocSection | undefined): string {\n\tif (!section) return \"\";\n\treturn renderInlineNodes(section.nodes).trim();\n}\n\n/** Render a `DocBlock`'s content to a plain string. @internal */\nfunction renderBlock(block: DocBlock): string {\n\treturn renderDocSection(block.content);\n}\n\n/** Extract all `@example` fenced code blocks from a parsed comment. @internal */\nfunction extractExamples(\n\tcomment: DocComment,\n\tstartLine: number,\n): Array<{ code: string; language: string; line: number }> {\n\tconst examples: Array<{ code: string; language: string; line: number }> = [];\n\n\tfor (const block of comment.customBlocks) {\n\t\tif (block.blockTag.tagName.toLowerCase() !== \"@example\") continue;\n\n\t\tfor (const node of block.content.nodes) {\n\t\t\tif (node.kind === DocNodeKind.FencedCode) {\n\t\t\t\tconst fenced = node as DocFencedCode;\n\t\t\t\texamples.push({\n\t\t\t\t\tcode: fenced.code,\n\t\t\t\t\tlanguage: fenced.language || \"typescript\",\n\t\t\t\t\tline: startLine,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treturn examples;\n}\n\n/** Parse a raw JSDoc/TSDoc comment string into a structured documentation object. @internal */\nfunction parseTSDoc(rawComment: string, startLine: number): ForgeSymbol[\"documentation\"] {\n\tconst configuration = new TSDocConfiguration();\n\tconst parser = new TSDocParser(configuration);\n\tconst result = parser.parseString(rawComment);\n\tconst comment = result.docComment;\n\n\tconst tags: Record<string, string[]> = {};\n\n\t// Release tags\n\tif (comment.modifierTagSet.hasTag(StandardTags.public)) {\n\t\ttags.public = [];\n\t}\n\tif (comment.modifierTagSet.hasTag(StandardTags.beta)) {\n\t\ttags.beta = [];\n\t}\n\tif (comment.modifierTagSet.hasTag(StandardTags.internal)) {\n\t\ttags.internal = [];\n\t}\n\tif (comment.modifierTagSet.hasTag(StandardTags.alpha)) {\n\t\ttags.alpha = [];\n\t}\n\tif (comment.modifierTagSet.hasTag(StandardTags.packageDocumentation)) {\n\t\ttags.packageDocumentation = [];\n\t}\n\n\t// @deprecated\n\tlet deprecated: string | undefined;\n\tif (comment.deprecatedBlock) {\n\t\tdeprecated = renderBlock(comment.deprecatedBlock).trim() || \"true\";\n\t}\n\n\t// @param blocks\n\tconst params: Array<{ name: string; description: string; type?: string }> = [];\n\tfor (const paramBlock of comment.params.blocks) {\n\t\tparams.push({\n\t\t\tname: paramBlock.parameterName,\n\t\t\tdescription: renderBlock(paramBlock),\n\t\t});\n\t}\n\n\t// @returns block\n\tlet returns: { description: string; type?: string } | undefined;\n\tif (comment.returnsBlock) {\n\t\tconst desc = renderBlock(comment.returnsBlock);\n\t\tif (desc) returns = { description: desc };\n\t}\n\n\t// @throws blocks\n\tconst throws: Array<{ type?: string; description: string }> = [];\n\tfor (const block of comment.customBlocks) {\n\t\tif (block.blockTag.tagName.toLowerCase() === \"@throws\") {\n\t\t\tthrows.push({ description: renderBlock(block) });\n\t\t}\n\t}\n\n\t// @example blocks\n\tconst examples = extractExamples(comment, startLine);\n\n\tconst summary = renderDocSection(comment.summarySection);\n\n\treturn {\n\t\tsummary: summary || undefined,\n\t\tparams: params.length > 0 ? params : undefined,\n\t\treturns,\n\t\tthrows: throws.length > 0 ? throws : undefined,\n\t\texamples: examples.length > 0 ? examples : undefined,\n\t\ttags: Object.keys(tags).length > 0 ? tags : undefined,\n\t\tdeprecated,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// TypeScript AST helpers\n// ---------------------------------------------------------------------------\n\n/** Extract the leading JSDoc comment text for a node. @internal */\nfunction getLeadingComment(node: ts.Node, sourceFile: ts.SourceFile): string | undefined {\n\tconst fullText = sourceFile.getFullText();\n\tconst ranges = ts.getLeadingCommentRanges(fullText, node.getFullStart());\n\tif (!ranges || ranges.length === 0) return undefined;\n\n\t// Take the last leading comment (closest to the declaration)\n\tconst range = ranges[ranges.length - 1];\n\tif (\n\t\trange.kind !== ts.SyntaxKind.MultiLineCommentTrivia ||\n\t\t!fullText.slice(range.pos, range.end).startsWith(\"/**\")\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn fullText.slice(range.pos, range.end);\n}\n\n/** Map a TypeScript `SyntaxKind` to a `ForgeSymbol` kind string. @internal */\nfunction kindToString(kind: ts.SyntaxKind): ForgeSymbol[\"kind\"] | null {\n\tswitch (kind) {\n\t\tcase ts.SyntaxKind.FunctionDeclaration:\n\t\tcase ts.SyntaxKind.ArrowFunction:\n\t\tcase ts.SyntaxKind.FunctionExpression:\n\t\t\treturn \"function\";\n\t\tcase ts.SyntaxKind.ClassDeclaration:\n\t\t\treturn \"class\";\n\t\tcase ts.SyntaxKind.InterfaceDeclaration:\n\t\t\treturn \"interface\";\n\t\tcase ts.SyntaxKind.TypeAliasDeclaration:\n\t\t\treturn \"type\";\n\t\tcase ts.SyntaxKind.EnumDeclaration:\n\t\t\treturn \"enum\";\n\t\tcase ts.SyntaxKind.VariableDeclaration:\n\t\tcase ts.SyntaxKind.VariableStatement:\n\t\t\treturn \"variable\";\n\t\tcase ts.SyntaxKind.MethodDeclaration:\n\t\tcase ts.SyntaxKind.MethodSignature:\n\t\t\treturn \"method\";\n\t\tcase ts.SyntaxKind.PropertyDeclaration:\n\t\tcase ts.SyntaxKind.PropertySignature:\n\t\tcase ts.SyntaxKind.EnumMember:\n\t\t\treturn \"property\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\n/** Build a human-readable type signature string using the type checker. @internal */\nfunction buildSignature(node: ts.Declaration, checker: ts.TypeChecker): string | undefined {\n\ttry {\n\t\tconst symbol = checker.getSymbolAtLocation((node as ts.NamedDeclaration).name ?? node);\n\t\tif (!symbol) return undefined;\n\t\tconst type = checker.getTypeOfSymbolAtLocation(symbol, node);\n\t\treturn checker.typeToString(type);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Walker implementation\n// ---------------------------------------------------------------------------\n\n/** @internal */\nfunction extractSymbolsFromFile(\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\t_tsdocParser: TSDocParser,\n): ForgeSymbol[] {\n\tconst symbols: ForgeSymbol[] = [];\n\tconst filePath = sourceFile.fileName;\n\n\tfunction visit(node: ts.Node, parentExported: boolean): void {\n\t\tconst isExported =\n\t\t\tparentExported ||\n\t\t\t(ts.getCombinedModifierFlags(node as ts.Declaration) & ts.ModifierFlags.Export) !== 0;\n\n\t\t// Handle export declarations: `export { Foo, Bar }`\n\t\tif (ts.isExportDeclaration(node)) {\n\t\t\tts.forEachChild(node, (child) => visit(child, true));\n\t\t\treturn;\n\t\t}\n\n\t\tconst kind = kindToString(node.kind);\n\n\t\t// Variable statements need special handling: `export const foo = ...`\n\t\tif (ts.isVariableStatement(node)) {\n\t\t\tif (!isExported) {\n\t\t\t\tts.forEachChild(node, (child) => visit(child, false));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const decl of node.declarationList.declarations) {\n\t\t\t\tconst name = decl.name.getText(sourceFile);\n\t\t\t\tconst pos = sourceFile.getLineAndCharacterOfPosition(decl.getStart());\n\t\t\t\tconst rawComment = getLeadingComment(node, sourceFile);\n\t\t\t\tconst documentation = rawComment ? parseTSDoc(rawComment, pos.line + 1) : undefined;\n\t\t\t\tconst tags = documentation?.tags;\n\t\t\t\tconst visibility = resolveVisibility(tags);\n\n\t\t\t\tsymbols.push({\n\t\t\t\t\tname,\n\t\t\t\t\tkind: \"variable\",\n\t\t\t\t\tvisibility,\n\t\t\t\t\tfilePath,\n\t\t\t\t\tline: pos.line + 1,\n\t\t\t\t\tcolumn: pos.character,\n\t\t\t\t\tdocumentation,\n\t\t\t\t\tsignature: buildSignature(decl, checker),\n\t\t\t\t\texported: true,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (kind === null || !isExported) {\n\t\t\tts.forEachChild(node, (child) => visit(child, isExported));\n\t\t\treturn;\n\t\t}\n\n\t\tconst namedNode = node as ts.NamedDeclaration;\n\t\tconst nameNode = namedNode.name;\n\t\tif (!nameNode) {\n\t\t\tts.forEachChild(node, (child) => visit(child, isExported));\n\t\t\treturn;\n\t\t}\n\n\t\tconst name = nameNode.getText(sourceFile);\n\t\tconst pos = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n\t\tconst rawComment = getLeadingComment(node, sourceFile);\n\t\tconst documentation = rawComment ? parseTSDoc(rawComment, pos.line + 1) : undefined;\n\t\tconst tags = documentation?.tags;\n\t\tconst visibility = resolveVisibility(tags);\n\n\t\tconst children: ForgeSymbol[] = [];\n\n\t\t// Walk class members / interface members / enum members\n\t\tif (\n\t\t\tts.isClassDeclaration(node) ||\n\t\t\tts.isInterfaceDeclaration(node) ||\n\t\t\tts.isEnumDeclaration(node)\n\t\t) {\n\t\t\tfor (const member of node.members) {\n\t\t\t\tconst memberKind = kindToString(member.kind);\n\t\t\t\tif (!memberKind) continue;\n\t\t\t\tconst memberName = (member as ts.NamedDeclaration).name?.getText(sourceFile) ?? \"\";\n\t\t\t\tconst memberPos = sourceFile.getLineAndCharacterOfPosition(member.getStart());\n\t\t\t\tconst memberComment = getLeadingComment(member, sourceFile);\n\t\t\t\tconst memberDoc = memberComment ? parseTSDoc(memberComment, memberPos.line + 1) : undefined;\n\t\t\t\tconst memberTags = memberDoc?.tags;\n\t\t\t\tconst memberVisibility = resolveVisibility(memberTags);\n\n\t\t\t\tchildren.push({\n\t\t\t\t\tname: memberName,\n\t\t\t\t\tkind: memberKind,\n\t\t\t\t\tvisibility: memberVisibility,\n\t\t\t\t\tfilePath,\n\t\t\t\t\tline: memberPos.line + 1,\n\t\t\t\t\tcolumn: memberPos.character,\n\t\t\t\t\tdocumentation: memberDoc,\n\t\t\t\t\tsignature: buildSignature(member as ts.Declaration, checker),\n\t\t\t\t\texported: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tsymbols.push({\n\t\t\tname,\n\t\t\tkind,\n\t\t\tvisibility,\n\t\t\tfilePath,\n\t\t\tline: pos.line + 1,\n\t\t\tcolumn: pos.character,\n\t\t\tdocumentation,\n\t\t\tsignature: buildSignature(namedNode as ts.Declaration, checker),\n\t\t\tchildren: children.length > 0 ? children : undefined,\n\t\t\texported: isExported,\n\t\t});\n\t}\n\n\tts.forEachChild(sourceFile, (node) => visit(node, false));\n\treturn symbols;\n}\n\n/**\n * Creates an {@link ASTWalker} configured for the given forge config.\n *\n * The walker uses the TypeScript Compiler API to create a `ts.Program` from\n * the project's tsconfig, then visits every source file to extract exported\n * declarations. TSDoc comments are parsed with `@microsoft/tsdoc` to\n * populate the `documentation` field on each {@link ForgeSymbol}.\n *\n * @param config - The resolved {@link ForgeConfig} for the project.\n * @returns An {@link ASTWalker} instance whose `walk()` method performs the extraction.\n * @example\n * ```typescript\n * import { loadConfig, createWalker } from \"@forge-ts/core\";\n * const config = await loadConfig();\n * const walker = createWalker(config);\n * const symbols = walker.walk();\n * console.log(`Found ${symbols.length} symbols`);\n * ```\n * @public\n */\nexport function createWalker(config: ForgeConfig): ASTWalker {\n\treturn {\n\t\twalk(): ForgeSymbol[] {\n\t\t\t// Load tsconfig\n\t\t\tconst tsconfigPath = resolve(config.tsconfig);\n\t\t\tconst configFile = ts.readConfigFile(tsconfigPath, (path) => readFileSync(path, \"utf8\"));\n\n\t\t\tif (configFile.error) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to read tsconfig at ${tsconfigPath}: ${ts.flattenDiagnosticMessageText(configFile.error.messageText, \"\\n\")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst parsedCommandLine = ts.parseJsonConfigFileContent(\n\t\t\t\tconfigFile.config,\n\t\t\t\tts.sys,\n\t\t\t\tresolve(config.rootDir),\n\t\t\t);\n\n\t\t\tconst program = ts.createProgram({\n\t\t\t\trootNames: parsedCommandLine.fileNames,\n\t\t\t\toptions: parsedCommandLine.options,\n\t\t\t});\n\n\t\t\tconst checker = program.getTypeChecker();\n\n\t\t\tconst tsdocConfiguration = new TSDocConfiguration();\n\t\t\tconst tsdocParser = new TSDocParser(tsdocConfiguration);\n\n\t\t\tconst allSymbols: ForgeSymbol[] = [];\n\n\t\t\tfor (const sourceFile of program.getSourceFiles()) {\n\t\t\t\t// Skip declaration files and node_modules\n\t\t\t\tif (sourceFile.isDeclarationFile || sourceFile.fileName.includes(\"node_modules\")) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst fileSymbols = extractSymbolsFromFile(sourceFile, checker, tsdocParser);\n\t\t\t\tallSymbols.push(...fileSymbols);\n\t\t\t}\n\n\t\t\treturn allSymbols;\n\t\t},\n\t};\n}\n"],"mappings":"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","names":["Visibility","resolve","name","pos","rawComment","documentation","tags","visibility","resolve"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge-ts/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Shared types, interfaces, and core AST walker for forge-ts",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"tsup": "^8.3.5",
|
|
32
|
-
"@forge-ts/
|
|
33
|
-
"@forge-ts/gen": "0.
|
|
34
|
-
"@forge-ts/
|
|
32
|
+
"@forge-ts/api": "0.3.1",
|
|
33
|
+
"@forge-ts/gen": "0.3.1",
|
|
34
|
+
"@forge-ts/enforcer": "0.3.1"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "tsup",
|
package/dist/.tsbuildinfo
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../src/types.ts","../src/config.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/details/Standardization.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/configuration/TSDocTagDefinition.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/configuration/TSDocValidationConfiguration.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/TSDocMessageId.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/configuration/TSDocConfiguration.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocNode.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/configuration/DocNodeManager.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/details/StandardTags.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/TextRange.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/Token.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocNodeContainer.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocSection.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocBlock.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocCodeSpan.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocMemberIdentifier.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocMemberSymbol.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocMemberSelector.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocMemberReference.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocDeclarationReference.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocInlineTagBase.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocInheritDocTag.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocParamBlock.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocParamCollection.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocComment.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocErrorText.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocEscapedText.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocExcerpt.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocFencedCode.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocHtmlAttribute.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocHtmlEndTag.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocHtmlStartTag.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocInlineTag.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocLinkTag.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocParagraph.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocPlainText.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocSoftBreak.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/index.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/ParserMessage.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/ParserMessageLog.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/ParserContext.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/TokenSequence.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/nodes/DocBlockTag.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/details/ModifierTagSet.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/details/StandardModifierTagSet.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/emitters/PlainTextEmitter.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/emitters/StringBuilder.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/emitters/TSDocEmitter.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/parser/TSDocParser.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/transforms/DocNodeTransforms.d.ts","../../../node_modules/.pnpm/@microsoft+tsdoc@0.15.1/node_modules/@microsoft/tsdoc/lib/index.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/typescript.d.ts","../src/visibility.ts","../src/walker.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/blob.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/console.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/encoding.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/utility.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/client-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/round-robin-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/h2c-client.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@7.18.2/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/importmeta.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/messaging.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/performance.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/web-globals/url.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/inspector/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/path/posix.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/path/win32.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/quic.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/test/reporters.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/util/types.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@25.5.0/node_modules/@types/node/index.d.ts"],"fileIdsList":[[79,130,193,201,205,208,210,211,212,224],[75,76,77,80,130,193,201,205,208,210,211,212,224],[74,130,193,201,205,208,210,211,212,224],[130,193,201,205,208,210,211,212,224],[75,115,130,193,201,205,208,210,211,212,224],[116,130,193,201,205,208,210,211,212,224],[75,130,193,201,205,208,210,211,212,224],[110,130,193,201,205,208,210,211,212,224],[110,119,130,193,201,205,208,210,211,212,224],[74,75,76,77,78,80,81,82,83,110,111,112,113,114,116,117,118,119,120,121,122,130,193,201,205,208,210,211,212,224],[79,85,115,130,193,201,205,208,210,211,212,224],[79,114,130,193,201,205,208,210,211,212,224],[79,85,86,94,96,117,130,193,201,205,208,210,211,212,224],[79,91,114,130,193,201,205,208,210,211,212,224],[77,79,114,130,193,201,205,208,210,211,212,224],[79,102,114,130,193,201,205,208,210,211,212,224],[79,92,93,130,193,201,205,208,210,211,212,224],[79,93,114,130,193,201,205,208,210,211,212,224],[79,92,93,114,130,193,201,205,208,210,211,212,224],[79,88,89,90,114,130,193,201,205,208,210,211,212,224],[79,92,114,130,193,201,205,208,210,211,212,224],[78,130,193,201,205,208,210,211,212,224],[79,84,130,193,201,205,208,210,211,212,224],[79,86,114,130,193,201,205,208,210,211,212,224],[79,95,130,193,201,205,208,210,211,212,224],[79,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,115,130,193,201,205,208,210,211,212,224],[78,82,83,110,112,130,193,201,205,208,210,211,212,224],[77,79,82,114,130,193,201,205,208,210,211,212,224],[77,79,82,98,111,114,130,193,201,205,208,210,211,212,224],[78,82,113,130,193,201,205,208,210,211,212,224],[82,130,193,201,205,208,210,211,212,224],[82,83,113,130,193,201,205,208,210,211,212,224],[130,190,191,193,201,205,208,210,211,212,224],[130,192,193,201,205,208,210,211,212,224],[193,201,205,208,210,211,212,224],[130,193,201,205,208,210,211,212,224,232],[130,193,194,199,201,204,205,208,210,211,212,214,224,229,241],[130,193,194,195,201,204,205,208,210,211,212,224],[130,193,196,201,205,208,210,211,212,224,242],[130,193,197,198,201,205,208,210,211,212,215,224],[130,193,198,201,205,208,210,211,212,224,229,238],[130,193,199,201,204,205,208,210,211,212,214,224],[130,192,193,200,201,205,208,210,211,212,224],[130,193,201,202,205,208,210,211,212,224],[130,193,201,203,204,205,208,210,211,212,224],[130,192,193,201,204,205,208,210,211,212,224],[130,193,201,204,205,206,208,210,211,212,224,229,241],[130,193,201,204,205,206,208,210,211,212,224,229,232],[130,180,193,201,204,205,207,208,210,211,212,214,224,229,241],[130,193,201,204,205,207,208,210,211,212,214,224,229,238,241],[130,193,201,205,207,208,209,210,211,212,224,229,238,241],[128,129,130,131,132,133,134,135,136,137,138,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248],[130,193,201,204,205,208,210,211,212,224],[130,193,201,205,208,210,212,224],[130,193,201,205,208,210,211,212,213,224,241],[130,193,201,204,205,208,210,211,212,214,224,229],[130,193,201,205,208,210,211,212,215,224],[130,193,201,205,208,210,211,212,216,224],[130,193,201,204,205,208,210,211,212,219,224],[130,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248],[130,193,201,205,208,210,211,212,221,224],[130,193,201,205,208,210,211,212,222,224],[130,193,198,201,205,208,210,211,212,214,224,232],[130,193,201,204,205,208,210,211,212,224,225],[130,193,201,205,208,210,211,212,224,226,242,245],[130,193,201,204,205,208,210,211,212,224,229,231,232],[130,193,201,205,208,210,211,212,224,230,232],[130,193,201,205,208,210,211,212,224,232,242],[130,193,201,205,208,210,211,212,224,233],[130,190,193,201,205,208,210,211,212,224,229,235,241],[130,193,201,205,208,210,211,212,224,229,234],[130,193,201,204,205,208,210,211,212,224,236,237],[130,193,201,205,208,210,211,212,224,236,237],[130,193,198,201,205,208,210,211,212,214,224,229,238],[130,193,201,205,208,210,211,212,224,239],[130,193,201,205,208,210,211,212,214,224,240],[130,193,201,205,207,208,210,211,212,222,224,241],[130,193,201,205,208,210,211,212,224,242,243],[130,193,198,201,205,208,210,211,212,224,243],[130,193,201,205,208,210,211,212,224,229,244],[130,193,201,205,208,210,211,212,213,224,245],[130,193,201,205,208,210,211,212,224,246],[130,193,196,201,205,208,210,211,212,224],[130,193,198,201,205,208,210,211,212,224],[130,193,201,205,208,210,211,212,224,242],[130,180,193,201,205,208,210,211,212,224],[130,193,201,205,208,210,211,212,224,241],[130,193,201,205,208,210,211,212,224,247],[130,193,201,205,208,210,211,212,219,224],[130,193,201,205,208,210,211,212,224,237],[130,180,193,201,204,205,206,208,210,211,212,219,224,229,232,241,244,245,247],[130,193,201,205,208,210,211,212,224,229,248],[130,145,148,151,152,193,201,205,208,210,211,212,224,241],[130,148,193,201,205,208,210,211,212,224,229,241],[130,148,152,193,201,205,208,210,211,212,224,241],[130,193,201,205,208,210,211,212,224,229],[130,142,193,201,205,208,210,211,212,224],[130,146,193,201,205,208,210,211,212,224],[130,144,145,148,193,201,205,208,210,211,212,224,241],[130,193,201,205,208,210,211,212,214,224,238],[130,193,201,205,208,210,211,212,224,249],[130,142,193,201,205,208,210,211,212,224,249],[130,144,148,193,201,205,208,210,211,212,214,224,241],[130,139,140,141,143,147,193,201,204,205,208,210,211,212,224,229,241],[130,148,157,165,193,201,205,208,210,211,212,224],[130,140,146,193,201,205,208,210,211,212,224],[130,148,174,175,193,201,205,208,210,211,212,224],[130,140,143,148,193,201,205,208,210,211,212,224,232,241,249],[130,148,193,201,205,208,210,211,212,224],[130,144,148,193,201,205,208,210,211,212,224,241],[130,139,193,201,205,208,210,211,212,224],[130,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,175,176,177,178,179,193,201,205,208,210,211,212,224],[130,148,167,170,193,201,205,208,210,211,212,224],[130,148,157,158,159,193,201,205,208,210,211,212,224],[130,146,148,158,160,193,201,205,208,210,211,212,224],[130,147,193,201,205,208,210,211,212,224],[130,140,142,148,193,201,205,208,210,211,212,224],[130,148,152,158,160,193,201,205,208,210,211,212,224],[130,152,193,201,205,208,210,211,212,224],[130,146,148,151,193,201,205,208,210,211,212,224,241],[130,140,144,148,157,193,201,205,208,210,211,212,224],[130,148,167,193,201,205,208,210,211,212,224],[130,160,193,201,205,208,210,211,212,224],[130,142,148,174,193,201,205,208,210,211,212,224,232,247,249],[72,130,193,201,205,206,208,210,211,212,216,224,241],[72,73,125,126,130,193,201,205,208,210,211,212,224],[72,130,193,201,205,208,210,211,212,224],[72,123,124,125,130,193,201,205,208,210,211,212,216,224]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"47debc20e92d6040f0a1c78d29a00fe277b30fa2da5625ace4cc2fa126d4d510","signature":"ecb3216311a9a6e10054d2f58e545bea7d2f50416df98567b992209f3b37943b","impliedFormat":99},{"version":"061da2707e94bd0ce24282adf6c0c216c16983132f40c32de8eeffae3d831c90","signature":"4a31d7b4bc141a615c0073c71410281e38faf7b00ed9bb7d14517447109c9cd2","impliedFormat":99},{"version":"9f706fec5e44b5498bd6498c920137abacf6bb59442510e2f36135194adbda50","impliedFormat":1},{"version":"fc953ba36f518eb973156ae6b6ccc0f9172e6f69c2e24299b2cf4ba184b2f3cd","impliedFormat":1},{"version":"5bb43fb4160f799f08d8a169a6b74ba04cbdab6dbc9d5889b11df0fd0a1cc37d","impliedFormat":1},{"version":"0a9b34d41f06ca0707200e74ab563190a0f3bcf57e250b63fd0bd12b035bc68e","impliedFormat":1},{"version":"5dd4f3e00d2a857f622c4dcbbc2f34e8059db05b58e06e330ff8e4849248d588","impliedFormat":1},{"version":"842c861cf4ac6c43ad74fb0af9838c14f43f7689cecda454e0a549177e5e6591","impliedFormat":1},{"version":"110829306422e9ca3c6c28f4778004578afa43f2ec48fd477f4937f77d00ed89","impliedFormat":1},{"version":"06401c590494ee3b3a52ee3a31d8f63a997a1df9eeb70ac9cdce58b0a166959b","impliedFormat":1},{"version":"f409abec25c2a03294cf9cd419e73ff67ce0d6706a77a55cf31d0c6aef4b7814","impliedFormat":1},{"version":"9a2e43326d127b17b8482d7d1aa59500b3121fc063be8c7cceea3d38f7f95494","impliedFormat":1},{"version":"dcd8f22e8a7c886cc9a0575f70ac9547c9237bb0bb02597b133d5f1342cbdbfd","impliedFormat":1},{"version":"580697182dd67fd7256586b0cf778d0fdc06bb1868205c4abb04f41f8c2ba826","impliedFormat":1},{"version":"a54e53e093b66edbfbe7c18d8bab0ae803c7132fe7e5281ea53ef82d84fa7cb5","impliedFormat":1},{"version":"e1226f2768e23f7b4b004a9a570fac69645176ef958e70f6c7ca912ea5388ce4","impliedFormat":1},{"version":"18fa43fd42a49f6264f0c2fe2d8dfd067189278b75ae50bf46835fb302b5421d","impliedFormat":1},{"version":"318513fa5fe8fa2ce59649b71a6755e4fad8e7c9dd0c151677104889c11caeb0","impliedFormat":1},{"version":"9887acedcc0fe1b908e350d12a9f1248cfb681d00600e0973fbe86590f43adc3","impliedFormat":1},{"version":"222b2aafb53cff2b60ace67699a9b7925e8af39c9206754ad321fbb640f84dcd","impliedFormat":1},{"version":"7ade76fbfa63bdcba743911105675db6496a683da0392319881090218ba9c66c","impliedFormat":1},{"version":"ad34467a3394ad11e126bd6508e6aea62fd7d43162a15fb88c903354b2793814","impliedFormat":1},{"version":"90fcb227d9a563e31c4b51a2146e127d84142ba62ec211c2fe03c2edfdae23ca","impliedFormat":1},{"version":"323b8d37f8b0b95685d9147886b2b67e2cbfd792eee0e1ec3ef763050e83f94d","impliedFormat":1},{"version":"3e196dd2f6b6d6de5a09f1217d036aacbd542962931d8b63fa2251f2f57e07da","impliedFormat":1},{"version":"04947f9532e77b7feb4280a5668d8c6a0a6b39fb1306f6dd2d9d0ec711788ad8","impliedFormat":1},{"version":"9288bdd8a4857f2213c0340151fa494ce1cccfa3fcd2ee15c9ba1b2d8ba94c41","impliedFormat":1},{"version":"117e439217f2fe545e1d5e45e50d3dd8e3bc8d0c22b66b954367200116810a38","impliedFormat":1},{"version":"7eae7082d7f9b1babe914581101cf827e29449eca5efe7bb2dc5c1e65a49e888","impliedFormat":1},{"version":"28ea8cb7086d9f8d611610ce8739a00ed0c71842f9df07fd2a3543609cc096a2","impliedFormat":1},{"version":"ed877333f021c55e04506a25b634dfaf776910553093cb78da757646a0232e60","impliedFormat":1},{"version":"b4839d071e6f375483aaf83c7885c9981d56c63e755c64444b5bd57837175f3d","impliedFormat":1},{"version":"8a86d5146216012d0f4f4d670735ecb91c75df7355eb2abf3ed23a95fe167ab0","impliedFormat":1},{"version":"3fc4d13e9aee784d19ec1a33e45a715b9ac9e83ce84f2cc99f20e2d0f2e88e3d","impliedFormat":1},{"version":"75b1ae7914a222cea5718541e1b52c6ec711a001e65c37b3299bb8780d9db90e","impliedFormat":1},{"version":"b537413f0e0d27177b048715ab4b61cd94c693e6a42d50c3bbf27204eb584f0e","impliedFormat":1},{"version":"8c58ec367a2e04bb34556f2f9bb1578a61123cb9c56c0974a621838eba18d016","impliedFormat":1},{"version":"0e2bc4a7a02e4cab625e1d091730af1bca8b45049694c73216a53151567f48d6","impliedFormat":1},{"version":"291cc4d81c80a5800fced2528f2354eb5e2d1696a55f4dbf753b82a816460ce5","impliedFormat":1},{"version":"fc7b920a12e6b73aab195e9330326c36ba899c526a255288a01da7407f894b83","impliedFormat":1},{"version":"4cce4fb5a0277cbe619ad168d0d0b21f127cb651cc3b739963944b6df826e115","impliedFormat":1},{"version":"8773bd46b5246a299d8818f9f2fee7bc5e2146c4042641dba58068f892ce718b","impliedFormat":1},{"version":"fdd88878ba4444464d262c37e76b3f5d9944fa8ea85614e735400638d90c89b7","impliedFormat":1},{"version":"7670ad9df2f210379c9949ec17a4320ddc6916e7ade85c5d01d27ad5c2b9ace6","impliedFormat":1},{"version":"8798d848d9133799f986d8774b69eb8ea95a92f1182fea95adb5b940f355a3a8","impliedFormat":1},{"version":"0875eaa2a1908045c6d6f44b5d77a4ba9ac7b4a0edf49b8f7dea65149c89e0ce","impliedFormat":1},{"version":"7fa2766758660a92585c52d84bbe62ecebb8ac431abfbcf4e928634e74bd30be","impliedFormat":1},{"version":"87ee8911c717a13a0a72d6ff64f100c7b7f11625be74f61ee6b0bf3b52a7d7f2","impliedFormat":1},{"version":"502cf312135b5cd7b2fa68b024824f2ffd73874f007561d691d5e2f506f5d0a6","impliedFormat":1},{"version":"eac40c9899be21194a9aa098ccddaa38ae017dd16f5fa0d4e7bb44a5ac66a485","impliedFormat":1},{"version":"61dc9ce1bfa63d427998bf13d3021e37134d6c4223225ea374e24a756f78cea5","impliedFormat":1},{"version":"bfc87d0941960e11096998ce31922b3e176b21d2d8466a3118ef85225fc7f847","impliedFormat":1},{"version":"e134052a6b1ded61693b4037f615dc72f14e2881e79c1ddbff6c514c8a516b05","impliedFormat":1},{"version":"7fb4e662cab157574553f0ec4274eb47fb5a45c99d0ff7715039afdebf4945e9","signature":"3631b28b087589e3bcceaeaa6ddf64a6610f4112408c6817161a86fbbfa0bc09","impliedFormat":99},{"version":"0172238faf11bdf751243a6ba24a6c009fef6c04761096e159378afb8f2d3535","signature":"6a003630469133eee1327894315ffbff664047e0f48e7a48fffef54b11d8336c","impliedFormat":99},{"version":"044d76dcdf053b6782ff65167967059bd3535507420c061666ede61c721e0da2","signature":"1431a76c2b21b2c3fe286e024f1612345849877d2844d0d55a682114d8737ee2","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fad5618174d74a34ee006406d4eb37e8d07dd62eb1315dbf52f48d31a337547","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b50a819485ffe0d237bf0d131e92178d14d11e2aa873d73615a9ec578b341f5","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"12d602a8fe4c2f2ba4f7804f5eda8ba07e0c83bf5cf0cda8baffa2e9967bfb77","affectsGlobalScope":true,"impliedFormat":1},{"version":"a856ab781967b62b288dfd85b860bef0e62f005ed4b1b8fa25c53ce17856acaf","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"8db46b61a690f15b245cf16270db044dc047dce9f93b103a59f50262f677ea1f","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"959d0327c96dd9bb5521f3ed6af0c435996504cc8dd46baa8e12cb3b3518cef1","impliedFormat":1},{"version":"e1c1a0b4d1ead0de9eca52203aeb1f771f21e6238d6fcd15aa56ac2a02f1b7bf","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"266bee0a41e9c3ba335583e21e9277ae03822402cf5e8e1d99f5196853613b98","affectsGlobalScope":true,"impliedFormat":1},{"version":"386606f8a297988535cb1401959041cfa7f59d54b8a9ed09738e65c98684c976","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"ce8653341224f8b45ff46d2a06f2cacb96f841f768a886c9d8dd8ec0878b11bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"90a278f5fab7557e69e97056c0841adf269c42697194f0bd5c5e69152637d4b3","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"f263485c9ca90df9fe7bb3a906db9701997dc6cae86ace1f8106ac8d2f7f677b","impliedFormat":1},{"version":"1edcf2f36fc332615846bde6dcc71a8fe526065505bc5e3dcfd65a14becdf698","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"1dbca38aa4b0db1f4f9e6edacc2780af7e028b733d2a98dd3598cd235ca0c97d","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"19143c930aef7ccf248549f3e78992f2f1049118ec5d4622e95025057d8e392b","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"cca8917838a876e2d7016c9b6af57cbf11fdf903c5fdd8e613fa31840b2957bf","impliedFormat":1},{"version":"d91ae55e4282c22b9c21bc26bd3ef637d3fe132507b10529ae68bf76f5de785b","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"7e8a671604329e178bb479c8f387715ebd40a091fc4a7552a0a75c2f3a21c65c","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"4c5e90ddbcd177ad3f2ffc909ae217c87820f1e968f6959e4b6ba38a8cec935e","impliedFormat":1},{"version":"b70dd9a44e1ac42f030bb12e7d79117eac7cb74170d72d381a1e7913320af23a","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1}],"root":[72,73,[125,127]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":199,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":11,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[80,1],[78,2],[75,3],[76,4],[116,5],[117,6],[81,7],[74,4],[118,8],[119,4],[120,9],[123,10],[86,11],[115,12],[87,12],[97,13],[92,14],[98,15],[99,12],[100,12],[101,12],[102,12],[103,12],[104,16],[94,17],[105,18],[93,12],[106,19],[88,12],[91,20],[90,12],[89,21],[79,22],[84,1],[107,23],[95,24],[96,25],[108,12],[85,23],[109,12],[110,26],[113,27],[111,28],[112,29],[77,4],[121,30],[82,4],[83,31],[114,32],[122,8],[190,33],[191,33],[192,34],[130,35],[193,36],[194,37],[195,38],[128,4],[196,39],[197,40],[198,41],[199,42],[200,43],[201,44],[202,44],[203,45],[204,46],[205,47],[206,48],[131,4],[129,4],[207,49],[208,50],[209,51],[249,52],[210,53],[211,54],[212,53],[213,55],[214,56],[215,57],[216,58],[217,58],[218,58],[219,59],[220,60],[221,61],[222,62],[223,63],[224,64],[225,64],[226,65],[227,4],[228,4],[229,66],[230,67],[231,66],[232,68],[233,69],[234,70],[235,71],[236,72],[237,73],[238,74],[239,75],[240,76],[241,77],[242,78],[243,79],[244,80],[245,81],[246,82],[132,53],[133,4],[134,83],[135,84],[136,4],[137,85],[138,4],[181,86],[182,87],[183,88],[184,88],[185,89],[186,4],[187,36],[188,90],[189,87],[247,91],[248,92],[70,4],[71,4],[13,4],[12,4],[2,4],[14,4],[15,4],[16,4],[17,4],[18,4],[19,4],[20,4],[21,4],[3,4],[22,4],[23,4],[4,4],[24,4],[28,4],[25,4],[26,4],[27,4],[29,4],[30,4],[31,4],[5,4],[32,4],[33,4],[34,4],[35,4],[6,4],[39,4],[36,4],[37,4],[38,4],[40,4],[7,4],[41,4],[46,4],[47,4],[42,4],[43,4],[44,4],[45,4],[8,4],[51,4],[48,4],[49,4],[50,4],[52,4],[9,4],[53,4],[54,4],[55,4],[57,4],[56,4],[58,4],[59,4],[10,4],[60,4],[61,4],[62,4],[11,4],[63,4],[64,4],[65,4],[66,4],[67,4],[1,4],[68,4],[69,4],[124,4],[157,93],[169,94],[154,95],[170,96],[179,97],[145,98],[146,99],[144,100],[178,101],[173,102],[177,103],[148,104],[166,105],[147,106],[176,107],[142,108],[143,102],[149,109],[150,4],[156,110],[153,109],[140,111],[180,112],[171,113],[160,114],[159,109],[161,115],[164,116],[158,117],[162,118],[174,101],[151,119],[152,120],[165,121],[141,96],[168,122],[167,109],[155,120],[163,123],[172,4],[139,4],[175,124],[73,125],[127,126],[72,4],[125,127],[126,128]],"affectedFilesPendingEmit":[[73,51],[127,51],[72,51],[125,51],[126,51]],"emitSignatures":[72,73,125,126,127],"version":"5.9.3"}
|