@idlizer/core 2.1.10-arktscgen-4 → 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.
Files changed (49) hide show
  1. package/build/lib/src/Language.d.ts +0 -1
  2. package/build/lib/src/Language.js +0 -2
  3. package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +3 -2
  4. package/build/lib/src/LanguageWriters/ArgConvertors.js +20 -16
  5. package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +5 -1
  6. package/build/lib/src/LanguageWriters/LanguageWriter.js +2 -0
  7. package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +0 -1
  8. package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +1 -3
  9. package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +7 -7
  10. package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +37 -23
  11. package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +9 -5
  12. package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +4 -4
  13. package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +73 -30
  14. package/build/lib/src/LanguageWriters/index.d.ts +2 -2
  15. package/build/lib/src/LanguageWriters/index.js +8 -13
  16. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +2 -0
  17. package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +13 -1
  18. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +2 -0
  19. package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +7 -1
  20. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +1 -2
  21. package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +0 -3
  22. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -0
  23. package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +11 -0
  24. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +8 -0
  25. package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +75 -27
  26. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +2 -0
  27. package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +35 -12
  28. package/build/lib/src/LibraryInterface.d.ts +0 -1
  29. package/build/lib/src/from-idl/DtsPrinter.js +1 -1
  30. package/build/lib/src/from-idl/deserialize.js +1 -1
  31. package/build/lib/src/idl.d.ts +5 -0
  32. package/build/lib/src/idl.js +19 -1
  33. package/build/lib/src/index.d.ts +1 -4
  34. package/build/lib/src/index.js +1 -4
  35. package/build/lib/src/inheritance.d.ts +0 -2
  36. package/build/lib/src/inheritance.js +0 -17
  37. package/build/lib/src/peer-generation/ConflictingDeclarations.d.ts +6 -0
  38. package/build/lib/src/peer-generation/ConflictingDeclarations.js +43 -0
  39. package/build/lib/src/peer-generation/LayoutManager.d.ts +2 -0
  40. package/build/lib/src/peer-generation/LayoutManager.js +15 -0
  41. package/build/lib/src/peer-generation/Materialized.d.ts +2 -0
  42. package/build/lib/src/peer-generation/Materialized.js +14 -1
  43. package/build/lib/src/peer-generation/PeerLibrary.d.ts +0 -3
  44. package/build/lib/src/peer-generation/PeerLibrary.js +53 -37
  45. package/build/lib/src/peer-generation/idl/IdlNameConvertor.d.ts +6 -0
  46. package/build/lib/src/peer-generation/idl/IdlNameConvertor.js +15 -3
  47. package/build/lib/src/util.d.ts +5 -39
  48. package/build/lib/src/util.js +43 -369
  49. package/package.json +45 -49
@@ -3,11 +3,9 @@ export * from "./idl";
3
3
  export * from "./resolveNamedNode";
4
4
  export * from "./visitor";
5
5
  export * from "./library";
6
- export * from "./idlize";
7
6
  export * from "./inheritance";
8
7
  export * from "./Language";
9
8
  export * from "./languageSpecificKeywords";
10
- export * from "./options";
11
9
  export * from "./util";
12
10
  export * from "./rand_utils";
13
11
  export * from "./IndentedPrinter";
@@ -22,14 +20,12 @@ export * from "./LanguageWriters/nameConvertor";
22
20
  export * from "./LanguageWriters/convertors/CppConvertors";
23
21
  export * from "./LanguageWriters/convertors/TSConvertors";
24
22
  export * from "./LanguageWriters/convertors/ETSConvertors";
25
- export * from "./LanguageWriters/convertors/JavaConvertors";
26
23
  export * from "./LanguageWriters/convertors/CJConvertors";
27
24
  export * from "./LanguageWriters/convertors/InteropConvertors";
28
25
  export * from "./LanguageWriters/convertors/KotlinConvertors";
29
26
  export * from "./LanguageWriters/writers/CJLanguageWriter";
30
27
  export * from "./LanguageWriters/writers/CLikeLanguageWriter";
31
28
  export * from "./LanguageWriters/writers/CppLanguageWriter";
32
- export * from "./LanguageWriters/writers/JavaLanguageWriter";
33
29
  export * from "./LanguageWriters/writers/TsLanguageWriter";
34
30
  export * from "./LanguageWriters/writers/ETSLanguageWriter";
35
31
  export * from "./LanguageWriters/writers/KotlinLanguageWriter";
@@ -49,6 +45,7 @@ export * from "./peer-generation/isStructureType";
49
45
  export * from "./peer-generation/isEnumType";
50
46
  export * from "./peer-generation/unions";
51
47
  export * from "./peer-generation/getSuperType";
48
+ export * from "./peer-generation/ConflictingDeclarations";
52
49
  export * from "./transformers/FqnTransformer";
53
50
  export * from "./transformers/GenericTransformer";
54
51
  export * from "./transformers/NullTransformer";
@@ -17,11 +17,9 @@ export * from "./idl";
17
17
  export * from "./resolveNamedNode";
18
18
  export * from "./visitor";
19
19
  export * from "./library";
