@forge-ts/core 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md 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.1 types** - `OpenAPIDocument`, `OpenAPISchemaObject`, etc.
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.
@@ -177,7 +183,7 @@ declare function defaultConfig(rootDir: string): ForgeConfig;
177
183
  declare function loadConfig(rootDir?: string): Promise<ForgeConfig>;
178
184
 
179
185
  /**
180
- * OpenAPI 3.1 type contracts shared across the forge-ts toolchain.
186
+ * OpenAPI 3.2 type contracts shared across the forge-ts toolchain.
181
187
  *
182
188
  * All OpenAPI-related types are defined here so that consumers never resort
183
189
  * to `Record<string, unknown>` or inline structural types.
@@ -186,7 +192,7 @@ declare function loadConfig(rootDir?: string): Promise<ForgeConfig>;
186
192
  * @public
187
193
  */
188
194
  /**
189
- * OpenAPI 3.1 schema object.
195
+ * OpenAPI 3.2 schema object.
190
196
  * @public
191
197
  */
192
198
  interface OpenAPISchemaObject {
@@ -207,20 +213,22 @@ interface OpenAPISchemaObject {
207
213
  $ref?: string;
208
214
  }
209
215
  /**
210
- * OpenAPI 3.1 info object.
216
+ * OpenAPI 3.2 info object.
211
217
  * @public
212
218
  */
213
219
  interface OpenAPIInfoObject {
214
220
  title: string;
215
221
  version: string;
216
222
  description?: string;
223
+ summary?: string;
217
224
  license?: {
218
225
  name: string;
219
226
  url?: string;
227
+ identifier?: string;
220
228
  };
221
229
  }
222
230
  /**
223
- * OpenAPI 3.1 tag object.
231
+ * OpenAPI 3.2 tag object.
224
232
  * @public
225
233
  */
226
234
  interface OpenAPITagObject {
@@ -228,7 +236,7 @@ interface OpenAPITagObject {
228
236
  description?: string;
229
237
  }
230
238
  /**
231
- * OpenAPI 3.1 path item object.
239
+ * OpenAPI 3.2 path item object.
232
240
  * @public
233
241
  */
234
242
  interface OpenAPIPathItemObject {
@@ -239,9 +247,14 @@ interface OpenAPIPathItemObject {
239
247
  put?: OpenAPIOperationObject;
240
248
  delete?: OpenAPIOperationObject;
241
249
  patch?: OpenAPIOperationObject;
250
+ options?: OpenAPIOperationObject;
251
+ head?: OpenAPIOperationObject;
252
+ trace?: OpenAPIOperationObject;
253
+ query?: OpenAPIOperationObject;
254
+ additionalOperations?: Record<string, OpenAPIOperationObject>;
242
255
  }
243
256
  /**
244
- * OpenAPI 3.1 operation object.
257
+ * OpenAPI 3.2 operation object.
245
258
  * @public
246
259
  */
247
260
  interface OpenAPIOperationObject {
@@ -253,36 +266,57 @@ interface OpenAPIOperationObject {
253
266
  responses?: Record<string, OpenAPIResponseObject>;
254
267
  }
255
268
  /**
256
- * OpenAPI 3.1 parameter object.
269
+ * OpenAPI 3.2 parameter object.
257
270
  * @public
258
271
  */
259
272
  interface OpenAPIParameterObject {
260
273
  name: string;
261
- in: "query" | "header" | "path" | "cookie";
274
+ in: "query" | "header" | "path" | "cookie" | "querystring";
262
275
  description?: string;
263
276
  required?: boolean;
264
277
  schema?: OpenAPISchemaObject;
278
+ deprecated?: boolean;
279
+ }
280
+ /**
281
+ * OpenAPI 3.2 encoding object.
282
+ * @public
283
+ */
284
+ interface OpenAPIEncodingObject {
285
+ contentType?: string;
286
+ headers?: Record<string, OpenAPIParameterObject>;
287
+ style?: string;
288
+ explode?: boolean;
289
+ allowReserved?: boolean;
290
+ }
291
+ /**
292
+ * OpenAPI 3.2 media type object.
293
+ * @public
294
+ */
295
+ interface OpenAPIMediaTypeObject {
296
+ schema?: OpenAPISchemaObject;
297
+ encoding?: Record<string, OpenAPIEncodingObject>;
265
298
  }
266
299
  /**
267
- * OpenAPI 3.1 response object.
300
+ * OpenAPI 3.2 response object.
268
301
  * @public
269
302
  */
270
303
  interface OpenAPIResponseObject {
271
304
  description: string;
272
- content?: Record<string, {
273
- schema: OpenAPISchemaObject;
274
- }>;
305
+ headers?: Record<string, OpenAPIParameterObject>;
306
+ content?: Record<string, OpenAPIMediaTypeObject>;
275
307
  }
276
308
  /**
277
- * Complete OpenAPI 3.1 document.
309
+ * Complete OpenAPI 3.2 document.
278
310
  * @public
279
311
  */
280
312
  interface OpenAPIDocument {
281
- openapi: "3.1.0";
313
+ openapi: "3.2.0";
314
+ $self?: string;
282
315
  info: OpenAPIInfoObject;
283
316
  paths: Record<string, OpenAPIPathItemObject>;
284
317
  components: {
285
318
  schemas: Record<string, OpenAPISchemaObject>;
319
+ mediaTypes?: Record<string, OpenAPIMediaTypeObject>;
286
320
  };
287
321
  tags?: OpenAPITagObject[];
288
322
  }
@@ -349,4 +383,4 @@ interface ASTWalker {
349
383
  */
350
384
  declare function createWalker(config: ForgeConfig): ASTWalker;
351
385
 
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 };
386
+ 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: false,
39
+ llmsTxt: true,
40
40
  readmeSync: false
41
41
  }
42
42
  };
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":";AAAA,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,MAAM,eAAe;AAC9B,SAAS,qBAAqB;;;ACEvB,IAAK,aAAL,kBAAKA,gBAAL;AACN,EAAAA,YAAA,YAAS;AACT,EAAAA,YAAA,UAAO;AACP,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,aAAU;AAJC,SAAAA;AAAA,GAAA;;;ADQL,SAAS,cAAc,SAA8B;AAC3D,SAAO;AAAA,IACN;AAAA,IACA,UAAU,KAAK,SAAS,eAAe;AAAA,IACvC,QAAQ,KAAK,SAAS,MAAM;AAAA,IAC5B,SAAS;AAAA,MACR,SAAS;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,IACT;AAAA,IACA,SAAS;AAAA,MACR,SAAS;AAAA,MACT,UAAU,KAAK,SAAS,UAAU,SAAS;AAAA,IAC5C;AAAA,IACA,KAAK;AAAA,MACJ,SAAS;AAAA,MACT,SAAS;AAAA,MACT,aAAa,KAAK,SAAS,QAAQ,cAAc;AAAA,IAClD;AAAA,IACA,KAAK;AAAA,MACJ,SAAS;AAAA,MACT,SAAS,CAAC,UAAU;AAAA,MACpB,SAAS;AAAA,MACT,YAAY;AAAA,IACb;AAAA,EACD;AACD;AAUA,SAAS,kBAAkB,SAAiB,SAA4C;AACvF,QAAM,WAAW,cAAc,OAAO;AACtC,SAAO;AAAA,IACN,GAAG;AAAA,IACH,GAAG;AAAA,IACH,SAAS,EAAE,GAAG,SAAS,SAAS,GAAG,QAAQ,QAAQ;AAAA,IACnD,SAAS,EAAE,GAAG,SAAS,SAAS,GAAG,QAAQ,QAAQ;AAAA,IACnD,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,QAAQ,IAAI;AAAA,IACvC,KAAK,EAAE,GAAG,SAAS,KAAK,GAAG,QAAQ,IAAI;AAAA,EACxC;AACD;AASA,eAAe,iBAAiB,UAAwD;AACvF,MAAI;AACH,UAAM,UAAU,cAAc,QAAQ,EAAE;AACxC,UAAM,MAAO,MAAM,OAAO;AAG1B,WAAO,IAAI,WAAW;AAAA,EACvB,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAmBA,eAAe,sBAAsB,SAAuD;AAC3F,MAAI;AACH,UAAM,MAAM,MAAM,SAAS,SAAS,MAAM;AAC1C,UAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,UAAM,MAAM,IAAI,UAAU;AAC1B,QAAI,KAAK;AACR,aAAO;AAAA,IACR;AACA,WAAO;AAAA,EACR,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAeA,eAAsB,WAAW,SAAwC;AACxE,QAAM,OAAO,QAAQ,WAAW,QAAQ,IAAI,CAAC;AAE7C,QAAM,aAAa,CAAC,KAAK,MAAM,oBAAoB,GAAG,KAAK,MAAM,oBAAoB,CAAC;AAEtF,aAAW,aAAa,YAAY;AACnC,QAAI,WAAW,SAAS,GAAG;AAC1B,YAAM,UAAU,MAAM,iBAAiB,SAAS;AAChD,UAAI,SAAS;AACZ,eAAO,kBAAkB,MAAM,OAAO;AAAA,MACvC;AAAA,IACD;AAAA,EACD;AAEA,QAAM,UAAU,KAAK,MAAM,cAAc;AACzC,MAAI,WAAW,OAAO,GAAG;AACxB,UAAM,UAAU,MAAM,sBAAsB,OAAO;AACnD,QAAI,SAAS;AACZ,aAAO,kBAAkB,MAAM,OAAO;AAAA,IACvC;AAAA,EACD;AAEA,SAAO,cAAc,IAAI;AAC1B;;;AEpIO,SAAS,kBAAkB,MAAwD;AACzF,MAAI,CAAC,KAAM;AAEX,MAAI,cAAc,KAAM;AACxB,MAAI,UAAU,KAAM;AACpB,MAAI,YAAY,KAAM;AAEtB;AACD;AAOA,IAAM,kBAA8C;AAAA,EACnD,sBAAkB,GAAG;AAAA,EACrB,kBAAgB,GAAG;AAAA,EACnB,0BAAoB,GAAG;AAAA,EACvB,wBAAmB,GAAG;AACvB;AAaO,SAAS,gBAAgB,WAAuB,eAAoC;AAC1F,SAAO,gBAAgB,SAAS,KAAK,gBAAgB,aAAa;AACnE;AAWO,SAAS,mBACf,SACA,eACgB;AAChB,SAAO,QAAQ,OAAO,CAAC,MAAM,gBAAgB,EAAE,YAAY,aAAa,CAAC;AAC1E;;;AClEA,SAAS,oBAAoB;AAC7B,SAAS,WAAAC,gBAAe;AACxB;AAAA,EAMC;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,QAAQ;AAyBf,SAAS,kBAAkB,OAAmC;AAC7D,QAAM,QAAkB,CAAC;AACzB,aAAW,QAAQ,OAAO;AACzB,YAAQ,KAAK,MAAM;AAAA,MAClB,KAAK,YAAY;AAChB,cAAM,KAAM,KAAsB,IAAI;AACtC;AAAA,MACD,KAAK,YAAY;AAChB,cAAM,KAAK,KAAM,KAAqB,IAAI,IAAI;AAC9C;AAAA,MACD,KAAK,YAAY;AAChB,cAAM,KAAK,GAAG;AACd;AAAA,MACD,KAAK,YAAY;AAEhB,cAAM,KAAK,kBAAmB,KAAsB,KAAK,CAAC;AAC1D;AAAA,MACD;AACC;AAAA,IACF;AAAA,EACD;AACA,SAAO,MAAM,KAAK,EAAE;AACrB;AAGA,SAAS,iBAAiB,SAAyC;AAClE,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,kBAAkB,QAAQ,KAAK,EAAE,KAAK;AAC9C;AAGA,SAAS,YAAY,OAAyB;AAC7C,SAAO,iBAAiB,MAAM,OAAO;AACtC;AAGA,SAAS,gBACR,SACA,WAC0D;AAC1D,QAAM,WAAoE,CAAC;AAE3E,aAAW,SAAS,QAAQ,cAAc;AACzC,QAAI,MAAM,SAAS,QAAQ,YAAY,MAAM,WAAY;AAEzD,eAAW,QAAQ,MAAM,QAAQ,OAAO;AACvC,UAAI,KAAK,SAAS,YAAY,YAAY;AACzC,cAAM,SAAS;AACf,iBAAS,KAAK;AAAA,UACb,MAAM,OAAO;AAAA,UACb,UAAU,OAAO,YAAY;AAAA,UAC7B,MAAM;AAAA,QACP,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAGA,SAAS,WAAW,YAAoB,WAAiD;AACxF,QAAM,gBAAgB,IAAI,mBAAmB;AAC7C,QAAM,SAAS,IAAI,YAAY,aAAa;AAC5C,QAAM,SAAS,OAAO,YAAY,UAAU;AAC5C,QAAM,UAAU,OAAO;AAEvB,QAAM,OAAiC,CAAC;AAGxC,MAAI,QAAQ,eAAe,OAAO,aAAa,MAAM,GAAG;AACvD,SAAK,SAAS,CAAC;AAAA,EAChB;AACA,MAAI,QAAQ,eAAe,OAAO,aAAa,IAAI,GAAG;AACrD,SAAK,OAAO,CAAC;AAAA,EACd;AACA,MAAI,QAAQ,eAAe,OAAO,aAAa,QAAQ,GAAG;AACzD,SAAK,WAAW,CAAC;AAAA,EAClB;AACA,MAAI,QAAQ,eAAe,OAAO,aAAa,KAAK,GAAG;AACtD,SAAK,QAAQ,CAAC;AAAA,EACf;AAGA,MAAI;AACJ,MAAI,QAAQ,iBAAiB;AAC5B,iBAAa,YAAY,QAAQ,eAAe,EAAE,KAAK,KAAK;AAAA,EAC7D;AAGA,QAAM,SAAsE,CAAC;AAC7E,aAAW,cAAc,QAAQ,OAAO,QAAQ;AAC/C,WAAO,KAAK;AAAA,MACX,MAAM,WAAW;AAAA,MACjB,aAAa,YAAY,UAAU;AAAA,IACpC,CAAC;AAAA,EACF;AAGA,MAAI;AACJ,MAAI,QAAQ,cAAc;AACzB,UAAM,OAAO,YAAY,QAAQ,YAAY;AAC7C,QAAI,KAAM,WAAU,EAAE,aAAa,KAAK;AAAA,EACzC;AAGA,QAAM,SAAwD,CAAC;AAC/D,aAAW,SAAS,QAAQ,cAAc;AACzC,QAAI,MAAM,SAAS,QAAQ,YAAY,MAAM,WAAW;AACvD,aAAO,KAAK,EAAE,aAAa,YAAY,KAAK,EAAE,CAAC;AAAA,IAChD;AAAA,EACD;AAGA,QAAM,WAAW,gBAAgB,SAAS,SAAS;AAEnD,QAAM,UAAU,iBAAiB,QAAQ,cAAc;AAEvD,SAAO;AAAA,IACN,SAAS,WAAW;AAAA,IACpB,QAAQ,OAAO,SAAS,IAAI,SAAS;AAAA,IACrC;AAAA,IACA,QAAQ,OAAO,SAAS,IAAI,SAAS;AAAA,IACrC,UAAU,SAAS,SAAS,IAAI,WAAW;AAAA,IAC3C,MAAM,OAAO,KAAK,IAAI,EAAE,SAAS,IAAI,OAAO;AAAA,IAC5C;AAAA,EACD;AACD;AAOA,SAAS,kBAAkB,MAAe,YAA+C;AACxF,QAAM,WAAW,WAAW,YAAY;AACxC,QAAM,SAAS,GAAG,wBAAwB,UAAU,KAAK,aAAa,CAAC;AACvE,MAAI,CAAC,UAAU,OAAO,WAAW,EAAG,QAAO;AAG3C,QAAM,QAAQ,OAAO,OAAO,SAAS,CAAC;AACtC,MACC,MAAM,SAAS,GAAG,WAAW,0BAC7B,CAAC,SAAS,MAAM,MAAM,KAAK,MAAM,GAAG,EAAE,WAAW,KAAK,GACrD;AACD,WAAO;AAAA,EACR;AAEA,SAAO,SAAS,MAAM,MAAM,KAAK,MAAM,GAAG;AAC3C;AAGA,SAAS,aAAa,MAAiD;AACtE,UAAQ,MAAM;AAAA,IACb,KAAK,GAAG,WAAW;AAAA,IACnB,KAAK,GAAG,WAAW;AAAA,IACnB,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR,KAAK,GAAG,WAAW;AAAA,IACnB,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR,KAAK,GAAG,WAAW;AAAA,IACnB,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR,KAAK,GAAG,WAAW;AAAA,IACnB,KAAK,GAAG,WAAW;AAAA,IACnB,KAAK,GAAG,WAAW;AAClB,aAAO;AAAA,IACR;AACC,aAAO;AAAA,EACT;AACD;AAGA,SAAS,eAAe,MAAsB,SAA6C;AAC1F,MAAI;AACH,UAAM,SAAS,QAAQ,oBAAqB,KAA6B,QAAQ,IAAI;AACrF,QAAI,CAAC,OAAQ,QAAO;AACpB,UAAM,OAAO,QAAQ,0BAA0B,QAAQ,IAAI;AAC3D,WAAO,QAAQ,aAAa,IAAI;AAAA,EACjC,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAOA,SAAS,uBACR,YACA,SACA,cACgB;AAChB,QAAM,UAAyB,CAAC;AAChC,QAAM,WAAW,WAAW;AAE5B,WAAS,MAAM,MAAe,gBAA+B;AAC5D,UAAM,aACL,mBACC,GAAG,yBAAyB,IAAsB,IAAI,GAAG,cAAc,YAAY;AAGrF,QAAI,GAAG,oBAAoB,IAAI,GAAG;AACjC,SAAG,aAAa,MAAM,CAAC,UAAU,MAAM,OAAO,IAAI,CAAC;AACnD;AAAA,IACD;AAEA,UAAM,OAAO,aAAa,KAAK,IAAI;AAGnC,QAAI,GAAG,oBAAoB,IAAI,GAAG;AACjC,UAAI,CAAC,YAAY;AAChB,WAAG,aAAa,MAAM,CAAC,UAAU,MAAM,OAAO,KAAK,CAAC;AACpD;AAAA,MACD;AACA,iBAAW,QAAQ,KAAK,gBAAgB,cAAc;AACrD,cAAMC,QAAO,KAAK,KAAK,QAAQ,UAAU;AACzC,cAAMC,OAAM,WAAW,8BAA8B,KAAK,SAAS,CAAC;AACpE,cAAMC,cAAa,kBAAkB,MAAM,UAAU;AACrD,cAAMC,iBAAgBD,cAAa,WAAWA,aAAYD,KAAI,OAAO,CAAC,IAAI;AAC1E,cAAMG,QAAOD,gBAAe;AAC5B,cAAME,cAAa,kBAAkBD,KAAI;AAEzC,gBAAQ,KAAK;AAAA,UACZ,MAAAJ;AAAA,UACA,MAAM;AAAA,UACN,YAAAK;AAAA,UACA;AAAA,UACA,MAAMJ,KAAI,OAAO;AAAA,UACjB,QAAQA,KAAI;AAAA,UACZ,eAAAE;AAAA,UACA,WAAW,eAAe,MAAM,OAAO;AAAA,UACvC,UAAU;AAAA,QACX,CAAC;AAAA,MACF;AACA;AAAA,IACD;AAEA,QAAI,SAAS,QAAQ,CAAC,YAAY;AACjC,SAAG,aAAa,MAAM,CAAC,UAAU,MAAM,OAAO,UAAU,CAAC;AACzD;AAAA,IACD;AAEA,UAAM,YAAY;AAClB,UAAM,WAAW,UAAU;AAC3B,QAAI,CAAC,UAAU;AACd,SAAG,aAAa,MAAM,CAAC,UAAU,MAAM,OAAO,UAAU,CAAC;AACzD;AAAA,IACD;AAEA,UAAM,OAAO,SAAS,QAAQ,UAAU;AACxC,UAAM,MAAM,WAAW,8BAA8B,KAAK,SAAS,CAAC;AACpE,UAAM,aAAa,kBAAkB,MAAM,UAAU;AACrD,UAAM,gBAAgB,aAAa,WAAW,YAAY,IAAI,OAAO,CAAC,IAAI;AAC1E,UAAM,OAAO,eAAe;AAC5B,UAAM,aAAa,kBAAkB,IAAI;AAEzC,UAAM,WAA0B,CAAC;AAGjC,QACC,GAAG,mBAAmB,IAAI,KAC1B,GAAG,uBAAuB,IAAI,KAC9B,GAAG,kBAAkB,IAAI,GACxB;AACD,iBAAW,UAAU,KAAK,SAAS;AAClC,cAAM,aAAa,aAAa,OAAO,IAAI;AAC3C,YAAI,CAAC,WAAY;AACjB,cAAM,aAAc,OAA+B,MAAM,QAAQ,UAAU,KAAK;AAChF,cAAM,YAAY,WAAW,8BAA8B,OAAO,SAAS,CAAC;AAC5E,cAAM,gBAAgB,kBAAkB,QAAQ,UAAU;AAC1D,cAAM,YAAY,gBAAgB,WAAW,eAAe,UAAU,OAAO,CAAC,IAAI;AAClF,cAAM,aAAa,WAAW;AAC9B,cAAM,mBAAmB,kBAAkB,UAAU;AAErD,iBAAS,KAAK;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,YAAY;AAAA,UACZ;AAAA,UACA,MAAM,UAAU,OAAO;AAAA,UACvB,QAAQ,UAAU;AAAA,UAClB,eAAe;AAAA,UACf,WAAW,eAAe,QAA0B,OAAO;AAAA,UAC3D,UAAU;AAAA,QACX,CAAC;AAAA,MACF;AAAA,IACD;AAEA,YAAQ,KAAK;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,IAAI,OAAO;AAAA,MACjB,QAAQ,IAAI;AAAA,MACZ;AAAA,MACA,WAAW,eAAe,WAA6B,OAAO;AAAA,MAC9D,UAAU,SAAS,SAAS,IAAI,WAAW;AAAA,MAC3C,UAAU;AAAA,IACX,CAAC;AAAA,EACF;AAEA,KAAG,aAAa,YAAY,CAAC,SAAS,MAAM,MAAM,KAAK,CAAC;AACxD,SAAO;AACR;AAcO,SAAS,aAAa,QAAgC;AAC5D,SAAO;AAAA,IACN,OAAsB;AAErB,YAAM,eAAeG,SAAQ,OAAO,QAAQ;AAC5C,YAAM,aAAa,GAAG,eAAe,cAAc,CAAC,SAAS,aAAa,MAAM,MAAM,CAAC;AAEvF,UAAI,WAAW,OAAO;AACrB,cAAM,IAAI;AAAA,UACT,8BAA8B,YAAY,KAAK,GAAG,6BAA6B,WAAW,MAAM,aAAa,IAAI,CAAC;AAAA,QACnH;AAAA,MACD;AAEA,YAAM,oBAAoB,GAAG;AAAA,QAC5B,WAAW;AAAA,QACX,GAAG;AAAA,QACHA,SAAQ,OAAO,OAAO;AAAA,MACvB;AAEA,YAAM,UAAU,GAAG,cAAc;AAAA,QAChC,WAAW,kBAAkB;AAAA,QAC7B,SAAS,kBAAkB;AAAA,MAC5B,CAAC;AAED,YAAM,UAAU,QAAQ,eAAe;AAEvC,YAAM,qBAAqB,IAAI,mBAAmB;AAClD,YAAM,cAAc,IAAI,YAAY,kBAAkB;AAEtD,YAAM,aAA4B,CAAC;AAEnC,iBAAW,cAAc,QAAQ,eAAe,GAAG;AAElD,YAAI,WAAW,qBAAqB,WAAW,SAAS,SAAS,cAAc,GAAG;AACjF;AAAA,QACD;AAEA,cAAM,cAAc,uBAAuB,YAAY,SAAS,WAAW;AAC3E,mBAAW,KAAK,GAAG,WAAW;AAAA,MAC/B;AAEA,aAAO;AAAA,IACR;AAAA,EACD;AACD;","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 * @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 * @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 * @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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge-ts/core",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
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/enforcer": "0.2.1",
33
- "@forge-ts/gen": "0.2.1",
34
- "@forge-ts/api": "0.2.1"
32
+ "@forge-ts/api": "0.3.0",
33
+ "@forge-ts/enforcer": "0.3.0",
34
+ "@forge-ts/gen": "0.3.0"
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"}