@gtkx/codegen 1.2.2 → 1.4.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 +6 -4
- package/dist/analysis/descriptor-render.d.ts +7 -1
- package/dist/analysis/descriptor-render.d.ts.map +1 -1
- package/dist/analysis/descriptor-render.js +37 -15
- package/dist/analysis/descriptor-render.js.map +1 -1
- package/dist/analysis/descriptor.d.ts +5 -1
- package/dist/analysis/descriptor.d.ts.map +1 -1
- package/dist/analysis/descriptor.js +12 -2
- package/dist/analysis/descriptor.js.map +1 -1
- package/dist/analysis/param-capability.d.ts +5 -2
- package/dist/analysis/param-capability.d.ts.map +1 -1
- package/dist/analysis/param-capability.js +36 -4
- package/dist/analysis/param-capability.js.map +1 -1
- package/dist/analysis/param-structure.d.ts +1 -1
- package/dist/analysis/param-structure.d.ts.map +1 -1
- package/dist/analysis/param-structure.js.map +1 -1
- package/dist/analysis/ts-type.d.ts +1 -1
- package/dist/analysis/ts-type.d.ts.map +1 -1
- package/dist/analysis/ts-type.js +28 -10
- package/dist/analysis/ts-type.js.map +1 -1
- package/dist/compile.js +1 -1
- package/dist/compile.js.map +1 -1
- package/dist/docs/api-reference.d.ts +6 -0
- package/dist/docs/api-reference.d.ts.map +1 -1
- package/dist/docs/api-reference.js +11 -2
- 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 +10 -1
- package/dist/docs/pipeline.js.map +1 -1
- package/dist/fingerprint.d.ts +5 -0
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +111 -15
- package/dist/fingerprint.js.map +1 -1
- package/dist/gi.d.ts +3 -0
- package/dist/gi.d.ts.map +1 -1
- package/dist/gi.js +33 -7
- package/dist/gi.js.map +1 -1
- package/dist/gir/external-namespaces.d.ts +8 -0
- package/dist/gir/external-namespaces.d.ts.map +1 -0
- package/dist/gir/external-namespaces.js +4 -0
- package/dist/gir/external-namespaces.js.map +1 -0
- package/dist/gir/finish-overrides.d.ts +3 -0
- package/dist/gir/finish-overrides.d.ts.map +1 -0
- package/dist/gir/finish-overrides.js +5 -0
- package/dist/gir/finish-overrides.js.map +1 -0
- package/dist/gir/function.d.ts +5 -2
- package/dist/gir/function.d.ts.map +1 -1
- package/dist/gir/function.js +34 -5
- package/dist/gir/function.js.map +1 -1
- package/dist/gir/hidden-symbols.d.ts +3 -0
- package/dist/gir/hidden-symbols.d.ts.map +1 -0
- package/dist/gir/hidden-symbols.js +39 -0
- package/dist/gir/hidden-symbols.js.map +1 -0
- package/dist/gir/library.d.ts +22 -2
- package/dist/gir/library.d.ts.map +1 -1
- package/dist/gir/library.js +21 -3
- package/dist/gir/library.js.map +1 -1
- package/dist/gir/ucs4-overrides.d.ts +3 -0
- package/dist/gir/ucs4-overrides.d.ts.map +1 -0
- package/dist/gir/ucs4-overrides.js +7 -0
- package/dist/gir/ucs4-overrides.js.map +1 -0
- package/dist/guards.d.ts +2 -1
- package/dist/guards.d.ts.map +1 -1
- package/dist/guards.js +3 -1
- package/dist/guards.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/jsx.d.ts.map +1 -1
- package/dist/jsx.js +27 -8
- package/dist/jsx.js.map +1 -1
- package/dist/runner.d.ts +8 -0
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +9 -3
- package/dist/runner.js.map +1 -1
- package/dist/store/external-package-links.d.ts +6 -0
- package/dist/store/external-package-links.d.ts.map +1 -0
- package/dist/store/external-package-links.js +158 -0
- package/dist/store/external-package-links.js.map +1 -0
- package/dist/store/gi/callable-doc.d.ts.map +1 -1
- package/dist/store/gi/callable-doc.js +4 -4
- package/dist/store/gi/callable-doc.js.map +1 -1
- package/dist/store/gi/callables.js +1 -1
- package/dist/store/gi/callables.js.map +1 -1
- package/dist/store/gi/class.d.ts.map +1 -1
- package/dist/store/gi/class.js +17 -0
- package/dist/store/gi/class.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/function.d.ts.map +1 -1
- package/dist/store/gi/function.js +2 -1
- package/dist/store/gi/function.js.map +1 -1
- package/dist/store/gi/generated-libraries.d.ts +26 -0
- package/dist/store/gi/generated-libraries.d.ts.map +1 -0
- package/dist/store/gi/generated-libraries.js +53 -0
- package/dist/store/gi/generated-libraries.js.map +1 -0
- package/dist/store/gi/gtype-binding.d.ts +2 -1
- package/dist/store/gi/gtype-binding.d.ts.map +1 -1
- package/dist/store/gi/gtype-binding.js +6 -1
- package/dist/store/gi/gtype-binding.js.map +1 -1
- package/dist/store/gi/method.d.ts +7 -2
- package/dist/store/gi/method.d.ts.map +1 -1
- package/dist/store/gi/method.js +126 -30
- package/dist/store/gi/method.js.map +1 -1
- package/dist/store/gi/param-marshal.d.ts +8 -1
- package/dist/store/gi/param-marshal.d.ts.map +1 -1
- package/dist/store/gi/param-marshal.js +52 -4
- package/dist/store/gi/param-marshal.js.map +1 -1
- package/dist/store/gi/record-constructor.d.ts.map +1 -1
- package/dist/store/gi/record-constructor.js +2 -3
- package/dist/store/gi/record-constructor.js.map +1 -1
- package/dist/store/gi/record-field-accessor.d.ts +2 -1
- package/dist/store/gi/record-field-accessor.d.ts.map +1 -1
- package/dist/store/gi/record-field-accessor.js +9 -3
- package/dist/store/gi/record-field-accessor.js.map +1 -1
- package/dist/store/gi/runtime-override.js +1 -1
- package/dist/store/gi/runtime-override.js.map +1 -1
- package/dist/store/gi/signal.js +2 -2
- 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 +82 -12
- package/dist/store/gi/vtable.js.map +1 -1
- package/dist/store/gi-store.d.ts +12 -2
- package/dist/store/gi-store.d.ts.map +1 -1
- package/dist/store/gi-store.js +24 -5
- package/dist/store/gi-store.js.map +1 -1
- package/dist/store/jsx/jsx.d.ts.map +1 -1
- package/dist/store/jsx/jsx.js +3 -1
- 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 +35 -60
- package/dist/store/jsx/metadata.js.map +1 -1
- package/dist/store/jsx-store.d.ts +8 -1
- package/dist/store/jsx-store.d.ts.map +1 -1
- package/dist/store/jsx-store.js +9 -2
- package/dist/store/jsx-store.js.map +1 -1
- package/dist/store/resolve-store.d.ts +2 -1
- package/dist/store/resolve-store.d.ts.map +1 -1
- package/dist/store/resolve-store.js +3 -1
- package/dist/store/resolve-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 +8 -3
- package/dist/store/store-fs.js.map +1 -1
- package/dist/writer/context.d.ts.map +1 -1
- package/dist/writer/context.js +8 -0
- package/dist/writer/context.js.map +1 -1
- package/dist/writer/gtk-doc.d.ts.map +1 -1
- package/dist/writer/gtk-doc.js +27 -1
- package/dist/writer/gtk-doc.js.map +1 -1
- package/overrides/gdk/rgba.ts.ejs +15 -1
- package/overrides/glib/index.ts.ejs +3 -0
- package/overrides/glib/regex.ts.ejs +66 -0
- package/overrides/gobject/index.ts.ejs +3 -0
- package/overrides/gobject/object-class.ts.ejs +27 -0
- package/overrides/gobject/param-spec-getters.ts.ejs +57 -0
- package/overrides/gobject/param-spec.ts.ejs +21 -0
- package/overrides/gobject/value.ts.ejs +6 -1
- package/overrides/graphene/structs.ts.ejs +38 -3
- package/overrides/gtk/index.ts.ejs +2 -0
- package/overrides/gtk/widget-class.ts.ejs +28 -0
- package/package.json +7 -6
- package/src/analysis/descriptor-render.ts +60 -16
- package/src/analysis/descriptor.ts +17 -3
- package/src/analysis/param-capability.ts +68 -5
- package/src/analysis/param-structure.ts +1 -1
- package/src/analysis/ts-type.ts +45 -11
- package/src/compile.ts +1 -1
- package/src/docs/api-reference.ts +20 -2
- package/src/docs/pipeline.ts +15 -1
- package/src/fingerprint.ts +151 -16
- package/src/gi.ts +48 -9
- package/src/gir/external-namespaces.ts +8 -0
- package/src/gir/finish-overrides.ts +5 -0
- package/src/gir/function.ts +52 -14
- package/src/gir/hidden-symbols.ts +39 -0
- package/src/gir/library.ts +36 -3
- package/src/gir/ucs4-overrides.ts +7 -0
- package/src/guards.ts +6 -1
- package/src/index.ts +2 -0
- package/src/jsx.ts +33 -8
- package/src/runner.ts +17 -3
- package/src/store/external-package-links.ts +226 -0
- package/src/store/gi/callable-doc.ts +8 -4
- package/src/store/gi/callables.ts +1 -1
- package/src/store/gi/class.ts +29 -0
- package/src/store/gi/constructor-props.ts +1 -1
- package/src/store/gi/function.ts +2 -1
- package/src/store/gi/generated-libraries.ts +91 -0
- package/src/store/gi/gtype-binding.ts +8 -1
- package/src/store/gi/method.ts +189 -36
- package/src/store/gi/param-marshal.ts +67 -4
- package/src/store/gi/record-constructor.ts +8 -3
- package/src/store/gi/record-field-accessor.ts +11 -2
- package/src/store/gi/runtime-override.ts +1 -1
- package/src/store/gi/signal.ts +2 -2
- package/src/store/gi/vtable.ts +118 -11
- package/src/store/gi-store.ts +48 -5
- package/src/store/jsx/jsx.ts +3 -1
- package/src/store/jsx/metadata.ts +46 -99
- package/src/store/jsx-store.ts +23 -7
- package/src/store/resolve-store.ts +3 -1
- package/src/store/store-fs.ts +10 -2
- package/src/writer/context.ts +11 -0
- package/src/writer/gtk-doc.ts +38 -1
- package/overrides/cairo/context.ts.ejs +0 -1269
- package/overrides/cairo/font-face.ts.ejs +0 -151
- package/overrides/cairo/font-options.ts.ejs +0 -199
- package/overrides/cairo/image-surface.ts.ejs +0 -132
- package/overrides/cairo/index.ts.ejs +0 -22
- package/overrides/cairo/matrix.ts.ejs +0 -171
- package/overrides/cairo/pattern.ts.ejs +0 -476
- package/overrides/cairo/recording-surface.ts.ejs +0 -102
- package/overrides/cairo/region.ts.ejs +0 -237
- package/overrides/cairo/scaled-font.ts.ejs +0 -330
- package/overrides/cairo/surface.ts.ejs +0 -296
package/dist/fingerprint.js
CHANGED
|
@@ -1,26 +1,114 @@
|
|
|
1
|
-
import { sortStrings } from "@gtkx/utils";
|
|
2
1
|
import { createHash } from "node:crypto";
|
|
3
2
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
4
|
-
import {
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { dirname, join, relative, resolve } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import packageManifest from "../package.json" with { type: "json" };
|
|
7
|
+
import { EXTERNAL_NAMESPACES } from "./gir/external-namespaces.js";
|
|
7
8
|
import { arrayGuard, hasFields, isNumber, isString, optionalGuard } from "./guards.js";
|
|
8
9
|
import { readJsonFile } from "./json.js";
|
|
9
10
|
const FINGERPRINT_FILENAME = ".codegen-fingerprint.json";
|
|
10
|
-
const
|
|
11
|
-
const OVERRIDES_ROOT =
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
11
|
+
const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
12
|
+
const OVERRIDES_ROOT = join(PACKAGE_ROOT, "overrides");
|
|
13
|
+
const requireFromCodegen = createRequire(import.meta.url);
|
|
14
|
+
const codegenHashCache = new Map();
|
|
15
|
+
const compareOrdinal = (a, b) => {
|
|
16
|
+
if (a < b) {
|
|
17
|
+
return -1;
|
|
18
|
+
}
|
|
19
|
+
return a > b ? 1 : 0;
|
|
20
|
+
};
|
|
21
|
+
const sortOrdinal = (values) => values.toSorted(compareOrdinal);
|
|
22
|
+
const sortAlpha = (values) => sortOrdinal(values).join(",");
|
|
23
|
+
const filesUnder = (root) => {
|
|
24
|
+
if (!existsSync(root)) {
|
|
15
25
|
return [];
|
|
16
26
|
}
|
|
17
|
-
return readdirSync(
|
|
27
|
+
return readdirSync(root, { recursive: true, withFileTypes: true })
|
|
18
28
|
.filter((entry) => entry.isFile())
|
|
19
29
|
.map((entry) => join(entry.parentPath, entry.name));
|
|
20
30
|
};
|
|
31
|
+
const hashTree = (hash, label, root) => {
|
|
32
|
+
const files = sortOrdinal(filesUnder(root));
|
|
33
|
+
for (const file of files) {
|
|
34
|
+
hash.update("\n");
|
|
35
|
+
hash.update(join(label, relative(root, file)));
|
|
36
|
+
hash.update("\0");
|
|
37
|
+
hash.update(readFileSync(file));
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const isInstalledManifest = (value) => hasFields(value, { name: isString, version: isString });
|
|
41
|
+
const tryResolve = (specifier) => {
|
|
42
|
+
try {
|
|
43
|
+
return requireFromCodegen.resolve(specifier);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const manifestVersion = (path, name) => {
|
|
50
|
+
if (path === undefined) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const manifest = readJsonFile(path);
|
|
54
|
+
return isInstalledManifest(manifest) && manifest.name === name ? manifest.version : undefined;
|
|
55
|
+
};
|
|
56
|
+
const packageRootFor = (name) => {
|
|
57
|
+
const entry = tryResolve(name);
|
|
58
|
+
if (entry === undefined) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
for (let directory = dirname(entry); directory !== dirname(directory); directory = dirname(directory)) {
|
|
62
|
+
if (manifestVersion(join(directory, "package.json"), name) !== undefined) {
|
|
63
|
+
return directory;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
};
|
|
68
|
+
const installedVersion = (name) => {
|
|
69
|
+
const direct = manifestVersion(tryResolve(`${name}/package.json`), name);
|
|
70
|
+
if (direct !== undefined) {
|
|
71
|
+
return direct;
|
|
72
|
+
}
|
|
73
|
+
const root = packageRootFor(name);
|
|
74
|
+
return root === undefined ? undefined : manifestVersion(join(root, "package.json"), name);
|
|
75
|
+
};
|
|
76
|
+
const dependencyVersions = () => sortOrdinal(Object.entries(packageManifest.dependencies)
|
|
77
|
+
.filter(([name]) => !name.startsWith("@types/"))
|
|
78
|
+
.map(([name, range]) => `${name}@${installedVersion(name) ?? range}`));
|
|
79
|
+
const hashPackageCode = (hash, label, root) => {
|
|
80
|
+
const source = join(root, "src");
|
|
81
|
+
if (existsSync(source)) {
|
|
82
|
+
hashTree(hash, join(label, "src"), source);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
hashTree(hash, join(label, "dist"), join(root, "dist"));
|
|
86
|
+
};
|
|
87
|
+
const computeCodegenHash = () => {
|
|
88
|
+
const hash = createHash("sha256");
|
|
89
|
+
hash.update(dependencyVersions().join(","));
|
|
90
|
+
hashPackageCode(hash, "codegen", PACKAGE_ROOT);
|
|
91
|
+
hashTree(hash, "overrides", OVERRIDES_ROOT);
|
|
92
|
+
const utilsRoot = packageRootFor("@gtkx/utils");
|
|
93
|
+
if (utilsRoot !== undefined) {
|
|
94
|
+
hashPackageCode(hash, "@gtkx/utils", utilsRoot);
|
|
95
|
+
}
|
|
96
|
+
return hash.digest("hex");
|
|
97
|
+
};
|
|
98
|
+
const codegenHash = () => {
|
|
99
|
+
const cached = codegenHashCache.get("codegen");
|
|
100
|
+
if (cached !== undefined) {
|
|
101
|
+
return cached;
|
|
102
|
+
}
|
|
103
|
+
const value = computeCodegenHash();
|
|
104
|
+
codegenHashCache.set("codegen", value);
|
|
105
|
+
return value;
|
|
106
|
+
};
|
|
21
107
|
const hashGi = (inputs) => {
|
|
22
108
|
const hash = createHash("sha256");
|
|
23
|
-
hash.update(
|
|
109
|
+
hash.update(codegenHash());
|
|
110
|
+
hash.update("\n");
|
|
111
|
+
hash.update(JSON.stringify(EXTERNAL_NAMESPACES));
|
|
24
112
|
hash.update("\n");
|
|
25
113
|
hash.update(sortAlpha(inputs.libraries));
|
|
26
114
|
hash.update("\n");
|
|
@@ -28,8 +116,15 @@ const hashGi = (inputs) => {
|
|
|
28
116
|
hash.update("\n");
|
|
29
117
|
hash.update(String(inputs.isByteArrayTyped));
|
|
30
118
|
hash.update("\n");
|
|
31
|
-
|
|
32
|
-
|
|
119
|
+
hash.update(String(inputs.isValueUnwrapped));
|
|
120
|
+
hash.update("\n");
|
|
121
|
+
hash.update(String(inputs.isFinishTrimmed));
|
|
122
|
+
hash.update("\n");
|
|
123
|
+
hash.update(String(inputs.isInoutInPlace));
|
|
124
|
+
hash.update("\n");
|
|
125
|
+
hash.update(String(inputs.storeVersion));
|
|
126
|
+
const girFiles = sortOrdinal(inputs.girFiles);
|
|
127
|
+
for (const file of girFiles) {
|
|
33
128
|
hash.update("\n");
|
|
34
129
|
hash.update(file);
|
|
35
130
|
hash.update("\0");
|
|
@@ -89,14 +184,15 @@ const isDocsOutputFresh = (outDir, inputs, input) => {
|
|
|
89
184
|
const giValue = recordedGiValue(sentinel.gi, inputs);
|
|
90
185
|
return giValue !== undefined && hashDocs(giValue, input) === sentinel.value;
|
|
91
186
|
};
|
|
92
|
-
const serializeModuleExports = (map) =>
|
|
93
|
-
const serializeOmittedProps = (map) =>
|
|
187
|
+
const serializeModuleExports = (map) => sortOrdinal(Object.keys(map)).map((type) => [type, map[type]?.module ?? "", map[type]?.export ?? ""]);
|
|
188
|
+
const serializeOmittedProps = (map) => sortOrdinal(Object.keys(map)).map((type) => [type, sortAlpha(map[type] ?? [])]);
|
|
94
189
|
const hashJsx = (input) => createHash("sha256")
|
|
95
190
|
.update(JSON.stringify([
|
|
96
|
-
|
|
191
|
+
codegenHash(),
|
|
97
192
|
input.reactVersion,
|
|
193
|
+
sortOrdinal(input.reactSubexports),
|
|
98
194
|
serializeModuleExports(input.components),
|
|
99
|
-
|
|
195
|
+
sortOrdinal(input.lazyElements),
|
|
100
196
|
serializeModuleExports(input.props),
|
|
101
197
|
serializeOmittedProps(input.omittedProps),
|
|
102
198
|
]))
|
package/dist/fingerprint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"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","sourcesContent":["import { sortStrings } from \"@gtkx/utils\";\nimport { createHash } from \"node:crypto\";\nimport { type Dirent, existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport packageManifest from \"../package.json\" with { type: \"json\" };\nimport { arrayGuard, hasFields, isNumber, isString, optionalGuard } from \"./guards.js\";\nimport { readJsonFile } from \"./json.js\";\n\ntype GiInputs = {\n girFiles: string[];\n libraries: string[];\n girPath: string[];\n isByteArrayTyped: boolean;\n};\n\ntype GiFingerprint = {\n value: string;\n girFiles: string[];\n libraries: string[];\n girPath?: string[];\n};\n\ntype ModuleExport = { module: string; export: string };\n\ntype DocsFingerprintInput = {\n basePath: string;\n props: Record<string, ModuleExport>;\n omittedProps: Record<string, string[]>;\n};\n\ntype DocsFingerprint = {\n value: string;\n gi: GiFingerprint;\n};\n\ntype JsxFingerprintInput = {\n reactVersion: string;\n components: Record<string, ModuleExport>;\n lazyElements: string[];\n props: Record<string, ModuleExport>;\n omittedProps: Record<string, string[]>;\n};\n\ntype JsxFingerprint = {\n value: string;\n intrinsicElementCount: number;\n};\n\nconst FINGERPRINT_FILENAME = \".codegen-fingerprint.json\";\nconst CODEGEN_VERSION: string = packageManifest.version;\nconst OVERRIDES_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), \"..\", \"overrides\");\n\nconst sortAlpha = (values: string[]): string => sortStrings(values).join(\",\");\n\nconst overrideFiles = (): string[] => {\n if (!existsSync(OVERRIDES_ROOT)) {\n return [];\n }\n\n return readdirSync(OVERRIDES_ROOT, { recursive: true, withFileTypes: true })\n .filter((entry: Dirent) => entry.isFile())\n .map((entry: Dirent) => join(entry.parentPath, entry.name));\n};\n\nconst hashGi = (inputs: GiInputs): string => {\n const hash = createHash(\"sha256\");\n hash.update(CODEGEN_VERSION);\n hash.update(\"\\n\");\n hash.update(sortAlpha(inputs.libraries));\n hash.update(\"\\n\");\n hash.update(sortAlpha(inputs.girPath));\n hash.update(\"\\n\");\n hash.update(String(inputs.isByteArrayTyped));\n hash.update(\"\\n\");\n const hashedFiles = sortStrings([...inputs.girFiles, ...overrideFiles()]);\n\n for (const file of hashedFiles) {\n hash.update(\"\\n\");\n hash.update(file);\n hash.update(\"\\0\");\n hash.update(readFileSync(file));\n }\n\n return hash.digest(\"hex\");\n};\n\nconst computeGiFingerprint = (inputs: GiInputs): GiFingerprint => ({\n value: hashGi(inputs),\n girFiles: inputs.girFiles,\n libraries: inputs.libraries,\n girPath: inputs.girPath,\n});\n\nconst readSentinel = (storeDir: string): unknown => readJsonFile(join(storeDir, FINGERPRINT_FILENAME));\n\nconst isGiFingerprint = (value: unknown): value is GiFingerprint =>\n hasFields<GiFingerprint>(value, {\n value: isString,\n girFiles: arrayGuard(isString),\n libraries: arrayGuard(isString),\n girPath: optionalGuard(arrayGuard(isString)),\n });\n\nconst isDocsFingerprint = (value: unknown): value is DocsFingerprint =>\n hasFields<DocsFingerprint>(value, { value: isString, gi: isGiFingerprint });\n\nconst isJsxFingerprint = (value: unknown): value is JsxFingerprint =>\n hasFields<JsxFingerprint>(value, { value: isString, intrinsicElementCount: isNumber });\n\nconst recordedGiValue = (sentinel: GiFingerprint, inputs: GiInputs): string | undefined => {\n if (!hasMatchingRecordedInputs(sentinel, inputs)) {\n return undefined;\n }\n\n try {\n return hashGi({ ...inputs, girFiles: sentinel.girFiles, libraries: sentinel.libraries });\n } catch {\n return undefined;\n }\n};\n\nconst isGiStoreFresh = (giStoreDir: string, inputs: GiInputs): boolean => {\n const sentinel = readSentinel(giStoreDir);\n\n return isGiFingerprint(sentinel) && recordedGiValue(sentinel, inputs) === sentinel.value;\n};\n\nconst hasMatchingRecordedInputs = (sentinel: GiFingerprint, inputs: GiInputs): boolean =>\n sortAlpha(sentinel.libraries) === sortAlpha(inputs.libraries) &&\n sortAlpha(sentinel.girPath ?? []) === sortAlpha(inputs.girPath);\n\nconst hashDocs = (giValue: string, input: DocsFingerprintInput): string =>\n createHash(\"sha256\")\n .update(\n JSON.stringify([\n giValue,\n input.basePath,\n serializeModuleExports(input.props),\n serializeOmittedProps(input.omittedProps),\n ]),\n )\n .digest(\"hex\");\n\nconst computeDocsFingerprint = (inputs: GiInputs, input: DocsFingerprintInput): DocsFingerprint => {\n const gi = computeGiFingerprint(inputs);\n\n return { value: hashDocs(gi.value, input), gi };\n};\n\nconst isDocsOutputFresh = (outDir: string, inputs: GiInputs, input: DocsFingerprintInput): boolean => {\n const sentinel = readSentinel(outDir);\n\n if (!isDocsFingerprint(sentinel)) {\n return false;\n }\n\n const giValue = recordedGiValue(sentinel.gi, inputs);\n\n return giValue !== undefined && hashDocs(giValue, input) === sentinel.value;\n};\n\nconst serializeModuleExports = (map: Record<string, ModuleExport>): [string, string, string][] =>\n sortStrings(Object.keys(map)).map((type) => [type, map[type]?.module ?? \"\", map[type]?.export ?? \"\"]);\n\nconst serializeOmittedProps = (map: Record<string, string[]>): [string, string][] =>\n sortStrings(Object.keys(map)).map((type) => [type, sortAlpha(map[type] ?? [])]);\n\nconst hashJsx = (input: JsxFingerprintInput): string =>\n createHash(\"sha256\")\n .update(\n JSON.stringify([\n CODEGEN_VERSION,\n input.reactVersion,\n serializeModuleExports(input.components),\n sortStrings(input.lazyElements),\n serializeModuleExports(input.props),\n serializeOmittedProps(input.omittedProps),\n ]),\n )\n .digest(\"hex\");\n\nconst computeJsxFingerprint = (input: JsxFingerprintInput, intrinsicElementCount: number): JsxFingerprint => ({\n value: hashJsx(input),\n intrinsicElementCount,\n});\n\nconst jsxStoreFreshness = (\n jsxStoreDir: string,\n input: JsxFingerprintInput,\n): { isFresh: boolean; intrinsicElementCount: number } => {\n const sentinel = readSentinel(jsxStoreDir);\n\n if (!isJsxFingerprint(sentinel)) {\n return { isFresh: false, intrinsicElementCount: 0 };\n }\n\n return sentinel.value === hashJsx(input)\n ? { isFresh: true, intrinsicElementCount: sentinel.intrinsicElementCount }\n : { isFresh: false, intrinsicElementCount: 0 };\n};\n\nexport {\n FINGERPRINT_FILENAME,\n computeGiFingerprint,\n computeDocsFingerprint,\n isGiStoreFresh,\n isDocsOutputFresh,\n computeJsxFingerprint,\n jsxStoreFreshness,\n type DocsFingerprintInput,\n type GiInputs,\n type GiFingerprint,\n type JsxFingerprintInput,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../src/fingerprint.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, type Hash } from \"node:crypto\";\nimport { type Dirent, existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join, relative, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport packageManifest from \"../package.json\" with { type: \"json\" };\nimport { EXTERNAL_NAMESPACES } from \"./gir/external-namespaces.js\";\nimport { arrayGuard, hasFields, isNumber, isString, optionalGuard } from \"./guards.js\";\nimport { readJsonFile } from \"./json.js\";\n\ntype GiInputs = {\n girFiles: string[];\n libraries: string[];\n girPath: string[];\n storeVersion: string | undefined;\n isByteArrayTyped: boolean;\n isValueUnwrapped: boolean;\n isFinishTrimmed: boolean;\n isInoutInPlace: boolean;\n};\n\ntype GiFingerprint = {\n value: string;\n girFiles: string[];\n libraries: string[];\n girPath?: string[];\n};\n\ntype ModuleExport = { module: string; export: string };\n\ntype DocsFingerprintInput = {\n basePath: string;\n props: Record<string, ModuleExport>;\n omittedProps: Record<string, string[]>;\n};\n\ntype DocsFingerprint = {\n value: string;\n gi: GiFingerprint;\n};\n\ntype JsxFingerprintInput = {\n reactVersion: string;\n reactSubexports: string[];\n components: Record<string, ModuleExport>;\n lazyElements: string[];\n props: Record<string, ModuleExport>;\n omittedProps: Record<string, string[]>;\n};\n\ntype JsxFingerprint = {\n value: string;\n intrinsicElementCount: number;\n};\n\ntype InstalledManifest = { name: string; version: string };\n\nconst FINGERPRINT_FILENAME = \".codegen-fingerprint.json\";\nconst PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), \"..\");\nconst OVERRIDES_ROOT = join(PACKAGE_ROOT, \"overrides\");\nconst requireFromCodegen = createRequire(import.meta.url);\nconst codegenHashCache: Map<string, string> = new Map();\n\nconst compareOrdinal = (a: string, b: string): number => {\n if (a < b) {\n return -1;\n }\n\n return a > b ? 1 : 0;\n};\n\nconst sortOrdinal = (values: string[]): string[] => values.toSorted(compareOrdinal);\nconst sortAlpha = (values: string[]): string => sortOrdinal(values).join(\",\");\n\nconst filesUnder = (root: string): string[] => {\n if (!existsSync(root)) {\n return [];\n }\n\n return readdirSync(root, { recursive: true, withFileTypes: true })\n .filter((entry: Dirent) => entry.isFile())\n .map((entry: Dirent) => join(entry.parentPath, entry.name));\n};\n\nconst hashTree = (hash: Hash, label: string, root: string): void => {\n const files = sortOrdinal(filesUnder(root));\n\n for (const file of files) {\n hash.update(\"\\n\");\n hash.update(join(label, relative(root, file)));\n hash.update(\"\\0\");\n hash.update(readFileSync(file));\n }\n};\n\nconst isInstalledManifest = (value: unknown): value is InstalledManifest =>\n hasFields<InstalledManifest>(value, { name: isString, version: isString });\n\nconst tryResolve = (specifier: string): string | undefined => {\n try {\n return requireFromCodegen.resolve(specifier);\n } catch {\n return undefined;\n }\n};\n\nconst manifestVersion = (path: string | undefined, name: string): string | undefined => {\n if (path === undefined) {\n return undefined;\n }\n\n const manifest = readJsonFile(path);\n\n return isInstalledManifest(manifest) && manifest.name === name ? manifest.version : undefined;\n};\n\nconst packageRootFor = (name: string): string | undefined => {\n const entry = tryResolve(name);\n\n if (entry === undefined) {\n return undefined;\n }\n\n for (let directory = dirname(entry); directory !== dirname(directory); directory = dirname(directory)) {\n if (manifestVersion(join(directory, \"package.json\"), name) !== undefined) {\n return directory;\n }\n }\n\n return undefined;\n};\n\nconst installedVersion = (name: string): string | undefined => {\n const direct = manifestVersion(tryResolve(`${name}/package.json`), name);\n\n if (direct !== undefined) {\n return direct;\n }\n\n const root = packageRootFor(name);\n\n return root === undefined ? undefined : manifestVersion(join(root, \"package.json\"), name);\n};\n\nconst dependencyVersions = (): string[] =>\n sortOrdinal(\n Object.entries(packageManifest.dependencies)\n .filter(([name]) => !name.startsWith(\"@types/\"))\n .map(([name, range]) => `${name}@${installedVersion(name) ?? range}`),\n );\n\nconst hashPackageCode = (hash: Hash, label: string, root: string): void => {\n const source = join(root, \"src\");\n\n if (existsSync(source)) {\n hashTree(hash, join(label, \"src\"), source);\n\n return;\n }\n\n hashTree(hash, join(label, \"dist\"), join(root, \"dist\"));\n};\n\nconst computeCodegenHash = (): string => {\n const hash = createHash(\"sha256\");\n hash.update(dependencyVersions().join(\",\"));\n hashPackageCode(hash, \"codegen\", PACKAGE_ROOT);\n hashTree(hash, \"overrides\", OVERRIDES_ROOT);\n const utilsRoot = packageRootFor(\"@gtkx/utils\");\n\n if (utilsRoot !== undefined) {\n hashPackageCode(hash, \"@gtkx/utils\", utilsRoot);\n }\n\n return hash.digest(\"hex\");\n};\n\nconst codegenHash = (): string => {\n const cached = codegenHashCache.get(\"codegen\");\n\n if (cached !== undefined) {\n return cached;\n }\n\n const value = computeCodegenHash();\n codegenHashCache.set(\"codegen\", value);\n\n return value;\n};\n\nconst hashGi = (inputs: GiInputs): string => {\n const hash = createHash(\"sha256\");\n hash.update(codegenHash());\n hash.update(\"\\n\");\n hash.update(JSON.stringify(EXTERNAL_NAMESPACES));\n hash.update(\"\\n\");\n hash.update(sortAlpha(inputs.libraries));\n hash.update(\"\\n\");\n hash.update(sortAlpha(inputs.girPath));\n hash.update(\"\\n\");\n hash.update(String(inputs.isByteArrayTyped));\n hash.update(\"\\n\");\n hash.update(String(inputs.isValueUnwrapped));\n hash.update(\"\\n\");\n hash.update(String(inputs.isFinishTrimmed));\n hash.update(\"\\n\");\n hash.update(String(inputs.isInoutInPlace));\n hash.update(\"\\n\");\n hash.update(String(inputs.storeVersion));\n const girFiles = sortOrdinal(inputs.girFiles);\n\n for (const file of girFiles) {\n hash.update(\"\\n\");\n hash.update(file);\n hash.update(\"\\0\");\n hash.update(readFileSync(file));\n }\n\n return hash.digest(\"hex\");\n};\n\nconst computeGiFingerprint = (inputs: GiInputs): GiFingerprint => ({\n value: hashGi(inputs),\n girFiles: inputs.girFiles,\n libraries: inputs.libraries,\n girPath: inputs.girPath,\n});\n\nconst readSentinel = (storeDir: string): unknown => readJsonFile(join(storeDir, FINGERPRINT_FILENAME));\n\nconst isGiFingerprint = (value: unknown): value is GiFingerprint =>\n hasFields<GiFingerprint>(value, {\n value: isString,\n girFiles: arrayGuard(isString),\n libraries: arrayGuard(isString),\n girPath: optionalGuard(arrayGuard(isString)),\n });\n\nconst isDocsFingerprint = (value: unknown): value is DocsFingerprint =>\n hasFields<DocsFingerprint>(value, { value: isString, gi: isGiFingerprint });\n\nconst isJsxFingerprint = (value: unknown): value is JsxFingerprint =>\n hasFields<JsxFingerprint>(value, { value: isString, intrinsicElementCount: isNumber });\n\nconst recordedGiValue = (sentinel: GiFingerprint, inputs: GiInputs): string | undefined => {\n if (!hasMatchingRecordedInputs(sentinel, inputs)) {\n return undefined;\n }\n\n try {\n return hashGi({ ...inputs, girFiles: sentinel.girFiles, libraries: sentinel.libraries });\n } catch {\n return undefined;\n }\n};\n\nconst isGiStoreFresh = (giStoreDir: string, inputs: GiInputs): boolean => {\n const sentinel = readSentinel(giStoreDir);\n\n return isGiFingerprint(sentinel) && recordedGiValue(sentinel, inputs) === sentinel.value;\n};\n\nconst hasMatchingRecordedInputs = (sentinel: GiFingerprint, inputs: GiInputs): boolean =>\n sortAlpha(sentinel.libraries) === sortAlpha(inputs.libraries) &&\n sortAlpha(sentinel.girPath ?? []) === sortAlpha(inputs.girPath);\n\nconst hashDocs = (giValue: string, input: DocsFingerprintInput): string =>\n createHash(\"sha256\")\n .update(\n JSON.stringify([\n giValue,\n input.basePath,\n serializeModuleExports(input.props),\n serializeOmittedProps(input.omittedProps),\n ]),\n )\n .digest(\"hex\");\n\nconst computeDocsFingerprint = (inputs: GiInputs, input: DocsFingerprintInput): DocsFingerprint => {\n const gi = computeGiFingerprint(inputs);\n\n return { value: hashDocs(gi.value, input), gi };\n};\n\nconst isDocsOutputFresh = (outDir: string, inputs: GiInputs, input: DocsFingerprintInput): boolean => {\n const sentinel = readSentinel(outDir);\n\n if (!isDocsFingerprint(sentinel)) {\n return false;\n }\n\n const giValue = recordedGiValue(sentinel.gi, inputs);\n\n return giValue !== undefined && hashDocs(giValue, input) === sentinel.value;\n};\n\nconst serializeModuleExports = (map: Record<string, ModuleExport>): [string, string, string][] =>\n sortOrdinal(Object.keys(map)).map((type) => [type, map[type]?.module ?? \"\", map[type]?.export ?? \"\"]);\n\nconst serializeOmittedProps = (map: Record<string, string[]>): [string, string][] =>\n sortOrdinal(Object.keys(map)).map((type) => [type, sortAlpha(map[type] ?? [])]);\n\nconst hashJsx = (input: JsxFingerprintInput): string =>\n createHash(\"sha256\")\n .update(\n JSON.stringify([\n codegenHash(),\n input.reactVersion,\n sortOrdinal(input.reactSubexports),\n serializeModuleExports(input.components),\n sortOrdinal(input.lazyElements),\n serializeModuleExports(input.props),\n serializeOmittedProps(input.omittedProps),\n ]),\n )\n .digest(\"hex\");\n\nconst computeJsxFingerprint = (input: JsxFingerprintInput, intrinsicElementCount: number): JsxFingerprint => ({\n value: hashJsx(input),\n intrinsicElementCount,\n});\n\nconst jsxStoreFreshness = (\n jsxStoreDir: string,\n input: JsxFingerprintInput,\n): { isFresh: boolean; intrinsicElementCount: number } => {\n const sentinel = readSentinel(jsxStoreDir);\n\n if (!isJsxFingerprint(sentinel)) {\n return { isFresh: false, intrinsicElementCount: 0 };\n }\n\n return sentinel.value === hashJsx(input)\n ? { isFresh: true, intrinsicElementCount: sentinel.intrinsicElementCount }\n : { isFresh: false, intrinsicElementCount: 0 };\n};\n\nexport {\n FINGERPRINT_FILENAME,\n computeGiFingerprint,\n computeDocsFingerprint,\n isGiStoreFresh,\n isDocsOutputFresh,\n computeJsxFingerprint,\n jsxStoreFreshness,\n type DocsFingerprintInput,\n type GiInputs,\n type GiFingerprint,\n type JsxFingerprintInput,\n};\n"]}
|
package/dist/gi.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ type GiCodegenOptions = {
|
|
|
5
5
|
libraries: string[];
|
|
6
6
|
girPath: string[];
|
|
7
7
|
isByteArrayTyped: boolean;
|
|
8
|
+
isValueUnwrapped: boolean;
|
|
9
|
+
isFinishTrimmed: boolean;
|
|
10
|
+
isInoutInPlace: boolean;
|
|
8
11
|
};
|
|
9
12
|
declare const runGiCodegen: (library: Library, options: GiCodegenOptions) => number;
|
|
10
13
|
export { runGiCodegen };
|
package/dist/gi.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gi.d.ts","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"gi.d.ts","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,KAAK,gBAAgB,GAAG;IACpB,EAAE,EAAE,YAAY,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAkCF,QAAA,MAAM,YAAY,GAAI,SAAS,OAAO,EAAE,SAAS,gBAAgB,KAAG,MAqBnE,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/gi.js
CHANGED
|
@@ -1,21 +1,47 @@
|
|
|
1
1
|
import { computeGiFingerprint } from "./fingerprint.js";
|
|
2
|
+
import { externalPackageFor } from "./gir/external-namespaces.js";
|
|
2
3
|
import { namespaceDirectory } from "./gir/namespace.js";
|
|
3
4
|
import { writeGiStore } from "./store/gi-store.js";
|
|
5
|
+
import { collectGeneratedLibraries } from "./store/gi/generated-libraries.js";
|
|
4
6
|
import { generateNamespaceModule } from "./store/gi/pipeline.js";
|
|
7
|
+
const splitNamespaces = (library) => {
|
|
8
|
+
const namespaces = [];
|
|
9
|
+
const externalNamespaces = [];
|
|
10
|
+
for (const namespace of library.namespaces.values()) {
|
|
11
|
+
const packageName = externalPackageFor(namespace.name);
|
|
12
|
+
if (packageName !== undefined) {
|
|
13
|
+
externalNamespaces.push({
|
|
14
|
+
directory: namespaceDirectory(namespace),
|
|
15
|
+
packageName,
|
|
16
|
+
girFile: namespace.girFile,
|
|
17
|
+
});
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
namespaces.push({
|
|
21
|
+
directory: namespaceDirectory(namespace),
|
|
22
|
+
rawSource: generateNamespaceModule(namespace, library),
|
|
23
|
+
girFile: namespace.girFile,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return { namespaces, externalNamespaces };
|
|
27
|
+
};
|
|
5
28
|
const runGiCodegen = (library, options) => {
|
|
6
|
-
const { gi, libraries, girPath, isByteArrayTyped } = options;
|
|
7
|
-
const namespaces =
|
|
8
|
-
directory: namespaceDirectory(namespace),
|
|
9
|
-
rawSource: generateNamespaceModule(namespace, library),
|
|
10
|
-
girFile: namespace.girFile,
|
|
11
|
-
}));
|
|
29
|
+
const { gi, libraries, girPath, isByteArrayTyped, isValueUnwrapped, isFinishTrimmed, isInoutInPlace } = options;
|
|
30
|
+
const { namespaces, externalNamespaces } = splitNamespaces(library);
|
|
12
31
|
const fingerprint = computeGiFingerprint({
|
|
13
32
|
girFiles: library.girFiles,
|
|
14
33
|
libraries: [...libraries],
|
|
15
34
|
girPath: [...girPath],
|
|
35
|
+
storeVersion: gi.version,
|
|
16
36
|
isByteArrayTyped,
|
|
37
|
+
isValueUnwrapped,
|
|
38
|
+
isFinishTrimmed,
|
|
39
|
+
isInoutInPlace,
|
|
40
|
+
});
|
|
41
|
+
writeGiStore(gi, namespaces, externalNamespaces, {
|
|
42
|
+
fingerprint,
|
|
43
|
+
libraries: collectGeneratedLibraries(library.namespaces, libraries),
|
|
17
44
|
});
|
|
18
|
-
writeGiStore(gi, namespaces, fingerprint);
|
|
19
45
|
return library.namespaces.size;
|
|
20
46
|
};
|
|
21
47
|
export { runGiCodegen };
|
package/dist/gi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gi.js","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"gi.js","sourceRoot":"","sources":["../src/gi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAwD,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAiBjE,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAmB,EAAE;IAC1D,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,MAAM,kBAAkB,GAA+B,EAAE,CAAC;IAE1D,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,kBAAkB,CAAC,IAAI,CAAC;gBACpB,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;gBACxC,WAAW;gBACX,OAAO,EAAE,SAAS,CAAC,OAAO;aAC7B,CAAC,CAAC;YAEH,SAAS;QACb,CAAC;QAED,UAAU,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;YACxC,SAAS,EAAE,uBAAuB,CAAC,SAAS,EAAE,OAAO,CAAC;YACtD,OAAO,EAAE,SAAS,CAAC,OAAO;SAC7B,CAAC,CAAC;IACP,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,OAAgB,EAAE,OAAyB,EAAU,EAAE;IACzE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC;IAChH,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,oBAAoB,CAAC;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;QACzB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;QACrB,YAAY,EAAE,EAAE,CAAC,OAAO;QACxB,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,cAAc;KACjB,CAAC,CAAC;IAEH,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE;QAC7C,WAAW;QACX,SAAS,EAAE,yBAAyB,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;KACtE,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;AACnC,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import type { Library } from \"./gir/library.js\";\nimport type { StoreOptions } from \"./store/store-fs.js\";\nimport { computeGiFingerprint } from \"./fingerprint.js\";\nimport { externalPackageFor } from \"./gir/external-namespaces.js\";\nimport { namespaceDirectory } from \"./gir/namespace.js\";\nimport { type GiExternalNamespaceInput, type GiNamespaceInput, writeGiStore } from \"./store/gi-store.js\";\nimport { collectGeneratedLibraries } from \"./store/gi/generated-libraries.js\";\nimport { generateNamespaceModule } from \"./store/gi/pipeline.js\";\n\ntype GiCodegenOptions = {\n gi: StoreOptions;\n libraries: string[];\n girPath: string[];\n isByteArrayTyped: boolean;\n isValueUnwrapped: boolean;\n isFinishTrimmed: boolean;\n isInoutInPlace: boolean;\n};\n\ntype SplitNamespaces = {\n namespaces: GiNamespaceInput[];\n externalNamespaces: GiExternalNamespaceInput[];\n};\n\nconst splitNamespaces = (library: Library): SplitNamespaces => {\n const namespaces: GiNamespaceInput[] = [];\n const externalNamespaces: GiExternalNamespaceInput[] = [];\n\n for (const namespace of library.namespaces.values()) {\n const packageName = externalPackageFor(namespace.name);\n\n if (packageName !== undefined) {\n externalNamespaces.push({\n directory: namespaceDirectory(namespace),\n packageName,\n girFile: namespace.girFile,\n });\n\n continue;\n }\n\n namespaces.push({\n directory: namespaceDirectory(namespace),\n rawSource: generateNamespaceModule(namespace, library),\n girFile: namespace.girFile,\n });\n }\n\n return { namespaces, externalNamespaces };\n};\n\nconst runGiCodegen = (library: Library, options: GiCodegenOptions): number => {\n const { gi, libraries, girPath, isByteArrayTyped, isValueUnwrapped, isFinishTrimmed, isInoutInPlace } = options;\n const { namespaces, externalNamespaces } = splitNamespaces(library);\n\n const fingerprint = computeGiFingerprint({\n girFiles: library.girFiles,\n libraries: [...libraries],\n girPath: [...girPath],\n storeVersion: gi.version,\n isByteArrayTyped,\n isValueUnwrapped,\n isFinishTrimmed,\n isInoutInPlace,\n });\n\n writeGiStore(gi, namespaces, externalNamespaces, {\n fingerprint,\n libraries: collectGeneratedLibraries(library.namespaces, libraries),\n });\n\n return library.namespaces.size;\n};\n\nexport { runGiCodegen };\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type ExternalNamespace = {
|
|
2
|
+
namespace: string;
|
|
3
|
+
packageName: string;
|
|
4
|
+
};
|
|
5
|
+
declare const EXTERNAL_NAMESPACES: ExternalNamespace[];
|
|
6
|
+
declare const externalPackageFor: (namespaceName: string) => string | undefined;
|
|
7
|
+
export { EXTERNAL_NAMESPACES, externalPackageFor, type ExternalNamespace };
|
|
8
|
+
//# sourceMappingURL=external-namespaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-namespaces.d.ts","sourceRoot":"","sources":["../../src/gir/external-namespaces.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,QAAA,MAAM,mBAAmB,EAAE,iBAAiB,EAAyD,CAAC;AAEtG,QAAA,MAAM,kBAAkB,GAAI,eAAe,MAAM,KAAG,MAAM,GAAG,SAC0B,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
const EXTERNAL_NAMESPACES = [{ namespace: "cairo", packageName: "@gtkx/cairo" }];
|
|
2
|
+
const externalPackageFor = (namespaceName) => EXTERNAL_NAMESPACES.find((entry) => entry.namespace === namespaceName)?.packageName;
|
|
3
|
+
export { EXTERNAL_NAMESPACES, externalPackageFor };
|
|
4
|
+
//# sourceMappingURL=external-namespaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-namespaces.js","sourceRoot":"","sources":["../../src/gir/external-namespaces.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAwB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;AAEtG,MAAM,kBAAkB,GAAG,CAAC,aAAqB,EAAsB,EAAE,CACrE,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,aAAa,CAAC,EAAE,WAAW,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAA0B,CAAC","sourcesContent":["type ExternalNamespace = { namespace: string; packageName: string };\n\nconst EXTERNAL_NAMESPACES: ExternalNamespace[] = [{ namespace: \"cairo\", packageName: \"@gtkx/cairo\" }];\n\nconst externalPackageFor = (namespaceName: string): string | undefined =>\n EXTERNAL_NAMESPACES.find((entry) => entry.namespace === namespaceName)?.packageName;\n\nexport { EXTERNAL_NAMESPACES, externalPackageFor, type ExternalNamespace };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finish-overrides.d.ts","sourceRoot":"","sources":["../../src/gir/finish-overrides.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,6BAA6B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAErD,CAAC;AAEH,OAAO,EAAE,6BAA6B,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finish-overrides.js","sourceRoot":"","sources":["../../src/gir/finish-overrides.ts"],"names":[],"mappings":"AAAA,MAAM,6BAA6B,GAAwB,IAAI,GAAG,CAAC;IAC/D,CAAC,qCAAqC,EAAE,yBAAyB,CAAC;CACrE,CAAC,CAAC;AAEH,OAAO,EAAE,6BAA6B,EAAE,CAAC","sourcesContent":["const FUNCTIONS_MISSING_FINISH_FUNC: Map<string, string> = new Map([\n [\"g_file_replace_contents_bytes_async\", \"replace_contents_finish\"],\n]);\n\nexport { FUNCTIONS_MISSING_FINISH_FUNC };\n"]}
|
package/dist/gir/function.d.ts
CHANGED
|
@@ -14,13 +14,16 @@ type GirFunction = {
|
|
|
14
14
|
cIdentifier: string | undefined;
|
|
15
15
|
/** Whether the C function takes a trailing `GError` out parameter and can fail. */
|
|
16
16
|
throws: boolean;
|
|
17
|
-
/** Whether the
|
|
17
|
+
/** Whether the callable is bindable: the GIR marks it introspectable and GTKX does not hide it. */
|
|
18
18
|
introspectable: boolean;
|
|
19
19
|
/** Qualified `Type.member` the GIR redirects the callable to, from its `moved-to` annotation. */
|
|
20
20
|
movedTo: string | undefined;
|
|
21
21
|
/** Name of the callable that shadows this one, from the GIR's `shadowed-by` annotation. */
|
|
22
22
|
shadowedBy: string | undefined;
|
|
23
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Name of the callable that completes this asynchronous one, from the GIR's `glib:finish-func`
|
|
25
|
+
* or a GTKX override for a GIR that lacks the annotation.
|
|
26
|
+
*/
|
|
24
27
|
finishFunc: string | undefined;
|
|
25
28
|
/** The instance the callable is invoked on, absent for constructors and namespace-level functions. */
|
|
26
29
|
instance: GirParameter | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/gir/function.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../src/gir/function.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAoC,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1D,wGAAwG;AACxG,KAAK,WAAW,GAAG;IACf,kGAAkG;IAClG,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,uEAAuE;IACvE,WAAW,EAAE,cAAc,CAAC;IAC5B,gDAAgD;IAChD,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,mFAAmF;IACnF,MAAM,EAAE,OAAO,CAAC;IAChB,mGAAmG;IACnG,cAAc,EAAE,OAAO,CAAC;IACxB,iGAAiG;IACjG,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,2FAA2F;IAC3F,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sGAAsG;IACtG,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,oEAAoE;IACpE,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,oEAAoE;IACpE,WAAW,EAAE,cAAc,CAAC;CAC/B,CAAC;AAkFF,QAAA,MAAM,gBAAgB,GAAI,MAAM,OAAO,EAAE,SAAS,YAAY,KAAG,WAiBhE,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,CAAC"}
|
package/dist/gir/function.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { PARAMETERS_MISSING_ARRAY_EXTENT } from "./cursor-overrides.js";
|
|
2
|
+
import { FUNCTIONS_MISSING_FINISH_FUNC } from "./finish-overrides.js";
|
|
3
|
+
import { HIDDEN_SYMBOLS } from "./hidden-symbols.js";
|
|
2
4
|
import { PARAMETERS_MISSING_NULLABLE_ANNOTATION } from "./nullable-overrides.js";
|
|
3
5
|
import { parameterFromNode, parseCallable } from "./parameter.js";
|
|
4
6
|
import { attr, getChild } from "./parse.js";
|
|
7
|
+
import { RETURNS_MISSING_UCS4_ARRAY_TYPE } from "./ucs4-overrides.js";
|
|
5
8
|
const relaxParameters = (parameters, names) => {
|
|
6
9
|
for (const parameter of parameters) {
|
|
7
10
|
if (names.includes(parameter.name)) {
|
|
@@ -41,17 +44,43 @@ const bindMissingArrayExtent = (fn) => {
|
|
|
41
44
|
}
|
|
42
45
|
return fn;
|
|
43
46
|
};
|
|
47
|
+
const bindMissingUcs4ReturnArray = (fn, context) => {
|
|
48
|
+
if (fn.cIdentifier !== undefined && RETURNS_MISSING_UCS4_ARRAY_TYPE.has(fn.cIdentifier)) {
|
|
49
|
+
fn.returnValue.type = context.addContainer({
|
|
50
|
+
kind: "carray",
|
|
51
|
+
element: context.addPrimitive("unichar"),
|
|
52
|
+
elementCType: "gunichar",
|
|
53
|
+
arrayCType: "gunichar*",
|
|
54
|
+
lengthParameterIndex: undefined,
|
|
55
|
+
fixedSize: undefined,
|
|
56
|
+
isZeroTerminated: true,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return fn;
|
|
60
|
+
};
|
|
61
|
+
const annotatedFinishFunc = (node, cIdentifier) => {
|
|
62
|
+
const annotated = attr(node, "glib:finish-func");
|
|
63
|
+
if (annotated !== undefined) {
|
|
64
|
+
return annotated;
|
|
65
|
+
}
|
|
66
|
+
return cIdentifier === undefined ? undefined : FUNCTIONS_MISSING_FINISH_FUNC.get(cIdentifier);
|
|
67
|
+
};
|
|
68
|
+
const isHiddenSymbol = (cIdentifier) => cIdentifier !== undefined && HIDDEN_SYMBOLS.has(cIdentifier);
|
|
44
69
|
const functionFromNode = (node, context) => {
|
|
45
70
|
const instanceNode = getChild(getChild(node, "parameters"), "instance-parameter");
|
|
46
|
-
|
|
47
|
-
|
|
71
|
+
const callable = parseCallable(node, context);
|
|
72
|
+
const cIdentifier = attr(node, "c:identifier");
|
|
73
|
+
const fn = {
|
|
74
|
+
...callable,
|
|
75
|
+
introspectable: callable.introspectable && !isHiddenSymbol(cIdentifier),
|
|
48
76
|
name: attr(node, "shadows") ?? attr(node, "name") ?? "",
|
|
49
|
-
cIdentifier
|
|
77
|
+
cIdentifier,
|
|
50
78
|
movedTo: attr(node, "moved-to"),
|
|
51
79
|
shadowedBy: attr(node, "shadowed-by"),
|
|
52
|
-
finishFunc:
|
|
80
|
+
finishFunc: annotatedFinishFunc(node, cIdentifier),
|
|
53
81
|
instance: instanceNode === undefined ? undefined : parameterFromNode(instanceNode, context),
|
|
54
|
-
}
|
|
82
|
+
};
|
|
83
|
+
return bindMissingUcs4ReturnArray(bindMissingArrayExtent(relaxMissingNullable(fn)), context);
|
|
55
84
|
};
|
|
56
85
|
export { functionFromNode };
|
|
57
86
|
//# sourceMappingURL=function.js.map
|
package/dist/gir/function.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/gir/function.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,sCAAsC,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAA0C,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"function.js","sourceRoot":"","sources":["../../src/gir/function.ts"],"names":[],"mappings":"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","sourcesContent":["import type { GirAnnotations } from \"./annotations.js\";\nimport type { ParseContext } from \"./type-id.js\";\nimport { type CursorParameterNames, PARAMETERS_MISSING_ARRAY_EXTENT } from \"./cursor-overrides.js\";\nimport { FUNCTIONS_MISSING_FINISH_FUNC } from \"./finish-overrides.js\";\nimport { HIDDEN_SYMBOLS } from \"./hidden-symbols.js\";\nimport { PARAMETERS_MISSING_NULLABLE_ANNOTATION } from \"./nullable-overrides.js\";\nimport { type GirParameter, type GirReturnValue, parameterFromNode, parseCallable } from \"./parameter.js\";\nimport { attr, getChild, type RawNode } from \"./parse.js\";\nimport { RETURNS_MISSING_UCS4_ARRAY_TYPE } from \"./ucs4-overrides.js\";\n\n/** A callable declared by a GIR namespace, class, or record: a function, a method, or a constructor. */\ntype GirFunction = {\n /** Local name within its owner, taken from the `shadows` annotation when the callable has one. */\n name: string;\n /** Documentation text carried by the GIR node. */\n doc: string | undefined;\n /** Release and deprecation annotations GIR carries on the callable. */\n annotations: GirAnnotations;\n /** C symbol the callable is invoked through. */\n cIdentifier: string | undefined;\n /** Whether the C function takes a trailing `GError` out parameter and can fail. */\n throws: boolean;\n /** Whether the callable is bindable: the GIR marks it introspectable and GTKX does not hide it. */\n introspectable: boolean;\n /** Qualified `Type.member` the GIR redirects the callable to, from its `moved-to` annotation. */\n movedTo: string | undefined;\n /** Name of the callable that shadows this one, from the GIR's `shadowed-by` annotation. */\n shadowedBy: string | undefined;\n /**\n * Name of the callable that completes this asynchronous one, from the GIR's `glib:finish-func`\n * or a GTKX override for a GIR that lacks the annotation.\n */\n finishFunc: string | undefined;\n /** The instance the callable is invoked on, absent for constructors and namespace-level functions. */\n instance: GirParameter | undefined;\n /** Parameters other than the instance one, in declaration order. */\n parameters: GirParameter[];\n /** What the callable returns, with its transfer and nullability. */\n returnValue: GirReturnValue;\n};\n\nconst relaxParameters = (parameters: GirParameter[], names: string[]): void => {\n for (const parameter of parameters) {\n if (names.includes(parameter.name)) {\n parameter.nullable = true;\n }\n }\n};\n\nconst relaxMissingNullable = (fn: GirFunction): GirFunction => {\n const names = fn.cIdentifier === undefined ? undefined : PARAMETERS_MISSING_NULLABLE_ANNOTATION.get(fn.cIdentifier);\n\n if (names !== undefined) {\n relaxParameters(fn.parameters, names);\n }\n\n return fn;\n};\n\nconst parameterIndexFor = (parameters: GirParameter[], name: string): number => {\n const index = parameters.findIndex((parameter) => parameter.name === name);\n\n if (index === -1) {\n throw new Error(`A cursor correction names a parameter the GIR does not declare: ${name}`);\n }\n\n return index;\n};\n\nconst bindCursorParameters = (parameters: GirParameter[], corrections: CursorParameterNames[]): void => {\n for (const names of corrections) {\n const parameter = parameters[parameterIndexFor(parameters, names.cursor)];\n\n if (parameter !== undefined) {\n parameter.cursor = {\n baseIndex: parameterIndexFor(parameters, names.base),\n lengthIndex: parameterIndexFor(parameters, names.length),\n };\n }\n }\n};\n\nconst bindMissingArrayExtent = (fn: GirFunction): GirFunction => {\n const corrections = fn.cIdentifier === undefined ? undefined : PARAMETERS_MISSING_ARRAY_EXTENT.get(fn.cIdentifier);\n\n if (corrections !== undefined) {\n bindCursorParameters(fn.parameters, corrections);\n }\n\n return fn;\n};\n\nconst bindMissingUcs4ReturnArray = (fn: GirFunction, context: ParseContext): GirFunction => {\n if (fn.cIdentifier !== undefined && RETURNS_MISSING_UCS4_ARRAY_TYPE.has(fn.cIdentifier)) {\n fn.returnValue.type = context.addContainer({\n kind: \"carray\",\n element: context.addPrimitive(\"unichar\"),\n elementCType: \"gunichar\",\n arrayCType: \"gunichar*\",\n lengthParameterIndex: undefined,\n fixedSize: undefined,\n isZeroTerminated: true,\n });\n }\n\n return fn;\n};\n\nconst annotatedFinishFunc = (node: RawNode, cIdentifier: string | undefined): string | undefined => {\n const annotated = attr(node, \"glib:finish-func\");\n\n if (annotated !== undefined) {\n return annotated;\n }\n\n return cIdentifier === undefined ? undefined : FUNCTIONS_MISSING_FINISH_FUNC.get(cIdentifier);\n};\n\nconst isHiddenSymbol = (cIdentifier: string | undefined): boolean =>\n cIdentifier !== undefined && HIDDEN_SYMBOLS.has(cIdentifier);\n\nconst functionFromNode = (node: RawNode, context: ParseContext): GirFunction => {\n const instanceNode = getChild(getChild(node, \"parameters\"), \"instance-parameter\");\n const callable = parseCallable(node, context);\n const cIdentifier = attr(node, \"c:identifier\");\n\n const fn: GirFunction = {\n ...callable,\n introspectable: callable.introspectable && !isHiddenSymbol(cIdentifier),\n name: attr(node, \"shadows\") ?? attr(node, \"name\") ?? \"\",\n cIdentifier,\n movedTo: attr(node, \"moved-to\"),\n shadowedBy: attr(node, \"shadowed-by\"),\n finishFunc: annotatedFinishFunc(node, cIdentifier),\n instance: instanceNode === undefined ? undefined : parameterFromNode(instanceNode, context),\n };\n\n return bindMissingUcs4ReturnArray(bindMissingArrayExtent(relaxMissingNullable(fn)), context);\n};\n\nexport { functionFromNode, type GirFunction };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden-symbols.d.ts","sourceRoot":"","sources":["../../src/gir/hidden-symbols.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,CAoC9B,CAAC;AAEH,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const HIDDEN_SYMBOLS = new Set([
|
|
2
|
+
"g_action_map_add_action_entries",
|
|
3
|
+
"g_ascii_dtostr",
|
|
4
|
+
"g_ascii_formatd",
|
|
5
|
+
"g_file_info_set_attribute",
|
|
6
|
+
"g_file_set_attribute",
|
|
7
|
+
"g_log_set_writer_func",
|
|
8
|
+
"g_object_get_data",
|
|
9
|
+
"g_object_get_qdata",
|
|
10
|
+
"g_object_set_data",
|
|
11
|
+
"g_object_set_data_full",
|
|
12
|
+
"g_object_set_qdata",
|
|
13
|
+
"g_object_set_qdata_full",
|
|
14
|
+
"g_object_steal_data",
|
|
15
|
+
"g_object_steal_qdata",
|
|
16
|
+
"g_param_spec_get_qdata",
|
|
17
|
+
"g_param_spec_set_qdata",
|
|
18
|
+
"g_param_spec_set_qdata_full",
|
|
19
|
+
"g_param_spec_steal_qdata",
|
|
20
|
+
"g_ref_string_acquire",
|
|
21
|
+
"g_ref_string_length",
|
|
22
|
+
"g_ref_string_new",
|
|
23
|
+
"g_ref_string_new_intern",
|
|
24
|
+
"g_ref_string_new_len",
|
|
25
|
+
"g_ref_string_release",
|
|
26
|
+
"g_stpcpy",
|
|
27
|
+
"g_strcanon",
|
|
28
|
+
"g_strchomp",
|
|
29
|
+
"g_strchug",
|
|
30
|
+
"g_strdelimit",
|
|
31
|
+
"g_strdown",
|
|
32
|
+
"g_strreverse",
|
|
33
|
+
"g_strup",
|
|
34
|
+
"g_thread_exit",
|
|
35
|
+
"g_thread_new",
|
|
36
|
+
"g_thread_try_new",
|
|
37
|
+
]);
|
|
38
|
+
export { HIDDEN_SYMBOLS };
|
|
39
|
+
//# sourceMappingURL=hidden-symbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hidden-symbols.js","sourceRoot":"","sources":["../../src/gir/hidden-symbols.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAgB,IAAI,GAAG,CAAC;IACxC,iCAAiC;IACjC,gBAAgB;IAChB,iBAAiB;IACjB,2BAA2B;IAC3B,sBAAsB;IACtB,uBAAuB;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;IACnB,wBAAwB;IACxB,oBAAoB;IACpB,yBAAyB;IACzB,qBAAqB;IACrB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;IACxB,6BAA6B;IAC7B,0BAA0B;IAC1B,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,yBAAyB;IACzB,sBAAsB;IACtB,sBAAsB;IACtB,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,cAAc;IACd,WAAW;IACX,cAAc;IACd,SAAS;IACT,eAAe;IACf,cAAc;IACd,kBAAkB;CACrB,CAAC,CAAC;AAEH,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["const HIDDEN_SYMBOLS: Set<string> = new Set([\n \"g_action_map_add_action_entries\",\n \"g_ascii_dtostr\",\n \"g_ascii_formatd\",\n \"g_file_info_set_attribute\",\n \"g_file_set_attribute\",\n \"g_log_set_writer_func\",\n \"g_object_get_data\",\n \"g_object_get_qdata\",\n \"g_object_set_data\",\n \"g_object_set_data_full\",\n \"g_object_set_qdata\",\n \"g_object_set_qdata_full\",\n \"g_object_steal_data\",\n \"g_object_steal_qdata\",\n \"g_param_spec_get_qdata\",\n \"g_param_spec_set_qdata\",\n \"g_param_spec_set_qdata_full\",\n \"g_param_spec_steal_qdata\",\n \"g_ref_string_acquire\",\n \"g_ref_string_length\",\n \"g_ref_string_new\",\n \"g_ref_string_new_intern\",\n \"g_ref_string_new_len\",\n \"g_ref_string_release\",\n \"g_stpcpy\",\n \"g_strcanon\",\n \"g_strchomp\",\n \"g_strchug\",\n \"g_strdelimit\",\n \"g_strdown\",\n \"g_strreverse\",\n \"g_strup\",\n \"g_thread_exit\",\n \"g_thread_new\",\n \"g_thread_try_new\",\n]);\n\nexport { HIDDEN_SYMBOLS };\n"]}
|