@gtkx/codegen 1.5.0 → 1.6.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/dist/analysis/descriptor-render.d.ts +1 -0
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +56 -28
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +3 -1
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +10 -9
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +24 -3
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +2 -0
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +2 -1
- package/dist/docs/api-reference.js.map +1 -1
- package/dist/docs/pipeline.d.ts +3 -0
- package/dist/docs/pipeline.d.ts.map +1 -1
- package/dist/docs/pipeline.js +44 -12
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/fingerprint.d.ts +3 -0
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +4 -0
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +1 -0
- package/dist/gi.d.ts.map +1 -1
- package/dist/gi.js +4 -1
- package/dist/gi.js.map +1 -1
- package/dist/gir/libraries.d.ts +12 -5
- package/dist/gir/libraries.d.ts.map +1 -1
- package/dist/gir/libraries.js +50 -14
- package/dist/gir/libraries.js.map +1 -1
- package/dist/gir/library.d.ts +5 -0
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +6 -0
- package/dist/gir/library.js.map +1 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -0
- package/dist/internal.js.map +1 -1
- package/dist/jsx.d.ts +1 -0
- package/dist/jsx.d.ts.map +1 -1
- package/dist/jsx.js +2 -0
- package/dist/jsx.js.map +1 -1
- package/dist/runner.d.ts +2 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +3 -1
- package/dist/runner.js.map +1 -1
- package/dist/store/gi/bootstrap.d.ts +4 -0
- package/dist/store/gi/bootstrap.d.ts.map +1 -0
- package/dist/store/gi/bootstrap.js +48 -0
- package/dist/store/gi/bootstrap.js.map +1 -0
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +75 -28
- package/dist/store/gi/class.js.map +1 -1
- package/dist/store/gi/constructor-props.d.ts.map +1 -1
- package/dist/store/gi/constructor-props.js +2 -1
- package/dist/store/gi/constructor-props.js.map +1 -1
- package/dist/store/gi/enum.js +3 -3
- package/dist/store/gi/enum.js.map +1 -1
- package/dist/store/gi/folded.d.ts +14 -0
- package/dist/store/gi/folded.d.ts.map +1 -0
- package/dist/store/gi/folded.js +35 -0
- package/dist/store/gi/folded.js.map +1 -0
- package/dist/store/gi/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +22 -3
- 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 +11 -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 +43 -4
- package/dist/store/gi/interface.js.map +1 -1
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +2 -0
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/pipeline.d.ts +5 -1
- package/dist/store/gi/pipeline.d.ts.map +1 -1
- package/dist/store/gi/pipeline.js +13 -1
- package/dist/store/gi/pipeline.js.map +1 -1
- package/dist/store/gi/property-accessor.js +1 -1
- package/dist/store/gi/property-accessor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +3 -3
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/record.d.ts.map +1 -1
- package/dist/store/gi/record.js +44 -12
- 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/return-wrap.js +1 -1
- package/dist/store/gi/return-wrap.js.map +1 -1
- package/dist/store/gi/signal.d.ts.map +1 -1
- package/dist/store/gi/signal.js +7 -3
- package/dist/store/gi/signal.js.map +1 -1
- package/dist/store/gi/vtable.d.ts.map +1 -1
- package/dist/store/gi/vtable.js +1 -1
- 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 +16 -7
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/element-components.d.ts.map +1 -1
- package/dist/store/jsx/element-components.js +64 -10
- package/dist/store/jsx/element-components.js.map +1 -1
- package/dist/store/jsx/element-prop-types.d.ts +2 -0
- package/dist/store/jsx/element-prop-types.d.ts.map +1 -1
- package/dist/store/jsx/element-prop-types.js +2 -0
- package/dist/store/jsx/element-prop-types.js.map +1 -1
- package/dist/store/jsx/metadata.d.ts.map +1 -1
- package/dist/store/jsx/metadata.js +28 -1
- package/dist/store/jsx/metadata.js.map +1 -1
- package/dist/store/jsx-store.d.ts +1 -0
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +7 -2
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/store-fs.d.ts +2 -1
- package/dist/store/store-fs.d.ts.map +1 -1
- package/dist/store/store-fs.js +1 -1
- package/dist/store/store-fs.js.map +1 -1
- package/dist/writer/context.d.ts +17 -0
- package/dist/writer/context.d.ts.map +1 -1
- package/dist/writer/context.js +83 -11
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/emit.d.ts +2 -1
- package/dist/writer/emit.d.ts.map +1 -1
- package/dist/writer/emit.js +2 -1
- package/dist/writer/emit.js.map +1 -1
- package/dist/writer/imports.d.ts.map +1 -1
- package/dist/writer/imports.js +6 -1
- package/dist/writer/imports.js.map +1 -1
- package/dist/writer/module.d.ts +1 -0
- package/dist/writer/module.d.ts.map +1 -1
- package/dist/writer/module.js +6 -1
- package/dist/writer/module.js.map +1 -1
- package/overrides/glib/regex.ts.ejs +2 -0
- package/package.json +4 -4
- package/src/analysis/descriptor-render.ts +79 -30
- package/src/analysis/descriptor.ts +19 -11
- package/src/compile.ts +42 -3
- package/src/docs/api-reference.ts +4 -1
- package/src/docs/pipeline.ts +64 -13
- package/src/fingerprint.ts +7 -0
- package/src/gi.ts +6 -1
- package/src/gir/libraries.ts +64 -16
- package/src/gir/library.ts +9 -0
- package/src/internal.ts +1 -0
- package/src/jsx.ts +3 -0
- package/src/runner.ts +5 -1
- package/src/store/gi/bootstrap.ts +64 -0
- package/src/store/gi/class.ts +100 -29
- package/src/store/gi/constructor-props.ts +2 -1
- package/src/store/gi/enum.ts +4 -4
- package/src/store/gi/folded.ts +57 -0
- package/src/store/gi/function.ts +22 -3
- package/src/store/gi/gtype-binding.ts +15 -2
- package/src/store/gi/interface.ts +64 -7
- package/src/store/gi/method.ts +2 -0
- package/src/store/gi/pipeline.ts +21 -2
- package/src/store/gi/property-accessor.ts +1 -1
- package/src/store/gi/record-field-accessor.ts +5 -3
- package/src/store/gi/record.ts +61 -14
- package/src/store/gi/registration.ts +2 -2
- package/src/store/gi/return-wrap.ts +1 -1
- package/src/store/gi/signal.ts +8 -3
- package/src/store/gi/vtable.ts +1 -0
- package/src/store/gi-store.ts +19 -7
- package/src/store/jsx/element-components.ts +107 -10
- package/src/store/jsx/element-prop-types.ts +4 -0
- package/src/store/jsx/metadata.ts +41 -0
- package/src/store/jsx-store.ts +10 -4
- package/src/store/store-fs.ts +3 -2
- package/src/writer/context.ts +109 -16
- package/src/writer/emit.ts +3 -1
- package/src/writer/imports.ts +9 -1
- package/src/writer/module.ts +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gi-store.js","sourceRoot":"","sources":["../../src/store/gi-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAsB,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAEH,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAqB,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"gi-store.js","sourceRoot":"","sources":["../../src/store/gi-store.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings } from \"@gtkx/utils\";\nimport { existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { SourceModule } from \"../compile.js\";\nimport { FINGERPRINT_FILENAME, type GiFingerprint } from \"../fingerprint.js\";\nimport {\n type GeneratedLibraries,\n LIBRARIES_FILENAME,\n renderGeneratedLibraries,\n} from \"./gi/generated-libraries.js\";\nimport { buildManifest, namespaceBarrel, type StoreOptions, subpathExport, writeStore } from \"./store-fs.js\";\n\ntype GiNamespaceInput = {\n directory: string;\n rawSource: string;\n rawBootstrapSource?: string | undefined;\n girFile: string;\n};\n\ntype GiExternalNamespaceInput = {\n directory: string;\n packageName: string;\n girFile: string;\n};\n\ntype GiStoreRecords = {\n fingerprint: GiFingerprint;\n libraries: GeneratedLibraries;\n};\n\nconst OVERRIDES_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), \"..\", \"..\", \"overrides\");\nconst TREE_SHAKEN_SIDE_EFFECTS = [\"**/bootstrap.js\", \"**/overrides/*.js\", \"**/index.js\"];\n\nconst overrideFiles = (directory: string): SourceModule[] => {\n const dir = join(OVERRIDES_ROOT, directory);\n\n if (!existsSync(dir)) {\n return [];\n }\n\n return readdirSync(dir)\n .filter((name) => name.endsWith(\".ejs\") && name !== \"index.ts.ejs\")\n .map((name) => overrideModule(`${directory}/overrides/${name.replace(/\\.ejs$/, \"\")}`, join(dir, name)));\n};\n\nconst overrideModule = (fileName: string, overridePath: string): SourceModule => ({\n fileName,\n source: readFileSync(overridePath, \"utf8\"),\n origin: overridePath,\n});\n\nconst barrelFile = (directory: string, girFile: string, hasBootstrap: boolean): SourceModule => {\n const barrel = namespaceBarrel(directory);\n const overrideIndex = join(OVERRIDES_ROOT, directory, \"index.ts.ejs\");\n\n const file = existsSync(overrideIndex)\n ? overrideModule(barrel.fileName, overrideIndex)\n : { ...barrel, origin: girFile };\n\n if (!hasBootstrap) {\n return file;\n }\n\n return { ...file, source: `import \"./bootstrap.js\";\\n${file.source}` };\n};\n\nconst externalShimModule = ({ directory, packageName, girFile }: GiExternalNamespaceInput): SourceModule => ({\n fileName: `${directory}/index.ts`,\n source:\n `/** @deprecated Since 1.3. Import from \"${packageName}\" instead. Removed in v2. */\\n` +\n `export * from \"${packageName}\";\\n`,\n origin: girFile,\n});\n\nconst collectStoreSources = (\n namespaces: GiNamespaceInput[],\n externalNamespaces: GiExternalNamespaceInput[],\n): { collected: SourceModule[]; exportsMap: Record<string, unknown> } => {\n const exportsMap: Record<string, unknown> = {};\n const collected: SourceModule[] = [];\n\n for (const { directory, rawSource, rawBootstrapSource, girFile } of namespaces) {\n collected.push(\n { fileName: `${directory}/${directory}.ts`, source: rawSource, origin: girFile },\n ...overrideFiles(directory),\n barrelFile(directory, girFile, rawBootstrapSource !== undefined),\n );\n\n if (rawBootstrapSource !== undefined) {\n collected.push({ fileName: `${directory}/bootstrap.ts`, source: rawBootstrapSource, origin: girFile });\n }\n\n exportsMap[`./${directory}`] = subpathExport(`${directory}/index`);\n }\n\n for (const external of externalNamespaces) {\n collected.push(externalShimModule(external));\n exportsMap[`./${external.directory}`] = subpathExport(`${external.directory}/index`);\n }\n\n return { collected, exportsMap };\n};\n\nconst storePeerDependencies = (externalNamespaces: GiExternalNamespaceInput[]): Record<string, string> =>\n Object.fromEntries(\n sortStrings([\"@gtkx/runtime\", ...externalNamespaces.map((entry) => entry.packageName)]).map((name) => [\n name,\n \"*\",\n ]),\n );\n\nconst writeGiStore = (\n options: StoreOptions,\n namespaces: GiNamespaceInput[],\n externalNamespaces: GiExternalNamespaceInput[],\n records: GiStoreRecords,\n): void => {\n const { collected, exportsMap } = collectStoreSources(namespaces, externalNamespaces);\n const isTreeShaken = namespaces.some((namespace) => namespace.rawBootstrapSource !== undefined);\n\n writeStore({\n storeDir: options.storeDir,\n linkDir: options.linkDir,\n files: collected,\n manifest: buildManifest({\n name: \"@gtkx/gi\",\n version: options.version,\n exports: exportsMap,\n sideEffects: isTreeShaken ? TREE_SHAKEN_SIDE_EFFECTS : true,\n peerDependencies: storePeerDependencies(externalNamespaces),\n }),\n rawFiles: [\n { relativePath: FINGERPRINT_FILENAME, content: `${JSON.stringify(records.fingerprint, null, 2)}\\n` },\n { relativePath: LIBRARIES_FILENAME, content: renderGeneratedLibraries(records.libraries) },\n ],\n });\n};\n\nexport { writeGiStore, type GiExternalNamespaceInput, type GiNamespaceInput };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-components.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/element-components.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"element-components.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/element-components.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEjF,KAAK,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3D,KAAK,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAuBlE,QAAA,MAAM,gCAAgC,GAClC,iBAAiB,YAAY,EAC7B,SAAS,OAAO,EAChB,SAAS;IACL,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,EAAE,cAAc,EAAE,CAAC;IACpC,UAAU,EAAE,yBAAyB,CAAC;CACzC,KACF;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAqB9C,CAAC;AAsLF,OAAO,EAAE,gCAAgC,EAAE,KAAK,yBAAyB,EAAE,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { sourceStringLiteral } from "@gtkx/utils";
|
|
1
|
+
import { sanitizeTypeIdentifier, sourceStringLiteral } from "@gtkx/utils";
|
|
2
|
+
import { externalPackageFor } from "../../gir/external-namespaces.js";
|
|
2
3
|
import { getDoc } from "../gi/doc-spec.js";
|
|
3
4
|
import { ancestorGlibNames } from "./intrinsic-elements.js";
|
|
5
|
+
const METADATA_ALIAS = "Metadata$";
|
|
4
6
|
const generateElementComponentsSection = (targetNamespace, library, options) => {
|
|
5
7
|
const collector = { imports: options.imports, exportedNames: new Set(), exportLines: [] };
|
|
6
8
|
const lazyElements = options.lazyElements;
|
|
@@ -12,7 +14,10 @@ const generateElementComponentsSection = (targetNamespace, library, options) =>
|
|
|
12
14
|
intrinsicElements: options.intrinsicElements,
|
|
13
15
|
components: options.components,
|
|
14
16
|
});
|
|
15
|
-
collectLazyElementExports(collector, lazyElements
|
|
17
|
+
collectLazyElementExports(collector, lazyElements, {
|
|
18
|
+
isTreeShaken: library.isTreeShaken,
|
|
19
|
+
intrinsicNames: new Set(options.intrinsicElements.map((entry) => entry.glibName)),
|
|
20
|
+
});
|
|
16
21
|
const source = collector.exportLines.join("\n\n");
|
|
17
22
|
return { source, exportedNames: collector.exportedNames };
|
|
18
23
|
};
|
|
@@ -36,17 +41,48 @@ const collectCandidateExports = (collector, options) => {
|
|
|
36
41
|
appendCandidateExport(collector, candidate, options);
|
|
37
42
|
}
|
|
38
43
|
};
|
|
39
|
-
const collectLazyElementExports = (collector, lazyElements) => {
|
|
44
|
+
const collectLazyElementExports = (collector, lazyElements, options) => {
|
|
40
45
|
for (const spec of lazyElements) {
|
|
41
46
|
collector.imports.addNamed("@gtkx/react/internal", "createElementComponent", false);
|
|
42
47
|
collector.imports.addNamed("react", "ReactNode", true);
|
|
43
|
-
|
|
48
|
+
const refs = {
|
|
49
|
+
classRef: lazyClassRef(collector, spec, options),
|
|
50
|
+
metadataRef: lazyMetadataRef(collector, spec, options),
|
|
51
|
+
};
|
|
52
|
+
collector.exportLines.push(renderLazyElementExport(spec, refs, options));
|
|
44
53
|
collector.exportedNames.add(spec.element);
|
|
45
54
|
}
|
|
46
55
|
};
|
|
47
|
-
const
|
|
56
|
+
const lazyMetadataRef = (collector, spec, options) => {
|
|
57
|
+
if (!options.isTreeShaken || !options.intrinsicNames.has(spec.element)) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
collector.imports.addNamespace("../metadata.js", METADATA_ALIAS, false);
|
|
61
|
+
return `${METADATA_ALIAS}.${spec.element}`;
|
|
62
|
+
};
|
|
63
|
+
const lazyClassRef = (collector, spec, options) => {
|
|
64
|
+
if (!options.isTreeShaken) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
const alias = `${spec.namespaceName}$`;
|
|
68
|
+
const specifier = externalPackageFor(spec.namespaceName) ?? `@gtkx/gi/${spec.namespaceName.toLowerCase()}`;
|
|
69
|
+
collector.imports.addNamespace(specifier, alias, false);
|
|
70
|
+
return `${alias}.${sanitizeTypeIdentifier(spec.className)}`;
|
|
71
|
+
};
|
|
72
|
+
const renderLazyElementExport = (spec, refs, options) => {
|
|
48
73
|
const doc = getDoc(spec);
|
|
49
|
-
const
|
|
74
|
+
const args = [sourceStringLiteral(spec.element)];
|
|
75
|
+
if (refs.classRef !== undefined) {
|
|
76
|
+
args.push(refs.classRef);
|
|
77
|
+
}
|
|
78
|
+
else if (refs.metadataRef !== undefined) {
|
|
79
|
+
args.push("undefined");
|
|
80
|
+
}
|
|
81
|
+
if (refs.metadataRef !== undefined) {
|
|
82
|
+
args.push(refs.metadataRef);
|
|
83
|
+
}
|
|
84
|
+
const pure = options.isTreeShaken ? "/* @__PURE__ */ " : "";
|
|
85
|
+
const factory = `${pure}createElementComponent(${args.join(", ")})`;
|
|
50
86
|
const component = `${doc}export const ${spec.element}: (props: ${spec.typeName}) => ReactNode = ${factory};`;
|
|
51
87
|
return `${doc}${spec.typeSource}\n\n${component}`;
|
|
52
88
|
};
|
|
@@ -59,8 +95,18 @@ const renderCandidateExport = (candidate, library, imports, components) => {
|
|
|
59
95
|
if (component !== undefined) {
|
|
60
96
|
imports.addNamed(component.module, component.export, false);
|
|
61
97
|
}
|
|
98
|
+
let classRef;
|
|
99
|
+
let metadataRef;
|
|
100
|
+
if (library.isTreeShaken) {
|
|
101
|
+
const alias = `${namespace.name}$`;
|
|
102
|
+
const specifier = externalPackageFor(namespace.name) ?? `@gtkx/gi/${namespace.name.toLowerCase()}`;
|
|
103
|
+
imports.addNamespace(specifier, alias, false);
|
|
104
|
+
imports.addNamespace("../metadata.js", METADATA_ALIAS, false);
|
|
105
|
+
classRef = `${alias}.${sanitizeTypeIdentifier(klass.name)}`;
|
|
106
|
+
metadataRef = `${METADATA_ALIAS}.${glibName}`;
|
|
107
|
+
}
|
|
62
108
|
const doc = getDoc(klass);
|
|
63
|
-
return `${doc}${renderElementComponentExport(glibName, component)}`;
|
|
109
|
+
return `${doc}${renderElementComponentExport(glibName, component, classRef, metadataRef)}`;
|
|
64
110
|
};
|
|
65
111
|
const resolveElementComponent = (ancestry, components) => {
|
|
66
112
|
for (const name of ancestry) {
|
|
@@ -71,14 +117,22 @@ const resolveElementComponent = (ancestry, components) => {
|
|
|
71
117
|
}
|
|
72
118
|
return undefined;
|
|
73
119
|
};
|
|
74
|
-
const renderElementComponentExport = (glibName, component) => {
|
|
120
|
+
const renderElementComponentExport = (glibName, component, classRef, metadataRef) => {
|
|
75
121
|
const propsType = `${glibName}Props`;
|
|
76
122
|
const annotation = `(props: ${propsType}) => ReactNode`;
|
|
77
|
-
const
|
|
123
|
+
const args = [sourceStringLiteral(glibName)];
|
|
124
|
+
if (classRef !== undefined) {
|
|
125
|
+
args.push(classRef);
|
|
126
|
+
}
|
|
127
|
+
if (metadataRef !== undefined) {
|
|
128
|
+
args.push(metadataRef);
|
|
129
|
+
}
|
|
130
|
+
const pure = classRef === undefined ? "" : "/* @__PURE__ */ ";
|
|
131
|
+
const factoryCall = `${pure}createElementComponent(${args.join(", ")})`;
|
|
78
132
|
if (component === undefined) {
|
|
79
133
|
return `export const ${glibName}: ${annotation} = ${factoryCall};`;
|
|
80
134
|
}
|
|
81
|
-
return `export const ${glibName}: ${annotation} = ${component.export}(${factoryCall});`;
|
|
135
|
+
return `export const ${glibName}: ${annotation} = ${pure}${component.export}(${factoryCall});`;
|
|
82
136
|
};
|
|
83
137
|
export { generateElementComponentsSection };
|
|
84
138
|
//# sourceMappingURL=element-components.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-components.js","sourceRoot":"","sources":["../../../src/store/jsx/element-components.ts"],"names":[],"mappings":"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","sourcesContent":["import { sourceStringLiteral } from \"@gtkx/utils\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport type { ImportsBuilder } from \"../../writer/imports.js\";\nimport type { LazyElementSpec } from \"./element-prop-types.js\";\nimport { getDoc } from \"../gi/doc-spec.js\";\nimport { ancestorGlibNames, type GlibNamedClass } from \"./intrinsic-elements.js\";\n\ntype ElementComponent = { module: string; export: string };\ntype ElementComponentOverrides = Record<string, ElementComponent>;\n\ntype ExportCollector = {\n imports: ImportsBuilder;\n exportedNames: Set<string>;\n exportLines: string[];\n};\n\ntype CandidateExportOptions = {\n targetNamespace: GirNamespace;\n library: Library;\n virtualNames: Set<string>;\n intrinsicElements: GlibNamedClass[];\n components: Record<string, ElementComponent>;\n};\n\nconst generateElementComponentsSection = (\n targetNamespace: GirNamespace,\n library: Library,\n options: {\n imports: ImportsBuilder;\n lazyElements: LazyElementSpec[];\n intrinsicElements: GlibNamedClass[];\n components: ElementComponentOverrides;\n },\n): { source: string; exportedNames: Set<string> } => {\n const collector: ExportCollector = { imports: options.imports, exportedNames: new Set(), exportLines: [] };\n const lazyElements = options.lazyElements;\n const virtualNames = new Set(lazyElements.map((entry) => entry.element));\n\n collectCandidateExports(collector, {\n targetNamespace,\n library,\n virtualNames,\n intrinsicElements: options.intrinsicElements,\n components: options.components,\n });\n\n collectLazyElementExports(collector, lazyElements);\n const source = collector.exportLines.join(\"\\n\\n\");\n\n return { source, exportedNames: collector.exportedNames };\n};\n\nconst appendCandidateExport = (\n collector: ExportCollector,\n candidate: GlibNamedClass,\n options: CandidateExportOptions,\n): void => {\n const { targetNamespace, library, virtualNames, components } = options;\n\n if (candidate.namespace.name !== targetNamespace.name) {\n return;\n }\n\n if (virtualNames.has(candidate.glibName)) {\n return;\n }\n\n const line = renderCandidateExport(candidate, library, collector.imports, components);\n collector.exportLines.push(line);\n collector.exportedNames.add(candidate.glibName);\n};\n\nconst collectCandidateExports = (collector: ExportCollector, options: CandidateExportOptions): void => {\n for (const candidate of options.intrinsicElements) {\n if (candidate.klass.isAbstract) {\n continue;\n }\n\n appendCandidateExport(collector, candidate, options);\n }\n};\n\nconst collectLazyElementExports = (collector: ExportCollector, lazyElements: LazyElementSpec[]): void => {\n for (const spec of lazyElements) {\n collector.imports.addNamed(\"@gtkx/react/internal\", \"createElementComponent\", false);\n collector.imports.addNamed(\"react\", \"ReactNode\", true);\n collector.exportLines.push(renderLazyElementExport(spec));\n collector.exportedNames.add(spec.element);\n }\n};\n\nconst renderLazyElementExport = (spec: LazyElementSpec): string => {\n const doc = getDoc(spec);\n const factory = `createElementComponent(${sourceStringLiteral(spec.element)})`;\n const component = `${doc}export const ${spec.element}: (props: ${spec.typeName}) => ReactNode = ${factory};`;\n\n return `${doc}${spec.typeSource}\\n\\n${component}`;\n};\n\nconst renderCandidateExport = (\n candidate: GlibNamedClass,\n library: Library,\n imports: ImportsBuilder,\n components: Record<string, ElementComponent>,\n): string => {\n const { glibName, klass, namespace } = candidate;\n const ancestry = ancestorGlibNames(klass, namespace, library);\n const component = resolveElementComponent(ancestry, components);\n imports.addNamed(\"@gtkx/react/internal\", \"createElementComponent\", false);\n imports.addNamed(\"react\", \"ReactNode\", true);\n\n if (component !== undefined) {\n imports.addNamed(component.module, component.export, false);\n }\n\n const doc = getDoc(klass);\n\n return `${doc}${renderElementComponentExport(glibName, component)}`;\n};\n\nconst resolveElementComponent = (\n ancestry: string[],\n components: Record<string, ElementComponent>,\n): ElementComponent | undefined => {\n for (const name of ancestry) {\n const found = components[name];\n\n if (found !== undefined) {\n return found;\n }\n }\n\n return undefined;\n};\n\nconst renderElementComponentExport = (glibName: string, component: ElementComponent | undefined): string => {\n const propsType = `${glibName}Props`;\n const annotation = `(props: ${propsType}) => ReactNode`;\n const factoryCall = `createElementComponent(${sourceStringLiteral(glibName)})`;\n\n if (component === undefined) {\n return `export const ${glibName}: ${annotation} = ${factoryCall};`;\n }\n\n return `export const ${glibName}: ${annotation} = ${component.export}(${factoryCall});`;\n};\n\nexport { generateElementComponentsSection, type ElementComponentOverrides };\n"]}
|
|
1
|
+
{"version":3,"file":"element-components.js","sourceRoot":"","sources":["../../../src/store/jsx/element-components.ts"],"names":[],"mappings":"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","sourcesContent":["import { sanitizeTypeIdentifier, sourceStringLiteral } from \"@gtkx/utils\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { GirNamespace } from \"../../gir/namespace.js\";\nimport type { ImportsBuilder } from \"../../writer/imports.js\";\nimport type { LazyElementSpec } from \"./element-prop-types.js\";\nimport { externalPackageFor } from \"../../gir/external-namespaces.js\";\nimport { getDoc } from \"../gi/doc-spec.js\";\nimport { ancestorGlibNames, type GlibNamedClass } from \"./intrinsic-elements.js\";\n\ntype ElementComponent = { module: string; export: string };\ntype ElementComponentOverrides = Record<string, ElementComponent>;\n\ntype ExportCollector = {\n imports: ImportsBuilder;\n exportedNames: Set<string>;\n exportLines: string[];\n};\n\ntype CandidateExportOptions = {\n targetNamespace: GirNamespace;\n library: Library;\n virtualNames: Set<string>;\n intrinsicElements: GlibNamedClass[];\n components: Record<string, ElementComponent>;\n};\n\ntype LazyMetadataOptions = {\n isTreeShaken: boolean;\n intrinsicNames: Set<string>;\n};\n\nconst METADATA_ALIAS = \"Metadata$\";\n\nconst generateElementComponentsSection = (\n targetNamespace: GirNamespace,\n library: Library,\n options: {\n imports: ImportsBuilder;\n lazyElements: LazyElementSpec[];\n intrinsicElements: GlibNamedClass[];\n components: ElementComponentOverrides;\n },\n): { source: string; exportedNames: Set<string> } => {\n const collector: ExportCollector = { imports: options.imports, exportedNames: new Set(), exportLines: [] };\n const lazyElements = options.lazyElements;\n const virtualNames = new Set(lazyElements.map((entry) => entry.element));\n\n collectCandidateExports(collector, {\n targetNamespace,\n library,\n virtualNames,\n intrinsicElements: options.intrinsicElements,\n components: options.components,\n });\n\n collectLazyElementExports(collector, lazyElements, {\n isTreeShaken: library.isTreeShaken,\n intrinsicNames: new Set(options.intrinsicElements.map((entry) => entry.glibName)),\n });\n\n const source = collector.exportLines.join(\"\\n\\n\");\n\n return { source, exportedNames: collector.exportedNames };\n};\n\nconst appendCandidateExport = (\n collector: ExportCollector,\n candidate: GlibNamedClass,\n options: CandidateExportOptions,\n): void => {\n const { targetNamespace, library, virtualNames, components } = options;\n\n if (candidate.namespace.name !== targetNamespace.name) {\n return;\n }\n\n if (virtualNames.has(candidate.glibName)) {\n return;\n }\n\n const line = renderCandidateExport(candidate, library, collector.imports, components);\n collector.exportLines.push(line);\n collector.exportedNames.add(candidate.glibName);\n};\n\nconst collectCandidateExports = (collector: ExportCollector, options: CandidateExportOptions): void => {\n for (const candidate of options.intrinsicElements) {\n if (candidate.klass.isAbstract) {\n continue;\n }\n\n appendCandidateExport(collector, candidate, options);\n }\n};\n\nconst collectLazyElementExports = (\n collector: ExportCollector,\n lazyElements: LazyElementSpec[],\n options: LazyMetadataOptions,\n): void => {\n for (const spec of lazyElements) {\n collector.imports.addNamed(\"@gtkx/react/internal\", \"createElementComponent\", false);\n collector.imports.addNamed(\"react\", \"ReactNode\", true);\n\n const refs = {\n classRef: lazyClassRef(collector, spec, options),\n metadataRef: lazyMetadataRef(collector, spec, options),\n };\n\n collector.exportLines.push(renderLazyElementExport(spec, refs, options));\n collector.exportedNames.add(spec.element);\n }\n};\n\nconst lazyMetadataRef = (\n collector: ExportCollector,\n spec: LazyElementSpec,\n options: LazyMetadataOptions,\n): string | undefined => {\n if (!options.isTreeShaken || !options.intrinsicNames.has(spec.element)) {\n return undefined;\n }\n\n collector.imports.addNamespace(\"../metadata.js\", METADATA_ALIAS, false);\n\n return `${METADATA_ALIAS}.${spec.element}`;\n};\n\nconst lazyClassRef = (\n collector: ExportCollector,\n spec: LazyElementSpec,\n options: LazyMetadataOptions,\n): string | undefined => {\n if (!options.isTreeShaken) {\n return undefined;\n }\n\n const alias = `${spec.namespaceName}$`;\n const specifier = externalPackageFor(spec.namespaceName) ?? `@gtkx/gi/${spec.namespaceName.toLowerCase()}`;\n collector.imports.addNamespace(specifier, alias, false);\n\n return `${alias}.${sanitizeTypeIdentifier(spec.className)}`;\n};\n\nconst renderLazyElementExport = (\n spec: LazyElementSpec,\n refs: { classRef: string | undefined; metadataRef: string | undefined },\n options: LazyMetadataOptions,\n): string => {\n const doc = getDoc(spec);\n const args = [sourceStringLiteral(spec.element)];\n\n if (refs.classRef !== undefined) {\n args.push(refs.classRef);\n } else if (refs.metadataRef !== undefined) {\n args.push(\"undefined\");\n }\n\n if (refs.metadataRef !== undefined) {\n args.push(refs.metadataRef);\n }\n\n const pure = options.isTreeShaken ? \"/* @__PURE__ */ \" : \"\";\n const factory = `${pure}createElementComponent(${args.join(\", \")})`;\n const component = `${doc}export const ${spec.element}: (props: ${spec.typeName}) => ReactNode = ${factory};`;\n\n return `${doc}${spec.typeSource}\\n\\n${component}`;\n};\n\nconst renderCandidateExport = (\n candidate: GlibNamedClass,\n library: Library,\n imports: ImportsBuilder,\n components: Record<string, ElementComponent>,\n): string => {\n const { glibName, klass, namespace } = candidate;\n const ancestry = ancestorGlibNames(klass, namespace, library);\n const component = resolveElementComponent(ancestry, components);\n imports.addNamed(\"@gtkx/react/internal\", \"createElementComponent\", false);\n imports.addNamed(\"react\", \"ReactNode\", true);\n\n if (component !== undefined) {\n imports.addNamed(component.module, component.export, false);\n }\n\n let classRef: string | undefined;\n let metadataRef: string | undefined;\n\n if (library.isTreeShaken) {\n const alias = `${namespace.name}$`;\n const specifier = externalPackageFor(namespace.name) ?? `@gtkx/gi/${namespace.name.toLowerCase()}`;\n imports.addNamespace(specifier, alias, false);\n imports.addNamespace(\"../metadata.js\", METADATA_ALIAS, false);\n classRef = `${alias}.${sanitizeTypeIdentifier(klass.name)}`;\n metadataRef = `${METADATA_ALIAS}.${glibName}`;\n }\n\n const doc = getDoc(klass);\n\n return `${doc}${renderElementComponentExport(glibName, component, classRef, metadataRef)}`;\n};\n\nconst resolveElementComponent = (\n ancestry: string[],\n components: Record<string, ElementComponent>,\n): ElementComponent | undefined => {\n for (const name of ancestry) {\n const found = components[name];\n\n if (found !== undefined) {\n return found;\n }\n }\n\n return undefined;\n};\n\nconst renderElementComponentExport = (\n glibName: string,\n component: ElementComponent | undefined,\n classRef: string | undefined,\n metadataRef: string | undefined,\n): string => {\n const propsType = `${glibName}Props`;\n const annotation = `(props: ${propsType}) => ReactNode`;\n const args = [sourceStringLiteral(glibName)];\n\n if (classRef !== undefined) {\n args.push(classRef);\n }\n\n if (metadataRef !== undefined) {\n args.push(metadataRef);\n }\n\n const pure = classRef === undefined ? \"\" : \"/* @__PURE__ */ \";\n const factoryCall = `${pure}createElementComponent(${args.join(\", \")})`;\n\n if (component === undefined) {\n return `export const ${glibName}: ${annotation} = ${factoryCall};`;\n }\n\n return `export const ${glibName}: ${annotation} = ${pure}${component.export}(${factoryCall});`;\n};\n\nexport { generateElementComponentsSection, type ElementComponentOverrides };\n"]}
|
|
@@ -6,6 +6,8 @@ type LazyElementSpec = {
|
|
|
6
6
|
typeSource: string;
|
|
7
7
|
doc: string | undefined;
|
|
8
8
|
annotations: GirAnnotations;
|
|
9
|
+
namespaceName: string;
|
|
10
|
+
className: string;
|
|
9
11
|
};
|
|
10
12
|
declare const lazyElementSpecs: (context: GirIndex, lazyElements: string[]) => Map<string, LazyElementSpec[]>;
|
|
11
13
|
export { lazyElementSpecs, type LazyElementSpec };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-prop-types.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAY,KAAK,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAG5E,KAAK,eAAe,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,WAAW,EAAE,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"element-prop-types.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAY,KAAK,QAAQ,EAAqB,MAAM,gBAAgB,CAAC;AAG5E,KAAK,eAAe,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,WAAW,EAAE,cAAc,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC;AAsCF,QAAA,MAAM,gBAAgB,GAAI,SAAS,QAAQ,EAAE,cAAc,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAgBlG,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,CAAC"}
|
|
@@ -27,6 +27,8 @@ const createLazyElementSpec = (context, element, entry) => {
|
|
|
27
27
|
typeSource: `export type ${typeName} = ${base} & { children?: ReactNode };`,
|
|
28
28
|
doc: entry.klass.doc,
|
|
29
29
|
annotations: entry.klass.annotations,
|
|
30
|
+
namespaceName: entry.namespace.name,
|
|
31
|
+
className: entry.klass.name,
|
|
30
32
|
};
|
|
31
33
|
};
|
|
32
34
|
const lazyElementSpecs = (context, lazyElements) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-prop-types.js","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAoC,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"element-prop-types.js","sourceRoot":"","sources":["../../../src/store/jsx/element-prop-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAoC,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAYtD,MAAM,wBAAwB,GAAG,CAAC,KAAe,EAAE,KAAe,EAAQ,EAAE;IACxE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAAiB,EAAE,KAAmB,EAAY,EAAE;IAC5E,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAiB,EAAE,OAAe,EAAE,KAAmB,EAAmB,EAAE;IACvG,MAAM,QAAQ,GAAG,GAAG,OAAO,cAAc,CAAC;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC;IACrD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC,CAAC,QAAQ,QAAQ,UAAU,SAAS,GAAG,CAAC;IAEhG,OAAO;QACH,OAAO;QACP,QAAQ;QACR,UAAU,EAAE,eAAe,QAAQ,MAAM,IAAI,8BAA8B;QAC3E,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG;QACpB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;QACpC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI;QACnC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;KAC9B,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAiB,EAAE,YAAsB,EAAkC,EAAE;IACnG,MAAM,KAAK,GAAmC,IAAI,GAAG,EAAE,CAAC;IAExD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,SAAS;QACb,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAwB,CAAC","sourcesContent":["import { toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirAnnotations } from \"../../gir/annotations.js\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport { getChain, type GirIndex, type GirTypeEntry } from \"./gir-index.js\";\nimport { getGlibName } from \"./intrinsic-elements.js\";\n\ntype LazyElementSpec = {\n element: string;\n typeName: string;\n typeSource: string;\n doc: string | undefined;\n annotations: GirAnnotations;\n namespaceName: string;\n className: string;\n};\n\nconst appendConstructOnlyNames = (klass: GirClass, names: string[]): void => {\n for (const property of klass.properties) {\n if (property.constructOnly) {\n names.push(toCamelIdentifier(property.name));\n }\n }\n};\n\nconst constructOnlyNames = (context: GirIndex, entry: GirTypeEntry): string[] => {\n const names: string[] = [];\n\n for (const klass of getChain(context, entry)) {\n appendConstructOnlyNames(klass, names);\n }\n\n return names;\n};\n\nconst createLazyElementSpec = (context: GirIndex, element: string, entry: GirTypeEntry): LazyElementSpec => {\n const typeName = `${element}ElementProps`;\n const baseName = getGlibName(entry.klass) ?? element;\n const omitted = constructOnlyNames(context, entry);\n const omitUnion = omitted.map((name) => JSON.stringify(name)).join(\" | \");\n const base = omitted.length === 0 ? `${baseName}Props` : `Omit<${baseName}Props, ${omitUnion}>`;\n\n return {\n element,\n typeName,\n typeSource: `export type ${typeName} = ${base} & { children?: ReactNode };`,\n doc: entry.klass.doc,\n annotations: entry.klass.annotations,\n namespaceName: entry.namespace.name,\n className: entry.klass.name,\n };\n};\n\nconst lazyElementSpecs = (context: GirIndex, lazyElements: string[]): Map<string, LazyElementSpec[]> => {\n const specs: Map<string, LazyElementSpec[]> = new Map();\n\n for (const element of lazyElements) {\n const entry = context.index.get(element);\n\n if (entry === undefined) {\n continue;\n }\n\n const list = specs.get(entry.namespace.name) ?? [];\n list.push(createLazyElementSpec(context, element, entry));\n specs.set(entry.namespace.name, list);\n }\n\n return specs;\n};\n\nexport { lazyElementSpecs, type LazyElementSpec };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAiCpD,QAAA,MAAM,gBAAgB,GAAI,SAAS,OAAO,KAAG,MAqB5C,CAAC;AA8TF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { sortStringsBy, sourceStringLiteral, toCamelIdentifier } from "@gtkx/utils";
|
|
2
2
|
import { inputParameters } from "../../analysis/param-structure.js";
|
|
3
3
|
import { isConstructableProperty } from "../../gir/property.js";
|
|
4
|
-
import { implementedInterfaces, isIntrinsicElementClass, iterateClassesWithGlibName, signalHandlerName, } from "./intrinsic-elements.js";
|
|
4
|
+
import { ancestorGlibNames, implementedInterfaces, isIntrinsicElementClass, iterateClassesWithGlibName, signalHandlerName, } from "./intrinsic-elements.js";
|
|
5
5
|
const READABLE = 1;
|
|
6
6
|
const WRITABLE = 2;
|
|
7
7
|
const CONSTRUCT = 4;
|
|
@@ -12,6 +12,9 @@ const INTEGER_PATTERN = /^-?\d+$/;
|
|
|
12
12
|
const FLOAT_PATTERN = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i;
|
|
13
13
|
const generateMetadata = (library) => {
|
|
14
14
|
const intrinsicElements = collectIntrinsicElements(library);
|
|
15
|
+
if (library.isTreeShaken) {
|
|
16
|
+
return generateEntryMetadata(intrinsicElements);
|
|
17
|
+
}
|
|
15
18
|
const signalsEntries = intrinsicElements.map(({ glibName, signals }) => ` "${glibName}": ${renderSignalsObject(signals)},`);
|
|
16
19
|
const propertyEntries = intrinsicElements
|
|
17
20
|
.filter(({ properties }) => properties.length > 0)
|
|
@@ -23,6 +26,29 @@ const generateMetadata = (library) => {
|
|
|
23
26
|
`{\n${propertyEntries.join("\n")}\n};`,
|
|
24
27
|
].join("\n\n")}\n`;
|
|
25
28
|
};
|
|
29
|
+
const entryAncestorsInSet = (entry, names) => entry.ancestors.filter((name) => name !== entry.glibName && names.has(name));
|
|
30
|
+
const compareEntriesByDepth = (names) => (first, second) => entryAncestorsInSet(first, names).length - entryAncestorsInSet(second, names).length ||
|
|
31
|
+
first.glibName.localeCompare(second.glibName);
|
|
32
|
+
const renderEntryExport = (entry, names) => {
|
|
33
|
+
const parent = entryAncestorsInSet(entry, names)[0] ?? "undefined";
|
|
34
|
+
const literal = sourceStringLiteral(entry.glibName);
|
|
35
|
+
const ownSignals = renderSignalsObject(entry.signals);
|
|
36
|
+
const ownProperties = renderPropertiesObject(entry.properties);
|
|
37
|
+
const call = `registerElementMetadata(${literal}, ${parent}, ${ownSignals}, ${ownProperties})`;
|
|
38
|
+
return `export const ${entry.glibName}: string = /* @__PURE__ */ ${call};`;
|
|
39
|
+
};
|
|
40
|
+
const generateEntryMetadata = (intrinsicElements) => {
|
|
41
|
+
const names = new Set(intrinsicElements.map((entry) => entry.glibName));
|
|
42
|
+
const ordered = intrinsicElements.toSorted(compareEntriesByDepth(names));
|
|
43
|
+
const lines = ordered.map((entry) => renderEntryExport(entry, names));
|
|
44
|
+
return `${[
|
|
45
|
+
"import { registerElementMetadata } from \"@gtkx/runtime/internal\";",
|
|
46
|
+
PROPERTY_ENTRY_TYPE,
|
|
47
|
+
"export const signals: Record<string, Record<string, string>> = {};",
|
|
48
|
+
"export const properties: Record<string, Record<string, PropertyEntry>> = {};",
|
|
49
|
+
lines.join("\n\n"),
|
|
50
|
+
].join("\n\n")}\n`;
|
|
51
|
+
};
|
|
26
52
|
const collectIntrinsicElements = (library) => {
|
|
27
53
|
const entries = [];
|
|
28
54
|
const seen = new Set();
|
|
@@ -39,6 +65,7 @@ const collectIntrinsicElements = (library) => {
|
|
|
39
65
|
glibName,
|
|
40
66
|
signals: collectSignals(sources),
|
|
41
67
|
properties: collectProperties(library, sources),
|
|
68
|
+
ancestors: ancestorGlibNames(klass, namespace, library),
|
|
42
69
|
});
|
|
43
70
|
}
|
|
44
71
|
return sortStringsBy(entries, (entry) => entry.glibName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy, sourceStringLiteral, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirEnum } from \"../../gir/enum.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { PrimitiveCategory } from \"../../gir/primitives.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { GirType } from \"../../gir/type.js\";\nimport { inputParameters } from \"../../analysis/param-structure.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport {\n implementedInterfaces,\n isIntrinsicElementClass,\n iterateClassesWithGlibName,\n signalHandlerName,\n} from \"./intrinsic-elements.js\";\n\ntype IntrinsicElementEntry = {\n glibName: string;\n signals: [string, string][];\n properties: [string, string][];\n};\n\nconst READABLE = 1;\nconst WRITABLE = 2;\nconst CONSTRUCT = 4;\nconst CONSTRUCT_ONLY = 8;\n\nconst PROPERTY_ENTRY_TYPE =\n \"/** The GObject name of a property, what a write may do to it, and the value it resets to. */\\n\" +\n \"export type PropertyEntry = [name: string, flags: number, defaultValue?: unknown];\";\n\nconst INTEGER_PATTERN = /^-?\\d+$/;\nconst FLOAT_PATTERN = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i;\n\nconst generateMetadata = (library: Library): string => {\n const intrinsicElements = collectIntrinsicElements(library);\n\n const signalsEntries = intrinsicElements.map(\n ({ glibName, signals }) => ` \"${glibName}\": ${renderSignalsObject(signals)},`,\n );\n\n const propertyEntries = intrinsicElements\n .filter(({ properties }) => properties.length > 0)\n .map(({ glibName, properties }) => ` \"${glibName}\": ${renderPropertiesObject(properties)},`);\n\n return `${[\n PROPERTY_ENTRY_TYPE,\n `export const signals: Record<string, Record<string, string>> = {\\n${signalsEntries.join(\"\\n\")}\\n};`,\n \"export const properties: Record<string, Record<string, PropertyEntry>> = \" +\n `{\\n${propertyEntries.join(\"\\n\")}\\n};`,\n ].join(\"\\n\\n\")}\\n`;\n};\n\nconst collectIntrinsicElements = (library: Library): IntrinsicElementEntry[] => {\n const entries: IntrinsicElementEntry[] = [];\n const seen: Set<string> = new Set();\n\n for (const { glibName, klass, namespace } of iterateClassesWithGlibName(library)) {\n if (!isIntrinsicElementClass(klass, namespace, library) || seen.has(glibName)) {\n continue;\n }\n\n seen.add(glibName);\n\n const sources: GirClass[] = [\n klass,\n ...implementedInterfaces(klass, namespace, library).map((entry) => entry.klass),\n ];\n\n entries.push({\n glibName,\n signals: collectSignals(sources),\n properties: collectProperties(library, sources),\n });\n }\n\n return sortStringsBy(entries, (entry) => entry.glibName);\n};\n\nconst collectSignalsFromSource = (source: GirClass, seen: Set<string>, signals: [string, string][]): void => {\n for (const signal of source.signals) {\n const handlerName = signalHandlerName(signal.name);\n\n if (seen.has(handlerName)) {\n continue;\n }\n\n seen.add(handlerName);\n signals.push([handlerName, signal.name] as const);\n }\n};\n\nconst collectSignals = (sources: GirClass[]): [string, string][] => {\n const seen: Set<string> = new Set();\n const signals: [string, string][] = [];\n\n for (const source of sources) {\n collectSignalsFromSource(source, seen, signals);\n }\n\n return signals;\n};\n\nconst propertyFlags = (property: GirProperty): number => {\n const construct = isConstructableProperty(property) && !property.constructOnly ? CONSTRUCT : 0;\n const constructOnly = property.constructOnly ? CONSTRUCT_ONLY : 0;\n\n return (property.readable ? READABLE : 0) |\n (property.writable ? WRITABLE : 0) |\n construct |\n constructOnly;\n};\n\nconst propertyEntryLiteral = (library: Library, klass: GirClass, property: GirProperty): string => {\n const head = `${sourceStringLiteral(property.name)},${String(propertyFlags(property))}`;\n const literal = isDefaultCandidate(property) ? renderDefaultLiteral(library, klass, property) : undefined;\n\n return literal === undefined ? `[${head}]` : `[${head},${literal}]`;\n};\n\nconst collectPropertiesFromSource = (\n library: Library,\n source: GirClass,\n seen: Set<string>,\n entries: [string, string][],\n): void => {\n for (const property of source.properties) {\n const jsName = toCamelIdentifier(property.name);\n\n if (!property.introspectable || seen.has(jsName)) {\n continue;\n }\n\n seen.add(jsName);\n entries.push([jsName, propertyEntryLiteral(library, source, property)]);\n }\n};\n\nconst collectProperties = (library: Library, sources: GirClass[]): [string, string][] => {\n const seen: Set<string> = new Set();\n const entries: [string, string][] = [];\n\n for (const source of sources) {\n collectPropertiesFromSource(library, source, seen, entries);\n }\n\n return entries;\n};\n\nconst renderObjectLiteral = (entries: [string, string][], renderValue: (value: string) => string): string => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const lines = entries.map(([key, value]) => ` ${sourceStringLiteral(key)}: ${renderValue(value)}`);\n\n return `{\\n${lines.join(\",\\n\")}\\n }`;\n};\n\nconst renderPropertiesObject = (entries: [string, string][]): string =>\n renderObjectLiteral(entries, (value) => value);\n\nconst renderSignalsObject = (entries: [string, string][]): string => renderObjectLiteral(entries, sourceStringLiteral);\n\nconst isDefaultCandidate = (property: GirProperty): boolean =>\n (property.writable || property.construct) && !property.constructOnly && property.introspectable;\n\nconst willSetterRejectNull = (library: Library, klass: GirClass, property: GirProperty): boolean => {\n if (property.setter === undefined) {\n return false;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return false;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value !== undefined && !value.parameter.nullable && !value.parameter.optional;\n};\n\nconst setterValueRef = (library: Library, klass: GirClass, property: GirProperty): TypeId | undefined => {\n if (property.setter === undefined) {\n return undefined;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return undefined;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value?.parameter.type;\n};\n\nconst renderDefaultLiteral = (library: Library, klass: GirClass, property: GirProperty): string | undefined => {\n if (property.defaultValue === \"NULL\" && willSetterRejectNull(library, klass, property)) {\n return undefined;\n }\n\n const ref = setterValueRef(library, klass, property) ?? property.type;\n\n return resolveDefaultLiteral(library, ref, property.defaultValue);\n};\n\nconst resolveDefaultLiteral = (\n library: Library,\n ref: TypeId | undefined,\n raw: string | undefined,\n): string | undefined => {\n if (raw === undefined) {\n return undefined;\n }\n\n if (raw === \"NULL\") {\n return \"null\";\n }\n\n if (ref === undefined) {\n return undefined;\n }\n\n const resolved = library.typeFor(ref);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n return resolveTypeDefaultLiteral(library, resolved, raw);\n};\n\nconst resolveTypeDefaultLiteral = (library: Library, resolved: GirType, raw: string): string | undefined => {\n if (resolved.kind === \"primitive\") {\n return primitiveDefaultLiteral(resolved.category, raw);\n }\n\n if (resolved.kind === \"enum\") {\n return enumDefaultLiteral(resolved.value, raw);\n }\n\n if (resolved.kind === \"alias\") {\n return resolveDefaultLiteral(library, resolved.value.target, raw);\n }\n\n return undefined;\n};\n\nconst booleanDefaultLiteral = (raw: string): string | undefined => {\n if (raw === \"TRUE\") {\n return \"true\";\n }\n\n if (raw === \"FALSE\") {\n return \"false\";\n }\n\n return undefined;\n};\n\nconst integerDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n return INTEGER_PATTERN.test(trimmed) ? trimmed : undefined;\n};\n\nconst floatDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (!FLOAT_PATTERN.test(trimmed)) {\n return undefined;\n }\n\n const value = Number(trimmed);\n\n return Number.isFinite(value) ? String(value) : undefined;\n};\n\nconst primitiveDefaultLiteral = (category: PrimitiveCategory, raw: string): string | undefined => {\n switch (category) {\n case \"boolean\": {\n return booleanDefaultLiteral(raw);\n }\n case \"int8\":\n case \"int16\":\n case \"int32\":\n case \"uint8\":\n case \"uint16\":\n case \"uint32\":\n case \"int64\":\n case \"uint64\":\n case \"unichar\": {\n return integerDefaultLiteral(raw);\n }\n case \"float32\":\n case \"float64\": {\n return floatDefaultLiteral(raw);\n }\n case \"string\": {\n return sourceStringLiteral(raw);\n }\n case \"bigint64\":\n case \"biguint64\":\n case \"gtype\": {\n return bigintDefaultLiteral(raw);\n }\n case \"pointer\":\n case \"void\": {\n return undefined;\n }\n }\n};\n\nconst bigintDefaultLiteral = (raw: string): string | undefined => {\n const integer = integerDefaultLiteral(raw);\n\n return integer === undefined ? undefined : `${integer}n`;\n};\n\nconst enumDefaultLiteral = (enumType: GirEnum, raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (INTEGER_PATTERN.test(trimmed)) {\n return trimmed;\n }\n\n const member = enumType.members.find((entry) => entry.cIdentifier === trimmed || entry.name === trimmed);\n\n return member?.value;\n};\n\nexport { generateMetadata };\n"]}
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/store/jsx/metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStringsBy, sourceStringLiteral, toCamelIdentifier } from \"@gtkx/utils\";\nimport type { GirClass } from \"../../gir/class.js\";\nimport type { GirEnum } from \"../../gir/enum.js\";\nimport type { Library } from \"../../gir/library.js\";\nimport type { PrimitiveCategory } from \"../../gir/primitives.js\";\nimport type { TypeId } from \"../../gir/type-id.js\";\nimport type { GirType } from \"../../gir/type.js\";\nimport { inputParameters } from \"../../analysis/param-structure.js\";\nimport { type GirProperty, isConstructableProperty } from \"../../gir/property.js\";\nimport {\n ancestorGlibNames,\n implementedInterfaces,\n isIntrinsicElementClass,\n iterateClassesWithGlibName,\n signalHandlerName,\n} from \"./intrinsic-elements.js\";\n\ntype IntrinsicElementEntry = {\n glibName: string;\n signals: [string, string][];\n properties: [string, string][];\n ancestors: string[];\n};\n\nconst READABLE = 1;\nconst WRITABLE = 2;\nconst CONSTRUCT = 4;\nconst CONSTRUCT_ONLY = 8;\n\nconst PROPERTY_ENTRY_TYPE =\n \"/** The GObject name of a property, what a write may do to it, and the value it resets to. */\\n\" +\n \"export type PropertyEntry = [name: string, flags: number, defaultValue?: unknown];\";\n\nconst INTEGER_PATTERN = /^-?\\d+$/;\nconst FLOAT_PATTERN = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i;\n\nconst generateMetadata = (library: Library): string => {\n const intrinsicElements = collectIntrinsicElements(library);\n\n if (library.isTreeShaken) {\n return generateEntryMetadata(intrinsicElements);\n }\n\n const signalsEntries = intrinsicElements.map(\n ({ glibName, signals }) => ` \"${glibName}\": ${renderSignalsObject(signals)},`,\n );\n\n const propertyEntries = intrinsicElements\n .filter(({ properties }) => properties.length > 0)\n .map(({ glibName, properties }) => ` \"${glibName}\": ${renderPropertiesObject(properties)},`);\n\n return `${[\n PROPERTY_ENTRY_TYPE,\n `export const signals: Record<string, Record<string, string>> = {\\n${signalsEntries.join(\"\\n\")}\\n};`,\n \"export const properties: Record<string, Record<string, PropertyEntry>> = \" +\n `{\\n${propertyEntries.join(\"\\n\")}\\n};`,\n ].join(\"\\n\\n\")}\\n`;\n};\n\nconst entryAncestorsInSet = (entry: IntrinsicElementEntry, names: Set<string>): string[] =>\n entry.ancestors.filter((name) => name !== entry.glibName && names.has(name));\n\nconst compareEntriesByDepth = (\n names: Set<string>,\n): ((first: IntrinsicElementEntry, second: IntrinsicElementEntry) => number) =>\n (first, second) =>\n entryAncestorsInSet(first, names).length - entryAncestorsInSet(second, names).length ||\n first.glibName.localeCompare(second.glibName);\n\nconst renderEntryExport = (entry: IntrinsicElementEntry, names: Set<string>): string => {\n const parent = entryAncestorsInSet(entry, names)[0] ?? \"undefined\";\n const literal = sourceStringLiteral(entry.glibName);\n const ownSignals = renderSignalsObject(entry.signals);\n const ownProperties = renderPropertiesObject(entry.properties);\n const call = `registerElementMetadata(${literal}, ${parent}, ${ownSignals}, ${ownProperties})`;\n\n return `export const ${entry.glibName}: string = /* @__PURE__ */ ${call};`;\n};\n\nconst generateEntryMetadata = (intrinsicElements: IntrinsicElementEntry[]): string => {\n const names = new Set(intrinsicElements.map((entry) => entry.glibName));\n const ordered = intrinsicElements.toSorted(compareEntriesByDepth(names));\n const lines = ordered.map((entry) => renderEntryExport(entry, names));\n\n return `${[\n \"import { registerElementMetadata } from \\\"@gtkx/runtime/internal\\\";\",\n PROPERTY_ENTRY_TYPE,\n \"export const signals: Record<string, Record<string, string>> = {};\",\n \"export const properties: Record<string, Record<string, PropertyEntry>> = {};\",\n lines.join(\"\\n\\n\"),\n ].join(\"\\n\\n\")}\\n`;\n};\n\nconst collectIntrinsicElements = (library: Library): IntrinsicElementEntry[] => {\n const entries: IntrinsicElementEntry[] = [];\n const seen: Set<string> = new Set();\n\n for (const { glibName, klass, namespace } of iterateClassesWithGlibName(library)) {\n if (!isIntrinsicElementClass(klass, namespace, library) || seen.has(glibName)) {\n continue;\n }\n\n seen.add(glibName);\n\n const sources: GirClass[] = [\n klass,\n ...implementedInterfaces(klass, namespace, library).map((entry) => entry.klass),\n ];\n\n entries.push({\n glibName,\n signals: collectSignals(sources),\n properties: collectProperties(library, sources),\n ancestors: ancestorGlibNames(klass, namespace, library),\n });\n }\n\n return sortStringsBy(entries, (entry) => entry.glibName);\n};\n\nconst collectSignalsFromSource = (source: GirClass, seen: Set<string>, signals: [string, string][]): void => {\n for (const signal of source.signals) {\n const handlerName = signalHandlerName(signal.name);\n\n if (seen.has(handlerName)) {\n continue;\n }\n\n seen.add(handlerName);\n signals.push([handlerName, signal.name] as const);\n }\n};\n\nconst collectSignals = (sources: GirClass[]): [string, string][] => {\n const seen: Set<string> = new Set();\n const signals: [string, string][] = [];\n\n for (const source of sources) {\n collectSignalsFromSource(source, seen, signals);\n }\n\n return signals;\n};\n\nconst propertyFlags = (property: GirProperty): number => {\n const construct = isConstructableProperty(property) && !property.constructOnly ? CONSTRUCT : 0;\n const constructOnly = property.constructOnly ? CONSTRUCT_ONLY : 0;\n\n return (property.readable ? READABLE : 0) |\n (property.writable ? WRITABLE : 0) |\n construct |\n constructOnly;\n};\n\nconst propertyEntryLiteral = (library: Library, klass: GirClass, property: GirProperty): string => {\n const head = `${sourceStringLiteral(property.name)},${String(propertyFlags(property))}`;\n const literal = isDefaultCandidate(property) ? renderDefaultLiteral(library, klass, property) : undefined;\n\n return literal === undefined ? `[${head}]` : `[${head},${literal}]`;\n};\n\nconst collectPropertiesFromSource = (\n library: Library,\n source: GirClass,\n seen: Set<string>,\n entries: [string, string][],\n): void => {\n for (const property of source.properties) {\n const jsName = toCamelIdentifier(property.name);\n\n if (!property.introspectable || seen.has(jsName)) {\n continue;\n }\n\n seen.add(jsName);\n entries.push([jsName, propertyEntryLiteral(library, source, property)]);\n }\n};\n\nconst collectProperties = (library: Library, sources: GirClass[]): [string, string][] => {\n const seen: Set<string> = new Set();\n const entries: [string, string][] = [];\n\n for (const source of sources) {\n collectPropertiesFromSource(library, source, seen, entries);\n }\n\n return entries;\n};\n\nconst renderObjectLiteral = (entries: [string, string][], renderValue: (value: string) => string): string => {\n if (entries.length === 0) {\n return \"{}\";\n }\n\n const lines = entries.map(([key, value]) => ` ${sourceStringLiteral(key)}: ${renderValue(value)}`);\n\n return `{\\n${lines.join(\",\\n\")}\\n }`;\n};\n\nconst renderPropertiesObject = (entries: [string, string][]): string =>\n renderObjectLiteral(entries, (value) => value);\n\nconst renderSignalsObject = (entries: [string, string][]): string => renderObjectLiteral(entries, sourceStringLiteral);\n\nconst isDefaultCandidate = (property: GirProperty): boolean =>\n (property.writable || property.construct) && !property.constructOnly && property.introspectable;\n\nconst willSetterRejectNull = (library: Library, klass: GirClass, property: GirProperty): boolean => {\n if (property.setter === undefined) {\n return false;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return false;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value !== undefined && !value.parameter.nullable && !value.parameter.optional;\n};\n\nconst setterValueRef = (library: Library, klass: GirClass, property: GirProperty): TypeId | undefined => {\n if (property.setter === undefined) {\n return undefined;\n }\n\n const setter = klass.methods.find((method) => method.name === property.setter);\n\n if (setter === undefined) {\n return undefined;\n }\n\n const [value] = inputParameters(library, setter);\n\n return value?.parameter.type;\n};\n\nconst renderDefaultLiteral = (library: Library, klass: GirClass, property: GirProperty): string | undefined => {\n if (property.defaultValue === \"NULL\" && willSetterRejectNull(library, klass, property)) {\n return undefined;\n }\n\n const ref = setterValueRef(library, klass, property) ?? property.type;\n\n return resolveDefaultLiteral(library, ref, property.defaultValue);\n};\n\nconst resolveDefaultLiteral = (\n library: Library,\n ref: TypeId | undefined,\n raw: string | undefined,\n): string | undefined => {\n if (raw === undefined) {\n return undefined;\n }\n\n if (raw === \"NULL\") {\n return \"null\";\n }\n\n if (ref === undefined) {\n return undefined;\n }\n\n const resolved = library.typeFor(ref);\n\n if (resolved === undefined) {\n return undefined;\n }\n\n return resolveTypeDefaultLiteral(library, resolved, raw);\n};\n\nconst resolveTypeDefaultLiteral = (library: Library, resolved: GirType, raw: string): string | undefined => {\n if (resolved.kind === \"primitive\") {\n return primitiveDefaultLiteral(resolved.category, raw);\n }\n\n if (resolved.kind === \"enum\") {\n return enumDefaultLiteral(resolved.value, raw);\n }\n\n if (resolved.kind === \"alias\") {\n return resolveDefaultLiteral(library, resolved.value.target, raw);\n }\n\n return undefined;\n};\n\nconst booleanDefaultLiteral = (raw: string): string | undefined => {\n if (raw === \"TRUE\") {\n return \"true\";\n }\n\n if (raw === \"FALSE\") {\n return \"false\";\n }\n\n return undefined;\n};\n\nconst integerDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n return INTEGER_PATTERN.test(trimmed) ? trimmed : undefined;\n};\n\nconst floatDefaultLiteral = (raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (!FLOAT_PATTERN.test(trimmed)) {\n return undefined;\n }\n\n const value = Number(trimmed);\n\n return Number.isFinite(value) ? String(value) : undefined;\n};\n\nconst primitiveDefaultLiteral = (category: PrimitiveCategory, raw: string): string | undefined => {\n switch (category) {\n case \"boolean\": {\n return booleanDefaultLiteral(raw);\n }\n case \"int8\":\n case \"int16\":\n case \"int32\":\n case \"uint8\":\n case \"uint16\":\n case \"uint32\":\n case \"int64\":\n case \"uint64\":\n case \"unichar\": {\n return integerDefaultLiteral(raw);\n }\n case \"float32\":\n case \"float64\": {\n return floatDefaultLiteral(raw);\n }\n case \"string\": {\n return sourceStringLiteral(raw);\n }\n case \"bigint64\":\n case \"biguint64\":\n case \"gtype\": {\n return bigintDefaultLiteral(raw);\n }\n case \"pointer\":\n case \"void\": {\n return undefined;\n }\n }\n};\n\nconst bigintDefaultLiteral = (raw: string): string | undefined => {\n const integer = integerDefaultLiteral(raw);\n\n return integer === undefined ? undefined : `${integer}n`;\n};\n\nconst enumDefaultLiteral = (enumType: GirEnum, raw: string): string | undefined => {\n const trimmed = raw.trim();\n\n if (INTEGER_PATTERN.test(trimmed)) {\n return trimmed;\n }\n\n const member = enumType.members.find((entry) => entry.cIdentifier === trimmed || entry.name === trimmed);\n\n return member?.value;\n};\n\nexport { generateMetadata };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-store.d.ts","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAkC,KAAK,YAAY,EAA6B,MAAM,eAAe,CAAC;AAE7G,KAAK,mBAAmB,GAAG;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"jsx-store.d.ts","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAkC,KAAK,YAAY,EAA6B,MAAM,eAAe,CAAC;AAE7G,KAAK,mBAAmB,GAAG;IACvB,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAWF,QAAA,MAAM,aAAa,GAAI,QAAQ,mBAAmB,KAAG,IAgCpD,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/store/jsx-store.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { sortStrings } from "@gtkx/utils";
|
|
2
2
|
import { buildManifest, namespaceBarrel, subpathExport, writeStore } from "./store-fs.js";
|
|
3
|
-
const jsxPeerDependencies = (externalPackages
|
|
3
|
+
const jsxPeerDependencies = (externalPackages, isTreeShaken) => {
|
|
4
|
+
const runtime = isTreeShaken ? ["@gtkx/runtime"] : [];
|
|
5
|
+
return Object.fromEntries(sortStrings(["@gtkx/gi", "@gtkx/react", "react", ...runtime, ...externalPackages])
|
|
6
|
+
.map((name) => [name, "*"]));
|
|
7
|
+
};
|
|
4
8
|
const writeJsxStore = (params) => {
|
|
5
9
|
const { options, namespaces, metadata, externalPackages, rawFiles } = params;
|
|
6
10
|
const exportsMap = {
|
|
@@ -23,7 +27,8 @@ const writeJsxStore = (params) => {
|
|
|
23
27
|
name: "@gtkx/jsx",
|
|
24
28
|
version: options.version,
|
|
25
29
|
exports: exportsMap,
|
|
26
|
-
|
|
30
|
+
sideEffects: params.isTreeShaken !== true,
|
|
31
|
+
peerDependencies: jsxPeerDependencies(externalPackages, params.isTreeShaken === true),
|
|
27
32
|
}),
|
|
28
33
|
rawFiles,
|
|
29
34
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsx-store.js","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAqB,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"jsx-store.js","sourceRoot":"","sources":["../../src/store/jsx-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAqB,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAW7G,MAAM,mBAAmB,GAAG,CAAC,gBAA0B,EAAE,YAAqB,EAA0B,EAAE;IACtG,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtD,OAAO,MAAM,CAAC,WAAW,CACrB,WAAW,CAAC,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,gBAAgB,CAAC,CAAC;SAC7E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAClC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAA2B,EAAQ,EAAE;IACxD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE7E,MAAM,UAAU,GAA4B;QACxC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC;QAC3B,YAAY,EAAE,aAAa,CAAC,UAAU,CAAC;KAC1C,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,IAAI,SAAS,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9F,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,SAAS,QAAQ,CAAC,CAAC;QACnE,YAAY,CAAC,IAAI,CAAC,oBAAoB,SAAS,aAAa,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAE7E,UAAU,CAAC;QACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK;QACL,QAAQ,EAAE,aAAa,CAAC;YACpB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,UAAU;YACnB,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;YACzC,gBAAgB,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC;SACxF,CAAC;QACF,QAAQ;KACX,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC","sourcesContent":["import { sortStrings } from \"@gtkx/utils\";\nimport type { JsxNamespaceFile } from \"./jsx/pipeline.js\";\nimport type { RawFile } from \"./store-fs.js\";\nimport { buildManifest, namespaceBarrel, type StoreOptions, subpathExport, writeStore } from \"./store-fs.js\";\n\ntype WriteJsxStoreParams = {\n options: StoreOptions;\n namespaces: JsxNamespaceFile[];\n metadata: string;\n externalPackages: string[];\n rawFiles: RawFile[];\n isTreeShaken?: boolean;\n};\n\nconst jsxPeerDependencies = (externalPackages: string[], isTreeShaken: boolean): Record<string, string> => {\n const runtime = isTreeShaken ? [\"@gtkx/runtime\"] : [];\n\n return Object.fromEntries(\n sortStrings([\"@gtkx/gi\", \"@gtkx/react\", \"react\", ...runtime, ...externalPackages])\n .map((name) => [name, \"*\"]),\n );\n};\n\nconst writeJsxStore = (params: WriteJsxStoreParams): void => {\n const { options, namespaces, metadata, externalPackages, rawFiles } = params;\n\n const exportsMap: Record<string, unknown> = {\n \".\": subpathExport(\"index\"),\n \"./metadata\": subpathExport(\"metadata\"),\n };\n\n const files = [{ fileName: \"metadata.ts\", source: metadata }];\n const indexExports: string[] = [];\n\n for (const { directory, source } of namespaces) {\n files.push({ fileName: `${directory}/${directory}.tsx`, source }, namespaceBarrel(directory));\n exportsMap[`./${directory}`] = subpathExport(`${directory}/index`);\n indexExports.push(`export * from \"./${directory}/index.js\";`);\n }\n\n files.push({ fileName: \"index.ts\", source: `${indexExports.join(\"\\n\")}\\n` });\n\n writeStore({\n storeDir: options.storeDir,\n linkDir: options.linkDir,\n files,\n manifest: buildManifest({\n name: \"@gtkx/jsx\",\n version: options.version,\n exports: exportsMap,\n sideEffects: params.isTreeShaken !== true,\n peerDependencies: jsxPeerDependencies(externalPackages, params.isTreeShaken === true),\n }),\n rawFiles,\n });\n};\n\nexport { writeJsxStore };\n"]}
|
package/dist/store/store-fs.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ type Manifest = {
|
|
|
13
13
|
name: string;
|
|
14
14
|
type: "module";
|
|
15
15
|
version: string;
|
|
16
|
-
sideEffects:
|
|
16
|
+
sideEffects: boolean | string[];
|
|
17
17
|
exports: Record<string, unknown>;
|
|
18
18
|
peerDependencies?: Record<string, string>;
|
|
19
19
|
};
|
|
@@ -21,6 +21,7 @@ type ManifestInput = {
|
|
|
21
21
|
name: string;
|
|
22
22
|
version: string;
|
|
23
23
|
exports: Record<string, unknown>;
|
|
24
|
+
sideEffects?: boolean | string[];
|
|
24
25
|
peerDependencies?: Record<string, string>;
|
|
25
26
|
};
|
|
26
27
|
type RawFile = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-fs.d.ts","sourceRoot":"","sources":["../../src/store/store-fs.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAKrE,kEAAkE;AAClE,KAAK,YAAY,GAAG;IAChB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,uGAAuG;IACvG,OAAO,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;AAE5D,KAAK,QAAQ,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"store-fs.d.ts","sourceRoot":"","sources":["../../src/store/store-fs.ts"],"names":[],"mappings":"AAYA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAKrE,kEAAkE;AAClE,KAAK,YAAY,GAAG;IAChB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC;IACjB,uGAAuG;IACvG,OAAO,EAAE,MAAM,CAAC;IAChB,2GAA2G;IAC3G,OAAO,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,SAAS,CAAC,CAAC;AAE5D,KAAK,QAAQ,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C,CAAC;AAEF,KAAK,OAAO,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,KAAK,gBAAgB,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACxB,CAAC;AAKF,QAAA,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAGpE,CAAC;AAEH,QAAA,MAAM,eAAe,GAAI,WAAW,MAAM,KAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAG7E,CAAC;AAEH,QAAA,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,QAc7C,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,QAAQ,gBAAgB,KAAG,IAc9C,CAAC;AAuBF,QAAA,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,YAAY,MAAM,KAAG,IAI/D,CAAC;AA0BF,QAAA,MAAM,eAAe,GAAI,MAAM,SAAS,KAAG,IAU1C,CAAC;AAkBF,OAAO,EACH,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,UAAU,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,OAAO,GACf,CAAC"}
|
package/dist/store/store-fs.js
CHANGED
|
@@ -20,7 +20,7 @@ const buildManifest = (input) => {
|
|
|
20
20
|
name: input.name,
|
|
21
21
|
type: "module",
|
|
22
22
|
version: input.version,
|
|
23
|
-
sideEffects: true,
|
|
23
|
+
sideEffects: input.sideEffects ?? true,
|
|
24
24
|
exports: { "./package.json": "./package.json", ...input.exports },
|
|
25
25
|
};
|
|
26
26
|
if (input.peerDependencies) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-fs.js","sourceRoot":"","sources":["../../src/store/store-fs.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorMessage } from \"@gtkx/utils\";\nimport {\n chmodSync,\n existsSync,\n mkdirSync,\n realpathSync,\n renameSync,\n rmSync,\n symlinkSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport { keepFailedProject, type SourceModule } from \"../compile.js\";\nimport { createStagingDir } from \"../staging.js\";\nimport { compileStore } from \"./compile-store.js\";\nimport { ensureExternalPackageLinks, resetExternalPackageLinks } from \"./external-package-links.js\";\n\n/** Where one generated store is written and how it is reached. */\ntype StoreOptions = {\n /** Directory the generated package is written to, replaced atomically on each run. */\n storeDir: string;\n /** Path the store is symlinked at, which is the specifier's resolution target under `node_modules`. */\n linkDir: string;\n /** Version stamped on the store's `package.json`, taken from the dependency the store is generated for. */\n version: string;\n};\n\ntype StoreLink = Pick<StoreOptions, \"storeDir\" | \"linkDir\">;\n\ntype Manifest = {\n name: string;\n type: \"module\";\n version: string;\n sideEffects: true;\n exports: Record<string, unknown>;\n peerDependencies?: Record<string, string>;\n};\n\ntype ManifestInput = {\n name: string;\n version: string;\n exports: Record<string, unknown>;\n peerDependencies?: Record<string, string>;\n};\n\ntype RawFile = { relativePath: string; content: string };\n\ntype WriteStoreParams = {\n storeDir: string;\n linkDir: string;\n files: SourceModule[];\n manifest: Manifest;\n rawFiles?: RawFile[];\n};\n\nconst STORE_DIR_MODE = 0o755;\nconst FAILED_STORE_SUFFIX = \".failed\";\n\nconst subpathExport = (stem: string): { types: string; default: string } => ({\n types: `./${stem}.d.ts`,\n default: `./${stem}.js`,\n});\n\nconst namespaceBarrel = (directory: string): { fileName: string; source: string } => ({\n fileName: `${directory}/index.ts`,\n source: `export * from \"./${directory}.js\";\\n`,\n});\n\nconst buildManifest = (input: ManifestInput): Manifest => {\n const manifest: Manifest = {\n name: input.name,\n type: \"module\",\n version: input.version,\n sideEffects: true,\n exports: { \"./package.json\": \"./package.json\", ...input.exports },\n };\n\n if (input.peerDependencies) {\n manifest.peerDependencies = input.peerDependencies;\n }\n\n return manifest;\n};\n\nconst writeStore = (params: WriteStoreParams): void => {\n const tmp = createTempStore(params.storeDir);\n const keepAt = `${params.storeDir}${FAILED_STORE_SUFFIX}`;\n\n try {\n buildTempStore(tmp, params);\n swapStore(tmp, params.storeDir);\n resetExternalPackageLinks(params.storeDir);\n ensureStoreLink(params);\n } catch (error) {\n throw keepFailedProject({ projectDir: tmp, keepAt, error });\n }\n\n rmSync(keepAt, { recursive: true, force: true });\n};\n\nconst buildTempStore = (tmp: string, params: WriteStoreParams): void => {\n writePackageJson(tmp, params.manifest);\n\n for (const file of params.files) {\n writeSourceFile(tmp, file.fileName, file.source);\n }\n\n compileStore({ storeDir: tmp, files: params.files, packageName: params.manifest.name });\n const rawFiles = params.rawFiles ?? [];\n\n for (const raw of rawFiles) {\n writeFileSync(join(tmp, raw.relativePath), raw.content);\n }\n};\n\nconst writeSourceFile = (storeDir: string, fileName: string, source: string): void => {\n const filePath = join(storeDir, fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, source);\n};\n\nconst symlinkRelative = (linkPath: string, realTarget: string): void => {\n mkdirSync(dirname(linkPath), { recursive: true });\n rmSync(linkPath, { recursive: true, force: true });\n symlinkSync(relative(dirname(linkPath), realTarget), linkPath, \"dir\");\n};\n\nconst writePackageJson = (storeDir: string, manifest: Manifest): void => {\n writeFileSync(join(storeDir, \"package.json\"), `${JSON.stringify(manifest, null, 2)}\\n`);\n};\n\nconst swapStore = (tmp: string, storeDir: string): void => {\n const previous = `${storeDir}.old`;\n rmSync(previous, { recursive: true, force: true });\n\n if (existsSync(storeDir)) {\n renameSync(storeDir, previous);\n }\n\n renameSync(tmp, storeDir);\n rmSync(previous, { recursive: true, force: true });\n};\n\nconst isStoreLinked = (link: StoreLink): boolean => {\n try {\n return realpathSync(link.linkDir) === realpathSync(link.storeDir);\n } catch {\n return false;\n }\n};\n\nconst ensureStoreLink = (link: StoreLink): void => {\n if (!existsSync(join(link.storeDir, \"package.json\"))) {\n return;\n }\n\n if (!isStoreLinked(link)) {\n symlinkRelative(link.linkDir, link.storeDir);\n }\n\n ensureExternalPackageLinks(link);\n};\n\nconst storeWriteMessage = (storeDir: string, error: unknown): string =>\n `Cannot write the generated store to ${storeDir}: ${errorMessage(error)}. ` +\n \"Codegen writes the store into the node_modules the @gtkx packages resolve from, \" +\n `so ${dirname(storeDir)} has to be writable.`;\n\nconst createTempStore = (storeDir: string): string => {\n try {\n const tmp = createStagingDir(storeDir);\n chmodSync(tmp, STORE_DIR_MODE);\n\n return tmp;\n } catch (error) {\n throw new Error(storeWriteMessage(storeDir, error), { cause: error });\n }\n};\n\nexport {\n subpathExport,\n buildManifest,\n ensureStoreLink,\n namespaceBarrel,\n symlinkRelative,\n writeStore,\n type StoreLink,\n type StoreOptions,\n type RawFile,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"store-fs.js","sourceRoot":"","sources":["../../src/store/store-fs.ts"],"names":[],"mappings":"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","sourcesContent":["import { errorMessage } from \"@gtkx/utils\";\nimport {\n chmodSync,\n existsSync,\n mkdirSync,\n realpathSync,\n renameSync,\n rmSync,\n symlinkSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname, join, relative } from \"node:path\";\nimport { keepFailedProject, type SourceModule } from \"../compile.js\";\nimport { createStagingDir } from \"../staging.js\";\nimport { compileStore } from \"./compile-store.js\";\nimport { ensureExternalPackageLinks, resetExternalPackageLinks } from \"./external-package-links.js\";\n\n/** Where one generated store is written and how it is reached. */\ntype StoreOptions = {\n /** Directory the generated package is written to, replaced atomically on each run. */\n storeDir: string;\n /** Path the store is symlinked at, which is the specifier's resolution target under `node_modules`. */\n linkDir: string;\n /** Version stamped on the store's `package.json`, taken from the dependency the store is generated for. */\n version: string;\n};\n\ntype StoreLink = Pick<StoreOptions, \"storeDir\" | \"linkDir\">;\n\ntype Manifest = {\n name: string;\n type: \"module\";\n version: string;\n sideEffects: boolean | string[];\n exports: Record<string, unknown>;\n peerDependencies?: Record<string, string>;\n};\n\ntype ManifestInput = {\n name: string;\n version: string;\n exports: Record<string, unknown>;\n sideEffects?: boolean | string[];\n peerDependencies?: Record<string, string>;\n};\n\ntype RawFile = { relativePath: string; content: string };\n\ntype WriteStoreParams = {\n storeDir: string;\n linkDir: string;\n files: SourceModule[];\n manifest: Manifest;\n rawFiles?: RawFile[];\n};\n\nconst STORE_DIR_MODE = 0o755;\nconst FAILED_STORE_SUFFIX = \".failed\";\n\nconst subpathExport = (stem: string): { types: string; default: string } => ({\n types: `./${stem}.d.ts`,\n default: `./${stem}.js`,\n});\n\nconst namespaceBarrel = (directory: string): { fileName: string; source: string } => ({\n fileName: `${directory}/index.ts`,\n source: `export * from \"./${directory}.js\";\\n`,\n});\n\nconst buildManifest = (input: ManifestInput): Manifest => {\n const manifest: Manifest = {\n name: input.name,\n type: \"module\",\n version: input.version,\n sideEffects: input.sideEffects ?? true,\n exports: { \"./package.json\": \"./package.json\", ...input.exports },\n };\n\n if (input.peerDependencies) {\n manifest.peerDependencies = input.peerDependencies;\n }\n\n return manifest;\n};\n\nconst writeStore = (params: WriteStoreParams): void => {\n const tmp = createTempStore(params.storeDir);\n const keepAt = `${params.storeDir}${FAILED_STORE_SUFFIX}`;\n\n try {\n buildTempStore(tmp, params);\n swapStore(tmp, params.storeDir);\n resetExternalPackageLinks(params.storeDir);\n ensureStoreLink(params);\n } catch (error) {\n throw keepFailedProject({ projectDir: tmp, keepAt, error });\n }\n\n rmSync(keepAt, { recursive: true, force: true });\n};\n\nconst buildTempStore = (tmp: string, params: WriteStoreParams): void => {\n writePackageJson(tmp, params.manifest);\n\n for (const file of params.files) {\n writeSourceFile(tmp, file.fileName, file.source);\n }\n\n compileStore({ storeDir: tmp, files: params.files, packageName: params.manifest.name });\n const rawFiles = params.rawFiles ?? [];\n\n for (const raw of rawFiles) {\n writeFileSync(join(tmp, raw.relativePath), raw.content);\n }\n};\n\nconst writeSourceFile = (storeDir: string, fileName: string, source: string): void => {\n const filePath = join(storeDir, fileName);\n mkdirSync(dirname(filePath), { recursive: true });\n writeFileSync(filePath, source);\n};\n\nconst symlinkRelative = (linkPath: string, realTarget: string): void => {\n mkdirSync(dirname(linkPath), { recursive: true });\n rmSync(linkPath, { recursive: true, force: true });\n symlinkSync(relative(dirname(linkPath), realTarget), linkPath, \"dir\");\n};\n\nconst writePackageJson = (storeDir: string, manifest: Manifest): void => {\n writeFileSync(join(storeDir, \"package.json\"), `${JSON.stringify(manifest, null, 2)}\\n`);\n};\n\nconst swapStore = (tmp: string, storeDir: string): void => {\n const previous = `${storeDir}.old`;\n rmSync(previous, { recursive: true, force: true });\n\n if (existsSync(storeDir)) {\n renameSync(storeDir, previous);\n }\n\n renameSync(tmp, storeDir);\n rmSync(previous, { recursive: true, force: true });\n};\n\nconst isStoreLinked = (link: StoreLink): boolean => {\n try {\n return realpathSync(link.linkDir) === realpathSync(link.storeDir);\n } catch {\n return false;\n }\n};\n\nconst ensureStoreLink = (link: StoreLink): void => {\n if (!existsSync(join(link.storeDir, \"package.json\"))) {\n return;\n }\n\n if (!isStoreLinked(link)) {\n symlinkRelative(link.linkDir, link.storeDir);\n }\n\n ensureExternalPackageLinks(link);\n};\n\nconst storeWriteMessage = (storeDir: string, error: unknown): string =>\n `Cannot write the generated store to ${storeDir}: ${errorMessage(error)}. ` +\n \"Codegen writes the store into the node_modules the @gtkx packages resolve from, \" +\n `so ${dirname(storeDir)} has to be writable.`;\n\nconst createTempStore = (storeDir: string): string => {\n try {\n const tmp = createStagingDir(storeDir);\n chmodSync(tmp, STORE_DIR_MODE);\n\n return tmp;\n } catch (error) {\n throw new Error(storeWriteMessage(storeDir, error), { cause: error });\n }\n};\n\nexport {\n subpathExport,\n buildManifest,\n ensureStoreLink,\n namespaceBarrel,\n symlinkRelative,\n writeStore,\n type StoreLink,\n type StoreOptions,\n type RawFile,\n};\n"]}
|