@idlizer/core 2.1.9-arktscgen-6 → 2.1.9-arktscgen-9

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 (60) hide show
  1. package/build/lib/src/IndentedPrinter.d.ts +2 -1
  2. package/build/lib/src/IndentedPrinter.js +9 -2
  3. package/build/lib/src/Language.d.ts +0 -1
  4. package/build/lib/src/Language.js +7 -8
  5. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +27 -40
  6. package/build/lib/src/LanguageWriters/ArgConvertors.js +167 -206
  7. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -34
  8. package/build/lib/src/LanguageWriters/LanguageWriter.js +31 -82
  9. package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
  10. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +17 -1
  11. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +121 -6
  12. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +6 -0
  13. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +2 -3
  14. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +9 -25
  15. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +0 -5
  16. package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +0 -9
  17. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +4 -6
  18. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +15 -28
  19. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +14 -10
  20. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +51 -74
  21. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -8
  22. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +11 -21
  23. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +12 -9
  24. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +121 -32
  25. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +5 -6
  26. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +17 -33
  27. package/build/lib/src/config.d.ts +402 -133
  28. package/build/lib/src/config.js +13 -7
  29. package/build/lib/src/diagnosticmessages.d.ts +45 -0
  30. package/build/lib/src/diagnosticmessages.js +66 -0
  31. package/build/lib/src/diagnostictypes.d.ts +140 -0
  32. package/build/lib/src/diagnostictypes.js +72 -0
  33. package/build/lib/src/formatter.d.ts +3 -0
  34. package/build/lib/src/formatter.js +98 -0
  35. package/build/lib/src/from-idl/deserialize.d.ts +1 -0
  36. package/build/lib/src/from-idl/deserialize.js +107 -5
  37. package/build/lib/src/idl.d.ts +8 -0
  38. package/build/lib/src/idl.js +16 -3
  39. package/build/lib/src/index.d.ts +7 -1
  40. package/build/lib/src/index.js +7 -1
  41. package/build/lib/src/peer-generation/Materialized.d.ts +2 -2
  42. package/build/lib/src/peer-generation/Materialized.js +4 -9
  43. package/build/lib/src/peer-generation/PeerLibrary.js +1 -5
  44. package/build/lib/src/peer-generation/PeerMethod.d.ts +0 -4
  45. package/build/lib/src/peer-generation/PeerMethod.js +18 -36
  46. package/build/lib/src/peer-generation/idl/common.js +1 -1
  47. package/build/lib/src/peer-generation/isMaterialized.js +0 -4
  48. package/build/lib/src/peer-generation/modules.d.ts +1 -0
  49. package/build/lib/src/peer-generation/modules.js +25 -6
  50. package/build/lib/src/peer-generation/unions.d.ts +0 -2
  51. package/build/lib/src/peer-generation/unions.js +3 -23
  52. package/build/lib/src/transformers/FqnTransformer.d.ts +4 -0
  53. package/build/lib/src/transformers/FqnTransformer.js +17 -0
  54. package/build/lib/src/transformers/GenericTransformer.d.ts +8 -0
  55. package/build/lib/src/transformers/GenericTransformer.js +141 -0
  56. package/build/lib/src/util.d.ts +5 -2
  57. package/build/lib/src/util.js +26 -12
  58. package/package.json +2 -2
  59. package/build/lib/src/peer-generation/isExternalType.d.ts +0 -4
  60. package/build/lib/src/peer-generation/isExternalType.js +0 -15
@@ -65,6 +65,7 @@ export var IDLExtendedAttributes;
65
65
  IDLExtendedAttributes["DtsTag"] = "DtsTag";
66
66
  IDLExtendedAttributes["Entity"] = "Entity";
67
67
  IDLExtendedAttributes["Extends"] = "Extends";
68
+ IDLExtendedAttributes["ExtensionMethod"] = "ExtensionMethod";
68
69
  IDLExtendedAttributes["Import"] = "Import";
69
70
  IDLExtendedAttributes["DefaultExport"] = "DefaultExport";
70
71
  IDLExtendedAttributes["IndexSignature"] = "IndexSignature";
@@ -72,6 +73,7 @@ export var IDLExtendedAttributes;
72
73
  IDLExtendedAttributes["NativeModule"] = "NativeModule";
