@gtkx/cli 1.6.0 → 2.0.0-beta.1

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.
Files changed (186) hide show
  1. package/README.md +5 -5
  2. package/dist/codegen/freshness.d.ts.map +1 -1
  3. package/dist/codegen/freshness.js +45 -16
  4. package/dist/codegen/freshness.js.map +1 -1
  5. package/dist/codegen/reference.d.ts.map +1 -1
  6. package/dist/codegen/reference.js +1 -7
  7. package/dist/codegen/reference.js.map +1 -1
  8. package/dist/codegen/report.d.ts.map +1 -1
  9. package/dist/codegen/report.js +5 -16
  10. package/dist/codegen/report.js.map +1 -1
  11. package/dist/codegen/run-codegen.d.ts +3 -5
  12. package/dist/codegen/run-codegen.d.ts.map +1 -1
  13. package/dist/codegen/run-codegen.js +23 -100
  14. package/dist/codegen/run-codegen.js.map +1 -1
  15. package/dist/codegen/store-resolver.d.ts +0 -1
  16. package/dist/codegen/store-resolver.d.ts.map +1 -1
  17. package/dist/codegen/store-resolver.js +8 -17
  18. package/dist/codegen/store-resolver.js.map +1 -1
  19. package/dist/commands/docs.d.ts.map +1 -1
  20. package/dist/commands/docs.js +5 -15
  21. package/dist/commands/docs.js.map +1 -1
  22. package/dist/deploy/freedesktop/copyright.d.ts.map +1 -1
  23. package/dist/deploy/freedesktop/copyright.js +2 -13
  24. package/dist/deploy/freedesktop/copyright.js.map +1 -1
  25. package/dist/deploy/freedesktop/xml.d.ts.map +1 -1
  26. package/dist/deploy/freedesktop/xml.js +21 -25
  27. package/dist/deploy/freedesktop/xml.js.map +1 -1
  28. package/dist/deploy/node-runtime/license.d.ts.map +1 -1
  29. package/dist/deploy/node-runtime/license.js +2 -9
  30. package/dist/deploy/node-runtime/license.js.map +1 -1
  31. package/dist/deploy/notices/packages.d.ts.map +1 -1
  32. package/dist/deploy/notices/packages.js +3 -10
  33. package/dist/deploy/notices/packages.js.map +1 -1
  34. package/dist/deploy/payload/copy-tree.d.ts.map +1 -1
  35. package/dist/deploy/payload/copy-tree.js +3 -3
  36. package/dist/deploy/payload/copy-tree.js.map +1 -1
  37. package/dist/deploy/payload/stage.d.ts.map +1 -1
  38. package/dist/deploy/payload/stage.js +1 -3
  39. package/dist/deploy/payload/stage.js.map +1 -1
  40. package/dist/deploy/settings/build-manifest.d.ts.map +1 -1
  41. package/dist/deploy/settings/build-manifest.js +4 -15
  42. package/dist/deploy/settings/build-manifest.js.map +1 -1
  43. package/dist/deploy/settings/libraries.d.ts.map +1 -1
  44. package/dist/deploy/settings/libraries.js +2 -19
  45. package/dist/deploy/settings/libraries.js.map +1 -1
  46. package/dist/deploy/settings/paths.d.ts +1 -2
  47. package/dist/deploy/settings/paths.d.ts.map +1 -1
  48. package/dist/deploy/settings/paths.js +5 -15
  49. package/dist/deploy/settings/paths.js.map +1 -1
  50. package/dist/deploy/settings/screenshots.d.ts.map +1 -1
  51. package/dist/deploy/settings/screenshots.js +6 -31
  52. package/dist/deploy/settings/screenshots.js.map +1 -1
  53. package/dist/deploy/targets/flatpak-pnpm.js +4 -4
  54. package/dist/deploy/targets/flatpak-pnpm.js.map +1 -1
  55. package/dist/deploy/targets/flatpak-source.d.ts.map +1 -1
  56. package/dist/deploy/targets/flatpak-source.js +4 -4
  57. package/dist/deploy/targets/flatpak-source.js.map +1 -1
  58. package/dist/deploy/targets/flatpak-sources.js +1 -1
  59. package/dist/deploy/targets/flatpak-sources.js.map +1 -1
  60. package/dist/dev/runner-main.d.ts.map +1 -1
  61. package/dist/dev/runner-main.js +1 -2
  62. package/dist/dev/runner-main.js.map +1 -1
  63. package/dist/dev/schema-dir.d.ts +1 -1
  64. package/dist/dev/schema-dir.d.ts.map +1 -1
  65. package/dist/dev/schema-dir.js +2 -4
  66. package/dist/dev/schema-dir.js.map +1 -1
  67. package/dist/i18n/catalogs.d.ts.map +1 -1
  68. package/dist/i18n/catalogs.js +2 -1
  69. package/dist/i18n/catalogs.js.map +1 -1
  70. package/dist/i18n/metadata-templates.d.ts.map +1 -1
  71. package/dist/i18n/metadata-templates.js +2 -1
  72. package/dist/i18n/metadata-templates.js.map +1 -1
  73. package/dist/i18n/source-messages.d.ts +3 -21
  74. package/dist/i18n/source-messages.d.ts.map +1 -1
  75. package/dist/i18n/source-messages.js +66 -85
  76. package/dist/i18n/source-messages.js.map +1 -1
  77. package/dist/i18n/types.d.ts +6 -7
  78. package/dist/i18n/types.d.ts.map +1 -1
  79. package/dist/i18n/types.js +83 -96
  80. package/dist/i18n/types.js.map +1 -1
  81. package/dist/internal/docs-elements.js +2 -2
  82. package/dist/internal/docs-elements.js.map +1 -1
  83. package/dist/internal/icon-path.d.ts.map +1 -1
  84. package/dist/internal/icon-path.js +5 -16
  85. package/dist/internal/icon-path.js.map +1 -1
  86. package/dist/internal/source-imports.d.ts.map +1 -1
  87. package/dist/internal/source-imports.js +10 -41
  88. package/dist/internal/source-imports.js.map +1 -1
  89. package/dist/settings/render.d.ts +0 -1
  90. package/dist/settings/render.d.ts.map +1 -1
  91. package/dist/settings/render.js +1 -11
  92. package/dist/settings/render.js.map +1 -1
  93. package/dist/settings/schema.d.ts +2 -2
  94. package/dist/settings/schema.d.ts.map +1 -1
  95. package/dist/settings/schema.js +21 -62
  96. package/dist/settings/schema.js.map +1 -1
  97. package/dist/vite-plugins/asset-imports.d.ts +1 -2
  98. package/dist/vite-plugins/asset-imports.d.ts.map +1 -1
  99. package/dist/vite-plugins/asset-imports.js +19 -32
  100. package/dist/vite-plugins/asset-imports.js.map +1 -1
  101. package/dist/vite-plugins/asset-specifier.d.ts +1 -3
  102. package/dist/vite-plugins/asset-specifier.d.ts.map +1 -1
  103. package/dist/vite-plugins/asset-specifier.js +1 -4
  104. package/dist/vite-plugins/asset-specifier.js.map +1 -1
  105. package/dist/vite-plugins/i18n.d.ts.map +1 -1
  106. package/dist/vite-plugins/i18n.js +2 -1
  107. package/dist/vite-plugins/i18n.js.map +1 -1
  108. package/dist/vite-plugins/index.d.ts.map +1 -1
  109. package/dist/vite-plugins/index.js +2 -4
  110. package/dist/vite-plugins/index.js.map +1 -1
  111. package/dist/vite-plugins/resources.d.ts.map +1 -1
  112. package/dist/vite-plugins/resources.js +32 -97
  113. package/dist/vite-plugins/resources.js.map +1 -1
  114. package/dist/vite-plugins/settings-worker-env.d.ts.map +1 -1
  115. package/dist/vite-plugins/settings-worker-env.js +2 -4
  116. package/dist/vite-plugins/settings-worker-env.js.map +1 -1
  117. package/dist/vite-plugins/settings.d.ts +1 -2
  118. package/dist/vite-plugins/settings.d.ts.map +1 -1
  119. package/dist/vite-plugins/settings.js +8 -14
  120. package/dist/vite-plugins/settings.js.map +1 -1
  121. package/dist/vite-plugins/undeclared-library.d.ts.map +1 -1
  122. package/dist/vite-plugins/undeclared-library.js +10 -13
  123. package/dist/vite-plugins/undeclared-library.js.map +1 -1
  124. package/dist/vite-plugins/worker.d.ts.map +1 -1
  125. package/dist/vite-plugins/worker.js +0 -1
  126. package/dist/vite-plugins/worker.js.map +1 -1
  127. package/package.json +21 -15
  128. package/src/codegen/freshness.ts +66 -17
  129. package/src/codegen/reference.ts +1 -8
  130. package/src/codegen/report.ts +5 -21
  131. package/src/codegen/run-codegen.ts +28 -145
  132. package/src/codegen/store-resolver.ts +8 -24
  133. package/src/commands/docs.ts +5 -17
  134. package/src/deploy/freedesktop/copyright.ts +2 -14
  135. package/src/deploy/freedesktop/xml.ts +24 -32
  136. package/src/deploy/node-runtime/license.ts +2 -8
  137. package/src/deploy/notices/packages.ts +3 -11
  138. package/src/deploy/payload/copy-tree.ts +3 -4
  139. package/src/deploy/payload/stage.ts +2 -6
  140. package/src/deploy/settings/build-manifest.ts +4 -16
  141. package/src/deploy/settings/libraries.ts +1 -22
  142. package/src/deploy/settings/paths.ts +6 -16
  143. package/src/deploy/settings/screenshots.ts +8 -46
  144. package/src/deploy/targets/flatpak-pnpm.ts +4 -4
  145. package/src/deploy/targets/flatpak-source.ts +4 -4
  146. package/src/deploy/targets/flatpak-sources.ts +1 -1
  147. package/src/dev/runner-main.ts +1 -2
  148. package/src/dev/schema-dir.ts +2 -4
  149. package/src/i18n/catalogs.ts +2 -1
  150. package/src/i18n/metadata-templates.ts +2 -1
  151. package/src/i18n/source-messages.ts +77 -115
  152. package/src/i18n/types.ts +97 -131
  153. package/src/internal/docs-elements.ts +2 -2
  154. package/src/internal/icon-path.ts +6 -19
  155. package/src/internal/source-imports.ts +14 -50
  156. package/src/settings/render.ts +1 -13
  157. package/src/settings/schema.ts +19 -81
  158. package/src/vite-plugins/asset-imports.ts +20 -44
  159. package/src/vite-plugins/asset-specifier.ts +0 -5
  160. package/src/vite-plugins/i18n.ts +2 -1
  161. package/src/vite-plugins/index.ts +2 -4
  162. package/src/vite-plugins/resources.ts +37 -140
  163. package/src/vite-plugins/settings-worker-env.ts +2 -4
  164. package/src/vite-plugins/settings.ts +11 -20
  165. package/src/vite-plugins/undeclared-library.ts +14 -20
  166. package/src/vite-plugins/worker.ts +0 -1
  167. package/dist/i18n/binding-extractor.d.ts +0 -30
  168. package/dist/i18n/binding-extractor.d.ts.map +0 -1
  169. package/dist/i18n/binding-extractor.js +0 -1324
  170. package/dist/i18n/binding-extractor.js.map +0 -1
  171. package/dist/i18n/extractor-plugin.d.ts +0 -8
  172. package/dist/i18n/extractor-plugin.d.ts.map +0 -1
  173. package/dist/i18n/extractor-plugin.js +0 -247
  174. package/dist/i18n/extractor-plugin.js.map +0 -1
  175. package/dist/internal/data-dir.d.ts +0 -4
  176. package/dist/internal/data-dir.d.ts.map +0 -1
  177. package/dist/internal/data-dir.js +0 -52
  178. package/dist/internal/data-dir.js.map +0 -1
  179. package/dist/vite-plugins/animated.d.ts +0 -5
  180. package/dist/vite-plugins/animated.d.ts.map +0 -1
  181. package/dist/vite-plugins/animated.js +0 -325
  182. package/dist/vite-plugins/animated.js.map +0 -1
  183. package/src/i18n/binding-extractor.ts +0 -1969
  184. package/src/i18n/extractor-plugin.ts +0 -413
  185. package/src/internal/data-dir.ts +0 -70
  186. package/src/vite-plugins/animated.ts +0 -486
