@metamask-previews/platform-api-docs 0.0.0-preview-1275d0fda
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/CHANGELOG.md +14 -0
- package/LICENSE +6 -0
- package/LICENSE.APACHE2 +201 -0
- package/LICENSE.MIT +21 -0
- package/README.md +39 -0
- package/dist/cli.cjs +214 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +3 -0
- package/dist/cli.d.cts.map +1 -0
- package/dist/cli.d.mts +3 -0
- package/dist/cli.d.mts.map +1 -0
- package/dist/cli.mjs +212 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/discovery.cjs +53 -0
- package/dist/discovery.cjs.map +1 -0
- package/dist/discovery.d.cts +22 -0
- package/dist/discovery.d.cts.map +1 -0
- package/dist/discovery.d.mts +22 -0
- package/dist/discovery.d.mts.map +1 -0
- package/dist/discovery.mjs +48 -0
- package/dist/discovery.mjs.map +1 -0
- package/dist/extraction.cjs +745 -0
- package/dist/extraction.cjs.map +1 -0
- package/dist/extraction.d.cts +40 -0
- package/dist/extraction.d.cts.map +1 -0
- package/dist/extraction.d.mts +40 -0
- package/dist/extraction.d.mts.map +1 -0
- package/dist/extraction.mjs +716 -0
- package/dist/extraction.mjs.map +1 -0
- package/dist/generate.cjs +373 -0
- package/dist/generate.cjs.map +1 -0
- package/dist/generate.d.cts +37 -0
- package/dist/generate.d.cts.map +1 -0
- package/dist/generate.d.mts +37 -0
- package/dist/generate.d.mts.map +1 -0
- package/dist/generate.mjs +346 -0
- package/dist/generate.mjs.map +1 -0
- package/dist/markdown.cjs +239 -0
- package/dist/markdown.cjs.map +1 -0
- package/dist/markdown.d.cts +52 -0
- package/dist/markdown.d.cts.map +1 -0
- package/dist/markdown.d.mts +52 -0
- package/dist/markdown.d.mts.map +1 -0
- package/dist/markdown.mjs +232 -0
- package/dist/markdown.mjs.map +1 -0
- package/dist/types.cjs +3 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +63 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +63 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/package.json +75 -0
- package/site/docusaurus.config.ts +103 -0
- package/site/src/css/custom.css +336 -0
- package/site/static/fonts/MM-Sans/MM_Sans_Mono-Regular.woff2 +0 -0
- package/site/static/img/favicons/favicon-96x96.png +0 -0
- package/site/static/img/metamask-fox.svg +12 -0
- package/site/static/img/metamask-logo-dark.svg +3 -0
- package/site/static/img/metamask-logo.svg +3 -0
- package/site/tsconfig.json +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.cjs","sourceRoot":"","sources":["../src/extraction.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from 'node:path';\nimport type {\n InterfaceDeclaration,\n JSDocableNode,\n JSDocTag,\n MethodDeclaration,\n Node as TsMorphNode,\n PropertySignature,\n SourceFile,\n TemplateLiteralTypeNode,\n TypeAliasDeclaration,\n TypeElementTypes,\n TypeNode,\n} from 'ts-morph';\nimport { Node as NodeGuards, Project, ts } from 'ts-morph';\n\nimport type {\n ExtractedMessengerCapabilityType,\n MethodInfo,\n DocumentedParameter,\n} from './types';\n\n// ---------------------------------------------------------------------------\n// JSDoc utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Convert `{@link X}` references inside a string to plain backtick code spans,\n * and escape any remaining (out-of-backtick) curly braces so the output is\n * safe to drop into MDX.\n *\n * @param text - The raw text to normalize.\n * @returns The text with `@link` resolved and stray braces escaped.\n */\nfunction escapeJsDocTextForMdx(text: string): string {\n const withLinksResolved = text.replace(/\\{@link\\s+([^}]+)\\}/gu, '`$1`');\n return withLinksResolved.replace(\n /`[^`]*`|(\\{)|(\\})/gu,\n (match, open: string | undefined, close: string | undefined) => {\n if (open) {\n return '\\\\{';\n }\n if (close) {\n return '\\\\}';\n }\n return match;\n },\n );\n}\n\n/**\n * Extract a JSDoc tag's comment text, normalizing whitespace so continuation\n * lines are joined with single spaces. ts-morph returns the raw comment with\n * embedded newlines preserved; we collapse those for the markdown output.\n *\n * @param tag - The JSDoc tag.\n * @returns The flattened comment text.\n */\nfunction extractJsDocTagComment(tag: JSDocTag): string {\n // istanbul ignore next: ts-morph returns null for tags without comment text,\n // but every fixture tag we extract from carries a comment.\n return (tag.getCommentText() ?? '').replace(/\\s+/gu, ' ').trim();\n}\n\n/**\n * Strip the conventional `- ` separator from the start of a `@param` tag's\n * comment. JSDoc style is `@param name - description`, and ts-morph hands us\n * back `- description` for the comment. The hyphen is purely cosmetic; we'd\n * rather render the description without it.\n *\n * @param comment - The flattened comment text from a `@param` tag.\n * @returns The comment with any leading `- ` (or `– `, `— `) removed.\n */\nfunction stripParamSeparator(comment: string): string {\n return comment.replace(/^[-–—]\\s*/u, '');\n}\n\n/**\n * Decompose a node's JSDoc into the parts the rendered docs need:\n *\n * - `description` — the body above the first tag, with `@deprecated` comments\n * appended as `**Deprecated:** <comment>` lines and normalized for MDX\n * (curly braces escaped, `{@link}` resolved),\n * - `params` — every `@param` tag in source order, with name and description,\n * - `returns` — the `@returns` tag's comment, or empty string if absent.\n *\n * Other tags (`@see`, `@throws`, `@template`, `@example`) are dropped.\n *\n * @param node - The AST node to extract JSDoc from.\n * @returns The decomposed JSDoc; empty strings/arrays when the node has no JSDoc.\n */\nfunction extractJsDoc(node: JSDocableNode): {\n description: string;\n params: DocumentedParameter[];\n returns: string;\n} {\n const jsDocs = node.getJsDocs();\n if (jsDocs.length === 0) {\n return { description: '', params: [], returns: '' };\n }\n\n const jsDoc = jsDocs[0];\n const descriptionBody = jsDoc.getDescription().trim();\n\n const deprecatedLines: string[] = [];\n const params: DocumentedParameter[] = [];\n let returns = '';\n\n for (const tag of jsDoc.getTags()) {\n const tagName = tag.getTagName();\n if (tagName === 'deprecated') {\n const comment = extractJsDocTagComment(tag);\n // istanbul ignore next: bare `@deprecated` (without explanatory text)\n // doesn't appear in messenger JSDoc in practice.\n deprecatedLines.push(\n comment ? `**Deprecated:** ${comment}` : '**Deprecated:**',\n );\n } else if (tagName === 'param' && NodeGuards.isJSDocParameterTag(tag)) {\n const nameNode = tag.getNameNode();\n // istanbul ignore next: `@param` tags without a name aren't valid JSDoc.\n if (!nameNode) {\n continue;\n }\n params.push({\n name: nameNode.getText(),\n description: escapeJsDocTextForMdx(\n stripParamSeparator(extractJsDocTagComment(tag)),\n ),\n });\n } else if (tagName === 'returns' || tagName === 'return') {\n returns = escapeJsDocTextForMdx(extractJsDocTagComment(tag));\n }\n }\n\n const description = escapeJsDocTextForMdx(\n [descriptionBody, ...deprecatedLines]\n .filter((line) => line.length > 0)\n .join('\\n'),\n );\n\n return { description, params, returns };\n}\n\n/**\n * Check whether a node has an `@deprecated` JSDoc tag.\n *\n * @param node - The AST node to check.\n * @returns True if the node has an `@deprecated` tag.\n */\nfunction isDeprecated(node: JSDocableNode): boolean {\n return node\n .getJsDocs()\n .flatMap((jsDoc) => jsDoc.getTags())\n .some((tag) => tag.getTagName() === 'deprecated');\n}\n\n// ---------------------------------------------------------------------------\n// Type-resolution helpers (powered by ts-morph's type checker)\n// ---------------------------------------------------------------------------\n\n/**\n * Resolve a TemplateLiteralTypeNode (e.g. `` `${typeof X}:foo` ``) to its\n * concrete string value, using the type checker to follow `typeof X` to its\n * literal type. Returns null if the type checker can't reduce it to a single\n * string literal.\n *\n * @param node - The template literal type node.\n * @returns The resolved string, or null.\n */\nfunction resolveTemplateLiteralType(\n node: TemplateLiteralTypeNode,\n): string | null {\n const type = node.getType();\n if (type.isStringLiteral()) {\n return type.getLiteralValueOrThrow() as string;\n }\n // istanbul ignore next: messenger fixtures always reduce template literal\n // types to a single string literal via `typeof X` constants.\n return null;\n}\n\n/**\n * Resolve a capability-type-constructor's first generic argument to a\n * namespace string. Accepts either `typeof X` (resolved via the type checker)\n * or a string literal.\n *\n * @param typeArg - The first generic argument node.\n * @returns The resolved namespace, or null.\n */\nfunction resolveNamespaceFromTypeArg(typeArg: TsMorphNode): string | null {\n if (NodeGuards.isTypeQuery(typeArg)) {\n const type = typeArg.getType();\n if (type.isStringLiteral()) {\n return type.getLiteralValueOrThrow() as string;\n }\n }\n if (NodeGuards.isLiteralTypeNode(typeArg)) {\n const literal = typeArg.getLiteral();\n // istanbul ignore else: only string literals are valid namespace args.\n if (NodeGuards.isStringLiteral(literal)) {\n return literal.getLiteralValue();\n }\n }\n // istanbul ignore next: namespace args are always a `typeof X` query or a\n // string literal in valid messenger usage.\n return null;\n}\n\n/**\n * If `typeNode` is `Class['method']`, resolve `Class` to its declaration\n * (across files if needed via the type checker) and look up the method by\n * name. Returns the method declaration when found.\n *\n * @param typeNode - The handler's type node.\n * @returns The method declaration, or null.\n */\nfunction resolveIndexedAccessMethod(\n typeNode: TypeNode | undefined,\n): MethodDeclaration | null {\n if (!typeNode || !NodeGuards.isIndexedAccessTypeNode(typeNode)) {\n return null;\n }\n const objectType = typeNode.getObjectTypeNode();\n const indexType = typeNode.getIndexTypeNode();\n\n // istanbul ignore next: handler indexed-access types in messenger fixtures\n // always reference a class via TypeReference.\n if (!NodeGuards.isTypeReference(objectType)) {\n return null;\n }\n // istanbul ignore next: the index in `Class['method']` is always a literal\n // type node in valid handler syntax.\n if (!NodeGuards.isLiteralTypeNode(indexType)) {\n return null;\n }\n const indexLiteral = indexType.getLiteral();\n // The index can be written as `'method'`, `\"method\"`, or `` `method` ``.\n // The first two land as `StringLiteral`; the bare template literal is a\n // `NoSubstitutionTemplateLiteral`.\n // istanbul ignore next: numeric/boolean indices aren't valid method names.\n if (\n !NodeGuards.isStringLiteral(indexLiteral) &&\n !NodeGuards.isNoSubstitutionTemplateLiteral(indexLiteral)\n ) {\n return null;\n }\n const methodName = indexLiteral.getLiteralValue();\n\n const classNameNode = objectType.getTypeName();\n // istanbul ignore next: qualified-name class references aren't used in\n // messenger handler types.\n if (!NodeGuards.isIdentifier(classNameNode)) {\n return null;\n }\n const localSymbol = classNameNode.getSymbol();\n // istanbul ignore next: a referenced class name always resolves to a symbol\n // in a typechecked project.\n if (!localSymbol) {\n return null;\n }\n // Follow the import alias (if any) so we can find the class declaration in\n // its home file.\n const symbol = localSymbol.getAliasedSymbol() ?? localSymbol;\n\n // istanbul ignore next: a resolved symbol always exposes its declarations\n // array in a typechecked project.\n for (const declaration of symbol.getDeclarations() ?? []) {\n if (NodeGuards.isClassDeclaration(declaration)) {\n const method = declaration.getMethod(methodName);\n if (method) {\n return method;\n }\n }\n }\n // istanbul ignore next: only reached if the indexed method isn't declared\n // on any of the resolved class declarations, which doesn't happen in valid\n // handler types.\n return null;\n}\n\n// ---------------------------------------------------------------------------\n// Method info\n// ---------------------------------------------------------------------------\n\n/**\n * Build a {@link MethodInfo} record for a class method — its textual\n * signature plus the JSDoc description, `@param`, and `@returns` extracted\n * from the method itself.\n *\n * @param method - The method declaration.\n * @returns The method info.\n */\nfunction buildMethodInfo(method: MethodDeclaration): MethodInfo {\n const signatureParams = method\n .getParameters()\n .map((param) => {\n const paramName = param.getNameNode().getText();\n const optional = param.hasQuestionToken() ? '?' : '';\n const typeNode = param.getTypeNode();\n // istanbul ignore next: handler parameters in messenger fixtures always\n // declare an explicit type.\n const paramType = typeNode ? typeNode.getText() : 'unknown';\n return `${paramName}${optional}: ${paramType}`;\n })\n .join(', ');\n\n const returnTypeNode = method.getReturnTypeNode();\n // istanbul ignore next: handler class methods in messenger fixtures always\n // declare an explicit return type.\n const returnType = returnTypeNode ? returnTypeNode.getText() : 'void';\n // For async methods, the declared return type already includes `Promise<>`,\n // so we don't need to wrap again.\n const signature = `(${signatureParams}) => ${returnType}`;\n\n const { description, params, returns } = extractJsDoc(method);\n\n return { jsDoc: description, params, returns, signature };\n}\n\n// ---------------------------------------------------------------------------\n// Messenger discovery\n// ---------------------------------------------------------------------------\n\n/**\n * A capability type declared somewhere reachable from a `*Messenger`, along\n * with the kind (action/event) it was found under.\n */\ntype MessengerCapabilityTypeDeclaration = {\n statement: TypeAliasDeclaration | InterfaceDeclaration;\n kind: 'action' | 'event';\n};\n\n/**\n * Find every `*Messenger` type alias in a source file, parse its\n * `Messenger<Namespace, Actions, Events>` generic arguments, and return the\n * capability-type declarations referenced from the Actions and Events slots\n * — paired with the kind under which they were referenced.\n *\n * The walker follows imported references via ts-morph's symbol resolution,\n * so capability types declared in sibling files (e.g. the auto-generated\n * `*-method-action-types.ts` files) are discovered even though only the\n * `*Messenger` declaration is local to this file.\n *\n * @param sourceFile - The TypeScript source file to scan.\n * @returns The list of locally- and transitively-referenced capability types.\n */\nfunction collectMessengerCapabilityTypeDeclarations(\n sourceFile: SourceFile,\n): MessengerCapabilityTypeDeclaration[] {\n const declarations: MessengerCapabilityTypeDeclaration[] = [];\n const seen = new Set<TsMorphNode>();\n\n for (const typeAlias of sourceFile.getTypeAliases()) {\n if (!typeAlias.getName().endsWith('Messenger')) {\n continue;\n }\n const body = typeAlias.getTypeNode();\n if (!body || !NodeGuards.isTypeReference(body)) {\n continue;\n }\n const typeArgs = body.getTypeArguments();\n if (typeArgs.length < 3) {\n continue;\n }\n\n walkCapabilityTypes(typeArgs[1], 'action', declarations, seen);\n walkCapabilityTypes(typeArgs[2], 'event', declarations, seen);\n }\n\n return declarations;\n}\n\n/**\n * Walk an Actions or Events type-argument tree and append the underlying\n * capability-type declarations to `output`. Unions are expanded. Type\n * references are resolved via ts-morph's symbol resolution (so imported\n * names are followed across files); a resolved alias whose body is itself a\n * union expands transparently, leaving the intermediate alias unrecorded.\n *\n * A resolved alias whose body is a single non-union type reference (e.g.\n * `type AllowedActions = ConnectivityControllerGetStateAction`) is treated\n * as an opaque re-export — the walk stops there, leaving the target to be\n * documented from its home package by the dedup logic later.\n *\n * For example, given:\n *\n * ```typescript\n * // NetworkController.ts\n * import type { NetworkControllerMethodActions } from './NetworkController-method-action-types';\n * type NetworkControllerActions =\n * | NetworkControllerGetStateAction\n * | NetworkControllerMethodActions;\n * type NetworkControllerMessenger = Messenger<typeof name, NetworkControllerActions, ...>;\n *\n * // NetworkController-method-action-types.ts\n * export type NetworkControllerAddNetworkAction = {\n * type: 'NetworkController:addNetwork';\n * handler: NetworkController['addNetwork'];\n * };\n * // ... more ...\n * export type NetworkControllerMethodActions =\n * | NetworkControllerAddNetworkAction\n * | ...;\n * ```\n *\n * walking the Actions slot yields each individual `NetworkController*Action`\n * declaration — both the local `NetworkControllerGetStateAction` and the\n * cross-file ones reached via `NetworkControllerMethodActions`.\n *\n * @param node - The Actions or Events type-argument node to walk.\n * @param kind - Whether to tag found declarations as 'action' or 'event'.\n * @param output - The list to append discovered declarations to.\n * @param seen - Declaration nodes already visited (prevents cycles and\n * duplicate work).\n */\nfunction walkCapabilityTypes(\n node: TsMorphNode,\n kind: 'action' | 'event',\n output: MessengerCapabilityTypeDeclaration[],\n seen: Set<TsMorphNode>,\n): void {\n if (NodeGuards.isUnionTypeNode(node)) {\n for (const member of node.getTypeNodes()) {\n walkCapabilityTypes(member, kind, output, seen);\n }\n return;\n }\n\n if (!NodeGuards.isTypeReference(node)) {\n return;\n }\n const nameNode = node.getTypeName();\n // istanbul ignore next: qualified-name references aren't used in messenger\n // generic arguments.\n if (!NodeGuards.isIdentifier(nameNode)) {\n return;\n }\n // For a TypeReference whose name was imported, `getSymbol()` returns the\n // import alias symbol — its only declaration is the `ImportSpecifier`.\n // `getAliasedSymbol()` follows the alias to the original declaration in\n // the imported file. Use it when present; otherwise fall back to the\n // (already-local) symbol.\n const localSymbol = nameNode.getSymbol();\n // istanbul ignore next: a referenced type name always resolves to a symbol\n // in a typechecked project.\n if (!localSymbol) {\n return;\n }\n const symbol = localSymbol.getAliasedSymbol() ?? localSymbol;\n\n // istanbul ignore next: a resolved symbol always exposes its declarations\n // array in a typechecked project.\n for (const declaration of symbol.getDeclarations() ?? []) {\n if (seen.has(declaration)) {\n continue;\n }\n seen.add(declaration);\n\n if (NodeGuards.isTypeAliasDeclaration(declaration)) {\n const aliasBody = declaration.getTypeNode();\n if (aliasBody && NodeGuards.isUnionTypeNode(aliasBody)) {\n // Umbrella union — descend through it without documenting the alias.\n walkCapabilityTypes(aliasBody, kind, output, seen);\n continue;\n }\n // A bare TypeReference body with no type arguments (e.g.\n // `type AllowedActions = ConnectivityControllerGetStateAction`) is a\n // plain re-export — leave the target to be documented from its home\n // package, not this one. TypeReferences *with* type arguments are\n // capability-type-constructor invocations (e.g.\n // `ControllerGetStateAction<typeof name, State>`) and are recorded.\n if (\n aliasBody &&\n NodeGuards.isTypeReference(aliasBody) &&\n aliasBody.getTypeArguments().length === 0\n ) {\n continue;\n }\n // TypeLiteral body, capability-type-constructor invocation, etc.\n output.push({ statement: declaration, kind });\n } else if (NodeGuards.isInterfaceDeclaration(declaration)) {\n output.push({ statement: declaration, kind });\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Per-statement extraction\n// ---------------------------------------------------------------------------\n\n/**\n * Extract a single capability-type declaration to an\n * {@link ExtractedMessengerCapabilityType}.\n *\n * @param statement - The type alias or interface declaration.\n * @param kind - Whether this statement is referenced as an action or an event.\n * @param projectPath - Project root, used for computing relative source paths.\n * @returns The extracted capability, or null if no recognized pattern matches.\n */\nfunction extractFromMessengerCapabilityType(\n statement: TypeAliasDeclaration | InterfaceDeclaration,\n kind: 'action' | 'event',\n projectPath: string,\n): ExtractedMessengerCapabilityType | null {\n const inlineCapability = extractFromInlineMessengerCapabilityType(\n statement,\n kind,\n projectPath,\n );\n if (inlineCapability) {\n return inlineCapability;\n }\n\n if (NodeGuards.isTypeAliasDeclaration(statement)) {\n return extractFromCapabilityTypeConstructor(statement, kind, projectPath);\n }\n\n // istanbul ignore next: interface declarations always have members and\n // therefore an inline shape, so the inline branch above always returns\n // non-null here.\n return null;\n}\n\n/**\n * Try the inline messenger-capability-type pattern:\n * `{ type: '...'; handler: ... }` (action) or\n * `{ type: '...'; payload: ... }` (event), expressed as either a type alias\n * body or an interface body.\n *\n * @param statement - The type alias or interface declaration.\n * @param kind - The expected kind (action or event).\n * @param projectPath - Project root, used for computing relative source paths.\n * @returns The extracted capability, or null if the shape doesn't match.\n */\nfunction extractFromInlineMessengerCapabilityType(\n statement: TypeAliasDeclaration | InterfaceDeclaration,\n kind: 'action' | 'event',\n projectPath: string,\n): ExtractedMessengerCapabilityType | null {\n let members: TypeElementTypes[] | undefined;\n if (NodeGuards.isTypeAliasDeclaration(statement)) {\n const body = statement.getTypeNode();\n if (body && NodeGuards.isTypeLiteral(body)) {\n members = body.getMembers();\n }\n } else {\n members = statement.getMembers();\n }\n if (!members) {\n return null;\n }\n\n const typeString = resolveInlineTypeString(members);\n // istanbul ignore next: capabilities reachable via the messenger walk\n // always have a resolvable `Namespace:name` type string.\n if (!typeString?.includes(':')) {\n return null;\n }\n\n const handlerMember = getPropertyMember(members, 'handler');\n const payloadMember = getPropertyMember(members, 'payload');\n const rawSourceMember = kind === 'action' ? handlerMember : payloadMember;\n // istanbul ignore next: actions always have `handler` and events always\n // have `payload`; the messenger walk wouldn't have surfaced this\n // declaration otherwise.\n if (!rawSourceMember) {\n return null;\n }\n const rawSourceTypeNode = rawSourceMember.getTypeNode();\n // istanbul ignore next: property signatures we care about always have an\n // explicit type.\n if (!rawSourceTypeNode) {\n return null;\n }\n\n let handlerOrPayload = rawSourceTypeNode.getText().trim();\n let { description: jsDoc, params, returns } = extractJsDoc(statement);\n\n // For actions, if the handler resolves to a class method (`Class['method']`\n // — possibly in another file), inherit its signature plus any JSDoc fields\n // the type alias itself doesn't already provide.\n if (kind === 'action') {\n const resolvedMethod = resolveIndexedAccessMethod(rawSourceTypeNode);\n if (resolvedMethod) {\n const info = buildMethodInfo(resolvedMethod);\n handlerOrPayload = info.signature;\n if (!jsDoc && info.jsDoc) {\n jsDoc = info.jsDoc;\n }\n if (params.length === 0 && info.params.length > 0) {\n params = info.params;\n }\n if (!returns && info.returns) {\n returns = info.returns;\n }\n }\n }\n\n const sourceFile = statement.getSourceFile();\n return {\n typeName: statement.getName(),\n typeString,\n kind,\n jsDoc,\n params,\n returns,\n handlerOrPayload,\n sourceFile: path.relative(projectPath, sourceFile.getFilePath()),\n line: statement.getStartLineNumber(),\n deprecated: isDeprecated(statement),\n };\n}\n\n/**\n * Resolve the literal value of an inline shape's `type` property — either a\n * direct string literal or a template literal type with `typeof X`\n * substitutions (resolved via the type checker).\n *\n * @param members - The type elements of the inline shape.\n * @returns The resolved type string, or null if it can't be resolved.\n */\nfunction resolveInlineTypeString(members: TypeElementTypes[]): string | null {\n for (const member of members) {\n // istanbul ignore next: capability-type bodies only contain property\n // signatures.\n if (!NodeGuards.isPropertySignature(member)) {\n continue;\n }\n const memberNameNode = member.getNameNode();\n if (\n // istanbul ignore next: `type` is always a plain identifier.\n !NodeGuards.isIdentifier(memberNameNode) ||\n memberNameNode.getText() !== 'type'\n ) {\n continue;\n }\n const typeNode = member.getTypeNode();\n // istanbul ignore next: a `type` property without an explicit type\n // wouldn't compile.\n if (!typeNode) {\n continue;\n }\n if (NodeGuards.isLiteralTypeNode(typeNode)) {\n const literal = typeNode.getLiteral();\n // istanbul ignore next: messenger `type` fields are written as\n // quoted string literals in real fixtures; backtick template literals\n // are valid TypeScript but don't appear in practice.\n if (\n NodeGuards.isStringLiteral(literal) ||\n NodeGuards.isNoSubstitutionTemplateLiteral(literal)\n ) {\n return literal.getLiteralValue();\n }\n // istanbul ignore next: numeric/boolean literal types aren't valid as a\n // messenger `type` and don't appear in real fixtures.\n return null;\n }\n if (NodeGuards.isTemplateLiteralTypeNode(typeNode)) {\n return resolveTemplateLiteralType(typeNode);\n }\n }\n // istanbul ignore next: the inline shape always has a `type` member that\n // produces either a literal or template-literal type.\n return null;\n}\n\n/**\n * Find the `PropertySignature` named `propName` in a type literal body.\n *\n * @param members - The type literal members to search.\n * @param propName - The property name to find.\n * @returns The property signature, or null.\n */\nfunction getPropertyMember(\n members: TypeElementTypes[],\n propName: string,\n): PropertySignature | null {\n for (const member of members) {\n // istanbul ignore next: capability-type bodies only contain property\n // signatures.\n if (!NodeGuards.isPropertySignature(member)) {\n continue;\n }\n const memberNameNode = member.getNameNode();\n if (\n // istanbul ignore next: capability properties always have identifier names.\n !NodeGuards.isIdentifier(memberNameNode) ||\n memberNameNode.getText() !== propName\n ) {\n continue;\n }\n return member;\n }\n return null;\n}\n\n/**\n * Try the capability-type-constructor pattern:\n * `ControllerGetStateAction<typeof X, State>` for actions, or\n * `ControllerStateChangeEvent<typeof X, State>` for events.\n *\n * @param statement - The type alias declaration.\n * @param kind - The expected kind (action or event).\n * @param projectPath - Project root, used for computing relative source paths.\n * @returns The extracted capability, or null if the constructor doesn't match.\n */\nfunction extractFromCapabilityTypeConstructor(\n statement: TypeAliasDeclaration,\n kind: 'action' | 'event',\n projectPath: string,\n): ExtractedMessengerCapabilityType | null {\n const aliasBody = statement.getTypeNode();\n // istanbul ignore next: walker only records aliases whose body matches.\n if (!aliasBody || !NodeGuards.isTypeReference(aliasBody)) {\n return null;\n }\n const nameNode = aliasBody.getTypeName();\n // istanbul ignore next: qualified-name type references aren't used.\n if (!NodeGuards.isIdentifier(nameNode)) {\n return null;\n }\n const constructorName = nameNode.getText();\n const typeArgs = aliasBody.getTypeArguments();\n if (typeArgs.length < 2) {\n return null;\n }\n\n const expectedConstructor =\n kind === 'action'\n ? 'ControllerGetStateAction'\n : 'ControllerStateChangeEvent';\n if (constructorName !== expectedConstructor) {\n return null;\n }\n\n const namespace = resolveNamespaceFromTypeArg(typeArgs[0]);\n // istanbul ignore next: recognized constructors always have resolvable args.\n if (!namespace) {\n return null;\n }\n const stateArgText = typeArgs[1].getText();\n const { description, params, returns } = extractJsDoc(statement);\n\n const sourceFile = statement.getSourceFile();\n return {\n typeName: statement.getName(),\n typeString:\n kind === 'action' ? `${namespace}:getState` : `${namespace}:stateChange`,\n kind,\n jsDoc: description,\n params,\n returns,\n handlerOrPayload:\n kind === 'action'\n ? `() => ${stateArgText}`\n : `[${stateArgText}, Patch[]]`,\n sourceFile: path.relative(projectPath, sourceFile.getFilePath()),\n line: statement.getStartLineNumber(),\n deprecated: isDeprecated(statement),\n };\n}\n\n// ---------------------------------------------------------------------------\n// Public entry points\n// ---------------------------------------------------------------------------\n\n/**\n * Create a ts-morph Project configured for messenger-docs extraction. The\n * caller should add every source file that may be referenced (directly or\n * transitively) before calling {@link extractFromSourceFile}, so the type\n * checker can resolve cross-file references.\n *\n * @returns A new ts-morph Project.\n */\nexport function createExtractionProject(): Project {\n return new Project({\n compilerOptions: {\n allowJs: false,\n noEmit: true,\n // Match the project's permissive defaults — we just need symbol\n // resolution, not full typechecking.\n strict: false,\n skipLibCheck: true,\n // Explicit module options so cross-file symbol resolution works\n // regardless of the host process's tsconfig.\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeJs,\n },\n });\n}\n\n/**\n * Extract every messenger action/event type reachable from a single source\n * file's `*Messenger` declarations.\n *\n * The caller is responsible for ensuring `sourceFile` (plus any files it\n * imports from) belongs to a ts-morph Project so cross-file symbol resolution\n * works.\n *\n * @param sourceFile - The TypeScript source file to extract from.\n * @param projectPath - Project root, used for computing relative source paths.\n * @returns The extracted capability list.\n */\nexport function extractFromSourceFile(\n sourceFile: SourceFile,\n projectPath: string,\n): ExtractedMessengerCapabilityType[] {\n const declarations = collectMessengerCapabilityTypeDeclarations(sourceFile);\n if (declarations.length === 0) {\n return [];\n }\n\n const items: ExtractedMessengerCapabilityType[] = [];\n for (const { statement, kind } of declarations) {\n const item = extractFromMessengerCapabilityType(\n statement,\n kind,\n projectPath,\n );\n if (item) {\n items.push(item);\n }\n }\n return items;\n}\n\n/**\n * Convenience wrapper: extract from a single file by path. Loads the file\n * and any sibling files in its parent directory into a fresh Project so\n * relative imports resolve.\n *\n * For batch operations across many files, prefer\n * {@link createExtractionProject} + {@link extractFromSourceFile} so one\n * Project amortizes the type-checker setup across the whole run.\n *\n * @param filePath - The absolute path to the TypeScript file.\n * @param projectPath - Base path for computing relative source paths.\n * @returns A promise that resolves to the extracted capability list.\n */\nexport async function extractFromFile(\n filePath: string,\n projectPath: string,\n): Promise<ExtractedMessengerCapabilityType[]> {\n const project = createExtractionProject();\n const parentDir = path.dirname(filePath);\n // Load the file's directory so single-hop relative imports resolve.\n project.addSourceFilesAtPaths([\n path.join(parentDir, '**/*.ts'),\n path.join(parentDir, '**/*.d.cts'),\n ]);\n const sourceFile = project.getSourceFile(filePath);\n // istanbul ignore next: the path always exists since the caller just\n // wrote the file or it was scanned from disk.\n if (!sourceFile) {\n return [];\n }\n return extractFromSourceFile(sourceFile, projectPath);\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { SourceFile } from "ts-morph";
|
|
2
|
+
import { Project } from "ts-morph";
|
|
3
|
+
import type { ExtractedMessengerCapabilityType } from "./types.cjs";
|
|
4
|
+
/**
|
|
5
|
+
* Create a ts-morph Project configured for messenger-docs extraction. The
|
|
6
|
+
* caller should add every source file that may be referenced (directly or
|
|
7
|
+
* transitively) before calling {@link extractFromSourceFile}, so the type
|
|
8
|
+
* checker can resolve cross-file references.
|
|
9
|
+
*
|
|
10
|
+
* @returns A new ts-morph Project.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createExtractionProject(): Project;
|
|
13
|
+
/**
|
|
14
|
+
* Extract every messenger action/event type reachable from a single source
|
|
15
|
+
* file's `*Messenger` declarations.
|
|
16
|
+
*
|
|
17
|
+
* The caller is responsible for ensuring `sourceFile` (plus any files it
|
|
18
|
+
* imports from) belongs to a ts-morph Project so cross-file symbol resolution
|
|
19
|
+
* works.
|
|
20
|
+
*
|
|
21
|
+
* @param sourceFile - The TypeScript source file to extract from.
|
|
22
|
+
* @param projectPath - Project root, used for computing relative source paths.
|
|
23
|
+
* @returns The extracted capability list.
|
|
24
|
+
*/
|
|
25
|
+
export declare function extractFromSourceFile(sourceFile: SourceFile, projectPath: string): ExtractedMessengerCapabilityType[];
|
|
26
|
+
/**
|
|
27
|
+
* Convenience wrapper: extract from a single file by path. Loads the file
|
|
28
|
+
* and any sibling files in its parent directory into a fresh Project so
|
|
29
|
+
* relative imports resolve.
|
|
30
|
+
*
|
|
31
|
+
* For batch operations across many files, prefer
|
|
32
|
+
* {@link createExtractionProject} + {@link extractFromSourceFile} so one
|
|
33
|
+
* Project amortizes the type-checker setup across the whole run.
|
|
34
|
+
*
|
|
35
|
+
* @param filePath - The absolute path to the TypeScript file.
|
|
36
|
+
* @param projectPath - Base path for computing relative source paths.
|
|
37
|
+
* @returns A promise that resolves to the extracted capability list.
|
|
38
|
+
*/
|
|
39
|
+
export declare function extractFromFile(filePath: string, projectPath: string): Promise<ExtractedMessengerCapabilityType[]>;
|
|
40
|
+
//# sourceMappingURL=extraction.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.d.cts","sourceRoot":"","sources":["../src/extraction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,UAAU,EAKX,iBAAiB;AAClB,OAAO,EAAsB,OAAO,EAAM,iBAAiB;AAE3D,OAAO,KAAK,EACV,gCAAgC,EAGjC,oBAAgB;AA0uBjB;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAgBjD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAClB,gCAAgC,EAAE,CAkBpC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gCAAgC,EAAE,CAAC,CAe7C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { SourceFile } from "ts-morph";
|
|
2
|
+
import { Project } from "ts-morph";
|
|
3
|
+
import type { ExtractedMessengerCapabilityType } from "./types.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Create a ts-morph Project configured for messenger-docs extraction. The
|
|
6
|
+
* caller should add every source file that may be referenced (directly or
|
|
7
|
+
* transitively) before calling {@link extractFromSourceFile}, so the type
|
|
8
|
+
* checker can resolve cross-file references.
|
|
9
|
+
*
|
|
10
|
+
* @returns A new ts-morph Project.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createExtractionProject(): Project;
|
|
13
|
+
/**
|
|
14
|
+
* Extract every messenger action/event type reachable from a single source
|
|
15
|
+
* file's `*Messenger` declarations.
|
|
16
|
+
*
|
|
17
|
+
* The caller is responsible for ensuring `sourceFile` (plus any files it
|
|
18
|
+
* imports from) belongs to a ts-morph Project so cross-file symbol resolution
|
|
19
|
+
* works.
|
|
20
|
+
*
|
|
21
|
+
* @param sourceFile - The TypeScript source file to extract from.
|
|
22
|
+
* @param projectPath - Project root, used for computing relative source paths.
|
|
23
|
+
* @returns The extracted capability list.
|
|
24
|
+
*/
|
|
25
|
+
export declare function extractFromSourceFile(sourceFile: SourceFile, projectPath: string): ExtractedMessengerCapabilityType[];
|
|
26
|
+
/**
|
|
27
|
+
* Convenience wrapper: extract from a single file by path. Loads the file
|
|
28
|
+
* and any sibling files in its parent directory into a fresh Project so
|
|
29
|
+
* relative imports resolve.
|
|
30
|
+
*
|
|
31
|
+
* For batch operations across many files, prefer
|
|
32
|
+
* {@link createExtractionProject} + {@link extractFromSourceFile} so one
|
|
33
|
+
* Project amortizes the type-checker setup across the whole run.
|
|
34
|
+
*
|
|
35
|
+
* @param filePath - The absolute path to the TypeScript file.
|
|
36
|
+
* @param projectPath - Base path for computing relative source paths.
|
|
37
|
+
* @returns A promise that resolves to the extracted capability list.
|
|
38
|
+
*/
|
|
39
|
+
export declare function extractFromFile(filePath: string, projectPath: string): Promise<ExtractedMessengerCapabilityType[]>;
|
|
40
|
+
//# sourceMappingURL=extraction.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.d.mts","sourceRoot":"","sources":["../src/extraction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAOV,UAAU,EAKX,iBAAiB;AAClB,OAAO,EAAsB,OAAO,EAAM,iBAAiB;AAE3D,OAAO,KAAK,EACV,gCAAgC,EAGjC,oBAAgB;AA0uBjB;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAgBjD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAClB,gCAAgC,EAAE,CAkBpC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gCAAgC,EAAE,CAAC,CAe7C"}
|