73
74
  IDLExtendedAttributes["Optional"] = "Optional";
74
75
  IDLExtendedAttributes["OriginalEnumMemberName"] = "OriginalEnumMemberName";
76
+ IDLExtendedAttributes["OriginalGenericName"] = "OriginalGenericName";
75
77
  IDLExtendedAttributes["Predefined"] = "Predefined";
76
78
  IDLExtendedAttributes["Protected"] = "Protected";
77
79
  IDLExtendedAttributes["Synthetic"] = "Synthetic";
@@ -183,11 +185,11 @@ export function forEachChild(node, cbEnter, cbLeave) {
183
185
  cleanup === null || cleanup === void 0 ? void 0 : cleanup();
184
186
  }
185
187
  /** Updates tree in place! */
186
- function updateEachChild(node, op, cbLeave) {
188
+ export function updateEachChild(node, op, cbLeave) {
187
189
  var _a;
188
190
  const old = node;
189
191
  node = op(old);
190
- if (node.kind !== old.kind) {
192
+ if (node.kind !== old.kind && !(isType(old) && isType(node))) {
191
193
  throw new Error("Kinds must be the same!");
192
194
  }
193
195
  switch (node.kind) {
@@ -640,7 +642,18 @@ export function createConstant(name, type, value, nodeInitializer = {}) {
640
642
  }
641
643
  export function clone(node) {
642
644
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
643
- const make = (node) => node;
645
+ const make = (newnode) => {
646
+ if (node.nodeLocation) {
647
+ newnode.nodeLocation = node.nodeLocation;
648
+ }
649
+ if (node.nameLocation) {
650
+ newnode.nameLocation = node.nameLocation;
651
+ }
652
+ if (node.valueLocation) {
653
+ newnode.valueLocation = node.valueLocation;
654
+ }
655
+ return newnode;
656
+ };
644
657
  const get = (node) => node;
645
658
  switch (node.kind) {
646
659
  case IDLKind.Interface: {
@@ -12,6 +12,9 @@ export * from "./util";
12
12
  export * from "./rand_utils";
13
13
  export * from "./IndentedPrinter";
14
14
  export * from "./LibraryInterface";
15
+ export * from "./diagnostictypes";
16
+ export * from "./diagnosticmessages";
17
+ export * from "./formatter";
15
18
  export * from "./LanguageWriters/LanguageWriter";
16
19
  export * from "./LanguageWriters/ArgConvertors";
17
20
  export * from "./LanguageWriters/common";
@@ -22,12 +25,14 @@ export * from "./LanguageWriters/convertors/ETSConvertors";
22
25
  export * from "./LanguageWriters/convertors/JavaConvertors";
23
26
  export * from "./LanguageWriters/convertors/CJConvertors";
24
27
  export * from "./LanguageWriters/convertors/InteropConvertors";
28
+ export * from "./LanguageWriters/convertors/KotlinConvertors";
25
29
  export * from "./LanguageWriters/writers/CJLanguageWriter";
26
30
  export * from "./LanguageWriters/writers/CLikeLanguageWriter";
27
31
  export * from "./LanguageWriters/writers/CppLanguageWriter";
28
32
  export * from "./LanguageWriters/writers/JavaLanguageWriter";
29
33
  export * from "./LanguageWriters/writers/TsLanguageWriter";
30
34
  export * from "./LanguageWriters/writers/ETSLanguageWriter";
35
+ export * from "./LanguageWriters/writers/KotlinLanguageWriter";
31
36
  export * from "./LanguageWriters/nameConvertor";
32
37
  export * from "./peer-generation/idl/IdlNameConvertor";
33
38
  export * from "./peer-generation/LayoutManager";
@@ -40,11 +45,12 @@ export * from "./peer-generation/BuilderClass";
40
45
  export * from "./peer-generation/Materialized";
41
46
  export * from "./peer-generation/modules";
42
47
  export * from "./peer-generation/isMaterialized";
43
- export * from "./peer-generation/isExternalType";
44
48
  export * from "./peer-generation/isStructureType";
45
49
  export * from "./peer-generation/isEnumType";
46
50
  export * from "./peer-generation/unions";
47
51
  export * from "./peer-generation/getSuperType";
52
+ export * from "./transformers/FqnTransformer";
53
+ export * from "./transformers/GenericTransformer";
48
54
  export * from "./LanguageWriters";
49
55
  export * from "./peer-generation/ReferenceResolver";
50
56
  export * from "./peer-generation/idl/common";
@@ -26,6 +26,9 @@ export * from "./util";
26
26
  export * from "./rand_utils";
27
27
  export * from "./IndentedPrinter";
28
28
  export * from "./LibraryInterface";
29
+ export * from "./diagnostictypes";
30
+ export * from "./diagnosticmessages";
31
+ export * from "./formatter";
29
32
  export * from "./LanguageWriters/LanguageWriter";
30
33
  export * from "./LanguageWriters/ArgConvertors";
31
34
  export * from "./LanguageWriters/common";
@@ -36,12 +39,14 @@ export * from "./LanguageWriters/convertors/ETSConvertors";
36
39
  export * from "./LanguageWriters/convertors/JavaConvertors";
37
40
  export * from "./LanguageWriters/convertors/CJConvertors";
38
41
  export * from "./LanguageWriters/convertors/InteropConvertors";
42
+ export * from "./LanguageWriters/convertors/KotlinConvertors";
39
43
  export * from "./LanguageWriters/writers/CJLanguageWriter";
40
44
  export * from "./LanguageWriters/writers/CLikeLanguageWriter";
41
45
  export * from "./LanguageWriters/writers/CppLanguageWriter";
42
46
  export * from "./LanguageWriters/writers/JavaLanguageWriter";
43
47
  export * from "./LanguageWriters/writers/TsLanguageWriter";
44
48
  export * from "./LanguageWriters/writers/ETSLanguageWriter";
49
+ export * from "./LanguageWriters/writers/KotlinLanguageWriter";
45
50
  export * from "./LanguageWriters/nameConvertor";
46
51
  export * from "./peer-generation/idl/IdlNameConvertor";
47
52
  export * from "./peer-generation/LayoutManager";
@@ -54,11 +59,12 @@ export * from "./peer-generation/BuilderClass";
54
59
  export * from "./peer-generation/Materialized";
55
60
  export * from "./peer-generation/modules";
56
61
  export * from "./peer-generation/isMaterialized";
57
- export * from "./peer-generation/isExternalType";
58
62
  export * from "./peer-generation/isStructureType";
59
63
  export * from "./peer-generation/isEnumType";
60
64
  export * from "./peer-generation/unions";
61
65
  export * from "./peer-generation/getSuperType";
66
+ export * from "./transformers/FqnTransformer";
67
+ export * from "./transformers/GenericTransformer";
62
68
  export * from "./LanguageWriters";
63
69
  export * from "./peer-generation/ReferenceResolver";
64
70
  export * from "./peer-generation/idl/common";
@@ -1,4 +1,5 @@
1
1
  import * as idl from '../idl';
2
+ import { Language } from '../Language';
2
3
  import { ArgConvertor } from '../LanguageWriters/ArgConvertors';
3
4
  import { Field, Method } from '../LanguageWriters/LanguageWriter';
4
5
  import { PeerClassBase } from './PeerClass';
@@ -17,7 +18,6 @@ export declare class MaterializedMethod extends PeerMethod {
17
18
  tsReturnType(): idl.IDLType | undefined;
18
19
  getPrivateMethod(): MaterializedMethod;
19
20
  withReturnType(returnType: idl.IDLType): MaterializedMethod;
20
- setOverloadIndex(index: number): void;
21
21
  }
22
22
  export declare function copyMaterializedMethod(method: MaterializedMethod, overrides: {
23
23
  method?: Method;
@@ -47,6 +47,6 @@ export declare class MaterializedClass implements PeerClassBase {
47
47
  }
48
48
  export declare function createDestroyPeerMethod(clazz: MaterializedClass): MaterializedMethod | undefined;
49
49
  export declare function getInternalClassName(name: string): string;
50
- export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern): string;
50
+ export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern, language?: Language): string;
51
51
  export declare function getMaterializedFileName(name: string): string;
52
52
  //# sourceMappingURL=Materialized.d.ts.map
@@ -42,6 +42,7 @@ export class MaterializedMethod extends PeerMethod {
42
42
  method: copyMethod(this.method, {
43
43
  modifiers: ((_b = this.method.modifiers) !== null && _b !== void 0 ? _b : [])
44
44
  .filter(it => it !== MethodModifier.PUBLIC)
45
+ .filter(it => it !== MethodModifier.OVERRIDE)
45
46
  .concat([MethodModifier.PRIVATE])
46
47
  })
47
48
  });
@@ -55,15 +56,10 @@ export class MaterializedMethod extends PeerMethod {
55
56
  const method = copyMethod(this.method, { signature: signature });
56
57
  return copyMaterializedMethod(this, { method: method });
57
58
  }
58
- setOverloadIndex(index) {
59
- this.overloadIndex = index;
60
- }
61
59
  }
62
60
  export function copyMaterializedMethod(method, overrides) {
63
61
  var _a;
64
- const copied = new MaterializedMethod(method.sig, method.originalParentName, method.implementationParentName, method.returnType, method.isCallSignature, (_a = overrides.method) !== null && _a !== void 0 ? _a : method.method);
65
- copied.setSameOverloadIndex(method);
66
- return copied;
62
+ return new MaterializedMethod(method.sig, method.originalParentName, method.implementationParentName, method.returnType, method.isCallSignature, (_a = overrides.method) !== null && _a !== void 0 ? _a : method.method);
67
63
  }
68
64
  export class MaterializedClass {
69
65
  constructor(decl, className, isInterface, isStaticMaterialized, superClass, interfaces, generics, fields, ctors, // zero size when used for global functions
@@ -83,7 +79,6 @@ export class MaterializedClass {
83
79
  this.needBeGenerated = needBeGenerated;
84
80
  this.taggedMethods = taggedMethods;
85
81
  this._isGlobal = false;
86
- PeerMethod.markAndGroupOverloads(methods);
87
82
  }
88
83
  getImplementationName() {
89
84
  return this.isInterface ? getInternalClassName(this.className) : this.className;
@@ -107,8 +102,8 @@ export function createDestroyPeerMethod(clazz) {
107
102
  export function getInternalClassName(name) {
108
103
  return `${name}Internal`;
109
104
  }
110
- export function getInternalClassQualifiedName(target, pattern = "package.namespace.name") {
111
- return getInternalClassName(qualifiedName(target, ".", pattern));
105
+ export function getInternalClassQualifiedName(target, pattern = "package.namespace.name", language) {
106
+ return getInternalClassName(qualifiedName(target, language !== null && language !== void 0 ? language : ".", pattern));
112
107
  }
113
108
  export function getMaterializedFileName(name) {
114
109
  const pascalCase = name.split('_').map(x => capitalize(x)).join('');
@@ -17,7 +17,7 @@ import * as idl from '../idl';
17
17
  import { resolveNamedNode } from '../resolveNamedNode';
18
18
  import { Language } from '../Language';
19
19
  import { createLanguageWriter } from '../LanguageWriters';
20
- import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ClassConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor, ExternalTypeConvertor, } from "../LanguageWriters/ArgConvertors";
20
+ import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ClassConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor, } from "../LanguageWriters/ArgConvertors";
21
21
  import { CppNameConvertor } from '../LanguageWriters/convertors/CppConvertors';
22
22
  import { CJTypeNameConvertor } from '../LanguageWriters/convertors/CJConvertors';
23
23
  import { CppConvertor } from '../LanguageWriters/convertors/CppConvertors';
@@ -32,7 +32,6 @@ import { isMaterialized } from './isMaterialized';
32
32
  import { isInIdlizeInternal } from '../idlize';
33
33
  import { isInCurrentModule } from './modules';
34
34
  import { generatorConfiguration } from '../config';
35
- import { isExternalType } from './isExternalType';
36
35
  import { KotlinTypeNameConvertor } from '../LanguageWriters/convertors/KotlinConvertors';
37
36
  export const lenses = {
38
37
  globals: lib.lens(lib.select.files())
@@ -392,9 +391,6 @@ export class PeerLibrary {
392
391
  return new TypeAliasConvertor(this, param, declaration);
393
392
  }
394
393
  if (idl.isInterface(declaration)) {
395
- if (isExternalType(declaration, this)) {
396
- return new ExternalTypeConvertor(this, param, declaration);
397
- }
398
394
  if (isMaterialized(declaration, this)) {
399
395
  return new MaterializedClassConvertor(this, param, declaration);
400
396
  }
@@ -16,7 +16,6 @@ export declare class PeerMethodSignature {
16
16
  readonly context: idl.IDLEntry | undefined;
17
17
  readonly modifiers: (MethodModifier.FORCE_CONTEXT | MethodModifier.THROWS)[];
18
18
  constructor(name: string, fqname: string, args: PeerMethodArg[], returnType: idl.IDLType, context?: idl.IDLEntry | undefined, modifiers?: (MethodModifier.FORCE_CONTEXT | MethodModifier.THROWS)[]);
19
- static stub(): PeerMethodSignature;
20
19
  static generateOverloadPostfix(decl: idl.IDLConstructor | idl.IDLMethod | idl.IDLCallable | idl.IDLProperty): string;
21
20
  static get CTOR(): string;
22
21
  static get GET_FINALIZER(): string;
@@ -28,11 +27,8 @@ export declare class PeerMethod {
28
27
  returnType: IDLType;
29
28
  isCallSignature: boolean;
30
29
  method: Method;
31
- protected overloadIndex?: number;
32
30
  constructor(sig: PeerMethodSignature, originalParentName: string, returnType: IDLType, isCallSignature: boolean, method: Method);
33
31
  argConvertors(library: PeerLibrary): ArgConvertor[];
34
32
  argAndOutConvertors(library: PeerLibrary): ArgConvertor[];
35
- static markAndGroupOverloads(methods: PeerMethod[]): PeerMethod[];
36
- setSameOverloadIndex(copyFrom: PeerMethod): void;
37
33
  }
38
34
  //# sourceMappingURL=PeerMethod.d.ts.map
@@ -15,7 +15,6 @@
15
15
  import * as idl from '../idl';
16
16
  import { createOutArgConvertor } from "../LanguageWriters/ArgConvertors";
17
17
  import { MethodModifier } from "../LanguageWriters/LanguageWriter";
18
- import { isDefined } from "../util";
19
18
  export class PeerMethodArg {
20
19
  constructor(name, type) {
21
20
  this.name = name;
@@ -37,32 +36,30 @@ export class PeerMethodSignature {
37
36
  this.context = context;
38
37
  this.modifiers = modifiers;
39
38
  }
40
- // whilt migration we're creating PeerMethod, but in reality we shoudnt (created method does not goes through interop and does not have representation in native)
41
- static stub() {
42
- return new PeerMethodSignature("%STUB$", "%STUB$", [], idl.IDLVoidType, undefined);
43
- }
44
39
  static generateOverloadPostfix(decl) {
45
- if (!decl.parent || !idl.isInterface(decl.parent))
40
+ if (!decl.parent)
46
41
  return ``;
42
+ let sameNamed = [];
47
43
  if (idl.isMethod(decl) || idl.isProperty(decl)) {
48
- let sameNamed = [
49
- ...decl.parent.properties,
50
- ...decl.parent.methods,
51
- ].filter(it => it.name === decl.name);
52
- const overloadIndex = sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
53
- return overloadIndex;
44
+ let members = [];
45
+ if (idl.isInterface(decl.parent))
46
+ members = [...decl.parent.properties, ...decl.parent.methods];
47
+ else if (idl.isNamespace(decl.parent))
48
+ members = decl.parent.members;
49
+ else if (idl.isFile(decl.parent))
50
+ members = decl.parent.entries.filter(idl.isMethod);
51
+ sameNamed = members.filter(it => it.name === decl.name);
52
+ }
53
+ else if (idl.isConstructor(decl) && idl.isInterface(decl.parent)) {
54
+ sameNamed = decl.parent.constructors;
54
55
  }
55
- if (idl.isConstructor(decl)) {
56
- const sameNamed = decl.parent.constructors.filter(it => it.name === decl.name);
57
- const overloadIndex = sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
58
- return overloadIndex;
56
+ else if (idl.isCallable(decl) && idl.isInterface(decl.parent)) {
57
+ sameNamed = decl.parent.callables;
59
58
  }
60
- if (idl.isCallable(decl)) {
61
- const sameNamed = decl.parent.callables;
62
- const overloadIndex = sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
63
- return overloadIndex;
59
+ else {
60
+ throw new Error("unexpected type of declaration");
64
61
  }
65
- throw new Error("unexpected type of declaration");
62
+ return sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
66
63
  }
67
64
  static get CTOR() { return "construct"; }
68
65
  static get GET_FINALIZER() { return "getFinalizer"; }
@@ -90,20 +87,5 @@ export class PeerMethod {
90
87
  const outArgConvertor = createOutArgConvertor(library, this.sig.returnType, this.sig.args.map(it => it.name));
91
88
  return outArgConvertor ? convertors.concat(outArgConvertor) : convertors;
92
89
  }
93
- static markAndGroupOverloads(methods) {
94
- let groupedMethods = [];
95
- for (const peerMethod of methods) {
96
- if (isDefined(peerMethod.overloadIndex))
97
- continue;
98
- const sameNamedMethods = methods.filter(it => it.method.name === peerMethod.method.name);
99
- if (sameNamedMethods.length > 1)
100
- sameNamedMethods.forEach((it, index) => it.overloadIndex = index);
101
- groupedMethods = groupedMethods.concat(sameNamedMethods);
102
- }
103
- return groupedMethods;
104
- }
105
- setSameOverloadIndex(copyFrom) {
106
- this.overloadIndex = copyFrom.overloadIndex;
107
- }
108
90
  }
109
91
  //# sourceMappingURL=PeerMethod.js.map
@@ -38,7 +38,7 @@ export function qualifiedName(decl, languageOrDelimiter, pattern) {
38
38
  throw new Error("internal error, name required for no-named node");
39
39
  const delimiter = typeof languageOrDelimiter === "string"
40
40
  ? languageOrDelimiter
41
- : (languageOrDelimiter === Language.CPP ? '_' : '.');
41
+ : ([Language.CPP, Language.CJ, Language.KOTLIN].includes(languageOrDelimiter) ? '_' : '.');
42
42
  if (!idl.isEntry(decl))
43
43
  throw new Error(`Expected to have an IDLEntry, got ${idl.IDLKind[decl.kind]}`);
44
44
  return idl.getQualifiedName(decl, pattern).split(".").join(delimiter);
@@ -15,7 +15,6 @@
15
15
  import { generatorConfiguration } from '../config';
16
16
  import * as idl from '../idl';
17
17
  import { isBuilderClass } from './BuilderClass';
18
- import { isExternalType } from './isExternalType';
19
18
  import { getSuper } from './getSuperType';
20
19
  export function isMaterialized(declaration, resolver) {
21
20
  var _a;
@@ -45,9 +44,6 @@ export function isMaterialized(declaration, resolver) {
45
44
  if (generatorConfiguration().ignoreMaterialized.includes(declaration.name)) {
46
45
  return false;
47
46
  }
48
- if (isExternalType(declaration, resolver)) {
49
- return false;
50
- }
51
47
  // A materialized class is a class or an interface with methods
52
48
  // excluding components and related classes
53
49
  if (declaration.methods.length > 0 || declaration.constructors.length > 0)
@@ -2,6 +2,7 @@ import { ModuleConfiguration } from "../config";
2
2
  import * as idl from "../idl";
3
3
  export declare function isInModule(node: idl.IDLNode, module: ModuleConfiguration): boolean;
4
4
  export declare function isInModule(packageName: string, module: ModuleConfiguration): boolean;
5
+ export declare function isInExternalModule(node: idl.IDLNode): boolean;
5
6
  export declare function getModuleFor(node: idl.IDLNode): ModuleConfiguration;
6
7
  export declare function getModuleFor(packageName: string): ModuleConfiguration;
7
8
  export declare function currentModule(): ModuleConfiguration;
@@ -1,22 +1,40 @@
1
1
  import { generatorConfiguration } from "../config";
2
2
  import * as idl from "../idl";
3
+ const modulesCache = new Map();
3
4
  export function isInModule(nodeOrPackage, module) {
4
5
  if (typeof nodeOrPackage === 'object')
5
6
  return isInModule(idl.getPackageName(nodeOrPackage), module);
6
7
  return module.packages.some(modulePackage => nodeOrPackage.startsWith(modulePackage));
7
8
  }
9
+ export function isInExternalModule(node) {
10
+ var _a;
11
+ return (_a = getModuleFor(node).external) !== null && _a !== void 0 ? _a : false;
12
+ }
8
13
  export function getModuleFor(nodeOrPackage) {
9
14
  if (typeof nodeOrPackage === "object")
10
15
  return getModuleFor(idl.getPackageName(nodeOrPackage));
11
16
  const packageName = nodeOrPackage;
17
+ let module = modulesCache.get(packageName);
18
+ if (module)
19
+ return module;
20
+ module = getApplicableModuleFor(packageName);
21
+ modulesCache.set(packageName, module);
22
+ return module;
23
+ }
24
+ function getApplicableModuleFor(packageName) {
12
25
  const config = generatorConfiguration();
13
26
  const applicableModules = [...config.modules.values()].filter(module => isInModule(packageName, module));
14
27
  if (applicableModules.length === 0) {
15
- if (nodeOrPackage === '') {
28
+ if (packageName === '') {
16
29
  console.error("WARNING: use current module for empty package");
17
30
  return currentModule();
18
31
  }
19
- throw new Error(`Package ${packageName} is not listed in any module`);
32
+ if (packageName.startsWith(`idlize.`)) {
33
+ return currentModule();
34
+ }
35
+ const modules = [...config.modules.keys()].map(it => `"${it}"`).join(", ");
36
+ throw new Error(`Package "${packageName}" is not listed in any module.`
37
+ + ` Add the "${packageName}" to the existed list of modules [${modules}] or new one in the configuration file`);
20
38
  }
21
39
  if (applicableModules.length > 1)
22
40
  throw new Error(`Package ${packageName} listed in ${applicableModules.length} packages: ${applicableModules.map(it => it.name).join(", ")}`);
@@ -30,9 +48,10 @@ export function currentModule() {
30
48
  return result;
31
49
  }
32
50
  export function isInCurrentModule(nodeOrPackage) {
33
- if (typeof nodeOrPackage === 'string')
34
- return isInModule(nodeOrPackage, currentModule());
35
- else
36
- return isInModule(nodeOrPackage, currentModule());
51
+ // check the nodeOrPackage belongs to some module
52
+ const module = typeof nodeOrPackage === 'string'
53
+ ? getModuleFor(nodeOrPackage)
54
+ : getModuleFor(nodeOrPackage);
55
+ return generatorConfiguration().moduleName == module.name;
37
56
  }
38
57
  //# sourceMappingURL=modules.js.map
@@ -20,11 +20,9 @@ export declare class UnionRuntimeTypeChecker {
20
20
  private convertors;
21
21
  private conflictingConvertors;
22
22
  private duplicateMembers;
23
- private discriminators;
24
23
  constructor(convertors: ArgConvertor[]);
25
24
  private checkConflicts;
26
25
  makeDiscriminator(value: string, convertorIndex: number, writer: LanguageWriter): LanguageExpression;
27
- reportConflicts(context: string | undefined, writer: LanguageWriter): void;
28
26
  }
29
27
  export declare function flattenUnionType(library: LibraryInterface, type: IDLType): IDLType;
30
28
  //# sourceMappingURL=unions.d.ts.map
@@ -15,8 +15,8 @@
15
15
  import { convertType } from "../LanguageWriters";
16
16
  import { IDLCustomObjectType, IDLUndefinedType, isType, isUnionType } from '../idl';
17
17
  import { collapseTypes } from "./idl/common";
18
- import { CustomTypeConvertor } from "../LanguageWriters/ArgConvertors";
19
18
  import { RuntimeType } from "../LanguageWriters/common";
19
+ import { Language } from "../Language";
20
20
  export class UnionFlattener {
21
21
  constructor(resolver) {
22
22
  this.resolver = resolver;
@@ -53,7 +53,6 @@ export class UnionRuntimeTypeChecker {
53
53
  this.convertors = convertors;
54
54
  this.conflictingConvertors = new Set();
55
55
  this.duplicateMembers = new Set();
56
- this.discriminators = [];
57
56
  this.checkConflicts();
58
57
  }
59
58
  checkConflicts() {
@@ -87,31 +86,12 @@ export class UnionRuntimeTypeChecker {
87
86
  }
88
87
  makeDiscriminator(value, convertorIndex, writer) {
89
88
  const convertor = this.convertors[convertorIndex];
90
- if (this.conflictingConvertors.has(convertor) && writer.language.needsUnionDiscrimination) {
89
+ if (this.conflictingConvertors.has(convertor) && writer.language === Language.TS) {
91
90
  const discriminator = convertor.unionDiscriminator(value, convertorIndex, writer, this.duplicateMembers);
92
- this.discriminators.push([discriminator, convertor, convertorIndex]);
93
91
  if (discriminator)
94
92
  return discriminator;
95
93
  }
96
- return writer.makeNaryOp("||", convertor.runtimeTypes.map((it, runtimeTypeIndex) => writer.makeNaryOp("==", [
97
- writer.makeUnionVariantCondition(convertor, value, `${value}_type`, RuntimeType[it], convertorIndex, runtimeTypeIndex)
98
- ])));
99
- }
100
- reportConflicts(context, writer) {
101
- if (this.discriminators.filter(([discriminator, _, __]) => discriminator === undefined).length > 1) {
102
- let report = `Union discrimination code can not be generated for \`${context}\`.\n`;
103
- report += `Possible reasons for that are too similar or unresolved types in union (see below).\n`;
104
- report += ` # | type | duplicated properties | resolved | discriminator expression\n`;
105
- const properties = Array.from(this.duplicateMembers).join(",").padEnd(30);
106
- this.discriminators.forEach(([discr, conv, n]) => {
107
- const num = n.toString().padEnd(3);
108
- const typename = conv.targetType(writer).padEnd(30);
109
- const resolved = (conv instanceof CustomTypeConvertor ? "no" : "yes").padEnd(9);
110
- const discriminator = discr ? discr.asString() : "<undefined>";
111
- report += ` ${num}| ${typename}| ${properties}| ${resolved}| ${discriminator}\n`;
112
- });
113
- // throw new Error(report)
114
- }
94
+ return writer.makeString(writer.discriminate(value, convertorIndex, convertor.idlType, convertor.runtimeTypes));
115
95
  }
116
96
  }
117
97
  export function flattenUnionType(library, type) {
@@ -0,0 +1,4 @@
1
+ import * as idl from "../idl";
2
+ import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
3
+ export declare function inplaceFQN(node: idl.IDLNode, resolver: ReferenceResolver): void;
4
+ //# sourceMappingURL=FqnTransformer.d.ts.map
@@ -0,0 +1,17 @@
1
+ import * as idl from "../idl";
2
+ export function inplaceFQN(node, resolver) {
3
+ if (idl.isReferenceType(node))
4
+ inplaceReferenceFQN(node, resolver);
5
+ idl.forEachChild(node, (child) => {
6
+ if (idl.isReferenceType(child))
7
+ inplaceReferenceFQN(child, resolver);
8
+ });
9
+ }
10
+ function inplaceReferenceFQN(ref, resolver) {
11
+ const resolved = resolver.resolveTypeReference(ref);
12
+ if (resolved === undefined) {
13
+ throw new Error("Can not expand FQN for " + ref.name);
14
+ }
15
+ ref.name = idl.getFQName(resolved);
16
+ }
17
+ //# sourceMappingURL=FqnTransformer.js.map
@@ -0,0 +1,8 @@
1
+ import * as idl from "../idl";
2
+ import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
3
+ export declare function inplaceGenerics(node: idl.IDLNode, resolver: ReferenceResolver, options?: {
4
+ ignore?: ((node: idl.IDLNode) => boolean)[];
5
+ }): void;
6
+ export declare function isInplacedGeneric(entry: idl.IDLEntry): boolean;
7
+ export declare function maybeRestoreGenerics(maybeTransformedGeneric: idl.IDLReferenceType | idl.IDLEntry, resolver: ReferenceResolver): idl.IDLReferenceType | undefined;
8
+ //# sourceMappingURL=GenericTransformer.d.ts.map