@idlizer/core 2.1.10-arktscgen-3a → 2.1.10-arktscgen-5
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/build/lib/src/Language.d.ts +0 -1
- package/build/lib/src/Language.js +0 -2
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +15 -2
- package/build/lib/src/LanguageWriters/ArgConvertors.js +75 -19
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +14 -2
- package/build/lib/src/LanguageWriters/LanguageWriter.js +12 -4
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +0 -1
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +2 -4
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +7 -7
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +37 -23
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +9 -5
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +73 -30
- package/build/lib/src/LanguageWriters/index.d.ts +2 -2
- package/build/lib/src/LanguageWriters/index.js +8 -13
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +4 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +24 -16
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +2 -0
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +7 -1
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +1 -2
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +0 -6
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -0
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +11 -0
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +8 -0
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +75 -27
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +2 -0
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +38 -12
- package/build/lib/src/LibraryInterface.d.ts +0 -1
- package/build/lib/src/config.d.ts +760 -0
- package/build/lib/src/config.js +7 -0
- package/build/lib/src/formatter.js +5 -2
- package/build/lib/src/from-idl/DtsPrinter.js +3 -3
- package/build/lib/src/from-idl/common.js +2 -2
- package/build/lib/src/from-idl/deserialize.d.ts +3 -7
- package/build/lib/src/from-idl/deserialize.js +65 -39
- package/build/lib/src/from-idl/parser.d.ts +1 -1
- package/build/lib/src/from-idl/parser.js +29 -20
- package/build/lib/src/idl.d.ts +12 -1
- package/build/lib/src/idl.js +73 -11
- package/build/lib/src/index.d.ts +3 -5
- package/build/lib/src/index.js +3 -5
- package/build/lib/src/inheritance.d.ts +0 -2
- package/build/lib/src/inheritance.js +0 -17
- package/build/lib/src/languageSpecificKeywords.js +1 -1
- package/build/lib/src/peer-generation/ConflictingDeclarations.d.ts +6 -0
- package/build/lib/src/peer-generation/ConflictingDeclarations.js +43 -0
- package/build/lib/src/peer-generation/LayoutManager.d.ts +2 -0
- package/build/lib/src/peer-generation/LayoutManager.js +15 -0
- package/build/lib/src/peer-generation/Materialized.d.ts +2 -0
- package/build/lib/src/peer-generation/Materialized.js +14 -1
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +0 -3
- package/build/lib/src/peer-generation/PeerLibrary.js +63 -38
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +6 -0
- package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +15 -3
- package/build/lib/src/peer-generation/isMaterialized.js +1 -1
- package/build/lib/src/peer-generation/modules.d.ts +2 -0
- package/build/lib/src/peer-generation/modules.js +14 -1
- package/build/lib/src/transformers/GenericTransformer.js +70 -5
- package/build/lib/src/transformers/NullTransformer.d.ts +0 -1
- package/build/lib/src/transformers/NullTransformer.js +1 -2
- package/build/lib/src/transformers/OnSerializeTransformer.d.ts +3 -0
- package/build/lib/src/transformers/OnSerializeTransformer.js +19 -0
- package/build/lib/src/util.d.ts +10 -39
- package/build/lib/src/util.js +56 -371
- package/package.json +45 -49
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
16
|
import { Language } from '../../Language';
|
|
17
17
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
18
|
-
import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, ReturnStatement } from "../LanguageWriter";
|
|
18
|
+
import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, ReturnStatement, } from "../LanguageWriter";
|
|
19
19
|
import { RuntimeType } from "../common";
|
|
20
20
|
import { isDefined } from "../../util";
|
|
21
|
-
import { removePoints } from '
|
|
21
|
+
import { removePoints } from '../../util';
|
|
22
22
|
export class KotlinLambdaReturnStatement {
|
|
23
23
|
constructor(expression) {
|
|
24
24
|
this.expression = expression;
|
|
@@ -87,7 +87,7 @@ export class KotlinEnumWithGetter {
|
|
|
87
87
|
const enumType = idl.createReferenceType(this.enumEntity);
|
|
88
88
|
writer.makeStaticBlock(() => {
|
|
89
89
|
members.forEach(it => {
|
|
90
|
-
writer.writeFieldDeclaration(it.name,
|
|
90
|
+
writer.writeFieldDeclaration(it.name, enumType, [FieldModifier.PUBLIC, FieldModifier.STATIC, FieldModifier.FINAL], false, writer.makeString(`${mangledName}(${it.stringId ? `\"${it.stringId}\"` : it.numberId})`));
|
|
91
91
|
});
|
|
92
92
|
});
|
|
93
93
|
const value = 'value';
|
|
@@ -230,6 +230,10 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
230
230
|
}
|
|
231
231
|
return this.typeConvertor.convert(type);
|
|
232
232
|
}
|
|
233
|
+
get interopModule() {
|
|
234
|
+
return "koalaui.interop";
|
|
235
|
+
}
|
|
236
|
+
maybeSemicolon() { return ""; }
|
|
233
237
|
writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
|
|
234
238
|
let extendsClause = superClass ? `${superClass}` : undefined;
|
|
235
239
|
let implementsClause = interfaces ? `${interfaces.join(' , ')}` : undefined;
|
|
@@ -293,32 +297,75 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
293
297
|
let name = method.name;
|
|
294
298
|
let signature = method.signature;
|
|
295
299
|
this.writeMethodImplementation(new Method(name, signature, [MethodModifier.STATIC]), writer => {
|
|
300
|
+
const pins = signature.args.flatMap((type, index) => this.pinArrayArgument(signature.argName(index), type));
|
|
301
|
+
const unpins = signature.args.flatMap((type, index) => this.unpinArrayArgument(signature.argName(index), type));
|
|
302
|
+
pins.filter(it => !!it).forEach(it => this.writeStatement(it));
|
|
296
303
|
const args = signature.args.map((type, index) => this.convertInteropArgument(signature.argName(index), type));
|
|
304
|
+
this.printForeignApiOptIn();
|
|
297
305
|
const interopCallExpression = this.makeFunctionCall(`kotlin${name}`, args);
|
|
298
306
|
if (signature.returnType === idl.IDLVoidType) {
|
|
299
307
|
this.writeExpressionStatement(interopCallExpression);
|
|
308
|
+
unpins.filter(it => !!it).forEach(it => this.writeStatement(it));
|
|
300
309
|
return;
|
|
301
310
|
}
|
|
302
311
|
const retval = "retval";
|
|
303
312
|
this.writeStatement(this.makeAssign(retval, undefined, interopCallExpression));
|
|
313
|
+
unpins.filter(it => !!it).forEach(it => this.writeStatement(it));
|
|
314
|
+
this.printForeignApiOptIn();
|
|
304
315
|
this.writeStatement(this.makeReturn(this.convertInteropReturnValue(retval, signature.returnType)));
|
|
305
316
|
});
|
|
306
317
|
}
|
|
318
|
+
printForeignApiOptIn() {
|
|
319
|
+
this.writeStatement(this.foreignApiOptIn);
|
|
320
|
+
}
|
|
321
|
+
get foreignApiOptIn() {
|
|
322
|
+
return new ExpressionStatement(this.makeString("@OptIn(ExperimentalForeignApi::class)"));
|
|
323
|
+
}
|
|
324
|
+
isPrimitiveArray(type) {
|
|
325
|
+
if (!idl.IDLContainerUtils.isSequence(type)) {
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
const elementType = type.elementType[0];
|
|
329
|
+
const allowedTypes = [idl.IDLU8Type, idl.IDLI32Type, idl.IDLF32Type];
|
|
330
|
+
return allowedTypes.includes(elementType);
|
|
331
|
+
}
|
|
332
|
+
pinArrayArgument(varName, type) {
|
|
333
|
+
if (this.isPrimitiveArray(type)) {
|
|
334
|
+
const pinCall = this.makeMethodCall(varName, "pin", []);
|
|
335
|
+
const assign = this.makeAssign(`${varName}Pinned`, undefined, pinCall, true, true);
|
|
336
|
+
return [this.foreignApiOptIn, assign];
|
|
337
|
+
}
|
|
338
|
+
return [];
|
|
339
|
+
}
|
|
340
|
+
unpinArrayArgument(varName, type) {
|
|
341
|
+
if (this.isPrimitiveArray(type)) {
|
|
342
|
+
const call = new ExpressionStatement(this.makeMethodCall(`${varName}Pinned`, "unpin", []));
|
|
343
|
+
return [this.foreignApiOptIn, call];
|
|
344
|
+
}
|
|
345
|
+
return [];
|
|
346
|
+
}
|
|
307
347
|
convertInteropArgument(varName, type) {
|
|
308
348
|
const realInteropType = this.getNodeName(type);
|
|
309
349
|
let expr;
|
|
310
350
|
switch (realInteropType) {
|
|
351
|
+
case "UByteArray":
|
|
352
|
+
case "IntArray":
|
|
353
|
+
case "FloatArray":
|
|
354
|
+
expr = `${varName}Pinned.addressOf(0)`;
|
|
355
|
+
break;
|
|
311
356
|
case "KPointer":
|
|
357
|
+
case "KNativePointer":
|
|
312
358
|
case "KSerializerBuffer":
|
|
313
359
|
expr = `${varName}.toCPointer<CPointed>()!!`;
|
|
314
360
|
break;
|
|
361
|
+
case "BigInteger":
|
|
315
362
|
case "KInt":
|
|
316
363
|
case "KLong":
|
|
317
364
|
case "KFloat":
|
|
318
365
|
case "KDouble":
|
|
366
|
+
case "String":
|
|
319
367
|
case "KStringPtr":
|
|
320
368
|
case "KBoolean":
|
|
321
|
-
case "Float64":
|
|
322
369
|
case "Float":
|
|
323
370
|
case "Double":
|
|
324
371
|
case "UInt":
|
|
@@ -333,12 +380,13 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
333
380
|
const realInteropType = this.getNodeName(type);
|
|
334
381
|
let expr;
|
|
335
382
|
switch (realInteropType) {
|
|
383
|
+
case "KNativePointer":
|
|
336
384
|
case "KPointer":
|
|
337
385
|
expr = `${varName}.toLong()`;
|
|
338
386
|
break;
|
|
339
387
|
case "KInt":
|
|
340
388
|
case "KLong":
|
|
341
|
-
case "
|
|
389
|
+
case "BigInteger":
|
|
342
390
|
case "Float":
|
|
343
391
|
case "Double":
|
|
344
392
|
case "Long":
|
|
@@ -389,30 +437,21 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
389
437
|
writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
|
|
390
438
|
let containerName = propName.concat("_container");
|
|
391
439
|
let truePropName = this.escapeKeyword(propName);
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}
|
|
397
|
-
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
440
|
+
const isReadonly = modifiers.includes(FieldModifier.READONLY);
|
|
441
|
+
const isGetter = modifiers.includes(FieldModifier.GET);
|
|
442
|
+
const isSetter = modifiers.includes(FieldModifier.SET);
|
|
443
|
+
const isImmutable = isReadonly || (isGetter && !isSetter);
|
|
398
444
|
let isOverride = modifiers.includes(FieldModifier.OVERRIDE);
|
|
399
445
|
let initializer = initExpr ? ` = ${initExpr.asString()}` : "";
|
|
400
|
-
this.print(`${isOverride ? 'override ' : ''}public ${
|
|
446
|
+
this.print(`${isOverride ? 'override ' : ''}public ${isImmutable ? "val " : "var "}${truePropName}: ${this.getNodeName(propType)}${initializer}`);
|
|
401
447
|
if (getter) {
|
|
402
448
|
this.pushIndent();
|
|
403
449
|
this.writeGetterImplementation(getter.method, getter.op);
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
this.print(`set(${truePropName}) {`);
|
|
410
|
-
this.pushIndent();
|
|
411
|
-
this.print(`${containerName} = ${truePropName}`);
|
|
412
|
-
this.popIndent();
|
|
413
|
-
this.print(`}`);
|
|
414
|
-
}
|
|
415
|
-
}
|
|
450
|
+
this.popIndent();
|
|
451
|
+
}
|
|
452
|
+
if (setter) {
|
|
453
|
+
this.pushIndent();
|
|
454
|
+
this.writeSetterImplementation(setter.method, setter ? setter.op : (writer) => { writer.print(`${containerName} = ${truePropName}`); });
|
|
416
455
|
this.popIndent();
|
|
417
456
|
}
|
|
418
457
|
}
|
|
@@ -434,7 +473,16 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
434
473
|
throw new Error("Not implemented");
|
|
435
474
|
}
|
|
436
475
|
writeConstant(constName, constType, constVal) {
|
|
437
|
-
|
|
476
|
+
this.print(`val ${constName} = ${constVal}`);
|
|
477
|
+
}
|
|
478
|
+
writeImports(moduleName, importedFeatures, aliases) {
|
|
479
|
+
if (importedFeatures.length !== aliases.length) {
|
|
480
|
+
throw new Error(`Inconsistent imports from ${moduleName}`);
|
|
481
|
+
}
|
|
482
|
+
for (let i = 0; i < importedFeatures.length; i++) {
|
|
483
|
+
const alias = aliases[i] ? ` as ${aliases[i]}` : ``;
|
|
484
|
+
this.writeExpressionStatement(this.makeString(`import ${moduleName}.${importedFeatures[i]}` + alias));
|
|
485
|
+
}
|
|
438
486
|
}
|
|
439
487
|
makeNull() {
|
|
440
488
|
return this.makeString('null');
|
|
@@ -529,14 +577,14 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
529
577
|
}
|
|
530
578
|
else {
|
|
531
579
|
const op = equals ? "==" : "!=";
|
|
532
|
-
return this.makeNaryOp(op, [this.makeRuntimeType(type), this.makeString(`${typeVarName}
|
|
580
|
+
return this.makeNaryOp(op, [this.makeRuntimeType(type), this.makeString(`${typeVarName}`)]);
|
|
533
581
|
}
|
|
534
582
|
}
|
|
535
583
|
getTagType() {
|
|
536
584
|
return idl.createReferenceType("Tag");
|
|
537
585
|
}
|
|
538
586
|
getRuntimeType() {
|
|
539
|
-
return idl.
|
|
587
|
+
return idl.IDLI8Type;
|
|
540
588
|
}
|
|
541
589
|
makeTupleAssign(receiver, fields) {
|
|
542
590
|
throw new Error("Not implemented");
|
|
@@ -37,6 +37,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
37
37
|
resolver?: ReferenceResolver;
|
|
38
38
|
}): LanguageWriter;
|
|
39
39
|
getNodeName(type: idl.IDLNode): string;
|
|
40
|
+
get interopModule(): string;
|
|
40
41
|
writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isAbstract?: boolean): void;
|
|
41
42
|
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
|
|
42
43
|
writeFunctionDeclaration(name: string, signature: MethodSignature, generics?: string[]): void;
|
|
@@ -65,6 +66,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
65
66
|
}, initExpr?: LanguageExpression): void;
|
|
66
67
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
67
68
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
69
|
+
writeImports(moduleName: string, importedFeatures: string[], aliases: string[]): void;
|
|
68
70
|
private writeDeclaration;
|
|
69
71
|
makeNull(type?: idl.IDLOptionalType): LanguageExpression;
|
|
70
72
|
makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression | undefined, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
|
|
@@ -127,6 +127,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
127
127
|
pushNamespace(namespace, options) {
|
|
128
128
|
this.namespaceStack.push(namespace);
|
|
129
129
|
const declaredPrefix = options.isDeclared ? "declare " : "";
|
|
130
|
+
if (options.isDefault) {
|
|
131
|
+
this.print(`export default ${namespace}`);
|
|
132
|
+
}
|
|
130
133
|
this.print(`export ${declaredPrefix}namespace ${namespace} {`);
|
|
131
134
|
if (options.ident)
|
|
132
135
|
this.pushIndent();
|
|
@@ -145,6 +148,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
145
148
|
}
|
|
146
149
|
return this.typeConvertor.convert(type);
|
|
147
150
|
}
|
|
151
|
+
get interopModule() {
|
|
152
|
+
return "@koalaui/interop";
|
|
153
|
+
}
|
|
148
154
|
writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
|
|
149
155
|
let extendsClause = superClass ? ` extends ${superClass}` : '';
|
|
150
156
|
let implementsClause = interfaces ? ` implements ${interfaces.join(",")}` : '';
|
|
@@ -204,11 +210,22 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
204
210
|
this.printer.print("}");
|
|
205
211
|
}
|
|
206
212
|
writeFieldDeclaration(name, type, modifiers, optional, initExpr) {
|
|
207
|
-
const init = initExpr != undefined ? ` = ${initExpr.asString()}` : ``;
|
|
208
213
|
let prefix = this.makeFieldModifiersList(modifiers);
|
|
209
214
|
if (prefix)
|
|
210
215
|
prefix += " ";
|
|
211
|
-
|
|
216
|
+
const typeName = this.getNodeName(type);
|
|
217
|
+
const isGetter = modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(FieldModifier.GET);
|
|
218
|
+
const isSetter = modifiers === null || modifiers === void 0 ? void 0 : modifiers.includes(FieldModifier.SET);
|
|
219
|
+
if (isGetter) {
|
|
220
|
+
this.printer.print(`${prefix}get ${name}(): ${typeName}`);
|
|
221
|
+
}
|
|
222
|
+
if (isSetter) {
|
|
223
|
+
this.printer.print(`${prefix}set ${name}(value: ${typeName})`);
|
|
224
|
+
}
|
|
225
|
+
if (isGetter || isSetter)
|
|
226
|
+
return;
|
|
227
|
+
const init = initExpr != undefined ? ` = ${initExpr.asString()}` : ``;
|
|
228
|
+
this.printer.print(`${prefix}${name}${optional ? "?" : ""}: ${typeName}${init}`);
|
|
212
229
|
}
|
|
213
230
|
writeNativeMethodDeclaration(method) {
|
|
214
231
|
let name = method.name;
|
|
@@ -245,7 +262,6 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
245
262
|
}
|
|
246
263
|
writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
|
|
247
264
|
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
248
|
-
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
249
265
|
let containerName = propName.concat("_container");
|
|
250
266
|
if (getter) {
|
|
251
267
|
if (!getter.op) {
|
|
@@ -255,17 +271,17 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
255
271
|
(writer) => {
|
|
256
272
|
writer.print(`return ${containerName}`);
|
|
257
273
|
});
|
|
258
|
-
if (isMutable) {
|
|
259
|
-
const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
|
|
260
|
-
this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC] : []), setter ? setter.op :
|
|
261
|
-
(writer) => {
|
|
262
|
-
writer.print(`${containerName} = ${propName}`);
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
274
|
}
|
|
266
|
-
|
|
267
|
-
|
|
275
|
+
if (setter) {
|
|
276
|
+
const setSignature = new NamedMethodSignature(idl.IDLVoidType, [propType], [propName]);
|
|
277
|
+
this.writeSetterImplementation(new Method(propName, setSignature, isStatic ? [MethodModifier.STATIC] : []), setter ? setter.op :
|
|
278
|
+
(writer) => {
|
|
279
|
+
writer.print(`${containerName} = ${propName}`);
|
|
280
|
+
});
|
|
268
281
|
}
|
|
282
|
+
if (getter || setter)
|
|
283
|
+
return;
|
|
284
|
+
this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType), initExpr);
|
|
269
285
|
}
|
|
270
286
|
writeTypeDeclaration(decl) {
|
|
271
287
|
var _a;
|
|
@@ -276,6 +292,16 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
276
292
|
writeConstant(constName, constType, constVal) {
|
|
277
293
|
this.print(`export const ${constName}: ${this.getNodeName(constType)}${constVal ? ' = ' + constVal : ''}`);
|
|
278
294
|
}
|
|
295
|
+
writeImports(moduleName, importedFeatures, aliases) {
|
|
296
|
+
if (importedFeatures.length !== aliases.length) {
|
|
297
|
+
throw new Error(`Inconsistent imports from ${moduleName}`);
|
|
298
|
+
}
|
|
299
|
+
const importNodes = [];
|
|
300
|
+
for (let i = 0; i < importedFeatures.length; i++) {
|
|
301
|
+
importNodes.push(importedFeatures[i] + (aliases[i] ? ` as ${aliases[i]}` : ``));
|
|
302
|
+
}
|
|
303
|
+
this.writeExpressionStatement(this.makeString(`import { ${importNodes.join(', ')} } from "${moduleName}"`));
|
|
304
|
+
}
|
|
279
305
|
writeDeclaration(name, signature, needReturn, needBracket, modifiers, generics) {
|
|
280
306
|
let prefix = !modifiers ? undefined : this.supportedModifiers
|
|
281
307
|
.filter(it => modifiers.includes(it))
|
|
@@ -9,7 +9,6 @@ export interface LibraryInterface extends ReferenceResolver {
|
|
|
9
9
|
get files(): idl.IDLFile[];
|
|
10
10
|
typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
|
|
11
11
|
declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
|
|
12
|
-
getInteropName(node: idl.IDLNode): string;
|
|
13
12
|
createTypeNameConvertor(language: Language): IdlNameConvertor;
|
|
14
13
|
createContinuationCallbackReference(continuationType: idl.IDLType): idl.IDLReferenceType;
|
|
15
14
|
getCurrentContext(): string | undefined;
|