20
- export * from "./idlize";
21
20
  export * from "./inheritance";
22
21
  export * from "./Language";
23
22
  export * from "./languageSpecificKeywords";
24
- export * from "./options";
25
23
  export * from "./util";
26
24
  export * from "./rand_utils";
27
25
  export * from "./IndentedPrinter";
@@ -36,14 +34,12 @@ export * from "./LanguageWriters/nameConvertor";
36
34
  export * from "./LanguageWriters/convertors/CppConvertors";
37
35
  export * from "./LanguageWriters/convertors/TSConvertors";
38
36
  export * from "./LanguageWriters/convertors/ETSConvertors";
39
- export * from "./LanguageWriters/convertors/JavaConvertors";
40
37
  export * from "./LanguageWriters/convertors/CJConvertors";
41
38
  export * from "./LanguageWriters/convertors/InteropConvertors";
42
39
  export * from "./LanguageWriters/convertors/KotlinConvertors";
43
40
  export * from "./LanguageWriters/writers/CJLanguageWriter";
44
41
  export * from "./LanguageWriters/writers/CLikeLanguageWriter";
45
42
  export * from "./LanguageWriters/writers/CppLanguageWriter";
46
- export * from "./LanguageWriters/writers/JavaLanguageWriter";
47
43
  export * from "./LanguageWriters/writers/TsLanguageWriter";
48
44
  export * from "./LanguageWriters/writers/ETSLanguageWriter";
49
45
  export * from "./LanguageWriters/writers/KotlinLanguageWriter";
@@ -63,6 +59,7 @@ export * from "./peer-generation/isStructureType";
63
59
  export * from "./peer-generation/isEnumType";
64
60
  export * from "./peer-generation/unions";
65
61
  export * from "./peer-generation/getSuperType";
62
+ export * from "./peer-generation/ConflictingDeclarations";
66
63
  export * from "./transformers/FqnTransformer";
67
64
  export * from "./transformers/GenericTransformer";
68
65
  export * from "./transformers/NullTransformer";
