@ts-for-gir/cli 4.0.0-beta.32 → 4.0.0-beta.34

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/bin/ts-for-gir CHANGED
@@ -17252,7 +17252,12 @@ var FileFinder = class {
17252
17252
  }
17253
17253
  const filename = `${globPackageNames[i]}.gir`;
17254
17254
  const pattern = this.girDirectories.map((girDirectory) => join7(girDirectory, filename));
17255
- const ignoreGirs = ignore.map((girDirectory) => `${girDirectory}.gir`);
17255
+ const ignoreGirs = this.girDirectories.flatMap(
17256
+ (girDirectory) => ignore.map((ignored) => {
17257
+ const cleanIgnored = ignored.startsWith("*/") ? ignored.slice(2) : ignored;
17258
+ return join7(girDirectory, `${cleanIgnored}.gir`);
17259
+ })
17260
+ );
17256
17261
  const files = await glob2(pattern, { ignore: ignoreGirs });
17257
17262
  for (const file of files) {
17258
17263
  foundFiles.add(file);
@@ -17525,7 +17530,13 @@ var ModuleLoader = class {
17525
17530
  */
17526
17531
  async loadGirModules(dependencies, ignoreDependencies = [], girModules = [], resolvedBy = 1 /* BY_HAND */, failedGirModules = /* @__PURE__ */ new Set()) {
17527
17532
  let newModuleFound = false;
17528
- dependencies = [...dependencies];
17533
+ dependencies = [...dependencies].filter((dep) => {
17534
+ const packageName = dep.packageName;
17535
+ return !ignoreDependencies.some((ignored) => {
17536
+ const cleanIgnored = ignored.startsWith("*/") ? ignored.slice(2) : ignored;
17537
+ return packageName === cleanIgnored;
17538
+ });
17539
+ });
17529
17540
  while (dependencies.length > 0) {
17530
17541
  const dependency = dependencies.shift();
17531
17542
  if (!dependency?.packageName) continue;
@@ -17635,7 +17646,7 @@ var ModuleLoader = class {
17635
17646
  // src/commands/copy.ts
17636
17647
  var command2 = "copy [modules..]";
17637
17648
  var description2 = "Scan for *.gir files and copy them to a new directory";
17638
- var logger3 = new Logger(false, "CopyCommand");
17649
+ var logger3 = new Logger(true, "CopyCommand");
17639
17650
  var examples2 = [
17640
17651
  [`${APP_NAME} copy -o ./gir`, "Copy found *.gir files to ./gir"],
17641
17652
  [
@@ -19198,9 +19209,10 @@ ${girClass.__ts__indexSignature}
19198
19209
  if (Type) {
19199
19210
  return ` extends ${Type}`;
19200
19211
  }
19201
- throw new Error(
19212
+ this.log.warn(
19202
19213
  `Unable to resolve type: ${node.superType.name} from ${node.superType.namespace} in ${node.namespace.namespace} ${node.namespace.version}, falling back to GObject.Object`
19203
19214
  );
19215
+ return ` extends GObject.Object`;
19204
19216
  }
19205
19217
  return "";
19206
19218
  }
@@ -19773,7 +19785,7 @@ var GenerationHandler = class {
19773
19785
  // src/commands/doc.ts
19774
19786
  var command3 = "doc [modules..]";
19775
19787
  var description3 = "The HTML documentation generator is not yet implemented, but feel free to implement it \u{1F917}";
19776
- var logger4 = new Logger(false, "DocCommand");
19788
+ var logger4 = new Logger(true, "DocCommand");
19777
19789
  var builder3 = (yargs2) => {
19778
19790
  const optionNames = Object.keys(docOptions);
19779
19791
  for (const optionName of optionNames) {
@@ -19833,7 +19845,7 @@ var TypeScriptFormatter = class extends Formatter {
19833
19845
  // src/commands/generate.ts
19834
19846
  var command4 = "generate [modules..]";
19835
19847
  var description4 = "Generates Typescript type definition .d.ts files from GIR for GJS";
19836
- var logger6 = new Logger(false, "GenerateCommand");
19848
+ var logger6 = new Logger(true, "GenerateCommand");
19837
19849
  var examples4 = [
19838
19850
  [
19839
19851
  `${APP_NAME} generate`,
@@ -19880,7 +19892,7 @@ var handler4 = async (args) => {
19880
19892
  "Generation failed"
19881
19893
  );
19882
19894
  }
19883
- await service.printComprehensiveSummary();
19895
+ service.printComprehensiveSummary();
19884
19896
  await service.saveComprehensiveReport();
19885
19897
  }
19886
19898
  throw error;
@@ -19897,7 +19909,7 @@ var generate = {
19897
19909
  // src/commands/json.ts
19898
19910
  var command5 = "json [modules..]";
19899
19911
  var description5 = "Generates JSON representation from GIR files for analysis and tooling";
19900
- var logger7 = new Logger(false, "JsonCommand");
19912
+ var logger7 = new Logger(true, "JsonCommand");
19901
19913
  var examples5 = [
19902
19914
  [`${APP_NAME} json`, `Run '${APP_NAME} json' in your gjs project to generate JSON files for your project`],
19903
19915
  [`${APP_NAME} json Gtk*`, "You can also use wild cards"],
@@ -19957,7 +19969,7 @@ var json = {
19957
19969
  // src/commands/list.ts
19958
19970
  var command6 = "list [modules..]";
19959
19971
  var description6 = "Lists all available GIR modules";
19960
- var logger8 = new Logger(false, "ListCommand");
19972
+ var logger8 = new Logger(true, "ListCommand");
19961
19973
  var examples6 = [
19962
19974
  [`${APP_NAME} list -g ./vala-girs/gir-1.0`, "Lists all available GIR modules in ./vala-girs/gir-1.0"],
19963
19975
  [
@@ -19977,26 +19989,16 @@ var handler6 = async (args) => {
19977
19989
  return logger8.error(ERROR_NO_MODULES_FOUND(config.girDirectories));
19978
19990
  }
19979
19991
  const conflictModules = moduleGroups.filter((moduleGroup) => moduleGroup.hasConflict);
19980
- const byHandModules = moduleGroups.filter((moduleGroup) => moduleGroup.modules[0].resolvedBy === 1 /* BY_HAND */);
19981
- const depModules = moduleGroups.filter((moduleGroup) => moduleGroup.modules[0].resolvedBy === 0 /* DEPENDENCE */);
19992
+ const allModules = moduleGroups.filter((moduleGroup) => !moduleGroup.hasConflict);
19982
19993
  logger8.info("\nSearch for gir files in:");
19983
19994
  for (const dir of config.girDirectories) {
19984
19995
  logger8.white(`- ${dir}`);
19985
19996
  }
19986
- logger8.info("\nSelected Modules:");
19987
- for (const moduleGroup of byHandModules) {
19988
- for (const depModule of moduleGroup.modules) {
19989
- logger8.white(`- ${depModule.packageName}`);
19990
- logger8.gray(` - ${depModule.path}`);
19991
- }
19992
- }
19993
- if (depModules.length > 0) {
19994
- logger8.yellow("\nDependencies:");
19995
- for (const moduleGroup of depModules) {
19996
- for (const depModule of moduleGroup.modules) {
19997
- logger8.white(`- ${depModule.packageName}`);
19998
- logger8.gray(`- ${depModule.path}`);
19999
- }
19997
+ logger8.info("\nAvailable Modules:");
19998
+ for (const moduleGroup of allModules) {
19999
+ for (const module of moduleGroup.modules) {
20000
+ logger8.white(`- ${module.packageName}`);
20001
+ logger8.gray(` - ${module.path}`);
20000
20002
  }
20001
20003
  }
20002
20004
  if (conflictModules.length > 0) {
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@ts-for-gir/cli",
3
- "version": "4.0.0-beta.32",
3
+ "version": "4.0.0-beta.34",
4
4
  "description": "TypeScript type definition generator for GObject introspection GIR files",
5
5
  "main": "src/index.ts",
6
6
  "module": "src/index.ts",
7
7
  "type": "module",
8
8
  "bin": {
9
- "ts-for-gir": "bin/ts-for-gir",
10
9
  "cli": "bin/ts-for-gir",
10
+ "ts-for-gir": "bin/ts-for-gir",
11
11
  "ts-for-gir-dev": "bin/ts-for-gir-dev"
12
12
  },
13
13
  "engines": {
@@ -53,13 +53,13 @@
53
53
  ".": "./src/index.ts"
54
54
  },
55
55
  "devDependencies": {
56
- "@gi.ts/parser": "^4.0.0-beta.32",
57
- "@ts-for-gir/generator-base": "^4.0.0-beta.32",
58
- "@ts-for-gir/generator-html-doc": "^4.0.0-beta.32",
59
- "@ts-for-gir/generator-json": "^4.0.0-beta.32",
60
- "@ts-for-gir/generator-typescript": "^4.0.0-beta.32",
61
- "@ts-for-gir/lib": "^4.0.0-beta.32",
62
- "@ts-for-gir/reporter": "^4.0.0-beta.32",
56
+ "@gi.ts/parser": "^4.0.0-beta.34",
57
+ "@ts-for-gir/generator-base": "^4.0.0-beta.34",
58
+ "@ts-for-gir/generator-html-doc": "^4.0.0-beta.34",
59
+ "@ts-for-gir/generator-json": "^4.0.0-beta.34",
60
+ "@ts-for-gir/generator-typescript": "^4.0.0-beta.34",
61
+ "@ts-for-gir/lib": "^4.0.0-beta.34",
62
+ "@ts-for-gir/reporter": "^4.0.0-beta.34",
63
63
  "@types/ejs": "^3.1.5",
64
64
  "@types/inquirer": "^9.0.9",
65
65
  "@types/node": "^24.2.1",
@@ -70,7 +70,7 @@
70
70
  },
71
71
  "dependencies": {
72
72
  "@inquirer/prompts": "^7.8.2",
73
- "@ts-for-gir/templates": "^4.0.0-beta.32",
73
+ "@ts-for-gir/templates": "^4.0.0-beta.34",
74
74
  "colorette": "^2.0.20",
75
75
  "cosmiconfig": "^9.0.0",
76
76
  "ejs": "^3.1.10",
@@ -15,7 +15,7 @@ const command = "copy [modules..]";
15
15
 
16
16
  const description = "Scan for *.gir files and copy them to a new directory";
17
17
 
18
- const logger = new Logger(false, "CopyCommand");
18
+ const logger = new Logger(true, "CopyCommand");
19
19
 
20
20
  const examples: ReadonlyArray<[string, string?]> = [
21
21
  [`${APP_NAME} copy -o ./gir`, "Copy found *.gir files to ./gir"],
@@ -22,7 +22,7 @@ const command = "doc [modules..]";
22
22
 
23
23
  const description = "The HTML documentation generator is not yet implemented, but feel free to implement it 🤗";
24
24
 
25
- const logger = new Logger(false, "DocCommand");
25
+ const logger = new Logger(true, "DocCommand");
26
26
 
27
27
  const builder: BuilderCallback<DocCommandArgs, ConfigFlags> = (yargs: Argv<DocCommandArgs>) => {
28
28
  const optionNames = Object.keys(docOptions);
@@ -25,7 +25,7 @@ const command = "generate [modules..]";
25
25
 
26
26
  const description = "Generates Typescript type definition .d.ts files from GIR for GJS";
27
27
 
28
- const logger = new Logger(false, "GenerateCommand");
28
+ const logger = new Logger(true, "GenerateCommand");
29
29
 
30
30
  const examples: ReadonlyArray<[string, string?]> = [
31
31
  [
@@ -93,7 +93,7 @@ const handler = async (args: ConfigFlags) => {
93
93
  }
94
94
 
95
95
  // Generate and save the report
96
- await service.printComprehensiveSummary();
96
+ service.printComprehensiveSummary();
97
97
  await service.saveComprehensiveReport();
98
98
  }
99
99
 
@@ -24,7 +24,7 @@ const command = "json [modules..]";
24
24
 
25
25
  const description = "Generates JSON representation from GIR files for analysis and tooling";
26
26
 
27
- const logger = new Logger(false, "JsonCommand");
27
+ const logger = new Logger(true, "JsonCommand");
28
28
 
29
29
  const examples: ReadonlyArray<[string, string?]> = [
30
30
  [`${APP_NAME} json`, `Run '${APP_NAME} json' in your gjs project to generate JSON files for your project`],
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import type { ConfigFlags } from "@ts-for-gir/lib";
6
- import { APP_NAME, ERROR_NO_MODULES_FOUND, Logger, NSRegistry, ResolveType } from "@ts-for-gir/lib";
6
+ import { APP_NAME, ERROR_NO_MODULES_FOUND, Logger, NSRegistry } from "@ts-for-gir/lib";
7
7
  import { getOptionsGeneration, listOptions, load } from "../config.ts";
8
8
  import { ModuleLoader } from "../module-loader.ts";
9
9
  import type { ListCommandArgs } from "../types/index.ts";
@@ -13,7 +13,7 @@ const command = "list [modules..]";
13
13
 
14
14
  const description = "Lists all available GIR modules";
15
15
 
16
- const logger = new Logger(false, "ListCommand");
16
+ const logger = new Logger(true, "ListCommand");
17
17
 
18
18
  const examples: ReadonlyArray<[string, string?]> = [
19
19
  [`${APP_NAME} list -g ./vala-girs/gir-1.0`, "Lists all available GIR modules in ./vala-girs/gir-1.0"],
@@ -32,39 +32,29 @@ const handler = async (args: ConfigFlags) => {
32
32
  const moduleLoader = new ModuleLoader(generateConfig, registry);
33
33
  const { grouped, failed } = await moduleLoader.getModules(config.modules, config.ignore);
34
34
  const moduleGroups = Object.values(grouped);
35
+
35
36
  if (Object.keys(grouped).length === 0) {
36
37
  return logger.error(ERROR_NO_MODULES_FOUND(config.girDirectories));
37
38
  }
38
39
 
39
40
  const conflictModules = moduleGroups.filter((moduleGroup) => moduleGroup.hasConflict);
40
-
41
- const byHandModules = moduleGroups.filter((moduleGroup) => moduleGroup.modules[0].resolvedBy === ResolveType.BY_HAND);
42
-
43
- const depModules = moduleGroups.filter((moduleGroup) => moduleGroup.modules[0].resolvedBy === ResolveType.DEPENDENCE);
41
+ const allModules = moduleGroups.filter((moduleGroup) => !moduleGroup.hasConflict);
44
42
 
45
43
  logger.info("\nSearch for gir files in:");
46
44
  for (const dir of config.girDirectories) {
47
45
  logger.white(`- ${dir}`);
48
46
  }
49
47
 
50
- logger.info("\nSelected Modules:");
51
- for (const moduleGroup of byHandModules) {
52
- for (const depModule of moduleGroup.modules) {
53
- logger.white(`- ${depModule.packageName}`);
54
- logger.gray(` - ${depModule.path}`);
55
- }
56
- }
57
-
58
- if (depModules.length > 0) {
59
- logger.yellow("\nDependencies:");
60
- for (const moduleGroup of depModules) {
61
- for (const depModule of moduleGroup.modules) {
62
- logger.white(`- ${depModule.packageName}`);
63
- logger.gray(`- ${depModule.path}`);
64
- }
48
+ // Show all available modules
49
+ logger.info("\nAvailable Modules:");
50
+ for (const moduleGroup of allModules) {
51
+ for (const module of moduleGroup.modules) {
52
+ logger.white(`- ${module.packageName}`);
53
+ logger.gray(` - ${module.path}`);
65
54
  }
66
55
  }
67
56
 
57
+ // Only show sections if there is actual content
68
58
  if (conflictModules.length > 0) {
69
59
  logger.danger("\nConflicts:");
70
60
  for (const moduleGroup of conflictModules) {
@@ -26,9 +26,16 @@ export class FileFinder {
26
26
  continue;
27
27
  }
28
28
 
29
+ // Handle all patterns uniformly (including wildcards like "*" and "Gtk*")
29
30
  const filename = `${globPackageNames[i]}.gir`;
30
31
  const pattern = this.girDirectories.map((girDirectory) => join(girDirectory, filename));
31
- const ignoreGirs = ignore.map((girDirectory) => `${girDirectory}.gir`);
32
+ const ignoreGirs = this.girDirectories.flatMap((girDirectory) =>
33
+ ignore.map((ignored) => {
34
+ // Remove */ prefix if present (e.g., "*/Gtk-4.0" -> "Gtk-4.0")
35
+ const cleanIgnored = ignored.startsWith("*/") ? ignored.slice(2) : ignored;
36
+ return join(girDirectory, `${cleanIgnored}.gir`);
37
+ }),
38
+ );
32
39
  const files = await glob(pattern, { ignore: ignoreGirs });
33
40
 
34
41
  for (const file of files) {
@@ -150,8 +150,15 @@ export class ModuleLoader {
150
150
  ): Promise<{ loaded: GirModuleResolvedBy[]; failed: Set<string> }> {
151
151
  let newModuleFound = false;
152
152
 
153
- // Clone array
154
- dependencies = [...dependencies];
153
+ // Clone array and filter out ignored dependencies
154
+ dependencies = [...dependencies].filter((dep) => {
155
+ const packageName = dep.packageName;
156
+ return !ignoreDependencies.some((ignored) => {
157
+ // Remove */ prefix if present (e.g., "*/Gtk-4.0" -> "Gtk-4.0")
158
+ const cleanIgnored = ignored.startsWith("*/") ? ignored.slice(2) : ignored;
159
+ return packageName === cleanIgnored;
160
+ });
161
+ });
155
162
 
156
163
  while (dependencies.length > 0) {
157
164
  const dependency = dependencies.shift();