package/README.md CHANGED
@@ -13,7 +13,7 @@
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/create-gtkx"><img src="https://img.shields.io/npm/v/create-gtkx?color=cb3837&logo=npm&label=create-gtkx" alt="npm version" /></a>
15
15
  <a href="https://www.npmjs.com/package/create-gtkx"><img src="https://img.shields.io/npm/dm/create-gtkx?color=cb3837&logo=npm&label=downloads" alt="npm downloads" /></a>
16
- <img src="https://img.shields.io/badge/node-%E2%89%A524-339933?logo=node.js&logoColor=white" alt="Node >= 24" />
16
+ <img src="https://img.shields.io/badge/node-%E2%89%A526.7-339933?logo=node.js&logoColor=white" alt="Node >= 26.7" />
17
17
  <a href="https://github.com/gtkx-org/gtkx/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MPL--2.0-blue.svg" alt="License: MPL-2.0" /></a>
18
18
  <a href="https://github.com/gtkx-org/gtkx/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/gtkx-org/gtkx/ci.yml?branch=main&logo=github&label=CI" alt="CI status" /></a>
19
19
  <img src="https://img.shields.io/badge/TypeScript-strict-3178c6?logo=typescript&logoColor=white" alt="TypeScript" />
@@ -116,7 +116,7 @@ At runtime, the native Rust core calls straight into the system GTK4, Adwaita, a
116
116
 
117
117
  ## Quick start
118
118
 
