@ts-for-gir/generator-typescript 3.0.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/gjsify/ts-for-gir/main/.github/ts-for-gir.png" />
3
+ <h1 align="center">TS <small>for</small> GIR</h1>
4
+ </p>
5
+
6
+ <p align="center">
7
+ <img src="https://badgen.net/github/checks/gjsify/ts-for-gir" />
8
+ <img src="https://badgen.net/github/license/gjsify/ts-for-gir" />
9
+ <img src="https://badgen.net/npm/v/@ts-for-gir/cli" />
10
+ <img src="https://badgen.net/npm/dw/@ts-for-gir/cli" />
11
+ </p>
12
+
13
+ <p align="center">TypeScript type definition generator for GObject introspection GIR files</p>
14
+
15
+ <p align="center">
16
+ <img src="https://raw.githubusercontent.com/gjsify/ts-for-gir/main/.github/feeling.gif" />
17
+ </p>
18
+
19
+ # Generator base
20
+ TypeScript type definition generator for ts-for-gir.
package/lib/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './type-definition-generator.js';
package/lib/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './type-definition-generator.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,115 @@
1
+ import { Generator } from '@ts-for-gir/generator-base';
2
+ import { Logger } from '@ts-for-gir/lib';
3
+ import type { GenerateConfig, InheritanceTable, GirModulesGrouped, GirModule } from '@ts-for-gir/lib';
4
+ export declare class TypeDefinitionGenerator implements Generator {
5
+ protected readonly config: GenerateConfig;
6
+ protected log: Logger;
7
+ constructor(config: GenerateConfig);
8
+ /**
9
+ *
10
+ * @param namespace E.g. 'Gtk'
11
+ * @param packageName E.g. 'Gtk-3.0'
12
+ * @param asExternType Currently only used for node type imports
13
+ */
14
+ private generateModuleDependenciesImport;
15
+ private generateExport;
16
+ private generateProperty;
17
+ private generateProperties;
18
+ private generateVariableCallbackType;
19
+ private generateVariable;
20
+ private generateTypes;
21
+ private generateGenericValues;
22
+ private generateType;
23
+ /**
24
+ * Generates signals from all properties of a base class
25
+ * TODO: Build new `GirSignalElement`s in `gir-module.ts` instead of generate the strings directly
26
+ * @param girClass
27
+ * @param namespace
28
+ * @param indentCount
29
+ * @returns
30
+ */
31
+ private generateClassPropertySignals;
32
+ private generateInParameters;
33
+ private generateSignals;
34
+ /**
35
+ * Adds documentation comments
36
+ * @see https://github.com/microsoft/tsdoc
37
+ * @param lines
38
+ * @param indentCount
39
+ */
40
+ private addTSDocCommentLines;
41
+ /**
42
+ * Adds the documentation as comments
43
+ * @see https://github.com/microsoft/tsdoc
44
+ * @param girDoc
45
+ * @param indentCount
46
+ * @param overwriteDoc
47
+ * @returns
48
+ */
49
+ private addGirDocComment;
50
+ /**
51
+ * Adds an info comment, is used for debugging the generated types
52
+ * @param comment
53
+ * @param indentCount
54
+ * @returns
55
+ */
56
+ private addInfoComment;
57
+ /**
58
+ * Adds an inline info comment, is used for debugging the generated types
59
+ * @param comment
60
+ * @param indentCount
61
+ * @returns
62
+ */
63
+ private addInlineInfoComment;
64
+ private mergeDescs;
65
+ private generateParameter;
66
+ /**
67
+ *
68
+ * @param tsGenerics
69
+ * @param isOut If this generic parameters are out do only generate the type parameter names
70
+ * @returns
71
+ */
72
+ private generateGenericParameters;
73
+ private generateOutParameterReturn;
74
+ private generateFunctionReturn;
75
+ private generateFunction;
76
+ private generateFunctions;
77
+ private generateCallbackInterface;
78
+ private generateCallbackInterfaces;
79
+ private generateEnumeration;
80
+ private generateEnumerationMember;
81
+ private generateConstant;
82
+ private generateAlias;
83
+ private generateConstructPropsInterface;
84
+ private generateClassFields;
85
+ private generateClassProperties;
86
+ private generateClassMethods;
87
+ private generateClassConstructors;
88
+ /**
89
+ * Instance methods, vfunc_ prefix
90
+ * @param girClass
91
+ */
92
+ private generateClassVirtualMethods;
93
+ private generateClassSignalInterfaces;
94
+ private generateClassSignals;
95
+ private generateClassModules;
96
+ /**
97
+ * In Typescript, interfaces and classes can have the same name,
98
+ * so we use this to generate interfaces with the same name to implement multiple inheritance
99
+ * @param girClass
100
+ * @param namespace
101
+ */
102
+ private generateImplementationInterface;
103
+ /**
104
+ * Represents a record, GObject class or interface as a Typescript class
105
+ * @param girClass
106
+ * @param namespace
107
+ */
108
+ private generateClass;
109
+ private exportModuleJS;
110
+ private exportModuleTS;
111
+ private exportModule;
112
+ private exportGjs;
113
+ private exportNodeGtk;
114
+ start(girModules: GirModule[], girModulesGrouped?: GirModulesGrouped[], inheritanceTable?: InheritanceTable): Promise<void>;
115
+ }
@@ -0,0 +1,993 @@
1
+ import { Logger, generateIndent, removeNamespace, removeClassModule, girElementIsIntrospectable, typeIsOptional, TemplateProcessor, NO_TSDATA, WARN_NOT_FOUND_DEPENDENCY_GIR_FILE, WARN_IGNORE_MULTIPLE_CALLBACKS, WARN_IGNORE_MULTIPLE_FUNC_DESC, } from '@ts-for-gir/lib';
2
+ export class TypeDefinitionGenerator {
3
+ config;
4
+ log;
5
+ constructor(config) {
6
+ this.config = config;
7
+ this.log = new Logger(config.environment, config.verbose, TypeDefinitionGenerator.name);
8
+ }
9
+ /**
10
+ *
11
+ * @param namespace E.g. 'Gtk'
12
+ * @param packageName E.g. 'Gtk-3.0'
13
+ * @param asExternType Currently only used for node type imports
14
+ */
15
+ generateModuleDependenciesImport(namespace, packageName, asExternType = false) {
16
+ const def = [];
17
+ const sas = !this.config.noNamespace && packageName !== 'Gjs' ? '' : '* as ';
18
+ if (this.config.buildType === 'lib') {
19
+ def.push(`import type ${sas}${namespace} from './${packageName}.js';`);
20
+ }
21
+ else if (this.config.buildType === 'types') {
22
+ if (asExternType) {
23
+ // def.push(`/// <reference types="${packageName}" />`)
24
+ def.push(`import ${namespace} from "${packageName}.js"`);
25
+ }
26
+ else {
27
+ def.push(`/// <reference path="${packageName}.d.ts" />`);
28
+ def.push(`import type ${sas}${namespace} from './${packageName}.js';`);
29
+ }
30
+ }
31
+ return def;
32
+ }
33
+ generateExport(type, name, definition, indentCount = 0) {
34
+ const exp = !this.config.noNamespace || this.config.buildType === 'types' ? '' : 'export ';
35
+ const indent = generateIndent(indentCount);
36
+ if (!definition.startsWith(':')) {
37
+ definition = ' ' + definition;
38
+ }
39
+ return `${indent}${exp}${type} ${name}${definition}`;
40
+ }
41
+ generateProperty(tsProp, onlyStatic, namespace, indentCount = 0) {
42
+ if (!tsProp) {
43
+ throw new Error('[generateProperty] Not all required properties set!');
44
+ }
45
+ const desc = [];
46
+ const isStatic = tsProp.isStatic;
47
+ if ((isStatic && !onlyStatic) || (!isStatic && onlyStatic)) {
48
+ return desc;
49
+ }
50
+ if (!tsProp.hasUnresolvedConflict) {
51
+ desc.push(...this.addGirDocComment(tsProp.doc, indentCount));
52
+ }
53
+ const indent = generateIndent(indentCount);
54
+ const varDesc = this.generateVariable(tsProp, namespace, 0, false);
55
+ const staticStr = isStatic ? 'static ' : '';
56
+ const readonly = tsProp.readonly ? 'readonly ' : '';
57
+ // temporary solution, will be solved differently later
58
+ const commentOut = tsProp.hasUnresolvedConflict ? '// Has conflict: ' : '';
59
+ desc.push(`${indent}${commentOut}${staticStr}${readonly}${varDesc}`);
60
+ return desc;
61
+ }
62
+ generateProperties(tsProps, onlyStatic, namespace, comment, indentCount = 0) {
63
+ const def = [];
64
+ for (const tsProp of tsProps) {
65
+ def.push(...this.generateProperty(tsProp, onlyStatic, namespace, indentCount));
66
+ }
67
+ if (def.length > 0) {
68
+ def.unshift(...this.addInfoComment(comment, indentCount));
69
+ }
70
+ return def;
71
+ }
72
+ generateVariableCallbackType(tsType, namespace) {
73
+ // The type of a callback is a functions definition
74
+ let typeStr = 'any';
75
+ const { callbacks } = tsType;
76
+ if (!callbacks.length)
77
+ return typeStr;
78
+ if (callbacks.length > 1) {
79
+ this.log.warn(WARN_IGNORE_MULTIPLE_CALLBACKS);
80
+ }
81
+ const girCallback = callbacks[0];
82
+ if (!girCallback._tsData) {
83
+ throw new Error(NO_TSDATA('generateVariableCallbackType'));
84
+ }
85
+ const funcDesc = this.generateFunction(girCallback._tsData, false, namespace, 0);
86
+ if (girCallback._tsData && funcDesc?.length) {
87
+ if (funcDesc.length > 1) {
88
+ this.log.warn(WARN_IGNORE_MULTIPLE_FUNC_DESC);
89
+ }
90
+ typeStr = funcDesc[0];
91
+ }
92
+ return typeStr;
93
+ }
94
+ generateVariable(tsVar, namespace, indentCount = 0, allowCommentOut = true) {
95
+ const indent = generateIndent(indentCount);
96
+ const name = tsVar.name;
97
+ const optional = typeIsOptional(tsVar.type);
98
+ if (!name) {
99
+ throw new Error('[generateVariable] "name" not set!');
100
+ }
101
+ const affix = optional ? '?' : '';
102
+ const typeStr = this.generateTypes(tsVar.type, namespace);
103
+ // temporary solution, will be solved differently later
104
+ const commentOut = allowCommentOut && tsVar.hasUnresolvedConflict ? '// Has conflict: ' : '';
105
+ return `${indent}${commentOut}${name}${affix}: ${typeStr}`;
106
+ }
107
+ generateTypes(tsTypes, namespace) {
108
+ let def = '';
109
+ for (const tsType of tsTypes) {
110
+ const separator = tsType.leftSeparator || '|';
111
+ const typeStr = this.generateType(tsType, namespace);
112
+ if (!def) {
113
+ def = typeStr;
114
+ }
115
+ else {
116
+ def += ` ${separator} ${typeStr}`;
117
+ }
118
+ }
119
+ return def;
120
+ }
121
+ generateGenericValues(tsType, namespace) {
122
+ // We just use the generic values here
123
+ const genericValues = tsType.generics.map((g) => removeNamespace(g.value || '', namespace)).filter((g) => !!g);
124
+ const genericStr = tsType.generics.length ? `<${genericValues.join(', ')}>` : '';
125
+ return genericStr;
126
+ }
127
+ generateType(tsType, namespace) {
128
+ let typeName = removeNamespace(tsType.type, namespace);
129
+ if (tsType.callbacks.length) {
130
+ typeName = this.generateVariableCallbackType(tsType, namespace);
131
+ }
132
+ if (!typeName) {
133
+ throw new Error('[generateVariable] "typeName" not set!');
134
+ }
135
+ let prefix = tsType.isArray ? '[]' : '';
136
+ prefix += tsType.nullable ? ' | null' : '';
137
+ // We just use the generic values here
138
+ const genericStr = this.generateGenericValues(tsType, namespace);
139
+ return `${typeName}${genericStr}${prefix}`;
140
+ }
141
+ /**
142
+ * Generates signals from all properties of a base class
143
+ * TODO: Build new `GirSignalElement`s in `gir-module.ts` instead of generate the strings directly
144
+ * @param girClass
145
+ * @param namespace
146
+ * @param indentCount
147
+ * @returns
148
+ */
149
+ generateClassPropertySignals(girClass, namespace, indentCount = 1) {
150
+ const def = [];
151
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
152
+ throw new Error(NO_TSDATA('generateClassPropertySignals'));
153
+ }
154
+ if (girClass._tsData?.isDerivedFromGObject) {
155
+ if (girClass._tsData.propertySignalMethods.length > 0) {
156
+ def.push(...this.addInfoComment(`Class property signals of ${girClass._module?.packageName}.${girClass._fullSymName}`, indentCount));
157
+ for (const tsSignalMethod of girClass._tsData.propertySignalMethods) {
158
+ if (!tsSignalMethod) {
159
+ continue;
160
+ }
161
+ def.push(...this.generateFunction(tsSignalMethod, false, namespace, indentCount));
162
+ }
163
+ }
164
+ }
165
+ return def;
166
+ }
167
+ generateInParameters(inParams, instanceParameters, namespace) {
168
+ const inParamsDef = [];
169
+ // TODO: Should use of a constructor, and even of an instance, be discouraged?
170
+ for (const instanceParameter of instanceParameters) {
171
+ if (instanceParameter._tsData) {
172
+ let { structFor } = instanceParameter._tsData;
173
+ const { name } = instanceParameter._tsData;
174
+ const gobject = namespace === 'GObject' || namespace === 'GLib' ? '' : 'GObject.';
175
+ structFor = removeNamespace(structFor, namespace);
176
+ const returnTypes = [structFor, 'Function', `${gobject}GType`];
177
+ inParamsDef.push(`${name}: ${returnTypes.join(' | ')}`);
178
+ }
179
+ }
180
+ for (const inParam of inParams) {
181
+ if (inParam._tsData)
182
+ inParamsDef.push(...this.generateParameter(inParam._tsData, namespace));
183
+ }
184
+ return inParamsDef;
185
+ }
186
+ generateSignals(girSignals, girClass, namespace, indentCount = 0) {
187
+ const def = [];
188
+ for (const girSignal of girSignals) {
189
+ if (girSignal._tsData?.tsMethods?.length) {
190
+ for (const tsSignalMethod of girSignal._tsData?.tsMethods) {
191
+ if (!tsSignalMethod) {
192
+ continue;
193
+ }
194
+ def.push(...this.generateFunction(tsSignalMethod, false, namespace, indentCount));
195
+ }
196
+ }
197
+ }
198
+ return def;
199
+ }
200
+ /**
201
+ * Adds documentation comments
202
+ * @see https://github.com/microsoft/tsdoc
203
+ * @param lines
204
+ * @param indentCount
205
+ */
206
+ addTSDocCommentLines(lines, indentCount = 0) {
207
+ const def = [];
208
+ const indent = generateIndent(indentCount);
209
+ def.push(`${indent}/**`);
210
+ for (const line of lines) {
211
+ def.push(`${indent} * ${line}`);
212
+ }
213
+ def.push(`${indent} */`);
214
+ return def;
215
+ }
216
+ /**
217
+ * Adds the documentation as comments
218
+ * @see https://github.com/microsoft/tsdoc
219
+ * @param girDoc
220
+ * @param indentCount
221
+ * @param overwriteDoc
222
+ * @returns
223
+ */
224
+ addGirDocComment(tsDoc, indentCount = 0, overwriteDoc) {
225
+ const desc = [];
226
+ const indent = generateIndent(indentCount);
227
+ if (this.config.noComments) {
228
+ return desc;
229
+ }
230
+ const text = overwriteDoc?.text || tsDoc?.text;
231
+ const tags = overwriteDoc?.tags || tsDoc?.tags || [];
232
+ if (text) {
233
+ desc.push(`${indent}/**`);
234
+ if (text) {
235
+ const lines = text.split('\n');
236
+ if (lines.length) {
237
+ for (const line of lines) {
238
+ desc.push(`${indent} * ${line}`);
239
+ }
240
+ }
241
+ }
242
+ for (const tag of tags) {
243
+ if (tag.paramName) {
244
+ desc.push(`${indent} * @${tag.tagName} ${tag.paramName} ${tag.text}`);
245
+ }
246
+ else {
247
+ desc.push(`${indent} * @${tag.tagName} ${tag.text}`);
248
+ }
249
+ }
250
+ desc.push(`${indent} */`);
251
+ }
252
+ return desc;
253
+ }
254
+ /**
255
+ * Adds an info comment, is used for debugging the generated types
256
+ * @param comment
257
+ * @param indentCount
258
+ * @returns
259
+ */
260
+ addInfoComment(comment, indentCount = 0) {
261
+ const def = [];
262
+ if (this.config.noDebugComments) {
263
+ return def;
264
+ }
265
+ const indent = generateIndent(indentCount);
266
+ if (comment) {
267
+ def.push('');
268
+ def.push(`${indent}// ${comment}`);
269
+ def.push('');
270
+ }
271
+ return def;
272
+ }
273
+ /**
274
+ * Adds an inline info comment, is used for debugging the generated types
275
+ * @param comment
276
+ * @param indentCount
277
+ * @returns
278
+ */
279
+ addInlineInfoComment(comment, indentCount = 0) {
280
+ const def = [];
281
+ if (this.config.noDebugComments) {
282
+ return def;
283
+ }
284
+ const indent = generateIndent(indentCount);
285
+ if (comment) {
286
+ def.push(`${indent}/* ${comment} */`);
287
+ }
288
+ return def;
289
+ }
290
+ mergeDescs(descs, comment, indentCount = 1) {
291
+ const def = [];
292
+ const indent = generateIndent(indentCount);
293
+ for (const desc of descs) {
294
+ def.push(`${indent}${desc}`);
295
+ }
296
+ if (def.length > 0) {
297
+ def.unshift(...this.addInfoComment(comment, indentCount));
298
+ }
299
+ return def;
300
+ }
301
+ generateParameter(tsParam, namespace) {
302
+ if (typeof tsParam?.name !== 'string') {
303
+ throw new Error(NO_TSDATA('generateParameter'));
304
+ }
305
+ const types = tsParam.type;
306
+ const name = tsParam.name;
307
+ const typeStr = this.generateTypes(types, namespace);
308
+ const optional = typeIsOptional(types) && !tsParam.isRest;
309
+ const affix = optional ? '?' : '';
310
+ const prefix = tsParam.isRest ? '...' : '';
311
+ return [`${prefix}${name}${affix}: ${typeStr}`];
312
+ }
313
+ /**
314
+ *
315
+ * @param tsGenerics
316
+ * @param isOut If this generic parameters are out do only generate the type parameter names
317
+ * @returns
318
+ */
319
+ generateGenericParameters(tsGenerics, isOut = false) {
320
+ const desc = [];
321
+ if (!tsGenerics?.length) {
322
+ return '';
323
+ }
324
+ for (const tsGeneric of tsGenerics) {
325
+ if (!tsGeneric.name) {
326
+ continue;
327
+ }
328
+ let genericStr = `${tsGeneric.name}`;
329
+ if (!isOut && tsGeneric.extends) {
330
+ genericStr += ` extends ${tsGeneric.extends}`;
331
+ }
332
+ if (!isOut && tsGeneric.value) {
333
+ genericStr += ` = ${tsGeneric.value}`;
334
+ }
335
+ desc.push(genericStr);
336
+ }
337
+ return `<${desc.join(', ')}>`;
338
+ }
339
+ generateOutParameterReturn(girParam, namespace) {
340
+ const desc = [];
341
+ if (!girParam._tsData) {
342
+ this.log.warn(NO_TSDATA('generateOutParameterReturn'));
343
+ return desc;
344
+ }
345
+ const { name } = girParam._tsData;
346
+ const typeStr = this.generateTypes(girParam._tsData.type, namespace);
347
+ desc.push(`/* ${name} */ ${typeStr}`);
348
+ return desc;
349
+ }
350
+ generateFunctionReturn(tsFunction, namespace) {
351
+ if (tsFunction.name === 'constructor') {
352
+ return '';
353
+ }
354
+ const overrideReturnType = tsFunction.overrideReturnType;
355
+ const outParams = tsFunction.outParams;
356
+ const retTypeIsVoid = tsFunction.retTypeIsVoid;
357
+ const isPromise = tsFunction.isPromise || false;
358
+ const typeStr = this.generateTypes(tsFunction.returnTypes, namespace);
359
+ let desc = typeStr;
360
+ if (overrideReturnType) {
361
+ desc = removeNamespace(overrideReturnType, namespace);
362
+ }
363
+ // TODO: Transform the outParams to `tsFunction.returnTypes` to move this logic to `gir-module.ts`
364
+ else if (outParams.length + (retTypeIsVoid ? 0 : 1) > 1) {
365
+ const outParamsDesc = [];
366
+ if (!retTypeIsVoid) {
367
+ outParamsDesc.push(`/* returnType */ ${typeStr}`);
368
+ }
369
+ for (const outParam of outParams) {
370
+ outParamsDesc.push(...this.generateOutParameterReturn(outParam, namespace));
371
+ }
372
+ desc = outParamsDesc.join(', ');
373
+ desc = `[ ${desc} ]`;
374
+ }
375
+ else if (outParams.length === 1 && retTypeIsVoid) {
376
+ desc = this.generateOutParameterReturn(outParams[0], namespace).join(' ');
377
+ }
378
+ if (isPromise) {
379
+ desc = `globalThis.Promise<${desc}>`;
380
+ }
381
+ return desc;
382
+ }
383
+ generateFunction(tsFunction,
384
+ /** If true only generate static functions otherwise generate only non static functions */
385
+ onlyStatic, namespace, indentCount = 1, overloads = true) {
386
+ const def = [];
387
+ const indent = generateIndent(indentCount);
388
+ if (!tsFunction) {
389
+ this.log.warn(NO_TSDATA('generateFunction'));
390
+ return def;
391
+ }
392
+ let { name } = tsFunction;
393
+ const { isStatic } = tsFunction;
394
+ const { isArrowType, isGlobal, inParams, instanceParameters } = tsFunction;
395
+ if ((isStatic && !onlyStatic) || (!isStatic && onlyStatic)) {
396
+ return def;
397
+ }
398
+ if (tsFunction.doc && !tsFunction.hasUnresolvedConflict)
399
+ def.push(...this.addGirDocComment(tsFunction.doc, indentCount));
400
+ const staticStr = isStatic && tsFunction.name !== 'constructor' ? 'static ' : '';
401
+ const globalStr = isGlobal ? 'function ' : '';
402
+ const genericStr = this.generateGenericParameters(tsFunction.generics);
403
+ // temporary solution, will be solved differently later
404
+ const commentOut = tsFunction.hasUnresolvedConflict ? '// Has conflict: ' : '';
405
+ let exportStr = '';
406
+ // `tsType === 'function'` are a global methods which can be exported
407
+ if (isGlobal) {
408
+ exportStr = !this.config.noNamespace || this.config.buildType === 'types' ? '' : 'export ';
409
+ }
410
+ const returnType = this.generateFunctionReturn(tsFunction, namespace);
411
+ let retSep = '';
412
+ if (returnType) {
413
+ if (isArrowType) {
414
+ name = '';
415
+ retSep = ' =>';
416
+ }
417
+ else {
418
+ retSep = ':';
419
+ }
420
+ }
421
+ const inParamsDef = this.generateInParameters(inParams, instanceParameters, namespace);
422
+ def.push(`${indent}${commentOut}${exportStr}${staticStr}${globalStr}${name}${genericStr}(${inParamsDef.join(', ')})${retSep} ${returnType}`);
423
+ // Add overloaded methods
424
+ if (overloads && tsFunction.overloads.length > 0) {
425
+ def.push(...this.addInfoComment(`Overloads of ${name}`, indentCount));
426
+ for (const func of tsFunction.overloads) {
427
+ def.push(...this.generateFunction(func, onlyStatic, namespace, indentCount, false));
428
+ }
429
+ }
430
+ return def;
431
+ }
432
+ generateFunctions(tsFunctions, onlyStatic, namespace, indentCount = 1, comment) {
433
+ const def = [];
434
+ for (const girFunction of tsFunctions) {
435
+ def.push(...this.generateFunction(girFunction, onlyStatic, namespace, indentCount));
436
+ }
437
+ if (def.length > 0) {
438
+ def.unshift(...this.addInfoComment(comment, indentCount));
439
+ }
440
+ return def;
441
+ }
442
+ generateCallbackInterface(tsCallback, namespace, indentCount = 0, classModuleName) {
443
+ const def = [];
444
+ if (!tsCallback?.tsCallbackInterface) {
445
+ this.log.warn(NO_TSDATA('generateCallbackInterface'));
446
+ return def;
447
+ }
448
+ def.push(...this.addGirDocComment(tsCallback.doc, indentCount, tsCallback.tsCallbackInterface.overwriteDoc));
449
+ const indent = generateIndent(indentCount);
450
+ const indentBody = generateIndent(indentCount + 1);
451
+ const { inParams, instanceParameters } = tsCallback;
452
+ const returnTypeStr = this.generateTypes(tsCallback.returnTypes, namespace);
453
+ // Get name, remove namespace and remove module class name prefix
454
+ let { name } = tsCallback.tsCallbackInterface;
455
+ const { generics } = tsCallback.tsCallbackInterface;
456
+ name = removeNamespace(name, namespace);
457
+ if (classModuleName)
458
+ name = removeClassModule(name, classModuleName);
459
+ const genericParameters = this.generateGenericParameters(generics);
460
+ const inParamsDef = this.generateInParameters(inParams, instanceParameters, namespace);
461
+ const interfaceHead = `${name}${genericParameters}`;
462
+ def.push(this.generateExport('interface', `${interfaceHead}`, '{', indentCount));
463
+ def.push(`${indentBody}(${inParamsDef.join(', ')}): ${returnTypeStr}`);
464
+ def.push(indent + '}');
465
+ return def;
466
+ }
467
+ generateCallbackInterfaces(tsCallbacks, namespace, indentCount = 0, classModuleName, comment) {
468
+ const def = [];
469
+ for (const tsCallback of tsCallbacks) {
470
+ def.push(...this.generateCallbackInterface(tsCallback, namespace, indentCount, classModuleName), '');
471
+ }
472
+ if (def.length > 0) {
473
+ def.unshift(...this.addInfoComment(comment, indentCount));
474
+ }
475
+ return def;
476
+ }
477
+ generateEnumeration(girEnum, indentCount = 0) {
478
+ const desc = [];
479
+ if (!girElementIsIntrospectable(girEnum)) {
480
+ return desc;
481
+ }
482
+ if (!girEnum._tsData) {
483
+ this.log.warn(NO_TSDATA('generateEnumeration'));
484
+ return desc;
485
+ }
486
+ desc.push(...this.addGirDocComment(girEnum._tsData.doc, indentCount));
487
+ const { name } = girEnum._tsData;
488
+ desc.push(this.generateExport('enum', name, '{', indentCount));
489
+ if (girEnum.member) {
490
+ for (const girEnumMember of girEnum.member) {
491
+ if (!girEnumMember._tsData)
492
+ continue;
493
+ desc.push(...this.generateEnumerationMember(girEnumMember._tsData, indentCount + 1));
494
+ }
495
+ }
496
+ desc.push('}');
497
+ return desc;
498
+ }
499
+ generateEnumerationMember(tsMember, indentCount = 1) {
500
+ const desc = [];
501
+ if (!tsMember) {
502
+ this.log.warn(NO_TSDATA('generateEnumerationMember'));
503
+ return desc;
504
+ }
505
+ desc.push(...this.addGirDocComment(tsMember.doc, indentCount));
506
+ const indent = generateIndent(indentCount);
507
+ desc.push(`${indent}${tsMember.name},`);
508
+ return desc;
509
+ }
510
+ generateConstant(tsConst, namespace, indentCount = 0) {
511
+ const desc = [];
512
+ if (!tsConst.hasUnresolvedConflict) {
513
+ desc.push(...this.addGirDocComment(tsConst.doc, indentCount));
514
+ }
515
+ const indent = generateIndent(indentCount);
516
+ const exp = !this.config.noNamespace || this.config.buildType === 'types' ? '' : 'export ';
517
+ const varDesc = this.generateVariable(tsConst, namespace, 0);
518
+ desc.push(`${indent}${exp}const ${varDesc}`);
519
+ return desc;
520
+ }
521
+ generateAlias(girAlias, namespace, indentCount = 0) {
522
+ const desc = [];
523
+ if (!girElementIsIntrospectable(girAlias)) {
524
+ return '';
525
+ }
526
+ if (!girAlias._tsData) {
527
+ this.log.warn(NO_TSDATA('generateAlias'));
528
+ return desc;
529
+ }
530
+ const indent = generateIndent(indentCount);
531
+ const exp = !this.config.noNamespace || this.config.buildType === 'types' ? '' : 'export ';
532
+ const type = removeNamespace(girAlias._tsData.type, namespace);
533
+ desc.push(`${indent}${exp}type ${girAlias._tsData.name} = ${type}`);
534
+ return desc;
535
+ }
536
+ generateConstructPropsInterface(girClass, namespace, indentCount = 0) {
537
+ const def = [];
538
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
539
+ throw new Error(NO_TSDATA('generateConstructPropsInterface'));
540
+ }
541
+ if (!girClass._tsData.isDerivedFromGObject) {
542
+ return def;
543
+ }
544
+ const indent = generateIndent(indentCount);
545
+ const exp = !this.config.noNamespace || this.config.buildType === 'types' ? '' : 'export ';
546
+ let ext = '';
547
+ if (girClass._tsData.inheritConstructPropInterfaceNames.length) {
548
+ const constructPropInterfaceNames = girClass._tsData.inheritConstructPropInterfaceNames.map((n) => removeNamespace(n, namespace));
549
+ ext = `extends ${constructPropInterfaceNames.join(', ')} `;
550
+ }
551
+ // Remove namespace and class module name
552
+ const constructPropInterfaceName = removeClassModule(removeNamespace(girClass._tsData.constructPropInterfaceName, namespace), girClass._tsData.name);
553
+ def.push(...this.addInfoComment('Constructor properties interface', indentCount));
554
+ // START BODY
555
+ {
556
+ def.push(`${indent}${exp}interface ${constructPropInterfaceName} ${ext}{`);
557
+ def.push(...this.generateProperties(girClass._tsData.constructProps.map((cp) => cp._tsData).filter((cp) => !!cp), false, namespace, `Own constructor properties of ${girClass._module.packageName}.${girClass._fullSymName}`, indentCount + 1));
558
+ def.push(`${indent}}`, '');
559
+ }
560
+ // END BODY
561
+ return def;
562
+ }
563
+ generateClassFields(girClass, onlyStatic, namespace, indentCount = 1) {
564
+ const def = [];
565
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
566
+ throw new Error(NO_TSDATA('generateClassFields'));
567
+ }
568
+ def.push(...this.generateProperties(girClass._tsData.fields.map((f) => f._tsData).filter((f) => !!f), onlyStatic, namespace, `Own fields of ${girClass._module.packageName}.${girClass._fullSymName}`, indentCount));
569
+ return def;
570
+ }
571
+ generateClassProperties(girClass, onlyStatic, namespace, indentCount = 1) {
572
+ const def = [];
573
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
574
+ throw new Error(NO_TSDATA('generateClassProperties'));
575
+ }
576
+ def.push(...this.generateProperties(girClass._tsData.properties.map((p) => p._tsData).filter((p) => !!p), onlyStatic, namespace, `Own properties of ${girClass._module.packageName}.${girClass._fullSymName}`, indentCount));
577
+ def.push(...this.generateProperties(girClass._tsData.conflictProperties, onlyStatic, namespace, `Conflicting properties`, indentCount));
578
+ return def;
579
+ }
580
+ generateClassMethods(girClass, onlyStatic, namespace, indentCount = 1) {
581
+ const def = [];
582
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
583
+ throw new Error(NO_TSDATA('generateClassMethods'));
584
+ }
585
+ def.push(...this.generateFunctions(girClass._tsData.methods.map((girFunc) => girFunc._tsData).filter((tsFunc) => !!tsFunc), onlyStatic, namespace, indentCount, `Owm ${onlyStatic ? 'static ' : ''}methods of ${girClass._module.packageName}.${girClass._fullSymName}`));
586
+ def.push(...this.generateFunctions(girClass._tsData.conflictMethods, onlyStatic, namespace, indentCount, `Conflicting ${onlyStatic ? 'static ' : ''}methods`));
587
+ return def;
588
+ }
589
+ generateClassConstructors(girClass, namespace, indentCount = 1) {
590
+ const def = [];
591
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
592
+ throw new Error(NO_TSDATA('generateClassConstructors'));
593
+ }
594
+ // Constructors
595
+ def.push(...this.generateFunctions(girClass._tsData.constructors
596
+ .map((girFunc) => girFunc._tsData)
597
+ .filter((tsFunc) => !!tsFunc), true, namespace, indentCount));
598
+ // _init method
599
+ def.push(...this.generateFunctions(girClass._tsData.constructors
600
+ .map((girFunc) => girFunc._tsData)
601
+ .filter((tsFunc) => !!tsFunc), false, namespace, indentCount));
602
+ // Pseudo constructors
603
+ def.push(...this.generateFunctions(girClass._tsData.staticFunctions
604
+ .map((girFunc) => girFunc._tsData)
605
+ .filter((tsFunc) => !!tsFunc), true, namespace, indentCount));
606
+ if (def.length) {
607
+ def.unshift(...this.addInfoComment(`Constructors of ${girClass._module.packageName}.${girClass._fullSymName}`, indentCount));
608
+ }
609
+ return def;
610
+ }
611
+ /**
612
+ * Instance methods, vfunc_ prefix
613
+ * @param girClass
614
+ */
615
+ generateClassVirtualMethods(girClass, namespace, indentCount = 1) {
616
+ const def = [];
617
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
618
+ throw new Error(NO_TSDATA('generateClassVirtualMethods'));
619
+ }
620
+ def.push(...this.generateFunctions(girClass._tsData.virtualMethods
621
+ .map((girFunc) => girFunc._tsData)
622
+ .filter((tsFunc) => !!tsFunc), false, namespace, indentCount, `Own virtual methods of ${girClass._module.packageName}.${girClass._fullSymName}`));
623
+ return def;
624
+ }
625
+ generateClassSignalInterfaces(girClass, namespace, indentCount = 0) {
626
+ const def = [];
627
+ if (!girClass._tsData) {
628
+ throw new Error(NO_TSDATA('generateClassSignalInterface'));
629
+ }
630
+ const tsSignals = girClass._tsData.signals
631
+ .map((signal) => signal._tsData)
632
+ .filter((signal) => !!signal);
633
+ def.push(...this.generateCallbackInterfaces(tsSignals, namespace, indentCount, girClass._tsData.name, 'Signal callback interfaces'));
634
+ return def;
635
+ }
636
+ generateClassSignals(girClass, namespace) {
637
+ const def = [];
638
+ if (!girClass._tsData || !girClass._fullSymName || !girClass._module) {
639
+ throw new Error(NO_TSDATA('generateClassSignals'));
640
+ }
641
+ const signalDescs = this.generateSignals(girClass._tsData.signals, girClass, namespace, 0);
642
+ def.push(...this.mergeDescs(signalDescs, `Own signals of ${girClass._module.packageName}.${girClass._fullSymName}`, 1));
643
+ return def;
644
+ }
645
+ generateClassModules(girClass, namespace, indentCount = 0) {
646
+ const def = [];
647
+ const bodyDef = [];
648
+ if (!girClass._tsData)
649
+ return def;
650
+ const indent = generateIndent(indentCount);
651
+ const exp = !this.config.noNamespace || this.config.buildType === 'types' ? '' : 'export ';
652
+ // Signal interfaces
653
+ bodyDef.push(...this.generateClassSignalInterfaces(girClass, namespace, indentCount + 1));
654
+ // Properties interface for construction
655
+ bodyDef.push(...this.generateConstructPropsInterface(girClass, namespace, indentCount + 1));
656
+ if (!bodyDef.length) {
657
+ return [];
658
+ }
659
+ // START BODY
660
+ {
661
+ def.push(`${indent}${exp}module ${girClass._tsData.name} {`);
662
+ // Properties interface for construction
663
+ def.push(...bodyDef);
664
+ def.push(`${indent}}`, '');
665
+ }
666
+ // END BODY
667
+ return def;
668
+ }
669
+ /**
670
+ * In Typescript, interfaces and classes can have the same name,
671
+ * so we use this to generate interfaces with the same name to implement multiple inheritance
672
+ * @param girClass
673
+ * @param namespace
674
+ */
675
+ generateImplementationInterface(girClass, namespace) {
676
+ const def = [];
677
+ if (!girClass._tsData)
678
+ return def;
679
+ const genericParameters = this.generateGenericParameters(girClass._tsData.generics);
680
+ const implementationNames = girClass._tsData.parents
681
+ .filter((implementation) => implementation.type !== 'parent')
682
+ .map((implementation) => implementation.localParentName);
683
+ const ext = implementationNames.length ? ` extends ${implementationNames.join(', ')}` : '';
684
+ const interfaceHead = `${girClass._tsData.name}${genericParameters}${ext}`;
685
+ // START INTERFACE
686
+ {
687
+ def.push(this.generateExport('interface', interfaceHead, '{'));
688
+ // START BODY
689
+ {
690
+ // Properties
691
+ def.push(...this.generateClassProperties(girClass, false, namespace));
692
+ // Fields
693
+ def.push(...this.generateClassFields(girClass, false, namespace));
694
+ // Methods
695
+ def.push(...this.generateClassMethods(girClass, false, namespace));
696
+ // Virtual methods
697
+ def.push(...this.generateClassVirtualMethods(girClass, namespace));
698
+ // Signals
699
+ def.push(...this.generateClassSignals(girClass, namespace));
700
+ // TODO: Generate `GirSignalElement`s instead of generate the signal definition strings directly
701
+ def.push(...this.generateClassPropertySignals(girClass, namespace));
702
+ }
703
+ // END BODY
704
+ // END INTERFACE
705
+ def.push('}');
706
+ def.push('');
707
+ }
708
+ return def;
709
+ }
710
+ /**
711
+ * Represents a record, GObject class or interface as a Typescript class
712
+ * @param girClass
713
+ * @param namespace
714
+ */
715
+ generateClass(girClass, namespace) {
716
+ const def = [];
717
+ if (!girClass._tsData)
718
+ return def;
719
+ def.push(...this.generateClassModules(girClass, namespace));
720
+ def.push(...this.generateImplementationInterface(girClass, namespace));
721
+ def.push(...this.addGirDocComment(girClass._tsData.doc, 0));
722
+ const genericParameters = this.generateGenericParameters(girClass._tsData.generics);
723
+ const parentName = girClass._tsData.parents.find((parent) => parent.type === 'parent')?.localParentName;
724
+ const ext = parentName ? ` extends ${parentName}` : '';
725
+ const classHead = `${girClass._tsData.name}${genericParameters}${ext}`;
726
+ // START CLASS
727
+ {
728
+ if (girClass._tsData.isAbstract) {
729
+ def.push(this.generateExport('abstract class', classHead, '{'));
730
+ }
731
+ else {
732
+ def.push(this.generateExport('class', classHead, '{'));
733
+ }
734
+ // START BODY
735
+ {
736
+ // Static Properties
737
+ def.push(...this.generateClassProperties(girClass, true, namespace));
738
+ // Static Fields
739
+ def.push(...this.generateClassFields(girClass, true, namespace));
740
+ // Constructors
741
+ def.push(...this.generateClassConstructors(girClass, namespace));
742
+ // Static Methods
743
+ def.push(...this.generateClassMethods(girClass, true, namespace));
744
+ }
745
+ // END BODY
746
+ // END CLASS
747
+ def.push('}');
748
+ def.push('');
749
+ }
750
+ return def;
751
+ }
752
+ async exportModuleJS(moduleTemplateProcessor, girModule) {
753
+ const template = 'module.js';
754
+ if (this.config.outdir) {
755
+ await moduleTemplateProcessor.create(template, this.config.outdir, `${girModule.packageName}.js`);
756
+ }
757
+ else {
758
+ const moduleContent = moduleTemplateProcessor.load(template);
759
+ this.log.log(moduleContent);
760
+ }
761
+ }
762
+ async exportModuleTS(moduleTemplateProcessor, girModule) {
763
+ const template = 'module.d.ts';
764
+ const out = [];
765
+ out.push(...this.addTSDocCommentLines([girModule.packageName]));
766
+ out.push('');
767
+ // Module dependencies as type references or imports
768
+ if (this.config.environment === 'gjs') {
769
+ out.push(...this.generateModuleDependenciesImport('Gjs', 'Gjs', false));
770
+ }
771
+ for (const dependency of girModule.transitiveDependencies) {
772
+ // Don't reference yourself as a dependency
773
+ if (girModule.packageName !== dependency.packageName) {
774
+ if (dependency.exists) {
775
+ out.push(...this.generateModuleDependenciesImport(dependency.namespace, dependency.packageName, false));
776
+ }
777
+ else {
778
+ out.push(`// WARN: Dependency not found: '${dependency.packageName}'`);
779
+ this.log.warn(WARN_NOT_FOUND_DEPENDENCY_GIR_FILE(dependency.filename));
780
+ }
781
+ }
782
+ }
783
+ // START Namespace
784
+ {
785
+ if (this.config.buildType === 'types') {
786
+ out.push('');
787
+ out.push(`declare namespace ${girModule.namespace} {`);
788
+ }
789
+ else if (!this.config.noNamespace) {
790
+ out.push('');
791
+ out.push(`export namespace ${girModule.namespace} {`);
792
+ }
793
+ // Newline
794
+ out.push('');
795
+ if (girModule.ns.enumeration)
796
+ for (const girEnum of girModule.ns.enumeration)
797
+ out.push(...this.generateEnumeration(girEnum));
798
+ if (girModule.ns.bitfield)
799
+ for (const girBitfield of girModule.ns.bitfield)
800
+ out.push(...this.generateEnumeration(girBitfield));
801
+ if (girModule.ns.constant)
802
+ for (const girConst of girModule.ns.constant) {
803
+ if (!girConst._tsData)
804
+ continue;
805
+ out.push(...this.generateConstant(girConst._tsData, girModule.namespace, 0));
806
+ }
807
+ if (girModule.ns.function)
808
+ for (const girFunc of girModule.ns.function) {
809
+ if (!girFunc._tsData) {
810
+ // this.log.warn(NO_TSDATA('exportModuleTS functions'))
811
+ continue;
812
+ }
813
+ out.push(...this.generateFunction(girFunc._tsData, false, girModule.namespace, 0));
814
+ }
815
+ if (girModule.ns.callback)
816
+ for (const girCallback of girModule.ns.callback) {
817
+ if (!girCallback._tsData)
818
+ continue;
819
+ out.push(...this.generateCallbackInterface(girCallback._tsData, girModule.namespace));
820
+ }
821
+ if (girModule.ns.interface)
822
+ for (const girIface of girModule.ns.interface)
823
+ if (girIface._module) {
824
+ out.push(...this.generateClass(girIface, girIface._module.namespace));
825
+ }
826
+ // Extra interfaces if a template with the module name (e.g. '../templates/GObject-2.0.d.ts') is found
827
+ // E.g. used for GObject-2.0 to help define GObject classes in js;
828
+ // these aren't part of gi.
829
+ if (moduleTemplateProcessor.exists(`${girModule.packageName}.d.ts`)) {
830
+ const templatePatches = await moduleTemplateProcessor.load(`${girModule.packageName}.d.ts`);
831
+ out.push(templatePatches);
832
+ }
833
+ if (girModule.ns.class)
834
+ for (const gitClass of girModule.ns.class)
835
+ if (gitClass._module) {
836
+ out.push(...this.generateClass(gitClass, gitClass._module.namespace));
837
+ }
838
+ if (girModule.ns.record)
839
+ for (const girRecord of girModule.ns.record)
840
+ if (girRecord._module) {
841
+ out.push(...this.generateClass(girRecord, girRecord._module.namespace));
842
+ }
843
+ if (girModule.ns.union)
844
+ for (const girUnion of girModule.ns.union)
845
+ if (girUnion._module) {
846
+ out.push(...this.generateClass(girUnion, girUnion._module.namespace));
847
+ }
848
+ if (girModule.ns.alias)
849
+ // GType is not a number in GJS
850
+ for (const girAlias of girModule.ns.alias)
851
+ if (girModule.packageName !== 'GObject-2.0' || girAlias.$.name !== 'Type')
852
+ out.push(...this.generateAlias(girAlias, girModule.namespace, 1));
853
+ if (this.config.environment === 'gjs') {
854
+ // Properties added to every GIRepositoryNamespace
855
+ // https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L186-190
856
+ out.push(...this.generateConstant({
857
+ doc: {
858
+ text: 'Name of the imported GIR library',
859
+ tags: [
860
+ {
861
+ text: 'https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L188',
862
+ tagName: 'see',
863
+ paramName: '',
864
+ },
865
+ ],
866
+ },
867
+ name: '__name__',
868
+ type: [
869
+ {
870
+ type: 'string',
871
+ optional: false,
872
+ nullable: false,
873
+ callbacks: [],
874
+ generics: [],
875
+ isArray: false,
876
+ isFunction: false,
877
+ isCallback: false,
878
+ },
879
+ ],
880
+ isInjected: false,
881
+ tsTypeName: 'constant',
882
+ girTypeName: 'constant',
883
+ }, girModule.namespace, 0), ...this.generateConstant({
884
+ doc: {
885
+ text: 'Version of the imported GIR library',
886
+ tags: [
887
+ {
888
+ text: 'https://gitlab.gnome.org/GNOME/gjs/-/blob/master/gi/ns.cpp#L189',
889
+ tagName: 'see',
890
+ paramName: '',
891
+ },
892
+ ],
893
+ },
894
+ name: '__version__',
895
+ type: [
896
+ {
897
+ type: 'string',
898
+ optional: false,
899
+ nullable: false,
900
+ callbacks: [],
901
+ generics: [],
902
+ isArray: false,
903
+ isFunction: false,
904
+ isCallback: false,
905
+ },
906
+ ],
907
+ isInjected: false,
908
+ tsTypeName: 'constant',
909
+ girTypeName: 'constant',
910
+ }, girModule.namespace, 0));
911
+ }
912
+ }
913
+ // END Namespace
914
+ if (!this.config.noNamespace) {
915
+ out.push(`}`);
916
+ }
917
+ if (!this.config.noNamespace) {
918
+ out.push(`export default ${girModule.namespace};`);
919
+ }
920
+ const outResult = out.join('\n'); // End of file
921
+ if (this.config.outdir) {
922
+ await moduleTemplateProcessor.create(template, this.config.outdir, `${girModule.packageName}.d.ts`, outResult);
923
+ }
924
+ else {
925
+ const moduleContent = await moduleTemplateProcessor.load(template);
926
+ this.log.log(moduleContent + '\n' + outResult);
927
+ }
928
+ }
929
+ async exportModule(girModule) {
930
+ const moduleTemplateProcessor = new TemplateProcessor({
931
+ name: girModule.namespace,
932
+ namespace: girModule.namespace,
933
+ version: girModule.version,
934
+ importName: girModule.importName,
935
+ }, girModule.packageName, this.config);
936
+ await this.exportModuleTS(moduleTemplateProcessor, girModule);
937
+ if (this.config.buildType === 'lib') {
938
+ await this.exportModuleJS(moduleTemplateProcessor, girModule);
939
+ }
940
+ }
941
+ async exportGjs(girModules, girModulesGrouped) {
942
+ if (!this.config.outdir)
943
+ return;
944
+ const templateProcessor = new TemplateProcessor({ girModules: girModules, girModulesGrouped, typeDir: this.config.outdir + '/Gjs' }, 'gjs', this.config);
945
+ // Types
946
+ await templateProcessor.create('Gjs.d.ts', this.config.outdir, 'Gjs.d.ts');
947
+ await templateProcessor.create('index.d.ts', this.config.outdir, 'index.d.ts');
948
+ if (this.config.gnomeShellTypes) {
949
+ await templateProcessor.create('GnomeShell.d.ts', this.config.outdir, 'GnomeShell.d.ts');
950
+ await templateProcessor.createAll('.d.ts', 'misc', this.config.outdir, 'misc');
951
+ await templateProcessor.createAll('.d.ts', 'ui', this.config.outdir, 'ui');
952
+ await templateProcessor.createAll('.d.ts', 'ui/components', this.config.outdir, 'ui/components');
953
+ }
954
+ // Lib
955
+ if (this.config.buildType === 'lib') {
956
+ await templateProcessor.create('Gjs.js', this.config.outdir, 'Gjs.js');
957
+ await templateProcessor.create('index.js', this.config.outdir, 'index.js');
958
+ if (this.config.gnomeShellTypes) {
959
+ await templateProcessor.create('GnomeShell.js', this.config.outdir, 'GnomeShell.js');
960
+ await templateProcessor.createAll('.js', 'misc', this.config.outdir, 'misc');
961
+ await templateProcessor.createAll('.js', 'ui', this.config.outdir, 'ui');
962
+ await templateProcessor.createAll('.js', 'ui/components', this.config.outdir, 'ui/components');
963
+ }
964
+ }
965
+ // Alias
966
+ if (this.config.generateAlias) {
967
+ await templateProcessor.create('tsconfig.alias.json', './', 'tsconfig.alias.json', '', false);
968
+ }
969
+ }
970
+ async exportNodeGtk(girModules, girModulesGrouped) {
971
+ if (!this.config.outdir)
972
+ return;
973
+ const templateProcessor = new TemplateProcessor({ girModules, girModulesGrouped }, 'node', this.config);
974
+ await templateProcessor.create('index.d.ts', this.config.outdir, 'index.d.ts');
975
+ if (this.config.buildType === 'lib') {
976
+ await templateProcessor.create('index.js', this.config.outdir, 'index.js');
977
+ }
978
+ }
979
+ async start(girModules, girModulesGrouped, inheritanceTable) {
980
+ for (const girModule of girModules) {
981
+ await this.exportModule(girModule);
982
+ }
983
+ if (this.config.environment === 'node' && girModulesGrouped) {
984
+ // node-gtk internal stuff
985
+ await this.exportNodeGtk(girModules, girModulesGrouped);
986
+ }
987
+ if (this.config.environment === 'gjs' && girModulesGrouped && inheritanceTable) {
988
+ // GJS internal stuff
989
+ await this.exportGjs(girModules, girModulesGrouped);
990
+ }
991
+ }
992
+ }
993
+ //# sourceMappingURL=type-definition-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-definition-generator.js","sourceRoot":"","sources":["../src/type-definition-generator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@ts-for-gir/generator-typescript",
3
+ "version": "3.0.0-beta.11",
4
+ "description": "TypeScript type definition generator for ts-for-gir",
5
+ "module": "lib/index.js",
6
+ "main": "lib/index.js",
7
+ "type": "module",
8
+ "engines": {
9
+ "node": ">=18"
10
+ },
11
+ "scripts": {
12
+ "build": "yarn lint && yarn build:ts",
13
+ "build:ts": "tsc",
14
+ "clear": "yarn clear:build",
15
+ "clear:build": "rimraf ./lib",
16
+ "watch": "yarn build:ts -- --watch",
17
+ "lint": "eslint . --ext .ts,.tsx --fix"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/gjsify/ts-for-gjs.git"
22
+ },
23
+ "author": "Pascal Garber <pascal@artandcode.studio>",
24
+ "files": [
25
+ "lib",
26
+ "templates"
27
+ ],
28
+ "license": "Apache-2.0",
29
+ "bugs": {
30
+ "url": "https://github.com/gjsify/ts-for-gjs/issues"
31
+ },
32
+ "homepage": "https://github.com/gjsify/ts-for-gjs#readme",
33
+ "keywords": [
34
+ "generator"
35
+ ],
36
+ "devDependencies": {
37
+ "@types/node": "^18.14.0",
38
+ "@typescript-eslint/eslint-plugin": "^5.53.0",
39
+ "@typescript-eslint/parser": "^5.53.0",
40
+ "eslint": "^8.34.0",
41
+ "eslint-config-prettier": "^8.6.0",
42
+ "eslint-plugin-prettier": "^4.2.1",
43
+ "prettier": "^2.8.4",
44
+ "rimraf": "^4.1.2",
45
+ "typescript": "^4.9.5"
46
+ },
47
+ "dependencies": {
48
+ "@ts-for-gir/generator-base": "^3.0.0-beta.11",
49
+ "@ts-for-gir/lib": "^3.0.0-beta.11"
50
+ }
51
+ }