@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.
- 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 +3 -2
- package/build/lib/src/LanguageWriters/ArgConvertors.js +20 -16
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +5 -1
- package/build/lib/src/LanguageWriters/LanguageWriter.js +2 -0
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.d.ts +0 -1
- package/build/lib/src/LanguageWriters/convertors/CJConvertors.js +1 -3
- 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 +2 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +13 -1
- 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 -3
- 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 +35 -12
- package/build/lib/src/LibraryInterface.d.ts +0 -1
- package/build/lib/src/from-idl/DtsPrinter.js +1 -1
- package/build/lib/src/from-idl/deserialize.js +1 -1
- package/build/lib/src/idl.d.ts +5 -0
- package/build/lib/src/idl.js +19 -1
- package/build/lib/src/index.d.ts +1 -4
- package/build/lib/src/index.js +1 -4
- package/build/lib/src/inheritance.d.ts +0 -2
- package/build/lib/src/inheritance.js +0 -17
- 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 +53 -37
- 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/util.d.ts +5 -39
- package/build/lib/src/util.js +43 -369
- package/package.json +45 -49
package/build/lib/src/index.d.ts
CHANGED
|
@@ -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";
|
package/build/lib/src/index.js
CHANGED
|
@@ -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 '../
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 (
|
|
393
|
-
|
|
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) &&
|
|
468
|
-
|
|
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.
|
|
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;
|
package/build/lib/src/util.d.ts
CHANGED
|
@@ -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
|