@@ -1,4 +1,3 @@
1
- import * as ts from "typescript";
2
1
  export declare enum InheritanceRole {
3
2
  Finalizable = 0,
4
3
  PeerNode = 1,
@@ -6,7 +5,6 @@ export declare enum InheritanceRole {
6
5
  Heir = 3,
7
6
  Standalone = 4
8
7
  }
9
- export declare function isCommonMethodOrSubclass(typeChecker: ts.TypeChecker, decl: ts.ClassDeclaration): boolean;
10
8
  export declare function determineInheritanceRole(name: string): InheritanceRole;
11
9
  export declare function determineParentRole(name: string | undefined, parent: string | undefined): InheritanceRole;
12
10
  export declare function isCommonMethod(name: string): boolean;
@@ -12,9 +12,7 @@
12
12
  * See the License for the specific language governing permissions and
13
13
  * limitations under the License.
14
14
  */
15
- import * as ts from "typescript";
16
15
  import { generatorConfiguration } from "./config";
17
- import { asString, heritageDeclarations, identName } from "./util";
18
16
  export var InheritanceRole;
19
17
  (function (InheritanceRole) {
20
18
  InheritanceRole[InheritanceRole["Finalizable"] = 0] = "Finalizable";
@@ -23,21 +21,6 @@ export var InheritanceRole;
23
21
  InheritanceRole[InheritanceRole["Heir"] = 3] = "Heir";
24
22
  InheritanceRole[InheritanceRole["Standalone"] = 4] = "Standalone";
25
23
  })(InheritanceRole || (InheritanceRole = {}));
26
- export function isCommonMethodOrSubclass(typeChecker, decl) {
27
- var _a;
28
- let name = identName(decl.name);
29
- let isSubclass = isRoot(name);
30
- (_a = decl.heritageClauses) === null || _a === void 0 ? void 0 : _a.forEach(it => {
31
- heritageDeclarations(typeChecker, it).forEach(it => {
32
- let name = asString(it.name);
33
- isSubclass = isSubclass || isRoot(name);
34
- if (!ts.isClassDeclaration(it))
35
- return isSubclass;
36
- isSubclass = isSubclass || isCommonMethodOrSubclass(typeChecker, it);
37
- });
38
- });
39
- return isSubclass;
40
- }
41
24
  export function determineInheritanceRole(name) {
42
25
  if (generatorConfiguration().rootComponents.includes(name))
43
26
  return InheritanceRole.Root;
@@ -0,0 +1,6 @@
1
+ import * as idl from "../idl";
2
+ import { Language } from "../Language";
3
+ import { LibraryInterface } from "../LibraryInterface";
4
+ export declare function findTopLevelConflicts(library: LibraryInterface, language: Language): string[];
5
+ export declare function isTopLevelConflicted(library: LibraryInterface, language: Language, node: idl.IDLEntry): boolean;
6
+ //# sourceMappingURL=ConflictingDeclarations.d.ts.map
@@ -0,0 +1,43 @@
1
+ import * as idl from "../idl";
2
+ import { Language } from "../Language";
3
+ const findTopLevelConflicts_cache = new Map();
4
+ export function findTopLevelConflicts(library, language) {
5
+ if (!findTopLevelConflicts_cache.has(library))
6
+ findTopLevelConflicts_cache.set(library, new Map);
7
+ const libraryCache = findTopLevelConflicts_cache.get(library);
8
+ if (!libraryCache.has(language))
9
+ libraryCache.set(language, findTopLevelConflictsUncached(library, language));
10
+ return libraryCache.get(language);
11
+ }
12
+ function findTopLevelConflictsUncached(library, language) {
13
+ const foundNames = new Set();
14
+ const conflictingNames = new Set();
15
+ const ignoreTypedefs = language === Language.CPP;
16
+ for (const file of library.files) {
17
+ for (const entry of file.entries) {
18
+ if (idl.isSyntheticEntry(entry))
19
+ continue;
20
+ if (ignoreTypedefs && idl.isTypedef(entry))
21
+ // for redefinitions like `typedef _Resource Resource;` - in CPP than anyway will be expanded to Resource declaration
22
+ continue;
23
+ if (idl.isCallback(entry) || idl.isInterface(entry) || idl.isTypedef(entry) || idl.isEnum(entry)) {
24
+ if (foundNames.has(entry.name)) {
25
+ conflictingNames.add(entry.name);
26
+ }
27
+ else {
28
+ foundNames.add(entry.name);
29
+ }
30
+ }
31
+ }
32
+ }
33
+ return Array.from(conflictingNames);
34
+ }
35
+ export function isTopLevelConflicted(library, language, node) {
36
+ const topLevelConflicts = findTopLevelConflicts(library, language);
37
+ while (node.parent && idl.isNamespace(node.parent)) {
38
+ node = node.parent;
39
+ }
40
+ return node.parent !== undefined
41
+ && idl.isFile(node.parent) && idl.isEntry(node) && topLevelConflicts.includes(node.name);
42
+ }
43
+ //# sourceMappingURL=ConflictingDeclarations.js.map
@@ -23,4 +23,6 @@ export declare class LayoutManager {
23
23
  handwrittenPackage(): string;
24
24
  static Empty(): LayoutManager;
25
25
  }
26
+ export declare function wrapCurrentFileDescription<T>(description: LayoutTargetDescription, op: () => T): T;
27
+ export declare function isDeclaredInCurrentFile(layout: LayoutManagerStrategy, over: LayoutTargetDescription): boolean;
26
28
  //# sourceMappingURL=LayoutManager.d.ts.map
@@ -35,4 +35,19 @@ export class LayoutManager {
35
35
  return new LayoutManager({ resolve: () => '', handwrittenPackage: () => '' });
36
36
  }
37
37
  }
38
+ let currentGenerationDescription;
39
+ export function wrapCurrentFileDescription(description, op) {
40
+ const prev = currentGenerationDescription;
41
+ currentGenerationDescription = description;
42
+ const result = op();
43
+ currentGenerationDescription = prev;
44
+ return result;
45
+ }
46
+ export function isDeclaredInCurrentFile(layout, over) {
47
+ if (!currentGenerationDescription)
48
+ throw new Error("Current file context is not set up. Please use `wrapCurrentFileDescription` to set up current context. That must be temporary solution until structural printers are ready");
49
+ if (layout.resolve(currentGenerationDescription) === layout.resolve(over))
50
+ return true;
51
+ return false;
52
+ }
38
53
  //# sourceMappingURL=LayoutManager.js.map
@@ -11,6 +11,8 @@ export declare class MaterializedField {
11
11
  isNullableOriginalTypeField?: boolean | undefined;
12
12
  extraMethodName: string | undefined;
13
13
  constructor(field: Field, argConvertor: ArgConvertor, outArgConvertor?: ArgConvertor | undefined, isNullableOriginalTypeField?: boolean | undefined, extraMethodName?: string | undefined);
14
+ hasGetter(): boolean;
15
+ hasSetter(): boolean;
14
16
  }
15
17
  export declare class MaterializedMethod extends PeerMethod {
16
18
  decl: idl.IDLConstructor | idl.IDLMethod | undefined;
@@ -13,7 +13,7 @@
13
13
  * limitations under the License.
14
14
  */
15
15
  import * as idl from '../idl';
16
- import { copyMethod, Method, MethodModifier, NamedMethodSignature } from '../LanguageWriters/LanguageWriter';
16
+ import { copyMethod, FieldModifier, Method, MethodModifier, NamedMethodSignature } from '../LanguageWriters/LanguageWriter';
17
17
  import { capitalize } from '../util';
18
18
  import { qualifiedName } from './idl/common';
19
19
  import { PeerMethod, PeerMethodSignature } from './PeerMethod';
@@ -25,6 +25,19 @@ export class MaterializedField {
25
25
  this.isNullableOriginalTypeField = isNullableOriginalTypeField;
26
26
  this.extraMethodName = extraMethodName;
27
27
  }
28
+ hasGetter() {
29
+ const isGetter = this.field.modifiers.includes(FieldModifier.GET);
30
+ const isSetter = this.field.modifiers.includes(FieldModifier.SET);
31
+ const isAccessor = isGetter || isSetter;
32
+ return !isAccessor || isGetter;
33
+ }
34
+ hasSetter() {
35
+ const isReadonly = this.field.modifiers.includes(FieldModifier.READONLY);
36
+ const isGetter = this.field.modifiers.includes(FieldModifier.GET);
37
+ const isSetter = this.field.modifiers.includes(FieldModifier.SET);
38
+ const isAccessor = isGetter || isSetter;
39
+ return (!isAccessor && !isReadonly) || isSetter;
40
+ }
28
41
  }
29
42
  export class MaterializedMethod extends PeerMethod {
30
43
  constructor(decl, sig, originalParentName, implementationParentName, returnType, isCallSignature, uniqueOverloadName, method) {
@@ -10273,8 +10273,6 @@ export declare class PeerLibrary implements LibraryInterface {
10273
10273
  readonly customComponentMethods: string[];
10274
10274
  createLanguageWriter(language?: Language): LanguageWriter;
10275
10275
  createTypeNameConvertor(language: Language): IdlNameConvertor;
10276
- protected readonly targetNameConvertorInstance: IdlNameConvertor;
10277
- private readonly interopNameConvertorInstance;
10278
10276
  get libraryPrefix(): string;
10279
10277
  createContinuationParameters(continuationType: idl.IDLType): idl.IDLParameter[];
10280
10278
  createContinuationCallbackReference(continuationType: idl.IDLType): idl.IDLReferenceType;
@@ -10294,7 +10292,6 @@ export declare class PeerLibrary implements LibraryInterface {
10294
10292
  typeConvertor(param: string, type: idl.IDLType, isOptionalParam?: boolean): ArgConvertor;
10295
10293
  declarationConvertor(param: string, type: idl.IDLReferenceType, declaration: idl.IDLEntry | undefined): ArgConvertor;
10296
10294
  private customConvertor;
10297
- getInteropName(node: idl.IDLNode): string;
10298
10295
  toDeclaration(type: idl.IDLType | idl.IDLTypedef | idl.IDLCallback | idl.IDLEnum | idl.IDLInterface): idl.IDLEntry | idl.IDLType;
10299
10296
  setFileLayout(strategy: LayoutManagerStrategy): void;
10300
10297
  withFileLayout(strategy: LayoutManagerStrategy, op: () => void): void;
@@ -18,18 +18,16 @@ import { resolveNamedNode } from '../resolveNamedNode';
18
18
  import { Language } from '../Language';
19
19
  import { createLanguageWriter } from '../LanguageWriters';
20
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, TransformOnSerializeConvertor, } from "../LanguageWriters/ArgConvertors";
21
- import { CppNameConvertor } from '../LanguageWriters/convertors/CppConvertors';
22
21
  import { CJTypeNameConvertor } from '../LanguageWriters/convertors/CJConvertors';
23
22
  import { CppConvertor } from '../LanguageWriters/convertors/CppConvertors';
24
23
  import { ETSTypeNameConvertor } from '../LanguageWriters/convertors/ETSConvertors';
25
- import { JavaTypeNameConvertor } from '../LanguageWriters/convertors/JavaConvertors';
26
24
  import { TSTypeNameConvertor } from '../LanguageWriters/convertors/TSConvertors';
27
25
  import { isBuilderClass } from './BuilderClass';
28
26
  import { generateSyntheticFunctionName, isImportAttr } from './idl/common';
29
27
  import { LayoutManager } from './LayoutManager';
30
28
  import { lib, query } from '../library';
31
29
  import { isMaterialized } from './isMaterialized';
32
- import { isInIdlizeInternal } from '../idlize';
30
+ import { isInIdlizeInternal } from '../idl';
33
31
  import { isInCurrentModule } from './modules';
34
32
  import { generatorConfiguration } from '../config';
35
33
  import { KotlinTypeNameConvertor } from '../LanguageWriters/convertors/KotlinConvertors';
@@ -107,8 +105,6 @@ export class PeerLibrary {
107
105
  this.materializedClasses = new Map();
108
106
  this.name = "";
109
107
  this.customComponentMethods = [];
110
- this.targetNameConvertorInstance = this.createTypeNameConvertor(this.language);
111
- this.interopNameConvertorInstance = new CppNameConvertor(this);
112
108
  this._useFallback = true;
113
109
  }
114
110
  createLanguageWriter(language) {
@@ -118,7 +114,6 @@ export class PeerLibrary {
118
114
  switch (language) {
119
115
  case Language.TS: return new TSTypeNameConvertor(this);
120
116
  case Language.ARKTS: return new ETSTypeNameConvertor(this);
121
- case Language.JAVA: return new JavaTypeNameConvertor(this);
122
117
  case Language.CJ: return new CJTypeNameConvertor(this);
123
118
  case Language.CPP: return new CppConvertor(this);
124
119
  case Language.KOTLIN: return new KotlinTypeNameConvertor(this);
@@ -158,7 +153,7 @@ export class PeerLibrary {
158
153
  return this.files.find(it => it.fileName === filename);
159
154
  }
160
155
  mapType(type) {
161
- return this.targetNameConvertorInstance.convert(type);
156
+ return this.createTypeNameConvertor(this.language).convert(type);
162
157
  }
163
158
  enableCache() {
164
159
  this.referenceCache = new Map();
@@ -288,17 +283,17 @@ export class PeerLibrary {
288
283
  }
289
284
  if (idl.isPrimitiveType(type)) {
290
285
  switch (type) {
291
- case idl.IDLI8Type: return new NumericConvertor(param, type);
292
- case idl.IDLU8Type: return new NumericConvertor(param, type);
293
- case idl.IDLI16Type: return new NumericConvertor(param, type);
294
- case idl.IDLU16Type: return new NumericConvertor(param, type);
295
- case idl.IDLI32Type: return new NumericConvertor(param, type);
296
- case idl.IDLU32Type: return new NumericConvertor(param, type);
297
- case idl.IDLI64Type: return new NumericConvertor(param, type);
298
- case idl.IDLU64Type: return new NumericConvertor(param, type);
299
- case idl.IDLF16Type: return new NumericConvertor(param, type);
300
- case idl.IDLF32Type: return new NumericConvertor(param, type);
301
- case idl.IDLF64Type: return new NumericConvertor(param, type);
286
+ case idl.IDLI8Type: return new NumericConvertor(this, param, type);
287
+ case idl.IDLU8Type: return new NumericConvertor(this, param, type);
288
+ case idl.IDLI16Type: return new NumericConvertor(this, param, type);
289
+ case idl.IDLU16Type: return new NumericConvertor(this, param, type);
290
+ case idl.IDLI32Type: return new NumericConvertor(this, param, type);
291
+ case idl.IDLU32Type: return new NumericConvertor(this, param, type);
292
+ case idl.IDLI64Type: return new NumericConvertor(this, param, type);
293
+ case idl.IDLU64Type: return new NumericConvertor(this, param, type);
294
+ case idl.IDLF16Type: return new NumericConvertor(this, param, type);
295
+ case idl.IDLF32Type: return new NumericConvertor(this, param, type);
296
+ case idl.IDLF64Type: return new NumericConvertor(this, param, type);
302
297
  case idl.IDLBigintType: return new BigIntToU64Convertor(param);
303
298
  case idl.IDLSerializerBuffer: new PointerConvertor(param);
304
299
  case idl.IDLPointerType: return new PointerConvertor(param);
@@ -321,10 +316,10 @@ export class PeerLibrary {
321
316
  // TODO: this types are not references! NativeModulePrinter must be fixed
322
317
  switch (type.name.replaceAll('%TEXT%:', '')) { // this is really bad stub, to fix legacy references
323
318
  case 'KBoolean': return new BooleanConvertor(param);
324
- case 'KInt': return new NumericConvertor(param, idl.IDLI32Type);
325
- case 'KFloat': return new NumericConvertor(param, idl.IDLF32Type);
326
- case 'KLong': return new NumericConvertor(param, idl.IDLI64Type);
327
- case 'KDouble': return new NumericConvertor(param, idl.IDLF64Type);
319
+ case 'KInt': return new NumericConvertor(this, param, idl.IDLI32Type);
320
+ case 'KFloat': return new NumericConvertor(this, param, idl.IDLF32Type);
321
+ case 'KLong': return new NumericConvertor(this, param, idl.IDLI64Type);
322
+ case 'KDouble': return new NumericConvertor(this, param, idl.IDLF64Type);
328
323
  case 'KStringPtr': return new StringConvertor(param);
329
324
  case 'number': return new NumberConvertor(param);
330
325
  case 'KPointer': return new PointerConvertor(param);
@@ -334,7 +329,7 @@ export class PeerLibrary {
334
329
  }
335
330
  const decl = this.resolveTypeReference(type);
336
331
  if (decl && isImportAttr(decl) || !decl && isImportAttr(type))
337
- return new ImportTypeConvertor(param, this.targetNameConvertorInstance.convert(type));
332
+ return new ImportTypeConvertor(param, this.createTypeNameConvertor(this.language).convert(type));
338
333
  return this.declarationConvertor(param, type, decl);
339
334
  }
340
335
  if (idl.isUnionType(type)) {
@@ -348,7 +343,7 @@ export class PeerLibrary {
348
343
  }
349
344
  if (idl.isTypeParameterType(type)) {
350
345
  // TODO: unlikely correct.
351
- return new CustomTypeConvertor(param, this.targetNameConvertorInstance.convert(type), true, `<${type.name}>`);
346
+ return new CustomTypeConvertor(param, this.createTypeNameConvertor(this.language).convert(type), true, `<${type.name}>`);
352
347
  }
353
348
  throw new Error(`Cannot convert: ${type.kind}`);
354
349
  }
@@ -360,11 +355,11 @@ export class PeerLibrary {
360
355
  if (customConv)
361
356
  return customConv;
362
357
  if (!declaration) {
363
- return new CustomTypeConvertor(param, this.targetNameConvertorInstance.convert(type), false, this.targetNameConvertorInstance.convert(type)); // assume some predefined type
358
+ return new CustomTypeConvertor(param, this.createTypeNameConvertor(this.language).convert(type), false, this.createTypeNameConvertor(this.language).convert(type)); // assume some predefined type
364
359
  }
365
360
  const declarationName = declaration.name;
366
361
  if (isImportAttr(declaration)) {
367
- return new ImportTypeConvertor(param, this.targetNameConvertorInstance.convert(type));
362
+ return new ImportTypeConvertor(param, this.createTypeNameConvertor(this.language).convert(type));
368
363
  }
369
364
  if (idl.isImport(declaration)) {
370
365
  const target = this.resolveImport(declaration);
@@ -389,10 +384,8 @@ export class PeerLibrary {
389
384
  return new CallbackConvertor(this, param, declaration, this.interopNativeModule);
390
385
  }
391
386
  if (idl.isTypedef(declaration)) {
392
- if (isCyclicTypeDef(declaration)) {
393
- warn(`Cyclic typedef: ${idl.DebugUtils.debugPrintType(type)}`);
394
- return new CustomTypeConvertor(param, declaration.name, false, declaration.name);
395
- }
387
+ if (forceTypedefAsResource(type, declaration))
388
+ return new ObjectConvertor(param, type);
396
389
  return new TypeAliasConvertor(this, param, declaration);
397
390
  }
398
391
  if (idl.isInterface(declaration)) {
@@ -430,9 +423,6 @@ export class PeerLibrary {
430
423
  }
431
424
  return undefined;
432
425
  }
433
- getInteropName(node) {
434
- return this.interopNameConvertorInstance.convert(node);
435
- }
436
426
  toDeclaration(type) {
437
427
  switch (type) {
438
428
  case idl.IDLAnyType: return ArkCustomObject;
@@ -464,9 +454,8 @@ export class PeerLibrary {
464
454
  if (!decl) {
465
455
  warn(`undeclared type ${idl.DebugUtils.debugPrintType(type)}`);
466
456
  }
467
- if (decl && idl.isTypedef(decl) && isCyclicTypeDef(decl)) {
468
- warn(`Cyclic typedef: ${idl.DebugUtils.debugPrintType(type)}`);
469
- return ArkCustomObject;
457
+ if (decl && idl.isTypedef(decl) && forceTypedefAsResource(type, decl)) {
458
+ return idl.IDLObjectType;
470
459
  }
471
460
  if (decl && idl.hasExtAttribute(decl, idl.IDLExtendedAttributes.TransformOnSerialize)) {
472
461
  const type = toIdlType("", idl.getExtAttribute(decl, idl.IDLExtendedAttributes.TransformOnSerialize));
@@ -499,7 +488,34 @@ export const ArkCustomObject = idl.IDLCustomObjectType;
499
488
  export function cleanPrefix(name, prefix) {
500
489
  return name.replace(prefix, "");
501
490
  }
491
+ function forceTypedefAsResource(type, decl) {
492
+ if (generatorConfiguration().forceResource.includes(idl.getFQName(decl)))
493
+ return true;
494
+ if (isCyclicTypeDef(decl)) {
495
+ warn(`Cyclic typedef: ${idl.DebugUtils.debugPrintType(type)}`);
496
+ return true;
497
+ }
498
+ return false;
499
+ }
502
500
  function isCyclicTypeDef(decl) {
503
- return idl.isReferenceType(decl.type) && idl.isNamedNode(decl.type) && decl.type.name == decl.name;
501
+ return checkCyclicType(idl.getFQName(decl), decl.type);
502
+ }
503
+ function checkCyclicType(fqn, type) {
504
+ if (idl.isReferenceType(type) && idl.isNamedNode(type) && idl.getFQName(type) == fqn)
505
+ return true;
506
+ if (idl.isOptionalType(type) && checkCyclicType(fqn, type.type))
507
+ return true;
508
+ if (idl.isUnionType(type) && checkCyclicTypes(fqn, type.types))
509
+ return true;
510
+ if (idl.isContainerType(type) && checkCyclicTypes(fqn, type.elementType))
511
+ return true;
512
+ return false;
513
+ }
514
+ function checkCyclicTypes(fqn, types) {
515
+ for (const t of types) {
516
+ if (checkCyclicType(fqn, t))
517
+ return true;
518
+ }
519
+ return false;
504
520
  }
505
521
  //# sourceMappingURL=PeerLibrary.js.map
@@ -26,6 +26,11 @@ export declare class CJDeclarationNameConvertor extends DeclarationNameConvertor
26
26
  convertEnum(decl: idl.IDLEnum): string;
27
27
  static readonly I: CJDeclarationNameConvertor;
28
28
  }
29
+ export declare class KotlinDeclarationNameConvertor extends DeclarationNameConvertor {
30
+ convertInterface(decl: idl.IDLInterface): string;
31
+ convertEnum(decl: idl.IDLEnum): string;
32
+ static readonly I: KotlinDeclarationNameConvertor;
33
+ }
29
34
  export declare class ETSFeatureNameConvertor extends DeclarationNameConvertor {
30
35
  convertEnum(decl: idl.IDLEnum): string;
31
36
  static readonly I: ETSFeatureNameConvertor;
@@ -35,6 +40,7 @@ export declare class CJFeatureNameConvertor extends DeclarationNameConvertor {
35
40
  static readonly I: CJFeatureNameConvertor;
36
41
  }
37
42
  export declare class KotlinFeatureNameConvertor extends DeclarationNameConvertor {
43
+ convertInterface(decl: idl.IDLInterface): string;
38
44
  convertEnum(decl: idl.IDLEnum): string;
39
45
  static readonly I: KotlinFeatureNameConvertor;
40
46
  }
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import * as idl from "../../idl";
16
16
  import { Language } from "../../Language";
17
+ import { removePoints } from "../../util";
17
18
  export class DeclarationNameConvertor {
18
19
  convertImport(decl) {
19
20
  console.warn("Imports are not implemented yet");
@@ -70,6 +71,15 @@ export class CJDeclarationNameConvertor extends DeclarationNameConvertor {
70
71
  }
71
72
  }
72
73
  CJDeclarationNameConvertor.I = new CJDeclarationNameConvertor();
74
+ export class KotlinDeclarationNameConvertor extends DeclarationNameConvertor {
75
+ convertInterface(decl) {
76
+ return removePoints(idl.getQualifiedName(decl, "namespace.name"));
77
+ }
78
+ convertEnum(decl) {
79
+ return removePoints(idl.getQualifiedName(decl, "namespace.name"));
80
+ }
81
+ }
82
+ KotlinDeclarationNameConvertor.I = new KotlinDeclarationNameConvertor();
73
83
  export class ETSFeatureNameConvertor extends DeclarationNameConvertor {
74
84
  convertEnum(decl) {
75
85
  const namespace = idl.getNamespacesPathFor(decl).map(it => it.name);
@@ -86,25 +96,27 @@ export class CJFeatureNameConvertor extends DeclarationNameConvertor {
86
96
  }
87
97
  CJFeatureNameConvertor.I = new CJFeatureNameConvertor();
88
98
  export class KotlinFeatureNameConvertor extends DeclarationNameConvertor {
99
+ convertInterface(decl) {
100
+ return removePoints(idl.getQualifiedName(decl, "namespace.name"));
101
+ }
89
102
  convertEnum(decl) {
90
- return decl.name;
103
+ return removePoints(idl.getQualifiedName(decl, "namespace.name"));
91
104
  }
92
105
  }
93
106
  KotlinFeatureNameConvertor.I = new KotlinFeatureNameConvertor();
94
107
  export function createDeclarationNameConvertor(language) {
95
108
  switch (language) {
96
109
  case Language.ARKTS: return ETSDeclarationNameConvertor.I;
97
- case Language.JAVA:
98
110
  case Language.CPP:
99
111
  case Language.TS: return DeclarationNameConvertor.I;
100
112
  case Language.CJ: CJDeclarationNameConvertor.I;
113
+ case Language.KOTLIN: KotlinDeclarationNameConvertor.I;
101
114
  default: throw new Error(`Language ${language.toString()} is not supported`);
102
115
  }
103
116
  }
104
117
  export function createFeatureNameConvertor(language) {
105
118
  switch (language) {
106
119
  case Language.ARKTS: return ETSFeatureNameConvertor.I;
107
- case Language.JAVA:
108
120
  case Language.CPP:
109
121
  case Language.TS: return TSFeatureNameConvertor.I;
110
122
  case Language.CJ: return CJFeatureNameConvertor.I;
@@ -1,31 +1,7 @@
1
- import * as ts from "typescript";
2
1
  import * as idl from "./idl";
3
2
  import { Language } from './Language';
4
3
  import { LibraryInterface } from './LibraryInterface';
5
- export interface NameWithType {
6
- name?: ts.DeclarationName;
7
- type?: ts.TypeNode;
8
- }
9
- /** True if this is visible outside this file, false otherwise */
10
- export declare function isNodePublic(node: ts.Node): boolean;
11
- export declare function nameOrNull(name: ts.EntityName | ts.DeclarationName | undefined): string | undefined;
12
- export declare function isNamedDeclaration(node: ts.Node): node is ts.NamedDeclaration;
13
- export declare function asString(node: ts.Node | undefined): string;
14
4
  export declare function arrayAt<T>(array: T[] | undefined, index: number): T | undefined;
15
- export declare function getComment(sourceFile: ts.SourceFile, node: ts.Node): string;
16
- export declare function getSymbolByNode(typechecker: ts.TypeChecker, node: ts.Node): ts.Symbol | undefined;
17
- export declare function getDeclarationsByNode(typechecker: ts.TypeChecker, node: ts.Node): ts.Declaration[];
18
- export declare function findRealDeclarations(typechecker: ts.TypeChecker, node: ts.Node): ts.Declaration[];
19
- export declare function getExportedDeclarationNameByDecl(declaration: ts.NamedDeclaration): string | undefined;
20
- export declare function getExportedDeclarationNameByNode(typechecker: ts.TypeChecker, node: ts.Node): string | undefined;
21
- export declare function isReadonly(modifierLikes: ts.NodeArray<ts.ModifierLike> | undefined): boolean;
22
- export declare function isExport(modifierLikes: ts.NodeArray<ts.ModifierLike> | undefined): boolean;
23
- export declare function isAbstract(modifierLikes: ts.NodeArray<ts.ModifierLike> | undefined): boolean;
24
- export declare function isStatic(modifierLikes: ts.NodeArray<ts.ModifierLike> | undefined): boolean;
25
- export declare function isAsync(modifierLikes: ts.NodeArray<ts.ModifierLike> | readonly ts.Modifier[] | undefined): boolean;
26
- export declare function isPrivate(modifierLikes: ts.NodeArray<ts.ModifierLike> | undefined): boolean;
27
- export declare function isProtected(modifierLikes: ts.NodeArray<ts.ModifierLike> | undefined): boolean;
28
- export declare function getLineNumberString(sourceFile: ts.SourceFile, position: number): string;
29
5
  export declare function isDefined<T>(value: T | null | undefined): value is T;
30
6
  export declare function capitalize(string: string): string;
31
7
  export declare function capitalizeConstantName(string: string): string;
@@ -35,22 +11,9 @@ export type stringOrNone = string | undefined;
35
11
  export declare function toSet(option: string | undefined): Set<string>;
36
12
  export declare function getOrPut<K, V>(map: Map<K, V>, key: K, create: (key: K) => V): V;
37
13
  export declare function indentedBy(input: string, indentedBy: number): string;
38
- export declare function typeOrUndefined(type: ts.TypeNode): ts.TypeNode;
39
14
  export declare function forEachExpanding<T>(array: T[], action: (element: T) => void): void;
40
- export declare function isTypeParamSuitableType(type: ts.TypeNode): boolean;
41
- export declare function heritageTypes(typechecker: ts.TypeChecker, clause: ts.HeritageClause): ts.TypeReferenceNode[];
42
- export declare function heritageDeclarations(typechecker: ts.TypeChecker, clause: ts.HeritageClause): ts.NamedDeclaration[];
43
- export declare function typeName(type: ts.TypeReferenceNode | ts.TypeQueryNode | ts.ImportTypeNode): string | undefined;
44
- export declare function typeEntityName(type: ts.TypeReferenceNode | ts.TypeQueryNode | ts.ImportTypeNode): ts.EntityName | undefined;
45
15
  export declare function zip<A, B>(left: readonly A[], right: readonly B[]): [A, B][];
46
16
  export declare function zipStrip<A, B>(left: readonly A[], right: readonly B[]): [A, B][];
47
- export declare function identNameWithNamespace(node: ts.Node, language: Language): string;
48
- export declare function identName(node: ts.Node | undefined): string | undefined;
49
- export declare function identString(node: ts.Identifier | ts.PrivateIdentifier | ts.StringLiteral | ts.QualifiedName | ts.NumericLiteral | ts.ComputedPropertyName | ts.BindingName | undefined): string | undefined;
50
- export declare const defaultCompilerOptions: ts.CompilerOptions;
51
- export declare function serializerBaseMethods(): string[];
52
- export declare function getNameWithoutQualifiersRight(node: ts.EntityName | undefined): string | undefined;
53
- export declare function getNameWithoutQualifiersLeft(node: ts.EntityName | undefined): string | undefined;
54
17
  export declare function snakeCaseToCamelCase(input: string, tailToLowerCase?: boolean): string;
55
18
  export declare function toCamelCase(input: string): string;
56
19
  export declare function isUpperCase(s: string): boolean;
@@ -61,9 +24,7 @@ export declare function renameDtsToComponent(fileName: string, language: Languag
61
24
  export declare function renameDtsToInterfaces(fileName: string, language: Language, withFileExtension?: boolean): string;
62
25
  export declare function renameClassToBuilderClass(className: string, language: Language, withFileExtension?: boolean): string;
63
26
  export declare function renameClassToMaterialized(className: string, language: Language, withFileExtension?: boolean): string;
64
- export declare function importTypeName(type: ts.ImportTypeNode, asType?: boolean): string;
65
27
  export declare function throwException(message: string): never;
66
- export declare function className(node: ts.ClassDeclaration | ts.InterfaceDeclaration): string;
67
28
  /**
68
29
  * Add a prefix to an enum value which camel case name coincidence
69
30
  * with the the same upper case name for an another enum value
@@ -100,5 +61,10 @@ export declare function getTransformer(library: LibraryInterface, from: idl.IDLN
100
61
  receiver?: string;
101
62
  method: string;
102
63
  };
64
+ export declare function removePoints(s: string): string;
65
+ export declare function scanDirectory(dir: string, fileFilter: (file: string) => boolean, recursive?: boolean): string[];
66
+ export declare function scanInputDirs(inputDirs: string[]): string[];
67
+ export declare function scanInputDirs(inputDirs: string[], fileExtension: string): string[];
68
+ export declare function scanInputDirs(inputDirs: string[], fileFilter: (file: string) => boolean, recursive: boolean): string[];
103
69
  export {};
104
70
  //# sourceMappingURL=util.d.ts.map