119
- GTKX is Linux-only and needs Node.js 24 or later. See [Requirements](#requirements).
119
+ GTKX is Linux-only and needs Node.js 26.7 or later. See [Requirements](#requirements).
120
120
 
121
121
  Scaffold a new app with the `create-gtkx` initializer:
122
122
 
@@ -145,8 +145,8 @@ The documentation at **[gtkx.dev](https://gtkx.dev)** includes a step-by-step tu
145
145
 
146
146
  GTKX is Linux-only. You need:
147
147
 
148
- - Linux with the GTK4 (4.20 or later) and GLib development libraries, plus Adwaita (1.8 or later) once your project binds `Adw-1`
149
- - Node.js 24 or later
148
+ - Linux with the GTK4 (4.20 or later), Adwaita (1.8 or later), and GLib development libraries
149
+ - Node.js 26.7 or later
150
150
 
151
151
  The `@gtkx/native` addon ships prebuilt for x64 and arm64 glibc Linux; other targets need to build it from the GTKX repository, which requires a Rust toolchain.
152
152
 
@@ -167,7 +167,7 @@ GTKX is stable and ready for production use.
167
167
 
168
168
  ## Contributing
169
169
 
170
- Contributions are welcome. See [CONTRIBUTING.md](https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md), the [Code of Conduct](https://github.com/gtkx-org/gtkx/blob/main/CODE_OF_CONDUCT.md), and the [security policy](https://github.com/gtkx-org/gtkx/blob/main/SECURITY.md). Building the repo needs Node.js 24 or later, pnpm, and a Rust toolchain.
170
+ Contributions are welcome. See [CONTRIBUTING.md](https://github.com/gtkx-org/gtkx/blob/main/CONTRIBUTING.md), the [Code of Conduct](https://github.com/gtkx-org/gtkx/blob/main/CODE_OF_CONDUCT.md), and the [security policy](https://github.com/gtkx-org/gtkx/blob/main/SECURITY.md). Building the repo needs Node.js 26.7 or later, pnpm, and a Rust toolchain.
171
171
 
172
172
  ## License
173
173
 
@@ -1 +1 @@
1
- {"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAE7E,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAIF,QAAA,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,aAM3D,CAAC;AA+BF,QAAA,MAAM,cAAc,GAAI,QAAQ,aAAa,KAAG,OAM/C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,KAAK,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AAK7E,KAAK,aAAa,GAAG;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACvB,CAAC;AAKF,QAAA,MAAM,oBAAoB,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,aAM3D,CAAC;AA6EF,QAAA,MAAM,cAAc,GAAI,QAAQ,aAAa,KAAG,OAM/C,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,CAAC"}
@@ -1,35 +1,64 @@
1
1
  import { resolveGirPath, resolveLibraries } from "@gtkx/codegen";
2
- import { resolveFuture } from "@gtkx/config/internal";
3
- import { existsSync } from "node:fs";
4
- import { join } from "node:path";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { basename, dirname, join } from "node:path";
5
4
  import { resolveCodegenStore } from "./store-resolver.js";
6
- const REACT_GENERATED_MODULES = ["index.js", "metadata.js", join("gtk", "gtk.js")];
5
+ const PACKAGE_EXPORT = "./package.json";
6
+ const JSX_REQUIRED_EXPORTS = [PACKAGE_EXPORT, "./metadata", "./gtk", "./adw"];
7
7
  const resolveCodegenInputs = (cwd, config) => {
8
8
  const girPath = resolveGirPath(config.girPath);
9
- const libraries = resolveLibraries(config.libraries, girPath, resolveFuture(config.future).isAdwaitaDefault);
9
+ const libraries = resolveLibraries(config.libraries);
10
10
  const store = resolveCodegenStore(cwd);
11
11
  return { girPath, libraries, store };
12
12
  };
13
- const namespaceBarrelPath = (giStoreDir, library) => {
13
+ const namespaceExport = (library) => {
14
14
  const separator = library.indexOf("-");
15
15
  const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();
16
- return join(giStoreDir, namespace, "index.js");
16
+ return `./${namespace}`;
17
17
  };
18
- const hasManifest = (storeDir) => existsSync(join(storeDir, "package.json"));
19
- const isGiStoreStale = (store, libraries) => {
20
- if (!hasManifest(store.giStoreDir)) {
21
- return true;
18
+ const targetFiles = (target) => typeof target === "string" ? [target] : Object.values(target).flatMap((nested) => targetFiles(nested));
19
+ const indexExtension = (target) => {
20
+ if (target.endsWith("/index.d.ts")) {
21
+ return ".d.ts";
22
+ }
23
+ return target.endsWith("/index.js") ? ".js" : undefined;
24
+ };
25
+ const implementationFile = (target) => {
26
+ const extension = indexExtension(target);
27
+ if (extension === undefined) {
28
+ return undefined;
22
29
  }
23
- return libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)));
30
+ const directory = dirname(target);
31
+ return join(directory, `${basename(directory)}${extension}`);
32
+ };
33
+ const generatedFiles = (exports) => Object.values(exports)
34
+ .flatMap((target) => targetFiles(target))
35
+ .flatMap((target) => {
36
+ const implementation = implementationFile(target);
37
+ return implementation === undefined ? [target] : [target, implementation];
38
+ });
39
+ const hasStoreExports = (storeDir, required, forbidden = []) => {
40
+ const manifestPath = join(storeDir, "package.json");
41
+ if (!existsSync(manifestPath)) {
42
+ return false;
43
+ }
44
+ const manifest = JSON.parse(readFileSync(manifestPath, "utf8"));
45
+ const exports = manifest.exports;
46
+ if (exports === undefined || required.some((key) => !Object.hasOwn(exports, key)) ||
47
+ forbidden.some((key) => Object.hasOwn(exports, key))) {
48
+ return false;
49
+ }
50
+ const files = generatedFiles(exports);
51
+ return files.length > 0 && files.every((file) => existsSync(join(storeDir, file)));
52
+ };
53
+ const isGiStoreStale = (store, libraries) => {
54
+ const required = [PACKAGE_EXPORT, ...libraries.map((library) => namespaceExport(library))];
55
+ return !hasStoreExports(store.giStoreDir, required);
24
56
  };
25
57
  const isReactStoreStale = (store) => {
26
58
  if (store.react === null) {
27
59
  return false;
28
60
  }
29
- if (!hasManifest(store.jsxStoreDir)) {
30
- return true;
31
- }
32
- return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));
61
+ return !hasStoreExports(store.jsxStoreDir, JSX_REQUIRED_EXPORTS, ["."]);
33
62
  };
34
63
  const isCodegenStale = (inputs) => {
35
64
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ7E,MAAM,uBAAuB,GAAa,CAAC,UAAU,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE7F,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,MAAc,EAAiB,EAAE;IACxE,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC7G,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAE,OAAe,EAAU,EAAE;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAE3F,OAAO,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAE9F,MAAM,cAAc,GAAG,CAAC,KAAmB,EAAE,SAAmB,EAAW,EAAE;IACzE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAW,EAAE;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAqB,EAAW,EAAE;IACtD,IAAI,CAAC;QACD,OAAO,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7F,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAsB,CAAC","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { resolveFuture } from \"@gtkx/config/internal\";\nimport { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { type CodegenStore, resolveCodegenStore } from \"./store-resolver.js\";\n\ntype CodegenInputs = {\n girPath: string[];\n libraries: string[];\n store: CodegenStore;\n};\n\nconst REACT_GENERATED_MODULES: string[] = [\"index.js\", \"metadata.js\", join(\"gtk\", \"gtk.js\")];\n\nconst resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {\n const girPath = resolveGirPath(config.girPath);\n const libraries = resolveLibraries(config.libraries, girPath, resolveFuture(config.future).isAdwaitaDefault);\n const store = resolveCodegenStore(cwd);\n\n return { girPath, libraries, store };\n};\n\nconst namespaceBarrelPath = (giStoreDir: string, library: string): string => {\n const separator = library.indexOf(\"-\");\n const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();\n\n return join(giStoreDir, namespace, \"index.js\");\n};\n\nconst hasManifest = (storeDir: string): boolean => existsSync(join(storeDir, \"package.json\"));\n\nconst isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {\n if (!hasManifest(store.giStoreDir)) {\n return true;\n }\n\n return libraries.some((library) => !existsSync(namespaceBarrelPath(store.giStoreDir, library)));\n};\n\nconst isReactStoreStale = (store: CodegenStore): boolean => {\n if (store.react === null) {\n return false;\n }\n\n if (!hasManifest(store.jsxStoreDir)) {\n return true;\n }\n\n return REACT_GENERATED_MODULES.some((module) => !existsSync(join(store.jsxStoreDir, module)));\n};\n\nconst isCodegenStale = (inputs: CodegenInputs): boolean => {\n try {\n return isGiStoreStale(inputs.store, inputs.libraries) || isReactStoreStale(inputs.store);\n } catch {\n return true;\n }\n};\n\nexport { resolveCodegenInputs, isCodegenStale, type CodegenInputs };\n"]}
1
+ {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/codegen/freshness.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { resolveGirPath, resolveLibraries } from \"@gtkx/codegen\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { basename, dirname, join } from \"node:path\";\nimport { type CodegenStore, resolveCodegenStore } from \"./store-resolver.js\";\n\ntype ExportTarget = string | { [condition: string]: ExportTarget };\ntype StoreExports = Record<string, ExportTarget>;\n\ntype CodegenInputs = {\n girPath: string[];\n libraries: string[];\n store: CodegenStore;\n};\n\nconst PACKAGE_EXPORT = \"./package.json\";\nconst JSX_REQUIRED_EXPORTS = [PACKAGE_EXPORT, \"./metadata\", \"./gtk\", \"./adw\"];\n\nconst resolveCodegenInputs = (cwd: string, config: Config): CodegenInputs => {\n const girPath = resolveGirPath(config.girPath);\n const libraries = resolveLibraries(config.libraries);\n const store = resolveCodegenStore(cwd);\n\n return { girPath, libraries, store };\n};\n\nconst namespaceExport = (library: string): string => {\n const separator = library.indexOf(\"-\");\n const namespace = (separator === -1 ? library : library.slice(0, separator)).toLowerCase();\n\n return `./${namespace}`;\n};\n\nconst targetFiles = (target: ExportTarget): string[] =>\n typeof target === \"string\" ? [target] : Object.values(target).flatMap((nested) => targetFiles(nested));\n\nconst indexExtension = (target: string): string | undefined => {\n if (target.endsWith(\"/index.d.ts\")) {\n return \".d.ts\";\n }\n\n return target.endsWith(\"/index.js\") ? \".js\" : undefined;\n};\n\nconst implementationFile = (target: string): string | undefined => {\n const extension = indexExtension(target);\n\n if (extension === undefined) {\n return undefined;\n }\n\n const directory = dirname(target);\n\n return join(directory, `${basename(directory)}${extension}`);\n};\n\nconst generatedFiles = (exports: StoreExports): string[] =>\n Object.values(exports)\n .flatMap((target) => targetFiles(target))\n .flatMap((target) => {\n const implementation = implementationFile(target);\n\n return implementation === undefined ? [target] : [target, implementation];\n });\n\nconst hasStoreExports = (storeDir: string, required: string[], forbidden: string[] = []): boolean => {\n const manifestPath = join(storeDir, \"package.json\");\n\n if (!existsSync(manifestPath)) {\n return false;\n }\n\n const manifest = JSON.parse(readFileSync(manifestPath, \"utf8\")) as {\n exports?: StoreExports;\n };\n const exports = manifest.exports;\n\n if (exports === undefined || required.some((key) => !Object.hasOwn(exports, key)) ||\n forbidden.some((key) => Object.hasOwn(exports, key))) {\n return false;\n }\n\n const files = generatedFiles(exports);\n\n return files.length > 0 && files.every((file) => existsSync(join(storeDir, file)));\n};\n\nconst isGiStoreStale = (store: CodegenStore, libraries: string[]): boolean => {\n const required = [PACKAGE_EXPORT, ...libraries.map((library) => namespaceExport(library))];\n\n return !hasStoreExports(store.giStoreDir, required);\n};\n\nconst isReactStoreStale = (store: CodegenStore): boolean => {\n if (store.react === null) {\n return false;\n }\n\n return !hasStoreExports(store.jsxStoreDir, JSX_REQUIRED_EXPORTS, [\".\"]);\n};\n\nconst isCodegenStale = (inputs: CodegenInputs): boolean => {\n try {\n return isGiStoreStale(inputs.store, inputs.libraries) || isReactStoreStale(inputs.store);\n } catch {\n return true;\n }\n};\n\nexport { resolveCodegenInputs, isCodegenStale, type CodegenInputs };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/codegen/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,KAAK,qBAAqB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,eAAe,GAAG;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,cAAc,oBAAoB,CAAC;AAKzC,QAAA,MAAM,cAAc,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,eAAe,CA8BrF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/codegen/reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAO3C,KAAK,qBAAqB,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,eAAe,GAAG;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,QAAA,MAAM,cAAc,oBAAoB,CAAC;AAGzC,QAAA,MAAM,cAAc,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,eAAe,CAyBrF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,CAAC"}
@@ -5,7 +5,6 @@ import { join } from "node:path";
5
5
  import { resolveDocsElements } from "../internal/docs-elements.js";
6
6
  const REFERENCE_PATH = ".gtkx/reference";
7
7
  const SKIPPED = { isRegenerated: false, elements: 0, namespaces: 0 };
8
- const resolveReferenceDir = (root) => join(root, ".gtkx", "reference");
9
8
  const writeReference = async (options) => {
10
9
  const { root, config, girPath, libraries } = options;
11
10
  if (!isAgentReferenceEnabled(config) || girPath.length === 0 || libraries.length === 0) {
@@ -15,17 +14,12 @@ const writeReference = async (options) => {
15
14
  const { isRegenerated, namespaces } = writeDocs({
16
15
  libraries,
17
16
  girPath,
18
- outDir: resolveReferenceDir(root),
17
+ outDir: join(root, REFERENCE_PATH),
19
18
  basePath: REFERENCE_PATH,
20
19
  linkStyle: "file",
21
20
  props: builtin.props,
22
21
  omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),
23
22
  isForced: options.isForced === true,
24
- isByteArrayTyped: config.future?.v2ByteArrays === true,
25
- isValueUnwrapped: config.future?.v2ValueReturns === true,
26
- isFinishTrimmed: config.future?.v2FinishResults === true,
27
- isInoutInPlace: config.future?.v2InoutReturns === true,
28
- isTreeShaken: config.future?.v2TreeShaking === true,
29
23
  });
30
24
  return {
31
25
  isRegenerated,
@@ -1 +1 @@
1
- {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/codegen/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAgBnE,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,OAAO,GAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAEtF,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAEvF,MAAM,cAAc,GAAG,KAAK,EAAE,OAA8B,EAA4B,EAAE;IACtF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAErD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrF,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAC5C,SAAS;QACT,OAAO;QACP,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC;QACjC,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3F,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI;QACnC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI;QACtD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI;QACxD,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI;QACxD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI;QACtD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI;KACtD,CAAC,CAAC;IAEH,OAAO;QACH,aAAa;QACb,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,UAAU,EAAE,UAAU,CAAC,MAAM;KAChC,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAwB,CAAC","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { mergeOmittedProps } from \"@gtkx/codegen\";\nimport { writeDocs } from \"@gtkx/codegen/internal\";\nimport { isAgentReferenceEnabled, resolveOmittedProps } from \"@gtkx/config/internal\";\nimport { join } from \"node:path\";\nimport { resolveDocsElements } from \"../internal/docs-elements.js\";\n\ntype WriteReferenceOptions = {\n root: string;\n config: Config;\n girPath: string[];\n libraries: string[];\n isForced?: boolean;\n};\n\ntype ReferenceResult = {\n isRegenerated: boolean;\n elements: number;\n namespaces: number;\n};\n\nconst REFERENCE_PATH = \".gtkx/reference\";\nconst SKIPPED: ReferenceResult = { isRegenerated: false, elements: 0, namespaces: 0 };\n\nconst resolveReferenceDir = (root: string): string => join(root, \".gtkx\", \"reference\");\n\nconst writeReference = async (options: WriteReferenceOptions): Promise<ReferenceResult> => {\n const { root, config, girPath, libraries } = options;\n\n if (!isAgentReferenceEnabled(config) || girPath.length === 0 || libraries.length === 0) {\n return SKIPPED;\n }\n\n const builtin = await resolveDocsElements(root);\n\n const { isRegenerated, namespaces } = writeDocs({\n libraries,\n girPath,\n outDir: resolveReferenceDir(root),\n basePath: REFERENCE_PATH,\n linkStyle: \"file\",\n props: builtin.props,\n omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),\n isForced: options.isForced === true,\n isByteArrayTyped: config.future?.v2ByteArrays === true,\n isValueUnwrapped: config.future?.v2ValueReturns === true,\n isFinishTrimmed: config.future?.v2FinishResults === true,\n isInoutInPlace: config.future?.v2InoutReturns === true,\n isTreeShaken: config.future?.v2TreeShaking === true,\n });\n\n return {\n isRegenerated,\n elements: namespaces.reduce((total, namespace) => total + namespace.elements.length, 0),\n namespaces: namespaces.length,\n };\n};\n\nexport { REFERENCE_PATH, writeReference, type ReferenceResult };\n"]}
1
+ {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/codegen/reference.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAgBnE,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,OAAO,GAAoB,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAEtF,MAAM,cAAc,GAAG,KAAK,EAAE,OAA8B,EAA4B,EAAE;IACtF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAErD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrF,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;QAC5C,SAAS;QACT,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC;QAClC,QAAQ,EAAE,cAAc;QACxB,SAAS,EAAE,MAAM;QACjB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3F,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,IAAI;KACtC,CAAC,CAAC;IAEH,OAAO;QACH,aAAa;QACb,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,UAAU,EAAE,UAAU,CAAC,MAAM;KAChC,CAAC;AACN,CAAC,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAwB,CAAC","sourcesContent":["import type { Config } from \"@gtkx/config\";\nimport { mergeOmittedProps } from \"@gtkx/codegen\";\nimport { writeDocs } from \"@gtkx/codegen/internal\";\nimport { isAgentReferenceEnabled, resolveOmittedProps } from \"@gtkx/config/internal\";\nimport { join } from \"node:path\";\nimport { resolveDocsElements } from \"../internal/docs-elements.js\";\n\ntype WriteReferenceOptions = {\n root: string;\n config: Config;\n girPath: string[];\n libraries: string[];\n isForced?: boolean;\n};\n\ntype ReferenceResult = {\n isRegenerated: boolean;\n elements: number;\n namespaces: number;\n};\n\nconst REFERENCE_PATH = \".gtkx/reference\";\nconst SKIPPED: ReferenceResult = { isRegenerated: false, elements: 0, namespaces: 0 };\n\nconst writeReference = async (options: WriteReferenceOptions): Promise<ReferenceResult> => {\n const { root, config, girPath, libraries } = options;\n\n if (!isAgentReferenceEnabled(config) || girPath.length === 0 || libraries.length === 0) {\n return SKIPPED;\n }\n\n const builtin = await resolveDocsElements(root);\n\n const { isRegenerated, namespaces } = writeDocs({\n libraries,\n girPath,\n outDir: join(root, REFERENCE_PATH),\n basePath: REFERENCE_PATH,\n linkStyle: \"file\",\n props: builtin.props,\n omittedProps: mergeOmittedProps(builtin.omittedProps, resolveOmittedProps(config.elements)),\n isForced: options.isForced === true,\n });\n\n return {\n isRegenerated,\n elements: namespaces.reduce((total, namespace) => total + namespace.elements.length, 0),\n namespaces: namespaces.length,\n };\n};\n\nexport { REFERENCE_PATH, writeReference, type ReferenceResult };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmCzD,QAAA,MAAM,mBAAmB,GAAI,QAAQ,gBAAgB,EAAE,SAAS,MAAM,KAAG,MAAM,EAS9E,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmBzD,QAAA,MAAM,mBAAmB,GAAI,QAAQ,gBAAgB,EAAE,SAAS,MAAM,KAAG,MAAM,EAS9E,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,21 +1,10 @@
1
1
  import { REFERENCE_PATH } from "./reference.js";
2
2
  const PREFIX = "codegen: ";
3
- const contextDetails = (result) => {
4
- const details = [];
5
- if (result.configFile) {
6
- details.push(`config=${result.configFile}`);
7
- }
8
- if (result.libraries) {
9
- details.push(`libraries=${result.libraries.join(", ")}`);
10
- }
11
- if (result.girPath) {
12
- details.push(`girPath=${result.girPath.join(":")}`);
13
- }
14
- if (result.future && result.future.length > 0) {
15
- details.push(`future=${result.future.join(", ")}`);
16
- }
17
- return details;
18
- };
3
+ const contextDetails = (result) => [
4
+ `config=${result.configFile}`,
5
+ `libraries=${result.libraries.join(", ")}`,
6
+ `girPath=${result.girPath.join(":")}`,
7
+ ];
19
8
  const referenceDetails = (result) => {
20
9
  if (result.reference?.isRegenerated !== true) {
21
10
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,GAAG,WAAW,CAAC;AAE3B,MAAM,cAAc,GAAG,CAAC,MAAwB,EAAY,EAAE;IAC1D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAwB,EAAY,EAAE;IAC5D,IAAI,MAAM,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,MAAwB,EAAE,OAAe,EAAY,EAAE;IAChF,MAAM,OAAO,GAAG;QACZ,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB;YAClG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,KAAK;QAC9D,GAAG,gBAAgB,CAAC,MAAM,CAAC;KAC9B,CAAC;IAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import type { RunCodegenResult } from \"./run-codegen.js\";\nimport { REFERENCE_PATH } from \"./reference.js\";\n\nconst PREFIX = \"codegen: \";\n\nconst contextDetails = (result: RunCodegenResult): string[] => {\n const details: string[] = [];\n\n if (result.configFile) {\n details.push(`config=${result.configFile}`);\n }\n\n if (result.libraries) {\n details.push(`libraries=${result.libraries.join(\", \")}`);\n }\n\n if (result.girPath) {\n details.push(`girPath=${result.girPath.join(\":\")}`);\n }\n\n if (result.future && result.future.length > 0) {\n details.push(`future=${result.future.join(\", \")}`);\n }\n\n return details;\n};\n\nconst referenceDetails = (result: RunCodegenResult): string[] => {\n if (result.reference?.isRegenerated !== true) {\n return [];\n }\n\n return [`${String(result.reference.elements)} reference pages in ${REFERENCE_PATH}`];\n};\n\nconst formatCodegenResult = (result: RunCodegenResult, totalMs: number): string[] => {\n const details = [\n ...contextDetails(result),\n `${String(result.namespaces)} namespaces, ${String(result.intrinsicElements)} intrinsic elements ` +\n `in ${String(result.duration)}ms (total ${String(totalMs)}ms)`,\n ...referenceDetails(result),\n ];\n\n return details.map((detail) => PREFIX + detail);\n};\n\nexport { formatCodegenResult };\n"]}
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/codegen/report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,GAAG,WAAW,CAAC;AAE3B,MAAM,cAAc,GAAG,CAAC,MAAwB,EAAY,EAAE,CAAC;IAC3D,UAAU,MAAM,CAAC,UAAU,EAAE;IAC7B,aAAa,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;IAC1C,WAAW,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;CACxC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,MAAwB,EAAY,EAAE;IAC5D,IAAI,MAAM,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACd,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAC;AACzF,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,MAAwB,EAAE,OAAe,EAAY,EAAE;IAChF,MAAM,OAAO,GAAG;QACZ,GAAG,cAAc,CAAC,MAAM,CAAC;QACzB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB;YAClG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,KAAK;QAC9D,GAAG,gBAAgB,CAAC,MAAM,CAAC;KAC9B,CAAC;IAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import type { RunCodegenResult } from \"./run-codegen.js\";\nimport { REFERENCE_PATH } from \"./reference.js\";\n\nconst PREFIX = \"codegen: \";\n\nconst contextDetails = (result: RunCodegenResult): string[] => [\n `config=${result.configFile}`,\n `libraries=${result.libraries.join(\", \")}`,\n `girPath=${result.girPath.join(\":\")}`,\n];\n\nconst referenceDetails = (result: RunCodegenResult): string[] => {\n if (result.reference?.isRegenerated !== true) {\n return [];\n }\n\n return [`${String(result.reference.elements)} reference pages in ${REFERENCE_PATH}`];\n};\n\nconst formatCodegenResult = (result: RunCodegenResult, totalMs: number): string[] => {\n const details = [\n ...contextDetails(result),\n `${String(result.namespaces)} namespaces, ${String(result.intrinsicElements)} intrinsic elements ` +\n `in ${String(result.duration)}ms (total ${String(totalMs)}ms)`,\n ...referenceDetails(result),\n ];\n\n return details.map((detail) => PREFIX + detail);\n};\n\nexport { formatCodegenResult };\n"]}
@@ -18,12 +18,10 @@ type RunCodegenResult = {
18
18
  isRegenerated: boolean;
19
19
  namespaces: number;
20
20
  intrinsicElements: number;
21
- notices: string[];
22
21
  duration: number;
23
- girPath?: string[] | undefined;
24
- configFile?: string | undefined;
25
- libraries?: string[] | undefined;
26
- future?: string[] | undefined;
22
+ girPath: string[];
23
+ configFile: string;
24
+ libraries: string[];
27
25
  reference?: ReferenceResult | undefined;
28
26
  };
29
27
  type EnsureGeneratedOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAqBvD,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,qBAAqB,CAAC;AAEpG,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC3C,CAAC;AAYF,KAAK,sBAAsB,GAAG;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD,CAAC;AAkJF,QAAA,MAAM,UAAU,GAAU,UAAS,iBAAsB,KAAG,OAAO,CAAC,gBAAgB,CA2CnF,CAAC;AA4BF,QAAA,MAAM,iBAAiB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAuEF,QAAA,MAAM,iBAAiB,GACnB,SAAS,cAAc,EACvB,UAAS,sBAA2B,KACrC,OAAO,CAAC,OAAO,CAAuE,CAAC;AAG1F,QAAA,MAAM,eAAe,GAAU,KAAK,MAAM,EAAE,UAAS,sBAA2B,KAAG,OAAO,CAAC,OAAO,CACS,CAAC;AAE5G,QAAA,MAAM,kBAAkB,GACpB,KAAK,MAAM,EACX,OAAO,MAAM,KACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAS9D,CAAC;AAEF,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,GACxB,CAAC"}
1
+ {"version":3,"file":"run-codegen.d.ts","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAiBvD,OAAO,EAAE,KAAK,aAAa,EAAwC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,KAAK,eAAe,EAAkB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,KAAK,cAAc,EAA4C,MAAM,qBAAqB,CAAC;AAEpG,KAAK,iBAAiB,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD,CAAC;AAEF,KAAK,YAAY,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC3C,CAAC;AAWF,KAAK,sBAAsB,GAAG;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpD,CAAC;AAsEF,QAAA,MAAM,UAAU,GAAU,UAAS,iBAAsB,KAAG,OAAO,CAAC,gBAAgB,CAuCnF,CAAC;AAsBF,QAAA,MAAM,iBAAiB,GAAU,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC,OAAO,CAQ5E,CAAC;AAoDF,QAAA,MAAM,iBAAiB,GACnB,SAAS,cAAc,EACvB,UAAS,sBAA2B,KACrC,OAAO,CAAC,OAAO,CAAuE,CAAC;AAG1F,QAAA,MAAM,eAAe,GAAU,KAAK,MAAM,EAAE,UAAS,sBAA2B,KAAG,OAAO,CAAC,OAAO,CACS,CAAC;AAE5G,QAAA,MAAM,kBAAkB,GACpB,KAAK,MAAM,EACX,OAAO,MAAM,KACd,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAS9D,CAAC;AAEF,OAAO,EACH,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,gBAAgB,GACxB,CAAC"}
@@ -1,15 +1,14 @@
1
1
  import { runCodegen as runCodegenCore } from "@gtkx/codegen";
2
- import { getShadowingStorePaths, LIBRARIES_WILDCARD, redundantLibraries, sweepProjectStaging, } from "@gtkx/codegen/internal";
2
+ import { getShadowingStorePaths, sweepProjectStaging } from "@gtkx/codegen/internal";
3
3
  import { loadConfig } from "@gtkx/config";
4
- import { isAgentRulesEnabled, resolveElementComponents, resolveElementProps, resolveFuture, resolveLazyElements, resolveOmittedProps, unknownFutureKeys, } from "@gtkx/config/internal";
5
- import { info, warn } from "@gtkx/utils";
4
+ import { isAgentRulesEnabled, resolveElementComponents, resolveElementProps, resolveLazyElements, resolveOmittedProps, } from "@gtkx/config/internal";
5
+ import { info } from "@gtkx/utils";
6
6
  import { existsSync, rmSync } from "node:fs";
7
7
  import { join, resolve } from "node:path";
8
8
  import { resolveCatalogProject, synchronizeCatalogs } from "../i18n/catalogs.js";
9
9
  import { extractSourceCatalog } from "../i18n/source-messages.js";
10
- import { emitI18nTypes } from "../i18n/types.js";
10
+ import { clearI18nTypes, emitI18nTypes } from "../i18n/types.js";
11
11
  import { upsertAgentRules } from "../internal/agent-rules.js";
12
- import { resolveDataDir } from "../internal/data-dir.js";
13
12
  import { discoverSourceFiles } from "../internal/source-imports.js";
14
13
  import { emitSchemaEnv } from "../settings/schema.js";
15
14
  import { isCodegenStale, resolveCodegenInputs } from "./freshness.js";
@@ -27,14 +26,9 @@ const removeShadowingStores = (cwd) => {
27
26
  sweepProjectStaging(cwd);
28
27
  removeStores(getShadowingStorePaths(cwd));
29
28
  };
30
- const codegenOptions = ({ store, libraries, girPath, elements, future }) => ({
29
+ const codegenOptions = ({ store, libraries, girPath, elements }) => ({
31
30
  libraries,
32
31
  girPath,
33
- isByteArrayTyped: future.isByteArrayTyped,
34
- isValueUnwrapped: future.isValueUnwrapped,
35
- isFinishTrimmed: future.isFinishTrimmed,
36
- isInoutInPlace: future.isInoutInPlace,
37
- isTreeShaken: future.isTreeShaken,
38
32
  gi: {
39
33
  storeDir: store.giStoreDir,
40
34
  linkDir: store.giLinkDir,
@@ -47,76 +41,25 @@ const codegenOptions = ({ store, libraries, girPath, elements, future }) => ({
47
41
  linkDir: store.jsxLinkDir,
48
42
  version: store.react.version,
49
43
  },
50
- reactSubexports: store.react?.subexports ?? [],
51
44
  userComponents: resolveElementComponents(elements),
52
45
  userProps: resolveElementProps(elements),
53
46
  userLazyElements: resolveLazyElements(elements),
54
47
  userOmittedProps: resolveOmittedProps(elements),
55
48
  });
56
- const enabledFutureFlags = (config) => {
57
- const unknown = new Set(unknownFutureKeys(config.future));
58
- return Object.entries(config.future ?? {})
59
- .filter(([name, value]) => value === true && !unknown.has(name))
60
- .map(([name]) => name);
61
- };
62
- const disabledCodegenResult = (configFile, notices) => ({
49
+ const disabledCodegenResult = (configFile) => ({
63
50
  isRegenerated: false,
64
51
  namespaces: 0,
65
52
  intrinsicElements: 0,
66
- notices,
67
53
  duration: 0,
68
54
  girPath: [],
69
55
  configFile,
70
56
  libraries: [],
71
57
  });
72
- const warnNotices = (notices) => {
73
- for (const notice of notices) {
74
- warn(notice);
75
- }
76
- };
77
- const unknownFutureNotice = (keys) => {
78
- if (keys.length === 0) {
79
- return [];
80
- }
81
- return [
82
- `gtkx.config.ts: \`future\` has no ${keys.join(", ")} flag, so the key is ignored. Check it against ` +
83
- "the flags the configuration guide lists.",
84
- ];
85
- };
86
- const redundantLibraryNotice = (entries) => {
87
- if (entries.length === 0) {
88
- return [];
89
- }
90
- return [
91
- `gtkx.config.ts: \`future.v2DefaultLibraries\` binds ${entries.join(", ")} on its own, so naming them ` +
92
- "in `libraries` changes nothing. Drop them; naming them becomes a configuration error in GTKX 2.0.",
93
- ];
94
- };
95
- const wildcardLibrariesNotice = (libraries) => {
96
- if (libraries !== LIBRARIES_WILDCARD) {
97
- return [];
98
- }
99
- return [
100
- 'gtkx.config.ts: `libraries: "*"` binds whatever the build host happens to have installed, so the ' +
101
- "store changes with the machine. Instead, list the libraries the project needs; the wildcard is " +
102
- "removed in GTKX 2.0.",
103
- ];
104
- };
105
- const configNotices = (config, future) => [
106
- ...unknownFutureNotice(unknownFutureKeys(config.future)),
107
- ...wildcardLibrariesNotice(config.libraries),
108
- ...redundantLibraryNotice(redundantLibraries(config.libraries, future.isAdwaitaDefault)),
109
- ];
110
- const regeneratedStorePaths = (store) => {
111
- if (store.react === null) {
112
- return [store.giStoreDir, store.giLinkDir];
113
- }
114
- return [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir];
115
- };
116
58
  const clearGeneratedStores = (store) => {
117
- removeStores(regeneratedStorePaths(store));
59
+ removeStores(store.react === null
60
+ ? [store.giStoreDir, store.giLinkDir]
61
+ : [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir]);
118
62
  };
119
- const resolveLoadedConfig = async (options, cwd) => options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));
120
63
  const prepareCodegen = (options, cwd, config) => {
121
64
  const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);
122
65
  if (girPath.length === 0) {
@@ -127,57 +70,47 @@ const prepareCodegen = (options, cwd, config) => {
127
70
  };
128
71
  const runCodegen = async (options = {}) => {
129
72
  const cwd = options.cwd ?? process.cwd();
130
- const { config, configFile } = await resolveLoadedConfig(options, cwd);
131
- const future = resolveFuture(config.future);
132
- const configured = configNotices(config, future);
133
- warnNotices(configured);
73
+ const { config, configFile } = options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));
134
74
  await syncI18n(cwd, config.applicationId, options.shouldPreserveI18nMetadata);
135
- syncSchemaEnv(cwd, future.isResourceImported);
75
+ emitSchemaEnv(cwd);
136
76
  if (config.codegen === false) {
137
77
  removeShadowingStores(cwd);
138
- return disabledCodegenResult(configFile, configured);
78
+ return disabledCodegenResult(configFile);
139
79
  }
140
80
  const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);
141
81
  if (options.isForced) {
142
82
  clearGeneratedStores(store);
143
83
  }
144
84
  const result = await runCodegenCore({
145
- ...codegenOptions({ store, libraries, girPath, elements: config.elements, future }),
85
+ ...codegenOptions({ store, libraries, girPath, elements: config.elements }),
146
86
  isForced,
147
87
  });
148
- warnNotices(result.notices);
149
- const notices = [...configured, ...result.notices];
150
88
  const reference = await writeReference({ root: cwd, config, girPath, libraries, isForced });
151
- syncAgentRules(cwd, config);
89
+ if (isAgentRulesEnabled(config)) {
90
+ upsertAgentRules(cwd);
91
+ }
152
92
  return {
153
93
  isRegenerated: result.isRegenerated,
154
94
  namespaces: result.namespaces,
155
95
  intrinsicElements: result.intrinsicElements,
156
- notices,
157
96
  duration: result.duration,
158
97
  girPath,
159
98
  configFile,
160
99
  libraries,
161
- future: enabledFutureFlags(config),
162
100
  reference,
163
101
  };
164
102
  };
165
- const syncAgentRules = (root, config) => {
166
- if (isAgentRulesEnabled(config)) {
167
- upsertAgentRules(root);
168
- }
169
- };
170
103
  const syncI18n = async (root, applicationId, shouldPreserveMetadataMessages = true) => {
171
104
  const project = resolveCatalogProject(root, applicationId);
172
105
  if (project === null) {
173
- emitI18nTypes(root, [], false);
106
+ clearI18nTypes(root);
174
107
  return;
175
108
  }
176
109
  const srcDir = join(root, "src");
177
110
  const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : root);
178
- const catalog = await extractSourceCatalog(project, sourceFiles, shouldPreserveMetadataMessages);
111
+ await extractSourceCatalog(project, sourceFiles, shouldPreserveMetadataMessages);
179
112
  synchronizeCatalogs(project);
180
- emitI18nTypes(root, catalog.messages);
113
+ await emitI18nTypes(root);
181
114
  };
182
115
  const isCodegenDisabled = async (cwd, mode) => {
183
116
  try {
@@ -188,10 +121,6 @@ const isCodegenDisabled = async (cwd, mode) => {
188
121
  return false;
189
122
  }
190
123
  };
191
- const syncSchemaEnv = (cwd, isV2ResourceImports = false) => {
192
- const dataDir = isV2ResourceImports ? null : resolveDataDir(cwd);
193
- emitSchemaEnv(cwd, dataDir, isV2ResourceImports);
194
- };
195
124
  const resolveInputsOrNull = (cwd, config) => {
196
125
  try {
197
126
  return resolveCodegenInputs(cwd, config);
@@ -208,12 +137,6 @@ const maybeAnnounceStale = (shouldAnnounce, inputs) => {
208
137
  info("generated bindings missing; running codegen...");
209
138
  }
210
139
  };
211
- const getRunOptions = ({ root, mode, inputs, resolved, shouldPreserveI18nMetadata, }) => {
212
- if (inputs === null) {
213
- return { cwd: root, mode, resolved, shouldPreserveI18nMetadata };
214
- }
215
- return { cwd: root, mode, inputs, resolved, shouldPreserveI18nMetadata };
216
- };
217
140
  const isPreflightSkipped = (options) => options.shouldAnnounce === true && process.env.GTKX_DISABLE_PREFLIGHT === "1";
218
141
  /* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
219
142
  const generate = async (context, options) => {
@@ -229,13 +152,13 @@ const generate = async (context, options) => {
229
152
  const inputs = resolveInputsOrNull(context.root, context.config);
230
153
  maybeAnnounceStale(options.shouldAnnounce, inputs);
231
154
  const resolved = { config: context.config, configFile: context.configFile };
232
- const result = await runCodegen(getRunOptions({
233
- root: context.root,
155
+ const result = await runCodegen({
156
+ cwd: context.root,
234
157
  mode: options.mode,
235
- inputs,
236
158
  resolved,
237
159
  shouldPreserveI18nMetadata: options.shouldPreserveI18nMetadata,
238
- }));
160
+ ...(inputs !== null && { inputs }),
161
+ });
239
162
  return result.isRegenerated;
240
163
  };
241
164
  /* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */
@@ -1 +1 @@
1
- {"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import { runCodegen as runCodegenCore } from \"@gtkx/codegen\";\nimport {\n getShadowingStorePaths,\n LIBRARIES_WILDCARD,\n redundantLibraries,\n sweepProjectStaging,\n} from \"@gtkx/codegen/internal\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport {\n isAgentRulesEnabled,\n type ResolvedFuture,\n resolveElementComponents,\n resolveElementProps,\n resolveFuture,\n resolveLazyElements,\n resolveOmittedProps,\n unknownFutureKeys,\n} from \"@gtkx/config/internal\";\nimport { info, warn } from \"@gtkx/utils\";\nimport { existsSync, rmSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { resolveCatalogProject, synchronizeCatalogs } from \"../i18n/catalogs.js\";\nimport { extractSourceCatalog } from \"../i18n/source-messages.js\";\nimport { emitI18nTypes } from \"../i18n/types.js\";\nimport { upsertAgentRules } from \"../internal/agent-rules.js\";\nimport { resolveDataDir } from \"../internal/data-dir.js\";\nimport { discoverSourceFiles } from \"../internal/source-imports.js\";\nimport { emitSchemaEnv } from \"../settings/schema.js\";\nimport { type CodegenInputs, isCodegenStale, resolveCodegenInputs } from \"./freshness.js\";\nimport { type ReferenceResult, writeReference } from \"./reference.js\";\nimport { type CodegenContext, type CodegenStore, resolveCodegenContext } from \"./store-resolver.js\";\n\ntype RunCodegenOptions = {\n cwd?: string;\n mode?: string | undefined;\n isForced?: boolean;\n inputs?: CodegenInputs;\n resolved?: LoadedConfig;\n shouldPreserveI18nMetadata?: boolean | undefined;\n};\n\ntype LoadedConfig = {\n config: Config;\n configFile: string;\n};\n\ntype RunCodegenResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n notices: string[];\n duration: number;\n girPath?: string[] | undefined;\n configFile?: string | undefined;\n libraries?: string[] | undefined;\n future?: string[] | undefined;\n reference?: ReferenceResult | undefined;\n};\n\ntype CodegenOptionsInput = {\n store: CodegenStore;\n libraries: string[];\n girPath: string[];\n elements: Config[\"elements\"];\n future: ResolvedFuture;\n};\n\ntype PreparedCodegen = CodegenInputs & { isForced: boolean };\n\ntype EnsureGeneratedOptions = {\n shouldAnnounce?: boolean;\n mode?: string;\n shouldPreserveI18nMetadata?: boolean | undefined;\n};\n\ntype RunOptionsInput = {\n root: string;\n mode: string | undefined;\n inputs: CodegenInputs | null;\n resolved: LoadedConfig;\n shouldPreserveI18nMetadata: boolean | undefined;\n};\n\nconst GIR_PATH_MISSING_MESSAGE =\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), \" +\n \"or set `girPath` in gtkx.config.ts.\";\n\nconst removeStores = (paths: string[]): void => {\n for (const path of paths) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst removeShadowingStores = (cwd: string): void => {\n sweepProjectStaging(cwd);\n removeStores(getShadowingStorePaths(cwd));\n};\n\nconst codegenOptions = ({ store, libraries, girPath, elements, future }: CodegenOptionsInput) => ({\n libraries,\n girPath,\n isByteArrayTyped: future.isByteArrayTyped,\n isValueUnwrapped: future.isValueUnwrapped,\n isFinishTrimmed: future.isFinishTrimmed,\n isInoutInPlace: future.isInoutInPlace,\n isTreeShaken: future.isTreeShaken,\n gi: {\n storeDir: store.giStoreDir,\n linkDir: store.giLinkDir,\n version: store.runtimeVersion,\n },\n jsx:\n store.react === null\n ? undefined\n : {\n storeDir: store.jsxStoreDir,\n linkDir: store.jsxLinkDir,\n version: store.react.version,\n },\n reactSubexports: store.react?.subexports ?? [],\n userComponents: resolveElementComponents(elements),\n userProps: resolveElementProps(elements),\n userLazyElements: resolveLazyElements(elements),\n userOmittedProps: resolveOmittedProps(elements),\n});\n\nconst enabledFutureFlags = (config: Config): string[] => {\n const unknown: Set<string> = new Set(unknownFutureKeys(config.future));\n\n return Object.entries(config.future ?? {})\n .filter(([name, value]) => value === true && !unknown.has(name))\n .map(([name]) => name);\n};\n\nconst disabledCodegenResult = (configFile: string, notices: string[]): RunCodegenResult => ({\n isRegenerated: false,\n namespaces: 0,\n intrinsicElements: 0,\n notices,\n duration: 0,\n girPath: [],\n configFile,\n libraries: [],\n});\n\nconst warnNotices = (notices: string[]): void => {\n for (const notice of notices) {\n warn(notice);\n }\n};\n\nconst unknownFutureNotice = (keys: string[]): string[] => {\n if (keys.length === 0) {\n return [];\n }\n\n return [\n `gtkx.config.ts: \\`future\\` has no ${keys.join(\", \")} flag, so the key is ignored. Check it against ` +\n \"the flags the configuration guide lists.\",\n ];\n};\n\nconst redundantLibraryNotice = (entries: string[]): string[] => {\n if (entries.length === 0) {\n return [];\n }\n\n return [\n `gtkx.config.ts: \\`future.v2DefaultLibraries\\` binds ${entries.join(\", \")} on its own, so naming them ` +\n \"in `libraries` changes nothing. Drop them; naming them becomes a configuration error in GTKX 2.0.\",\n ];\n};\n\nconst wildcardLibrariesNotice = (libraries: Config[\"libraries\"]): string[] => {\n if (libraries !== LIBRARIES_WILDCARD) {\n return [];\n }\n\n return [\n 'gtkx.config.ts: `libraries: \"*\"` binds whatever the build host happens to have installed, so the ' +\n \"store changes with the machine. Instead, list the libraries the project needs; the wildcard is \" +\n \"removed in GTKX 2.0.\",\n ];\n};\n\nconst configNotices = (config: Config, future: ResolvedFuture): string[] => [\n ...unknownFutureNotice(unknownFutureKeys(config.future)),\n ...wildcardLibrariesNotice(config.libraries),\n ...redundantLibraryNotice(redundantLibraries(config.libraries, future.isAdwaitaDefault)),\n];\n\nconst regeneratedStorePaths = (store: CodegenStore): string[] => {\n if (store.react === null) {\n return [store.giStoreDir, store.giLinkDir];\n }\n\n return [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir];\n};\n\nconst clearGeneratedStores = (store: CodegenStore): void => {\n removeStores(regeneratedStorePaths(store));\n};\n\nconst resolveLoadedConfig = async (options: RunCodegenOptions, cwd: string): Promise<LoadedConfig> =>\n options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));\n\nconst prepareCodegen = (options: RunCodegenOptions, cwd: string, config: Config): PreparedCodegen => {\n const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);\n\n if (girPath.length === 0) {\n throw new Error(GIR_PATH_MISSING_MESSAGE);\n }\n\n const isForced = options.isForced === true || isCodegenStale({ girPath, libraries, store });\n\n return { girPath, libraries, store, isForced };\n};\n\nconst runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {\n const cwd = options.cwd ?? process.cwd();\n const { config, configFile } = await resolveLoadedConfig(options, cwd);\n const future = resolveFuture(config.future);\n const configured = configNotices(config, future);\n warnNotices(configured);\n await syncI18n(cwd, config.applicationId, options.shouldPreserveI18nMetadata);\n syncSchemaEnv(cwd, future.isResourceImported);\n\n if (config.codegen === false) {\n removeShadowingStores(cwd);\n\n return disabledCodegenResult(configFile, configured);\n }\n\n const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);\n\n if (options.isForced) {\n clearGeneratedStores(store);\n }\n\n const result = await runCodegenCore({\n ...codegenOptions({ store, libraries, girPath, elements: config.elements, future }),\n isForced,\n });\n\n warnNotices(result.notices);\n const notices = [...configured, ...result.notices];\n const reference = await writeReference({ root: cwd, config, girPath, libraries, isForced });\n syncAgentRules(cwd, config);\n\n return {\n isRegenerated: result.isRegenerated,\n namespaces: result.namespaces,\n intrinsicElements: result.intrinsicElements,\n notices,\n duration: result.duration,\n girPath,\n configFile,\n libraries,\n future: enabledFutureFlags(config),\n reference,\n };\n};\n\nconst syncAgentRules = (root: string, config: Config): void => {\n if (isAgentRulesEnabled(config)) {\n upsertAgentRules(root);\n }\n};\n\nconst syncI18n = async (\n root: string,\n applicationId: string,\n shouldPreserveMetadataMessages = true,\n): Promise<void> => {\n const project = resolveCatalogProject(root, applicationId);\n\n if (project === null) {\n emitI18nTypes(root, [], false);\n\n return;\n }\n\n const srcDir = join(root, \"src\");\n const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : root);\n const catalog = await extractSourceCatalog(project, sourceFiles, shouldPreserveMetadataMessages);\n synchronizeCatalogs(project);\n emitI18nTypes(root, catalog.messages);\n};\n\nconst isCodegenDisabled = async (cwd: string, mode?: string): Promise<boolean> => {\n try {\n const { config } = await loadConfig(cwd, { mode });\n\n return config.codegen === false;\n } catch {\n return false;\n }\n};\n\nconst syncSchemaEnv = (cwd: string, isV2ResourceImports = false): void => {\n const dataDir = isV2ResourceImports ? null : resolveDataDir(cwd);\n emitSchemaEnv(cwd, dataDir, isV2ResourceImports);\n};\n\nconst resolveInputsOrNull = (cwd: string, config: Config): CodegenInputs | null => {\n try {\n return resolveCodegenInputs(cwd, config);\n } catch {\n return null;\n }\n};\n\nconst maybeAnnounceStale = (shouldAnnounce: boolean | undefined, inputs: CodegenInputs | null): void => {\n if (!shouldAnnounce) {\n return;\n }\n\n if (inputs === null || isCodegenStale(inputs)) {\n info(\"generated bindings missing; running codegen...\");\n }\n};\n\nconst getRunOptions = ({\n root,\n mode,\n inputs,\n resolved,\n shouldPreserveI18nMetadata,\n}: RunOptionsInput): RunCodegenOptions => {\n if (inputs === null) {\n return { cwd: root, mode, resolved, shouldPreserveI18nMetadata };\n }\n\n return { cwd: root, mode, inputs, resolved, shouldPreserveI18nMetadata };\n};\n\nconst isPreflightSkipped = (options: EnsureGeneratedOptions): boolean =>\n options.shouldAnnounce === true && process.env.GTKX_DISABLE_PREFLIGHT === \"1\";\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst generate = async (context: CodegenContext, options: EnsureGeneratedOptions): Promise<boolean> => {\n if (context.config.codegen === false) {\n const result = await runCodegen({\n cwd: context.root,\n mode: options.mode,\n resolved: { config: context.config, configFile: context.configFile },\n shouldPreserveI18nMetadata: options.shouldPreserveI18nMetadata,\n });\n\n return result.isRegenerated;\n }\n\n const inputs = resolveInputsOrNull(context.root, context.config);\n maybeAnnounceStale(options.shouldAnnounce, inputs);\n const resolved = { config: context.config, configFile: context.configFile };\n\n const result = await runCodegen(getRunOptions({\n root: context.root,\n mode: options.mode,\n inputs,\n resolved,\n shouldPreserveI18nMetadata: options.shouldPreserveI18nMetadata,\n }));\n\n return result.isRegenerated;\n};\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst ensureGeneratedIn = async (\n context: CodegenContext,\n options: EnsureGeneratedOptions = {},\n): Promise<boolean> => (isPreflightSkipped(options) ? false : generate(context, options));\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst ensureGenerated = async (cwd: string, options: EnsureGeneratedOptions = {}): Promise<boolean> =>\n isPreflightSkipped(options) ? false : generate(await resolveCodegenContext(cwd, options.mode), options);\n\nconst resolveConfigWatch = async (\n cwd: string,\n mode?: string,\n): Promise<{ paths: string[]; regenerate: () => Promise<void> }> => {\n const { configFile, root } = await loadConfig(cwd, { mode });\n\n return {\n paths: [resolve(root, configFile)],\n regenerate: async () => {\n await runCodegen({ cwd: root, mode });\n },\n };\n};\n\nexport {\n runCodegen,\n isCodegenDisabled,\n ensureGenerated,\n ensureGeneratedIn,\n resolveConfigWatch,\n type RunCodegenResult,\n};\n"]}
1
+ {"version":3,"file":"run-codegen.js","sourceRoot":"","sources":["../../src/codegen/run-codegen.ts"],"names":[],"mappings":"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","sourcesContent":["import { runCodegen as runCodegenCore } from \"@gtkx/codegen\";\nimport { getShadowingStorePaths, sweepProjectStaging } from \"@gtkx/codegen/internal\";\nimport { type Config, loadConfig } from \"@gtkx/config\";\nimport {\n isAgentRulesEnabled,\n resolveElementComponents,\n resolveElementProps,\n resolveLazyElements,\n resolveOmittedProps,\n} from \"@gtkx/config/internal\";\nimport { info } from \"@gtkx/utils\";\nimport { existsSync, rmSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\nimport { resolveCatalogProject, synchronizeCatalogs } from \"../i18n/catalogs.js\";\nimport { extractSourceCatalog } from \"../i18n/source-messages.js\";\nimport { clearI18nTypes, emitI18nTypes } from \"../i18n/types.js\";\nimport { upsertAgentRules } from \"../internal/agent-rules.js\";\nimport { discoverSourceFiles } from \"../internal/source-imports.js\";\nimport { emitSchemaEnv } from \"../settings/schema.js\";\nimport { type CodegenInputs, isCodegenStale, resolveCodegenInputs } from \"./freshness.js\";\nimport { type ReferenceResult, writeReference } from \"./reference.js\";\nimport { type CodegenContext, type CodegenStore, resolveCodegenContext } from \"./store-resolver.js\";\n\ntype RunCodegenOptions = {\n cwd?: string;\n mode?: string | undefined;\n isForced?: boolean;\n inputs?: CodegenInputs;\n resolved?: LoadedConfig;\n shouldPreserveI18nMetadata?: boolean | undefined;\n};\n\ntype LoadedConfig = {\n config: Config;\n configFile: string;\n};\n\ntype RunCodegenResult = {\n isRegenerated: boolean;\n namespaces: number;\n intrinsicElements: number;\n duration: number;\n girPath: string[];\n configFile: string;\n libraries: string[];\n reference?: ReferenceResult | undefined;\n};\n\ntype CodegenOptionsInput = {\n store: CodegenStore;\n libraries: string[];\n girPath: string[];\n elements: Config[\"elements\"];\n};\n\ntype PreparedCodegen = CodegenInputs & { isForced: boolean };\n\ntype EnsureGeneratedOptions = {\n shouldAnnounce?: boolean;\n mode?: string;\n shouldPreserveI18nMetadata?: boolean | undefined;\n};\n\nconst GIR_PATH_MISSING_MESSAGE =\n \"No GIR search paths available. Install gobject-introspection \" +\n \"(Linux: `sudo dnf install gobject-introspection-devel` or `sudo apt install libgirepository1.0-dev`), \" +\n \"or set `girPath` in gtkx.config.ts.\";\n\nconst removeStores = (paths: string[]): void => {\n for (const path of paths) {\n rmSync(path, { recursive: true, force: true });\n }\n};\n\nconst removeShadowingStores = (cwd: string): void => {\n sweepProjectStaging(cwd);\n removeStores(getShadowingStorePaths(cwd));\n};\n\nconst codegenOptions = ({ store, libraries, girPath, elements }: CodegenOptionsInput) => ({\n libraries,\n girPath,\n gi: {\n storeDir: store.giStoreDir,\n linkDir: store.giLinkDir,\n version: store.runtimeVersion,\n },\n jsx:\n store.react === null\n ? undefined\n : {\n storeDir: store.jsxStoreDir,\n linkDir: store.jsxLinkDir,\n version: store.react.version,\n },\n userComponents: resolveElementComponents(elements),\n userProps: resolveElementProps(elements),\n userLazyElements: resolveLazyElements(elements),\n userOmittedProps: resolveOmittedProps(elements),\n});\n\nconst disabledCodegenResult = (configFile: string): RunCodegenResult => ({\n isRegenerated: false,\n namespaces: 0,\n intrinsicElements: 0,\n duration: 0,\n girPath: [],\n configFile,\n libraries: [],\n});\n\nconst clearGeneratedStores = (store: CodegenStore): void => {\n removeStores(\n store.react === null\n ? [store.giStoreDir, store.giLinkDir]\n : [store.giStoreDir, store.giLinkDir, store.jsxStoreDir, store.jsxLinkDir],\n );\n};\n\nconst prepareCodegen = (options: RunCodegenOptions, cwd: string, config: Config): PreparedCodegen => {\n const { girPath, libraries, store } = options.inputs ?? resolveCodegenInputs(cwd, config);\n\n if (girPath.length === 0) {\n throw new Error(GIR_PATH_MISSING_MESSAGE);\n }\n\n const isForced = options.isForced === true || isCodegenStale({ girPath, libraries, store });\n\n return { girPath, libraries, store, isForced };\n};\n\nconst runCodegen = async (options: RunCodegenOptions = {}): Promise<RunCodegenResult> => {\n const cwd = options.cwd ?? process.cwd();\n const { config, configFile } = options.resolved ?? (await loadConfig(cwd, { mode: options.mode }));\n await syncI18n(cwd, config.applicationId, options.shouldPreserveI18nMetadata);\n emitSchemaEnv(cwd);\n\n if (config.codegen === false) {\n removeShadowingStores(cwd);\n\n return disabledCodegenResult(configFile);\n }\n\n const { girPath, libraries, store, isForced } = prepareCodegen(options, cwd, config);\n\n if (options.isForced) {\n clearGeneratedStores(store);\n }\n\n const result = await runCodegenCore({\n ...codegenOptions({ store, libraries, girPath, elements: config.elements }),\n isForced,\n });\n\n const reference = await writeReference({ root: cwd, config, girPath, libraries, isForced });\n\n if (isAgentRulesEnabled(config)) {\n upsertAgentRules(cwd);\n }\n\n return {\n isRegenerated: result.isRegenerated,\n namespaces: result.namespaces,\n intrinsicElements: result.intrinsicElements,\n duration: result.duration,\n girPath,\n configFile,\n libraries,\n reference,\n };\n};\n\nconst syncI18n = async (\n root: string,\n applicationId: string,\n shouldPreserveMetadataMessages = true,\n): Promise<void> => {\n const project = resolveCatalogProject(root, applicationId);\n\n if (project === null) {\n clearI18nTypes(root);\n\n return;\n }\n\n const srcDir = join(root, \"src\");\n const sourceFiles = discoverSourceFiles(existsSync(srcDir) ? srcDir : root);\n await extractSourceCatalog(project, sourceFiles, shouldPreserveMetadataMessages);\n synchronizeCatalogs(project);\n await emitI18nTypes(root);\n};\n\nconst isCodegenDisabled = async (cwd: string, mode?: string): Promise<boolean> => {\n try {\n const { config } = await loadConfig(cwd, { mode });\n\n return config.codegen === false;\n } catch {\n return false;\n }\n};\n\nconst resolveInputsOrNull = (cwd: string, config: Config): CodegenInputs | null => {\n try {\n return resolveCodegenInputs(cwd, config);\n } catch {\n return null;\n }\n};\n\nconst maybeAnnounceStale = (shouldAnnounce: boolean | undefined, inputs: CodegenInputs | null): void => {\n if (!shouldAnnounce) {\n return;\n }\n\n if (inputs === null || isCodegenStale(inputs)) {\n info(\"generated bindings missing; running codegen...\");\n }\n};\n\nconst isPreflightSkipped = (options: EnsureGeneratedOptions): boolean =>\n options.shouldAnnounce === true && process.env.GTKX_DISABLE_PREFLIGHT === \"1\";\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst generate = async (context: CodegenContext, options: EnsureGeneratedOptions): Promise<boolean> => {\n if (context.config.codegen === false) {\n const result = await runCodegen({\n cwd: context.root,\n mode: options.mode,\n resolved: { config: context.config, configFile: context.configFile },\n shouldPreserveI18nMetadata: options.shouldPreserveI18nMetadata,\n });\n\n return result.isRegenerated;\n }\n\n const inputs = resolveInputsOrNull(context.root, context.config);\n maybeAnnounceStale(options.shouldAnnounce, inputs);\n const resolved = { config: context.config, configFile: context.configFile };\n\n const result = await runCodegen({\n cwd: context.root,\n mode: options.mode,\n resolved,\n shouldPreserveI18nMetadata: options.shouldPreserveI18nMetadata,\n ...(inputs !== null && { inputs }),\n });\n\n return result.isRegenerated;\n};\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst ensureGeneratedIn = async (\n context: CodegenContext,\n options: EnsureGeneratedOptions = {},\n): Promise<boolean> => (isPreflightSkipped(options) ? false : generate(context, options));\n\n/* eslint-disable-next-line unicorn/consistent-boolean-name -- the boolean reports whether codegen ran */\nconst ensureGenerated = async (cwd: string, options: EnsureGeneratedOptions = {}): Promise<boolean> =>\n isPreflightSkipped(options) ? false : generate(await resolveCodegenContext(cwd, options.mode), options);\n\nconst resolveConfigWatch = async (\n cwd: string,\n mode?: string,\n): Promise<{ paths: string[]; regenerate: () => Promise<void> }> => {\n const { configFile, root } = await loadConfig(cwd, { mode });\n\n return {\n paths: [resolve(root, configFile)],\n regenerate: async () => {\n await runCodegen({ cwd: root, mode });\n },\n };\n};\n\nexport {\n runCodegen,\n isCodegenDisabled,\n ensureGenerated,\n ensureGeneratedIn,\n resolveConfigWatch,\n type RunCodegenResult,\n};\n"]}