@gtkx/codegen 1.0.0 → 1.1.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 +1 -1
- package/dist/analysis/descriptor-render.d.ts +12 -15
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +48 -31
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +16 -7
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +15 -3
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/inheritance.d.ts +4 -2
- package/dist/analysis/inheritance.d.ts.map +1 -1
- package/dist/analysis/inheritance.js +80 -38
- package/dist/analysis/inheritance.js.map +1 -1
- package/dist/analysis/interface-conflicts.d.ts +23 -0
- package/dist/analysis/interface-conflicts.d.ts.map +1 -0
- package/dist/analysis/interface-conflicts.js +144 -0
- package/dist/analysis/interface-conflicts.js.map +1 -0
- package/dist/analysis/param-capability.d.ts.map +1 -1
- package/dist/analysis/param-capability.js +3 -4
- package/dist/analysis/param-capability.js.map +1 -1
- package/dist/analysis/param-structure.js +2 -2
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +10 -17
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/analysis/type-key.d.ts +5 -0
- package/dist/analysis/type-key.d.ts.map +1 -0
- package/dist/analysis/type-key.js +9 -0
- package/dist/analysis/type-key.js.map +1 -0
- package/dist/compile.d.ts +12 -3
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +73 -24
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +10 -9
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/element-page.d.ts.map +1 -1
- package/dist/docs/element-page.js +5 -3
- package/dist/docs/element-page.js.map +1 -1
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +85 -18
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/docs/render.d.ts +2 -1
- package/dist/docs/render.d.ts.map +1 -1
- package/dist/docs/render.js +5 -4
- package/dist/docs/render.js.map +1 -1
- package/dist/docs/symbol-page.d.ts.map +1 -1
- package/dist/docs/symbol-page.js +9 -6
- package/dist/docs/symbol-page.js.map +1 -1
- package/dist/fingerprint.d.ts +12 -1
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +44 -28
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts.map +1 -1
- package/dist/gi.js +1 -0
- package/dist/gi.js.map +1 -1
- package/dist/gir/ancestry.d.ts +7 -1
- package/dist/gir/ancestry.d.ts.map +1 -1
- package/dist/gir/ancestry.js +9 -1
- package/dist/gir/ancestry.js.map +1 -1
- package/dist/gir/annotations.d.ts +1 -2
- package/dist/gir/annotations.d.ts.map +1 -1
- package/dist/gir/annotations.js +1 -1
- package/dist/gir/annotations.js.map +1 -1
- package/dist/gir/cursor-overrides.d.ts +8 -0
- package/dist/gir/cursor-overrides.d.ts.map +1 -0
- package/dist/gir/cursor-overrides.js +6 -0
- package/dist/gir/cursor-overrides.js.map +1 -0
- package/dist/gir/emittable.d.ts +7 -0
- package/dist/gir/emittable.d.ts.map +1 -0
- package/dist/gir/emittable.js +3 -0
- package/dist/gir/emittable.js.map +1 -0
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +28 -2
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/library.js +1 -1
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/namespace.d.ts +5 -1
- package/dist/gir/namespace.d.ts.map +1 -1
- package/dist/gir/namespace.js +4 -2
- package/dist/gir/namespace.js.map +1 -1
- package/dist/gir/parameter.d.ts +13 -1
- package/dist/gir/parameter.d.ts.map +1 -1
- package/dist/gir/parameter.js +1 -0
- package/dist/gir/parameter.js.map +1 -1
- package/dist/gir/parse.d.ts.map +1 -1
- package/dist/gir/parse.js +3 -6
- package/dist/gir/parse.js.map +1 -1
- package/dist/guards.d.ts +16 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +11 -0
- package/dist/guards.js.map +1 -0
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -1
- package/dist/json.d.ts +3 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +11 -0
- package/dist/json.js.map +1 -0
- package/dist/khronos/modules.d.ts.map +1 -1
- package/dist/khronos/modules.js +22 -7
- package/dist/khronos/modules.js.map +1 -1
- package/dist/khronos/parse.d.ts.map +1 -1
- package/dist/khronos/parse.js +3 -4
- package/dist/khronos/parse.js.map +1 -1
- package/dist/khronos/pipeline.d.ts +1 -1
- package/dist/khronos/pipeline.d.ts.map +1 -1
- package/dist/khronos/pipeline.js.map +1 -1
- package/dist/khronos/plan.d.ts +1 -7
- package/dist/khronos/plan.d.ts.map +1 -1
- package/dist/khronos/plan.js +1 -1
- package/dist/khronos/plan.js.map +1 -1
- package/dist/runner.d.ts +5 -1
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +16 -0
- package/dist/runner.js.map +1 -1
- package/dist/staging.d.ts +5 -0
- package/dist/staging.d.ts.map +1 -0
- package/dist/staging.js +57 -0
- package/dist/staging.js.map +1 -0
- package/dist/store/compile-store.d.ts.map +1 -1
- package/dist/store/compile-store.js +4 -2
- package/dist/store/compile-store.js.map +1 -1
- package/dist/store/gi/callables.d.ts +7 -2
- package/dist/store/gi/callables.d.ts.map +1 -1
- package/dist/store/gi/callables.js +25 -30
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/callback.d.ts.map +1 -1
- package/dist/store/gi/callback.js +9 -5
- package/dist/store/gi/callback.js.map +1 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +59 -38
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/companion.d.ts.map +1 -1
- package/dist/store/gi/companion.js +6 -6
- package/dist/store/gi/companion.js.map +1 -1
- package/dist/store/gi/constant.d.ts.map +1 -1
- package/dist/store/gi/constant.js +10 -2
- package/dist/store/gi/constant.js.map +1 -1
- package/dist/store/gi/constructor-props.js +1 -1
- package/dist/store/gi/constructor-props.js.map +1 -1
- package/dist/store/gi/enum.d.ts.map +1 -1
- package/dist/store/gi/enum.js +28 -8
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/function.d.ts +1 -3
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +24 -18
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/gtype-binding.d.ts.map +1 -1
- package/dist/store/gi/gtype-binding.js +4 -1
- package/dist/store/gi/gtype-binding.js.map +1 -1
- package/dist/store/gi/interface.d.ts.map +1 -1
- package/dist/store/gi/interface.js +32 -17
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/method.d.ts +7 -6
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +13 -21
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/param-marshal.d.ts +3 -2
- package/dist/store/gi/param-marshal.d.ts.map +1 -1
- package/dist/store/gi/param-marshal.js +50 -5
- package/dist/store/gi/param-marshal.js.map +1 -1
- package/dist/store/gi/pipeline.d.ts.map +1 -1
- package/dist/store/gi/pipeline.js +21 -10
- package/dist/store/gi/pipeline.js.map +1 -1
- package/dist/store/gi/properties.d.ts +2 -1
- package/dist/store/gi/properties.d.ts.map +1 -1
- package/dist/store/gi/properties.js +6 -3
- package/dist/store/gi/properties.js.map +1 -1
- package/dist/store/gi/property-accessor.d.ts +10 -5
- package/dist/store/gi/property-accessor.d.ts.map +1 -1
- package/dist/store/gi/property-accessor.js +95 -44
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts +8 -1
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +31 -10
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +5 -1
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record-layout.d.ts +6 -1
- package/dist/store/gi/record-layout.d.ts.map +1 -1
- package/dist/store/gi/record-layout.js +8 -1
- package/dist/store/gi/record-layout.js.map +1 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +19 -8
- package/dist/store/gi/record.js.map +1 -1
- package/dist/store/gi/registration.js +2 -2
- package/dist/store/gi/registration.js.map +1 -1
- package/dist/store/gi/signal.d.ts +2 -1
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +30 -24
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/value-marshalable.d.ts.map +1 -1
- package/dist/store/gi/value-marshalable.js +2 -1
- package/dist/store/gi/value-marshalable.js.map +1 -1
- package/dist/store/gi/vtable.d.ts +4 -1
- package/dist/store/gi/vtable.d.ts.map +1 -1
- package/dist/store/gi/vtable.js +60 -17
- package/dist/store/gi/vtable.js.map +1 -1
- package/dist/store/gi-store.d.ts +1 -0
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js +15 -20
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/generated-elements.d.ts +2 -1
- package/dist/store/jsx/generated-elements.d.ts.map +1 -1
- package/dist/store/jsx/generated-elements.js +13 -7
- package/dist/store/jsx/generated-elements.js.map +1 -1
- package/dist/store/jsx/jsx.js +3 -3
- package/dist/store/jsx/jsx.js.map +1 -1
- package/dist/store/jsx/metadata.d.ts.map +1 -1
- package/dist/store/jsx/metadata.js +3 -1
- package/dist/store/jsx/metadata.js.map +1 -1
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +3 -3
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/resolve-store.d.ts +14 -3
- package/dist/store/resolve-store.d.ts.map +1 -1
- package/dist/store/resolve-store.js +98 -15
- package/dist/store/resolve-store.js.map +1 -1
- package/dist/store/store-fs.d.ts +9 -6
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +59 -25
- package/dist/store/store-fs.js.map +1 -1
- package/dist/store/store-links.d.ts +3 -0
- package/dist/store/store-links.d.ts.map +1 -0
- package/dist/store/store-links.js +39 -0
- package/dist/store/store-links.js.map +1 -0
- package/dist/writer/comparison-context.d.ts +4 -0
- package/dist/writer/comparison-context.d.ts.map +1 -0
- package/dist/writer/comparison-context.js +13 -0
- package/dist/writer/comparison-context.js.map +1 -0
- package/dist/writer/context.d.ts +3 -3
- package/dist/writer/context.d.ts.map +1 -1
- package/dist/writer/context.js +11 -6
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/module.d.ts +13 -5
- package/dist/writer/module.d.ts.map +1 -1
- package/dist/writer/module.js +68 -11
- package/dist/writer/module.js.map +1 -1
- package/dist/xml.d.ts +7 -1
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +43 -1
- package/dist/xml.js.map +1 -1
- package/package.json +14 -3
- package/src/analysis/descriptor-render.ts +90 -45
- package/src/analysis/descriptor.ts +35 -8
- package/src/analysis/inheritance.ts +134 -44
- package/src/analysis/interface-conflicts.ts +237 -0
- package/src/analysis/param-capability.ts +3 -6
- package/src/analysis/param-structure.ts +2 -2
- package/src/analysis/ts-type.ts +13 -17
- package/src/analysis/type-key.ts +14 -0
- package/src/compile.ts +110 -26
- package/src/docs/api-reference.ts +10 -9
- package/src/docs/element-page.ts +5 -2
- package/src/docs/pipeline.ts +129 -19
- package/src/docs/render.ts +7 -3
- package/src/docs/symbol-page.ts +12 -7
- package/src/fingerprint.ts +86 -31
- package/src/gi.ts +1 -0
- package/src/gir/ancestry.ts +17 -1
- package/src/gir/annotations.ts +1 -1
- package/src/gir/cursor-overrides.ts +12 -0
- package/src/gir/emittable.ts +8 -0
- package/src/gir/function.ts +45 -9
- package/src/gir/library.ts +1 -1
- package/src/gir/namespace.ts +8 -2
- package/src/gir/parameter.ts +15 -0
- package/src/gir/parse.ts +5 -7
- package/src/guards.ts +23 -0
- package/src/internal.ts +2 -0
- package/src/json.ts +11 -0
- package/src/khronos/modules.ts +25 -9
- package/src/khronos/parse.ts +3 -4
- package/src/khronos/pipeline.ts +1 -1
- package/src/khronos/plan.ts +0 -1
- package/src/runner.ts +19 -1
- package/src/staging.ts +69 -0
- package/src/store/compile-store.ts +6 -4
- package/src/store/gi/callables.ts +41 -33
- package/src/store/gi/callback.ts +9 -9
- package/src/store/gi/class.ts +79 -48
- package/src/store/gi/companion.ts +7 -6
- package/src/store/gi/constant.ts +12 -2
- package/src/store/gi/constructor-props.ts +1 -1
- package/src/store/gi/enum.ts +35 -21
- package/src/store/gi/function.ts +30 -24
- package/src/store/gi/gtype-binding.ts +7 -2
- package/src/store/gi/interface.ts +37 -18
- package/src/store/gi/method.ts +28 -29
- package/src/store/gi/param-marshal.ts +77 -6
- package/src/store/gi/pipeline.ts +25 -15
- package/src/store/gi/properties.ts +8 -4
- package/src/store/gi/property-accessor.ts +156 -73
- package/src/store/gi/record-constructor.ts +50 -18
- package/src/store/gi/record-field-accessor.ts +8 -1
- package/src/store/gi/record-layout.ts +11 -1
- package/src/store/gi/record.ts +20 -12
- package/src/store/gi/registration.ts +2 -2
- package/src/store/gi/signal.ts +36 -38
- package/src/store/gi/value-marshalable.ts +3 -1
- package/src/store/gi/vtable.ts +97 -20
- package/src/store/gi-store.ts +26 -31
- package/src/store/jsx/generated-elements.ts +17 -8
- package/src/store/jsx/jsx.ts +3 -3
- package/src/store/jsx/metadata.ts +4 -1
- package/src/store/jsx-store.ts +3 -3
- package/src/store/resolve-store.ts +133 -18
- package/src/store/store-fs.ts +87 -34
- package/src/store/store-links.ts +49 -0
- package/src/writer/comparison-context.ts +18 -0
- package/src/writer/context.ts +12 -6
- package/src/writer/module.ts +101 -14
- package/src/xml.ts +61 -1
package/dist/compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, mkdtempSync, rmSync, symlinkSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport ts from \"typescript\";\n\ntype SourceModule = {\n fileName: string;\n source: string;\n};\n\ntype CompileProjectParams = {\n projectDir: string;\n fileNames: string[];\n compilerOptions: Record<string, unknown>;\n label: string;\n};\n\nconst BASE_COMPILER_OPTIONS = {\n module: \"esnext\",\n moduleResolution: \"bundler\",\n target: \"esnext\",\n lib: [\"esnext\"],\n jsx: \"react-jsx\",\n jsxImportSource: \"react\",\n customConditions: [\"source\"],\n strict: true,\n exactOptionalPropertyTypes: true,\n noUncheckedIndexedAccess: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n allowUnreachableCode: false,\n allowImportingTsExtensions: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n rewriteRelativeImportExtensions: true,\n skipLibCheck: true,\n types: [\"node\"],\n};\n\nconst CHECK_OPTIONS = {\n declaration: true,\n isolatedDeclarations: true,\n noEmit: true,\n};\n\nconst FORMAT_HOST: ts.FormatDiagnosticsHost = {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => \"\\n\",\n};\n\nconst codegenModules = (): string => {\n const sourceDir = dirname(fileURLToPath(import.meta.url));\n\n return join(dirname(sourceDir), \"node_modules\");\n};\n\nconst linkToolingModules = (projectDir: string): (() => void) => {\n const link = join(projectDir, \"node_modules\");\n\n if (existsSync(link)) {\n return (): void => undefined;\n }\n\n symlinkSync(codegenModules(), link, \"junction\");\n\n return () => {\n rmSync(link, { force: true });\n };\n};\n\nconst isProjectFile = (rel: string): boolean =>\n !rel.startsWith(\"..\") && !isAbsolute(rel) && !rel.split(/[/\\\\]/).includes(\"node_modules\");\n\nconst projectDiagnosticLine = (diagnostic: ts.Diagnostic, projectDir: string): string | undefined => {\n const { file, start } = diagnostic;\n\n if (file === undefined || start === undefined) {\n return undefined;\n }\n\n const filePath = relative(projectDir, file.fileName);\n\n if (!isProjectFile(filePath)) {\n return undefined;\n }\n\n const { line, character } = file.getLineAndCharacterOfPosition(start);\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n\n return `${filePath}:${String(line + 1)}:${String(character + 1)} - ${message} (TS${String(diagnostic.code)})`;\n};\n\nconst projectDiagnosticLines = (diagnostics: ts.Diagnostic[], projectDir: string): string[] => {\n const lines: string[] = [];\n\n for (const diagnostic of diagnostics) {\n const line = projectDiagnosticLine(diagnostic, projectDir);\n\n if (line !== undefined) {\n lines.push(line);\n }\n }\n\n return lines;\n};\n\nconst diagnosticError = (label: string, projectDir: string, diagnostics: ts.Diagnostic[]): Error => {\n const lines = projectDiagnosticLines(diagnostics, projectDir);\n\n if (lines.length > 0) {\n return new Error(`Type checking ${label} found ${String(lines.length)} error(s):\\n${lines.join(\"\\n\")}`);\n }\n\n return new Error(`Type checking ${label} failed:\\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);\n};\n\nconst runProgram = (params: CompileProjectParams): ts.Diagnostic[] => {\n const parsed = ts.parseJsonConfigFileContent(\n {\n compilerOptions: { ...BASE_COMPILER_OPTIONS, ...params.compilerOptions },\n files: params.fileNames.map((name) => `./${name}`),\n },\n ts.sys,\n params.projectDir,\n );\n\n const program = ts.createProgram({\n rootNames: parsed.fileNames,\n options: parsed.options,\n configFileParsingDiagnostics: parsed.errors,\n });\n\n const diagnostics = ts.getPreEmitDiagnostics(program);\n\n if (diagnostics.length > 0) {\n return [...diagnostics];\n }\n\n return [...program.emit().diagnostics];\n};\n\nconst compileProject = (params: CompileProjectParams): void => {\n const unlinkToolingModules = linkToolingModules(params.projectDir);\n\n try {\n const diagnostics = runProgram(params);\n\n if (diagnostics.length > 0) {\n throw diagnosticError(params.label, params.projectDir, diagnostics);\n }\n } finally {\n unlinkToolingModules();\n }\n};\n\nconst checkModules = (params: { modules: SourceModule[]; resolveFrom: string; label: string }): void => {\n const checkRoot = join(params.resolveFrom, \"node_modules\");\n mkdirSync(checkRoot, { recursive: true });\n const projectDir = mkdtempSync(join(checkRoot, \".gtkx-check-\"));\n\n try {\n for (const module of params.modules) {\n const filePath = join(projectDir, module.fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, module.source);\n }\n\n compileProject({\n projectDir,\n fileNames: params.modules.map((module) => module.fileName),\n compilerOptions: CHECK_OPTIONS,\n label: params.label,\n });\n } finally {\n rmSync(projectDir, { recursive: true, force: true });\n }\n};\n\nexport { compileProject, checkModules, type SourceModule };\n"]}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorMessage, normalizeError } from \"@gtkx/utils\";\nimport { existsSync, mkdirSync, renameSync, rmSync, symlinkSync, writeFileSync } from \"node:fs\";\nimport { dirname, isAbsolute, join, relative } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport ts from \"typescript\";\nimport { createStagingDir, sweepStrandedDirs } from \"./staging.js\";\n\ntype ProjectFile = {\n fileName: string;\n origin?: string | undefined;\n};\n\ntype SourceModule = ProjectFile & {\n source: string;\n};\n\ntype CompileProjectParams = {\n projectDir: string;\n files: ProjectFile[];\n compilerOptions: Record<string, unknown>;\n label: string;\n};\n\ntype DiagnosedFile = {\n fileName: string;\n text: string;\n};\n\ntype FailedProjectInput = {\n projectDir: string;\n keepAt: string;\n error: unknown;\n};\n\nconst BASE_COMPILER_OPTIONS = {\n module: \"esnext\",\n moduleResolution: \"bundler\",\n target: \"esnext\",\n lib: [\"esnext\"],\n jsx: \"react-jsx\",\n jsxImportSource: \"react\",\n customConditions: [\"source\"],\n strict: true,\n exactOptionalPropertyTypes: true,\n noUncheckedIndexedAccess: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n allowUnreachableCode: false,\n allowImportingTsExtensions: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true,\n rewriteRelativeImportExtensions: true,\n skipLibCheck: true,\n types: [\"node\"],\n};\n\nconst CHECK_OPTIONS = {\n declaration: true,\n isolatedDeclarations: true,\n noEmit: true,\n};\n\nconst CHECK_DIR = \".gtkx-check\";\nconst FAILED_CHECK_DIR = `${CHECK_DIR}.failed`;\nconst LEGACY_CHECK_PREFIX = `${CHECK_DIR}-`;\n\nconst FORMAT_HOST: ts.FormatDiagnosticsHost = {\n getCanonicalFileName: (fileName) => fileName,\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => \"\\n\",\n};\n\nconst codegenModules = (): string => {\n const sourceDir = dirname(fileURLToPath(import.meta.url));\n\n return join(dirname(sourceDir), \"node_modules\");\n};\n\nconst linkToolingModules = (projectDir: string): (() => void) => {\n const link = join(projectDir, \"node_modules\");\n\n if (existsSync(link)) {\n return (): void => undefined;\n }\n\n symlinkSync(codegenModules(), link, \"junction\");\n\n return () => {\n rmSync(link, { force: true });\n };\n};\n\nconst isProjectFile = (rel: string): boolean =>\n !rel.startsWith(\"..\") && !isAbsolute(rel) && !rel.split(/[/\\\\]/).includes(\"node_modules\");\n\nconst projectDiagnosticFile = (diagnostic: ts.Diagnostic, projectDir: string): DiagnosedFile | undefined => {\n const { file, start } = diagnostic;\n\n if (file === undefined || start === undefined) {\n return undefined;\n }\n\n const fileName = relative(projectDir, file.fileName);\n\n if (!isProjectFile(fileName)) {\n return undefined;\n }\n\n const { line, character } = file.getLineAndCharacterOfPosition(start);\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n\n return {\n fileName,\n text: `${fileName}:${String(line + 1)}:${String(character + 1)} - ${message} (TS${String(diagnostic.code)})`,\n };\n};\n\nconst projectDiagnosticFiles = (diagnostics: ts.Diagnostic[], projectDir: string): DiagnosedFile[] => {\n const diagnosed: DiagnosedFile[] = [];\n\n for (const diagnostic of diagnostics) {\n const entry = projectDiagnosticFile(diagnostic, projectDir);\n\n if (entry !== undefined) {\n diagnosed.push(entry);\n }\n }\n\n return diagnosed;\n};\n\nconst collectOrigins = (files: ProjectFile[]): Map<string, string> => {\n const origins: Map<string, string> = new Map();\n\n for (const { fileName, origin } of files) {\n if (origin !== undefined) {\n origins.set(fileName, origin);\n }\n }\n\n return origins;\n};\n\nconst groupByOrigin = (diagnosed: DiagnosedFile[], origins: Map<string, string>): Map<string, Set<string>> => {\n const grouped: Map<string, Set<string>> = new Map();\n\n for (const { fileName } of diagnosed) {\n const origin = origins.get(fileName);\n\n if (origin !== undefined) {\n grouped.set(origin, (grouped.get(origin) ?? new Set<string>()).add(fileName));\n }\n }\n\n return grouped;\n};\n\nconst originLines = (diagnosed: DiagnosedFile[], files: ProjectFile[]): string[] =>\n [...groupByOrigin(diagnosed, collectOrigins(files))].map(\n ([origin, generated]) => `Generated from ${origin}: ${[...generated].join(\", \")}`,\n );\n\nconst diagnosticError = (params: CompileProjectParams, diagnostics: ts.Diagnostic[]): Error => {\n const diagnosed = projectDiagnosticFiles(diagnostics, params.projectDir);\n const { label } = params;\n\n if (diagnosed.length === 0) {\n return new Error(`Type checking ${label} failed:\\n${ts.formatDiagnostics(diagnostics, FORMAT_HOST).trim()}`);\n }\n\n const lines = [...diagnosed.map((entry) => entry.text), ...originLines(diagnosed, params.files)];\n\n return new Error(`Type checking ${label} found ${String(diagnosed.length)} error(s):\\n${lines.join(\"\\n\")}`);\n};\n\nconst keepFailedProject = (input: FailedProjectInput): Error => {\n const { projectDir, keepAt, error } = input;\n\n if (!existsSync(projectDir)) {\n return normalizeError(error);\n }\n\n rmSync(keepAt, { recursive: true, force: true });\n renameSync(projectDir, keepAt);\n const rebased = errorMessage(error).split(projectDir).join(keepAt);\n\n return new Error(`${rebased}\\nThe generated sources are kept at ${keepAt}, where every path above resolves.`, {\n cause: error,\n });\n};\n\nconst runProgram = (params: CompileProjectParams): ts.Diagnostic[] => {\n const parsed = ts.parseJsonConfigFileContent(\n {\n compilerOptions: { ...BASE_COMPILER_OPTIONS, ...params.compilerOptions },\n files: params.files.map((file) => `./${file.fileName}`),\n },\n ts.sys,\n params.projectDir,\n );\n\n const program = ts.createProgram({\n rootNames: parsed.fileNames,\n options: parsed.options,\n configFileParsingDiagnostics: parsed.errors,\n });\n\n const diagnostics = ts.getPreEmitDiagnostics(program);\n\n if (diagnostics.length > 0) {\n return [...diagnostics];\n }\n\n return [...program.emit().diagnostics];\n};\n\nconst compileProject = (params: CompileProjectParams): void => {\n const unlinkToolingModules = linkToolingModules(params.projectDir);\n\n try {\n const diagnostics = runProgram(params);\n\n if (diagnostics.length > 0) {\n throw diagnosticError(params, diagnostics);\n }\n } finally {\n unlinkToolingModules();\n }\n};\n\nconst stageCheckProject = (checkRoot: string): string => {\n const projectDir = createStagingDir(join(checkRoot, CHECK_DIR));\n sweepStrandedDirs(checkRoot, LEGACY_CHECK_PREFIX);\n\n return projectDir;\n};\n\nconst checkModules = (params: { modules: SourceModule[]; resolveFrom: string; label: string }): void => {\n const checkRoot = join(params.resolveFrom, \"node_modules\");\n const projectDir = stageCheckProject(checkRoot);\n const keepAt = join(checkRoot, FAILED_CHECK_DIR);\n\n try {\n for (const module of params.modules) {\n const filePath = join(projectDir, module.fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, module.source);\n }\n\n compileProject({\n projectDir,\n files: params.modules,\n compilerOptions: CHECK_OPTIONS,\n label: params.label,\n });\n } catch (error) {\n throw keepFailedProject({ projectDir, keepAt, error });\n }\n\n rmSync(projectDir, { recursive: true, force: true });\n rmSync(keepAt, { recursive: true, force: true });\n};\n\nexport { compileProject, checkModules, keepFailedProject, type ProjectFile, type SourceModule };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-reference.d.ts","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-reference.d.ts","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sanitizeIdentifier, sanitizeTypeIdentifier, sortStrings, sortStringsBy } from "@gtkx/utils";
|
|
2
|
+
import { isEmittableEntity } from "../gir/emittable.js";
|
|
2
3
|
import { Library } from "../gir/library.js";
|
|
3
4
|
import { namespaceDirectory } from "../gir/namespace.js";
|
|
4
5
|
import { dedupeCallables, isEmittableCallable } from "../store/gi/callables.js";
|
|
@@ -71,11 +72,11 @@ const functionEntry = (namespace, docsContext, fn) => {
|
|
|
71
72
|
return { kind: "function", namespace, name, doc: fn.doc, fn };
|
|
72
73
|
};
|
|
73
74
|
const classEntry = (namespace, klass) => {
|
|
74
|
-
if (!klass
|
|
75
|
+
if (!isEmittableEntity(klass)) {
|
|
75
76
|
return undefined;
|
|
76
77
|
}
|
|
77
78
|
const kind = klass.isInterface ? "interface" : "class";
|
|
78
|
-
return { kind, namespace, name:
|
|
79
|
+
return { kind, namespace, name: sanitizeTypeIdentifier(klass.name), doc: klass.doc, klass };
|
|
79
80
|
};
|
|
80
81
|
const classEntries = (namespace) => {
|
|
81
82
|
const entries = [];
|
|
@@ -88,10 +89,10 @@ const classEntries = (namespace) => {
|
|
|
88
89
|
return entries;
|
|
89
90
|
};
|
|
90
91
|
const recordEntry = (namespace, record) => {
|
|
91
|
-
if (
|
|
92
|
+
if (record.isVtable || !isEmittableEntity(record)) {
|
|
92
93
|
return undefined;
|
|
93
94
|
}
|
|
94
|
-
return { kind: "record", namespace, name: record.name, doc: record.doc, record };
|
|
95
|
+
return { kind: "record", namespace, name: sanitizeTypeIdentifier(record.name), doc: record.doc, record };
|
|
95
96
|
};
|
|
96
97
|
const recordEntries = (namespace) => {
|
|
97
98
|
const entries = [];
|
|
@@ -109,7 +110,7 @@ const valueEntries = (namespace) => [
|
|
|
109
110
|
.map((enumeration) => ({
|
|
110
111
|
kind: "enum",
|
|
111
112
|
namespace,
|
|
112
|
-
name: enumeration.name,
|
|
113
|
+
name: sanitizeTypeIdentifier(enumeration.name),
|
|
113
114
|
doc: enumeration.doc,
|
|
114
115
|
enumeration,
|
|
115
116
|
})),
|
|
@@ -118,21 +119,21 @@ const valueEntries = (namespace) => [
|
|
|
118
119
|
.map((callback) => ({
|
|
119
120
|
kind: "callback",
|
|
120
121
|
namespace,
|
|
121
|
-
name: callback.name,
|
|
122
|
+
name: sanitizeTypeIdentifier(callback.name),
|
|
122
123
|
doc: callback.doc,
|
|
123
124
|
callback,
|
|
124
125
|
})),
|
|
125
126
|
...namespace.aliases.map((alias) => ({
|
|
126
127
|
kind: "alias",
|
|
127
128
|
namespace,
|
|
128
|
-
name: alias.name,
|
|
129
|
+
name: sanitizeTypeIdentifier(alias.name),
|
|
129
130
|
doc: alias.doc,
|
|
130
131
|
alias,
|
|
131
132
|
})),
|
|
132
133
|
...namespace.constants.map((constant) => ({
|
|
133
134
|
kind: "constant",
|
|
134
135
|
namespace,
|
|
135
|
-
name: constant.name,
|
|
136
|
+
name: sanitizeIdentifier(constant.name),
|
|
136
137
|
doc: constant.doc,
|
|
137
138
|
constant,
|
|
138
139
|
})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-reference.js","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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","sourcesContent":["import { pascalCase, sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { GirRecord } from \"../gir/record.js\";\nimport { Library } from \"../gir/library.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { dedupeCallables, isEmittableCallable } from \"../store/gi/callables.js\";\nimport { namespaceFunctionExportName } from \"../store/gi/function.js\";\nimport { type ElementProps, setElementProps } from \"../store/jsx/element-prop-imports.js\";\nimport { collectIntrinsicElementClasses, type GlibNamedClass } from \"../store/jsx/intrinsic-elements.js\";\nimport { type OmittedProps, setOmittedProps } from \"../store/jsx/omitted-props.js\";\nimport { type ElementPageContext, renderElementPage } from \"./element-page.js\";\nimport { docsSignatureContext, firstSentence, namespaceOrder } from \"./render.js\";\nimport { type GiSymbolEntry, renderSymbolPage, type SymbolPageOptions } from \"./symbol-page.js\";\n\n/** What to index and the element config the rendered pages reflect. */\ntype ApiReferenceOptions = {\n /** GIR library identifiers to load, such as `\"Gtk-4.0\"`; their dependencies are pulled in too. */\n libraries: string[];\n /** Directories to search for `.gir` files. */\n girPath: string[];\n /** Base props interfaces per element, as read by `readBuiltinElements`; without it pages miss them. */\n props?: ElementProps;\n /** GObject properties the project omits from generated props; without it pages show props that do not exist. */\n omittedProps?: OmittedProps;\n};\n\n/** Narrows an `ApiReference.symbols` enumeration. */\ntype ApiSymbolQuery = {\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n};\n\n/** What an indexed symbol is: one of the GIR symbol kinds, or a JSX element. */\ntype ApiSymbolKind =\n \"alias\" |\n \"callback\" |\n \"class\" |\n \"constant\" |\n \"element\" |\n \"enum\" |\n \"function\" |\n \"interface\" |\n \"record\";\n\n/** An indexed symbol, without its reference page. */\ntype ApiSymbol = {\n /** GIR namespace declaring the symbol, such as `\"Gtk\"`. */\n namespace: string;\n /** Name within the namespace, which for an element is its GLib type name. */\n name: string;\n /** Kind the reference groups and filters the symbol by, `\"element\"` for a JSX tag. */\n kind: ApiSymbolKind;\n /** First sentence of the symbol's GIR documentation, elided past 220 characters and empty when it has none. */\n summary: string;\n};\n\n/** How much of one namespace the reference indexes. */\ntype ApiNamespaceSummary = {\n /** GIR namespace name, such as `\"Gtk\"`. */\n name: string;\n /** The `@gtkx/gi` subpath the namespace's symbols are imported from. */\n importPath: string;\n /** How many symbols other than JSX elements the namespace contributes. */\n symbols: number;\n /** How many JSX elements the namespace contributes. */\n elements: number;\n};\n\n/** What an `ApiReference.lookup` found: a rendered page, several candidates for the name, or nothing. */\ntype ApiLookupResult =\n | {\n /** Discriminant selecting the variant. */\n outcome: \"page\";\n /** Index entry for the symbol the query resolved to. */\n symbol: ApiSymbol;\n /** The symbol's complete reference page, rendered as Markdown. */\n markdown: string;\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"ambiguous\";\n /** Every symbol the name answers to, to be narrowed by namespace or kind. */\n candidates: ApiSymbol[];\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"notFound\";\n };\n\n/** A fuzzy search over indexed symbol names. */\ntype ApiSearchOptions = {\n /** Text matched case-insensitively against each symbol's name and its qualified `Namespace.Name` form. */\n query: string;\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n /** Maximum number of results, 20 by default. */\n limit?: number;\n};\n\n/** An indexed JSX element, carrying the widget class its page renders from. */\ntype ElementEntry = {\n /** Discriminant marking the entry as a JSX element rather than a GIR symbol. */\n kind: \"element\";\n /** GIR namespace declaring the widget class. */\n namespace: GirNamespace;\n /** Element name, which is the class's GLib type name such as `GtkButton`. */\n name: string;\n /** Documentation text carried by the widget class's GIR node. */\n doc: string | undefined;\n /** The widget class the element is generated from. */\n element: GlibNamedClass;\n};\n\n/** Anything the index holds: a GIR symbol or a JSX element. */\ntype SymbolEntry = GiSymbolEntry | ElementEntry;\n\n/** A search hit: an indexed entry and how well its name answered the query. */\ntype ScoredEntry = {\n /** Match strength, ranked best first: an exact name, then a prefix, then a substring. */\n score: number;\n /** The entry that matched. */\n entry: SymbolEntry;\n};\n\n/** Every kind the reference indexes, in the order a namespace overview groups its symbols. */\nconst API_SYMBOL_KINDS: ApiSymbolKind[] = [\n \"element\",\n \"class\",\n \"interface\",\n \"record\",\n \"enum\",\n \"callback\",\n \"alias\",\n \"function\",\n \"constant\",\n];\n\nconst KIND_SECTION_TITLES: Record<ApiSymbolKind, string> = {\n element: \"JSX elements\",\n class: \"Classes\",\n interface: \"Interfaces\",\n record: \"Records\",\n enum: \"Enums\",\n callback: \"Callbacks\",\n alias: \"Aliases\",\n function: \"Functions\",\n constant: \"Constants\",\n};\n\nconst DEFAULT_SEARCH_LIMIT = 20;\n\nconst compareNames = (a: string, b: string): number => {\n if (a < b) {\n return -1;\n }\n\n return a > b ? 1 : 0;\n};\n\nconst symbolKindSet = (kinds: ApiSymbolKind[] | undefined): Set<ApiSymbolKind> | undefined =>\n kinds === undefined ? undefined : new Set(kinds);\n\nconst isQueriedEntry = (\n entry: SymbolEntry,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n): boolean => {\n if (namespaceFilter !== undefined && entry.namespace.name.toLowerCase() !== namespaceFilter) {\n return false;\n }\n\n return kinds === undefined || kinds.has(entry.kind);\n};\n\nconst compareApiSymbols = (a: ApiSymbol, b: ApiSymbol): number => {\n const byNamespace = namespaceOrder(a.namespace).localeCompare(namespaceOrder(b.namespace));\n\n return byNamespace === 0 ? a.name.localeCompare(b.name) : byNamespace;\n};\n\n/**\n * Loads the GIR data for the given libraries and indexes every symbol and JSX element in it. The result is\n * a read-only view: it generates no store and needs none, so a tool can explore the bindings a project would\n * get without running codegen.\n *\n * @param options Which libraries to index, where to find them, and the project's element config.\n * @returns The indexed reference.\n */\nconst loadApiReference = (options: ApiReferenceOptions): ApiReference => new ApiReference(options);\n\nconst functionEntry = (\n namespace: GirNamespace,\n docsContext: ReturnType<typeof docsSignatureContext>,\n fn: GirFunction,\n): GiSymbolEntry | undefined => {\n if (!isEmittableCallable(docsContext, fn)) {\n return undefined;\n }\n\n const cIdentifier = fn.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = namespaceFunctionExportName(cIdentifier, fn.name, namespace.cSymbolPrefixes);\n\n return { kind: \"function\", namespace, name, doc: fn.doc, fn };\n};\n\nconst classEntry = (namespace: GirNamespace, klass: GirClass): GiSymbolEntry | undefined => {\n if (!klass.introspectable || klass.name.length === 0) {\n return undefined;\n }\n\n const kind = klass.isInterface ? \"interface\" : \"class\";\n\n return { kind, namespace, name: pascalCase(klass.name), doc: klass.doc, klass };\n};\n\nconst classEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const klass of [...namespace.classes, ...namespace.interfaces]) {\n const entry = classEntry(namespace, klass);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst recordEntry = (namespace: GirNamespace, record: GirRecord): GiSymbolEntry | undefined => {\n if (!record.introspectable || record.isVtable || record.name.length === 0) {\n return undefined;\n }\n\n return { kind: \"record\", namespace, name: record.name, doc: record.doc, record };\n};\n\nconst recordEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const record of namespace.records) {\n const entry = recordEntry(namespace, record);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst valueEntries = (namespace: GirNamespace): GiSymbolEntry[] => [\n ...namespace.enums\n .filter((enumeration) => enumeration.introspectable)\n .map<GiSymbolEntry>((enumeration) => ({\n kind: \"enum\",\n namespace,\n name: enumeration.name,\n doc: enumeration.doc,\n enumeration,\n })),\n ...namespace.callbacks\n .filter((callback) => callback.introspectable)\n .map<GiSymbolEntry>((callback) => ({\n kind: \"callback\",\n namespace,\n name: callback.name,\n doc: callback.doc,\n callback,\n })),\n ...namespace.aliases.map<GiSymbolEntry>((alias) => ({\n kind: \"alias\",\n namespace,\n name: alias.name,\n doc: alias.doc,\n alias,\n })),\n ...namespace.constants.map<GiSymbolEntry>((constant) => ({\n kind: \"constant\",\n namespace,\n name: constant.name,\n doc: constant.doc,\n constant,\n })),\n];\n\nconst narrowToExactMatches = (candidates: SymbolEntry[], trimmed: string, isQualified: boolean): SymbolEntry[] => {\n if (candidates.length <= 1) {\n return candidates;\n }\n\n const exact = candidates.filter(\n (entry) => (isQualified ? `${entry.namespace.name}.${entry.name}` : entry.name) === trimmed,\n );\n\n return exact.length > 0 ? exact : candidates;\n};\n\nconst getScoredEntry = (\n entry: SymbolEntry,\n query: string,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n): ScoredEntry | undefined => {\n if (!isQueriedEntry(entry, namespaceFilter, kinds)) {\n return undefined;\n }\n\n const score = searchScore(entry, query);\n\n if (score === 0) {\n return undefined;\n }\n\n return { score, entry };\n};\n\nconst compareScoredEntries = (a: ScoredEntry, b: ScoredEntry): number =>\n b.score - a.score ||\n a.entry.name.length - b.entry.name.length ||\n compareNames(a.entry.name, b.entry.name) ||\n compareNames(namespaceOrder(a.entry.namespace.name), namespaceOrder(b.entry.namespace.name)) ||\n compareNames(a.entry.kind, b.entry.kind);\n\nconst searchScore = (entry: SymbolEntry, query: string): number => {\n const name = entry.name.toLowerCase();\n const qualified = `${entry.namespace.name.toLowerCase()}.${name}`;\n\n if (name === query || qualified === query) {\n return 3;\n }\n\n if (name.startsWith(query)) {\n return 2;\n }\n\n if (name.includes(query) || qualified.includes(query)) {\n return 1;\n }\n\n return 0;\n};\n\n/** An index over the GIR data a project's bindings are generated from, queryable and renderable as Markdown. */\nclass ApiReference {\n private library: Library;\n private libraries: string[];\n private elementContext: ElementPageContext;\n private entries: SymbolEntry[] = [];\n private byQualified: Map<string, SymbolEntry[]> = new Map();\n private byName: Map<string, SymbolEntry[]> = new Map();\n private byNamespace: Map<string, SymbolEntry[]> = new Map();\n private elementsByClass: Map<string, string> = new Map();\n\n private props: ElementProps;\n private omittedProps: OmittedProps;\n\n /** Indexes every symbol and JSX element in the GIR data the options point at. */\n constructor(options: ApiReferenceOptions) {\n this.libraries = options.libraries;\n this.props = options.props ?? {};\n this.omittedProps = options.omittedProps ?? {};\n this.library = Library.load(options.libraries, options.girPath);\n this.elementContext = { library: this.library, linkFor: (): string | undefined => undefined };\n this.buildIndex();\n }\n\n private applyElementConfig(): void {\n setElementProps(this.props);\n setOmittedProps(this.omittedProps);\n }\n\n private add(entry: SymbolEntry): void {\n this.entries.push(entry);\n\n const push = (map: Map<string, SymbolEntry[]>, key: string): void => {\n const list = map.get(key) ?? [];\n list.push(entry);\n map.set(key, list);\n };\n\n push(this.byQualified, `${entry.namespace.name}.${entry.name}`.toLowerCase());\n push(this.byName, entry.name.toLowerCase());\n push(this.byNamespace, entry.namespace.name);\n }\n\n private buildIndex(): void {\n for (const namespace of this.library.namespaces.values()) {\n this.indexNamespace(namespace);\n }\n\n for (const element of collectIntrinsicElementClasses(this.library)) {\n this.add({\n kind: \"element\",\n namespace: element.namespace,\n name: element.glibName,\n doc: element.klass.doc,\n element,\n });\n\n this.elementsByClass.set(`${element.namespace.name}.${element.klass.name}`, element.glibName);\n }\n }\n\n private indexNamespace(namespace: GirNamespace): void {\n const entries = [\n ...classEntries(namespace),\n ...recordEntries(namespace),\n ...valueEntries(namespace),\n ];\n\n for (const entry of entries) {\n this.add(entry);\n }\n\n this.indexFunctions(namespace);\n }\n\n private indexFunctions(namespace: GirNamespace): void {\n if (namespace.sharedLibrary === undefined) {\n return;\n }\n\n const docsContext = docsSignatureContext(namespace, this.library);\n\n for (const fn of dedupeCallables(namespace.functions)) {\n const entry = functionEntry(namespace, docsContext, fn);\n\n if (entry !== undefined) {\n this.add(entry);\n }\n }\n }\n\n private toApiSymbol(entry: SymbolEntry): ApiSymbol {\n return {\n namespace: entry.namespace.name,\n name: entry.name,\n kind: entry.kind,\n summary: firstSentence(entry.doc),\n };\n }\n\n private symbolPageOptions(): SymbolPageOptions {\n return {\n library: this.library,\n elementNameFor: (namespaceName, className) => this.elementsByClass.get(`${namespaceName}.${className}`),\n };\n }\n\n private renderPage(entry: SymbolEntry): string {\n if (entry.kind === \"element\") {\n this.applyElementConfig();\n\n return renderElementPage(entry.element, this.elementContext);\n }\n\n return renderSymbolPage(entry, this.symbolPageOptions());\n }\n\n private findNamespace(name: string): GirNamespace | undefined {\n const lower = name.toLowerCase();\n\n for (const namespace of this.library.namespaces.values()) {\n if (namespace.name.toLowerCase() === lower) {\n return namespace;\n }\n }\n\n return undefined;\n }\n\n private lookupCandidates(trimmed: string, kind: ApiSymbolKind | undefined): SymbolEntry[] {\n const isQualified = trimmed.includes(\".\");\n const map = isQualified ? this.byQualified : this.byName;\n let candidates = map.get(trimmed.toLowerCase()) ?? [];\n\n if (kind !== undefined) {\n candidates = candidates.filter((entry) => entry.kind === kind);\n }\n\n return narrowToExactMatches(candidates, trimmed, isQualified);\n }\n\n private scoreEntries(\n query: string,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n ): ScoredEntry[] {\n const scored: ScoredEntry[] = [];\n\n for (const entry of this.entries) {\n const item = getScoredEntry(entry, query, namespaceFilter, kinds);\n\n if (item !== undefined) {\n scored.push(item);\n }\n }\n\n return scored;\n }\n\n /** Paths of the `.gir` files the index was built from, including the ones pulled in as dependencies. */\n get girFiles(): string[] {\n return this.library.girFiles;\n }\n\n /**\n * Resolves a name to a single symbol and renders its reference page. The name may be bare (`Button`) or\n * qualified (`Gtk.Button`), and is matched case-insensitively; a name several symbols answer to is\n * reported as ambiguous rather than picked between.\n *\n * @param kind Restricts the match to one kind, which is how a class and its JSX element are told apart.\n */\n lookup(query: string, kind?: ApiSymbolKind): ApiLookupResult {\n const trimmed = query.trim();\n\n if (trimmed.length === 0) {\n return { outcome: \"notFound\" };\n }\n\n const candidates = this.lookupCandidates(trimmed, kind);\n const entry = candidates[0];\n\n if (entry === undefined) {\n return { outcome: \"notFound\" };\n }\n\n if (candidates.length > 1) {\n return { outcome: \"ambiguous\", candidates: candidates.map((candidate) => this.toApiSymbol(candidate)) };\n }\n\n return { outcome: \"page\", symbol: this.toApiSymbol(entry), markdown: this.renderPage(entry) };\n }\n\n /** Every indexed symbol the query keeps, ordered by namespace (Gtk, then Adw, then alphabetically) and name. */\n symbols(query: ApiSymbolQuery = {}): ApiSymbol[] {\n const namespaceFilter = query.namespace?.toLowerCase();\n const kinds = symbolKindSet(query.kinds);\n\n return this.entries\n .filter((entry) => isQueriedEntry(entry, namespaceFilter, kinds))\n .map((entry) => this.toApiSymbol(entry))\n .toSorted(compareApiSymbols);\n }\n\n /**\n * Symbols whose name matches the query, best first: an exact name beats a prefix, which beats a\n * substring, and shorter names win ties. An empty query matches nothing.\n */\n search(options: ApiSearchOptions): ApiSymbol[] {\n const query = options.query.trim().toLowerCase();\n\n if (query.length === 0) {\n return [];\n }\n\n const limit = Math.max(1, Math.floor(options.limit ?? DEFAULT_SEARCH_LIMIT));\n const namespaceFilter = options.namespace?.toLowerCase();\n const scored = this.scoreEntries(query, namespaceFilter, symbolKindSet(options.kinds));\n scored.sort(compareScoredEntries);\n\n return scored.slice(0, limit).map((item) => this.toApiSymbol(item.entry));\n }\n\n /** A summary of every indexed namespace, ordered Gtk, Adw, then alphabetically. */\n namespaces(): ApiNamespaceSummary[] {\n const summaries = [...this.byNamespace].map(([name, entries]) => ({\n name,\n importPath: `@gtkx/gi/${namespaceDirectory({ name })}`,\n symbols: entries.filter((entry) => entry.kind !== \"element\").length,\n elements: entries.filter((entry) => entry.kind === \"element\").length,\n }));\n\n return sortStringsBy(summaries, (summary) => namespaceOrder(summary.name));\n }\n\n /**\n * Sorted names of everything a namespace contributes, JSX elements included. The namespace is matched\n * case-insensitively, and an unindexed one yields an empty array.\n */\n symbolNames(namespaceName: string): string[] {\n const namespace = this.findNamespace(namespaceName);\n\n if (namespace === undefined) {\n return [];\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n\n return sortStrings(entries.map((entry) => entry.name));\n }\n\n /** Renders the reference's Markdown landing page: every namespace, its import path, and its totals. */\n overview(): string {\n const rows = this.namespaces().map(\n (summary) =>\n `| ${summary.name} | \\`${summary.importPath}\\` | ${String(summary.symbols)} | ` +\n `${String(summary.elements)} |`,\n );\n\n const librariesList = this.libraries.map((library) => `\\`${library}\\``).join(\", \");\n\n return [\n \"# API Reference\",\n \"\",\n `Generated bindings for ${librariesList} and the namespaces they pull in. Classes, interfaces, ` +\n \"records, enums, callbacks, aliases, functions, and constants are imported from \" +\n \"`@gtkx/gi/<namespace>`; JSX elements are imported from `@gtkx/jsx/<namespace>`.\",\n \"\",\n \"Every symbol has a reference page addressed by its qualified name (for example `Gtk.Button`, \" +\n \"`Gtk.Orientation`, `GLib.idleAdd`) and every JSX element by its element name \" +\n \"(for example `GtkButton`).\",\n \"\",\n \"| Namespace | Import | Symbols | JSX elements |\",\n \"| --- | --- | --- | --- |\",\n ...rows,\n \"\",\n ].join(\"\\n\");\n }\n\n /**\n * Renders one namespace's Markdown page: its import line and its symbol names grouped by kind. The\n * namespace is matched case-insensitively, and an unindexed one yields undefined.\n */\n namespaceOverview(name: string): string | undefined {\n const namespace = this.findNamespace(name);\n\n if (namespace === undefined) {\n return undefined;\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n const directory = namespaceDirectory(namespace);\n\n const lines = [\n `# ${namespace.name}`,\n \"\",\n `\\`\\`\\`ts\\nimport * as ${namespace.name} from \"@gtkx/gi/${directory}\";\\n\\`\\`\\``,\n ];\n\n for (const kind of API_SYMBOL_KINDS) {\n const names = entries.filter((entry) => entry.kind === kind).map((entry) => entry.name);\n\n if (names.length === 0) {\n continue;\n }\n\n lines.push(\n \"\",\n `## ${KIND_SECTION_TITLES[kind]} (${String(names.length)})`,\n \"\",\n sortStrings(names)\n .map((symbolName) => `\\`${symbolName}\\``)\n .join(\", \"),\n );\n }\n\n lines.push(\"\");\n\n return lines.join(\"\\n\");\n }\n}\n\nexport type { ApiReference };\nexport {\n API_SYMBOL_KINDS,\n loadApiReference,\n type ApiReferenceOptions,\n type ApiSymbolKind,\n type ApiSymbol,\n type ApiNamespaceSummary,\n type ApiLookupResult,\n type ApiSearchOptions,\n type ApiSymbolQuery,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"api-reference.js","sourceRoot":"","sources":["../../src/docs/api-reference.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeIdentifier, sanitizeTypeIdentifier, sortStrings, sortStringsBy } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { GirFunction } from \"../gir/function.js\";\nimport type { GirRecord } from \"../gir/record.js\";\nimport { isEmittableEntity } from \"../gir/emittable.js\";\nimport { Library } from \"../gir/library.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { dedupeCallables, isEmittableCallable } from \"../store/gi/callables.js\";\nimport { namespaceFunctionExportName } from \"../store/gi/function.js\";\nimport { type ElementProps, setElementProps } from \"../store/jsx/element-prop-imports.js\";\nimport { collectIntrinsicElementClasses, type GlibNamedClass } from \"../store/jsx/intrinsic-elements.js\";\nimport { type OmittedProps, setOmittedProps } from \"../store/jsx/omitted-props.js\";\nimport { type ElementPageContext, renderElementPage } from \"./element-page.js\";\nimport { docsSignatureContext, firstSentence, namespaceOrder } from \"./render.js\";\nimport { type GiSymbolEntry, renderSymbolPage, type SymbolPageOptions } from \"./symbol-page.js\";\n\n/** What to index and the element config the rendered pages reflect. */\ntype ApiReferenceOptions = {\n /** GIR library identifiers to load, such as `\"Gtk-4.0\"`; their dependencies are pulled in too. */\n libraries: string[];\n /** Directories to search for `.gir` files. */\n girPath: string[];\n /** Base props interfaces per element, as read by `readBuiltinElements`; without it pages miss them. */\n props?: ElementProps;\n /** GObject properties the project omits from generated props; without it pages show props that do not exist. */\n omittedProps?: OmittedProps;\n};\n\n/** Narrows an `ApiReference.symbols` enumeration. */\ntype ApiSymbolQuery = {\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n};\n\n/** What an indexed symbol is: one of the GIR symbol kinds, or a JSX element. */\ntype ApiSymbolKind =\n \"alias\" |\n \"callback\" |\n \"class\" |\n \"constant\" |\n \"element\" |\n \"enum\" |\n \"function\" |\n \"interface\" |\n \"record\";\n\n/** An indexed symbol, without its reference page. */\ntype ApiSymbol = {\n /** GIR namespace declaring the symbol, such as `\"Gtk\"`. */\n namespace: string;\n /** Name within the namespace, which for an element is its GLib type name. */\n name: string;\n /** Kind the reference groups and filters the symbol by, `\"element\"` for a JSX tag. */\n kind: ApiSymbolKind;\n /** First sentence of the symbol's GIR documentation, elided past 220 characters and empty when it has none. */\n summary: string;\n};\n\n/** How much of one namespace the reference indexes. */\ntype ApiNamespaceSummary = {\n /** GIR namespace name, such as `\"Gtk\"`. */\n name: string;\n /** The `@gtkx/gi` subpath the namespace's symbols are imported from. */\n importPath: string;\n /** How many symbols other than JSX elements the namespace contributes. */\n symbols: number;\n /** How many JSX elements the namespace contributes. */\n elements: number;\n};\n\n/** What an `ApiReference.lookup` found: a rendered page, several candidates for the name, or nothing. */\ntype ApiLookupResult =\n | {\n /** Discriminant selecting the variant. */\n outcome: \"page\";\n /** Index entry for the symbol the query resolved to. */\n symbol: ApiSymbol;\n /** The symbol's complete reference page, rendered as Markdown. */\n markdown: string;\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"ambiguous\";\n /** Every symbol the name answers to, to be narrowed by namespace or kind. */\n candidates: ApiSymbol[];\n } |\n {\n /** Discriminant selecting the variant. */\n outcome: \"notFound\";\n };\n\n/** A fuzzy search over indexed symbol names. */\ntype ApiSearchOptions = {\n /** Text matched case-insensitively against each symbol's name and its qualified `Namespace.Name` form. */\n query: string;\n /** GIR namespace to keep, matched case-insensitively; every namespace when omitted. */\n namespace?: string;\n /** Symbol kinds to keep; every kind when omitted. */\n kinds?: ApiSymbolKind[];\n /** Maximum number of results, 20 by default. */\n limit?: number;\n};\n\n/** An indexed JSX element, carrying the widget class its page renders from. */\ntype ElementEntry = {\n /** Discriminant marking the entry as a JSX element rather than a GIR symbol. */\n kind: \"element\";\n /** GIR namespace declaring the widget class. */\n namespace: GirNamespace;\n /** Element name, which is the class's GLib type name such as `GtkButton`. */\n name: string;\n /** Documentation text carried by the widget class's GIR node. */\n doc: string | undefined;\n /** The widget class the element is generated from. */\n element: GlibNamedClass;\n};\n\n/** Anything the index holds: a GIR symbol or a JSX element. */\ntype SymbolEntry = GiSymbolEntry | ElementEntry;\n\n/** A search hit: an indexed entry and how well its name answered the query. */\ntype ScoredEntry = {\n /** Match strength, ranked best first: an exact name, then a prefix, then a substring. */\n score: number;\n /** The entry that matched. */\n entry: SymbolEntry;\n};\n\n/** Every kind the reference indexes, in the order a namespace overview groups its symbols. */\nconst API_SYMBOL_KINDS: ApiSymbolKind[] = [\n \"element\",\n \"class\",\n \"interface\",\n \"record\",\n \"enum\",\n \"callback\",\n \"alias\",\n \"function\",\n \"constant\",\n];\n\nconst KIND_SECTION_TITLES: Record<ApiSymbolKind, string> = {\n element: \"JSX elements\",\n class: \"Classes\",\n interface: \"Interfaces\",\n record: \"Records\",\n enum: \"Enums\",\n callback: \"Callbacks\",\n alias: \"Aliases\",\n function: \"Functions\",\n constant: \"Constants\",\n};\n\nconst DEFAULT_SEARCH_LIMIT = 20;\n\nconst compareNames = (a: string, b: string): number => {\n if (a < b) {\n return -1;\n }\n\n return a > b ? 1 : 0;\n};\n\nconst symbolKindSet = (kinds: ApiSymbolKind[] | undefined): Set<ApiSymbolKind> | undefined =>\n kinds === undefined ? undefined : new Set(kinds);\n\nconst isQueriedEntry = (\n entry: SymbolEntry,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n): boolean => {\n if (namespaceFilter !== undefined && entry.namespace.name.toLowerCase() !== namespaceFilter) {\n return false;\n }\n\n return kinds === undefined || kinds.has(entry.kind);\n};\n\nconst compareApiSymbols = (a: ApiSymbol, b: ApiSymbol): number => {\n const byNamespace = namespaceOrder(a.namespace).localeCompare(namespaceOrder(b.namespace));\n\n return byNamespace === 0 ? a.name.localeCompare(b.name) : byNamespace;\n};\n\n/**\n * Loads the GIR data for the given libraries and indexes every symbol and JSX element in it. The result is\n * a read-only view: it generates no store and needs none, so a tool can explore the bindings a project would\n * get without running codegen.\n *\n * @param options Which libraries to index, where to find them, and the project's element config.\n * @returns The indexed reference.\n */\nconst loadApiReference = (options: ApiReferenceOptions): ApiReference => new ApiReference(options);\n\nconst functionEntry = (\n namespace: GirNamespace,\n docsContext: ReturnType<typeof docsSignatureContext>,\n fn: GirFunction,\n): GiSymbolEntry | undefined => {\n if (!isEmittableCallable(docsContext, fn)) {\n return undefined;\n }\n\n const cIdentifier = fn.cIdentifier;\n\n if (cIdentifier === undefined) {\n return undefined;\n }\n\n const name = namespaceFunctionExportName(cIdentifier, fn.name, namespace.cSymbolPrefixes);\n\n return { kind: \"function\", namespace, name, doc: fn.doc, fn };\n};\n\nconst classEntry = (namespace: GirNamespace, klass: GirClass): GiSymbolEntry | undefined => {\n if (!isEmittableEntity(klass)) {\n return undefined;\n }\n\n const kind = klass.isInterface ? \"interface\" : \"class\";\n\n return { kind, namespace, name: sanitizeTypeIdentifier(klass.name), doc: klass.doc, klass };\n};\n\nconst classEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const klass of [...namespace.classes, ...namespace.interfaces]) {\n const entry = classEntry(namespace, klass);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst recordEntry = (namespace: GirNamespace, record: GirRecord): GiSymbolEntry | undefined => {\n if (record.isVtable || !isEmittableEntity(record)) {\n return undefined;\n }\n\n return { kind: \"record\", namespace, name: sanitizeTypeIdentifier(record.name), doc: record.doc, record };\n};\n\nconst recordEntries = (namespace: GirNamespace): GiSymbolEntry[] => {\n const entries: GiSymbolEntry[] = [];\n\n for (const record of namespace.records) {\n const entry = recordEntry(namespace, record);\n\n if (entry !== undefined) {\n entries.push(entry);\n }\n }\n\n return entries;\n};\n\nconst valueEntries = (namespace: GirNamespace): GiSymbolEntry[] => [\n ...namespace.enums\n .filter((enumeration) => enumeration.introspectable)\n .map<GiSymbolEntry>((enumeration) => ({\n kind: \"enum\",\n namespace,\n name: sanitizeTypeIdentifier(enumeration.name),\n doc: enumeration.doc,\n enumeration,\n })),\n ...namespace.callbacks\n .filter((callback) => callback.introspectable)\n .map<GiSymbolEntry>((callback) => ({\n kind: \"callback\",\n namespace,\n name: sanitizeTypeIdentifier(callback.name),\n doc: callback.doc,\n callback,\n })),\n ...namespace.aliases.map<GiSymbolEntry>((alias) => ({\n kind: \"alias\",\n namespace,\n name: sanitizeTypeIdentifier(alias.name),\n doc: alias.doc,\n alias,\n })),\n ...namespace.constants.map<GiSymbolEntry>((constant) => ({\n kind: \"constant\",\n namespace,\n name: sanitizeIdentifier(constant.name),\n doc: constant.doc,\n constant,\n })),\n];\n\nconst narrowToExactMatches = (candidates: SymbolEntry[], trimmed: string, isQualified: boolean): SymbolEntry[] => {\n if (candidates.length <= 1) {\n return candidates;\n }\n\n const exact = candidates.filter(\n (entry) => (isQualified ? `${entry.namespace.name}.${entry.name}` : entry.name) === trimmed,\n );\n\n return exact.length > 0 ? exact : candidates;\n};\n\nconst getScoredEntry = (\n entry: SymbolEntry,\n query: string,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n): ScoredEntry | undefined => {\n if (!isQueriedEntry(entry, namespaceFilter, kinds)) {\n return undefined;\n }\n\n const score = searchScore(entry, query);\n\n if (score === 0) {\n return undefined;\n }\n\n return { score, entry };\n};\n\nconst compareScoredEntries = (a: ScoredEntry, b: ScoredEntry): number =>\n b.score - a.score ||\n a.entry.name.length - b.entry.name.length ||\n compareNames(a.entry.name, b.entry.name) ||\n compareNames(namespaceOrder(a.entry.namespace.name), namespaceOrder(b.entry.namespace.name)) ||\n compareNames(a.entry.kind, b.entry.kind);\n\nconst searchScore = (entry: SymbolEntry, query: string): number => {\n const name = entry.name.toLowerCase();\n const qualified = `${entry.namespace.name.toLowerCase()}.${name}`;\n\n if (name === query || qualified === query) {\n return 3;\n }\n\n if (name.startsWith(query)) {\n return 2;\n }\n\n if (name.includes(query) || qualified.includes(query)) {\n return 1;\n }\n\n return 0;\n};\n\n/** An index over the GIR data a project's bindings are generated from, queryable and renderable as Markdown. */\nclass ApiReference {\n private library: Library;\n private libraries: string[];\n private elementContext: ElementPageContext;\n private entries: SymbolEntry[] = [];\n private byQualified: Map<string, SymbolEntry[]> = new Map();\n private byName: Map<string, SymbolEntry[]> = new Map();\n private byNamespace: Map<string, SymbolEntry[]> = new Map();\n private elementsByClass: Map<string, string> = new Map();\n\n private props: ElementProps;\n private omittedProps: OmittedProps;\n\n /** Indexes every symbol and JSX element in the GIR data the options point at. */\n constructor(options: ApiReferenceOptions) {\n this.libraries = options.libraries;\n this.props = options.props ?? {};\n this.omittedProps = options.omittedProps ?? {};\n this.library = Library.load(options.libraries, options.girPath);\n this.elementContext = { library: this.library, linkFor: (): string | undefined => undefined };\n this.buildIndex();\n }\n\n private applyElementConfig(): void {\n setElementProps(this.props);\n setOmittedProps(this.omittedProps);\n }\n\n private add(entry: SymbolEntry): void {\n this.entries.push(entry);\n\n const push = (map: Map<string, SymbolEntry[]>, key: string): void => {\n const list = map.get(key) ?? [];\n list.push(entry);\n map.set(key, list);\n };\n\n push(this.byQualified, `${entry.namespace.name}.${entry.name}`.toLowerCase());\n push(this.byName, entry.name.toLowerCase());\n push(this.byNamespace, entry.namespace.name);\n }\n\n private buildIndex(): void {\n for (const namespace of this.library.namespaces.values()) {\n this.indexNamespace(namespace);\n }\n\n for (const element of collectIntrinsicElementClasses(this.library)) {\n this.add({\n kind: \"element\",\n namespace: element.namespace,\n name: element.glibName,\n doc: element.klass.doc,\n element,\n });\n\n this.elementsByClass.set(`${element.namespace.name}.${element.klass.name}`, element.glibName);\n }\n }\n\n private indexNamespace(namespace: GirNamespace): void {\n const entries = [\n ...classEntries(namespace),\n ...recordEntries(namespace),\n ...valueEntries(namespace),\n ];\n\n for (const entry of entries) {\n this.add(entry);\n }\n\n this.indexFunctions(namespace);\n }\n\n private indexFunctions(namespace: GirNamespace): void {\n if (namespace.sharedLibrary === undefined) {\n return;\n }\n\n const docsContext = docsSignatureContext(namespace, this.library);\n\n for (const fn of dedupeCallables(namespace.functions)) {\n const entry = functionEntry(namespace, docsContext, fn);\n\n if (entry !== undefined) {\n this.add(entry);\n }\n }\n }\n\n private toApiSymbol(entry: SymbolEntry): ApiSymbol {\n return {\n namespace: entry.namespace.name,\n name: entry.name,\n kind: entry.kind,\n summary: firstSentence(entry.doc),\n };\n }\n\n private symbolPageOptions(): SymbolPageOptions {\n return {\n library: this.library,\n elementNameFor: (namespaceName, className) => this.elementsByClass.get(`${namespaceName}.${className}`),\n };\n }\n\n private renderPage(entry: SymbolEntry): string {\n if (entry.kind === \"element\") {\n this.applyElementConfig();\n\n return renderElementPage(entry.element, this.elementContext);\n }\n\n return renderSymbolPage(entry, this.symbolPageOptions());\n }\n\n private findNamespace(name: string): GirNamespace | undefined {\n const lower = name.toLowerCase();\n\n for (const namespace of this.library.namespaces.values()) {\n if (namespace.name.toLowerCase() === lower) {\n return namespace;\n }\n }\n\n return undefined;\n }\n\n private lookupCandidates(trimmed: string, kind: ApiSymbolKind | undefined): SymbolEntry[] {\n const isQualified = trimmed.includes(\".\");\n const map = isQualified ? this.byQualified : this.byName;\n let candidates = map.get(trimmed.toLowerCase()) ?? [];\n\n if (kind !== undefined) {\n candidates = candidates.filter((entry) => entry.kind === kind);\n }\n\n return narrowToExactMatches(candidates, trimmed, isQualified);\n }\n\n private scoreEntries(\n query: string,\n namespaceFilter: string | undefined,\n kinds: Set<ApiSymbolKind> | undefined,\n ): ScoredEntry[] {\n const scored: ScoredEntry[] = [];\n\n for (const entry of this.entries) {\n const item = getScoredEntry(entry, query, namespaceFilter, kinds);\n\n if (item !== undefined) {\n scored.push(item);\n }\n }\n\n return scored;\n }\n\n /** Paths of the `.gir` files the index was built from, including the ones pulled in as dependencies. */\n get girFiles(): string[] {\n return this.library.girFiles;\n }\n\n /**\n * Resolves a name to a single symbol and renders its reference page. The name may be bare (`Button`) or\n * qualified (`Gtk.Button`), and is matched case-insensitively; a name several symbols answer to is\n * reported as ambiguous rather than picked between.\n *\n * @param kind Restricts the match to one kind, which is how a class and its JSX element are told apart.\n */\n lookup(query: string, kind?: ApiSymbolKind): ApiLookupResult {\n const trimmed = query.trim();\n\n if (trimmed.length === 0) {\n return { outcome: \"notFound\" };\n }\n\n const candidates = this.lookupCandidates(trimmed, kind);\n const entry = candidates[0];\n\n if (entry === undefined) {\n return { outcome: \"notFound\" };\n }\n\n if (candidates.length > 1) {\n return { outcome: \"ambiguous\", candidates: candidates.map((candidate) => this.toApiSymbol(candidate)) };\n }\n\n return { outcome: \"page\", symbol: this.toApiSymbol(entry), markdown: this.renderPage(entry) };\n }\n\n /** Every indexed symbol the query keeps, ordered by namespace (Gtk, then Adw, then alphabetically) and name. */\n symbols(query: ApiSymbolQuery = {}): ApiSymbol[] {\n const namespaceFilter = query.namespace?.toLowerCase();\n const kinds = symbolKindSet(query.kinds);\n\n return this.entries\n .filter((entry) => isQueriedEntry(entry, namespaceFilter, kinds))\n .map((entry) => this.toApiSymbol(entry))\n .toSorted(compareApiSymbols);\n }\n\n /**\n * Symbols whose name matches the query, best first: an exact name beats a prefix, which beats a\n * substring, and shorter names win ties. An empty query matches nothing.\n */\n search(options: ApiSearchOptions): ApiSymbol[] {\n const query = options.query.trim().toLowerCase();\n\n if (query.length === 0) {\n return [];\n }\n\n const limit = Math.max(1, Math.floor(options.limit ?? DEFAULT_SEARCH_LIMIT));\n const namespaceFilter = options.namespace?.toLowerCase();\n const scored = this.scoreEntries(query, namespaceFilter, symbolKindSet(options.kinds));\n scored.sort(compareScoredEntries);\n\n return scored.slice(0, limit).map((item) => this.toApiSymbol(item.entry));\n }\n\n /** A summary of every indexed namespace, ordered Gtk, Adw, then alphabetically. */\n namespaces(): ApiNamespaceSummary[] {\n const summaries = [...this.byNamespace].map(([name, entries]) => ({\n name,\n importPath: `@gtkx/gi/${namespaceDirectory({ name })}`,\n symbols: entries.filter((entry) => entry.kind !== \"element\").length,\n elements: entries.filter((entry) => entry.kind === \"element\").length,\n }));\n\n return sortStringsBy(summaries, (summary) => namespaceOrder(summary.name));\n }\n\n /**\n * Sorted names of everything a namespace contributes, JSX elements included. The namespace is matched\n * case-insensitively, and an unindexed one yields an empty array.\n */\n symbolNames(namespaceName: string): string[] {\n const namespace = this.findNamespace(namespaceName);\n\n if (namespace === undefined) {\n return [];\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n\n return sortStrings(entries.map((entry) => entry.name));\n }\n\n /** Renders the reference's Markdown landing page: every namespace, its import path, and its totals. */\n overview(): string {\n const rows = this.namespaces().map(\n (summary) =>\n `| ${summary.name} | \\`${summary.importPath}\\` | ${String(summary.symbols)} | ` +\n `${String(summary.elements)} |`,\n );\n\n const librariesList = this.libraries.map((library) => `\\`${library}\\``).join(\", \");\n\n return [\n \"# API Reference\",\n \"\",\n `Generated bindings for ${librariesList} and the namespaces they pull in. Classes, interfaces, ` +\n \"records, enums, callbacks, aliases, functions, and constants are imported from \" +\n \"`@gtkx/gi/<namespace>`; JSX elements are imported from `@gtkx/jsx/<namespace>`.\",\n \"\",\n \"Every symbol has a reference page addressed by its qualified name (for example `Gtk.Button`, \" +\n \"`Gtk.Orientation`, `GLib.idleAdd`) and every JSX element by its element name \" +\n \"(for example `GtkButton`).\",\n \"\",\n \"| Namespace | Import | Symbols | JSX elements |\",\n \"| --- | --- | --- | --- |\",\n ...rows,\n \"\",\n ].join(\"\\n\");\n }\n\n /**\n * Renders one namespace's Markdown page: its import line and its symbol names grouped by kind. The\n * namespace is matched case-insensitively, and an unindexed one yields undefined.\n */\n namespaceOverview(name: string): string | undefined {\n const namespace = this.findNamespace(name);\n\n if (namespace === undefined) {\n return undefined;\n }\n\n const entries = this.byNamespace.get(namespace.name) ?? [];\n const directory = namespaceDirectory(namespace);\n\n const lines = [\n `# ${namespace.name}`,\n \"\",\n `\\`\\`\\`ts\\nimport * as ${namespace.name} from \"@gtkx/gi/${directory}\";\\n\\`\\`\\``,\n ];\n\n for (const kind of API_SYMBOL_KINDS) {\n const names = entries.filter((entry) => entry.kind === kind).map((entry) => entry.name);\n\n if (names.length === 0) {\n continue;\n }\n\n lines.push(\n \"\",\n `## ${KIND_SECTION_TITLES[kind]} (${String(names.length)})`,\n \"\",\n sortStrings(names)\n .map((symbolName) => `\\`${symbolName}\\``)\n .join(\", \"),\n );\n }\n\n lines.push(\"\");\n\n return lines.join(\"\\n\");\n }\n}\n\nexport type { ApiReference };\nexport {\n API_SYMBOL_KINDS,\n loadApiReference,\n type ApiReferenceOptions,\n type ApiSymbolKind,\n type ApiSymbol,\n type ApiNamespaceSummary,\n type ApiLookupResult,\n type ApiSearchOptions,\n type ApiSymbolQuery,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-page.d.ts","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAOjD,OAAO,EAEH,KAAK,cAAc,EAItB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"element-page.d.ts","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAOjD,OAAO,EAEH,KAAK,cAAc,EAItB,MAAM,oCAAoC,CAAC;AAuB5C,6DAA6D;AAC7D,KAAK,kBAAkB,GAAG;IACtB,6FAA6F;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACrD,CAAC;AAiOF,QAAA,MAAM,iBAAiB,GAAI,OAAO,cAAc,EAAE,SAAS,kBAAkB,KAAG,MAc/E,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
|
|
@@ -8,7 +8,7 @@ import { getGlibName, implementedInterfaces, newlyImplementedInterfaces, signalH
|
|
|
8
8
|
import { isOmittedProp } from "../store/jsx/omitted-props.js";
|
|
9
9
|
import { isObjectProp } from "../store/jsx/props.js";
|
|
10
10
|
import { handwrittenPropsFor } from "./handwritten-props.js";
|
|
11
|
-
import { annotationNotes, classMethodEntries, docMarkdown, firstSentence, implementsLine, joinSections, methodsSectionBlocks, originSignatureBlocks, propertyMetaLine, renderDocsSignalSignature, renderDocsType, signalTags, sortedMetaBlocks, } from "./render.js";
|
|
11
|
+
import { annotationNotes, classMethodEntries, docMarkdown, firstSentence, implementsLine, joinSections, methodsSectionBlocks, originSignatureBlocks, propertyMetaLine, qualifiedClassName, renderDocsSignalSignature, renderDocsType, signalTags, sortedMetaBlocks, } from "./render.js";
|
|
12
12
|
const frontmatter = (entry) => {
|
|
13
13
|
const sentence = firstSentence(entry.klass.doc);
|
|
14
14
|
const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;
|
|
@@ -26,7 +26,9 @@ const hierarchySection = (entry, context) => {
|
|
|
26
26
|
}
|
|
27
27
|
const parts = ancestors.map((ancestor) => {
|
|
28
28
|
const glib = getGlibName(ancestor.klass);
|
|
29
|
-
return glib === undefined
|
|
29
|
+
return glib === undefined
|
|
30
|
+
? `\`${qualifiedClassName(ancestor.namespaceName, ancestor.klass.name)}\``
|
|
31
|
+
: glibLabel(context, glib);
|
|
30
32
|
});
|
|
31
33
|
parts.push(`**${entry.glibName}**`);
|
|
32
34
|
const lines = ["## Hierarchy", parts.join(" → ")];
|
|
@@ -152,7 +154,7 @@ const methodsSection = (entry, context, selfType) => {
|
|
|
152
154
|
return methodsSectionBlocks(entries, intro);
|
|
153
155
|
};
|
|
154
156
|
const renderElementPage = (entry, context) => {
|
|
155
|
-
const selfType =
|
|
157
|
+
const selfType = qualifiedClassName(entry.namespace.name, entry.klass.name);
|
|
156
158
|
return joinSections([
|
|
157
159
|
frontmatter(entry),
|
|
158
160
|
`# ${entry.glibName}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-page.js","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, upperFirst } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { Library } from \"../gir/library.js\";\nimport type { HandwrittenProp } from \"./handwritten-props.js\";\nimport { ancestorChain } from \"../gir/ancestry.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { type GirProperty, isConstructableProperty } from \"../gir/property.js\";\nimport { annotationSpec } from \"../store/gi/doc-spec.js\";\nimport { elementPropTypeFor } from \"../store/jsx/element-prop-imports.js\";\nimport {\n getGlibName,\n type GlibNamedClass,\n implementedInterfaces,\n newlyImplementedInterfaces,\n signalHandlerName,\n} from \"../store/jsx/intrinsic-elements.js\";\nimport { isOmittedProp } from \"../store/jsx/omitted-props.js\";\nimport { isObjectProp } from \"../store/jsx/props.js\";\nimport { handwrittenPropsFor } from \"./handwritten-props.js\";\nimport {\n annotationNotes,\n classMethodEntries,\n docMarkdown,\n firstSentence,\n implementsLine,\n joinSections,\n type MetaDocEntry,\n methodsSectionBlocks,\n originSignatureBlocks,\n type OriginSignatureEntry,\n propertyMetaLine,\n renderDocsSignalSignature,\n renderDocsType,\n signalTags,\n sortedMetaBlocks,\n} from \"./render.js\";\n\n/** Shared state an element's reference page renders from. */\ntype ElementPageContext = {\n /** Parsed GIR the element, its ancestors, and the interfaces it implements are read from. */\n library: Library;\n /** Resolves a GLib type name to the URL of its page, undefined when it has none. */\n linkFor: (glibName: string) => string | undefined;\n};\n\ntype MemberOwner = {\n klass: GirClass;\n namespace: GirNamespace;\n origin: string | undefined;\n glibName: string | undefined;\n};\n\nconst frontmatter = (entry: GlibNamedClass): string => {\n const sentence = firstSentence(entry.klass.doc);\n const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;\n\n return `---\\ndescription: ${JSON.stringify(description)}\\n---`;\n};\n\nconst importBlock = (entry: GlibNamedClass): string =>\n `\\`\\`\\`tsx\\nimport { ${entry.glibName} } from \"@gtkx/jsx/${namespaceDirectory(entry.namespace)}\";\\n\\`\\`\\``;\n\nconst glibLabel = (context: ElementPageContext, glibName: string): string => {\n const link = context.linkFor(glibName);\n\n return link === undefined ? `\\`${glibName}\\`` : `[${glibName}](${link})`;\n};\n\nconst hierarchySection = (entry: GlibNamedClass, context: ElementPageContext): string[] => {\n const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).toReversed();\n\n if (ancestors.length === 0) {\n return [];\n }\n\n const parts = ancestors.map((ancestor) => {\n const glib = getGlibName(ancestor.klass);\n\n return glib === undefined ? `\\`${ancestor.namespaceName}.${ancestor.klass.name}\\`` : glibLabel(context, glib);\n });\n\n parts.push(`**${entry.glibName}**`);\n const lines = [\"## Hierarchy\", parts.join(\" → \")];\n\n const interfaces = implementedInterfaces(entry.klass, entry.namespace, context.library)\n .map((iface) => getGlibName(iface.klass))\n .filter((name): name is string => name !== undefined);\n\n lines.push(...implementsLine(interfaces));\n\n return lines;\n};\n\nconst memberOwners = (entry: GlibNamedClass, context: ElementPageContext): MemberOwner[] => [\n { klass: entry.klass, namespace: entry.namespace, origin: undefined, glibName: entry.glibName },\n ...newlyImplementedInterfaces(\n entry.klass,\n entry.namespace,\n context.library,\n (glibName) => glibName !== undefined && elementPropTypeFor(glibName) !== undefined,\n ).map((iface) => {\n const glibName = getGlibName(iface.klass);\n\n return { klass: iface.klass, namespace: iface.namespace, origin: glibName, glibName };\n }),\n];\n\nconst propertyEntry = (\n context: ElementPageContext,\n owner: MemberOwner,\n property: GirProperty,\n jsName: string,\n): MetaDocEntry => {\n const isObject = isObjectProp(context.library, property);\n const baseType = renderDocsType(context.library, property.type, false);\n const type = isObject ? `${baseType} | ReactElement` : baseType;\n\n const accessNotes = isConstructableProperty(property)\n ? []\n : [`read-only, observe with \\`onNotify${upperFirst(jsName)}\\``];\n\n return {\n name: jsName,\n meta: propertyMetaLine({ type, property, accessNotes, origin: owner.origin }),\n doc: docMarkdown(property.doc),\n tags: annotationSpec(property.annotations),\n };\n};\n\nconst handwrittenPropMeta = (prop: HandwrittenProp, owner: MemberOwner): string =>\n [`\\`${prop.type}\\``, ...(owner.origin === undefined ? [] : [`from \\`${owner.origin}\\``])].join(\" · \");\n\nconst handwrittenPropEntries = (owner: MemberOwner, seen: Set<string>): MetaDocEntry[] => {\n const declared = owner.glibName === undefined ? undefined : elementPropTypeFor(owner.glibName);\n\n if (declared === undefined) {\n return [];\n }\n\n const entries: MetaDocEntry[] = [];\n\n for (const prop of handwrittenPropsFor(declared)) {\n if (seen.has(prop.name)) {\n continue;\n }\n\n seen.add(prop.name);\n entries.push({ name: prop.name, meta: handwrittenPropMeta(prop, owner), doc: prop.doc });\n }\n\n return entries;\n};\n\nconst propJsName = (property: GirProperty, owner: MemberOwner, seen: Set<string>): string | undefined => {\n if (!property.introspectable) {\n return undefined;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName) || isOmittedProp(owner.glibName, jsName)) {\n return undefined;\n }\n\n seen.add(jsName);\n\n return jsName;\n};\n\nconst ownerPropEntries = (context: ElementPageContext, owner: MemberOwner, seen: Set<string>): MetaDocEntry[] => {\n const entries: MetaDocEntry[] = [...handwrittenPropEntries(owner, seen)];\n\n for (const property of owner.klass.properties) {\n const jsName = propJsName(property, owner, seen);\n\n if (jsName !== undefined) {\n entries.push(propertyEntry(context, owner, property, jsName));\n }\n }\n\n return entries;\n};\n\nconst propertyEntries = (entry: GlibNamedClass, context: ElementPageContext, seen: Set<string>): MetaDocEntry[] => {\n const entries: MetaDocEntry[] = [];\n\n for (const owner of memberOwners(entry, context)) {\n entries.push(...ownerPropEntries(context, owner, seen));\n }\n\n return entries;\n};\n\nconst propsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen: Set<string> = new Set();\n const entries = propertyEntries(entry, context, seen);\n\n const intro = [\n `\\`ref\\` receives the \\`${selfType}\\` instance.`,\n \"Every mutable property also has an `onNotify<Prop>` handler prop called with the new value \" +\n \"when the property changes.\",\n \"Props inherited from ancestor elements are documented on their own pages.\",\n ].join(\" \");\n\n if (entries.length === 0) {\n return [\"## Props\", intro];\n }\n\n return [\"## Props\", intro, ...sortedMetaBlocks(entries)];\n};\n\nconst ownerSignalEntries = (\n context: ElementPageContext,\n owner: MemberOwner,\n selfType: string,\n seen: Set<string>,\n): OriginSignatureEntry[] => {\n const entries: OriginSignatureEntry[] = [];\n\n for (const signal of owner.klass.signals) {\n const name = signalHandlerName(signal.name);\n\n if (seen.has(name)) {\n continue;\n }\n\n seen.add(name);\n\n entries.push({\n name,\n signature: renderDocsSignalSignature(context.library, signal, selfType),\n doc: docMarkdown(signal.doc),\n tags: signalTags(signal, true),\n origin: owner.origin,\n });\n }\n\n return entries;\n};\n\nconst signalsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen: Set<string> = new Set();\n const entries: OriginSignatureEntry[] = [];\n\n for (const owner of memberOwners(entry, context)) {\n entries.push(...ownerSignalEntries(context, owner, selfType, seen));\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n return [\"## Signals\", ...originSignatureBlocks(entries)];\n};\n\nconst methodsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const entries = classMethodEntries(context.library, entry.namespace, entry.klass);\n const importPath = `@gtkx/gi/${namespaceDirectory(entry.namespace)}`;\n\n const intro =\n `Methods are called on the \\`${selfType}\\` instance, obtained with the \\`ref\\` prop or ` +\n `imported from \\`${importPath}\\`. Methods inherited from ancestors are documented on their own pages.`;\n\n return methodsSectionBlocks(entries, intro);\n};\n\nconst renderElementPage = (entry: GlibNamedClass, context: ElementPageContext): string => {\n const selfType = `${entry.namespace.name}.${entry.klass.name}`;\n\n return joinSections([\n frontmatter(entry),\n `# ${entry.glibName}`,\n docMarkdown(entry.klass.doc),\n ...annotationNotes(entry.klass.annotations),\n importBlock(entry),\n ...hierarchySection(entry, context),\n ...propsSection(entry, context, selfType),\n ...signalsSection(entry, context, selfType),\n ...methodsSection(entry, context, selfType),\n ]);\n};\n\nexport { renderElementPage, type ElementPageContext };\n"]}
|
|
1
|
+
{"version":3,"file":"element-page.js","sourceRoot":"","sources":["../../src/docs/element-page.ts"],"names":[],"mappings":"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","sourcesContent":["import { toCamelIdentifier, upperFirst } from \"@gtkx/utils\";\nimport type { GirClass } from \"../gir/class.js\";\nimport type { Library } from \"../gir/library.js\";\nimport type { HandwrittenProp } from \"./handwritten-props.js\";\nimport { ancestorChain } from \"../gir/ancestry.js\";\nimport { type GirNamespace, namespaceDirectory } from \"../gir/namespace.js\";\nimport { type GirProperty, isConstructableProperty } from \"../gir/property.js\";\nimport { annotationSpec } from \"../store/gi/doc-spec.js\";\nimport { elementPropTypeFor } from \"../store/jsx/element-prop-imports.js\";\nimport {\n getGlibName,\n type GlibNamedClass,\n implementedInterfaces,\n newlyImplementedInterfaces,\n signalHandlerName,\n} from \"../store/jsx/intrinsic-elements.js\";\nimport { isOmittedProp } from \"../store/jsx/omitted-props.js\";\nimport { isObjectProp } from \"../store/jsx/props.js\";\nimport { handwrittenPropsFor } from \"./handwritten-props.js\";\nimport {\n annotationNotes,\n classMethodEntries,\n docMarkdown,\n firstSentence,\n implementsLine,\n joinSections,\n type MetaDocEntry,\n methodsSectionBlocks,\n originSignatureBlocks,\n type OriginSignatureEntry,\n propertyMetaLine,\n qualifiedClassName,\n renderDocsSignalSignature,\n renderDocsType,\n signalTags,\n sortedMetaBlocks,\n} from \"./render.js\";\n\n/** Shared state an element's reference page renders from. */\ntype ElementPageContext = {\n /** Parsed GIR the element, its ancestors, and the interfaces it implements are read from. */\n library: Library;\n /** Resolves a GLib type name to the URL of its page, undefined when it has none. */\n linkFor: (glibName: string) => string | undefined;\n};\n\ntype MemberOwner = {\n klass: GirClass;\n namespace: GirNamespace;\n origin: string | undefined;\n glibName: string | undefined;\n};\n\nconst frontmatter = (entry: GlibNamedClass): string => {\n const sentence = firstSentence(entry.klass.doc);\n const description = sentence.length > 0 ? sentence : `API reference for the ${entry.glibName} element.`;\n\n return `---\\ndescription: ${JSON.stringify(description)}\\n---`;\n};\n\nconst importBlock = (entry: GlibNamedClass): string =>\n `\\`\\`\\`tsx\\nimport { ${entry.glibName} } from \"@gtkx/jsx/${namespaceDirectory(entry.namespace)}\";\\n\\`\\`\\``;\n\nconst glibLabel = (context: ElementPageContext, glibName: string): string => {\n const link = context.linkFor(glibName);\n\n return link === undefined ? `\\`${glibName}\\`` : `[${glibName}](${link})`;\n};\n\nconst hierarchySection = (entry: GlibNamedClass, context: ElementPageContext): string[] => {\n const ancestors = [...ancestorChain(context.library, entry.klass, entry.namespace.name)].slice(1).toReversed();\n\n if (ancestors.length === 0) {\n return [];\n }\n\n const parts = ancestors.map((ancestor) => {\n const glib = getGlibName(ancestor.klass);\n\n return glib === undefined\n ? `\\`${qualifiedClassName(ancestor.namespaceName, ancestor.klass.name)}\\``\n : glibLabel(context, glib);\n });\n\n parts.push(`**${entry.glibName}**`);\n const lines = [\"## Hierarchy\", parts.join(\" → \")];\n\n const interfaces = implementedInterfaces(entry.klass, entry.namespace, context.library)\n .map((iface) => getGlibName(iface.klass))\n .filter((name): name is string => name !== undefined);\n\n lines.push(...implementsLine(interfaces));\n\n return lines;\n};\n\nconst memberOwners = (entry: GlibNamedClass, context: ElementPageContext): MemberOwner[] => [\n { klass: entry.klass, namespace: entry.namespace, origin: undefined, glibName: entry.glibName },\n ...newlyImplementedInterfaces(\n entry.klass,\n entry.namespace,\n context.library,\n (glibName) => glibName !== undefined && elementPropTypeFor(glibName) !== undefined,\n ).map((iface) => {\n const glibName = getGlibName(iface.klass);\n\n return { klass: iface.klass, namespace: iface.namespace, origin: glibName, glibName };\n }),\n];\n\nconst propertyEntry = (\n context: ElementPageContext,\n owner: MemberOwner,\n property: GirProperty,\n jsName: string,\n): MetaDocEntry => {\n const isObject = isObjectProp(context.library, property);\n const baseType = renderDocsType(context.library, property.type, false);\n const type = isObject ? `${baseType} | ReactElement` : baseType;\n\n const accessNotes = isConstructableProperty(property)\n ? []\n : [`read-only, observe with \\`onNotify${upperFirst(jsName)}\\``];\n\n return {\n name: jsName,\n meta: propertyMetaLine({ type, property, accessNotes, origin: owner.origin }),\n doc: docMarkdown(property.doc),\n tags: annotationSpec(property.annotations),\n };\n};\n\nconst handwrittenPropMeta = (prop: HandwrittenProp, owner: MemberOwner): string =>\n [`\\`${prop.type}\\``, ...(owner.origin === undefined ? [] : [`from \\`${owner.origin}\\``])].join(\" · \");\n\nconst handwrittenPropEntries = (owner: MemberOwner, seen: Set<string>): MetaDocEntry[] => {\n const declared = owner.glibName === undefined ? undefined : elementPropTypeFor(owner.glibName);\n\n if (declared === undefined) {\n return [];\n }\n\n const entries: MetaDocEntry[] = [];\n\n for (const prop of handwrittenPropsFor(declared)) {\n if (seen.has(prop.name)) {\n continue;\n }\n\n seen.add(prop.name);\n entries.push({ name: prop.name, meta: handwrittenPropMeta(prop, owner), doc: prop.doc });\n }\n\n return entries;\n};\n\nconst propJsName = (property: GirProperty, owner: MemberOwner, seen: Set<string>): string | undefined => {\n if (!property.introspectable) {\n return undefined;\n }\n\n const jsName = toCamelIdentifier(property.name);\n\n if (seen.has(jsName) || isOmittedProp(owner.glibName, jsName)) {\n return undefined;\n }\n\n seen.add(jsName);\n\n return jsName;\n};\n\nconst ownerPropEntries = (context: ElementPageContext, owner: MemberOwner, seen: Set<string>): MetaDocEntry[] => {\n const entries: MetaDocEntry[] = [...handwrittenPropEntries(owner, seen)];\n\n for (const property of owner.klass.properties) {\n const jsName = propJsName(property, owner, seen);\n\n if (jsName !== undefined) {\n entries.push(propertyEntry(context, owner, property, jsName));\n }\n }\n\n return entries;\n};\n\nconst propertyEntries = (entry: GlibNamedClass, context: ElementPageContext, seen: Set<string>): MetaDocEntry[] => {\n const entries: MetaDocEntry[] = [];\n\n for (const owner of memberOwners(entry, context)) {\n entries.push(...ownerPropEntries(context, owner, seen));\n }\n\n return entries;\n};\n\nconst propsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen: Set<string> = new Set();\n const entries = propertyEntries(entry, context, seen);\n\n const intro = [\n `\\`ref\\` receives the \\`${selfType}\\` instance.`,\n \"Every mutable property also has an `onNotify<Prop>` handler prop called with the new value \" +\n \"when the property changes.\",\n \"Props inherited from ancestor elements are documented on their own pages.\",\n ].join(\" \");\n\n if (entries.length === 0) {\n return [\"## Props\", intro];\n }\n\n return [\"## Props\", intro, ...sortedMetaBlocks(entries)];\n};\n\nconst ownerSignalEntries = (\n context: ElementPageContext,\n owner: MemberOwner,\n selfType: string,\n seen: Set<string>,\n): OriginSignatureEntry[] => {\n const entries: OriginSignatureEntry[] = [];\n\n for (const signal of owner.klass.signals) {\n const name = signalHandlerName(signal.name);\n\n if (seen.has(name)) {\n continue;\n }\n\n seen.add(name);\n\n entries.push({\n name,\n signature: renderDocsSignalSignature(context.library, signal, selfType),\n doc: docMarkdown(signal.doc),\n tags: signalTags(signal, true),\n origin: owner.origin,\n });\n }\n\n return entries;\n};\n\nconst signalsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const seen: Set<string> = new Set();\n const entries: OriginSignatureEntry[] = [];\n\n for (const owner of memberOwners(entry, context)) {\n entries.push(...ownerSignalEntries(context, owner, selfType, seen));\n }\n\n if (entries.length === 0) {\n return [];\n }\n\n return [\"## Signals\", ...originSignatureBlocks(entries)];\n};\n\nconst methodsSection = (entry: GlibNamedClass, context: ElementPageContext, selfType: string): string[] => {\n const entries = classMethodEntries(context.library, entry.namespace, entry.klass);\n const importPath = `@gtkx/gi/${namespaceDirectory(entry.namespace)}`;\n\n const intro =\n `Methods are called on the \\`${selfType}\\` instance, obtained with the \\`ref\\` prop or ` +\n `imported from \\`${importPath}\\`. Methods inherited from ancestors are documented on their own pages.`;\n\n return methodsSectionBlocks(entries, intro);\n};\n\nconst renderElementPage = (entry: GlibNamedClass, context: ElementPageContext): string => {\n const selfType = qualifiedClassName(entry.namespace.name, entry.klass.name);\n\n return joinSections([\n frontmatter(entry),\n `# ${entry.glibName}`,\n docMarkdown(entry.klass.doc),\n ...annotationNotes(entry.klass.annotations),\n importBlock(entry),\n ...hierarchySection(entry, context),\n ...propsSection(entry, context, selfType),\n ...signalsSection(entry, context, selfType),\n ...methodsSection(entry, context, selfType),\n ]);\n};\n\nexport { renderElementPage, type ElementPageContext };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/docs/pipeline.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/docs/pipeline.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,sCAAsC,CAAC;AAE1F,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,+BAA+B,CAAC;AAInF,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC/B,CAAC;AAEF,KAAK,WAAW,GAAG;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAeF,KAAK,UAAU,GAAG;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,aAAa,EAAE,CAAC;CAC/B,CAAC;AA2QF,QAAA,MAAM,SAAS,GAAI,SAAS,WAAW,KAAG,UA2BzC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|